{"version":3,"file":"main.js-a499c3fb.js","sources":["../../../../lwl-pilot-project/node_modules/bootstrap-sass/assets/javascripts/bootstrap/transition.js","../../../../lwl-pilot-project/node_modules/bootstrap-sass/assets/javascripts/bootstrap/alert.js","../../../../lwl-pilot-project/node_modules/bootstrap-sass/assets/javascripts/bootstrap/button.js","../../../../lwl-pilot-project/node_modules/bootstrap-sass/assets/javascripts/bootstrap/collapse.js","../../../../lwl-pilot-project/node_modules/bootstrap-sass/assets/javascripts/bootstrap/dropdown.js","../../../../lwl-pilot-project/node_modules/bootstrap-sass/assets/javascripts/bootstrap/modal.js","../../../../lwl-pilot-project/node_modules/bootstrap-sass/assets/javascripts/bootstrap/affix.js","../../../../lwl-pilot-project/node_modules/bootstrap-sass/assets/javascripts/bootstrap/scrollspy.js","../../../../lwl-pilot-project/node_modules/bootstrap-sass/assets/javascripts/bootstrap/tooltip.js","../../../../lwl-pilot-project/node_modules/bootstrap-sass/assets/javascripts/bootstrap/popover.js","../../../../lwl-pilot-project/src/assets/js/tabs.js","../../../../lwl-pilot-project/src/assets/js/ownselect.js","../../../../lwl-pilot-project/src/assets/js/vendor/isMsie.js","../../../../lwl-pilot-project/src/assets/js/modules/focusWithoutScrolling.js","../../../../lwl-pilot-project/src/assets/js/scroll-page-event.js","../../../../lwl-pilot-project/src/assets/js/swiper.js","../../../../lwl-pilot-project/src/assets/js/slick.js","../../../../lwl-pilot-project/src/assets/js/fancybox.js","../../../../lwl-pilot-project/src/assets/js/scrollbar.js","../../../../lwl-pilot-project/src/components/10-atoms/nav-button/nav-button.js","../../../../lwl-pilot-project/src/components/20-molecules/nav-panel/nav-panel.js","../../../../lwl-pilot-project/src/components/20-molecules/lazy-video/lazy-video.js","../../../../lwl-pilot-project/src/components/20-molecules/lazy-vimeo/lazy-vimeo.js","../../../../lwl-pilot-project/src/components/40-modules/background-video/background-video.js","../../../../lwl-pilot-project/src/components/20-molecules/general-video/general-video.js","../../../../lwl-pilot-project/src/components/40-modules/tabs/tabs.js","../../../../lwl-pilot-project/src/assets/js/modules/slider.js","../../../../lwl-pilot-project/src/components/30-organisms/list-slider/list-slider.js","../../../../lwl-pilot-project/src/components/30-organisms/carousel/carousel.js","../../../../lwl-pilot-project/node_modules/jquery.flipster/dist/jquery.flipster.min.js","../../../../lwl-pilot-project/src/assets/js/modules/flipster.js","../../../../lwl-pilot-project/src/assets/js/modules/anis-map.js","../../../../lwl-pilot-project/src/components/30-organisms/coverflow-carousel/coverflow-carousel.js","../../../../lwl-pilot-project/node_modules/js-cookie/src/js.cookie.js","../../../../lwl-pilot-project/src/components/20-molecules/nav-panel/contrast-mode.js","../../../../lwl-pilot-project/src/components/20-molecules/nav-panel/font-settings.js","../../../../lwl-pilot-project/src/components/20-molecules/scrollindicator/scrollindicator.js","../../../../lwl-pilot-project/src/components/40-modules/banner/banner.js","../../../../lwl-pilot-project/src/assets/js/modules/js-gallery-navigation.js","../../../../lwl-pilot-project/src/assets/js/modules/grouped-gallery.js","../../../../lwl-pilot-project/src/assets/js/modules/zoomable.js","../../../../lwl-pilot-project/node_modules/ssr-window/ssr-window.esm.js","../../../../lwl-pilot-project/node_modules/dom7/dom7.esm.js","../../../../lwl-pilot-project/node_modules/swiper/shared/dom.js","../../../../lwl-pilot-project/node_modules/swiper/shared/utils.js","../../../../lwl-pilot-project/node_modules/swiper/shared/get-support.js","../../../../lwl-pilot-project/node_modules/swiper/shared/get-device.js","../../../../lwl-pilot-project/node_modules/swiper/shared/get-browser.js","../../../../lwl-pilot-project/node_modules/swiper/core/modules/resize/resize.js","../../../../lwl-pilot-project/node_modules/swiper/core/modules/observer/observer.js","../../../../lwl-pilot-project/node_modules/swiper/core/events-emitter.js","../../../../lwl-pilot-project/node_modules/swiper/core/update/updateSize.js","../../../../lwl-pilot-project/node_modules/swiper/core/update/updateSlides.js","../../../../lwl-pilot-project/node_modules/swiper/core/update/updateAutoHeight.js","../../../../lwl-pilot-project/node_modules/swiper/core/update/updateSlidesOffset.js","../../../../lwl-pilot-project/node_modules/swiper/core/update/updateSlidesProgress.js","../../../../lwl-pilot-project/node_modules/swiper/core/update/updateProgress.js","../../../../lwl-pilot-project/node_modules/swiper/core/update/updateSlidesClasses.js","../../../../lwl-pilot-project/node_modules/swiper/core/update/updateActiveIndex.js","../../../../lwl-pilot-project/node_modules/swiper/core/update/updateClickedSlide.js","../../../../lwl-pilot-project/node_modules/swiper/core/update/index.js","../../../../lwl-pilot-project/node_modules/swiper/core/translate/getTranslate.js","../../../../lwl-pilot-project/node_modules/swiper/core/translate/setTranslate.js","../../../../lwl-pilot-project/node_modules/swiper/core/translate/minTranslate.js","../../../../lwl-pilot-project/node_modules/swiper/core/translate/maxTranslate.js","../../../../lwl-pilot-project/node_modules/swiper/core/translate/translateTo.js","../../../../lwl-pilot-project/node_modules/swiper/core/translate/index.js","../../../../lwl-pilot-project/node_modules/swiper/core/transition/setTransition.js","../../../../lwl-pilot-project/node_modules/swiper/core/transition/transitionEmit.js","../../../../lwl-pilot-project/node_modules/swiper/core/transition/transitionStart.js","../../../../lwl-pilot-project/node_modules/swiper/core/transition/transitionEnd.js","../../../../lwl-pilot-project/node_modules/swiper/core/transition/index.js","../../../../lwl-pilot-project/node_modules/swiper/core/slide/slideTo.js","../../../../lwl-pilot-project/node_modules/swiper/core/slide/slideToLoop.js","../../../../lwl-pilot-project/node_modules/swiper/core/slide/slideNext.js","../../../../lwl-pilot-project/node_modules/swiper/core/slide/slidePrev.js","../../../../lwl-pilot-project/node_modules/swiper/core/slide/slideReset.js","../../../../lwl-pilot-project/node_modules/swiper/core/slide/slideToClosest.js","../../../../lwl-pilot-project/node_modules/swiper/core/slide/slideToClickedSlide.js","../../../../lwl-pilot-project/node_modules/swiper/core/slide/index.js","../../../../lwl-pilot-project/node_modules/swiper/core/loop/loopCreate.js","../../../../lwl-pilot-project/node_modules/swiper/core/loop/loopFix.js","../../../../lwl-pilot-project/node_modules/swiper/core/loop/loopDestroy.js","../../../../lwl-pilot-project/node_modules/swiper/core/loop/index.js","../../../../lwl-pilot-project/node_modules/swiper/core/grab-cursor/setGrabCursor.js","../../../../lwl-pilot-project/node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","../../../../lwl-pilot-project/node_modules/swiper/core/grab-cursor/index.js","../../../../lwl-pilot-project/node_modules/swiper/core/events/onTouchStart.js","../../../../lwl-pilot-project/node_modules/swiper/core/events/onTouchMove.js","../../../../lwl-pilot-project/node_modules/swiper/core/events/onTouchEnd.js","../../../../lwl-pilot-project/node_modules/swiper/core/events/onResize.js","../../../../lwl-pilot-project/node_modules/swiper/core/events/onClick.js","../../../../lwl-pilot-project/node_modules/swiper/core/events/onScroll.js","../../../../lwl-pilot-project/node_modules/swiper/core/events/index.js","../../../../lwl-pilot-project/node_modules/swiper/core/breakpoints/setBreakpoint.js","../../../../lwl-pilot-project/node_modules/swiper/core/breakpoints/getBreakpoint.js","../../../../lwl-pilot-project/node_modules/swiper/core/breakpoints/index.js","../../../../lwl-pilot-project/node_modules/swiper/core/classes/addClasses.js","../../../../lwl-pilot-project/node_modules/swiper/core/classes/removeClasses.js","../../../../lwl-pilot-project/node_modules/swiper/core/classes/index.js","../../../../lwl-pilot-project/node_modules/swiper/core/images/loadImage.js","../../../../lwl-pilot-project/node_modules/swiper/core/images/preloadImages.js","../../../../lwl-pilot-project/node_modules/swiper/core/images/index.js","../../../../lwl-pilot-project/node_modules/swiper/core/check-overflow/index.js","../../../../lwl-pilot-project/node_modules/swiper/core/defaults.js","../../../../lwl-pilot-project/node_modules/swiper/core/moduleExtendParams.js","../../../../lwl-pilot-project/node_modules/swiper/core/core.js","../../../../lwl-pilot-project/node_modules/swiper/modules/keyboard/keyboard.js","../../../../lwl-pilot-project/node_modules/swiper/shared/create-element-if-not-defined.js","../../../../lwl-pilot-project/node_modules/swiper/modules/navigation/navigation.js","../../../../lwl-pilot-project/node_modules/swiper/shared/classes-to-selector.js","../../../../lwl-pilot-project/node_modules/swiper/modules/pagination/pagination.js","../../../../lwl-pilot-project/node_modules/swiper/modules/hash-navigation/hash-navigation.js","../../../../lwl-pilot-project/src/assets/js/modules/accessibility_slider.js","../../../../lwl-pilot-project/src/assets/js/modules/locations.js","../../../../lwl-pilot-project/src/assets/js/modules/dynamic-layers.js","../../../../lwl-pilot-project/src/assets/js/modules/dynamic-layers-variant-b.js","../../../../lwl-pilot-project/src/assets/js/modules/flipcards.js","../../../../lwl-pilot-project/node_modules/local-storage/stub.js","../../../../lwl-pilot-project/node_modules/local-storage/tracking.js","../../../../lwl-pilot-project/node_modules/local-storage/local-storage.js","../../../../lwl-pilot-project/src/components/40-modules/navigation/navigation.js","../../../../lwl-pilot-project/src/components/20-molecules/lang-switcher/lang-switcher.js","../../../../lwl-pilot-project/src/assets/js/loader.js","../../../../lwl-pilot-project/node_modules/plyr/dist/plyr.min.mjs","../../../../lwl-pilot-project/src/assets/js/components/u010-audio-player.js","../../../../lwl-pilot-project/node_modules/jquery/dist/jquery.js","../../../../lwl-pilot-project/src/assets/js/components/001-accordion.js","../../../../lwl-pilot-project/src/assets/js/components/utils/component-privacy.js","../../../../lwl-pilot-project/src/assets/js/components/042-shorts-slider.js","../../../../lwl-pilot-project/src/assets/js/components/025-quicklinks.js","../../../../lwl-pilot-project/src/assets/js/components/u015-hotspots.js","../../../../lwl-pilot-project/src/assets/js/components/044-story-slider.js","../../../../lwl-pilot-project/src/assets/js/components/046-comments.js","../../../../lwl-pilot-project/src/assets/js/components/u016-single-social-media-post.js","../../../../lwl-pilot-project/src/assets/js/components/cookiebanner.js","../../../../lwl-pilot-project/src/assets/js/modules/privacy.js","../../../../lwl-pilot-project/src/assets/js/components/chatbot.js","../../../../lwl-pilot-project/src/assets/js/main.js"],"sourcesContent":["/* ========================================================================\n * Bootstrap: transition.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/)\n  // ============================================================\n\n  function transitionEnd() {\n    var el = document.createElement('bootstrap')\n\n    var transEndEventNames = {\n      WebkitTransition : 'webkitTransitionEnd',\n      MozTransition    : 'transitionend',\n      OTransition      : 'oTransitionEnd otransitionend',\n      transition       : 'transitionend'\n    }\n\n    for (var name in transEndEventNames) {\n      if (el.style[name] !== undefined) {\n        return { end: transEndEventNames[name] }\n      }\n    }\n\n    return false // explicit for ie8 (  ._.)\n  }\n\n  // https://blog.alexmaccaw.com/css-transitions\n  $.fn.emulateTransitionEnd = function (duration) {\n    var called = false\n    var $el = this\n    $(this).one('bsTransitionEnd', function () { called = true })\n    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n    setTimeout(callback, duration)\n    return this\n  }\n\n  $(function () {\n    $.support.transition = transitionEnd()\n\n    if (!$.support.transition) return\n\n    $.event.special.bsTransitionEnd = {\n      bindType: $.support.transition.end,\n      delegateType: $.support.transition.end,\n      handle: function (e) {\n        if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n      }\n    }\n  })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: alert.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // ALERT CLASS DEFINITION\n  // ======================\n\n  var dismiss = '[data-dismiss=\"alert\"]'\n  var Alert   = function (el) {\n    $(el).on('click', dismiss, this.close)\n  }\n\n  Alert.VERSION = '3.4.1'\n\n  Alert.TRANSITION_DURATION = 150\n\n  Alert.prototype.close = function (e) {\n    var $this    = $(this)\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    selector    = selector === '#' ? [] : selector\n    var $parent = $(document).find(selector)\n\n    if (e) e.preventDefault()\n\n    if (!$parent.length) {\n      $parent = $this.closest('.alert')\n    }\n\n    $parent.trigger(e = $.Event('close.bs.alert'))\n\n    if (e.isDefaultPrevented()) return\n\n    $parent.removeClass('in')\n\n    function removeElement() {\n      // detach from parent, fire event then clean up data\n      $parent.detach().trigger('closed.bs.alert').remove()\n    }\n\n    $.support.transition && $parent.hasClass('fade') ?\n      $parent\n        .one('bsTransitionEnd', removeElement)\n        .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n      removeElement()\n  }\n\n\n  // ALERT PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.alert')\n\n      if (!data) $this.data('bs.alert', (data = new Alert(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  var old = $.fn.alert\n\n  $.fn.alert             = Plugin\n  $.fn.alert.Constructor = Alert\n\n\n  // ALERT NO CONFLICT\n  // =================\n\n  $.fn.alert.noConflict = function () {\n    $.fn.alert = old\n    return this\n  }\n\n\n  // ALERT DATA-API\n  // ==============\n\n  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: button.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // BUTTON PUBLIC CLASS DEFINITION\n  // ==============================\n\n  var Button = function (element, options) {\n    this.$element  = $(element)\n    this.options   = $.extend({}, Button.DEFAULTS, options)\n    this.isLoading = false\n  }\n\n  Button.VERSION  = '3.4.1'\n\n  Button.DEFAULTS = {\n    loadingText: 'loading...'\n  }\n\n  Button.prototype.setState = function (state) {\n    var d    = 'disabled'\n    var $el  = this.$element\n    var val  = $el.is('input') ? 'val' : 'html'\n    var data = $el.data()\n\n    state += 'Text'\n\n    if (data.resetText == null) $el.data('resetText', $el[val]())\n\n    // push to event loop to allow forms to submit\n    setTimeout($.proxy(function () {\n      $el[val](data[state] == null ? this.options[state] : data[state])\n\n      if (state == 'loadingText') {\n        this.isLoading = true\n        $el.addClass(d).attr(d, d).prop(d, true)\n      } else if (this.isLoading) {\n        this.isLoading = false\n        $el.removeClass(d).removeAttr(d).prop(d, false)\n      }\n    }, this), 0)\n  }\n\n  Button.prototype.toggle = function () {\n    var changed = true\n    var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n    if ($parent.length) {\n      var $input = this.$element.find('input')\n      if ($input.prop('type') == 'radio') {\n        if ($input.prop('checked')) changed = false\n        $parent.find('.active').removeClass('active')\n        this.$element.addClass('active')\n      } else if ($input.prop('type') == 'checkbox') {\n        if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false\n        this.$element.toggleClass('active')\n      }\n      $input.prop('checked', this.$element.hasClass('active'))\n      if (changed) $input.trigger('change')\n    } else {\n      this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\n      this.$element.toggleClass('active')\n    }\n  }\n\n\n  // BUTTON PLUGIN DEFINITION\n  // ========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.button')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n      if (option == 'toggle') data.toggle()\n      else if (option) data.setState(option)\n    })\n  }\n\n  var old = $.fn.button\n\n  $.fn.button             = Plugin\n  $.fn.button.Constructor = Button\n\n\n  // BUTTON NO CONFLICT\n  // ==================\n\n  $.fn.button.noConflict = function () {\n    $.fn.button = old\n    return this\n  }\n\n\n  // BUTTON DATA-API\n  // ===============\n\n  $(document)\n    .on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n      var $btn = $(e.target).closest('.btn')\n      Plugin.call($btn, 'toggle')\n      if (!($(e.target).is('input[type=\"radio\"], input[type=\"checkbox\"]'))) {\n        // Prevent double click on radios, and the double selections (so cancellation) on checkboxes\n        e.preventDefault()\n        // The target component still receive the focus\n        if ($btn.is('input,button')) $btn.trigger('focus')\n        else $btn.find('input:visible,button:visible').first().trigger('focus')\n      }\n    })\n    .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n      $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\n    })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: collapse.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n/* jshint latedef: false */\n\n+function ($) {\n  'use strict';\n\n  // COLLAPSE PUBLIC CLASS DEFINITION\n  // ================================\n\n  var Collapse = function (element, options) {\n    this.$element      = $(element)\n    this.options       = $.extend({}, Collapse.DEFAULTS, options)\n    this.$trigger      = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n                           '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n    this.transitioning = null\n\n    if (this.options.parent) {\n      this.$parent = this.getParent()\n    } else {\n      this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n    }\n\n    if (this.options.toggle) this.toggle()\n  }\n\n  Collapse.VERSION  = '3.4.1'\n\n  Collapse.TRANSITION_DURATION = 350\n\n  Collapse.DEFAULTS = {\n    toggle: true\n  }\n\n  Collapse.prototype.dimension = function () {\n    var hasWidth = this.$element.hasClass('width')\n    return hasWidth ? 'width' : 'height'\n  }\n\n  Collapse.prototype.show = function () {\n    if (this.transitioning || this.$element.hasClass('in')) return\n\n    var activesData\n    var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n    if (actives && actives.length) {\n      activesData = actives.data('bs.collapse')\n      if (activesData && activesData.transitioning) return\n    }\n\n    var startEvent = $.Event('show.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    if (actives && actives.length) {\n      Plugin.call(actives, 'hide')\n      activesData || actives.data('bs.collapse', null)\n    }\n\n    var dimension = this.dimension()\n\n    this.$element\n      .removeClass('collapse')\n      .addClass('collapsing')[dimension](0)\n      .attr('aria-expanded', true)\n\n    this.$trigger\n      .removeClass('collapsed')\n      .attr('aria-expanded', true)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse in')[dimension]('')\n      this.transitioning = 0\n      this.$element\n        .trigger('shown.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n    this.$element\n      .one('bsTransitionEnd', $.proxy(complete, this))\n      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n  }\n\n  Collapse.prototype.hide = function () {\n    if (this.transitioning || !this.$element.hasClass('in')) return\n\n    var startEvent = $.Event('hide.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    var dimension = this.dimension()\n\n    this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n    this.$element\n      .addClass('collapsing')\n      .removeClass('collapse in')\n      .attr('aria-expanded', false)\n\n    this.$trigger\n      .addClass('collapsed')\n      .attr('aria-expanded', false)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.transitioning = 0\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse')\n        .trigger('hidden.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    this.$element\n      [dimension](0)\n      .one('bsTransitionEnd', $.proxy(complete, this))\n      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n  }\n\n  Collapse.prototype.toggle = function () {\n    this[this.$element.hasClass('in') ? 'hide' : 'show']()\n  }\n\n  Collapse.prototype.getParent = function () {\n    return $(document).find(this.options.parent)\n      .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n      .each($.proxy(function (i, element) {\n        var $element = $(element)\n        this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n      }, this))\n      .end()\n  }\n\n  Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n    var isOpen = $element.hasClass('in')\n\n    $element.attr('aria-expanded', isOpen)\n    $trigger\n      .toggleClass('collapsed', !isOpen)\n      .attr('aria-expanded', isOpen)\n  }\n\n  function getTargetFromTrigger($trigger) {\n    var href\n    var target = $trigger.attr('data-target')\n      || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n    return $(document).find(target)\n  }\n\n\n  // COLLAPSE PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.collapse')\n      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\n      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.collapse\n\n  $.fn.collapse             = Plugin\n  $.fn.collapse.Constructor = Collapse\n\n\n  // COLLAPSE NO CONFLICT\n  // ====================\n\n  $.fn.collapse.noConflict = function () {\n    $.fn.collapse = old\n    return this\n  }\n\n\n  // COLLAPSE DATA-API\n  // =================\n\n  $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n    var $this   = $(this)\n\n    if (!$this.attr('data-target')) e.preventDefault()\n\n    var $target = getTargetFromTrigger($this)\n    var data    = $target.data('bs.collapse')\n    var option  = data ? 'toggle' : $this.data()\n\n    Plugin.call($target, option)\n  })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: dropdown.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // DROPDOWN CLASS DEFINITION\n  // =========================\n\n  var backdrop = '.dropdown-backdrop'\n  var toggle   = '[data-toggle=\"dropdown\"]'\n  var Dropdown = function (element) {\n    $(element).on('click.bs.dropdown', this.toggle)\n  }\n\n  Dropdown.VERSION = '3.4.1'\n\n  function getParent($this) {\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    var $parent = selector !== '#' ? $(document).find(selector) : null\n\n    return $parent && $parent.length ? $parent : $this.parent()\n  }\n\n  function clearMenus(e) {\n    if (e && e.which === 3) return\n    $(backdrop).remove()\n    $(toggle).each(function () {\n      var $this         = $(this)\n      var $parent       = getParent($this)\n      var relatedTarget = { relatedTarget: this }\n\n      if (!$parent.hasClass('open')) return\n\n      if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return\n\n      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this.attr('aria-expanded', 'false')\n      $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))\n    })\n  }\n\n  Dropdown.prototype.toggle = function (e) {\n    var $this = $(this)\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    clearMenus()\n\n    if (!isActive) {\n      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n        // if mobile we use a backdrop because click events don't delegate\n        $(document.createElement('div'))\n          .addClass('dropdown-backdrop')\n          .insertAfter($(this))\n          .on('click', clearMenus)\n      }\n\n      var relatedTarget = { relatedTarget: this }\n      $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this\n        .trigger('focus')\n        .attr('aria-expanded', 'true')\n\n      $parent\n        .toggleClass('open')\n        .trigger($.Event('shown.bs.dropdown', relatedTarget))\n    }\n\n    return false\n  }\n\n  Dropdown.prototype.keydown = function (e) {\n    if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n    var $this = $(this)\n\n    e.preventDefault()\n    e.stopPropagation()\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    if (!isActive && e.which != 27 || isActive && e.which == 27) {\n      if (e.which == 27) $parent.find(toggle).trigger('focus')\n      return $this.trigger('click')\n    }\n\n    var desc = ' li:not(.disabled):visible a'\n    var $items = $parent.find('.dropdown-menu' + desc)\n\n    if (!$items.length) return\n\n    var index = $items.index(e.target)\n\n    if (e.which == 38 && index > 0)                 index--         // up\n    if (e.which == 40 && index < $items.length - 1) index++         // down\n    if (!~index)                                    index = 0\n\n    $items.eq(index).trigger('focus')\n  }\n\n\n  // DROPDOWN PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.dropdown')\n\n      if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  var old = $.fn.dropdown\n\n  $.fn.dropdown             = Plugin\n  $.fn.dropdown.Constructor = Dropdown\n\n\n  // DROPDOWN NO CONFLICT\n  // ====================\n\n  $.fn.dropdown.noConflict = function () {\n    $.fn.dropdown = old\n    return this\n  }\n\n\n  // APPLY TO STANDARD DROPDOWN ELEMENTS\n  // ===================================\n\n  $(document)\n    .on('click.bs.dropdown.data-api', clearMenus)\n    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n    .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n    .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: modal.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#modals\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // MODAL CLASS DEFINITION\n  // ======================\n\n  var Modal = function (element, options) {\n    this.options = options\n    this.$body = $(document.body)\n    this.$element = $(element)\n    this.$dialog = this.$element.find('.modal-dialog')\n    this.$backdrop = null\n    this.isShown = null\n    this.originalBodyPad = null\n    this.scrollbarWidth = 0\n    this.ignoreBackdropClick = false\n    this.fixedContent = '.navbar-fixed-top, .navbar-fixed-bottom'\n\n    if (this.options.remote) {\n      this.$element\n        .find('.modal-content')\n        .load(this.options.remote, $.proxy(function () {\n          this.$element.trigger('loaded.bs.modal')\n        }, this))\n    }\n  }\n\n  Modal.VERSION = '3.4.1'\n\n  Modal.TRANSITION_DURATION = 300\n  Modal.BACKDROP_TRANSITION_DURATION = 150\n\n  Modal.DEFAULTS = {\n    backdrop: true,\n    keyboard: true,\n    show: true\n  }\n\n  Modal.prototype.toggle = function (_relatedTarget) {\n    return this.isShown ? this.hide() : this.show(_relatedTarget)\n  }\n\n  Modal.prototype.show = function (_relatedTarget) {\n    var that = this\n    var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n    this.$element.trigger(e)\n\n    if (this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = true\n\n    this.checkScrollbar()\n    this.setScrollbar()\n    this.$body.addClass('modal-open')\n\n    this.escape()\n    this.resize()\n\n    this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n    this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n      that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n        if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n      })\n    })\n\n    this.backdrop(function () {\n      var transition = $.support.transition && that.$element.hasClass('fade')\n\n      if (!that.$element.parent().length) {\n        that.$element.appendTo(that.$body) // don't move modals dom position\n      }\n\n      that.$element\n        .show()\n        .scrollTop(0)\n\n      that.adjustDialog()\n\n      if (transition) {\n        that.$element[0].offsetWidth // force reflow\n      }\n\n      that.$element.addClass('in')\n\n      that.enforceFocus()\n\n      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n      transition ?\n        that.$dialog // wait for modal to slide in\n          .one('bsTransitionEnd', function () {\n            that.$element.trigger('focus').trigger(e)\n          })\n          .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n        that.$element.trigger('focus').trigger(e)\n    })\n  }\n\n  Modal.prototype.hide = function (e) {\n    if (e) e.preventDefault()\n\n    e = $.Event('hide.bs.modal')\n\n    this.$element.trigger(e)\n\n    if (!this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = false\n\n    this.escape()\n    this.resize()\n\n    $(document).off('focusin.bs.modal')\n\n    this.$element\n      .removeClass('in')\n      .off('click.dismiss.bs.modal')\n      .off('mouseup.dismiss.bs.modal')\n\n    this.$dialog.off('mousedown.dismiss.bs.modal')\n\n    $.support.transition && this.$element.hasClass('fade') ?\n      this.$element\n        .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n        .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n      this.hideModal()\n  }\n\n  Modal.prototype.enforceFocus = function () {\n    $(document)\n      .off('focusin.bs.modal') // guard against infinite focus loop\n      .on('focusin.bs.modal', $.proxy(function (e) {\n        if (document !== e.target &&\n          this.$element[0] !== e.target &&\n          !this.$element.has(e.target).length) {\n          this.$element.trigger('focus')\n        }\n      }, this))\n  }\n\n  Modal.prototype.escape = function () {\n    if (this.isShown && this.options.keyboard) {\n      this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n        e.which == 27 && this.hide()\n      }, this))\n    } else if (!this.isShown) {\n      this.$element.off('keydown.dismiss.bs.modal')\n    }\n  }\n\n  Modal.prototype.resize = function () {\n    if (this.isShown) {\n      $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n    } else {\n      $(window).off('resize.bs.modal')\n    }\n  }\n\n  Modal.prototype.hideModal = function () {\n    var that = this\n    this.$element.hide()\n    this.backdrop(function () {\n      that.$body.removeClass('modal-open')\n      that.resetAdjustments()\n      that.resetScrollbar()\n      that.$element.trigger('hidden.bs.modal')\n    })\n  }\n\n  Modal.prototype.removeBackdrop = function () {\n    this.$backdrop && this.$backdrop.remove()\n    this.$backdrop = null\n  }\n\n  Modal.prototype.backdrop = function (callback) {\n    var that = this\n    var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n    if (this.isShown && this.options.backdrop) {\n      var doAnimate = $.support.transition && animate\n\n      this.$backdrop = $(document.createElement('div'))\n        .addClass('modal-backdrop ' + animate)\n        .appendTo(this.$body)\n\n      this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n        if (this.ignoreBackdropClick) {\n          this.ignoreBackdropClick = false\n          return\n        }\n        if (e.target !== e.currentTarget) return\n        this.options.backdrop == 'static'\n          ? this.$element[0].focus()\n          : this.hide()\n      }, this))\n\n      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n      this.$backdrop.addClass('in')\n\n      if (!callback) return\n\n      doAnimate ?\n        this.$backdrop\n          .one('bsTransitionEnd', callback)\n          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n        callback()\n\n    } else if (!this.isShown && this.$backdrop) {\n      this.$backdrop.removeClass('in')\n\n      var callbackRemove = function () {\n        that.removeBackdrop()\n        callback && callback()\n      }\n      $.support.transition && this.$element.hasClass('fade') ?\n        this.$backdrop\n          .one('bsTransitionEnd', callbackRemove)\n          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n        callbackRemove()\n\n    } else if (callback) {\n      callback()\n    }\n  }\n\n  // these following methods are used to handle overflowing modals\n\n  Modal.prototype.handleUpdate = function () {\n    this.adjustDialog()\n  }\n\n  Modal.prototype.adjustDialog = function () {\n    var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n    this.$element.css({\n      paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n      paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n    })\n  }\n\n  Modal.prototype.resetAdjustments = function () {\n    this.$element.css({\n      paddingLeft: '',\n      paddingRight: ''\n    })\n  }\n\n  Modal.prototype.checkScrollbar = function () {\n    var fullWindowWidth = window.innerWidth\n    if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n      var documentElementRect = document.documentElement.getBoundingClientRect()\n      fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n    }\n    this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n    this.scrollbarWidth = this.measureScrollbar()\n  }\n\n  Modal.prototype.setScrollbar = function () {\n    var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n    this.originalBodyPad = document.body.style.paddingRight || ''\n    var scrollbarWidth = this.scrollbarWidth\n    if (this.bodyIsOverflowing) {\n      this.$body.css('padding-right', bodyPad + scrollbarWidth)\n      $(this.fixedContent).each(function (index, element) {\n        var actualPadding = element.style.paddingRight\n        var calculatedPadding = $(element).css('padding-right')\n        $(element)\n          .data('padding-right', actualPadding)\n          .css('padding-right', parseFloat(calculatedPadding) + scrollbarWidth + 'px')\n      })\n    }\n  }\n\n  Modal.prototype.resetScrollbar = function () {\n    this.$body.css('padding-right', this.originalBodyPad)\n    $(this.fixedContent).each(function (index, element) {\n      var padding = $(element).data('padding-right')\n      $(element).removeData('padding-right')\n      element.style.paddingRight = padding ? padding : ''\n    })\n  }\n\n  Modal.prototype.measureScrollbar = function () { // thx walsh\n    var scrollDiv = document.createElement('div')\n    scrollDiv.className = 'modal-scrollbar-measure'\n    this.$body.append(scrollDiv)\n    var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n    this.$body[0].removeChild(scrollDiv)\n    return scrollbarWidth\n  }\n\n\n  // MODAL PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option, _relatedTarget) {\n    return this.each(function () {\n      var $this = $(this)\n      var data = $this.data('bs.modal')\n      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n      if (typeof option == 'string') data[option](_relatedTarget)\n      else if (options.show) data.show(_relatedTarget)\n    })\n  }\n\n  var old = $.fn.modal\n\n  $.fn.modal = Plugin\n  $.fn.modal.Constructor = Modal\n\n\n  // MODAL NO CONFLICT\n  // =================\n\n  $.fn.modal.noConflict = function () {\n    $.fn.modal = old\n    return this\n  }\n\n\n  // MODAL DATA-API\n  // ==============\n\n  $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n    var $this = $(this)\n    var href = $this.attr('href')\n    var target = $this.attr('data-target') ||\n      (href && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n\n    var $target = $(document).find(target)\n    var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n    if ($this.is('a')) e.preventDefault()\n\n    $target.one('show.bs.modal', function (showEvent) {\n      if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n      $target.one('hidden.bs.modal', function () {\n        $this.is(':visible') && $this.trigger('focus')\n      })\n    })\n    Plugin.call($target, option, this)\n  })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: affix.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#affix\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // AFFIX CLASS DEFINITION\n  // ======================\n\n  var Affix = function (element, options) {\n    this.options = $.extend({}, Affix.DEFAULTS, options)\n\n    var target = this.options.target === Affix.DEFAULTS.target ? $(this.options.target) : $(document).find(this.options.target)\n\n    this.$target = target\n      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))\n\n    this.$element     = $(element)\n    this.affixed      = null\n    this.unpin        = null\n    this.pinnedOffset = null\n\n    this.checkPosition()\n  }\n\n  Affix.VERSION  = '3.4.1'\n\n  Affix.RESET    = 'affix affix-top affix-bottom'\n\n  Affix.DEFAULTS = {\n    offset: 0,\n    target: window\n  }\n\n  Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n    var scrollTop    = this.$target.scrollTop()\n    var position     = this.$element.offset()\n    var targetHeight = this.$target.height()\n\n    if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n    if (this.affixed == 'bottom') {\n      if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n      return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n    }\n\n    var initializing   = this.affixed == null\n    var colliderTop    = initializing ? scrollTop : position.top\n    var colliderHeight = initializing ? targetHeight : height\n\n    if (offsetTop != null && scrollTop <= offsetTop) return 'top'\n    if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n    return false\n  }\n\n  Affix.prototype.getPinnedOffset = function () {\n    if (this.pinnedOffset) return this.pinnedOffset\n    this.$element.removeClass(Affix.RESET).addClass('affix')\n    var scrollTop = this.$target.scrollTop()\n    var position  = this.$element.offset()\n    return (this.pinnedOffset = position.top - scrollTop)\n  }\n\n  Affix.prototype.checkPositionWithEventLoop = function () {\n    setTimeout($.proxy(this.checkPosition, this), 1)\n  }\n\n  Affix.prototype.checkPosition = function () {\n    if (!this.$element.is(':visible')) return\n\n    var height       = this.$element.height()\n    var offset       = this.options.offset\n    var offsetTop    = offset.top\n    var offsetBottom = offset.bottom\n    var scrollHeight = Math.max($(document).height(), $(document.body).height())\n\n    if (typeof offset != 'object')         offsetBottom = offsetTop = offset\n    if (typeof offsetTop == 'function')    offsetTop    = offset.top(this.$element)\n    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n    var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n    if (this.affixed != affix) {\n      if (this.unpin != null) this.$element.css('top', '')\n\n      var affixType = 'affix' + (affix ? '-' + affix : '')\n      var e         = $.Event(affixType + '.bs.affix')\n\n      this.$element.trigger(e)\n\n      if (e.isDefaultPrevented()) return\n\n      this.affixed = affix\n      this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n      this.$element\n        .removeClass(Affix.RESET)\n        .addClass(affixType)\n        .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n    }\n\n    if (affix == 'bottom') {\n      this.$element.offset({\n        top: scrollHeight - height - offsetBottom\n      })\n    }\n  }\n\n\n  // AFFIX PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.affix')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.affix\n\n  $.fn.affix             = Plugin\n  $.fn.affix.Constructor = Affix\n\n\n  // AFFIX NO CONFLICT\n  // =================\n\n  $.fn.affix.noConflict = function () {\n    $.fn.affix = old\n    return this\n  }\n\n\n  // AFFIX DATA-API\n  // ==============\n\n  $(window).on('load', function () {\n    $('[data-spy=\"affix\"]').each(function () {\n      var $spy = $(this)\n      var data = $spy.data()\n\n      data.offset = data.offset || {}\n\n      if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n      if (data.offsetTop    != null) data.offset.top    = data.offsetTop\n\n      Plugin.call($spy, data)\n    })\n  })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: scrollspy.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // SCROLLSPY CLASS DEFINITION\n  // ==========================\n\n  function ScrollSpy(element, options) {\n    this.$body          = $(document.body)\n    this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)\n    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)\n    this.selector       = (this.options.target || '') + ' .nav li > a'\n    this.offsets        = []\n    this.targets        = []\n    this.activeTarget   = null\n    this.scrollHeight   = 0\n\n    this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))\n    this.refresh()\n    this.process()\n  }\n\n  ScrollSpy.VERSION  = '3.4.1'\n\n  ScrollSpy.DEFAULTS = {\n    offset: 10\n  }\n\n  ScrollSpy.prototype.getScrollHeight = function () {\n    return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n  }\n\n  ScrollSpy.prototype.refresh = function () {\n    var that          = this\n    var offsetMethod  = 'offset'\n    var offsetBase    = 0\n\n    this.offsets      = []\n    this.targets      = []\n    this.scrollHeight = this.getScrollHeight()\n\n    if (!$.isWindow(this.$scrollElement[0])) {\n      offsetMethod = 'position'\n      offsetBase   = this.$scrollElement.scrollTop()\n    }\n\n    this.$body\n      .find(this.selector)\n      .map(function () {\n        var $el   = $(this)\n        var href  = $el.data('target') || $el.attr('href')\n        var $href = /^#./.test(href) && $(href)\n\n        return ($href\n          && $href.length\n          && $href.is(':visible')\n          && [[$href[offsetMethod]().top + offsetBase, href]]) || null\n      })\n      .sort(function (a, b) { return a[0] - b[0] })\n      .each(function () {\n        that.offsets.push(this[0])\n        that.targets.push(this[1])\n      })\n  }\n\n  ScrollSpy.prototype.process = function () {\n    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset\n    var scrollHeight = this.getScrollHeight()\n    var maxScroll    = this.options.offset + scrollHeight - this.$scrollElement.height()\n    var offsets      = this.offsets\n    var targets      = this.targets\n    var activeTarget = this.activeTarget\n    var i\n\n    if (this.scrollHeight != scrollHeight) {\n      this.refresh()\n    }\n\n    if (scrollTop >= maxScroll) {\n      return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n    }\n\n    if (activeTarget && scrollTop < offsets[0]) {\n      this.activeTarget = null\n      return this.clear()\n    }\n\n    for (i = offsets.length; i--;) {\n      activeTarget != targets[i]\n        && scrollTop >= offsets[i]\n        && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])\n        && this.activate(targets[i])\n    }\n  }\n\n  ScrollSpy.prototype.activate = function (target) {\n    this.activeTarget = target\n\n    this.clear()\n\n    var selector = this.selector +\n      '[data-target=\"' + target + '\"],' +\n      this.selector + '[href=\"' + target + '\"]'\n\n    var active = $(selector)\n      .parents('li')\n      .addClass('active')\n\n    if (active.parent('.dropdown-menu').length) {\n      active = active\n        .closest('li.dropdown')\n        .addClass('active')\n    }\n\n    active.trigger('activate.bs.scrollspy')\n  }\n\n  ScrollSpy.prototype.clear = function () {\n    $(this.selector)\n      .parentsUntil(this.options.target, '.active')\n      .removeClass('active')\n  }\n\n\n  // SCROLLSPY PLUGIN DEFINITION\n  // ===========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.scrollspy')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.scrollspy\n\n  $.fn.scrollspy             = Plugin\n  $.fn.scrollspy.Constructor = ScrollSpy\n\n\n  // SCROLLSPY NO CONFLICT\n  // =====================\n\n  $.fn.scrollspy.noConflict = function () {\n    $.fn.scrollspy = old\n    return this\n  }\n\n\n  // SCROLLSPY DATA-API\n  // ==================\n\n  $(window).on('load.bs.scrollspy.data-api', function () {\n    $('[data-spy=\"scroll\"]').each(function () {\n      var $spy = $(this)\n      Plugin.call($spy, $spy.data())\n    })\n  })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: tooltip.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n+function ($) {\n  'use strict';\n\n  var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\n  var uriAttrs = [\n    'background',\n    'cite',\n    'href',\n    'itemtype',\n    'longdesc',\n    'poster',\n    'src',\n    'xlink:href'\n  ]\n\n  var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n  var DefaultWhitelist = {\n    // Global attributes allowed on any supplied element below.\n    '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n    a: ['target', 'href', 'title', 'rel'],\n    area: [],\n    b: [],\n    br: [],\n    col: [],\n    code: [],\n    div: [],\n    em: [],\n    hr: [],\n    h1: [],\n    h2: [],\n    h3: [],\n    h4: [],\n    h5: [],\n    h6: [],\n    i: [],\n    img: ['src', 'alt', 'title', 'width', 'height'],\n    li: [],\n    ol: [],\n    p: [],\n    pre: [],\n    s: [],\n    small: [],\n    span: [],\n    sub: [],\n    sup: [],\n    strong: [],\n    u: [],\n    ul: []\n  }\n\n  /**\n   * A pattern that recognizes a commonly useful subset of URLs that are safe.\n   *\n   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n   */\n  var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi\n\n  /**\n   * A pattern that matches safe data URLs. Only matches image, video and audio types.\n   *\n   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n   */\n  var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i\n\n  function allowedAttribute(attr, allowedAttributeList) {\n    var attrName = attr.nodeName.toLowerCase()\n\n    if ($.inArray(attrName, allowedAttributeList) !== -1) {\n      if ($.inArray(attrName, uriAttrs) !== -1) {\n        return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n      }\n\n      return true\n    }\n\n    var regExp = $(allowedAttributeList).filter(function (index, value) {\n      return value instanceof RegExp\n    })\n\n    // Check if a regular expression validates the attribute.\n    for (var i = 0, l = regExp.length; i < l; i++) {\n      if (attrName.match(regExp[i])) {\n        return true\n      }\n    }\n\n    return false\n  }\n\n  function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n    if (unsafeHtml.length === 0) {\n      return unsafeHtml\n    }\n\n    if (sanitizeFn && typeof sanitizeFn === 'function') {\n      return sanitizeFn(unsafeHtml)\n    }\n\n    // IE 8 and below don't support createHTMLDocument\n    if (!document.implementation || !document.implementation.createHTMLDocument) {\n      return unsafeHtml\n    }\n\n    var createdDocument = document.implementation.createHTMLDocument('sanitization')\n    createdDocument.body.innerHTML = unsafeHtml\n\n    var whitelistKeys = $.map(whiteList, function (el, i) { return i })\n    var elements = $(createdDocument.body).find('*')\n\n    for (var i = 0, len = elements.length; i < len; i++) {\n      var el = elements[i]\n      var elName = el.nodeName.toLowerCase()\n\n      if ($.inArray(elName, whitelistKeys) === -1) {\n        el.parentNode.removeChild(el)\n\n        continue\n      }\n\n      var attributeList = $.map(el.attributes, function (el) { return el })\n      var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n      for (var j = 0, len2 = attributeList.length; j < len2; j++) {\n        if (!allowedAttribute(attributeList[j], whitelistedAttributes)) {\n          el.removeAttribute(attributeList[j].nodeName)\n        }\n      }\n    }\n\n    return createdDocument.body.innerHTML\n  }\n\n  // TOOLTIP PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Tooltip = function (element, options) {\n    this.type       = null\n    this.options    = null\n    this.enabled    = null\n    this.timeout    = null\n    this.hoverState = null\n    this.$element   = null\n    this.inState    = null\n\n    this.init('tooltip', element, options)\n  }\n\n  Tooltip.VERSION  = '3.4.1'\n\n  Tooltip.TRANSITION_DURATION = 150\n\n  Tooltip.DEFAULTS = {\n    animation: true,\n    placement: 'top',\n    selector: false,\n    template: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n    trigger: 'hover focus',\n    title: '',\n    delay: 0,\n    html: false,\n    container: false,\n    viewport: {\n      selector: 'body',\n      padding: 0\n    },\n    sanitize : true,\n    sanitizeFn : null,\n    whiteList : DefaultWhitelist\n  }\n\n  Tooltip.prototype.init = function (type, element, options) {\n    this.enabled   = true\n    this.type      = type\n    this.$element  = $(element)\n    this.options   = this.getOptions(options)\n    this.$viewport = this.options.viewport && $(document).find($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))\n    this.inState   = { click: false, hover: false, focus: false }\n\n    if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n      throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n    }\n\n    var triggers = this.options.trigger.split(' ')\n\n    for (var i = triggers.length; i--;) {\n      var trigger = triggers[i]\n\n      if (trigger == 'click') {\n        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n      } else if (trigger != 'manual') {\n        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'\n        var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n      }\n    }\n\n    this.options.selector ?\n      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n      this.fixTitle()\n  }\n\n  Tooltip.prototype.getDefaults = function () {\n    return Tooltip.DEFAULTS\n  }\n\n  Tooltip.prototype.getOptions = function (options) {\n    var dataAttributes = this.$element.data()\n\n    for (var dataAttr in dataAttributes) {\n      if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) {\n        delete dataAttributes[dataAttr]\n      }\n    }\n\n    options = $.extend({}, this.getDefaults(), dataAttributes, options)\n\n    if (options.delay && typeof options.delay == 'number') {\n      options.delay = {\n        show: options.delay,\n        hide: options.delay\n      }\n    }\n\n    if (options.sanitize) {\n      options.template = sanitizeHtml(options.template, options.whiteList, options.sanitizeFn)\n    }\n\n    return options\n  }\n\n  Tooltip.prototype.getDelegateOptions = function () {\n    var options  = {}\n    var defaults = this.getDefaults()\n\n    this._options && $.each(this._options, function (key, value) {\n      if (defaults[key] != value) options[key] = value\n    })\n\n    return options\n  }\n\n  Tooltip.prototype.enter = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget).data('bs.' + this.type)\n\n    if (!self) {\n      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n      $(obj.currentTarget).data('bs.' + this.type, self)\n    }\n\n    if (obj instanceof $.Event) {\n      self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true\n    }\n\n    if (self.tip().hasClass('in') || self.hoverState == 'in') {\n      self.hoverState = 'in'\n      return\n    }\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'in'\n\n    if (!self.options.delay || !self.options.delay.show) return self.show()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'in') self.show()\n    }, self.options.delay.show)\n  }\n\n  Tooltip.prototype.isInStateTrue = function () {\n    for (var key in this.inState) {\n      if (this.inState[key]) return true\n    }\n\n    return false\n  }\n\n  Tooltip.prototype.leave = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget).data('bs.' + this.type)\n\n    if (!self) {\n      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n      $(obj.currentTarget).data('bs.' + this.type, self)\n    }\n\n    if (obj instanceof $.Event) {\n      self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false\n    }\n\n    if (self.isInStateTrue()) return\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'out'\n\n    if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'out') self.hide()\n    }, self.options.delay.hide)\n  }\n\n  Tooltip.prototype.show = function () {\n    var e = $.Event('show.bs.' + this.type)\n\n    if (this.hasContent() && this.enabled) {\n      this.$element.trigger(e)\n\n      var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n      if (e.isDefaultPrevented() || !inDom) return\n      var that = this\n\n      var $tip = this.tip()\n\n      var tipId = this.getUID(this.type)\n\n      this.setContent()\n      $tip.attr('id', tipId)\n      this.$element.attr('aria-describedby', tipId)\n\n      if (this.options.animation) $tip.addClass('fade')\n\n      var placement = typeof this.options.placement == 'function' ?\n        this.options.placement.call(this, $tip[0], this.$element[0]) :\n        this.options.placement\n\n      var autoToken = /\\s?auto?\\s?/i\n      var autoPlace = autoToken.test(placement)\n      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n      $tip\n        .detach()\n        .css({ top: 0, left: 0, display: 'block' })\n        .addClass(placement)\n        .data('bs.' + this.type, this)\n\n      this.options.container ? $tip.appendTo($(document).find(this.options.container)) : $tip.insertAfter(this.$element)\n      this.$element.trigger('inserted.bs.' + this.type)\n\n      var pos          = this.getPosition()\n      var actualWidth  = $tip[0].offsetWidth\n      var actualHeight = $tip[0].offsetHeight\n\n      if (autoPlace) {\n        var orgPlacement = placement\n        var viewportDim = this.getPosition(this.$viewport)\n\n        placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top'    :\n                    placement == 'top'    && pos.top    - actualHeight < viewportDim.top    ? 'bottom' :\n                    placement == 'right'  && pos.right  + actualWidth  > viewportDim.width  ? 'left'   :\n                    placement == 'left'   && pos.left   - actualWidth  < viewportDim.left   ? 'right'  :\n                    placement\n\n        $tip\n          .removeClass(orgPlacement)\n          .addClass(placement)\n      }\n\n      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n      this.applyPlacement(calculatedOffset, placement)\n\n      var complete = function () {\n        var prevHoverState = that.hoverState\n        that.$element.trigger('shown.bs.' + that.type)\n        that.hoverState = null\n\n        if (prevHoverState == 'out') that.leave(that)\n      }\n\n      $.support.transition && this.$tip.hasClass('fade') ?\n        $tip\n          .one('bsTransitionEnd', complete)\n          .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n        complete()\n    }\n  }\n\n  Tooltip.prototype.applyPlacement = function (offset, placement) {\n    var $tip   = this.tip()\n    var width  = $tip[0].offsetWidth\n    var height = $tip[0].offsetHeight\n\n    // manually read margins because getBoundingClientRect includes difference\n    var marginTop = parseInt($tip.css('margin-top'), 10)\n    var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n    // we must check for NaN for ie 8/9\n    if (isNaN(marginTop))  marginTop  = 0\n    if (isNaN(marginLeft)) marginLeft = 0\n\n    offset.top  += marginTop\n    offset.left += marginLeft\n\n    // $.fn.offset doesn't round pixel values\n    // so we use setOffset directly with our own function B-0\n    $.offset.setOffset($tip[0], $.extend({\n      using: function (props) {\n        $tip.css({\n          top: Math.round(props.top),\n          left: Math.round(props.left)\n        })\n      }\n    }, offset), 0)\n\n    $tip.addClass('in')\n\n    // check to see if placing tip in new offset caused the tip to resize itself\n    var actualWidth  = $tip[0].offsetWidth\n    var actualHeight = $tip[0].offsetHeight\n\n    if (placement == 'top' && actualHeight != height) {\n      offset.top = offset.top + height - actualHeight\n    }\n\n    var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n    if (delta.left) offset.left += delta.left\n    else offset.top += delta.top\n\n    var isVertical          = /top|bottom/.test(placement)\n    var arrowDelta          = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n    var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n    $tip.offset(offset)\n    this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n  }\n\n  Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n    this.arrow()\n      .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n      .css(isVertical ? 'top' : 'left', '')\n  }\n\n  Tooltip.prototype.setContent = function () {\n    var $tip  = this.tip()\n    var title = this.getTitle()\n\n    if (this.options.html) {\n      if (this.options.sanitize) {\n        title = sanitizeHtml(title, this.options.whiteList, this.options.sanitizeFn)\n      }\n\n      $tip.find('.tooltip-inner').html(title)\n    } else {\n      $tip.find('.tooltip-inner').text(title)\n    }\n\n    $tip.removeClass('fade in top bottom left right')\n  }\n\n  Tooltip.prototype.hide = function (callback) {\n    var that = this\n    var $tip = $(this.$tip)\n    var e    = $.Event('hide.bs.' + this.type)\n\n    function complete() {\n      if (that.hoverState != 'in') $tip.detach()\n      if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.\n        that.$element\n          .removeAttr('aria-describedby')\n          .trigger('hidden.bs.' + that.type)\n      }\n      callback && callback()\n    }\n\n    this.$element.trigger(e)\n\n    if (e.isDefaultPrevented()) return\n\n    $tip.removeClass('in')\n\n    $.support.transition && $tip.hasClass('fade') ?\n      $tip\n        .one('bsTransitionEnd', complete)\n        .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n      complete()\n\n    this.hoverState = null\n\n    return this\n  }\n\n  Tooltip.prototype.fixTitle = function () {\n    var $e = this.$element\n    if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {\n      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n    }\n  }\n\n  Tooltip.prototype.hasContent = function () {\n    return this.getTitle()\n  }\n\n  Tooltip.prototype.getPosition = function ($element) {\n    $element   = $element || this.$element\n\n    var el     = $element[0]\n    var isBody = el.tagName == 'BODY'\n\n    var elRect    = el.getBoundingClientRect()\n    if (elRect.width == null) {\n      // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n      elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n    }\n    var isSvg = window.SVGElement && el instanceof window.SVGElement\n    // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.\n    // See https://github.com/twbs/bootstrap/issues/20280\n    var elOffset  = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())\n    var scroll    = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n    var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n    return $.extend({}, elRect, scroll, outerDims, elOffset)\n  }\n\n  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2 } :\n           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n  }\n\n  Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n    var delta = { top: 0, left: 0 }\n    if (!this.$viewport) return delta\n\n    var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n    var viewportDimensions = this.getPosition(this.$viewport)\n\n    if (/right|left/.test(placement)) {\n      var topEdgeOffset    = pos.top - viewportPadding - viewportDimensions.scroll\n      var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n      if (topEdgeOffset < viewportDimensions.top) { // top overflow\n        delta.top = viewportDimensions.top - topEdgeOffset\n      } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n        delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n      }\n    } else {\n      var leftEdgeOffset  = pos.left - viewportPadding\n      var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n      if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n        delta.left = viewportDimensions.left - leftEdgeOffset\n      } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow\n        delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n      }\n    }\n\n    return delta\n  }\n\n  Tooltip.prototype.getTitle = function () {\n    var title\n    var $e = this.$element\n    var o  = this.options\n\n    title = $e.attr('data-original-title')\n      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)\n\n    return title\n  }\n\n  Tooltip.prototype.getUID = function (prefix) {\n    do prefix += ~~(Math.random() * 1000000)\n    while (document.getElementById(prefix))\n    return prefix\n  }\n\n  Tooltip.prototype.tip = function () {\n    if (!this.$tip) {\n      this.$tip = $(this.options.template)\n      if (this.$tip.length != 1) {\n        throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')\n      }\n    }\n    return this.$tip\n  }\n\n  Tooltip.prototype.arrow = function () {\n    return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n  }\n\n  Tooltip.prototype.enable = function () {\n    this.enabled = true\n  }\n\n  Tooltip.prototype.disable = function () {\n    this.enabled = false\n  }\n\n  Tooltip.prototype.toggleEnabled = function () {\n    this.enabled = !this.enabled\n  }\n\n  Tooltip.prototype.toggle = function (e) {\n    var self = this\n    if (e) {\n      self = $(e.currentTarget).data('bs.' + this.type)\n      if (!self) {\n        self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n        $(e.currentTarget).data('bs.' + this.type, self)\n      }\n    }\n\n    if (e) {\n      self.inState.click = !self.inState.click\n      if (self.isInStateTrue()) self.enter(self)\n      else self.leave(self)\n    } else {\n      self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n    }\n  }\n\n  Tooltip.prototype.destroy = function () {\n    var that = this\n    clearTimeout(this.timeout)\n    this.hide(function () {\n      that.$element.off('.' + that.type).removeData('bs.' + that.type)\n      if (that.$tip) {\n        that.$tip.detach()\n      }\n      that.$tip = null\n      that.$arrow = null\n      that.$viewport = null\n      that.$element = null\n    })\n  }\n\n  Tooltip.prototype.sanitizeHtml = function (unsafeHtml) {\n    return sanitizeHtml(unsafeHtml, this.options.whiteList, this.options.sanitizeFn)\n  }\n\n  // TOOLTIP PLUGIN DEFINITION\n  // =========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.tooltip')\n      var options = typeof option == 'object' && option\n\n      if (!data && /destroy|hide/.test(option)) return\n      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.tooltip\n\n  $.fn.tooltip             = Plugin\n  $.fn.tooltip.Constructor = Tooltip\n\n\n  // TOOLTIP NO CONFLICT\n  // ===================\n\n  $.fn.tooltip.noConflict = function () {\n    $.fn.tooltip = old\n    return this\n  }\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: popover.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // POPOVER PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Popover = function (element, options) {\n    this.init('popover', element, options)\n  }\n\n  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n  Popover.VERSION  = '3.4.1'\n\n  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n    placement: 'right',\n    trigger: 'click',\n    content: '',\n    template: '<div class=\"popover\" role=\"tooltip\"><div class=\"arrow\"></div><h3 class=\"popover-title\"></h3><div class=\"popover-content\"></div></div>'\n  })\n\n\n  // NOTE: POPOVER EXTENDS tooltip.js\n  // ================================\n\n  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n  Popover.prototype.constructor = Popover\n\n  Popover.prototype.getDefaults = function () {\n    return Popover.DEFAULTS\n  }\n\n  Popover.prototype.setContent = function () {\n    var $tip    = this.tip()\n    var title   = this.getTitle()\n    var content = this.getContent()\n\n    if (this.options.html) {\n      var typeContent = typeof content\n\n      if (this.options.sanitize) {\n        title = this.sanitizeHtml(title)\n\n        if (typeContent === 'string') {\n          content = this.sanitizeHtml(content)\n        }\n      }\n\n      $tip.find('.popover-title').html(title)\n      $tip.find('.popover-content').children().detach().end()[\n        typeContent === 'string' ? 'html' : 'append'\n      ](content)\n    } else {\n      $tip.find('.popover-title').text(title)\n      $tip.find('.popover-content').children().detach().end().text(content)\n    }\n\n    $tip.removeClass('fade top bottom left right in')\n\n    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n    // this manually by checking the contents.\n    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n  }\n\n  Popover.prototype.hasContent = function () {\n    return this.getTitle() || this.getContent()\n  }\n\n  Popover.prototype.getContent = function () {\n    var $e = this.$element\n    var o  = this.options\n\n    return $e.attr('data-content')\n      || (typeof o.content == 'function' ?\n        o.content.call($e[0]) :\n        o.content)\n  }\n\n  Popover.prototype.arrow = function () {\n    return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n  }\n\n\n  // POPOVER PLUGIN DEFINITION\n  // =========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.popover')\n      var options = typeof option == 'object' && option\n\n      if (!data && /destroy|hide/.test(option)) return\n      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.popover\n\n  $.fn.popover             = Plugin\n  $.fn.popover.Constructor = Popover\n\n\n  // POPOVER NO CONFLICT\n  // ===================\n\n  $.fn.popover.noConflict = function () {\n    $.fn.popover = old\n    return this\n  }\n\n}(jQuery);\n","/*\n*   This content is licensed according to the W3C Software License at\n*   https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n*/\n(function () {\n    try {\n    var generator = document.querySelectorAll('.design-generator')[0];\n    \n    var tablist = generator.querySelectorAll('[role=\"tablist\"]')[0];\n    var tabs;\n    var panels;\n  \n    generateArrays();\n  \n    function generateArrays () {\n      tabs = generator.querySelectorAll('[role=\"tab\"]');\n      panels = generator.querySelectorAll('[role=\"tabpanel\"]');\n    };\n  \n    // For easy reference\n    var keys = {\n      end: 35,\n      home: 36,\n      left: 37,\n      up: 38,\n      right: 39,\n      down: 40,\n      delete: 46,\n      enter: 13,\n      space: 32\n    };\n  \n    // Add or substract depenign on key pressed\n    var direction = {\n      37: -1,\n      38: -1,\n      39: 1,\n      40: 1\n    };\n  \n    // Bind listeners\n    for (var i = 0; i < tabs.length; ++i) {\n      addListeners(i);\n    };\n  \n    function addListeners (index) {\n      tabs[index].addEventListener('click', clickEventListener);\n      tabs[index].addEventListener('keydown', keydownEventListener);\n      tabs[index].addEventListener('keyup', keyupEventListener);\n  \n      // Build an array with all tabs (<button>s) in it\n      tabs[index].index = index;\n    };\n  \n    // When a tab is clicked, activateTab is fired to activate it\n    function clickEventListener (event) {\n      var tab = event.target;\n      activateTab(tab, false);\n    };\n  \n    // Handle keydown on tabs\n    function keydownEventListener (event) {\n      var key = event.keyCode;\n  \n      switch (key) {\n        case keys.end:\n          event.preventDefault();\n          // Activate last tab\n          focusLastTab();\n          break;\n        case keys.home:\n          event.preventDefault();\n          // Activate first tab\n          focusFirstTab();\n          break;\n  \n        // Up and down are in keydown\n        // because we need to prevent page scroll >:)\n        case keys.up:\n        case keys.down:\n          determineOrientation(event);\n          break;\n      };\n    };\n  \n    // Handle keyup on tabs\n    function keyupEventListener (event) {\n      var key = event.keyCode;\n  \n      switch (key) {\n        case keys.left:\n        case keys.right:\n          determineOrientation(event);\n          break;\n        case keys.delete:\n          determineDeletable(event);\n          break;\n        case keys.enter:\n        case keys.space:\n          activateTab(event.target);\n          break;\n      };\n    };\n  \n    // When a tablistâ€™s aria-orientation is set to vertical,\n    // only up and down arrow should function.\n    // In all other cases only left and right arrow function.\n    function determineOrientation (event) {\n      var key = event.keyCode;\n      var vertical = tablist.getAttribute('aria-orientation') == 'vertical';\n      var proceed = false;\n  \n      if (vertical) {\n        if (key === keys.up || key === keys.down) {\n          event.preventDefault();\n          proceed = true;\n        };\n      }\n      else {\n        if (key === keys.left || key === keys.right) {\n          proceed = true;\n        };\n      };\n  \n      if (proceed) {\n        switchTabOnArrowPress(event);\n      };\n    };\n  \n    // Either focus the next, previous, first, or last tab\n    // depening on key pressed\n    function switchTabOnArrowPress (event) {\n      var pressed = event.keyCode;\n  \n      if (direction[pressed]) {\n        var target = event.target;\n        if (target.index !== undefined) {\n          if (tabs[target.index + direction[pressed]]) {\n            tabs[target.index + direction[pressed]].focus();\n          }\n          else if (pressed === keys.left || pressed === keys.up) {\n            focusLastTab();\n          }\n          else if (pressed === keys.right || pressed == keys.down) {\n            focusFirstTab();\n          };\n        };\n      };\n    };\n  \n    // Activates any given tab panel\n    function activateTab (tab, setFocus) {\n      setFocus = setFocus || true;\n      // Deactivate all other tabs\n      deactivateTabs();\n  \n      // Remove tabindex attribute\n      tab.removeAttribute('tabindex');\n  \n      // Set the tab as selected\n      if (tab.tagName == 'SPAN') {\n        tab = tab.parentElement;\n      } \n\n      tab.setAttribute('aria-selected', 'true');\n\n      // Get the value of aria-controls (which is an ID)\n      var controls = tab.getAttribute('aria-controls');\n  \n      // Remove hidden attribute from tab panel to make it visible\n      document.getElementById(controls).removeAttribute('hidden');\n\n      // Set focus when required\n      if (setFocus) {\n        tab.focus();\n      };\n    };\n  \n    // Deactivate all tabs and tab panels\n    function deactivateTabs () {\n      for (var t = 0; t < tabs.length; t++) {\n        tabs[t].setAttribute('tabindex', '-1');\n        tabs[t].setAttribute('aria-selected', 'false');\n      };\n  \n      for (var p = 0; p < panels.length; p++) {\n        panels[p].setAttribute('hidden', 'hidden');\n      };\n    };\n  \n    // Make a guess\n    function focusFirstTab () {\n      tabs[0].focus();\n    };\n  \n    // Make a guess\n    function focusLastTab () {\n      tabs[tabs.length - 1].focus();\n    };\n  \n    // Detect if a tab is deletable\n    function determineDeletable (event) {\n      target = event.target;\n  \n      if (target.getAttribute('data-deletable') !== null) {\n        // Delete target tab\n        deleteTab(event, target);\n  \n        // Update arrays related to tabs widget\n        generateArrays();\n  \n        // Activate the closest tab to the one that was just deleted\n        if (target.index - 1 < 0) {\n          activateTab(tabs[0]);\n        }\n        else {\n          activateTab(tabs[target.index - 1]);\n        };\n      };\n    };\n  \n    // Deletes a tab and its panel\n    function deleteTab (event) {\n      var target = event.target;\n      var panel = generator.getElementById(target.getAttribute('aria-controls'));\n  \n      target.parentElement.removeChild(target);\n      panel.parentElement.removeChild(panel);\n    };\n  \n    // Determine whether there should be a delay\n    // when user navigates with the arrow keys\n    function determineDelay () {\n      var hasDelay = tablist.hasAttribute('data-delay');\n      var delay = 0;\n  \n      if (hasDelay) {\n        var delayValue = tablist.getAttribute('data-delay');\n        if (delayValue) {\n          delay = delayValue;\n        }\n        else {\n          // If no value is specified, default to 300ms\n          delay = 300;\n        };\n      };\n  \n      return delay;\n    };\n  } catch(err) {\n    return\n  }\n  }());","var x, i, j, selElmnt, a, b, c;\n/*look for any elements with the class \"custom-select\":*/\nx = document.getElementsByClassName(\"custom-select\");\nfor (i = 0; i < x.length; i++) {\n  selElmnt = x[i].getElementsByTagName(\"select\")[0];\n  /*for each element, create a new DIV that will act as the selected item:*/\n  a = document.createElement(\"DIV\");\n  a.setAttribute(\"class\", \"select-selected\");\n    try {\n        if (selElmnt.options[selElmnt.selectedIndex].getAttribute('class').includes(\"dot\")) {\n            a.innerHTML = '<span class=\"' + selElmnt.options[selElmnt.selectedIndex].getAttribute('class') + '\"></span>' + selElmnt.options[selElmnt.selectedIndex].innerHTML;\n            a.classList.add('small-padding');\n        }  else if (selElmnt.options[selElmnt.selectedIndex].getAttribute('class').includes(\"background\"))  {\n            a.innerHTML = '<span class=\"' + selElmnt.options[selElmnt.selectedIndex].getAttribute('class') + '\">' + selElmnt.options[selElmnt.selectedIndex].innerHTML + '<div class=\"circle\"></div></span>';\n        }\n        else {\n            a.innerHTML = selElmnt.options[selElmnt.selectedIndex].innerHTML;\n        }\n    }\n    catch(err) {\n        a.innerHTML = selElmnt.options[selElmnt.selectedIndex].innerHTML;\n    }\n  \n  x[i].appendChild(a);\n  /*for each element, create a new DIV that will contain the option list:*/\n  b = document.createElement(\"DIV\");\n\n  try {\n    if (selElmnt.options[selElmnt.selectedIndex].getAttribute('class').includes(\"background\")) {\n        b.setAttribute(\"class\", \"select-items select-backgrounds select-hide\");\n    } else {\n        b.setAttribute(\"class\", \"select-items select-hide\");\n    }\n  }\n  catch(err) {\n    b.setAttribute(\"class\", \"select-items select-hide\");\n  }\n  \n  \n  for (j = 0; j < selElmnt.length; j++) {\n    /*for each option in the original select element,\n    create a new DIV that will act as an option item:*/\n    c = document.createElement(\"DIV\");\n\n    if(j == 0) {\n      c.setAttribute(\"class\", \"same-as-selected\");\n    }\n\n    try {\n        if (selElmnt.options[j].getAttribute('class').includes(\"dot\")) {\n            c.innerHTML = '<span class=\"' + selElmnt.options[j].getAttribute('class') + '\"></span>' + selElmnt.options[j].innerHTML;\n        } else if (selElmnt.options[j].getAttribute('class').includes(\"background\")) {\n            c.innerHTML = '<span class=\"' + selElmnt.options[j].getAttribute('class') + '\">' + selElmnt.options[j].innerHTML + '<div class=\"circle\"></div></span>';\n        } else {\n            c.innerHTML = selElmnt.options[j].innerHTML;\n        }\n    }\n    catch(err) {\n        c.innerHTML = selElmnt.options[j].innerHTML;\n    }\n    \n    c.addEventListener(\"click\", function(e) {\n        /*when an item is clicked, update the original select box,\n        and the selected item:*/\n        var y, i, k, s, h, condition;\n        s = this.parentNode.parentNode.getElementsByTagName(\"select\")[0];\n        var select_id = s.getAttribute('id');\n        h = this.parentNode.previousSibling;\n        for (i = 0; i < s.length; i++) {\n            try {\n                if (s.options[i].getAttribute('class').includes(\"dot\")) {\n                    condition = '<span class=\"' + s.options[i].getAttribute('class') + '\"></span>' + s.options[i].innerHTML;\n                } else if (s.options[i].getAttribute('class').includes(\"background\")) {\n                    condition = '<span class=\"' + s.options[i].getAttribute('class') + '\">' + s.options[i].innerHTML + '<div class=\"circle\"></div></span>';\n                } else {\n                    condition = s.options[i].innerHTML;\n                }\n            }\n            catch(err) {\n                condition = s.options[i].innerHTML;\n            }\n\n            if (condition == this.innerHTML) {\n                s.value = i + 1;\n                var event = new Event('change');\n                s.dispatchEvent(event);\n                h.innerHTML = this.innerHTML;\n                y = this.parentNode.getElementsByClassName(\"same-as-selected\");\n                for (k = 0; k < y.length; k++) {\n                    y[k].classList.remove(\"same-as-selected\");\n                }\n                this.classList.add(\"same-as-selected\");\n                break;\n            }\n        }\n\n        h.click();\n    });\n    b.appendChild(c);\n  }\n  x[i].appendChild(b);\n  a.addEventListener(\"click\", function(e) {\n      /*when the select box is clicked, close any other select boxes,\n      and open/close the current select box:*/\n      e.stopPropagation();\n      closeAllSelect(this);\n      this.nextSibling.classList.toggle(\"select-hide\");\n      this.classList.toggle(\"select-arrow-active\");\n    });\n}\nfunction closeAllSelect(elmnt) {\n  /*a function that will close all select boxes in the document,\n  except the current select box:*/\n  var x, y, i, arrNo = [];\n  x = document.getElementsByClassName(\"select-items\");\n  y = document.getElementsByClassName(\"select-selected\");\n  for (i = 0; i < y.length; i++) {\n    if (elmnt == y[i]) {\n      arrNo.push(i)\n    } else {\n      y[i].classList.remove(\"select-arrow-active\");\n    }\n  }\n  for (i = 0; i < x.length; i++) {\n    if (arrNo.indexOf(i)) {\n      x[i].classList.add(\"select-hide\");\n    }\n  }\n}\n/*if the user clicks anywhere outside the select box,\nthen close all select boxes:*/\ndocument.addEventListener(\"click\", closeAllSelect);","export default () => {\n  const ua = window.navigator.userAgent;\n  const msie = ua.indexOf('MSIE ');\n\n  return msie > 0 || !!navigator.userAgent.match(/Trident.*rv:11\\./);\n};\n","import isMsie from '../vendor/isMsie';\n\nconst focusWithoutScrolling = function (obj = this) {\n  const x = window.scrollX;\n  const y = window.scrollY;\n\n  if (!isMsie) {\n    obj.focus();\n    window.scrollTo(x, y);\n  }\n\n  return obj;\n};\n\n$.fn.focusWithoutScrolling = focusWithoutScrolling;\n\nexport default focusWithoutScrolling;\n","window.addEventListener('load', function (event) {\n  $('form input').on('invalid', function () {\n    const first = $(this.form).find(':invalid')[0];\n    smoothScrollIntoView(first);\n  });\n});\n\nfunction smoothScrollIntoView (element, marginTop = 15) {\n  const stickyHeader = document.getElementsByClassName('site-header')[0];\n  const cmsToolbar = document.getElementsByClassName('cms-toolbar')[0];\n  const headerOffset = getOuterHeight(stickyHeader) + getOuterHeight(cmsToolbar) + marginTop || 0;\n  const targetElementTop = element.getBoundingClientRect().top;\n  const offsetPosition = targetElementTop + window.scrollY - headerOffset;\n\n  const pageOffset = window.pageYOffset - headerOffset;\n  const pageelementOffset = $(element).offset().top - headerOffset;\n  // don't scroll if the element is already in view\n  if (pageelementOffset > pageOffset && pageelementOffset < pageOffset + window.innerHeight) {\n    return true;\n  }\n\n  window.scrollTo({top: offsetPosition});\n}\n\nfunction getOuterHeight (el) {\n  el = (typeof el === 'string') ? document.querySelector(el) : el;\n  if (!el) {\n    return 0;\n  }\n  const styles = window.getComputedStyle(el);\n  const margin = parseFloat(styles['marginTop']) +\n    parseFloat(styles['marginBottom']);\n  return Math.ceil(el.offsetHeight + margin);\n}\n","/**\n * Swiper 4.5.1\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: September 13, 2019\n */\n\n(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    (global = global || self, global.Swiper = factory());\n  }(this, function () { 'use strict';\n  \n    /**\n     * SSR Window 1.0.1\n     * Better handling for window object in SSR environment\n     * https://github.com/nolimits4web/ssr-window\n     *\n     * Copyright 2018, Vladimir Kharlampidi\n     *\n     * Licensed under MIT\n     *\n     * Released on: July 18, 2018\n     */\n\n    var doc = (typeof document === 'undefined') ? {\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: { hash: '' },\n    } : document; // eslint-disable-line\n  \n    var win = (typeof window === 'undefined') ? {\n      document: doc,\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; // eslint-disable-line\n  \n    /**\n     * Dom7 2.1.3\n     * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n     * http://framework7.io/docs/dom.html\n     *\n     * Copyright 2019, Vladimir Kharlampidi\n     * The iDangero.us\n     * http://www.idangero.us/\n     *\n     * Licensed under MIT\n     *\n     * Released on: February 11, 2019\n     */\n  \n    var Dom7 = function Dom7(arr) {\n      var self = this;\n      // Create array-like object\n      for (var i = 0; i < arr.length; i += 1) {\n        self[i] = arr[i];\n      }\n      self.length = arr.length;\n      // Return collection with methods\n      return this;\n    };\n  \n    function $(selector, context) {\n      var arr = [];\n      var i = 0;\n      if (selector && !context) {\n        if (selector instanceof Dom7) {\n          return selector;\n        }\n      }\n      if (selector) {\n          // String\n        if (typeof selector === 'string') {\n          var els;\n          var tempParent;\n          var html = selector.trim();\n          if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n            var toCreate = 'div';\n            if (html.indexOf('<li') === 0) { toCreate = 'ul'; }\n            if (html.indexOf('<tr') === 0) { toCreate = 'tbody'; }\n            if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) { toCreate = 'tr'; }\n            if (html.indexOf('<tbody') === 0) { toCreate = 'table'; }\n            if (html.indexOf('<option') === 0) { toCreate = 'select'; }\n            tempParent = doc.createElement(toCreate);\n            tempParent.innerHTML = html;\n            for (i = 0; i < tempParent.childNodes.length; i += 1) {\n              arr.push(tempParent.childNodes[i]);\n            }\n          } else {\n            if (!context && selector[0] === '#' && !selector.match(/[ .<>:~]/)) {\n              // Pure ID selector\n              els = [doc.getElementById(selector.trim().split('#')[1])];\n            } else {\n              // Other selectors\n              els = (context || doc).querySelectorAll(selector.trim());\n            }\n            for (i = 0; i < els.length; i += 1) {\n              if (els[i]) { arr.push(els[i]); }\n            }\n          }\n        } else if (selector.nodeType || selector === win || selector === doc) {\n          // Node/element\n          arr.push(selector);\n        } else if (selector.length > 0 && selector[0].nodeType) {\n          // Array of elements or instance of Dom\n          for (i = 0; i < selector.length; i += 1) {\n            arr.push(selector[i]);\n          }\n        }\n      }\n      return new Dom7(arr);\n    }\n  \n    $.fn = Dom7.prototype;\n    $.Class = Dom7;\n    $.Dom7 = Dom7;\n  \n    function unique(arr) {\n      var uniqueArray = [];\n      for (var i = 0; i < arr.length; i += 1) {\n        if (uniqueArray.indexOf(arr[i]) === -1) { uniqueArray.push(arr[i]); }\n      }\n      return uniqueArray;\n    }\n  \n    // Classes and attributes\n    function addClass(className) {\n      if (typeof className === 'undefined') {\n        return this;\n      }\n      var classes = className.split(' ');\n      for (var i = 0; i < classes.length; i += 1) {\n        for (var j = 0; j < this.length; j += 1) {\n          if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') { this[j].classList.add(classes[i]); }\n        }\n      }\n      return this;\n    }\n    function removeClass(className) {\n      var classes = className.split(' ');\n      for (var i = 0; i < classes.length; i += 1) {\n        for (var j = 0; j < this.length; j += 1) {\n          if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') { this[j].classList.remove(classes[i]); }\n        }\n      }\n      return this;\n    }\n    function hasClass(className) {\n      if (!this[0]) { return false; }\n      return this[0].classList.contains(className);\n    }\n    function toggleClass(className) {\n      var classes = className.split(' ');\n      for (var i = 0; i < classes.length; i += 1) {\n        for (var j = 0; j < this.length; j += 1) {\n          if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') { this[j].classList.toggle(classes[i]); }\n        }\n      }\n      return this;\n    }\n    function attr(attrs, value) {\n      var arguments$1 = arguments;\n  \n      if (arguments.length === 1 && typeof attrs === 'string') {\n        // Get attr\n        if (this[0]) { return this[0].getAttribute(attrs); }\n        return undefined;\n      }\n  \n      // Set attrs\n      for (var i = 0; i < this.length; i += 1) {\n        if (arguments$1.length === 2) {\n          // String\n          this[i].setAttribute(attrs, value);\n        } else {\n          // Object\n          // eslint-disable-next-line\n          for (var attrName in attrs) {\n            this[i][attrName] = attrs[attrName];\n            this[i].setAttribute(attrName, attrs[attrName]);\n          }\n        }\n      }\n      return this;\n    }\n    // eslint-disable-next-line\n    function removeAttr(attr) {\n      for (var i = 0; i < this.length; i += 1) {\n        this[i].removeAttribute(attr);\n      }\n      return this;\n    }\n    function data(key, value) {\n      var el;\n      if (typeof value === 'undefined') {\n        el = this[0];\n        // Get value\n        if (el) {\n          if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) {\n            return el.dom7ElementDataStorage[key];\n          }\n  \n          var dataKey = el.getAttribute((\"data-\" + key));\n          if (dataKey) {\n            return dataKey;\n          }\n          return undefined;\n        }\n        return undefined;\n      }\n  \n      // Set value\n      for (var i = 0; i < this.length; i += 1) {\n        el = this[i];\n        if (!el.dom7ElementDataStorage) { el.dom7ElementDataStorage = {}; }\n        el.dom7ElementDataStorage[key] = value;\n      }\n      return this;\n    }\n    // Transforms\n    // eslint-disable-next-line\n    function transform(transform) {\n      for (var i = 0; i < this.length; i += 1) {\n        var elStyle = this[i].style;\n        elStyle.webkitTransform = transform;\n        elStyle.transform = transform;\n      }\n      return this;\n    }\n    function transition(duration) {\n      if (typeof duration !== 'string') {\n        duration = duration + \"ms\"; // eslint-disable-line\n      }\n      for (var i = 0; i < this.length; i += 1) {\n        var elStyle = this[i].style;\n        elStyle.webkitTransitionDuration = duration;\n        elStyle.transitionDuration = duration;\n      }\n      return this;\n    }\n    // Events\n    function on() {\n      var assign;\n  \n      var args = [], len = arguments.length;\n      while ( len-- ) args[ len ] = arguments[ len ];\n      var eventType = args[0];\n      var targetSelector = args[1];\n      var listener = args[2];\n      var capture = args[3];\n      if (typeof args[1] === 'function') {\n        (assign = args, eventType = assign[0], listener = assign[1], capture = assign[2]);\n        targetSelector = undefined;\n      }\n      if (!capture) { capture = false; }\n  \n      function handleLiveEvent(e) {\n        var target = e.target;\n        if (!target) { return; }\n        var eventData = e.target.dom7EventData || [];\n        if (eventData.indexOf(e) < 0) {\n          eventData.unshift(e);\n        }\n        if ($(target).is(targetSelector)) { listener.apply(target, eventData); }\n        else {\n          var parents = $(target).parents(); // eslint-disable-line\n          for (var k = 0; k < parents.length; k += 1) {\n            if ($(parents[k]).is(targetSelector)) { listener.apply(parents[k], eventData); }\n          }\n        }\n      }\n      function handleEvent(e) {\n        var eventData = e && e.target ? e.target.dom7EventData || [] : [];\n        if (eventData.indexOf(e) < 0) {\n          eventData.unshift(e);\n        }\n        listener.apply(this, eventData);\n      }\n      var events = eventType.split(' ');\n      var j;\n      for (var i = 0; i < this.length; i += 1) {\n        var el = this[i];\n        if (!targetSelector) {\n          for (j = 0; j < events.length; j += 1) {\n            var event = events[j];\n            if (!el.dom7Listeners) { el.dom7Listeners = {}; }\n            if (!el.dom7Listeners[event]) { el.dom7Listeners[event] = []; }\n            el.dom7Listeners[event].push({\n              listener: listener,\n              proxyListener: handleEvent,\n            });\n            el.addEventListener(event, handleEvent, capture);\n          }\n        } else {\n          // Live events\n          for (j = 0; j < events.length; j += 1) {\n            var event$1 = events[j];\n            if (!el.dom7LiveListeners) { el.dom7LiveListeners = {}; }\n            if (!el.dom7LiveListeners[event$1]) { el.dom7LiveListeners[event$1] = []; }\n            el.dom7LiveListeners[event$1].push({\n              listener: listener,\n              proxyListener: handleLiveEvent,\n            });\n            el.addEventListener(event$1, handleLiveEvent, capture);\n          }\n        }\n      }\n      return this;\n    }\n    function off() {\n      var assign;\n  \n      var args = [], len = arguments.length;\n      while ( len-- ) args[ len ] = arguments[ len ];\n      var eventType = args[0];\n      var targetSelector = args[1];\n      var listener = args[2];\n      var capture = args[3];\n      if (typeof args[1] === 'function') {\n        (assign = args, eventType = assign[0], listener = assign[1], capture = assign[2]);\n        targetSelector = undefined;\n      }\n      if (!capture) { capture = false; }\n  \n      var events = eventType.split(' ');\n      for (var i = 0; i < events.length; i += 1) {\n        var event = events[i];\n        for (var j = 0; j < this.length; j += 1) {\n          var el = this[j];\n          var handlers = (void 0);\n          if (!targetSelector && el.dom7Listeners) {\n            handlers = el.dom7Listeners[event];\n          } else if (targetSelector && el.dom7LiveListeners) {\n            handlers = el.dom7LiveListeners[event];\n          }\n          if (handlers && handlers.length) {\n            for (var k = handlers.length - 1; k >= 0; k -= 1) {\n              var handler = handlers[k];\n              if (listener && handler.listener === listener) {\n                el.removeEventListener(event, handler.proxyListener, capture);\n                handlers.splice(k, 1);\n              } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n                el.removeEventListener(event, handler.proxyListener, capture);\n                handlers.splice(k, 1);\n              } else if (!listener) {\n                el.removeEventListener(event, handler.proxyListener, capture);\n                handlers.splice(k, 1);\n              }\n            }\n          }\n        }\n      }\n      return this;\n    }\n    function trigger() {\n      var args = [], len = arguments.length;\n      while ( len-- ) args[ len ] = arguments[ len ];\n  \n      var events = args[0].split(' ');\n      var eventData = args[1];\n      for (var i = 0; i < events.length; i += 1) {\n        var event = events[i];\n        for (var j = 0; j < this.length; j += 1) {\n          var el = this[j];\n          var evt = (void 0);\n          try {\n            evt = new win.CustomEvent(event, {\n              detail: eventData,\n              bubbles: true,\n              cancelable: true,\n            });\n          } catch (e) {\n            evt = doc.createEvent('Event');\n            evt.initEvent(event, true, true);\n            evt.detail = eventData;\n          }\n          // eslint-disable-next-line\n          el.dom7EventData = args.filter(function (data, dataIndex) { return dataIndex > 0; });\n          el.dispatchEvent(evt);\n          el.dom7EventData = [];\n          delete el.dom7EventData;\n        }\n      }\n      return this;\n    }\n    function transitionEnd(callback) {\n      var events = ['webkitTransitionEnd', 'transitionend'];\n      var dom = this;\n      var i;\n      function fireCallBack(e) {\n        /* jshint validthis:true */\n        if (e.target !== this) { return; }\n        callback.call(this, e);\n        for (i = 0; i < events.length; i += 1) {\n          dom.off(events[i], fireCallBack);\n        }\n      }\n      if (callback) {\n        for (i = 0; i < events.length; i += 1) {\n          dom.on(events[i], fireCallBack);\n        }\n      }\n      return this;\n    }\n    function outerWidth(includeMargins) {\n      if (this.length > 0) {\n        if (includeMargins) {\n          // eslint-disable-next-line\n          var styles = this.styles();\n          return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n        }\n        return this[0].offsetWidth;\n      }\n      return null;\n    }\n    function outerHeight(includeMargins) {\n      if (this.length > 0) {\n        if (includeMargins) {\n          // eslint-disable-next-line\n          var styles = this.styles();\n          return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n        }\n        return this[0].offsetHeight;\n      }\n      return null;\n    }\n    function offset() {\n      if (this.length > 0) {\n        var el = this[0];\n        var box = el.getBoundingClientRect();\n        var body = doc.body;\n        var clientTop = el.clientTop || body.clientTop || 0;\n        var clientLeft = el.clientLeft || body.clientLeft || 0;\n        var scrollTop = el === win ? win.scrollY : el.scrollTop;\n        var scrollLeft = el === win ? win.scrollX : el.scrollLeft;\n        return {\n          top: (box.top + scrollTop) - clientTop,\n          left: (box.left + scrollLeft) - clientLeft,\n        };\n      }\n  \n      return null;\n    }\n    function styles() {\n      if (this[0]) { return win.getComputedStyle(this[0], null); }\n      return {};\n    }\n    function css(props, value) {\n      var i;\n      if (arguments.length === 1) {\n        if (typeof props === 'string') {\n          if (this[0]) { return win.getComputedStyle(this[0], null).getPropertyValue(props); }\n        } else {\n          for (i = 0; i < this.length; i += 1) {\n            // eslint-disable-next-line\n            for (var prop in props) {\n              this[i].style[prop] = props[prop];\n            }\n          }\n          return this;\n        }\n      }\n      if (arguments.length === 2 && typeof props === 'string') {\n        for (i = 0; i < this.length; i += 1) {\n          this[i].style[props] = value;\n        }\n        return this;\n      }\n      return this;\n    }\n    // Iterate over the collection passing elements to `callback`\n    function each(callback) {\n      // Don't bother continuing without a callback\n      if (!callback) { return this; }\n      // Iterate over the current collection\n      for (var i = 0; i < this.length; i += 1) {\n        // If the callback returns false\n        if (callback.call(this[i], i, this[i]) === false) {\n          // End the loop early\n          return this;\n        }\n      }\n      // Return `this` to allow chained DOM operations\n      return this;\n    }\n    // eslint-disable-next-line\n    function html(html) {\n      if (typeof html === 'undefined') {\n        return this[0] ? this[0].innerHTML : undefined;\n      }\n  \n      for (var i = 0; i < this.length; i += 1) {\n        this[i].innerHTML = html;\n      }\n      return this;\n    }\n    // eslint-disable-next-line\n    function text(text) {\n      if (typeof text === 'undefined') {\n        if (this[0]) {\n          return this[0].textContent.trim();\n        }\n        return null;\n      }\n  \n      for (var i = 0; i < this.length; i += 1) {\n        this[i].textContent = text;\n      }\n      return this;\n    }\n    function is(selector) {\n      var el = this[0];\n      var compareWith;\n      var i;\n      if (!el || typeof selector === 'undefined') { return false; }\n      if (typeof selector === 'string') {\n        if (el.matches) { return el.matches(selector); }\n        else if (el.webkitMatchesSelector) { return el.webkitMatchesSelector(selector); }\n        else if (el.msMatchesSelector) { return el.msMatchesSelector(selector); }\n  \n        compareWith = $(selector);\n        for (i = 0; i < compareWith.length; i += 1) {\n          if (compareWith[i] === el) { return true; }\n        }\n        return false;\n      } else if (selector === doc) { return el === doc; }\n      else if (selector === win) { return el === win; }\n  \n      if (selector.nodeType || selector instanceof Dom7) {\n        compareWith = selector.nodeType ? [selector] : selector;\n        for (i = 0; i < compareWith.length; i += 1) {\n          if (compareWith[i] === el) { return true; }\n        }\n        return false;\n      }\n      return false;\n    }\n    function index() {\n      var child = this[0];\n      var i;\n      if (child) {\n        i = 0;\n        // eslint-disable-next-line\n        while ((child = child.previousSibling) !== null) {\n          if (child.nodeType === 1) { i += 1; }\n        }\n        return i;\n      }\n      return undefined;\n    }\n    // eslint-disable-next-line\n    function eq(index) {\n      if (typeof index === 'undefined') { return this; }\n      var length = this.length;\n      var returnIndex;\n      if (index > length - 1) {\n        return new Dom7([]);\n      }\n      if (index < 0) {\n        returnIndex = length + index;\n        if (returnIndex < 0) { return new Dom7([]); }\n        return new Dom7([this[returnIndex]]);\n      }\n      return new Dom7([this[index]]);\n    }\n    function append() {\n      var args = [], len = arguments.length;\n      while ( len-- ) args[ len ] = arguments[ len ];\n  \n      var newChild;\n  \n      for (var k = 0; k < args.length; k += 1) {\n        newChild = args[k];\n        for (var i = 0; i < this.length; i += 1) {\n          if (typeof newChild === 'string') {\n            var tempDiv = doc.createElement('div');\n            tempDiv.innerHTML = newChild;\n            while (tempDiv.firstChild) {\n              this[i].appendChild(tempDiv.firstChild);\n            }\n          } else if (newChild instanceof Dom7) {\n            for (var j = 0; j < newChild.length; j += 1) {\n              this[i].appendChild(newChild[j]);\n            }\n          } else {\n            this[i].appendChild(newChild);\n          }\n        }\n      }\n  \n      return this;\n    }\n    function prepend(newChild) {\n      var i;\n      var j;\n      for (i = 0; i < this.length; i += 1) {\n        if (typeof newChild === 'string') {\n          var tempDiv = doc.createElement('div');\n          tempDiv.innerHTML = newChild;\n          for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n            this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n          }\n        } else if (newChild instanceof Dom7) {\n          for (j = 0; j < newChild.length; j += 1) {\n            this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n          }\n        } else {\n          this[i].insertBefore(newChild, this[i].childNodes[0]);\n        }\n      }\n      return this;\n    }\n    function next(selector) {\n      if (this.length > 0) {\n        if (selector) {\n          if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n            return new Dom7([this[0].nextElementSibling]);\n          }\n          return new Dom7([]);\n        }\n  \n        if (this[0].nextElementSibling) { return new Dom7([this[0].nextElementSibling]); }\n        return new Dom7([]);\n      }\n      return new Dom7([]);\n    }\n    function nextAll(selector) {\n      var nextEls = [];\n      var el = this[0];\n      if (!el) { return new Dom7([]); }\n      while (el.nextElementSibling) {\n        var next = el.nextElementSibling; // eslint-disable-line\n        if (selector) {\n          if ($(next).is(selector)) { nextEls.push(next); }\n        } else { nextEls.push(next); }\n        el = next;\n      }\n      return new Dom7(nextEls);\n    }\n    function prev(selector) {\n      if (this.length > 0) {\n        var el = this[0];\n        if (selector) {\n          if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n            return new Dom7([el.previousElementSibling]);\n          }\n          return new Dom7([]);\n        }\n  \n        if (el.previousElementSibling) { return new Dom7([el.previousElementSibling]); }\n        return new Dom7([]);\n      }\n      return new Dom7([]);\n    }\n    function prevAll(selector) {\n      var prevEls = [];\n      var el = this[0];\n      if (!el) { return new Dom7([]); }\n      while (el.previousElementSibling) {\n        var prev = el.previousElementSibling; // eslint-disable-line\n        if (selector) {\n          if ($(prev).is(selector)) { prevEls.push(prev); }\n        } else { prevEls.push(prev); }\n        el = prev;\n      }\n      return new Dom7(prevEls);\n    }\n    function parent(selector) {\n      var parents = []; // eslint-disable-line\n      for (var i = 0; i < this.length; i += 1) {\n        if (this[i].parentNode !== null) {\n          if (selector) {\n            if ($(this[i].parentNode).is(selector)) { parents.push(this[i].parentNode); }\n          } else {\n            parents.push(this[i].parentNode);\n          }\n        }\n      }\n      return $(unique(parents));\n    }\n    function parents(selector) {\n      var parents = []; // eslint-disable-line\n      for (var i = 0; i < this.length; i += 1) {\n        var parent = this[i].parentNode; // eslint-disable-line\n        while (parent) {\n          if (selector) {\n            if ($(parent).is(selector)) { parents.push(parent); }\n          } else {\n            parents.push(parent);\n          }\n          parent = parent.parentNode;\n        }\n      }\n      return $(unique(parents));\n    }\n    function closest(selector) {\n      var closest = this; // eslint-disable-line\n      if (typeof selector === 'undefined') {\n        return new Dom7([]);\n      }\n      if (!closest.is(selector)) {\n        closest = closest.parents(selector).eq(0);\n      }\n      return closest;\n    }\n    function find(selector) {\n      var foundElements = [];\n      for (var i = 0; i < this.length; i += 1) {\n        var found = this[i].querySelectorAll(selector);\n        for (var j = 0; j < found.length; j += 1) {\n          foundElements.push(found[j]);\n        }\n      }\n      return new Dom7(foundElements);\n    }\n    function children(selector) {\n      var children = []; // eslint-disable-line\n      for (var i = 0; i < this.length; i += 1) {\n        var childNodes = this[i].childNodes;\n  \n        for (var j = 0; j < childNodes.length; j += 1) {\n          if (!selector) {\n            if (childNodes[j].nodeType === 1) { children.push(childNodes[j]); }\n          } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) {\n            children.push(childNodes[j]);\n          }\n        }\n      }\n      return new Dom7(unique(children));\n    }\n    function remove() {\n      for (var i = 0; i < this.length; i += 1) {\n        if (this[i].parentNode) { this[i].parentNode.removeChild(this[i]); }\n      }\n      return this;\n    }\n    function add() {\n      var args = [], len = arguments.length;\n      while ( len-- ) args[ len ] = arguments[ len ];\n  \n      var dom = this;\n      var i;\n      var j;\n      for (i = 0; i < args.length; i += 1) {\n        var toAdd = $(args[i]);\n        for (j = 0; j < toAdd.length; j += 1) {\n          dom[dom.length] = toAdd[j];\n          dom.length += 1;\n        }\n      }\n      return dom;\n    }\n  \n    var Methods = {\n      addClass: addClass,\n      removeClass: removeClass,\n      hasClass: hasClass,\n      toggleClass: toggleClass,\n      attr: attr,\n      removeAttr: removeAttr,\n      data: data,\n      transform: transform,\n      transition: transition,\n      on: on,\n      off: off,\n      trigger: trigger,\n      transitionEnd: transitionEnd,\n      outerWidth: outerWidth,\n      outerHeight: outerHeight,\n      offset: offset,\n      css: css,\n      each: each,\n      html: html,\n      text: text,\n      is: is,\n      index: index,\n      eq: eq,\n      append: append,\n      prepend: prepend,\n      next: next,\n      nextAll: nextAll,\n      prev: prev,\n      prevAll: prevAll,\n      parent: parent,\n      parents: parents,\n      closest: closest,\n      find: find,\n      children: children,\n      remove: remove,\n      add: add,\n      styles: styles,\n    };\n  \n    Object.keys(Methods).forEach(function (methodName) {\n      $.fn[methodName] = $.fn[methodName] || Methods[methodName];\n    });\n  \n    var Utils = {\n      deleteProps: function deleteProps(obj) {\n        var object = obj;\n        Object.keys(object).forEach(function (key) {\n          try {\n            object[key] = null;\n          } catch (e) {\n            // no getter for object\n          }\n          try {\n            delete object[key];\n          } catch (e) {\n            // something got wrong\n          }\n        });\n      },\n      nextTick: function nextTick(callback, delay) {\n        if ( delay === void 0 ) delay = 0;\n  \n        return setTimeout(callback, delay);\n      },\n      now: function now() {\n        return Date.now();\n      },\n      getTranslate: function getTranslate(el, axis) {\n        if ( axis === void 0 ) axis = 'x';\n  \n        var matrix;\n        var curTransform;\n        var transformMatrix;\n  \n        var curStyle = win.getComputedStyle(el, null);\n  \n        if (win.WebKitCSSMatrix) {\n          curTransform = curStyle.transform || curStyle.webkitTransform;\n          if (curTransform.split(',').length > 6) {\n            curTransform = curTransform.split(', ').map(function (a) { return a.replace(',', '.'); }).join(', ');\n          }\n          // Some old versions of Webkit choke when 'none' is passed; pass\n          // empty string instead in this case\n          transformMatrix = new win.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n        } else {\n          transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n          matrix = transformMatrix.toString().split(',');\n        }\n  \n        if (axis === 'x') {\n          // Latest Chrome and webkits Fix\n          if (win.WebKitCSSMatrix) { curTransform = transformMatrix.m41; }\n          // Crazy IE10 Matrix\n          else if (matrix.length === 16) { curTransform = parseFloat(matrix[12]); }\n          // Normal Browsers\n          else { curTransform = parseFloat(matrix[4]); }\n        }\n        if (axis === 'y') {\n          // Latest Chrome and webkits Fix\n          if (win.WebKitCSSMatrix) { curTransform = transformMatrix.m42; }\n          // Crazy IE10 Matrix\n          else if (matrix.length === 16) { curTransform = parseFloat(matrix[13]); }\n          // Normal Browsers\n          else { curTransform = parseFloat(matrix[5]); }\n        }\n        return curTransform || 0;\n      },\n      parseUrlQuery: function parseUrlQuery(url) {\n        var query = {};\n        var urlToParse = url || win.location.href;\n        var i;\n        var params;\n        var param;\n        var length;\n        if (typeof urlToParse === 'string' && urlToParse.length) {\n          urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n          params = urlToParse.split('&').filter(function (paramsPart) { return paramsPart !== ''; });\n          length = params.length;\n  \n          for (i = 0; i < length; i += 1) {\n            param = params[i].replace(/#\\S+/g, '').split('=');\n            query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';\n          }\n        }\n        return query;\n      },\n      isObject: function isObject(o) {\n        return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n      },\n      extend: function extend() {\n        var args = [], len$1 = arguments.length;\n        while ( len$1-- ) args[ len$1 ] = arguments[ len$1 ];\n  \n        var to = Object(args[0]);\n        for (var i = 1; i < args.length; i += 1) {\n          var nextSource = args[i];\n          if (nextSource !== undefined && nextSource !== null) {\n            var keysArray = Object.keys(Object(nextSource));\n            for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n              var nextKey = keysArray[nextIndex];\n              var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n              if (desc !== undefined && desc.enumerable) {\n                if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n                  Utils.extend(to[nextKey], nextSource[nextKey]);\n                } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n                  to[nextKey] = {};\n                  Utils.extend(to[nextKey], nextSource[nextKey]);\n                } else {\n                  to[nextKey] = nextSource[nextKey];\n                }\n              }\n            }\n          }\n        }\n        return to;\n      },\n    };\n  \n    var Support = (function Support() {\n      var testDiv = doc.createElement('div');\n      return {\n        touch: (win.Modernizr && win.Modernizr.touch === true) || (function checkTouch() {\n          return !!((win.navigator.maxTouchPoints > 0) || ('ontouchstart' in win) || (win.DocumentTouch && doc instanceof win.DocumentTouch));\n        }()),\n  \n        pointerEvents: !!(win.navigator.pointerEnabled || win.PointerEvent || ('maxTouchPoints' in win.navigator && win.navigator.maxTouchPoints > 0)),\n        prefixedPointerEvents: !!win.navigator.msPointerEnabled,\n  \n        transition: (function checkTransition() {\n          var style = testDiv.style;\n          return ('transition' in style || 'webkitTransition' in style || 'MozTransition' in style);\n        }()),\n        transforms3d: (win.Modernizr && win.Modernizr.csstransforms3d === true) || (function checkTransforms3d() {\n          var style = testDiv.style;\n          return ('webkitPerspective' in style || 'MozPerspective' in style || 'OPerspective' in style || 'MsPerspective' in style || 'perspective' in style);\n        }()),\n  \n        flexbox: (function checkFlexbox() {\n          var style = testDiv.style;\n          var styles = ('alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient').split(' ');\n          for (var i = 0; i < styles.length; i += 1) {\n            if (styles[i] in style) { return true; }\n          }\n          return false;\n        }()),\n  \n        observer: (function checkObserver() {\n          return ('MutationObserver' in win || 'WebkitMutationObserver' in win);\n        }()),\n  \n        passiveListener: (function checkPassiveListener() {\n          var supportsPassive = false;\n          try {\n            var opts = Object.defineProperty({}, 'passive', {\n              // eslint-disable-next-line\n              get: function get() {\n                supportsPassive = true;\n              },\n            });\n            win.addEventListener('testPassiveListener', null, opts);\n          } catch (e) {\n            // No support\n          }\n          return supportsPassive;\n        }()),\n  \n        gestures: (function checkGestures() {\n          return 'ongesturestart' in win;\n        }()),\n      };\n    }());\n  \n    var Browser = (function Browser() {\n      function isSafari() {\n        var ua = win.navigator.userAgent.toLowerCase();\n        return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n      }\n      return {\n        isIE: !!win.navigator.userAgent.match(/Trident/g) || !!win.navigator.userAgent.match(/MSIE/g),\n        isEdge: !!win.navigator.userAgent.match(/Edge/g),\n        isSafari: isSafari(),\n        isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(win.navigator.userAgent),\n      };\n    }());\n  \n    var SwiperClass = function SwiperClass(params) {\n      if ( params === void 0 ) params = {};\n  \n      var self = this;\n      self.params = params;\n  \n      // Events\n      self.eventsListeners = {};\n  \n      if (self.params && self.params.on) {\n        Object.keys(self.params.on).forEach(function (eventName) {\n          self.on(eventName, self.params.on[eventName]);\n        });\n      }\n    };\n  \n    var staticAccessors = { components: { configurable: true } };\n  \n    SwiperClass.prototype.on = function on (events, handler, priority) {\n      var self = this;\n      if (typeof handler !== 'function') { return self; }\n      var method = priority ? 'unshift' : 'push';\n      events.split(' ').forEach(function (event) {\n        if (!self.eventsListeners[event]) { self.eventsListeners[event] = []; }\n        self.eventsListeners[event][method](handler);\n      });\n      return self;\n    };\n  \n    SwiperClass.prototype.once = function once (events, handler, priority) {\n      var self = this;\n      if (typeof handler !== 'function') { return self; }\n      function onceHandler() {\n          var args = [], len = arguments.length;\n          while ( len-- ) args[ len ] = arguments[ len ];\n  \n        handler.apply(self, args);\n        self.off(events, onceHandler);\n        if (onceHandler.f7proxy) {\n          delete onceHandler.f7proxy;\n        }\n      }\n      onceHandler.f7proxy = handler;\n      return self.on(events, onceHandler, priority);\n    };\n  \n    SwiperClass.prototype.off = function off (events, handler) {\n      var self = this;\n      if (!self.eventsListeners) { return self; }\n      events.split(' ').forEach(function (event) {\n        if (typeof handler === 'undefined') {\n          self.eventsListeners[event] = [];\n        } else if (self.eventsListeners[event] && self.eventsListeners[event].length) {\n          self.eventsListeners[event].forEach(function (eventHandler, index) {\n            if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) {\n              self.eventsListeners[event].splice(index, 1);\n            }\n          });\n        }\n      });\n      return self;\n    };\n  \n    SwiperClass.prototype.emit = function emit () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n  \n      var self = this;\n      if (!self.eventsListeners) { return self; }\n      var events;\n      var data;\n      var context;\n      if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n        events = args[0];\n        data = args.slice(1, args.length);\n        context = self;\n      } else {\n        events = args[0].events;\n        data = args[0].data;\n        context = args[0].context || self;\n      }\n      var eventsArray = Array.isArray(events) ? events : events.split(' ');\n      eventsArray.forEach(function (event) {\n        if (self.eventsListeners && self.eventsListeners[event]) {\n          var handlers = [];\n          self.eventsListeners[event].forEach(function (eventHandler) {\n            handlers.push(eventHandler);\n          });\n          handlers.forEach(function (eventHandler) {\n            eventHandler.apply(context, data);\n          });\n        }\n      });\n      return self;\n    };\n  \n    SwiperClass.prototype.useModulesParams = function useModulesParams (instanceParams) {\n      var instance = this;\n      if (!instance.modules) { return; }\n      Object.keys(instance.modules).forEach(function (moduleName) {\n        var module = instance.modules[moduleName];\n        // Extend params\n        if (module.params) {\n          Utils.extend(instanceParams, module.params);\n        }\n      });\n    };\n  \n    SwiperClass.prototype.useModules = function useModules (modulesParams) {\n        if ( modulesParams === void 0 ) modulesParams = {};\n  \n      var instance = this;\n      if (!instance.modules) { return; }\n      Object.keys(instance.modules).forEach(function (moduleName) {\n        var module = instance.modules[moduleName];\n        var moduleParams = modulesParams[moduleName] || {};\n        // Extend instance methods and props\n        if (module.instance) {\n          Object.keys(module.instance).forEach(function (modulePropName) {\n            var moduleProp = module.instance[modulePropName];\n            if (typeof moduleProp === 'function') {\n              instance[modulePropName] = moduleProp.bind(instance);\n            } else {\n              instance[modulePropName] = moduleProp;\n            }\n          });\n        }\n        // Add event listeners\n        if (module.on && instance.on) {\n          Object.keys(module.on).forEach(function (moduleEventName) {\n            instance.on(moduleEventName, module.on[moduleEventName]);\n          });\n        }\n  \n        // Module create callback\n        if (module.create) {\n          module.create.bind(instance)(moduleParams);\n        }\n      });\n    };\n  \n    staticAccessors.components.set = function (components) {\n      var Class = this;\n      if (!Class.use) { return; }\n      Class.use(components);\n    };\n  \n    SwiperClass.installModule = function installModule (module) {\n        var params = [], len = arguments.length - 1;\n        while ( len-- > 0 ) params[ len ] = arguments[ len + 1 ];\n  \n      var Class = this;\n      if (!Class.prototype.modules) { Class.prototype.modules = {}; }\n      var name = module.name || (((Object.keys(Class.prototype.modules).length) + \"_\" + (Utils.now())));\n      Class.prototype.modules[name] = module;\n      // Prototype\n      if (module.proto) {\n        Object.keys(module.proto).forEach(function (key) {\n          Class.prototype[key] = module.proto[key];\n        });\n      }\n      // Class\n      if (module.static) {\n        Object.keys(module.static).forEach(function (key) {\n          Class[key] = module.static[key];\n        });\n      }\n      // Callback\n      if (module.install) {\n        module.install.apply(Class, params);\n      }\n      return Class;\n    };\n  \n    SwiperClass.use = function use (module) {\n        var params = [], len = arguments.length - 1;\n        while ( len-- > 0 ) params[ len ] = arguments[ len + 1 ];\n  \n      var Class = this;\n      if (Array.isArray(module)) {\n        module.forEach(function (m) { return Class.installModule(m); });\n        return Class;\n      }\n      return Class.installModule.apply(Class, [ module ].concat( params ));\n    };\n  \n    Object.defineProperties( SwiperClass, staticAccessors );\n  \n    function updateSize () {\n      var swiper = this;\n      var width;\n      var height;\n      var $el = swiper.$el;\n      if (typeof swiper.params.width !== 'undefined') {\n        width = swiper.params.width;\n      } else {\n        width = $el[0].clientWidth;\n      }\n      if (typeof swiper.params.height !== 'undefined') {\n        height = swiper.params.height;\n      } else {\n        height = $el[0].clientHeight;\n      }\n      if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n        return;\n      }\n  \n      // Subtract paddings\n      width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);\n      height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);\n  \n      Utils.extend(swiper, {\n        width: width,\n        height: height,\n        size: swiper.isHorizontal() ? width : height,\n      });\n    }\n  \n    function updateSlides () {\n      var swiper = this;\n      var params = swiper.params;\n  \n      var $wrapperEl = swiper.$wrapperEl;\n      var swiperSize = swiper.size;\n      var rtl = swiper.rtlTranslate;\n      var wrongRTL = swiper.wrongRTL;\n      var isVirtual = swiper.virtual && params.virtual.enabled;\n      var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n      var slides = $wrapperEl.children((\".\" + (swiper.params.slideClass)));\n      var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n      var snapGrid = [];\n      var slidesGrid = [];\n      var slidesSizesGrid = [];\n  \n      var offsetBefore = params.slidesOffsetBefore;\n      if (typeof offsetBefore === 'function') {\n        offsetBefore = params.slidesOffsetBefore.call(swiper);\n      }\n  \n      var offsetAfter = params.slidesOffsetAfter;\n      if (typeof offsetAfter === 'function') {\n        offsetAfter = params.slidesOffsetAfter.call(swiper);\n      }\n  \n      var previousSnapGridLength = swiper.snapGrid.length;\n      var previousSlidesGridLength = swiper.snapGrid.length;\n  \n      var spaceBetween = params.spaceBetween;\n      var slidePosition = -offsetBefore;\n      var prevSlideSize = 0;\n      var index = 0;\n      if (typeof swiperSize === 'undefined') {\n        return;\n      }\n      if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n        spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n      }\n  \n      swiper.virtualSize = -spaceBetween;\n  \n      // reset margins\n      if (rtl) { slides.css({ marginLeft: '', marginTop: '' }); }\n      else { slides.css({ marginRight: '', marginBottom: '' }); }\n  \n      var slidesNumberEvenToRows;\n      if (params.slidesPerColumn > 1) {\n        if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\n          slidesNumberEvenToRows = slidesLength;\n        } else {\n          slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n        }\n        if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n          slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n        }\n      }\n  \n      // Calc slides\n      var slideSize;\n      var slidesPerColumn = params.slidesPerColumn;\n      var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n      var numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n      for (var i = 0; i < slidesLength; i += 1) {\n        slideSize = 0;\n        var slide = slides.eq(i);\n        if (params.slidesPerColumn > 1) {\n          // Set slides order\n          var newSlideOrderIndex = (void 0);\n          var column = (void 0);\n          var row = (void 0);\n          if (\n            (params.slidesPerColumnFill === 'column')\n            || (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1)\n          ) {\n            if (params.slidesPerColumnFill === 'column') {\n              column = Math.floor(i / slidesPerColumn);\n              row = i - (column * slidesPerColumn);\n              if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {\n                row += 1;\n                if (row >= slidesPerColumn) {\n                  row = 0;\n                  column += 1;\n                }\n              }\n            } else {\n              var groupIndex = Math.floor(i / params.slidesPerGroup);\n              row = Math.floor(i / params.slidesPerView) - groupIndex * params.slidesPerColumn;\n              column = i - row * params.slidesPerView - groupIndex * params.slidesPerView;\n            }\n            newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);\n            slide\n              .css({\n                '-webkit-box-ordinal-group': newSlideOrderIndex,\n                '-moz-box-ordinal-group': newSlideOrderIndex,\n                '-ms-flex-order': newSlideOrderIndex,\n                '-webkit-order': newSlideOrderIndex,\n                order: newSlideOrderIndex,\n              });\n          } else {\n            row = Math.floor(i / slidesPerRow);\n            column = i - (row * slidesPerRow);\n          }\n          slide\n            .css(\n              (\"margin-\" + (swiper.isHorizontal() ? 'top' : 'left')),\n              (row !== 0 && params.spaceBetween) && (((params.spaceBetween) + \"px\"))\n            )\n            .attr('data-swiper-column', column)\n            .attr('data-swiper-row', row);\n        }\n        if (slide.css('display') === 'none') { continue; } // eslint-disable-line\n  \n        if (params.slidesPerView === 'auto') {\n          var slideStyles = win.getComputedStyle(slide[0], null);\n          var currentTransform = slide[0].style.transform;\n          var currentWebKitTransform = slide[0].style.webkitTransform;\n          if (currentTransform) {\n            slide[0].style.transform = 'none';\n          }\n          if (currentWebKitTransform) {\n            slide[0].style.webkitTransform = 'none';\n          }\n          if (params.roundLengths) {\n            slideSize = swiper.isHorizontal()\n              ? slide.outerWidth(true)\n              : slide.outerHeight(true);\n          } else {\n            // eslint-disable-next-line\n            if (swiper.isHorizontal()) {\n              var width = parseFloat(slideStyles.getPropertyValue('width'));\n              var paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));\n              var paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));\n              var marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));\n              var marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));\n              var boxSizing = slideStyles.getPropertyValue('box-sizing');\n              if (boxSizing && boxSizing === 'border-box' && !Browser.isIE) {\n                slideSize = width + marginLeft + marginRight;\n              } else {\n                slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;\n              }\n            } else {\n              var height = parseFloat(slideStyles.getPropertyValue('height'));\n              var paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));\n              var paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));\n              var marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));\n              var marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));\n              var boxSizing$1 = slideStyles.getPropertyValue('box-sizing');\n              if (boxSizing$1 && boxSizing$1 === 'border-box' && !Browser.isIE) {\n                slideSize = height + marginTop + marginBottom;\n              } else {\n                slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;\n              }\n            }\n          }\n          if (currentTransform) {\n            slide[0].style.transform = currentTransform;\n          }\n          if (currentWebKitTransform) {\n            slide[0].style.webkitTransform = currentWebKitTransform;\n          }\n          if (params.roundLengths) { slideSize = Math.floor(slideSize); }\n        } else {\n          slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView;\n          if (params.roundLengths) { slideSize = Math.floor(slideSize); }\n  \n          if (slides[i]) {\n            if (swiper.isHorizontal()) {\n              slides[i].style.width = slideSize + \"px\";\n            } else {\n              slides[i].style.height = slideSize + \"px\";\n            }\n          }\n        }\n        if (slides[i]) {\n          slides[i].swiperSlideSize = slideSize;\n        }\n        slidesSizesGrid.push(slideSize);\n  \n  \n        if (params.centeredSlides) {\n          slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween;\n          if (prevSlideSize === 0 && i !== 0) { slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; }\n          if (i === 0) { slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; }\n          if (Math.abs(slidePosition) < 1 / 1000) { slidePosition = 0; }\n          if (params.roundLengths) { slidePosition = Math.floor(slidePosition); }\n          if ((index) % params.slidesPerGroup === 0) { snapGrid.push(slidePosition); }\n          slidesGrid.push(slidePosition);\n        } else {\n          if (params.roundLengths) { slidePosition = Math.floor(slidePosition); }\n          if ((index) % params.slidesPerGroup === 0) { snapGrid.push(slidePosition); }\n          slidesGrid.push(slidePosition);\n          slidePosition = slidePosition + slideSize + spaceBetween;\n        }\n  \n        swiper.virtualSize += slideSize + spaceBetween;\n  \n        prevSlideSize = slideSize;\n  \n        index += 1;\n      }\n      swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n      var newSlidesGrid;\n  \n      if (\n        rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n        $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + \"px\") });\n      }\n      if (!Support.flexbox || params.setWrapperSize) {\n        if (swiper.isHorizontal()) { $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + \"px\") }); }\n        else { $wrapperEl.css({ height: ((swiper.virtualSize + params.spaceBetween) + \"px\") }); }\n      }\n  \n      if (params.slidesPerColumn > 1) {\n        swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n        swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n        if (swiper.isHorizontal()) { $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + \"px\") }); }\n        else { $wrapperEl.css({ height: ((swiper.virtualSize + params.spaceBetween) + \"px\") }); }\n        if (params.centeredSlides) {\n          newSlidesGrid = [];\n          for (var i$1 = 0; i$1 < snapGrid.length; i$1 += 1) {\n            var slidesGridItem = snapGrid[i$1];\n            if (params.roundLengths) { slidesGridItem = Math.floor(slidesGridItem); }\n            if (snapGrid[i$1] < swiper.virtualSize + snapGrid[0]) { newSlidesGrid.push(slidesGridItem); }\n          }\n          snapGrid = newSlidesGrid;\n        }\n      }\n  \n      // Remove last grid elements depending on width\n      if (!params.centeredSlides) {\n        newSlidesGrid = [];\n        for (var i$2 = 0; i$2 < snapGrid.length; i$2 += 1) {\n          var slidesGridItem$1 = snapGrid[i$2];\n          if (params.roundLengths) { slidesGridItem$1 = Math.floor(slidesGridItem$1); }\n          if (snapGrid[i$2] <= swiper.virtualSize - swiperSize) {\n            newSlidesGrid.push(slidesGridItem$1);\n          }\n        }\n        snapGrid = newSlidesGrid;\n        if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n          snapGrid.push(swiper.virtualSize - swiperSize);\n        }\n      }\n      if (snapGrid.length === 0) { snapGrid = [0]; }\n  \n      if (params.spaceBetween !== 0) {\n        if (swiper.isHorizontal()) {\n          if (rtl) { slides.css({ marginLeft: (spaceBetween + \"px\") }); }\n          else { slides.css({ marginRight: (spaceBetween + \"px\") }); }\n        } else { slides.css({ marginBottom: (spaceBetween + \"px\") }); }\n      }\n  \n      if (params.centerInsufficientSlides) {\n        var allSlidesSize = 0;\n        slidesSizesGrid.forEach(function (slideSizeValue) {\n          allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n        });\n        allSlidesSize -= params.spaceBetween;\n        if (allSlidesSize < swiperSize) {\n          var allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n          snapGrid.forEach(function (snap, snapIndex) {\n            snapGrid[snapIndex] = snap - allSlidesOffset;\n          });\n          slidesGrid.forEach(function (snap, snapIndex) {\n            slidesGrid[snapIndex] = snap + allSlidesOffset;\n          });\n        }\n      }\n  \n      Utils.extend(swiper, {\n        slides: slides,\n        snapGrid: snapGrid,\n        slidesGrid: slidesGrid,\n        slidesSizesGrid: slidesSizesGrid,\n      });\n  \n      if (slidesLength !== previousSlidesLength) {\n        swiper.emit('slidesLengthChange');\n      }\n      if (snapGrid.length !== previousSnapGridLength) {\n        if (swiper.params.watchOverflow) { swiper.checkOverflow(); }\n        swiper.emit('snapGridLengthChange');\n      }\n      if (slidesGrid.length !== previousSlidesGridLength) {\n        swiper.emit('slidesGridLengthChange');\n      }\n  \n      if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n        swiper.updateSlidesOffset();\n      }\n    }\n  \n    function updateAutoHeight (speed) {\n      var swiper = this;\n      var activeSlides = [];\n      var newHeight = 0;\n      var i;\n      if (typeof speed === 'number') {\n        swiper.setTransition(speed);\n      } else if (speed === true) {\n        swiper.setTransition(swiper.params.speed);\n      }\n      // Find slides currently in view\n      if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n        for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n          var index = swiper.activeIndex + i;\n          if (index > swiper.slides.length) { break; }\n          activeSlides.push(swiper.slides.eq(index)[0]);\n        }\n      } else {\n        activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);\n      }\n  \n      // Find new height from highest slide in view\n      for (i = 0; i < activeSlides.length; i += 1) {\n        if (typeof activeSlides[i] !== 'undefined') {\n          var height = activeSlides[i].offsetHeight;\n          newHeight = height > newHeight ? height : newHeight;\n        }\n      }\n  \n      // Update Height\n      if (newHeight) { swiper.$wrapperEl.css('height', (newHeight + \"px\")); }\n    }\n  \n    function updateSlidesOffset () {\n      var swiper = this;\n      var slides = swiper.slides;\n      for (var i = 0; i < slides.length; i += 1) {\n        slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n      }\n    }\n  \n    function updateSlidesProgress (translate) {\n      if ( translate === void 0 ) translate = (this && this.translate) || 0;\n  \n      var swiper = this;\n      var params = swiper.params;\n  \n      var slides = swiper.slides;\n      var rtl = swiper.rtlTranslate;\n  \n      if (slides.length === 0) { return; }\n      if (typeof slides[0].swiperSlideOffset === 'undefined') { swiper.updateSlidesOffset(); }\n  \n      var offsetCenter = -translate;\n      if (rtl) { offsetCenter = translate; }\n  \n      // Visible Slides\n      slides.removeClass(params.slideVisibleClass);\n  \n      swiper.visibleSlidesIndexes = [];\n      swiper.visibleSlides = [];\n  \n      for (var i = 0; i < slides.length; i += 1) {\n        var slide = slides[i];\n        var slideProgress = (\n          (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset\n        ) / (slide.swiperSlideSize + params.spaceBetween);\n        if (params.watchSlidesVisibility) {\n          var slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n          var slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n          var isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1)\n                    || (slideAfter > 1 && slideAfter <= swiper.size)\n                    || (slideBefore <= 0 && slideAfter >= swiper.size);\n          if (isVisible) {\n            swiper.visibleSlides.push(slide);\n            swiper.visibleSlidesIndexes.push(i);\n            slides.eq(i).addClass(params.slideVisibleClass);\n          }\n        }\n        slide.progress = rtl ? -slideProgress : slideProgress;\n      }\n      swiper.visibleSlides = $(swiper.visibleSlides);\n    }\n  \n    function updateProgress (translate) {\n      if ( translate === void 0 ) translate = (this && this.translate) || 0;\n  \n      var swiper = this;\n      var params = swiper.params;\n  \n      var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n      var progress = swiper.progress;\n      var isBeginning = swiper.isBeginning;\n      var isEnd = swiper.isEnd;\n      var wasBeginning = isBeginning;\n      var wasEnd = isEnd;\n      if (translatesDiff === 0) {\n        progress = 0;\n        isBeginning = true;\n        isEnd = true;\n      } else {\n        progress = (translate - swiper.minTranslate()) / (translatesDiff);\n        isBeginning = progress <= 0;\n        isEnd = progress >= 1;\n      }\n      Utils.extend(swiper, {\n        progress: progress,\n        isBeginning: isBeginning,\n        isEnd: isEnd,\n      });\n  \n      if (params.watchSlidesProgress || params.watchSlidesVisibility) { swiper.updateSlidesProgress(translate); }\n  \n      if (isBeginning && !wasBeginning) {\n        swiper.emit('reachBeginning toEdge');\n      }\n      if (isEnd && !wasEnd) {\n        swiper.emit('reachEnd toEdge');\n      }\n      if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n        swiper.emit('fromEdge');\n      }\n  \n      swiper.emit('progress', progress);\n    }\n  \n    function updateSlidesClasses () {\n      var swiper = this;\n  \n      var slides = swiper.slides;\n      var params = swiper.params;\n      var $wrapperEl = swiper.$wrapperEl;\n      var activeIndex = swiper.activeIndex;\n      var realIndex = swiper.realIndex;\n      var isVirtual = swiper.virtual && params.virtual.enabled;\n  \n      slides.removeClass(((params.slideActiveClass) + \" \" + (params.slideNextClass) + \" \" + (params.slidePrevClass) + \" \" + (params.slideDuplicateActiveClass) + \" \" + (params.slideDuplicateNextClass) + \" \" + (params.slideDuplicatePrevClass)));\n  \n      var activeSlide;\n      if (isVirtual) {\n        activeSlide = swiper.$wrapperEl.find((\".\" + (params.slideClass) + \"[data-swiper-slide-index=\\\"\" + activeIndex + \"\\\"]\"));\n      } else {\n        activeSlide = slides.eq(activeIndex);\n      }\n  \n      // Active classes\n      activeSlide.addClass(params.slideActiveClass);\n  \n      if (params.loop) {\n        // Duplicate to all looped slides\n        if (activeSlide.hasClass(params.slideDuplicateClass)) {\n          $wrapperEl\n            .children((\".\" + (params.slideClass) + \":not(.\" + (params.slideDuplicateClass) + \")[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]\"))\n            .addClass(params.slideDuplicateActiveClass);\n        } else {\n          $wrapperEl\n            .children((\".\" + (params.slideClass) + \".\" + (params.slideDuplicateClass) + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]\"))\n            .addClass(params.slideDuplicateActiveClass);\n        }\n      }\n      // Next Slide\n      var nextSlide = activeSlide.nextAll((\".\" + (params.slideClass))).eq(0).addClass(params.slideNextClass);\n      if (params.loop && nextSlide.length === 0) {\n        nextSlide = slides.eq(0);\n        nextSlide.addClass(params.slideNextClass);\n      }\n      // Prev Slide\n      var prevSlide = activeSlide.prevAll((\".\" + (params.slideClass))).eq(0).addClass(params.slidePrevClass);\n      if (params.loop && prevSlide.length === 0) {\n        prevSlide = slides.eq(-1);\n        prevSlide.addClass(params.slidePrevClass);\n      }\n      if (params.loop) {\n        // Duplicate to all looped slides\n        if (nextSlide.hasClass(params.slideDuplicateClass)) {\n          $wrapperEl\n            .children((\".\" + (params.slideClass) + \":not(.\" + (params.slideDuplicateClass) + \")[data-swiper-slide-index=\\\"\" + (nextSlide.attr('data-swiper-slide-index')) + \"\\\"]\"))\n            .addClass(params.slideDuplicateNextClass);\n        } else {\n          $wrapperEl\n            .children((\".\" + (params.slideClass) + \".\" + (params.slideDuplicateClass) + \"[data-swiper-slide-index=\\\"\" + (nextSlide.attr('data-swiper-slide-index')) + \"\\\"]\"))\n            .addClass(params.slideDuplicateNextClass);\n        }\n        if (prevSlide.hasClass(params.slideDuplicateClass)) {\n          $wrapperEl\n            .children((\".\" + (params.slideClass) + \":not(.\" + (params.slideDuplicateClass) + \")[data-swiper-slide-index=\\\"\" + (prevSlide.attr('data-swiper-slide-index')) + \"\\\"]\"))\n            .addClass(params.slideDuplicatePrevClass);\n        } else {\n          $wrapperEl\n            .children((\".\" + (params.slideClass) + \".\" + (params.slideDuplicateClass) + \"[data-swiper-slide-index=\\\"\" + (prevSlide.attr('data-swiper-slide-index')) + \"\\\"]\"))\n            .addClass(params.slideDuplicatePrevClass);\n        }\n      }\n    }\n  \n    function updateActiveIndex (newActiveIndex) {\n      var swiper = this;\n      var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n      var slidesGrid = swiper.slidesGrid;\n      var snapGrid = swiper.snapGrid;\n      var params = swiper.params;\n      var previousIndex = swiper.activeIndex;\n      var previousRealIndex = swiper.realIndex;\n      var previousSnapIndex = swiper.snapIndex;\n      var activeIndex = newActiveIndex;\n      var snapIndex;\n      if (typeof activeIndex === 'undefined') {\n        for (var i = 0; i < slidesGrid.length; i += 1) {\n          if (typeof slidesGrid[i + 1] !== 'undefined') {\n            if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) {\n              activeIndex = i;\n            } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n              activeIndex = i + 1;\n            }\n          } else if (translate >= slidesGrid[i]) {\n            activeIndex = i;\n          }\n        }\n        // Normalize slideIndex\n        if (params.normalizeSlideIndex) {\n          if (activeIndex < 0 || typeof activeIndex === 'undefined') { activeIndex = 0; }\n        }\n      }\n      if (snapGrid.indexOf(translate) >= 0) {\n        snapIndex = snapGrid.indexOf(translate);\n      } else {\n        snapIndex = Math.floor(activeIndex / params.slidesPerGroup);\n      }\n      if (snapIndex >= snapGrid.length) { snapIndex = snapGrid.length - 1; }\n      if (activeIndex === previousIndex) {\n        if (snapIndex !== previousSnapIndex) {\n          swiper.snapIndex = snapIndex;\n          swiper.emit('snapIndexChange');\n        }\n        return;\n      }\n  \n      // Get real index\n      var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n  \n      Utils.extend(swiper, {\n        snapIndex: snapIndex,\n        realIndex: realIndex,\n        previousIndex: previousIndex,\n        activeIndex: activeIndex,\n      });\n      swiper.emit('activeIndexChange');\n      swiper.emit('snapIndexChange');\n      if (previousRealIndex !== realIndex) {\n        swiper.emit('realIndexChange');\n      }\n      if (swiper.initialized || swiper.runCallbacksOnInit) {\n        swiper.emit('slideChange');\n      }\n    }\n  \n    function updateClickedSlide (e) {\n      var swiper = this;\n      var params = swiper.params;\n      var slide = $(e.target).closest((\".\" + (params.slideClass)))[0];\n      var slideFound = false;\n      if (slide) {\n        for (var i = 0; i < swiper.slides.length; i += 1) {\n          if (swiper.slides[i] === slide) { slideFound = true; }\n        }\n      }\n  \n      if (slide && slideFound) {\n        swiper.clickedSlide = slide;\n        if (swiper.virtual && swiper.params.virtual.enabled) {\n          swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n        } else {\n          swiper.clickedIndex = $(slide).index();\n        }\n      } else {\n        swiper.clickedSlide = undefined;\n        swiper.clickedIndex = undefined;\n        return;\n      }\n      if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n        swiper.slideToClickedSlide();\n      }\n    }\n  \n    var update = {\n      updateSize: updateSize,\n      updateSlides: updateSlides,\n      updateAutoHeight: updateAutoHeight,\n      updateSlidesOffset: updateSlidesOffset,\n      updateSlidesProgress: updateSlidesProgress,\n      updateProgress: updateProgress,\n      updateSlidesClasses: updateSlidesClasses,\n      updateActiveIndex: updateActiveIndex,\n      updateClickedSlide: updateClickedSlide,\n    };\n  \n    function getTranslate (axis) {\n      if ( axis === void 0 ) axis = this.isHorizontal() ? 'x' : 'y';\n  \n      var swiper = this;\n  \n      var params = swiper.params;\n      var rtl = swiper.rtlTranslate;\n      var translate = swiper.translate;\n      var $wrapperEl = swiper.$wrapperEl;\n  \n      if (params.virtualTranslate) {\n        return rtl ? -translate : translate;\n      }\n  \n      var currentTranslate = Utils.getTranslate($wrapperEl[0], axis);\n      if (rtl) { currentTranslate = -currentTranslate; }\n  \n      return currentTranslate || 0;\n    }\n  \n    function setTranslate (translate, byController) {\n      var swiper = this;\n      var rtl = swiper.rtlTranslate;\n      var params = swiper.params;\n      var $wrapperEl = swiper.$wrapperEl;\n      var progress = swiper.progress;\n      var x = 0;\n      var y = 0;\n      var z = 0;\n  \n      if (swiper.isHorizontal()) {\n        x = rtl ? -translate : translate;\n      } else {\n        y = translate;\n      }\n  \n      if (params.roundLengths) {\n        x = Math.floor(x);\n        y = Math.floor(y);\n      }\n  \n      if (!params.virtualTranslate) {\n        if (Support.transforms3d) { $wrapperEl.transform((\"translate3d(\" + x + \"px, \" + y + \"px, \" + z + \"px)\")); }\n        else { $wrapperEl.transform((\"translate(\" + x + \"px, \" + y + \"px)\")); }\n      }\n      swiper.previousTranslate = swiper.translate;\n      swiper.translate = swiper.isHorizontal() ? x : y;\n  \n      // Check if we need to update progress\n      var newProgress;\n      var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n      if (translatesDiff === 0) {\n        newProgress = 0;\n      } else {\n        newProgress = (translate - swiper.minTranslate()) / (translatesDiff);\n      }\n      if (newProgress !== progress) {\n        swiper.updateProgress(translate);\n      }\n  \n      swiper.emit('setTranslate', swiper.translate, byController);\n    }\n  \n    function minTranslate () {\n      return (-this.snapGrid[0]);\n    }\n  \n    function maxTranslate () {\n      return (-this.snapGrid[this.snapGrid.length - 1]);\n    }\n  \n    var translate = {\n      getTranslate: getTranslate,\n      setTranslate: setTranslate,\n      minTranslate: minTranslate,\n      maxTranslate: maxTranslate,\n    };\n  \n    function setTransition (duration, byController) {\n      var swiper = this;\n  \n      swiper.$wrapperEl.transition(duration);\n  \n      swiper.emit('setTransition', duration, byController);\n    }\n  \n    function transitionStart (runCallbacks, direction) {\n      if ( runCallbacks === void 0 ) runCallbacks = true;\n  \n      var swiper = this;\n      var activeIndex = swiper.activeIndex;\n      var params = swiper.params;\n      var previousIndex = swiper.previousIndex;\n      if (params.autoHeight) {\n        swiper.updateAutoHeight();\n      }\n  \n      var dir = direction;\n      if (!dir) {\n        if (activeIndex > previousIndex) { dir = 'next'; }\n        else if (activeIndex < previousIndex) { dir = 'prev'; }\n        else { dir = 'reset'; }\n      }\n  \n      swiper.emit('transitionStart');\n  \n      if (runCallbacks && activeIndex !== previousIndex) {\n        if (dir === 'reset') {\n          swiper.emit('slideResetTransitionStart');\n          return;\n        }\n        swiper.emit('slideChangeTransitionStart');\n        if (dir === 'next') {\n          swiper.emit('slideNextTransitionStart');\n        } else {\n          swiper.emit('slidePrevTransitionStart');\n        }\n      }\n    }\n  \n    function transitionEnd$1 (runCallbacks, direction) {\n      if ( runCallbacks === void 0 ) runCallbacks = true;\n  \n      var swiper = this;\n      var activeIndex = swiper.activeIndex;\n      var previousIndex = swiper.previousIndex;\n      swiper.animating = false;\n      swiper.setTransition(0);\n  \n      var dir = direction;\n      if (!dir) {\n        if (activeIndex > previousIndex) { dir = 'next'; }\n        else if (activeIndex < previousIndex) { dir = 'prev'; }\n        else { dir = 'reset'; }\n      }\n  \n      swiper.emit('transitionEnd');\n  \n      if (runCallbacks && activeIndex !== previousIndex) {\n        if (dir === 'reset') {\n          swiper.emit('slideResetTransitionEnd');\n          return;\n        }\n        swiper.emit('slideChangeTransitionEnd');\n        if (dir === 'next') {\n          swiper.emit('slideNextTransitionEnd');\n        } else {\n          swiper.emit('slidePrevTransitionEnd');\n        }\n      }\n    }\n  \n    var transition$1 = {\n      setTransition: setTransition,\n      transitionStart: transitionStart,\n      transitionEnd: transitionEnd$1,\n    };\n  \n    function slideTo (index, speed, runCallbacks, internal) {\n      if ( index === void 0 ) index = 0;\n      if ( speed === void 0 ) speed = this.params.speed;\n      if ( runCallbacks === void 0 ) runCallbacks = true;\n  \n      var swiper = this;\n      var slideIndex = index;\n      if (slideIndex < 0) { slideIndex = 0; }\n  \n      var params = swiper.params;\n      var snapGrid = swiper.snapGrid;\n      var slidesGrid = swiper.slidesGrid;\n      var previousIndex = swiper.previousIndex;\n      var activeIndex = swiper.activeIndex;\n      var rtl = swiper.rtlTranslate;\n      if (swiper.animating && params.preventInteractionOnTransition) {\n        return false;\n      }\n  \n      var snapIndex = Math.floor(slideIndex / params.slidesPerGroup);\n      if (snapIndex >= snapGrid.length) { snapIndex = snapGrid.length - 1; }\n  \n      if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n        swiper.emit('beforeSlideChangeStart');\n      }\n  \n      var translate = -snapGrid[snapIndex];\n  \n      // Update progress\n      swiper.updateProgress(translate);\n  \n      // Normalize slideIndex\n      if (params.normalizeSlideIndex) {\n        for (var i = 0; i < slidesGrid.length; i += 1) {\n          if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {\n            slideIndex = i;\n          }\n        }\n      }\n      // Directions locks\n      if (swiper.initialized && slideIndex !== activeIndex) {\n        if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n          return false;\n        }\n        if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n          if ((activeIndex || 0) !== slideIndex) { return false; }\n        }\n      }\n  \n      var direction;\n      if (slideIndex > activeIndex) { direction = 'next'; }\n      else if (slideIndex < activeIndex) { direction = 'prev'; }\n      else { direction = 'reset'; }\n  \n  \n      // Update Index\n      if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n        swiper.updateActiveIndex(slideIndex);\n        // Update Height\n        if (params.autoHeight) {\n          swiper.updateAutoHeight();\n        }\n        swiper.updateSlidesClasses();\n        if (params.effect !== 'slide') {\n          swiper.setTranslate(translate);\n        }\n        if (direction !== 'reset') {\n          swiper.transitionStart(runCallbacks, direction);\n          swiper.transitionEnd(runCallbacks, direction);\n        }\n        return false;\n      }\n  \n      if (speed === 0 || !Support.transition) {\n        swiper.setTransition(0);\n        swiper.setTranslate(translate);\n        swiper.updateActiveIndex(slideIndex);\n        swiper.updateSlidesClasses();\n        swiper.emit('beforeTransitionStart', speed, internal);\n        swiper.transitionStart(runCallbacks, direction);\n        swiper.transitionEnd(runCallbacks, direction);\n      } else {\n        swiper.setTransition(speed);\n        swiper.setTranslate(translate);\n        swiper.updateActiveIndex(slideIndex);\n        swiper.updateSlidesClasses();\n        swiper.emit('beforeTransitionStart', speed, internal);\n        swiper.transitionStart(runCallbacks, direction);\n        if (!swiper.animating) {\n          swiper.animating = true;\n          if (!swiper.onSlideToWrapperTransitionEnd) {\n            swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n              if (!swiper || swiper.destroyed) { return; }\n              if (e.target !== this) { return; }\n              swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n              swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n              swiper.onSlideToWrapperTransitionEnd = null;\n              delete swiper.onSlideToWrapperTransitionEnd;\n              swiper.transitionEnd(runCallbacks, direction);\n            };\n          }\n          swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n          swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n        }\n      }\n  \n      return true;\n    }\n  \n    function slideToLoop (index, speed, runCallbacks, internal) {\n      if ( index === void 0 ) index = 0;\n      if ( speed === void 0 ) speed = this.params.speed;\n      if ( runCallbacks === void 0 ) runCallbacks = true;\n  \n      var swiper = this;\n      var newIndex = index;\n      if (swiper.params.loop) {\n        newIndex += swiper.loopedSlides;\n      }\n  \n      return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n    }\n  \n    /* eslint no-unused-vars: \"off\" */\n    function slideNext (speed, runCallbacks, internal) {\n      if ( speed === void 0 ) speed = this.params.speed;\n      if ( runCallbacks === void 0 ) runCallbacks = true;\n  \n      var swiper = this;\n      var params = swiper.params;\n      var animating = swiper.animating;\n      if (params.loop) {\n        if (animating) { return false; }\n        swiper.loopFix();\n        // eslint-disable-next-line\n        swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n        return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);\n      }\n      return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);\n    }\n  \n    /* eslint no-unused-vars: \"off\" */\n    function slidePrev (speed, runCallbacks, internal) {\n      if ( speed === void 0 ) speed = this.params.speed;\n      if ( runCallbacks === void 0 ) runCallbacks = true;\n  \n      var swiper = this;\n      var params = swiper.params;\n      var animating = swiper.animating;\n      var snapGrid = swiper.snapGrid;\n      var slidesGrid = swiper.slidesGrid;\n      var rtlTranslate = swiper.rtlTranslate;\n  \n      if (params.loop) {\n        if (animating) { return false; }\n        swiper.loopFix();\n        // eslint-disable-next-line\n        swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n      }\n      var translate = rtlTranslate ? swiper.translate : -swiper.translate;\n      function normalize(val) {\n        if (val < 0) { return -Math.floor(Math.abs(val)); }\n        return Math.floor(val);\n      }\n      var normalizedTranslate = normalize(translate);\n      var normalizedSnapGrid = snapGrid.map(function (val) { return normalize(val); });\n      var normalizedSlidesGrid = slidesGrid.map(function (val) { return normalize(val); });\n  \n      var currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n      var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n      var prevIndex;\n      if (typeof prevSnap !== 'undefined') {\n        prevIndex = slidesGrid.indexOf(prevSnap);\n        if (prevIndex < 0) { prevIndex = swiper.activeIndex - 1; }\n      }\n      return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n    }\n  \n    /* eslint no-unused-vars: \"off\" */\n    function slideReset (speed, runCallbacks, internal) {\n      if ( speed === void 0 ) speed = this.params.speed;\n      if ( runCallbacks === void 0 ) runCallbacks = true;\n  \n      var swiper = this;\n      return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n    }\n  \n    /* eslint no-unused-vars: \"off\" */\n    function slideToClosest (speed, runCallbacks, internal) {\n      if ( speed === void 0 ) speed = this.params.speed;\n      if ( runCallbacks === void 0 ) runCallbacks = true;\n  \n      var swiper = this;\n      var index = swiper.activeIndex;\n      var snapIndex = Math.floor(index / swiper.params.slidesPerGroup);\n  \n      if (snapIndex < swiper.snapGrid.length - 1) {\n        var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  \n        var currentSnap = swiper.snapGrid[snapIndex];\n        var nextSnap = swiper.snapGrid[snapIndex + 1];\n  \n        if ((translate - currentSnap) > (nextSnap - currentSnap) / 2) {\n          index = swiper.params.slidesPerGroup;\n        }\n      }\n  \n      return swiper.slideTo(index, speed, runCallbacks, internal);\n    }\n  \n    function slideToClickedSlide () {\n      var swiper = this;\n      var params = swiper.params;\n      var $wrapperEl = swiper.$wrapperEl;\n  \n      var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n      var slideToIndex = swiper.clickedIndex;\n      var realIndex;\n      if (params.loop) {\n        if (swiper.animating) { return; }\n        realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n        if (params.centeredSlides) {\n          if (\n            (slideToIndex < swiper.loopedSlides - (slidesPerView / 2))\n            || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))\n          ) {\n            swiper.loopFix();\n            slideToIndex = $wrapperEl\n              .children((\".\" + (params.slideClass) + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]:not(.\" + (params.slideDuplicateClass) + \")\"))\n              .eq(0)\n              .index();\n  \n            Utils.nextTick(function () {\n              swiper.slideTo(slideToIndex);\n            });\n          } else {\n            swiper.slideTo(slideToIndex);\n          }\n        } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n          swiper.loopFix();\n          slideToIndex = $wrapperEl\n            .children((\".\" + (params.slideClass) + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]:not(.\" + (params.slideDuplicateClass) + \")\"))\n            .eq(0)\n            .index();\n  \n          Utils.nextTick(function () {\n            swiper.slideTo(slideToIndex);\n          });\n        } else {\n          swiper.slideTo(slideToIndex);\n        }\n      } else {\n        swiper.slideTo(slideToIndex);\n      }\n    }\n  \n    var slide = {\n      slideTo: slideTo,\n      slideToLoop: slideToLoop,\n      slideNext: slideNext,\n      slidePrev: slidePrev,\n      slideReset: slideReset,\n      slideToClosest: slideToClosest,\n      slideToClickedSlide: slideToClickedSlide,\n    };\n  \n    function loopCreate () {\n      var swiper = this;\n      var params = swiper.params;\n      var $wrapperEl = swiper.$wrapperEl;\n      // Remove duplicated slides\n      $wrapperEl.children((\".\" + (params.slideClass) + \".\" + (params.slideDuplicateClass))).remove();\n  \n      var slides = $wrapperEl.children((\".\" + (params.slideClass)));\n  \n      if (params.loopFillGroupWithBlank) {\n        var blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n        if (blankSlidesNum !== params.slidesPerGroup) {\n          for (var i = 0; i < blankSlidesNum; i += 1) {\n            var blankNode = $(doc.createElement('div')).addClass(((params.slideClass) + \" \" + (params.slideBlankClass)));\n            $wrapperEl.append(blankNode);\n          }\n          slides = $wrapperEl.children((\".\" + (params.slideClass)));\n        }\n      }\n  \n      if (params.slidesPerView === 'auto' && !params.loopedSlides) { params.loopedSlides = slides.length; }\n  \n      swiper.loopedSlides = parseInt(params.loopedSlides || params.slidesPerView, 10);\n      swiper.loopedSlides += params.loopAdditionalSlides;\n      if (swiper.loopedSlides > slides.length) {\n        swiper.loopedSlides = slides.length;\n      }\n  \n      var prependSlides = [];\n      var appendSlides = [];\n      slides.each(function (index, el) {\n        var slide = $(el);\n        if (index < swiper.loopedSlides) { appendSlides.push(el); }\n        if (index < slides.length && index >= slides.length - swiper.loopedSlides) { prependSlides.push(el); }\n        slide.attr('data-swiper-slide-index', index);\n      });\n      for (var i$1 = 0; i$1 < appendSlides.length; i$1 += 1) {\n        $wrapperEl.append($(appendSlides[i$1].cloneNode(true)).addClass(params.slideDuplicateClass));\n      }\n      for (var i$2 = prependSlides.length - 1; i$2 >= 0; i$2 -= 1) {\n        $wrapperEl.prepend($(prependSlides[i$2].cloneNode(true)).addClass(params.slideDuplicateClass));\n      }\n    }\n  \n    function loopFix () {\n      var swiper = this;\n      var params = swiper.params;\n      var activeIndex = swiper.activeIndex;\n      var slides = swiper.slides;\n      var loopedSlides = swiper.loopedSlides;\n      var allowSlidePrev = swiper.allowSlidePrev;\n      var allowSlideNext = swiper.allowSlideNext;\n      var snapGrid = swiper.snapGrid;\n      var rtl = swiper.rtlTranslate;\n      var newIndex;\n      swiper.allowSlidePrev = true;\n      swiper.allowSlideNext = true;\n  \n      var snapTranslate = -snapGrid[activeIndex];\n      var diff = snapTranslate - swiper.getTranslate();\n  \n  \n      // Fix For Negative Oversliding\n      if (activeIndex < loopedSlides) {\n        newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;\n        newIndex += loopedSlides;\n        var slideChanged = swiper.slideTo(newIndex, 0, false, true);\n        if (slideChanged && diff !== 0) {\n          swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n        }\n      } else if ((params.slidesPerView === 'auto' && activeIndex >= loopedSlides * 2) || (activeIndex >= slides.length - loopedSlides)) {\n        // Fix For Positive Oversliding\n        newIndex = -slides.length + activeIndex + loopedSlides;\n        newIndex += loopedSlides;\n        var slideChanged$1 = swiper.slideTo(newIndex, 0, false, true);\n        if (slideChanged$1 && diff !== 0) {\n          swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n        }\n      }\n      swiper.allowSlidePrev = allowSlidePrev;\n      swiper.allowSlideNext = allowSlideNext;\n    }\n  \n    function loopDestroy () {\n      var swiper = this;\n      var $wrapperEl = swiper.$wrapperEl;\n      var params = swiper.params;\n      var slides = swiper.slides;\n      $wrapperEl.children((\".\" + (params.slideClass) + \".\" + (params.slideDuplicateClass) + \",.\" + (params.slideClass) + \".\" + (params.slideBlankClass))).remove();\n      slides.removeAttr('data-swiper-slide-index');\n    }\n  \n    var loop = {\n      loopCreate: loopCreate,\n      loopFix: loopFix,\n      loopDestroy: loopDestroy,\n    };\n  \n    function setGrabCursor (moving) {\n      var swiper = this;\n      if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked)) { return; }\n      var el = swiper.el;\n      el.style.cursor = 'move';\n      el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n      el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n      el.style.cursor = moving ? 'grabbing' : 'grab';\n    }\n  \n    function unsetGrabCursor () {\n      var swiper = this;\n      if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked)) { return; }\n      swiper.el.style.cursor = '';\n    }\n  \n    var grabCursor = {\n      setGrabCursor: setGrabCursor,\n      unsetGrabCursor: unsetGrabCursor,\n    };\n  \n    function appendSlide (slides) {\n      var swiper = this;\n      var $wrapperEl = swiper.$wrapperEl;\n      var params = swiper.params;\n      if (params.loop) {\n        swiper.loopDestroy();\n      }\n      if (typeof slides === 'object' && 'length' in slides) {\n        for (var i = 0; i < slides.length; i += 1) {\n          if (slides[i]) { $wrapperEl.append(slides[i]); }\n        }\n      } else {\n        $wrapperEl.append(slides);\n      }\n      if (params.loop) {\n        swiper.loopCreate();\n      }\n      if (!(params.observer && Support.observer)) {\n        swiper.update();\n      }\n    }\n  \n    function prependSlide (slides) {\n      var swiper = this;\n      var params = swiper.params;\n      var $wrapperEl = swiper.$wrapperEl;\n      var activeIndex = swiper.activeIndex;\n  \n      if (params.loop) {\n        swiper.loopDestroy();\n      }\n      var newActiveIndex = activeIndex + 1;\n      if (typeof slides === 'object' && 'length' in slides) {\n        for (var i = 0; i < slides.length; i += 1) {\n          if (slides[i]) { $wrapperEl.prepend(slides[i]); }\n        }\n        newActiveIndex = activeIndex + slides.length;\n      } else {\n        $wrapperEl.prepend(slides);\n      }\n      if (params.loop) {\n        swiper.loopCreate();\n      }\n      if (!(params.observer && Support.observer)) {\n        swiper.update();\n      }\n      swiper.slideTo(newActiveIndex, 0, false);\n    }\n  \n    function addSlide (index, slides) {\n      var swiper = this;\n      var $wrapperEl = swiper.$wrapperEl;\n      var params = swiper.params;\n      var activeIndex = swiper.activeIndex;\n      var activeIndexBuffer = activeIndex;\n      if (params.loop) {\n        activeIndexBuffer -= swiper.loopedSlides;\n        swiper.loopDestroy();\n        swiper.slides = $wrapperEl.children((\".\" + (params.slideClass)));\n      }\n      var baseLength = swiper.slides.length;\n      if (index <= 0) {\n        swiper.prependSlide(slides);\n        return;\n      }\n      if (index >= baseLength) {\n        swiper.appendSlide(slides);\n        return;\n      }\n      var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n  \n      var slidesBuffer = [];\n      for (var i = baseLength - 1; i >= index; i -= 1) {\n        var currentSlide = swiper.slides.eq(i);\n        currentSlide.remove();\n        slidesBuffer.unshift(currentSlide);\n      }\n  \n      if (typeof slides === 'object' && 'length' in slides) {\n        for (var i$1 = 0; i$1 < slides.length; i$1 += 1) {\n          if (slides[i$1]) { $wrapperEl.append(slides[i$1]); }\n        }\n        newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n      } else {\n        $wrapperEl.append(slides);\n      }\n  \n      for (var i$2 = 0; i$2 < slidesBuffer.length; i$2 += 1) {\n        $wrapperEl.append(slidesBuffer[i$2]);\n      }\n  \n      if (params.loop) {\n        swiper.loopCreate();\n      }\n      if (!(params.observer && Support.observer)) {\n        swiper.update();\n      }\n      if (params.loop) {\n        swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n      } else {\n        swiper.slideTo(newActiveIndex, 0, false);\n      }\n    }\n  \n    function removeSlide (slidesIndexes) {\n      var swiper = this;\n      var params = swiper.params;\n      var $wrapperEl = swiper.$wrapperEl;\n      var activeIndex = swiper.activeIndex;\n  \n      var activeIndexBuffer = activeIndex;\n      if (params.loop) {\n        activeIndexBuffer -= swiper.loopedSlides;\n        swiper.loopDestroy();\n        swiper.slides = $wrapperEl.children((\".\" + (params.slideClass)));\n      }\n      var newActiveIndex = activeIndexBuffer;\n      var indexToRemove;\n  \n      if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n        for (var i = 0; i < slidesIndexes.length; i += 1) {\n          indexToRemove = slidesIndexes[i];\n          if (swiper.slides[indexToRemove]) { swiper.slides.eq(indexToRemove).remove(); }\n          if (indexToRemove < newActiveIndex) { newActiveIndex -= 1; }\n        }\n        newActiveIndex = Math.max(newActiveIndex, 0);\n      } else {\n        indexToRemove = slidesIndexes;\n        if (swiper.slides[indexToRemove]) { swiper.slides.eq(indexToRemove).remove(); }\n        if (indexToRemove < newActiveIndex) { newActiveIndex -= 1; }\n        newActiveIndex = Math.max(newActiveIndex, 0);\n      }\n  \n      if (params.loop) {\n        swiper.loopCreate();\n      }\n  \n      if (!(params.observer && Support.observer)) {\n        swiper.update();\n      }\n      if (params.loop) {\n        swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n      } else {\n        swiper.slideTo(newActiveIndex, 0, false);\n      }\n    }\n  \n    function removeAllSlides () {\n      var swiper = this;\n  \n      var slidesIndexes = [];\n      for (var i = 0; i < swiper.slides.length; i += 1) {\n        slidesIndexes.push(i);\n      }\n      swiper.removeSlide(slidesIndexes);\n    }\n  \n    var manipulation = {\n      appendSlide: appendSlide,\n      prependSlide: prependSlide,\n      addSlide: addSlide,\n      removeSlide: removeSlide,\n      removeAllSlides: removeAllSlides,\n    };\n  \n    var Device = (function Device() {\n      var ua = win.navigator.userAgent;\n  \n      var device = {\n        ios: false,\n        android: false,\n        androidChrome: false,\n        desktop: false,\n        windows: false,\n        iphone: false,\n        ipod: false,\n        ipad: false,\n        cordova: win.cordova || win.phonegap,\n        phonegap: win.cordova || win.phonegap,\n      };\n  \n      var windows = ua.match(/(Windows Phone);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n      var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n      var ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n      var ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n      var iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n  \n  \n      // Windows\n      if (windows) {\n        device.os = 'windows';\n        device.osVersion = windows[2];\n        device.windows = true;\n      }\n      // Android\n      if (android && !windows) {\n        device.os = 'android';\n        device.osVersion = android[2];\n        device.android = true;\n        device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n      }\n      if (ipad || iphone || ipod) {\n        device.os = 'ios';\n        device.ios = true;\n      }\n      // iOS\n      if (iphone && !ipod) {\n        device.osVersion = iphone[2].replace(/_/g, '.');\n        device.iphone = true;\n      }\n      if (ipad) {\n        device.osVersion = ipad[2].replace(/_/g, '.');\n        device.ipad = true;\n      }\n      if (ipod) {\n        device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n        device.iphone = true;\n      }\n      // iOS 8+ changed UA\n      if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n        if (device.osVersion.split('.')[0] === '10') {\n          device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n        }\n      }\n  \n      // Desktop\n      device.desktop = !(device.os || device.android || device.webView);\n  \n      // Webview\n      device.webView = (iphone || ipad || ipod) && ua.match(/.*AppleWebKit(?!.*Safari)/i);\n  \n      // Minimal UI\n      if (device.os && device.os === 'ios') {\n        var osVersionArr = device.osVersion.split('.');\n        var metaViewport = doc.querySelector('meta[name=\"viewport\"]');\n        device.minimalUi = !device.webView\n          && (ipod || iphone)\n          && (osVersionArr[0] * 1 === 7 ? osVersionArr[1] * 1 >= 1 : osVersionArr[0] * 1 > 7)\n          && metaViewport && metaViewport.getAttribute('content').indexOf('minimal-ui') >= 0;\n      }\n  \n      // Pixel Ratio\n      device.pixelRatio = win.devicePixelRatio || 1;\n  \n      // Export object\n      return device;\n    }());\n  \n    function onTouchStart (event) {\n      var swiper = this;\n      var data = swiper.touchEventsData;\n      var params = swiper.params;\n      var touches = swiper.touches;\n      if (swiper.animating && params.preventInteractionOnTransition) {\n        return;\n      }\n      var e = event;\n      if (e.originalEvent) { e = e.originalEvent; }\n      data.isTouchEvent = e.type === 'touchstart';\n      if (!data.isTouchEvent && 'which' in e && e.which === 3) { return; }\n      if (!data.isTouchEvent && 'button' in e && e.button > 0) { return; }\n      if (data.isTouched && data.isMoved) { return; }\n      if (params.noSwiping && $(e.target).closest(params.noSwipingSelector ? params.noSwipingSelector : (\".\" + (params.noSwipingClass)))[0]) {\n        swiper.allowClick = true;\n        return;\n      }\n      if (params.swipeHandler) {\n        if (!$(e).closest(params.swipeHandler)[0]) { return; }\n      }\n  \n      touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n      touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n      var startX = touches.currentX;\n      var startY = touches.currentY;\n  \n      // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore\n  \n      var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n      var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n      if (\n        edgeSwipeDetection\n        && ((startX <= edgeSwipeThreshold)\n        || (startX >= win.screen.width - edgeSwipeThreshold))\n      ) {\n        return;\n      }\n  \n      Utils.extend(data, {\n        isTouched: true,\n        isMoved: false,\n        allowTouchCallbacks: true,\n        isScrolling: undefined,\n        startMoving: undefined,\n      });\n  \n      touches.startX = startX;\n      touches.startY = startY;\n      data.touchStartTime = Utils.now();\n      swiper.allowClick = true;\n      swiper.updateSize();\n      swiper.swipeDirection = undefined;\n      if (params.threshold > 0) { data.allowThresholdMove = false; }\n      if (e.type !== 'touchstart') {\n        var preventDefault = true;\n        if ($(e.target).is(data.formElements)) { preventDefault = false; }\n        if (\n          doc.activeElement\n          && $(doc.activeElement).is(data.formElements)\n          && doc.activeElement !== e.target\n        ) {\n          doc.activeElement.blur();\n        }\n  \n        var shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n        if (params.touchStartForcePreventDefault || shouldPreventDefault) {\n          e.preventDefault();\n        }\n      }\n      swiper.emit('touchStart', e);\n    }\n  \n    function onTouchMove (event) {\n      var swiper = this;\n      var data = swiper.touchEventsData;\n      var params = swiper.params;\n      var touches = swiper.touches;\n      var rtl = swiper.rtlTranslate;\n      var e = event;\n      if (e.originalEvent) { e = e.originalEvent; }\n      if (!data.isTouched) {\n        if (data.startMoving && data.isScrolling) {\n          swiper.emit('touchMoveOpposite', e);\n        }\n        return;\n      }\n      if (data.isTouchEvent && e.type === 'mousemove') { return; }\n      var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n      var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n      if (e.preventedByNestedSwiper) {\n        touches.startX = pageX;\n        touches.startY = pageY;\n        return;\n      }\n      if (!swiper.allowTouchMove) {\n        // isMoved = true;\n        swiper.allowClick = false;\n        if (data.isTouched) {\n          Utils.extend(touches, {\n            startX: pageX,\n            startY: pageY,\n            currentX: pageX,\n            currentY: pageY,\n          });\n          data.touchStartTime = Utils.now();\n        }\n        return;\n      }\n      if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n        if (swiper.isVertical()) {\n          // Vertical\n          if (\n            (pageY < touches.startY && swiper.translate <= swiper.maxTranslate())\n            || (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n          ) {\n            data.isTouched = false;\n            data.isMoved = false;\n            return;\n          }\n        } else if (\n          (pageX < touches.startX && swiper.translate <= swiper.maxTranslate())\n          || (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n        ) {\n          return;\n        }\n      }\n      if (data.isTouchEvent && doc.activeElement) {\n        if (e.target === doc.activeElement && $(e.target).is(data.formElements)) {\n          data.isMoved = true;\n          swiper.allowClick = false;\n          return;\n        }\n      }\n      if (data.allowTouchCallbacks) {\n        swiper.emit('touchMove', e);\n      }\n      if (e.targetTouches && e.targetTouches.length > 1) { return; }\n  \n      touches.currentX = pageX;\n      touches.currentY = pageY;\n  \n      var diffX = touches.currentX - touches.startX;\n      var diffY = touches.currentY - touches.startY;\n      if (swiper.params.threshold && Math.sqrt((Math.pow( diffX, 2 )) + (Math.pow( diffY, 2 ))) < swiper.params.threshold) { return; }\n  \n      if (typeof data.isScrolling === 'undefined') {\n        var touchAngle;\n        if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) {\n          data.isScrolling = false;\n        } else {\n          // eslint-disable-next-line\n          if ((diffX * diffX) + (diffY * diffY) >= 25) {\n            touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n            data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle);\n          }\n        }\n      }\n      if (data.isScrolling) {\n        swiper.emit('touchMoveOpposite', e);\n      }\n      if (typeof data.startMoving === 'undefined') {\n        if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n          data.startMoving = true;\n        }\n      }\n      if (data.isScrolling) {\n        data.isTouched = false;\n        return;\n      }\n      if (!data.startMoving) {\n        return;\n      }\n      swiper.allowClick = false;\n      e.preventDefault();\n      if (params.touchMoveStopPropagation && !params.nested) {\n        e.stopPropagation();\n      }\n  \n      if (!data.isMoved) {\n        if (params.loop) {\n          swiper.loopFix();\n        }\n        data.startTranslate = swiper.getTranslate();\n        swiper.setTransition(0);\n        if (swiper.animating) {\n          swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n        }\n        data.allowMomentumBounce = false;\n        // Grab Cursor\n        if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n          swiper.setGrabCursor(true);\n        }\n        swiper.emit('sliderFirstMove', e);\n      }\n      swiper.emit('sliderMove', e);\n      data.isMoved = true;\n  \n      var diff = swiper.isHorizontal() ? diffX : diffY;\n      touches.diff = diff;\n  \n      diff *= params.touchRatio;\n      if (rtl) { diff = -diff; }\n  \n      swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n      data.currentTranslate = diff + data.startTranslate;\n  \n      var disableParentSwiper = true;\n      var resistanceRatio = params.resistanceRatio;\n      if (params.touchReleaseOnEdges) {\n        resistanceRatio = 0;\n      }\n      if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) {\n        disableParentSwiper = false;\n        if (params.resistance) { data.currentTranslate = (swiper.minTranslate() - 1) + (Math.pow( (-swiper.minTranslate() + data.startTranslate + diff), resistanceRatio )); }\n      } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n        disableParentSwiper = false;\n        if (params.resistance) { data.currentTranslate = (swiper.maxTranslate() + 1) - (Math.pow( (swiper.maxTranslate() - data.startTranslate - diff), resistanceRatio )); }\n      }\n  \n      if (disableParentSwiper) {\n        e.preventedByNestedSwiper = true;\n      }\n  \n      // Directions locks\n      if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n        data.currentTranslate = data.startTranslate;\n      }\n      if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n        data.currentTranslate = data.startTranslate;\n      }\n  \n  \n      // Threshold\n      if (params.threshold > 0) {\n        if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n          if (!data.allowThresholdMove) {\n            data.allowThresholdMove = true;\n            touches.startX = touches.currentX;\n            touches.startY = touches.currentY;\n            data.currentTranslate = data.startTranslate;\n            touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n            return;\n          }\n        } else {\n          data.currentTranslate = data.startTranslate;\n          return;\n        }\n      }\n  \n      if (!params.followFinger) { return; }\n  \n      // Update active index in free mode\n      if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n        swiper.updateActiveIndex();\n        swiper.updateSlidesClasses();\n      }\n      if (params.freeMode) {\n        // Velocity\n        if (data.velocities.length === 0) {\n          data.velocities.push({\n            position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n            time: data.touchStartTime,\n          });\n        }\n        data.velocities.push({\n          position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n          time: Utils.now(),\n        });\n      }\n      // Update progress\n      swiper.updateProgress(data.currentTranslate);\n      // Update translate\n      swiper.setTranslate(data.currentTranslate);\n    }\n  \n    function onTouchEnd (event) {\n      var swiper = this;\n      var data = swiper.touchEventsData;\n  \n      var params = swiper.params;\n      var touches = swiper.touches;\n      var rtl = swiper.rtlTranslate;\n      var $wrapperEl = swiper.$wrapperEl;\n      var slidesGrid = swiper.slidesGrid;\n      var snapGrid = swiper.snapGrid;\n      var e = event;\n      if (e.originalEvent) { e = e.originalEvent; }\n      if (data.allowTouchCallbacks) {\n        swiper.emit('touchEnd', e);\n      }\n      data.allowTouchCallbacks = false;\n      if (!data.isTouched) {\n        if (data.isMoved && params.grabCursor) {\n          swiper.setGrabCursor(false);\n        }\n        data.isMoved = false;\n        data.startMoving = false;\n        return;\n      }\n      // Return Grab Cursor\n      if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n        swiper.setGrabCursor(false);\n      }\n  \n      // Time diff\n      var touchEndTime = Utils.now();\n      var timeDiff = touchEndTime - data.touchStartTime;\n  \n      // Tap, doubleTap, Click\n      if (swiper.allowClick) {\n        swiper.updateClickedSlide(e);\n        swiper.emit('tap', e);\n        if (timeDiff < 300 && (touchEndTime - data.lastClickTime) > 300) {\n          if (data.clickTimeout) { clearTimeout(data.clickTimeout); }\n          data.clickTimeout = Utils.nextTick(function () {\n            if (!swiper || swiper.destroyed) { return; }\n            swiper.emit('click', e);\n          }, 300);\n        }\n        if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {\n          if (data.clickTimeout) { clearTimeout(data.clickTimeout); }\n          swiper.emit('doubleTap', e);\n        }\n      }\n  \n      data.lastClickTime = Utils.now();\n      Utils.nextTick(function () {\n        if (!swiper.destroyed) { swiper.allowClick = true; }\n      });\n  \n      if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n        data.isTouched = false;\n        data.isMoved = false;\n        data.startMoving = false;\n        return;\n      }\n      data.isTouched = false;\n      data.isMoved = false;\n      data.startMoving = false;\n  \n      var currentPos;\n      if (params.followFinger) {\n        currentPos = rtl ? swiper.translate : -swiper.translate;\n      } else {\n        currentPos = -data.currentTranslate;\n      }\n  \n      if (params.freeMode) {\n        if (currentPos < -swiper.minTranslate()) {\n          swiper.slideTo(swiper.activeIndex);\n          return;\n        }\n        if (currentPos > -swiper.maxTranslate()) {\n          if (swiper.slides.length < snapGrid.length) {\n            swiper.slideTo(snapGrid.length - 1);\n          } else {\n            swiper.slideTo(swiper.slides.length - 1);\n          }\n          return;\n        }\n  \n        if (params.freeModeMomentum) {\n          if (data.velocities.length > 1) {\n            var lastMoveEvent = data.velocities.pop();\n            var velocityEvent = data.velocities.pop();\n  \n            var distance = lastMoveEvent.position - velocityEvent.position;\n            var time = lastMoveEvent.time - velocityEvent.time;\n            swiper.velocity = distance / time;\n            swiper.velocity /= 2;\n            if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n              swiper.velocity = 0;\n            }\n            // this implies that the user stopped moving a finger then released.\n            // There would be no events with distance zero, so the last event is stale.\n            if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {\n              swiper.velocity = 0;\n            }\n          } else {\n            swiper.velocity = 0;\n          }\n          swiper.velocity *= params.freeModeMomentumVelocityRatio;\n  \n          data.velocities.length = 0;\n          var momentumDuration = 1000 * params.freeModeMomentumRatio;\n          var momentumDistance = swiper.velocity * momentumDuration;\n  \n          var newPosition = swiper.translate + momentumDistance;\n          if (rtl) { newPosition = -newPosition; }\n  \n          var doBounce = false;\n          var afterBouncePosition;\n          var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n          var needsLoopFix;\n          if (newPosition < swiper.maxTranslate()) {\n            if (params.freeModeMomentumBounce) {\n              if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n                newPosition = swiper.maxTranslate() - bounceAmount;\n              }\n              afterBouncePosition = swiper.maxTranslate();\n              doBounce = true;\n              data.allowMomentumBounce = true;\n            } else {\n              newPosition = swiper.maxTranslate();\n            }\n            if (params.loop && params.centeredSlides) { needsLoopFix = true; }\n          } else if (newPosition > swiper.minTranslate()) {\n            if (params.freeModeMomentumBounce) {\n              if (newPosition - swiper.minTranslate() > bounceAmount) {\n                newPosition = swiper.minTranslate() + bounceAmount;\n              }\n              afterBouncePosition = swiper.minTranslate();\n              doBounce = true;\n              data.allowMomentumBounce = true;\n            } else {\n              newPosition = swiper.minTranslate();\n            }\n            if (params.loop && params.centeredSlides) { needsLoopFix = true; }\n          } else if (params.freeModeSticky) {\n            var nextSlide;\n            for (var j = 0; j < snapGrid.length; j += 1) {\n              if (snapGrid[j] > -newPosition) {\n                nextSlide = j;\n                break;\n              }\n            }\n  \n            if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n              newPosition = snapGrid[nextSlide];\n            } else {\n              newPosition = snapGrid[nextSlide - 1];\n            }\n            newPosition = -newPosition;\n          }\n          if (needsLoopFix) {\n            swiper.once('transitionEnd', function () {\n              swiper.loopFix();\n            });\n          }\n          // Fix duration\n          if (swiper.velocity !== 0) {\n            if (rtl) {\n              momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n            } else {\n              momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n            }\n          } else if (params.freeModeSticky) {\n            swiper.slideToClosest();\n            return;\n          }\n  \n          if (params.freeModeMomentumBounce && doBounce) {\n            swiper.updateProgress(afterBouncePosition);\n            swiper.setTransition(momentumDuration);\n            swiper.setTranslate(newPosition);\n            swiper.transitionStart(true, swiper.swipeDirection);\n            swiper.animating = true;\n            $wrapperEl.transitionEnd(function () {\n              if (!swiper || swiper.destroyed || !data.allowMomentumBounce) { return; }\n              swiper.emit('momentumBounce');\n  \n              swiper.setTransition(params.speed);\n              swiper.setTranslate(afterBouncePosition);\n              $wrapperEl.transitionEnd(function () {\n                if (!swiper || swiper.destroyed) { return; }\n                swiper.transitionEnd();\n              });\n            });\n          } else if (swiper.velocity) {\n            swiper.updateProgress(newPosition);\n            swiper.setTransition(momentumDuration);\n            swiper.setTranslate(newPosition);\n            swiper.transitionStart(true, swiper.swipeDirection);\n            if (!swiper.animating) {\n              swiper.animating = true;\n              $wrapperEl.transitionEnd(function () {\n                if (!swiper || swiper.destroyed) { return; }\n                swiper.transitionEnd();\n              });\n            }\n          } else {\n            swiper.updateProgress(newPosition);\n          }\n  \n          swiper.updateActiveIndex();\n          swiper.updateSlidesClasses();\n        } else if (params.freeModeSticky) {\n          swiper.slideToClosest();\n          return;\n        }\n  \n        if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n          swiper.updateProgress();\n          swiper.updateActiveIndex();\n          swiper.updateSlidesClasses();\n        }\n        return;\n      }\n  \n      // Find current slide\n      var stopIndex = 0;\n      var groupSize = swiper.slidesSizesGrid[0];\n      for (var i = 0; i < slidesGrid.length; i += params.slidesPerGroup) {\n        if (typeof slidesGrid[i + params.slidesPerGroup] !== 'undefined') {\n          if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + params.slidesPerGroup]) {\n            stopIndex = i;\n            groupSize = slidesGrid[i + params.slidesPerGroup] - slidesGrid[i];\n          }\n        } else if (currentPos >= slidesGrid[i]) {\n          stopIndex = i;\n          groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n        }\n      }\n  \n      // Find current slide size\n      var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n  \n      if (timeDiff > params.longSwipesMs) {\n        // Long touches\n        if (!params.longSwipes) {\n          swiper.slideTo(swiper.activeIndex);\n          return;\n        }\n        if (swiper.swipeDirection === 'next') {\n          if (ratio >= params.longSwipesRatio) { swiper.slideTo(stopIndex + params.slidesPerGroup); }\n          else { swiper.slideTo(stopIndex); }\n        }\n        if (swiper.swipeDirection === 'prev') {\n          if (ratio > (1 - params.longSwipesRatio)) { swiper.slideTo(stopIndex + params.slidesPerGroup); }\n          else { swiper.slideTo(stopIndex); }\n        }\n      } else {\n        // Short swipes\n        if (!params.shortSwipes) {\n          swiper.slideTo(swiper.activeIndex);\n          return;\n        }\n        if (swiper.swipeDirection === 'next') {\n          swiper.slideTo(stopIndex + params.slidesPerGroup);\n        }\n        if (swiper.swipeDirection === 'prev') {\n          swiper.slideTo(stopIndex);\n        }\n      }\n    }\n  \n    function onResize () {\n      var swiper = this;\n  \n      var params = swiper.params;\n      var el = swiper.el;\n  \n      if (el && el.offsetWidth === 0) { return; }\n  \n      // Breakpoints\n      if (params.breakpoints) {\n        swiper.setBreakpoint();\n      }\n  \n      // Save locks\n      var allowSlideNext = swiper.allowSlideNext;\n      var allowSlidePrev = swiper.allowSlidePrev;\n      var snapGrid = swiper.snapGrid;\n  \n      // Disable locks on resize\n      swiper.allowSlideNext = true;\n      swiper.allowSlidePrev = true;\n  \n      swiper.updateSize();\n      swiper.updateSlides();\n  \n      if (params.freeMode) {\n        var newTranslate = Math.min(Math.max(swiper.translate, swiper.maxTranslate()), swiper.minTranslate());\n        swiper.setTranslate(newTranslate);\n        swiper.updateActiveIndex();\n        swiper.updateSlidesClasses();\n  \n        if (params.autoHeight) {\n          swiper.updateAutoHeight();\n        }\n      } else {\n        swiper.updateSlidesClasses();\n        if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n          swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n        } else {\n          swiper.slideTo(swiper.activeIndex, 0, false, true);\n        }\n      }\n      if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n        swiper.autoplay.run();\n      }\n      // Return locks after resize\n      swiper.allowSlidePrev = allowSlidePrev;\n      swiper.allowSlideNext = allowSlideNext;\n  \n      if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n        swiper.checkOverflow();\n      }\n    }\n  \n    function onClick (e) {\n      var swiper = this;\n      if (!swiper.allowClick) {\n        if (swiper.params.preventClicks) { e.preventDefault(); }\n        if (swiper.params.preventClicksPropagation && swiper.animating) {\n          e.stopPropagation();\n          e.stopImmediatePropagation();\n        }\n      }\n    }\n  \n    function attachEvents() {\n      var swiper = this;\n      var params = swiper.params;\n      var touchEvents = swiper.touchEvents;\n      var el = swiper.el;\n      var wrapperEl = swiper.wrapperEl;\n  \n      {\n        swiper.onTouchStart = onTouchStart.bind(swiper);\n        swiper.onTouchMove = onTouchMove.bind(swiper);\n        swiper.onTouchEnd = onTouchEnd.bind(swiper);\n      }\n  \n      swiper.onClick = onClick.bind(swiper);\n  \n      var target = params.touchEventsTarget === 'container' ? el : wrapperEl;\n      var capture = !!params.nested;\n  \n      // Touch Events\n      {\n        if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n          target.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n          doc.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n          doc.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n        } else {\n          if (Support.touch) {\n            var passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n            target.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n            target.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture: capture } : capture);\n            target.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n          }\n          if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n            target.addEventListener('mousedown', swiper.onTouchStart, false);\n            doc.addEventListener('mousemove', swiper.onTouchMove, capture);\n            doc.addEventListener('mouseup', swiper.onTouchEnd, false);\n          }\n        }\n        // Prevent Links Clicks\n        if (params.preventClicks || params.preventClicksPropagation) {\n          target.addEventListener('click', swiper.onClick, true);\n        }\n      }\n  \n      // Resize handler\n      swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);\n    }\n  \n    function detachEvents() {\n      var swiper = this;\n  \n      var params = swiper.params;\n      var touchEvents = swiper.touchEvents;\n      var el = swiper.el;\n      var wrapperEl = swiper.wrapperEl;\n  \n      var target = params.touchEventsTarget === 'container' ? el : wrapperEl;\n      var capture = !!params.nested;\n  \n      // Touch Events\n      {\n        if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n          target.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n          doc.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n          doc.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n        } else {\n          if (Support.touch) {\n            var passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n            target.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n            target.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n            target.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n          }\n          if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n            target.removeEventListener('mousedown', swiper.onTouchStart, false);\n            doc.removeEventListener('mousemove', swiper.onTouchMove, capture);\n            doc.removeEventListener('mouseup', swiper.onTouchEnd, false);\n          }\n        }\n        // Prevent Links Clicks\n        if (params.preventClicks || params.preventClicksPropagation) {\n          target.removeEventListener('click', swiper.onClick, true);\n        }\n      }\n  \n      // Resize handler\n      swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);\n    }\n  \n    var events = {\n      attachEvents: attachEvents,\n      detachEvents: detachEvents,\n    };\n  \n    function setBreakpoint () {\n      var swiper = this;\n      var activeIndex = swiper.activeIndex;\n      var initialized = swiper.initialized;\n      var loopedSlides = swiper.loopedSlides; if ( loopedSlides === void 0 ) loopedSlides = 0;\n      var params = swiper.params;\n      var breakpoints = params.breakpoints;\n      if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) { return; }\n  \n      // Set breakpoint for window width and update parameters\n      var breakpoint = swiper.getBreakpoint(breakpoints);\n  \n      if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n        var breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n        if (breakpointOnlyParams) {\n          ['slidesPerView', 'spaceBetween', 'slidesPerGroup'].forEach(function (param) {\n            var paramValue = breakpointOnlyParams[param];\n            if (typeof paramValue === 'undefined') { return; }\n            if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {\n              breakpointOnlyParams[param] = 'auto';\n            } else if (param === 'slidesPerView') {\n              breakpointOnlyParams[param] = parseFloat(paramValue);\n            } else {\n              breakpointOnlyParams[param] = parseInt(paramValue, 10);\n            }\n          });\n        }\n  \n        var breakpointParams = breakpointOnlyParams || swiper.originalParams;\n        var directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n        var needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n  \n        if (directionChanged && initialized) {\n          swiper.changeDirection();\n        }\n  \n        Utils.extend(swiper.params, breakpointParams);\n  \n        Utils.extend(swiper, {\n          allowTouchMove: swiper.params.allowTouchMove,\n          allowSlideNext: swiper.params.allowSlideNext,\n          allowSlidePrev: swiper.params.allowSlidePrev,\n        });\n  \n        swiper.currentBreakpoint = breakpoint;\n  \n        if (needsReLoop && initialized) {\n          swiper.loopDestroy();\n          swiper.loopCreate();\n          swiper.updateSlides();\n          swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);\n        }\n  \n        swiper.emit('breakpoint', breakpointParams);\n      }\n    }\n  \n    function getBreakpoint (breakpoints) {\n      var swiper = this;\n      // Get breakpoint for window width\n      if (!breakpoints) { return undefined; }\n      var breakpoint = false;\n      var points = [];\n      Object.keys(breakpoints).forEach(function (point) {\n        points.push(point);\n      });\n      points.sort(function (a, b) { return parseInt(a, 10) - parseInt(b, 10); });\n      for (var i = 0; i < points.length; i += 1) {\n        var point = points[i];\n        if (swiper.params.breakpointsInverse) {\n          if (point <= win.innerWidth) {\n            breakpoint = point;\n          }\n        } else if (point >= win.innerWidth && !breakpoint) {\n          breakpoint = point;\n        }\n      }\n      return breakpoint || 'max';\n    }\n  \n    var breakpoints = { setBreakpoint: setBreakpoint, getBreakpoint: getBreakpoint };\n  \n    function addClasses () {\n      var swiper = this;\n      var classNames = swiper.classNames;\n      var params = swiper.params;\n      var rtl = swiper.rtl;\n      var $el = swiper.$el;\n      var suffixes = [];\n  \n      suffixes.push('initialized');\n      suffixes.push(params.direction);\n  \n      if (params.freeMode) {\n        suffixes.push('free-mode');\n      }\n      if (!Support.flexbox) {\n        suffixes.push('no-flexbox');\n      }\n      if (params.autoHeight) {\n        suffixes.push('autoheight');\n      }\n      if (rtl) {\n        suffixes.push('rtl');\n      }\n      if (params.slidesPerColumn > 1) {\n        suffixes.push('multirow');\n      }\n      if (Device.android) {\n        suffixes.push('android');\n      }\n      if (Device.ios) {\n        suffixes.push('ios');\n      }\n      // WP8 Touch Events Fix\n      if ((Browser.isIE || Browser.isEdge) && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n        suffixes.push((\"wp8-\" + (params.direction)));\n      }\n  \n      suffixes.forEach(function (suffix) {\n        classNames.push(params.containerModifierClass + suffix);\n      });\n  \n      $el.addClass(classNames.join(' '));\n    }\n  \n    function removeClasses () {\n      var swiper = this;\n      var $el = swiper.$el;\n      var classNames = swiper.classNames;\n  \n      $el.removeClass(classNames.join(' '));\n    }\n  \n    var classes = { addClasses: addClasses, removeClasses: removeClasses };\n  \n    function loadImage (imageEl, src, srcset, sizes, checkForComplete, callback) {\n      var image;\n      function onReady() {\n        if (callback) { callback(); }\n      }\n      if (!imageEl.complete || !checkForComplete) {\n        if (src) {\n          image = new win.Image();\n          image.onload = onReady;\n          image.onerror = onReady;\n          if (sizes) {\n            image.sizes = sizes;\n          }\n          if (srcset) {\n            image.srcset = srcset;\n          }\n          if (src) {\n            image.src = src;\n          }\n        } else {\n          onReady();\n        }\n      } else {\n        // image already loaded...\n        onReady();\n      }\n    }\n  \n    function preloadImages () {\n      var swiper = this;\n      swiper.imagesToLoad = swiper.$el.find('img');\n      function onReady() {\n        if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) { return; }\n        if (swiper.imagesLoaded !== undefined) { swiper.imagesLoaded += 1; }\n        if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n          if (swiper.params.updateOnImagesReady) { swiper.update(); }\n          swiper.emit('imagesReady');\n        }\n      }\n      for (var i = 0; i < swiper.imagesToLoad.length; i += 1) {\n        var imageEl = swiper.imagesToLoad[i];\n        swiper.loadImage(\n          imageEl,\n          imageEl.currentSrc || imageEl.getAttribute('src'),\n          imageEl.srcset || imageEl.getAttribute('srcset'),\n          imageEl.sizes || imageEl.getAttribute('sizes'),\n          true,\n          onReady\n        );\n      }\n    }\n  \n    var images = {\n      loadImage: loadImage,\n      preloadImages: preloadImages,\n    };\n  \n    function checkOverflow() {\n      var swiper = this;\n      var wasLocked = swiper.isLocked;\n  \n      swiper.isLocked = swiper.snapGrid.length === 1;\n      swiper.allowSlideNext = !swiper.isLocked;\n      swiper.allowSlidePrev = !swiper.isLocked;\n  \n      // events\n      if (wasLocked !== swiper.isLocked) { swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); }\n  \n      if (wasLocked && wasLocked !== swiper.isLocked) {\n        swiper.isEnd = false;\n        swiper.navigation.update();\n      }\n    }\n  \n    var checkOverflow$1 = { checkOverflow: checkOverflow };\n  \n    var defaults = {\n      init: true,\n      direction: 'horizontal',\n      touchEventsTarget: 'container',\n      initialSlide: 0,\n      speed: 300,\n      //\n      preventInteractionOnTransition: false,\n  \n      // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).\n      edgeSwipeDetection: false,\n      edgeSwipeThreshold: 20,\n  \n      // Free mode\n      freeMode: false,\n      freeModeMomentum: true,\n      freeModeMomentumRatio: 1,\n      freeModeMomentumBounce: true,\n      freeModeMomentumBounceRatio: 1,\n      freeModeMomentumVelocityRatio: 1,\n      freeModeSticky: false,\n      freeModeMinimumVelocity: 0.02,\n  \n      // Autoheight\n      autoHeight: false,\n  \n      // Set wrapper width\n      setWrapperSize: false,\n  \n      // Virtual Translate\n      virtualTranslate: false,\n  \n      // Effects\n      effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n  \n      // Breakpoints\n      breakpoints: undefined,\n      breakpointsInverse: false,\n  \n      // Slides grid\n      spaceBetween: 0,\n      slidesPerView: 1,\n      slidesPerColumn: 1,\n      slidesPerColumnFill: 'column',\n      slidesPerGroup: 1,\n      centeredSlides: false,\n      slidesOffsetBefore: 0, // in px\n      slidesOffsetAfter: 0, // in px\n      normalizeSlideIndex: true,\n      centerInsufficientSlides: false,\n  \n      // Disable swiper and hide navigation when container not overflow\n      watchOverflow: false,\n  \n      // Round length\n      roundLengths: false,\n  \n      // Touches\n      touchRatio: 1,\n      touchAngle: 45,\n      simulateTouch: true,\n      shortSwipes: true,\n      longSwipes: true,\n      longSwipesRatio: 0.5,\n      longSwipesMs: 300,\n      followFinger: true,\n      allowTouchMove: true,\n      threshold: 0,\n      touchMoveStopPropagation: true,\n      touchStartPreventDefault: true,\n      touchStartForcePreventDefault: false,\n      touchReleaseOnEdges: false,\n  \n      // Unique Navigation Elements\n      uniqueNavElements: true,\n  \n      // Resistance\n      resistance: true,\n      resistanceRatio: 0.85,\n  \n      // Progress\n      watchSlidesProgress: false,\n      watchSlidesVisibility: false,\n  \n      // Cursor\n      grabCursor: false,\n  \n      // Clicks\n      preventClicks: true,\n      preventClicksPropagation: true,\n      slideToClickedSlide: false,\n  \n      // Images\n      preloadImages: true,\n      updateOnImagesReady: true,\n  \n      // loop\n      loop: false,\n      loopAdditionalSlides: 0,\n      loopedSlides: null,\n      loopFillGroupWithBlank: false,\n  \n      // Swiping/no swiping\n      allowSlidePrev: true,\n      allowSlideNext: true,\n      swipeHandler: null, // '.swipe-handler',\n      noSwiping: true,\n      noSwipingClass: 'swiper-no-swiping',\n      noSwipingSelector: null,\n  \n      // Passive Listeners\n      passiveListeners: true,\n  \n      // NS\n      containerModifierClass: 'swiper-container-', // NEW\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  \n      // Callbacks\n      runCallbacksOnInit: true,\n    };\n  \n    /* eslint no-param-reassign: \"off\" */\n  \n    var prototypes = {\n      update: update,\n      translate: translate,\n      transition: transition$1,\n      slide: slide,\n      loop: loop,\n      grabCursor: grabCursor,\n      manipulation: manipulation,\n      events: events,\n      breakpoints: breakpoints,\n      checkOverflow: checkOverflow$1,\n      classes: classes,\n      images: images,\n    };\n  \n    var extendedDefaults = {};\n  \n    var Swiper = /*@__PURE__*/(function (SwiperClass) {\n      function Swiper() {\n        var assign;\n  \n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n        var el;\n        var params;\n        if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {\n          params = args[0];\n        } else {\n          (assign = args, el = assign[0], params = assign[1]);\n        }\n        if (!params) { params = {}; }\n  \n        params = Utils.extend({}, params);\n        if (el && !params.el) { params.el = el; }\n  \n        SwiperClass.call(this, params);\n  \n        Object.keys(prototypes).forEach(function (prototypeGroup) {\n          Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) {\n            if (!Swiper.prototype[protoMethod]) {\n              Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n            }\n          });\n        });\n  \n        // Swiper Instance\n        var swiper = this;\n        if (typeof swiper.modules === 'undefined') {\n          swiper.modules = {};\n        }\n        Object.keys(swiper.modules).forEach(function (moduleName) {\n          var module = swiper.modules[moduleName];\n          if (module.params) {\n            var moduleParamName = Object.keys(module.params)[0];\n            var moduleParams = module.params[moduleParamName];\n            if (typeof moduleParams !== 'object' || moduleParams === null) { return; }\n            if (!(moduleParamName in params && 'enabled' in moduleParams)) { return; }\n            if (params[moduleParamName] === true) {\n              params[moduleParamName] = { enabled: true };\n            }\n            if (\n              typeof params[moduleParamName] === 'object'\n              && !('enabled' in params[moduleParamName])\n            ) {\n              params[moduleParamName].enabled = true;\n            }\n            if (!params[moduleParamName]) { params[moduleParamName] = { enabled: false }; }\n          }\n        });\n  \n        // Extend defaults with modules params\n        var swiperParams = Utils.extend({}, defaults);\n        swiper.useModulesParams(swiperParams);\n  \n        // Extend defaults with passed params\n        swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);\n        swiper.originalParams = Utils.extend({}, swiper.params);\n        swiper.passedParams = Utils.extend({}, params);\n  \n        // Save Dom lib\n        swiper.$ = $;\n  \n        // Find el\n        var $el = $(swiper.params.el);\n        el = $el[0];\n  \n        if (!el) {\n          return undefined;\n        }\n  \n        if ($el.length > 1) {\n          var swipers = [];\n          $el.each(function (index, containerEl) {\n            var newParams = Utils.extend({}, params, { el: containerEl });\n            swipers.push(new Swiper(newParams));\n          });\n          return swipers;\n        }\n  \n        el.swiper = swiper;\n        $el.data('swiper', swiper);\n  \n        // Find Wrapper\n        var $wrapperEl = $el.children((\".\" + (swiper.params.wrapperClass)));\n  \n        // Extend Swiper\n        Utils.extend(swiper, {\n          $el: $el,\n          el: el,\n          $wrapperEl: $wrapperEl,\n          wrapperEl: $wrapperEl[0],\n  \n          // Classes\n          classNames: [],\n  \n          // Slides\n          slides: $(),\n          slidesGrid: [],\n          snapGrid: [],\n          slidesSizesGrid: [],\n  \n          // isDirection\n          isHorizontal: function isHorizontal() {\n            return swiper.params.direction === 'horizontal';\n          },\n          isVertical: function isVertical() {\n            return swiper.params.direction === 'vertical';\n          },\n          // RTL\n          rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n          rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n          wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n  \n          // Indexes\n          activeIndex: 0,\n          realIndex: 0,\n  \n          //\n          isBeginning: true,\n          isEnd: false,\n  \n          // Props\n          translate: 0,\n          previousTranslate: 0,\n          progress: 0,\n          velocity: 0,\n          animating: false,\n  \n          // Locks\n          allowSlideNext: swiper.params.allowSlideNext,\n          allowSlidePrev: swiper.params.allowSlidePrev,\n  \n          // Touch Events\n          touchEvents: (function touchEvents() {\n            var touch = ['touchstart', 'touchmove', 'touchend'];\n            var desktop = ['mousedown', 'mousemove', 'mouseup'];\n            if (Support.pointerEvents) {\n              desktop = ['pointerdown', 'pointermove', 'pointerup'];\n            } else if (Support.prefixedPointerEvents) {\n              desktop = ['MSPointerDown', 'MSPointerMove', 'MSPointerUp'];\n            }\n            swiper.touchEventsTouch = {\n              start: touch[0],\n              move: touch[1],\n              end: touch[2],\n            };\n            swiper.touchEventsDesktop = {\n              start: desktop[0],\n              move: desktop[1],\n              end: desktop[2],\n            };\n            return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n          }()),\n          touchEventsData: {\n            isTouched: undefined,\n            isMoved: undefined,\n            allowTouchCallbacks: undefined,\n            touchStartTime: undefined,\n            isScrolling: undefined,\n            currentTranslate: undefined,\n            startTranslate: undefined,\n            allowThresholdMove: undefined,\n            // Form elements to match\n            formElements: 'input, select, option, textarea, button, video',\n            // Last click time\n            lastClickTime: Utils.now(),\n            clickTimeout: undefined,\n            // Velocities\n            velocities: [],\n            allowMomentumBounce: undefined,\n            isTouchEvent: undefined,\n            startMoving: undefined,\n          },\n  \n          // Clicks\n          allowClick: true,\n  \n          // Touches\n          allowTouchMove: swiper.params.allowTouchMove,\n  \n          touches: {\n            startX: 0,\n            startY: 0,\n            currentX: 0,\n            currentY: 0,\n            diff: 0,\n          },\n  \n          // Images\n          imagesToLoad: [],\n          imagesLoaded: 0,\n  \n        });\n  \n        // Install Modules\n        swiper.useModules();\n  \n        // Init\n        if (swiper.params.init) {\n          swiper.init();\n        }\n  \n        // Return app instance\n        return swiper;\n      }\n  \n      if ( SwiperClass ) Swiper.__proto__ = SwiperClass;\n      Swiper.prototype = Object.create( SwiperClass && SwiperClass.prototype );\n      Swiper.prototype.constructor = Swiper;\n  \n      var staticAccessors = { extendedDefaults: { configurable: true },defaults: { configurable: true },Class: { configurable: true },$: { configurable: true } };\n  \n      Swiper.prototype.slidesPerViewDynamic = function slidesPerViewDynamic () {\n        var swiper = this;\n        var params = swiper.params;\n        var slides = swiper.slides;\n        var slidesGrid = swiper.slidesGrid;\n        var swiperSize = swiper.size;\n        var activeIndex = swiper.activeIndex;\n        var spv = 1;\n        if (params.centeredSlides) {\n          var slideSize = slides[activeIndex].swiperSlideSize;\n          var breakLoop;\n          for (var i = activeIndex + 1; i < slides.length; i += 1) {\n            if (slides[i] && !breakLoop) {\n              slideSize += slides[i].swiperSlideSize;\n              spv += 1;\n              if (slideSize > swiperSize) { breakLoop = true; }\n            }\n          }\n          for (var i$1 = activeIndex - 1; i$1 >= 0; i$1 -= 1) {\n            if (slides[i$1] && !breakLoop) {\n              slideSize += slides[i$1].swiperSlideSize;\n              spv += 1;\n              if (slideSize > swiperSize) { breakLoop = true; }\n            }\n          }\n        } else {\n          for (var i$2 = activeIndex + 1; i$2 < slides.length; i$2 += 1) {\n            if (slidesGrid[i$2] - slidesGrid[activeIndex] < swiperSize) {\n              spv += 1;\n            }\n          }\n        }\n        return spv;\n      };\n  \n      Swiper.prototype.update = function update () {\n        var swiper = this;\n        if (!swiper || swiper.destroyed) { return; }\n        var snapGrid = swiper.snapGrid;\n        var params = swiper.params;\n        // Breakpoints\n        if (params.breakpoints) {\n          swiper.setBreakpoint();\n        }\n        swiper.updateSize();\n        swiper.updateSlides();\n        swiper.updateProgress();\n        swiper.updateSlidesClasses();\n  \n        function setTranslate() {\n          var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n          var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n          swiper.setTranslate(newTranslate);\n          swiper.updateActiveIndex();\n          swiper.updateSlidesClasses();\n        }\n        var translated;\n        if (swiper.params.freeMode) {\n          setTranslate();\n          if (swiper.params.autoHeight) {\n            swiper.updateAutoHeight();\n          }\n        } else {\n          if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n            translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n          } else {\n            translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n          }\n          if (!translated) {\n            setTranslate();\n          }\n        }\n        if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n          swiper.checkOverflow();\n        }\n        swiper.emit('update');\n      };\n  \n      Swiper.prototype.changeDirection = function changeDirection (newDirection, needUpdate) {\n        if ( needUpdate === void 0 ) needUpdate = true;\n  \n        var swiper = this;\n        var currentDirection = swiper.params.direction;\n        if (!newDirection) {\n          // eslint-disable-next-line\n          newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n        }\n        if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) {\n          return swiper;\n        }\n  \n        swiper.$el\n          .removeClass((\"\" + (swiper.params.containerModifierClass) + currentDirection + \" wp8-\" + currentDirection))\n          .addClass((\"\" + (swiper.params.containerModifierClass) + newDirection));\n  \n        if ((Browser.isIE || Browser.isEdge) && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n          swiper.$el.addClass(((swiper.params.containerModifierClass) + \"wp8-\" + newDirection));\n        }\n  \n        swiper.params.direction = newDirection;\n  \n        swiper.slides.each(function (slideIndex, slideEl) {\n          if (newDirection === 'vertical') {\n            slideEl.style.width = '';\n          } else {\n            slideEl.style.height = '';\n          }\n        });\n  \n        swiper.emit('changeDirection');\n        if (needUpdate) { swiper.update(); }\n  \n        return swiper;\n      };\n  \n      Swiper.prototype.init = function init () {\n        var swiper = this;\n        if (swiper.initialized) { return; }\n  \n        swiper.emit('beforeInit');\n  \n        // Set breakpoint\n        if (swiper.params.breakpoints) {\n          swiper.setBreakpoint();\n        }\n  \n        // Add Classes\n        swiper.addClasses();\n  \n        // Create loop\n        if (swiper.params.loop) {\n          swiper.loopCreate();\n        }\n  \n        // Update size\n        swiper.updateSize();\n  \n        // Update slides\n        swiper.updateSlides();\n  \n        if (swiper.params.watchOverflow) {\n          swiper.checkOverflow();\n        }\n  \n        // Set Grab Cursor\n        if (swiper.params.grabCursor) {\n          swiper.setGrabCursor();\n        }\n  \n        if (swiper.params.preloadImages) {\n          swiper.preloadImages();\n        }\n  \n        // Slide To Initial Slide\n        if (swiper.params.loop) {\n          swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);\n        } else {\n          swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);\n        }\n  \n        // Attach events\n        swiper.attachEvents();\n  \n        // Init Flag\n        swiper.initialized = true;\n  \n        // Emit\n        swiper.emit('init');\n      };\n  \n      Swiper.prototype.destroy = function destroy (deleteInstance, cleanStyles) {\n        if ( deleteInstance === void 0 ) deleteInstance = true;\n        if ( cleanStyles === void 0 ) cleanStyles = true;\n  \n        var swiper = this;\n        var params = swiper.params;\n        var $el = swiper.$el;\n        var $wrapperEl = swiper.$wrapperEl;\n        var slides = swiper.slides;\n  \n        if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n          return null;\n        }\n  \n        swiper.emit('beforeDestroy');\n  \n        // Init Flag\n        swiper.initialized = false;\n  \n        // Detach events\n        swiper.detachEvents();\n  \n        // Destroy loop\n        if (params.loop) {\n          swiper.loopDestroy();\n        }\n  \n        // Cleanup styles\n        if (cleanStyles) {\n          swiper.removeClasses();\n          $el.removeAttr('style');\n          $wrapperEl.removeAttr('style');\n          if (slides && slides.length) {\n            slides\n              .removeClass([\n                params.slideVisibleClass,\n                params.slideActiveClass,\n                params.slideNextClass,\n                params.slidePrevClass ].join(' '))\n              .removeAttr('style')\n              .removeAttr('data-swiper-slide-index')\n              .removeAttr('data-swiper-column')\n              .removeAttr('data-swiper-row');\n          }\n        }\n  \n        swiper.emit('destroy');\n  \n        // Detach emitter events\n        Object.keys(swiper.eventsListeners).forEach(function (eventName) {\n          swiper.off(eventName);\n        });\n  \n        if (deleteInstance !== false) {\n          swiper.$el[0].swiper = null;\n          swiper.$el.data('swiper', null);\n          Utils.deleteProps(swiper);\n        }\n        swiper.destroyed = true;\n  \n        return null;\n      };\n  \n      Swiper.extendDefaults = function extendDefaults (newDefaults) {\n        Utils.extend(extendedDefaults, newDefaults);\n      };\n  \n      staticAccessors.extendedDefaults.get = function () {\n        return extendedDefaults;\n      };\n  \n      staticAccessors.defaults.get = function () {\n        return defaults;\n      };\n  \n      staticAccessors.Class.get = function () {\n        return SwiperClass;\n      };\n  \n      staticAccessors.$.get = function () {\n        return $;\n      };\n  \n      Object.defineProperties( Swiper, staticAccessors );\n  \n      return Swiper;\n    }(SwiperClass));\n  \n    var Device$1 = {\n      name: 'device',\n      proto: {\n        device: Device,\n      },\n      static: {\n        device: Device,\n      },\n    };\n  \n    var Support$1 = {\n      name: 'support',\n      proto: {\n        support: Support,\n      },\n      static: {\n        support: Support,\n      },\n    };\n  \n    var Browser$1 = {\n      name: 'browser',\n      proto: {\n        browser: Browser,\n      },\n      static: {\n        browser: Browser,\n      },\n    };\n  \n    var Resize = {\n      name: 'resize',\n      create: function create() {\n        var swiper = this;\n        Utils.extend(swiper, {\n          resize: {\n            resizeHandler: function resizeHandler() {\n              if (!swiper || swiper.destroyed || !swiper.initialized) { return; }\n              swiper.emit('beforeResize');\n              swiper.emit('resize');\n            },\n            orientationChangeHandler: function orientationChangeHandler() {\n              if (!swiper || swiper.destroyed || !swiper.initialized) { return; }\n              swiper.emit('orientationchange');\n            },\n          },\n        });\n      },\n      on: {\n        init: function init() {\n          var swiper = this;\n          // Emit resize\n          win.addEventListener('resize', swiper.resize.resizeHandler);\n  \n          // Emit orientationchange\n          win.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n        },\n        destroy: function destroy() {\n          var swiper = this;\n          win.removeEventListener('resize', swiper.resize.resizeHandler);\n          win.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n        },\n      },\n    };\n  \n    var Observer = {\n      func: win.MutationObserver || win.WebkitMutationObserver,\n      attach: function attach(target, options) {\n        if ( options === void 0 ) options = {};\n  \n        var swiper = this;\n  \n        var ObserverFunc = Observer.func;\n        var observer = new ObserverFunc(function (mutations) {\n          // The observerUpdate event should only be triggered\n          // once despite the number of mutations.  Additional\n          // triggers are redundant and are very costly\n          if (mutations.length === 1) {\n            swiper.emit('observerUpdate', mutations[0]);\n            return;\n          }\n          var observerUpdate = function observerUpdate() {\n            swiper.emit('observerUpdate', mutations[0]);\n          };\n  \n          if (win.requestAnimationFrame) {\n            win.requestAnimationFrame(observerUpdate);\n          } else {\n            win.setTimeout(observerUpdate, 0);\n          }\n        });\n  \n        observer.observe(target, {\n          attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n          childList: typeof options.childList === 'undefined' ? true : options.childList,\n          characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n        });\n  \n        swiper.observer.observers.push(observer);\n      },\n      init: function init() {\n        var swiper = this;\n        if (!Support.observer || !swiper.params.observer) { return; }\n        if (swiper.params.observeParents) {\n          var containerParents = swiper.$el.parents();\n          for (var i = 0; i < containerParents.length; i += 1) {\n            swiper.observer.attach(containerParents[i]);\n          }\n        }\n        // Observe container\n        swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren });\n  \n        // Observe wrapper\n        swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });\n      },\n      destroy: function destroy() {\n        var swiper = this;\n        swiper.observer.observers.forEach(function (observer) {\n          observer.disconnect();\n        });\n        swiper.observer.observers = [];\n      },\n    };\n  \n    var Observer$1 = {\n      name: 'observer',\n      params: {\n        observer: false,\n        observeParents: false,\n        observeSlideChildren: false,\n      },\n      create: function create() {\n        var swiper = this;\n        Utils.extend(swiper, {\n          observer: {\n            init: Observer.init.bind(swiper),\n            attach: Observer.attach.bind(swiper),\n            destroy: Observer.destroy.bind(swiper),\n            observers: [],\n          },\n        });\n      },\n      on: {\n        init: function init() {\n          var swiper = this;\n          swiper.observer.init();\n        },\n        destroy: function destroy() {\n          var swiper = this;\n          swiper.observer.destroy();\n        },\n      },\n    };\n  \n    var Virtual = {\n      update: function update(force) {\n        var swiper = this;\n        var ref = swiper.params;\n        var slidesPerView = ref.slidesPerView;\n        var slidesPerGroup = ref.slidesPerGroup;\n        var centeredSlides = ref.centeredSlides;\n        var ref$1 = swiper.params.virtual;\n        var addSlidesBefore = ref$1.addSlidesBefore;\n        var addSlidesAfter = ref$1.addSlidesAfter;\n        var ref$2 = swiper.virtual;\n        var previousFrom = ref$2.from;\n        var previousTo = ref$2.to;\n        var slides = ref$2.slides;\n        var previousSlidesGrid = ref$2.slidesGrid;\n        var renderSlide = ref$2.renderSlide;\n        var previousOffset = ref$2.offset;\n        swiper.updateActiveIndex();\n        var activeIndex = swiper.activeIndex || 0;\n  \n        var offsetProp;\n        if (swiper.rtlTranslate) { offsetProp = 'right'; }\n        else { offsetProp = swiper.isHorizontal() ? 'left' : 'top'; }\n  \n        var slidesAfter;\n        var slidesBefore;\n        if (centeredSlides) {\n          slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n          slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n        } else {\n          slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;\n          slidesBefore = slidesPerGroup + addSlidesAfter;\n        }\n        var from = Math.max((activeIndex || 0) - slidesBefore, 0);\n        var to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n        var offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n  \n        Utils.extend(swiper.virtual, {\n          from: from,\n          to: to,\n          offset: offset,\n          slidesGrid: swiper.slidesGrid,\n        });\n  \n        function onRendered() {\n          swiper.updateSlides();\n          swiper.updateProgress();\n          swiper.updateSlidesClasses();\n          if (swiper.lazy && swiper.params.lazy.enabled) {\n            swiper.lazy.load();\n          }\n        }\n  \n        if (previousFrom === from && previousTo === to && !force) {\n          if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n            swiper.slides.css(offsetProp, (offset + \"px\"));\n          }\n          swiper.updateProgress();\n          return;\n        }\n        if (swiper.params.virtual.renderExternal) {\n          swiper.params.virtual.renderExternal.call(swiper, {\n            offset: offset,\n            from: from,\n            to: to,\n            slides: (function getSlides() {\n              var slidesToRender = [];\n              for (var i = from; i <= to; i += 1) {\n                slidesToRender.push(slides[i]);\n              }\n              return slidesToRender;\n            }()),\n          });\n          onRendered();\n          return;\n        }\n        var prependIndexes = [];\n        var appendIndexes = [];\n        if (force) {\n          swiper.$wrapperEl.find((\".\" + (swiper.params.slideClass))).remove();\n        } else {\n          for (var i = previousFrom; i <= previousTo; i += 1) {\n            if (i < from || i > to) {\n              swiper.$wrapperEl.find((\".\" + (swiper.params.slideClass) + \"[data-swiper-slide-index=\\\"\" + i + \"\\\"]\")).remove();\n            }\n          }\n        }\n        for (var i$1 = 0; i$1 < slides.length; i$1 += 1) {\n          if (i$1 >= from && i$1 <= to) {\n            if (typeof previousTo === 'undefined' || force) {\n              appendIndexes.push(i$1);\n            } else {\n              if (i$1 > previousTo) { appendIndexes.push(i$1); }\n              if (i$1 < previousFrom) { prependIndexes.push(i$1); }\n            }\n          }\n        }\n        appendIndexes.forEach(function (index) {\n          swiper.$wrapperEl.append(renderSlide(slides[index], index));\n        });\n        prependIndexes.sort(function (a, b) { return b - a; }).forEach(function (index) {\n          swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n        });\n        swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, (offset + \"px\"));\n        onRendered();\n      },\n      renderSlide: function renderSlide(slide, index) {\n        var swiper = this;\n        var params = swiper.params.virtual;\n        if (params.cache && swiper.virtual.cache[index]) {\n          return swiper.virtual.cache[index];\n        }\n        var $slideEl = params.renderSlide\n          ? $(params.renderSlide.call(swiper, slide, index))\n          : $((\"<div class=\\\"\" + (swiper.params.slideClass) + \"\\\" data-swiper-slide-index=\\\"\" + index + \"\\\">\" + slide + \"</div>\"));\n        if (!$slideEl.attr('data-swiper-slide-index')) { $slideEl.attr('data-swiper-slide-index', index); }\n        if (params.cache) { swiper.virtual.cache[index] = $slideEl; }\n        return $slideEl;\n      },\n      appendSlide: function appendSlide(slides) {\n        var swiper = this;\n        if (typeof slides === 'object' && 'length' in slides) {\n          for (var i = 0; i < slides.length; i += 1) {\n            if (slides[i]) { swiper.virtual.slides.push(slides[i]); }\n          }\n        } else {\n          swiper.virtual.slides.push(slides);\n        }\n        swiper.virtual.update(true);\n      },\n      prependSlide: function prependSlide(slides) {\n        var swiper = this;\n        var activeIndex = swiper.activeIndex;\n        var newActiveIndex = activeIndex + 1;\n        var numberOfNewSlides = 1;\n  \n        if (Array.isArray(slides)) {\n          for (var i = 0; i < slides.length; i += 1) {\n            if (slides[i]) { swiper.virtual.slides.unshift(slides[i]); }\n          }\n          newActiveIndex = activeIndex + slides.length;\n          numberOfNewSlides = slides.length;\n        } else {\n          swiper.virtual.slides.unshift(slides);\n        }\n        if (swiper.params.virtual.cache) {\n          var cache = swiper.virtual.cache;\n          var newCache = {};\n          Object.keys(cache).forEach(function (cachedIndex) {\n            newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cache[cachedIndex];\n          });\n          swiper.virtual.cache = newCache;\n        }\n        swiper.virtual.update(true);\n        swiper.slideTo(newActiveIndex, 0);\n      },\n      removeSlide: function removeSlide(slidesIndexes) {\n        var swiper = this;\n        if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) { return; }\n        var activeIndex = swiper.activeIndex;\n        if (Array.isArray(slidesIndexes)) {\n          for (var i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n            swiper.virtual.slides.splice(slidesIndexes[i], 1);\n            if (swiper.params.virtual.cache) {\n              delete swiper.virtual.cache[slidesIndexes[i]];\n            }\n            if (slidesIndexes[i] < activeIndex) { activeIndex -= 1; }\n            activeIndex = Math.max(activeIndex, 0);\n          }\n        } else {\n          swiper.virtual.slides.splice(slidesIndexes, 1);\n          if (swiper.params.virtual.cache) {\n            delete swiper.virtual.cache[slidesIndexes];\n          }\n          if (slidesIndexes < activeIndex) { activeIndex -= 1; }\n          activeIndex = Math.max(activeIndex, 0);\n        }\n        swiper.virtual.update(true);\n        swiper.slideTo(activeIndex, 0);\n      },\n      removeAllSlides: function removeAllSlides() {\n        var swiper = this;\n        swiper.virtual.slides = [];\n        if (swiper.params.virtual.cache) {\n          swiper.virtual.cache = {};\n        }\n        swiper.virtual.update(true);\n        swiper.slideTo(0, 0);\n      },\n    };\n  \n    var Virtual$1 = {\n      name: 'virtual',\n      params: {\n        virtual: {\n          enabled: false,\n          slides: [],\n          cache: true,\n          renderSlide: null,\n          renderExternal: null,\n          addSlidesBefore: 0,\n          addSlidesAfter: 0,\n        },\n      },\n      create: function create() {\n        var swiper = this;\n        Utils.extend(swiper, {\n          virtual: {\n            update: Virtual.update.bind(swiper),\n            appendSlide: Virtual.appendSlide.bind(swiper),\n            prependSlide: Virtual.prependSlide.bind(swiper),\n            removeSlide: Virtual.removeSlide.bind(swiper),\n            removeAllSlides: Virtual.removeAllSlides.bind(swiper),\n            renderSlide: Virtual.renderSlide.bind(swiper),\n            slides: swiper.params.virtual.slides,\n            cache: {},\n          },\n        });\n      },\n      on: {\n        beforeInit: function beforeInit() {\n          var swiper = this;\n          if (!swiper.params.virtual.enabled) { return; }\n          swiper.classNames.push(((swiper.params.containerModifierClass) + \"virtual\"));\n          var overwriteParams = {\n            watchSlidesProgress: true,\n          };\n          Utils.extend(swiper.params, overwriteParams);\n          Utils.extend(swiper.originalParams, overwriteParams);\n  \n          if (!swiper.params.initialSlide) {\n            swiper.virtual.update();\n          }\n        },\n        setTranslate: function setTranslate() {\n          var swiper = this;\n          if (!swiper.params.virtual.enabled) { return; }\n          swiper.virtual.update();\n        },\n      },\n    };\n  \n    var Keyboard = {\n      handle: function handle(event) {\n        var swiper = this;\n        var rtl = swiper.rtlTranslate;\n        var e = event;\n        if (e.originalEvent) { e = e.originalEvent; } // jquery fix\n        var kc = e.keyCode || e.charCode;\n        // Directions locks\n        if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40) || kc === 34)) {\n          return false;\n        }\n        if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38) || kc === 33)) {\n          return false;\n        }\n        if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n          return undefined;\n        }\n        if (doc.activeElement && doc.activeElement.nodeName && (doc.activeElement.nodeName.toLowerCase() === 'input' || doc.activeElement.nodeName.toLowerCase() === 'textarea')) {\n          return undefined;\n        }\n        if (swiper.params.keyboard.onlyInViewport && (kc === 33 || kc === 34 || kc === 37 || kc === 39 || kc === 38 || kc === 40)) {\n          var inView = false;\n          // Check that swiper should be inside of visible area of window\n          if (swiper.$el.parents((\".\" + (swiper.params.slideClass))).length > 0 && swiper.$el.parents((\".\" + (swiper.params.slideActiveClass))).length === 0) {\n            return undefined;\n          }\n          var windowWidth = win.innerWidth;\n          var windowHeight = win.innerHeight;\n          var swiperOffset = swiper.$el.offset();\n          if (rtl) { swiperOffset.left -= swiper.$el[0].scrollLeft; }\n          var swiperCoord = [\n            [swiperOffset.left, swiperOffset.top],\n            [swiperOffset.left + swiper.width, swiperOffset.top],\n            [swiperOffset.left, swiperOffset.top + swiper.height],\n            [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height] ];\n          for (var i = 0; i < swiperCoord.length; i += 1) {\n            var point = swiperCoord[i];\n            if (\n              point[0] >= 0 && point[0] <= windowWidth\n              && point[1] >= 0 && point[1] <= windowHeight\n            ) {\n              inView = true;\n            }\n          }\n          if (!inView) { return undefined; }\n        }\n        if (swiper.isHorizontal()) {\n          if (kc === 33 || kc === 34 || kc === 37 || kc === 39) {\n            if (e.preventDefault) { e.preventDefault(); }\n            else { e.returnValue = false; }\n          }\n          if (((kc === 34 || kc === 39) && !rtl) || ((kc === 33 || kc === 37) && rtl)) { swiper.slideNext(); }\n          if (((kc === 33 || kc === 37) && !rtl) || ((kc === 34 || kc === 39) && rtl)) { swiper.slidePrev(); }\n        } else {\n          if (kc === 33 || kc === 34 || kc === 38 || kc === 40) {\n            if (e.preventDefault) { e.preventDefault(); }\n            else { e.returnValue = false; }\n          }\n          if (kc === 34 || kc === 40) { swiper.slideNext(); }\n          if (kc === 33 || kc === 38) { swiper.slidePrev(); }\n        }\n        swiper.emit('keyPress', kc);\n        return undefined;\n      },\n      enable: function enable() {\n        var swiper = this;\n        if (swiper.keyboard.enabled) { return; }\n        $(doc).on('keydown', swiper.keyboard.handle);\n        swiper.keyboard.enabled = true;\n      },\n      disable: function disable() {\n        var swiper = this;\n        if (!swiper.keyboard.enabled) { return; }\n        $(doc).off('keydown', swiper.keyboard.handle);\n        swiper.keyboard.enabled = false;\n      },\n    };\n  \n    var Keyboard$1 = {\n      name: 'keyboard',\n      params: {\n        keyboard: {\n          enabled: false,\n          onlyInViewport: true,\n        },\n      },\n      create: function create() {\n        var swiper = this;\n        Utils.extend(swiper, {\n          keyboard: {\n            enabled: false,\n            enable: Keyboard.enable.bind(swiper),\n            disable: Keyboard.disable.bind(swiper),\n            handle: Keyboard.handle.bind(swiper),\n          },\n        });\n      },\n      on: {\n        init: function init() {\n          var swiper = this;\n          if (swiper.params.keyboard.enabled) {\n            swiper.keyboard.enable();\n          }\n        },\n        destroy: function destroy() {\n          var swiper = this;\n          if (swiper.keyboard.enabled) {\n            swiper.keyboard.disable();\n          }\n        },\n      },\n    };\n  \n    function isEventSupported() {\n      var eventName = 'onwheel';\n      var isSupported = eventName in doc;\n  \n      if (!isSupported) {\n        var element = doc.createElement('div');\n        element.setAttribute(eventName, 'return;');\n        isSupported = typeof element[eventName] === 'function';\n      }\n  \n      if (!isSupported\n        && doc.implementation\n        && doc.implementation.hasFeature\n        // always returns true in newer browsers as per the standard.\n        // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n        && doc.implementation.hasFeature('', '') !== true\n      ) {\n        // This is the only way to test support for the `wheel` event in IE9+.\n        isSupported = doc.implementation.hasFeature('Events.wheel', '3.0');\n      }\n  \n      return isSupported;\n    }\n    var Mousewheel = {\n      lastScrollTime: Utils.now(),\n      event: (function getEvent() {\n        if (win.navigator.userAgent.indexOf('firefox') > -1) { return 'DOMMouseScroll'; }\n        return isEventSupported() ? 'wheel' : 'mousewheel';\n      }()),\n      normalize: function normalize(e) {\n        // Reasonable defaults\n        var PIXEL_STEP = 10;\n        var LINE_HEIGHT = 40;\n        var PAGE_HEIGHT = 800;\n  \n        var sX = 0;\n        var sY = 0; // spinX, spinY\n        var pX = 0;\n        var pY = 0; // pixelX, pixelY\n  \n        // Legacy\n        if ('detail' in e) {\n          sY = e.detail;\n        }\n        if ('wheelDelta' in e) {\n          sY = -e.wheelDelta / 120;\n        }\n        if ('wheelDeltaY' in e) {\n          sY = -e.wheelDeltaY / 120;\n        }\n        if ('wheelDeltaX' in e) {\n          sX = -e.wheelDeltaX / 120;\n        }\n  \n        // side scrolling on FF with DOMMouseScroll\n        if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n          sX = sY;\n          sY = 0;\n        }\n  \n        pX = sX * PIXEL_STEP;\n        pY = sY * PIXEL_STEP;\n  \n        if ('deltaY' in e) {\n          pY = e.deltaY;\n        }\n        if ('deltaX' in e) {\n          pX = e.deltaX;\n        }\n  \n        if ((pX || pY) && e.deltaMode) {\n          if (e.deltaMode === 1) { // delta in LINE units\n            pX *= LINE_HEIGHT;\n            pY *= LINE_HEIGHT;\n          } else { // delta in PAGE units\n            pX *= PAGE_HEIGHT;\n            pY *= PAGE_HEIGHT;\n          }\n        }\n  \n        // Fall-back if spin cannot be determined\n        if (pX && !sX) {\n          sX = (pX < 1) ? -1 : 1;\n        }\n        if (pY && !sY) {\n          sY = (pY < 1) ? -1 : 1;\n        }\n  \n        return {\n          spinX: sX,\n          spinY: sY,\n          pixelX: pX,\n          pixelY: pY,\n        };\n      },\n      handleMouseEnter: function handleMouseEnter() {\n        var swiper = this;\n        swiper.mouseEntered = true;\n      },\n      handleMouseLeave: function handleMouseLeave() {\n        var swiper = this;\n        swiper.mouseEntered = false;\n      },\n      handle: function handle(event) {\n        var e = event;\n        var swiper = this;\n        var params = swiper.params.mousewheel;\n  \n        if (!swiper.mouseEntered && !params.releaseOnEdges) { return true; }\n  \n        if (e.originalEvent) { e = e.originalEvent; } // jquery fix\n        var delta = 0;\n        var rtlFactor = swiper.rtlTranslate ? -1 : 1;\n  \n        var data = Mousewheel.normalize(e);\n  \n        if (params.forceToAxis) {\n          if (swiper.isHorizontal()) {\n            if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) { delta = data.pixelX * rtlFactor; }\n            else { return true; }\n          } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) { delta = data.pixelY; }\n          else { return true; }\n        } else {\n          delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n        }\n  \n        if (delta === 0) { return true; }\n  \n        if (params.invert) { delta = -delta; }\n  \n        if (!swiper.params.freeMode) {\n          if (Utils.now() - swiper.mousewheel.lastScrollTime > 60) {\n            if (delta < 0) {\n              if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n                swiper.slideNext();\n                swiper.emit('scroll', e);\n              } else if (params.releaseOnEdges) { return true; }\n            } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n              swiper.slidePrev();\n              swiper.emit('scroll', e);\n            } else if (params.releaseOnEdges) { return true; }\n          }\n          swiper.mousewheel.lastScrollTime = (new win.Date()).getTime();\n        } else {\n          // Freemode or scrollContainer:\n          if (swiper.params.loop) {\n            swiper.loopFix();\n          }\n          var position = swiper.getTranslate() + (delta * params.sensitivity);\n          var wasBeginning = swiper.isBeginning;\n          var wasEnd = swiper.isEnd;\n  \n          if (position >= swiper.minTranslate()) { position = swiper.minTranslate(); }\n          if (position <= swiper.maxTranslate()) { position = swiper.maxTranslate(); }\n  \n          swiper.setTransition(0);\n          swiper.setTranslate(position);\n          swiper.updateProgress();\n          swiper.updateActiveIndex();\n          swiper.updateSlidesClasses();\n  \n          if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n            swiper.updateSlidesClasses();\n          }\n  \n          if (swiper.params.freeModeSticky) {\n            clearTimeout(swiper.mousewheel.timeout);\n            swiper.mousewheel.timeout = Utils.nextTick(function () {\n              swiper.slideToClosest();\n            }, 300);\n          }\n          // Emit event\n          swiper.emit('scroll', e);\n  \n          // Stop autoplay\n          if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) { swiper.autoplay.stop(); }\n          // Return page scroll on edge positions\n          if (position === swiper.minTranslate() || position === swiper.maxTranslate()) { return true; }\n        }\n  \n        if (e.preventDefault) { e.preventDefault(); }\n        else { e.returnValue = false; }\n        return false;\n      },\n      enable: function enable() {\n        var swiper = this;\n        if (!Mousewheel.event) { return false; }\n        if (swiper.mousewheel.enabled) { return false; }\n        var target = swiper.$el;\n        if (swiper.params.mousewheel.eventsTarged !== 'container') {\n          target = $(swiper.params.mousewheel.eventsTarged);\n        }\n        target.on('mouseenter', swiper.mousewheel.handleMouseEnter);\n        target.on('mouseleave', swiper.mousewheel.handleMouseLeave);\n        target.on(Mousewheel.event, swiper.mousewheel.handle);\n        swiper.mousewheel.enabled = true;\n        return true;\n      },\n      disable: function disable() {\n        var swiper = this;\n        if (!Mousewheel.event) { return false; }\n        if (!swiper.mousewheel.enabled) { return false; }\n        var target = swiper.$el;\n        if (swiper.params.mousewheel.eventsTarged !== 'container') {\n          target = $(swiper.params.mousewheel.eventsTarged);\n        }\n        target.off(Mousewheel.event, swiper.mousewheel.handle);\n        swiper.mousewheel.enabled = false;\n        return true;\n      },\n    };\n  \n    var Mousewheel$1 = {\n      name: 'mousewheel',\n      params: {\n        mousewheel: {\n          enabled: false,\n          releaseOnEdges: false,\n          invert: false,\n          forceToAxis: false,\n          sensitivity: 1,\n          eventsTarged: 'container',\n        },\n      },\n      create: function create() {\n        var swiper = this;\n        Utils.extend(swiper, {\n          mousewheel: {\n            enabled: false,\n            enable: Mousewheel.enable.bind(swiper),\n            disable: Mousewheel.disable.bind(swiper),\n            handle: Mousewheel.handle.bind(swiper),\n            handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),\n            handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),\n            lastScrollTime: Utils.now(),\n          },\n        });\n      },\n      on: {\n        init: function init() {\n          var swiper = this;\n          if (swiper.params.mousewheel.enabled) { swiper.mousewheel.enable(); }\n        },\n        destroy: function destroy() {\n          var swiper = this;\n          if (swiper.mousewheel.enabled) { swiper.mousewheel.disable(); }\n        },\n      },\n    };\n  \n    var Navigation = {\n      update: function update() {\n        // Update Navigation Buttons\n        var swiper = this;\n        var params = swiper.params.navigation;\n  \n        if (swiper.params.loop) { return; }\n        var ref = swiper.navigation;\n        var $nextEl = ref.$nextEl;\n        var $prevEl = ref.$prevEl;\n  \n        if ($prevEl && $prevEl.length > 0) {\n          if (swiper.isBeginning) {\n            $prevEl.addClass(params.disabledClass);\n          } else {\n            $prevEl.removeClass(params.disabledClass);\n          }\n          $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n        }\n        if ($nextEl && $nextEl.length > 0) {\n          if (swiper.isEnd) {\n            $nextEl.addClass(params.disabledClass);\n          } else {\n            $nextEl.removeClass(params.disabledClass);\n          }\n          $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n        }\n      },\n      onPrevClick: function onPrevClick(e) {\n        var swiper = this;\n        e.preventDefault();\n        if (swiper.isBeginning && !swiper.params.loop) { return; }\n        swiper.slidePrev();\n      },\n      onNextClick: function onNextClick(e) {\n        var swiper = this;\n        e.preventDefault();\n        if (swiper.isEnd && !swiper.params.loop) { return; }\n        swiper.slideNext();\n      },\n      init: function init() {\n        var swiper = this;\n        var params = swiper.params.navigation;\n        if (!(params.nextEl || params.prevEl)) { return; }\n  \n        var $nextEl;\n        var $prevEl;\n        if (params.nextEl) {\n          $nextEl = $(params.nextEl);\n          if (\n            swiper.params.uniqueNavElements\n            && typeof params.nextEl === 'string'\n            && $nextEl.length > 1\n            && swiper.$el.find(params.nextEl).length === 1\n          ) {\n            $nextEl = swiper.$el.find(params.nextEl);\n          }\n        }\n        if (params.prevEl) {\n          $prevEl = $(params.prevEl);\n          if (\n            swiper.params.uniqueNavElements\n            && typeof params.prevEl === 'string'\n            && $prevEl.length > 1\n            && swiper.$el.find(params.prevEl).length === 1\n          ) {\n            $prevEl = swiper.$el.find(params.prevEl);\n          }\n        }\n  \n        if ($nextEl && $nextEl.length > 0) {\n          $nextEl.on('click', swiper.navigation.onNextClick);\n        }\n        if ($prevEl && $prevEl.length > 0) {\n          $prevEl.on('click', swiper.navigation.onPrevClick);\n        }\n  \n        Utils.extend(swiper.navigation, {\n          $nextEl: $nextEl,\n          nextEl: $nextEl && $nextEl[0],\n          $prevEl: $prevEl,\n          prevEl: $prevEl && $prevEl[0],\n        });\n      },\n      destroy: function destroy() {\n        var swiper = this;\n        var ref = swiper.navigation;\n        var $nextEl = ref.$nextEl;\n        var $prevEl = ref.$prevEl;\n        if ($nextEl && $nextEl.length) {\n          $nextEl.off('click', swiper.navigation.onNextClick);\n          $nextEl.removeClass(swiper.params.navigation.disabledClass);\n        }\n        if ($prevEl && $prevEl.length) {\n          $prevEl.off('click', swiper.navigation.onPrevClick);\n          $prevEl.removeClass(swiper.params.navigation.disabledClass);\n        }\n      },\n    };\n  \n    var Navigation$1 = {\n      name: 'navigation',\n      params: {\n        navigation: {\n          nextEl: null,\n          prevEl: null,\n  \n          hideOnClick: false,\n          disabledClass: 'swiper-button-disabled',\n          hiddenClass: 'swiper-button-hidden',\n          lockClass: 'swiper-button-lock',\n        },\n      },\n      create: function create() {\n        var swiper = this;\n        Utils.extend(swiper, {\n          navigation: {\n            init: Navigation.init.bind(swiper),\n            update: Navigation.update.bind(swiper),\n            destroy: Navigation.destroy.bind(swiper),\n            onNextClick: Navigation.onNextClick.bind(swiper),\n            onPrevClick: Navigation.onPrevClick.bind(swiper),\n          },\n        });\n      },\n      on: {\n        init: function init() {\n          var swiper = this;\n          swiper.navigation.init();\n          swiper.navigation.update();\n        },\n        toEdge: function toEdge() {\n          var swiper = this;\n          swiper.navigation.update();\n        },\n        fromEdge: function fromEdge() {\n          var swiper = this;\n          swiper.navigation.update();\n        },\n        destroy: function destroy() {\n          var swiper = this;\n          swiper.navigation.destroy();\n        },\n        click: function click(e) {\n          var swiper = this;\n          var ref = swiper.navigation;\n          var $nextEl = ref.$nextEl;\n          var $prevEl = ref.$prevEl;\n          if (\n            swiper.params.navigation.hideOnClick\n            && !$(e.target).is($prevEl)\n            && !$(e.target).is($nextEl)\n          ) {\n            var isHidden;\n            if ($nextEl) {\n              isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n            } else if ($prevEl) {\n              isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n            }\n            if (isHidden === true) {\n              swiper.emit('navigationShow', swiper);\n            } else {\n              swiper.emit('navigationHide', swiper);\n            }\n            if ($nextEl) {\n              $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n            }\n            if ($prevEl) {\n              $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n            }\n          }\n        },\n      },\n    };\n  \n    var Pagination = {\n      update: function update() {\n        // Render || Update Pagination bullets/items\n        var swiper = this;\n        var rtl = swiper.rtl;\n        var params = swiper.params.pagination;\n        if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }\n        var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n        var $el = swiper.pagination.$el;\n        // Current/Total\n        var current;\n        var total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n        if (swiper.params.loop) {\n          current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n          if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {\n            current -= (slidesLength - (swiper.loopedSlides * 2));\n          }\n          if (current > total - 1) { current -= total; }\n          if (current < 0 && swiper.params.paginationType !== 'bullets') { current = total + current; }\n        } else if (typeof swiper.snapIndex !== 'undefined') {\n          current = swiper.snapIndex;\n        } else {\n          current = swiper.activeIndex || 0;\n        }\n        // Types\n        if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n          var bullets = swiper.pagination.bullets;\n          var firstIndex;\n          var lastIndex;\n          var midIndex;\n          if (params.dynamicBullets) {\n            swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n            $el.css(swiper.isHorizontal() ? 'width' : 'height', ((swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)) + \"px\"));\n            if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n              swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);\n              if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) {\n                swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n              } else if (swiper.pagination.dynamicBulletIndex < 0) {\n                swiper.pagination.dynamicBulletIndex = 0;\n              }\n            }\n            firstIndex = current - swiper.pagination.dynamicBulletIndex;\n            lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n            midIndex = (lastIndex + firstIndex) / 2;\n          }\n          bullets.removeClass(((params.bulletActiveClass) + \" \" + (params.bulletActiveClass) + \"-next \" + (params.bulletActiveClass) + \"-next-next \" + (params.bulletActiveClass) + \"-prev \" + (params.bulletActiveClass) + \"-prev-prev \" + (params.bulletActiveClass) + \"-main\"));\n          if ($el.length > 1) {\n            bullets.each(function (index, bullet) {\n              var $bullet = $(bullet);\n              var bulletIndex = $bullet.index();\n              if (bulletIndex === current) {\n                $bullet.addClass(params.bulletActiveClass);\n              }\n              if (params.dynamicBullets) {\n                if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n                  $bullet.addClass(((params.bulletActiveClass) + \"-main\"));\n                }\n                if (bulletIndex === firstIndex) {\n                  $bullet\n                    .prev()\n                    .addClass(((params.bulletActiveClass) + \"-prev\"))\n                    .prev()\n                    .addClass(((params.bulletActiveClass) + \"-prev-prev\"));\n                }\n                if (bulletIndex === lastIndex) {\n                  $bullet\n                    .next()\n                    .addClass(((params.bulletActiveClass) + \"-next\"))\n                    .next()\n                    .addClass(((params.bulletActiveClass) + \"-next-next\"));\n                }\n              }\n            });\n          } else {\n            var $bullet = bullets.eq(current);\n            $bullet.addClass(params.bulletActiveClass);\n            if (params.dynamicBullets) {\n              var $firstDisplayedBullet = bullets.eq(firstIndex);\n              var $lastDisplayedBullet = bullets.eq(lastIndex);\n              for (var i = firstIndex; i <= lastIndex; i += 1) {\n                bullets.eq(i).addClass(((params.bulletActiveClass) + \"-main\"));\n              }\n              $firstDisplayedBullet\n                .prev()\n                .addClass(((params.bulletActiveClass) + \"-prev\"))\n                .prev()\n                .addClass(((params.bulletActiveClass) + \"-prev-prev\"));\n              $lastDisplayedBullet\n                .next()\n                .addClass(((params.bulletActiveClass) + \"-next\"))\n                .next()\n                .addClass(((params.bulletActiveClass) + \"-next-next\"));\n            }\n          }\n          if (params.dynamicBullets) {\n            var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n            var bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);\n            var offsetProp = rtl ? 'right' : 'left';\n            bullets.css(swiper.isHorizontal() ? offsetProp : 'top', (bulletsOffset + \"px\"));\n          }\n        }\n        if (params.type === 'fraction') {\n          $el.find((\".\" + (params.currentClass))).text(params.formatFractionCurrent(current + 1));\n          $el.find((\".\" + (params.totalClass))).text(params.formatFractionTotal(total));\n        }\n        if (params.type === 'progressbar') {\n          var progressbarDirection;\n          if (params.progressbarOpposite) {\n            progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n          } else {\n            progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n          }\n          var scale = (current + 1) / total;\n          var scaleX = 1;\n          var scaleY = 1;\n          if (progressbarDirection === 'horizontal') {\n            scaleX = scale;\n          } else {\n            scaleY = scale;\n          }\n          $el.find((\".\" + (params.progressbarFillClass))).transform((\"translate3d(0,0,0) scaleX(\" + scaleX + \") scaleY(\" + scaleY + \")\")).transition(swiper.params.speed);\n        }\n        if (params.type === 'custom' && params.renderCustom) {\n          $el.html(params.renderCustom(swiper, current + 1, total));\n          swiper.emit('paginationRender', swiper, $el[0]);\n        } else {\n          swiper.emit('paginationUpdate', swiper, $el[0]);\n        }\n        $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n      },\n      render: function render() {\n        // Render Container\n        var swiper = this;\n        var params = swiper.params.pagination;\n        if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }\n        var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n  \n        var $el = swiper.pagination.$el;\n        var paginationHTML = '';\n        if (params.type === 'bullets') {\n          var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n          for (var i = 0; i < numberOfBullets; i += 1) {\n            if (params.renderBullet) {\n              paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n            } else {\n              paginationHTML += \"<\" + (params.bulletElement) + \" class=\\\"\" + (params.bulletClass) + \"\\\"></\" + (params.bulletElement) + \">\";\n            }\n          }\n          $el.html(paginationHTML);\n          swiper.pagination.bullets = $el.find((\".\" + (params.bulletClass)));\n        }\n        if (params.type === 'fraction') {\n          if (params.renderFraction) {\n            paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n          } else {\n            paginationHTML = \"<span class=\\\"\" + (params.currentClass) + \"\\\"></span>\"\n            + ' / '\n            + \"<span class=\\\"\" + (params.totalClass) + \"\\\"></span>\";\n          }\n          $el.html(paginationHTML);\n        }\n        if (params.type === 'progressbar') {\n          if (params.renderProgressbar) {\n            paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n          } else {\n            paginationHTML = \"<span class=\\\"\" + (params.progressbarFillClass) + \"\\\"></span>\";\n          }\n          $el.html(paginationHTML);\n        }\n        if (params.type !== 'custom') {\n          swiper.emit('paginationRender', swiper.pagination.$el[0]);\n        }\n      },\n      init: function init() {\n        var swiper = this;\n        var params = swiper.params.pagination;\n        if (!params.el) { return; }\n  \n        var $el = $(params.el);\n        if ($el.length === 0) { return; }\n  \n        if (\n          swiper.params.uniqueNavElements\n          && typeof params.el === 'string'\n          && $el.length > 1\n          && swiper.$el.find(params.el).length === 1\n        ) {\n          $el = swiper.$el.find(params.el);\n        }\n  \n        if (params.type === 'bullets' && params.clickable) {\n          $el.addClass(params.clickableClass);\n        }\n  \n        $el.addClass(params.modifierClass + params.type);\n  \n        if (params.type === 'bullets' && params.dynamicBullets) {\n          $el.addClass((\"\" + (params.modifierClass) + (params.type) + \"-dynamic\"));\n          swiper.pagination.dynamicBulletIndex = 0;\n          if (params.dynamicMainBullets < 1) {\n            params.dynamicMainBullets = 1;\n          }\n        }\n        if (params.type === 'progressbar' && params.progressbarOpposite) {\n          $el.addClass(params.progressbarOppositeClass);\n        }\n  \n        if (params.clickable) {\n          $el.on('click', (\".\" + (params.bulletClass)), function onClick(e) {\n            e.preventDefault();\n            var index = $(this).index() * swiper.params.slidesPerGroup;\n            if (swiper.params.loop) { index += swiper.loopedSlides; }\n            swiper.slideTo(index);\n          });\n        }\n  \n        Utils.extend(swiper.pagination, {\n          $el: $el,\n          el: $el[0],\n        });\n      },\n      destroy: function destroy() {\n        var swiper = this;\n        var params = swiper.params.pagination;\n        if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }\n        var $el = swiper.pagination.$el;\n  \n        $el.removeClass(params.hiddenClass);\n        $el.removeClass(params.modifierClass + params.type);\n        if (swiper.pagination.bullets) { swiper.pagination.bullets.removeClass(params.bulletActiveClass); }\n        if (params.clickable) {\n          $el.off('click', (\".\" + (params.bulletClass)));\n        }\n      },\n    };\n  \n    var Pagination$1 = {\n      name: 'pagination',\n      params: {\n        pagination: {\n          el: null,\n          bulletElement: 'span',\n          clickable: false,\n          hideOnClick: false,\n          renderBullet: null,\n          renderProgressbar: null,\n          renderFraction: null,\n          renderCustom: null,\n          progressbarOpposite: false,\n          type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n          dynamicBullets: false,\n          dynamicMainBullets: 1,\n          formatFractionCurrent: function (number) { return number; },\n          formatFractionTotal: function (number) { return number; },\n          bulletClass: 'swiper-pagination-bullet',\n          bulletActiveClass: 'swiper-pagination-bullet-active',\n          modifierClass: 'swiper-pagination-', // NEW\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', // NEW\n          lockClass: 'swiper-pagination-lock',\n        },\n      },\n      create: function create() {\n        var swiper = this;\n        Utils.extend(swiper, {\n          pagination: {\n            init: Pagination.init.bind(swiper),\n            render: Pagination.render.bind(swiper),\n            update: Pagination.update.bind(swiper),\n            destroy: Pagination.destroy.bind(swiper),\n            dynamicBulletIndex: 0,\n          },\n        });\n      },\n      on: {\n        init: function init() {\n          var swiper = this;\n          swiper.pagination.init();\n          swiper.pagination.render();\n          swiper.pagination.update();\n        },\n        activeIndexChange: function activeIndexChange() {\n          var swiper = this;\n          if (swiper.params.loop) {\n            swiper.pagination.update();\n          } else if (typeof swiper.snapIndex === 'undefined') {\n            swiper.pagination.update();\n          }\n        },\n        snapIndexChange: function snapIndexChange() {\n          var swiper = this;\n          if (!swiper.params.loop) {\n            swiper.pagination.update();\n          }\n        },\n        slidesLengthChange: function slidesLengthChange() {\n          var swiper = this;\n          if (swiper.params.loop) {\n            swiper.pagination.render();\n            swiper.pagination.update();\n          }\n        },\n        snapGridLengthChange: function snapGridLengthChange() {\n          var swiper = this;\n          if (!swiper.params.loop) {\n            swiper.pagination.render();\n            swiper.pagination.update();\n          }\n        },\n        destroy: function destroy() {\n          var swiper = this;\n          swiper.pagination.destroy();\n        },\n        click: function click(e) {\n          var swiper = this;\n          if (\n            swiper.params.pagination.el\n            && swiper.params.pagination.hideOnClick\n            && swiper.pagination.$el.length > 0\n            && !$(e.target).hasClass(swiper.params.pagination.bulletClass)\n          ) {\n            var isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n            if (isHidden === true) {\n              swiper.emit('paginationShow', swiper);\n            } else {\n              swiper.emit('paginationHide', swiper);\n            }\n            swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n          }\n        },\n      },\n    };\n  \n    var Scrollbar = {\n      setTranslate: function setTranslate() {\n        var swiper = this;\n        if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }\n        var scrollbar = swiper.scrollbar;\n        var rtl = swiper.rtlTranslate;\n        var progress = swiper.progress;\n        var dragSize = scrollbar.dragSize;\n        var trackSize = scrollbar.trackSize;\n        var $dragEl = scrollbar.$dragEl;\n        var $el = scrollbar.$el;\n        var params = swiper.params.scrollbar;\n  \n        var newSize = dragSize;\n        var newPos = (trackSize - dragSize) * progress;\n        if (rtl) {\n          newPos = -newPos;\n          if (newPos > 0) {\n            newSize = dragSize - newPos;\n            newPos = 0;\n          } else if (-newPos + dragSize > trackSize) {\n            newSize = trackSize + newPos;\n          }\n        } else if (newPos < 0) {\n          newSize = dragSize + newPos;\n          newPos = 0;\n        } else if (newPos + dragSize > trackSize) {\n          newSize = trackSize - newPos;\n        }\n        if (swiper.isHorizontal()) {\n          if (Support.transforms3d) {\n            $dragEl.transform((\"translate3d(\" + newPos + \"px, 0, 0)\"));\n          } else {\n            $dragEl.transform((\"translateX(\" + newPos + \"px)\"));\n          }\n          $dragEl[0].style.width = newSize + \"px\";\n        } else {\n          if (Support.transforms3d) {\n            $dragEl.transform((\"translate3d(0px, \" + newPos + \"px, 0)\"));\n          } else {\n            $dragEl.transform((\"translateY(\" + newPos + \"px)\"));\n          }\n          $dragEl[0].style.height = newSize + \"px\";\n        }\n        if (params.hide) {\n          clearTimeout(swiper.scrollbar.timeout);\n          $el[0].style.opacity = 1;\n          swiper.scrollbar.timeout = setTimeout(function () {\n            $el[0].style.opacity = 0;\n            $el.transition(400);\n          }, 1000);\n        }\n      },\n      setTransition: function setTransition(duration) {\n        var swiper = this;\n        if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }\n        swiper.scrollbar.$dragEl.transition(duration);\n      },\n      updateSize: function updateSize() {\n        var swiper = this;\n        if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }\n  \n        var scrollbar = swiper.scrollbar;\n        var $dragEl = scrollbar.$dragEl;\n        var $el = scrollbar.$el;\n  \n        $dragEl[0].style.width = '';\n        $dragEl[0].style.height = '';\n        var trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n  \n        var divider = swiper.size / swiper.virtualSize;\n        var moveDivider = divider * (trackSize / swiper.size);\n        var dragSize;\n        if (swiper.params.scrollbar.dragSize === 'auto') {\n          dragSize = trackSize * divider;\n        } else {\n          dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n        }\n  \n        if (swiper.isHorizontal()) {\n          $dragEl[0].style.width = dragSize + \"px\";\n        } else {\n          $dragEl[0].style.height = dragSize + \"px\";\n        }\n  \n        if (divider >= 1) {\n          $el[0].style.display = 'none';\n        } else {\n          $el[0].style.display = '';\n        }\n        if (swiper.params.scrollbar.hide) {\n          $el[0].style.opacity = 0;\n        }\n        Utils.extend(scrollbar, {\n          trackSize: trackSize,\n          divider: divider,\n          moveDivider: moveDivider,\n          dragSize: dragSize,\n        });\n        scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n      },\n      getPointerPosition: function getPointerPosition(e) {\n        var swiper = this;\n        if (swiper.isHorizontal()) {\n          return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageX : e.pageX || e.clientX);\n        }\n        return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageY : e.pageY || e.clientY);\n      },\n      setDragPosition: function setDragPosition(e) {\n        var swiper = this;\n        var scrollbar = swiper.scrollbar;\n        var rtl = swiper.rtlTranslate;\n        var $el = scrollbar.$el;\n        var dragSize = scrollbar.dragSize;\n        var trackSize = scrollbar.trackSize;\n        var dragStartPos = scrollbar.dragStartPos;\n  \n        var positionRatio;\n        positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top']\n          - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n        positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n        if (rtl) {\n          positionRatio = 1 - positionRatio;\n        }\n  \n        var position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);\n  \n        swiper.updateProgress(position);\n        swiper.setTranslate(position);\n        swiper.updateActiveIndex();\n        swiper.updateSlidesClasses();\n      },\n      onDragStart: function onDragStart(e) {\n        var swiper = this;\n        var params = swiper.params.scrollbar;\n        var scrollbar = swiper.scrollbar;\n        var $wrapperEl = swiper.$wrapperEl;\n        var $el = scrollbar.$el;\n        var $dragEl = scrollbar.$dragEl;\n        swiper.scrollbar.isTouched = true;\n        swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl)\n          ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n        e.preventDefault();\n        e.stopPropagation();\n  \n        $wrapperEl.transition(100);\n        $dragEl.transition(100);\n        scrollbar.setDragPosition(e);\n  \n        clearTimeout(swiper.scrollbar.dragTimeout);\n  \n        $el.transition(0);\n        if (params.hide) {\n          $el.css('opacity', 1);\n        }\n        swiper.emit('scrollbarDragStart', e);\n      },\n      onDragMove: function onDragMove(e) {\n        var swiper = this;\n        var scrollbar = swiper.scrollbar;\n        var $wrapperEl = swiper.$wrapperEl;\n        var $el = scrollbar.$el;\n        var $dragEl = scrollbar.$dragEl;\n  \n        if (!swiper.scrollbar.isTouched) { return; }\n        if (e.preventDefault) { e.preventDefault(); }\n        else { e.returnValue = false; }\n        scrollbar.setDragPosition(e);\n        $wrapperEl.transition(0);\n        $el.transition(0);\n        $dragEl.transition(0);\n        swiper.emit('scrollbarDragMove', e);\n      },\n      onDragEnd: function onDragEnd(e) {\n        var swiper = this;\n  \n        var params = swiper.params.scrollbar;\n        var scrollbar = swiper.scrollbar;\n        var $el = scrollbar.$el;\n  \n        if (!swiper.scrollbar.isTouched) { return; }\n        swiper.scrollbar.isTouched = false;\n        if (params.hide) {\n          clearTimeout(swiper.scrollbar.dragTimeout);\n          swiper.scrollbar.dragTimeout = Utils.nextTick(function () {\n            $el.css('opacity', 0);\n            $el.transition(400);\n          }, 1000);\n        }\n        swiper.emit('scrollbarDragEnd', e);\n        if (params.snapOnRelease) {\n          swiper.slideToClosest();\n        }\n      },\n      enableDraggable: function enableDraggable() {\n        var swiper = this;\n        if (!swiper.params.scrollbar.el) { return; }\n        var scrollbar = swiper.scrollbar;\n        var touchEventsTouch = swiper.touchEventsTouch;\n        var touchEventsDesktop = swiper.touchEventsDesktop;\n        var params = swiper.params;\n        var $el = scrollbar.$el;\n        var target = $el[0];\n        var activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n        var passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n        if (!Support.touch) {\n          target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n          doc.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n          doc.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n        } else {\n          target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n          target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n          target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n        }\n      },\n      disableDraggable: function disableDraggable() {\n        var swiper = this;\n        if (!swiper.params.scrollbar.el) { return; }\n        var scrollbar = swiper.scrollbar;\n        var touchEventsTouch = swiper.touchEventsTouch;\n        var touchEventsDesktop = swiper.touchEventsDesktop;\n        var params = swiper.params;\n        var $el = scrollbar.$el;\n        var target = $el[0];\n        var activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n        var passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n        if (!Support.touch) {\n          target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n          doc.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n          doc.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n        } else {\n          target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n          target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n          target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n        }\n      },\n      init: function init() {\n        var swiper = this;\n        if (!swiper.params.scrollbar.el) { return; }\n        var scrollbar = swiper.scrollbar;\n        var $swiperEl = swiper.$el;\n        var params = swiper.params.scrollbar;\n  \n        var $el = $(params.el);\n        if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n          $el = $swiperEl.find(params.el);\n        }\n  \n        var $dragEl = $el.find((\".\" + (swiper.params.scrollbar.dragClass)));\n        if ($dragEl.length === 0) {\n          $dragEl = $((\"<div class=\\\"\" + (swiper.params.scrollbar.dragClass) + \"\\\"></div>\"));\n          $el.append($dragEl);\n        }\n  \n        Utils.extend(scrollbar, {\n          $el: $el,\n          el: $el[0],\n          $dragEl: $dragEl,\n          dragEl: $dragEl[0],\n        });\n  \n        if (params.draggable) {\n          scrollbar.enableDraggable();\n        }\n      },\n      destroy: function destroy() {\n        var swiper = this;\n        swiper.scrollbar.disableDraggable();\n      },\n    };\n  \n    var Scrollbar$1 = {\n      name: 'scrollbar',\n      params: {\n        scrollbar: {\n          el: null,\n          dragSize: 'auto',\n          hide: false,\n          draggable: false,\n          snapOnRelease: true,\n          lockClass: 'swiper-scrollbar-lock',\n          dragClass: 'swiper-scrollbar-drag',\n        },\n      },\n      create: function create() {\n        var swiper = this;\n        Utils.extend(swiper, {\n          scrollbar: {\n            init: Scrollbar.init.bind(swiper),\n            destroy: Scrollbar.destroy.bind(swiper),\n            updateSize: Scrollbar.updateSize.bind(swiper),\n            setTranslate: Scrollbar.setTranslate.bind(swiper),\n            setTransition: Scrollbar.setTransition.bind(swiper),\n            enableDraggable: Scrollbar.enableDraggable.bind(swiper),\n            disableDraggable: Scrollbar.disableDraggable.bind(swiper),\n            setDragPosition: Scrollbar.setDragPosition.bind(swiper),\n            getPointerPosition: Scrollbar.getPointerPosition.bind(swiper),\n            onDragStart: Scrollbar.onDragStart.bind(swiper),\n            onDragMove: Scrollbar.onDragMove.bind(swiper),\n            onDragEnd: Scrollbar.onDragEnd.bind(swiper),\n            isTouched: false,\n            timeout: null,\n            dragTimeout: null,\n          },\n        });\n      },\n      on: {\n        init: function init() {\n          var swiper = this;\n          swiper.scrollbar.init();\n          swiper.scrollbar.updateSize();\n          swiper.scrollbar.setTranslate();\n        },\n        update: function update() {\n          var swiper = this;\n          swiper.scrollbar.updateSize();\n        },\n        resize: function resize() {\n          var swiper = this;\n          swiper.scrollbar.updateSize();\n        },\n        observerUpdate: function observerUpdate() {\n          var swiper = this;\n          swiper.scrollbar.updateSize();\n        },\n        setTranslate: function setTranslate() {\n          var swiper = this;\n          swiper.scrollbar.setTranslate();\n        },\n        setTransition: function setTransition(duration) {\n          var swiper = this;\n          swiper.scrollbar.setTransition(duration);\n        },\n        destroy: function destroy() {\n          var swiper = this;\n          swiper.scrollbar.destroy();\n        },\n      },\n    };\n  \n    var Parallax = {\n      setTransform: function setTransform(el, progress) {\n        var swiper = this;\n        var rtl = swiper.rtl;\n  \n        var $el = $(el);\n        var rtlFactor = rtl ? -1 : 1;\n  \n        var p = $el.attr('data-swiper-parallax') || '0';\n        var x = $el.attr('data-swiper-parallax-x');\n        var y = $el.attr('data-swiper-parallax-y');\n        var scale = $el.attr('data-swiper-parallax-scale');\n        var opacity = $el.attr('data-swiper-parallax-opacity');\n  \n        if (x || y) {\n          x = x || '0';\n          y = y || '0';\n        } else if (swiper.isHorizontal()) {\n          x = p;\n          y = '0';\n        } else {\n          y = p;\n          x = '0';\n        }\n  \n        if ((x).indexOf('%') >= 0) {\n          x = (parseInt(x, 10) * progress * rtlFactor) + \"%\";\n        } else {\n          x = (x * progress * rtlFactor) + \"px\";\n        }\n        if ((y).indexOf('%') >= 0) {\n          y = (parseInt(y, 10) * progress) + \"%\";\n        } else {\n          y = (y * progress) + \"px\";\n        }\n  \n        if (typeof opacity !== 'undefined' && opacity !== null) {\n          var currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress)));\n          $el[0].style.opacity = currentOpacity;\n        }\n        if (typeof scale === 'undefined' || scale === null) {\n          $el.transform((\"translate3d(\" + x + \", \" + y + \", 0px)\"));\n        } else {\n          var currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));\n          $el.transform((\"translate3d(\" + x + \", \" + y + \", 0px) scale(\" + currentScale + \")\"));\n        }\n      },\n      setTranslate: function setTranslate() {\n        var swiper = this;\n        var $el = swiper.$el;\n        var slides = swiper.slides;\n        var progress = swiper.progress;\n        var snapGrid = swiper.snapGrid;\n        $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n          .each(function (index, el) {\n            swiper.parallax.setTransform(el, progress);\n          });\n        slides.each(function (slideIndex, slideEl) {\n          var slideProgress = slideEl.progress;\n          if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n            slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));\n          }\n          slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n          $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n            .each(function (index, el) {\n              swiper.parallax.setTransform(el, slideProgress);\n            });\n        });\n      },\n      setTransition: function setTransition(duration) {\n        if ( duration === void 0 ) duration = this.params.speed;\n  \n        var swiper = this;\n        var $el = swiper.$el;\n        $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n          .each(function (index, parallaxEl) {\n            var $parallaxEl = $(parallaxEl);\n            var parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n            if (duration === 0) { parallaxDuration = 0; }\n            $parallaxEl.transition(parallaxDuration);\n          });\n      },\n    };\n  \n    var Parallax$1 = {\n      name: 'parallax',\n      params: {\n        parallax: {\n          enabled: false,\n        },\n      },\n      create: function create() {\n        var swiper = this;\n        Utils.extend(swiper, {\n          parallax: {\n            setTransform: Parallax.setTransform.bind(swiper),\n            setTranslate: Parallax.setTranslate.bind(swiper),\n            setTransition: Parallax.setTransition.bind(swiper),\n          },\n        });\n      },\n      on: {\n        beforeInit: function beforeInit() {\n          var swiper = this;\n          if (!swiper.params.parallax.enabled) { return; }\n          swiper.params.watchSlidesProgress = true;\n          swiper.originalParams.watchSlidesProgress = true;\n        },\n        init: function init() {\n          var swiper = this;\n          if (!swiper.params.parallax.enabled) { return; }\n          swiper.parallax.setTranslate();\n        },\n        setTranslate: function setTranslate() {\n          var swiper = this;\n          if (!swiper.params.parallax.enabled) { return; }\n          swiper.parallax.setTranslate();\n        },\n        setTransition: function setTransition(duration) {\n          var swiper = this;\n          if (!swiper.params.parallax.enabled) { return; }\n          swiper.parallax.setTransition(duration);\n        },\n      },\n    };\n  \n    var Zoom = {\n      // Calc Scale From Multi-touches\n      getDistanceBetweenTouches: function getDistanceBetweenTouches(e) {\n        if (e.targetTouches.length < 2) { return 1; }\n        var x1 = e.targetTouches[0].pageX;\n        var y1 = e.targetTouches[0].pageY;\n        var x2 = e.targetTouches[1].pageX;\n        var y2 = e.targetTouches[1].pageY;\n        var distance = Math.sqrt((Math.pow( (x2 - x1), 2 )) + (Math.pow( (y2 - y1), 2 )));\n        return distance;\n      },\n      // Events\n      onGestureStart: function onGestureStart(e) {\n        var swiper = this;\n        var params = swiper.params.zoom;\n        var zoom = swiper.zoom;\n        var gesture = zoom.gesture;\n        zoom.fakeGestureTouched = false;\n        zoom.fakeGestureMoved = false;\n        if (!Support.gestures) {\n          if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n            return;\n          }\n          zoom.fakeGestureTouched = true;\n          gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\n        }\n        if (!gesture.$slideEl || !gesture.$slideEl.length) {\n          gesture.$slideEl = $(e.target).closest('.swiper-slide');\n          if (gesture.$slideEl.length === 0) { gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); }\n          gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\n          gesture.$imageWrapEl = gesture.$imageEl.parent((\".\" + (params.containerClass)));\n          gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n          if (gesture.$imageWrapEl.length === 0) {\n            gesture.$imageEl = undefined;\n            return;\n          }\n        }\n        gesture.$imageEl.transition(0);\n        swiper.zoom.isScaling = true;\n      },\n      onGestureChange: function onGestureChange(e) {\n        var swiper = this;\n        var params = swiper.params.zoom;\n        var zoom = swiper.zoom;\n        var gesture = zoom.gesture;\n        if (!Support.gestures) {\n          if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n            return;\n          }\n          zoom.fakeGestureMoved = true;\n          gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n        }\n        if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }\n        if (Support.gestures) {\n          zoom.scale = e.scale * zoom.currentScale;\n        } else {\n          zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;\n        }\n        if (zoom.scale > gesture.maxRatio) {\n          zoom.scale = (gesture.maxRatio - 1) + (Math.pow( ((zoom.scale - gesture.maxRatio) + 1), 0.5 ));\n        }\n        if (zoom.scale < params.minRatio) {\n          zoom.scale = (params.minRatio + 1) - (Math.pow( ((params.minRatio - zoom.scale) + 1), 0.5 ));\n        }\n        gesture.$imageEl.transform((\"translate3d(0,0,0) scale(\" + (zoom.scale) + \")\"));\n      },\n      onGestureEnd: function onGestureEnd(e) {\n        var swiper = this;\n        var params = swiper.params.zoom;\n        var zoom = swiper.zoom;\n        var gesture = zoom.gesture;\n        if (!Support.gestures) {\n          if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\n            return;\n          }\n          if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {\n            return;\n          }\n          zoom.fakeGestureTouched = false;\n          zoom.fakeGestureMoved = false;\n        }\n        if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }\n        zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n        gesture.$imageEl.transition(swiper.params.speed).transform((\"translate3d(0,0,0) scale(\" + (zoom.scale) + \")\"));\n        zoom.currentScale = zoom.scale;\n        zoom.isScaling = false;\n        if (zoom.scale === 1) { gesture.$slideEl = undefined; }\n      },\n      onTouchStart: function onTouchStart(e) {\n        var swiper = this;\n        var zoom = swiper.zoom;\n        var gesture = zoom.gesture;\n        var image = zoom.image;\n        if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }\n        if (image.isTouched) { return; }\n        if (Device.android) { e.preventDefault(); }\n        image.isTouched = true;\n        image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n        image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n      },\n      onTouchMove: function onTouchMove(e) {\n        var swiper = this;\n        var zoom = swiper.zoom;\n        var gesture = zoom.gesture;\n        var image = zoom.image;\n        var velocity = zoom.velocity;\n        if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }\n        swiper.allowClick = false;\n        if (!image.isTouched || !gesture.$slideEl) { return; }\n  \n        if (!image.isMoved) {\n          image.width = gesture.$imageEl[0].offsetWidth;\n          image.height = gesture.$imageEl[0].offsetHeight;\n          image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n          image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n          gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n          gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n          gesture.$imageWrapEl.transition(0);\n          if (swiper.rtl) {\n            image.startX = -image.startX;\n            image.startY = -image.startY;\n          }\n        }\n        // Define if we need image drag\n        var scaledWidth = image.width * zoom.scale;\n        var scaledHeight = image.height * zoom.scale;\n  \n        if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) { return; }\n  \n        image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n        image.maxX = -image.minX;\n        image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n        image.maxY = -image.minY;\n  \n        image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n        image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n  \n        if (!image.isMoved && !zoom.isScaling) {\n          if (\n            swiper.isHorizontal()\n            && (\n              (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x)\n              || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)\n            )\n          ) {\n            image.isTouched = false;\n            return;\n          } if (\n            !swiper.isHorizontal()\n            && (\n              (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y)\n              || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)\n            )\n          ) {\n            image.isTouched = false;\n            return;\n          }\n        }\n        e.preventDefault();\n        e.stopPropagation();\n  \n        image.isMoved = true;\n        image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX;\n        image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY;\n  \n        if (image.currentX < image.minX) {\n          image.currentX = (image.minX + 1) - (Math.pow( ((image.minX - image.currentX) + 1), 0.8 ));\n        }\n        if (image.currentX > image.maxX) {\n          image.currentX = (image.maxX - 1) + (Math.pow( ((image.currentX - image.maxX) + 1), 0.8 ));\n        }\n  \n        if (image.currentY < image.minY) {\n          image.currentY = (image.minY + 1) - (Math.pow( ((image.minY - image.currentY) + 1), 0.8 ));\n        }\n        if (image.currentY > image.maxY) {\n          image.currentY = (image.maxY - 1) + (Math.pow( ((image.currentY - image.maxY) + 1), 0.8 ));\n        }\n  \n        // Velocity\n        if (!velocity.prevPositionX) { velocity.prevPositionX = image.touchesCurrent.x; }\n        if (!velocity.prevPositionY) { velocity.prevPositionY = image.touchesCurrent.y; }\n        if (!velocity.prevTime) { velocity.prevTime = Date.now(); }\n        velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n        velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n        if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) { velocity.x = 0; }\n        if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) { velocity.y = 0; }\n        velocity.prevPositionX = image.touchesCurrent.x;\n        velocity.prevPositionY = image.touchesCurrent.y;\n        velocity.prevTime = Date.now();\n  \n        gesture.$imageWrapEl.transform((\"translate3d(\" + (image.currentX) + \"px, \" + (image.currentY) + \"px,0)\"));\n      },\n      onTouchEnd: function onTouchEnd() {\n        var swiper = this;\n        var zoom = swiper.zoom;\n        var gesture = zoom.gesture;\n        var image = zoom.image;\n        var velocity = zoom.velocity;\n        if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }\n        if (!image.isTouched || !image.isMoved) {\n          image.isTouched = false;\n          image.isMoved = false;\n          return;\n        }\n        image.isTouched = false;\n        image.isMoved = false;\n        var momentumDurationX = 300;\n        var momentumDurationY = 300;\n        var momentumDistanceX = velocity.x * momentumDurationX;\n        var newPositionX = image.currentX + momentumDistanceX;\n        var momentumDistanceY = velocity.y * momentumDurationY;\n        var newPositionY = image.currentY + momentumDistanceY;\n  \n        // Fix duration\n        if (velocity.x !== 0) { momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); }\n        if (velocity.y !== 0) { momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); }\n        var momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n  \n        image.currentX = newPositionX;\n        image.currentY = newPositionY;\n  \n        // Define if we need image drag\n        var scaledWidth = image.width * zoom.scale;\n        var scaledHeight = image.height * zoom.scale;\n        image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n        image.maxX = -image.minX;\n        image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n        image.maxY = -image.minY;\n        image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n        image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n  \n        gesture.$imageWrapEl.transition(momentumDuration).transform((\"translate3d(\" + (image.currentX) + \"px, \" + (image.currentY) + \"px,0)\"));\n      },\n      onTransitionEnd: function onTransitionEnd() {\n        var swiper = this;\n        var zoom = swiper.zoom;\n        var gesture = zoom.gesture;\n        if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n          gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n          gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n  \n          zoom.scale = 1;\n          zoom.currentScale = 1;\n  \n          gesture.$slideEl = undefined;\n          gesture.$imageEl = undefined;\n          gesture.$imageWrapEl = undefined;\n        }\n      },\n      // Toggle Zoom\n      toggle: function toggle(e) {\n        var swiper = this;\n        var zoom = swiper.zoom;\n  \n        if (zoom.scale && zoom.scale !== 1) {\n          // Zoom Out\n          zoom.out();\n        } else {\n          // Zoom In\n          zoom.in(e);\n        }\n      },\n      in: function in$1(e) {\n        var swiper = this;\n  \n        var zoom = swiper.zoom;\n        var params = swiper.params.zoom;\n        var gesture = zoom.gesture;\n        var image = zoom.image;\n  \n        if (!gesture.$slideEl) {\n          gesture.$slideEl = swiper.clickedSlide ? $(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex);\n          gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\n          gesture.$imageWrapEl = gesture.$imageEl.parent((\".\" + (params.containerClass)));\n        }\n        if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }\n  \n        gesture.$slideEl.addClass((\"\" + (params.zoomedSlideClass)));\n  \n        var touchX;\n        var touchY;\n        var offsetX;\n        var offsetY;\n        var diffX;\n        var diffY;\n        var translateX;\n        var translateY;\n        var imageWidth;\n        var imageHeight;\n        var scaledWidth;\n        var scaledHeight;\n        var translateMinX;\n        var translateMinY;\n        var translateMaxX;\n        var translateMaxY;\n        var slideWidth;\n        var slideHeight;\n  \n        if (typeof image.touchesStart.x === 'undefined' && e) {\n          touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n          touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n        } else {\n          touchX = image.touchesStart.x;\n          touchY = image.touchesStart.y;\n        }\n  \n        zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n        zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n        if (e) {\n          slideWidth = gesture.$slideEl[0].offsetWidth;\n          slideHeight = gesture.$slideEl[0].offsetHeight;\n          offsetX = gesture.$slideEl.offset().left;\n          offsetY = gesture.$slideEl.offset().top;\n          diffX = (offsetX + (slideWidth / 2)) - touchX;\n          diffY = (offsetY + (slideHeight / 2)) - touchY;\n  \n          imageWidth = gesture.$imageEl[0].offsetWidth;\n          imageHeight = gesture.$imageEl[0].offsetHeight;\n          scaledWidth = imageWidth * zoom.scale;\n          scaledHeight = imageHeight * zoom.scale;\n  \n          translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0);\n          translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0);\n          translateMaxX = -translateMinX;\n          translateMaxY = -translateMinY;\n  \n          translateX = diffX * zoom.scale;\n          translateY = diffY * zoom.scale;\n  \n          if (translateX < translateMinX) {\n            translateX = translateMinX;\n          }\n          if (translateX > translateMaxX) {\n            translateX = translateMaxX;\n          }\n  \n          if (translateY < translateMinY) {\n            translateY = translateMinY;\n          }\n          if (translateY > translateMaxY) {\n            translateY = translateMaxY;\n          }\n        } else {\n          translateX = 0;\n          translateY = 0;\n        }\n        gesture.$imageWrapEl.transition(300).transform((\"translate3d(\" + translateX + \"px, \" + translateY + \"px,0)\"));\n        gesture.$imageEl.transition(300).transform((\"translate3d(0,0,0) scale(\" + (zoom.scale) + \")\"));\n      },\n      out: function out() {\n        var swiper = this;\n  \n        var zoom = swiper.zoom;\n        var params = swiper.params.zoom;\n        var gesture = zoom.gesture;\n  \n        if (!gesture.$slideEl) {\n          gesture.$slideEl = swiper.clickedSlide ? $(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex);\n          gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\n          gesture.$imageWrapEl = gesture.$imageEl.parent((\".\" + (params.containerClass)));\n        }\n        if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }\n  \n        zoom.scale = 1;\n        zoom.currentScale = 1;\n        gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n        gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n        gesture.$slideEl.removeClass((\"\" + (params.zoomedSlideClass)));\n        gesture.$slideEl = undefined;\n      },\n      // Attach/Detach Events\n      enable: function enable() {\n        var swiper = this;\n        var zoom = swiper.zoom;\n        if (zoom.enabled) { return; }\n        zoom.enabled = true;\n  \n        var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n  \n        // Scale image\n        if (Support.gestures) {\n          swiper.$wrapperEl.on('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener);\n          swiper.$wrapperEl.on('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener);\n          swiper.$wrapperEl.on('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener);\n        } else if (swiper.touchEvents.start === 'touchstart') {\n          swiper.$wrapperEl.on(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener);\n          swiper.$wrapperEl.on(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener);\n          swiper.$wrapperEl.on(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener);\n        }\n  \n        // Move image\n        swiper.$wrapperEl.on(swiper.touchEvents.move, (\".\" + (swiper.params.zoom.containerClass)), zoom.onTouchMove);\n      },\n      disable: function disable() {\n        var swiper = this;\n        var zoom = swiper.zoom;\n        if (!zoom.enabled) { return; }\n  \n        swiper.zoom.enabled = false;\n  \n        var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n  \n        // Scale image\n        if (Support.gestures) {\n          swiper.$wrapperEl.off('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener);\n          swiper.$wrapperEl.off('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener);\n          swiper.$wrapperEl.off('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener);\n        } else if (swiper.touchEvents.start === 'touchstart') {\n          swiper.$wrapperEl.off(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener);\n          swiper.$wrapperEl.off(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener);\n          swiper.$wrapperEl.off(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener);\n        }\n  \n        // Move image\n        swiper.$wrapperEl.off(swiper.touchEvents.move, (\".\" + (swiper.params.zoom.containerClass)), zoom.onTouchMove);\n      },\n    };\n  \n    var Zoom$1 = {\n      name: 'zoom',\n      params: {\n        zoom: {\n          enabled: false,\n          maxRatio: 3,\n          minRatio: 1,\n          toggle: true,\n          containerClass: 'swiper-zoom-container',\n          zoomedSlideClass: 'swiper-slide-zoomed',\n        },\n      },\n      create: function create() {\n        var swiper = this;\n        var zoom = {\n          enabled: false,\n          scale: 1,\n          currentScale: 1,\n          isScaling: false,\n          gesture: {\n            $slideEl: undefined,\n            slideWidth: undefined,\n            slideHeight: undefined,\n            $imageEl: undefined,\n            $imageWrapEl: undefined,\n            maxRatio: 3,\n          },\n          image: {\n            isTouched: undefined,\n            isMoved: undefined,\n            currentX: undefined,\n            currentY: undefined,\n            minX: undefined,\n            minY: undefined,\n            maxX: undefined,\n            maxY: undefined,\n            width: undefined,\n            height: undefined,\n            startX: undefined,\n            startY: undefined,\n            touchesStart: {},\n            touchesCurrent: {},\n          },\n          velocity: {\n            x: undefined,\n            y: undefined,\n            prevPositionX: undefined,\n            prevPositionY: undefined,\n            prevTime: undefined,\n          },\n        };\n  \n        ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach(function (methodName) {\n          zoom[methodName] = Zoom[methodName].bind(swiper);\n        });\n        Utils.extend(swiper, {\n          zoom: zoom,\n        });\n  \n        var scale = 1;\n        Object.defineProperty(swiper.zoom, 'scale', {\n          get: function get() {\n            return scale;\n          },\n          set: function set(value) {\n            if (scale !== value) {\n              var imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;\n              var slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;\n              swiper.emit('zoomChange', value, imageEl, slideEl);\n            }\n            scale = value;\n          },\n        });\n      },\n      on: {\n        init: function init() {\n          var swiper = this;\n          if (swiper.params.zoom.enabled) {\n            swiper.zoom.enable();\n          }\n        },\n        destroy: function destroy() {\n          var swiper = this;\n          swiper.zoom.disable();\n        },\n        touchStart: function touchStart(e) {\n          var swiper = this;\n          if (!swiper.zoom.enabled) { return; }\n          swiper.zoom.onTouchStart(e);\n        },\n        touchEnd: function touchEnd(e) {\n          var swiper = this;\n          if (!swiper.zoom.enabled) { return; }\n          swiper.zoom.onTouchEnd(e);\n        },\n        doubleTap: function doubleTap(e) {\n          var swiper = this;\n          if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n            swiper.zoom.toggle(e);\n          }\n        },\n        transitionEnd: function transitionEnd() {\n          var swiper = this;\n          if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n            swiper.zoom.onTransitionEnd();\n          }\n        },\n      },\n    };\n  \n    var Lazy = {\n      loadInSlide: function loadInSlide(index, loadInDuplicate) {\n        if ( loadInDuplicate === void 0 ) loadInDuplicate = true;\n  \n        var swiper = this;\n        var params = swiper.params.lazy;\n        if (typeof index === 'undefined') { return; }\n        if (swiper.slides.length === 0) { return; }\n        var isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n  \n        var $slideEl = isVirtual\n          ? swiper.$wrapperEl.children((\".\" + (swiper.params.slideClass) + \"[data-swiper-slide-index=\\\"\" + index + \"\\\"]\"))\n          : swiper.slides.eq(index);\n  \n        var $images = $slideEl.find((\".\" + (params.elementClass) + \":not(.\" + (params.loadedClass) + \"):not(.\" + (params.loadingClass) + \")\"));\n        if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n          $images = $images.add($slideEl[0]);\n        }\n        if ($images.length === 0) { return; }\n  \n        $images.each(function (imageIndex, imageEl) {\n          var $imageEl = $(imageEl);\n          $imageEl.addClass(params.loadingClass);\n  \n          var background = $imageEl.attr('data-background');\n          var src = $imageEl.attr('data-src');\n          var srcset = $imageEl.attr('data-srcset');\n          var sizes = $imageEl.attr('data-sizes');\n  \n          swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, function () {\n            if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) { return; }\n            if (background) {\n              $imageEl.css('background-image', (\"url(\\\"\" + background + \"\\\")\"));\n              $imageEl.removeAttr('data-background');\n            } else {\n              if (srcset) {\n                $imageEl.attr('srcset', srcset);\n                $imageEl.removeAttr('data-srcset');\n              }\n              if (sizes) {\n                $imageEl.attr('sizes', sizes);\n                $imageEl.removeAttr('data-sizes');\n              }\n              if (src) {\n                $imageEl.attr('src', src);\n                $imageEl.removeAttr('data-src');\n              }\n            }\n  \n            $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n            $slideEl.find((\".\" + (params.preloaderClass))).remove();\n            if (swiper.params.loop && loadInDuplicate) {\n              var slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n              if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n                var originalSlide = swiper.$wrapperEl.children((\"[data-swiper-slide-index=\\\"\" + slideOriginalIndex + \"\\\"]:not(.\" + (swiper.params.slideDuplicateClass) + \")\"));\n                swiper.lazy.loadInSlide(originalSlide.index(), false);\n              } else {\n                var duplicatedSlide = swiper.$wrapperEl.children((\".\" + (swiper.params.slideDuplicateClass) + \"[data-swiper-slide-index=\\\"\" + slideOriginalIndex + \"\\\"]\"));\n                swiper.lazy.loadInSlide(duplicatedSlide.index(), false);\n              }\n            }\n            swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n          });\n  \n          swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n        });\n      },\n      load: function load() {\n        var swiper = this;\n        var $wrapperEl = swiper.$wrapperEl;\n        var swiperParams = swiper.params;\n        var slides = swiper.slides;\n        var activeIndex = swiper.activeIndex;\n        var isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n        var params = swiperParams.lazy;\n  \n        var slidesPerView = swiperParams.slidesPerView;\n        if (slidesPerView === 'auto') {\n          slidesPerView = 0;\n        }\n  \n        function slideExist(index) {\n          if (isVirtual) {\n            if ($wrapperEl.children((\".\" + (swiperParams.slideClass) + \"[data-swiper-slide-index=\\\"\" + index + \"\\\"]\")).length) {\n              return true;\n            }\n          } else if (slides[index]) { return true; }\n          return false;\n        }\n        function slideIndex(slideEl) {\n          if (isVirtual) {\n            return $(slideEl).attr('data-swiper-slide-index');\n          }\n          return $(slideEl).index();\n        }\n  \n        if (!swiper.lazy.initialImageLoaded) { swiper.lazy.initialImageLoaded = true; }\n        if (swiper.params.watchSlidesVisibility) {\n          $wrapperEl.children((\".\" + (swiperParams.slideVisibleClass))).each(function (elIndex, slideEl) {\n            var index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n            swiper.lazy.loadInSlide(index);\n          });\n        } else if (slidesPerView > 1) {\n          for (var i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n            if (slideExist(i)) { swiper.lazy.loadInSlide(i); }\n          }\n        } else {\n          swiper.lazy.loadInSlide(activeIndex);\n        }\n        if (params.loadPrevNext) {\n          if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n            var amount = params.loadPrevNextAmount;\n            var spv = slidesPerView;\n            var maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n            var minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n            // Next Slides\n            for (var i$1 = activeIndex + slidesPerView; i$1 < maxIndex; i$1 += 1) {\n              if (slideExist(i$1)) { swiper.lazy.loadInSlide(i$1); }\n            }\n            // Prev Slides\n            for (var i$2 = minIndex; i$2 < activeIndex; i$2 += 1) {\n              if (slideExist(i$2)) { swiper.lazy.loadInSlide(i$2); }\n            }\n          } else {\n            var nextSlide = $wrapperEl.children((\".\" + (swiperParams.slideNextClass)));\n            if (nextSlide.length > 0) { swiper.lazy.loadInSlide(slideIndex(nextSlide)); }\n  \n            var prevSlide = $wrapperEl.children((\".\" + (swiperParams.slidePrevClass)));\n            if (prevSlide.length > 0) { swiper.lazy.loadInSlide(slideIndex(prevSlide)); }\n          }\n        }\n      },\n    };\n  \n    var Lazy$1 = {\n      name: 'lazy',\n      params: {\n        lazy: {\n          enabled: false,\n          loadPrevNext: false,\n          loadPrevNextAmount: 1,\n          loadOnTransitionStart: false,\n  \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        var swiper = this;\n        Utils.extend(swiper, {\n          lazy: {\n            initialImageLoaded: false,\n            load: Lazy.load.bind(swiper),\n            loadInSlide: Lazy.loadInSlide.bind(swiper),\n          },\n        });\n      },\n      on: {\n        beforeInit: function beforeInit() {\n          var swiper = this;\n          if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n            swiper.params.preloadImages = false;\n          }\n        },\n        init: function init() {\n          var swiper = this;\n          if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\n            swiper.lazy.load();\n          }\n        },\n        scroll: function scroll() {\n          var swiper = this;\n          if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n            swiper.lazy.load();\n          }\n        },\n        resize: function resize() {\n          var swiper = this;\n          if (swiper.params.lazy.enabled) {\n            swiper.lazy.load();\n          }\n        },\n        scrollbarDragMove: function scrollbarDragMove() {\n          var swiper = this;\n          if (swiper.params.lazy.enabled) {\n            swiper.lazy.load();\n          }\n        },\n        transitionStart: function transitionStart() {\n          var swiper = this;\n          if (swiper.params.lazy.enabled) {\n            if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) {\n              swiper.lazy.load();\n            }\n          }\n        },\n        transitionEnd: function transitionEnd() {\n          var swiper = this;\n          if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n            swiper.lazy.load();\n          }\n        },\n      },\n    };\n  \n    /* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\n  \n    var Controller = {\n      LinearSpline: function LinearSpline(x, y) {\n        var binarySearch = (function search() {\n          var maxIndex;\n          var minIndex;\n          var guess;\n          return function (array, val) {\n            minIndex = -1;\n            maxIndex = array.length;\n            while (maxIndex - minIndex > 1) {\n              guess = maxIndex + minIndex >> 1;\n              if (array[guess] <= val) {\n                minIndex = guess;\n              } else {\n                maxIndex = guess;\n              }\n            }\n            return maxIndex;\n          };\n        }());\n        this.x = x;\n        this.y = y;\n        this.lastIndex = x.length - 1;\n        // Given an x value (x2), return the expected y2 value:\n        // (x1,y1) is the known point before given value,\n        // (x3,y3) is the known point after given value.\n        var i1;\n        var i3;\n  \n        this.interpolate = function interpolate(x2) {\n          if (!x2) { return 0; }\n  \n          // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n          i3 = binarySearch(this.x, x2);\n          i1 = i3 - 1;\n  \n          // We have our indexes i1 & i3, so we can calculate already:\n          // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n          return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];\n        };\n        return this;\n      },\n      // xxx: for now i will just save one spline function to to\n      getInterpolateFunction: function getInterpolateFunction(c) {\n        var swiper = this;\n        if (!swiper.controller.spline) {\n          swiper.controller.spline = swiper.params.loop\n            ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid)\n            : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);\n        }\n      },\n      setTranslate: function setTranslate(setTranslate$1, byController) {\n        var swiper = this;\n        var controlled = swiper.controller.control;\n        var multiplier;\n        var controlledTranslate;\n        function setControlledTranslate(c) {\n          // this will create an Interpolate function based on the snapGrids\n          // x is the Grid of the scrolled scroller and y will be the controlled scroller\n          // it makes sense to create this only once and recall it for the interpolation\n          // the function does a lot of value caching for performance\n          var translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n          if (swiper.params.controller.by === 'slide') {\n            swiper.controller.getInterpolateFunction(c);\n            // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n            // but it did not work out\n            controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n          }\n  \n          if (!controlledTranslate || swiper.params.controller.by === 'container') {\n            multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n            controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate();\n          }\n  \n          if (swiper.params.controller.inverse) {\n            controlledTranslate = c.maxTranslate() - controlledTranslate;\n          }\n          c.updateProgress(controlledTranslate);\n          c.setTranslate(controlledTranslate, swiper);\n          c.updateActiveIndex();\n          c.updateSlidesClasses();\n        }\n        if (Array.isArray(controlled)) {\n          for (var i = 0; i < controlled.length; i += 1) {\n            if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n              setControlledTranslate(controlled[i]);\n            }\n          }\n        } else if (controlled instanceof Swiper && byController !== controlled) {\n          setControlledTranslate(controlled);\n        }\n      },\n      setTransition: function setTransition(duration, byController) {\n        var swiper = this;\n        var controlled = swiper.controller.control;\n        var i;\n        function setControlledTransition(c) {\n          c.setTransition(duration, swiper);\n          if (duration !== 0) {\n            c.transitionStart();\n            if (c.params.autoHeight) {\n              Utils.nextTick(function () {\n                c.updateAutoHeight();\n              });\n            }\n            c.$wrapperEl.transitionEnd(function () {\n              if (!controlled) { return; }\n              if (c.params.loop && swiper.params.controller.by === 'slide') {\n                c.loopFix();\n              }\n              c.transitionEnd();\n            });\n          }\n        }\n        if (Array.isArray(controlled)) {\n          for (i = 0; i < controlled.length; i += 1) {\n            if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n              setControlledTransition(controlled[i]);\n            }\n          }\n        } else if (controlled instanceof Swiper && byController !== controlled) {\n          setControlledTransition(controlled);\n        }\n      },\n    };\n    var Controller$1 = {\n      name: 'controller',\n      params: {\n        controller: {\n          control: undefined,\n          inverse: false,\n          by: 'slide', // or 'container'\n        },\n      },\n      create: function create() {\n        var swiper = this;\n        Utils.extend(swiper, {\n          controller: {\n            control: swiper.params.controller.control,\n            getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),\n            setTranslate: Controller.setTranslate.bind(swiper),\n            setTransition: Controller.setTransition.bind(swiper),\n          },\n        });\n      },\n      on: {\n        update: function update() {\n          var swiper = this;\n          if (!swiper.controller.control) { return; }\n          if (swiper.controller.spline) {\n            swiper.controller.spline = undefined;\n            delete swiper.controller.spline;\n          }\n        },\n        resize: function resize() {\n          var swiper = this;\n          if (!swiper.controller.control) { return; }\n          if (swiper.controller.spline) {\n            swiper.controller.spline = undefined;\n            delete swiper.controller.spline;\n          }\n        },\n        observerUpdate: function observerUpdate() {\n          var swiper = this;\n          if (!swiper.controller.control) { return; }\n          if (swiper.controller.spline) {\n            swiper.controller.spline = undefined;\n            delete swiper.controller.spline;\n          }\n        },\n        setTranslate: function setTranslate(translate, byController) {\n          var swiper = this;\n          if (!swiper.controller.control) { return; }\n          swiper.controller.setTranslate(translate, byController);\n        },\n        setTransition: function setTransition(duration, byController) {\n          var swiper = this;\n          if (!swiper.controller.control) { return; }\n          swiper.controller.setTransition(duration, byController);\n        },\n      },\n    };\n  \n    var a11y = {\n      makeElFocusable: function makeElFocusable($el) {\n        $el.attr('tabIndex', '0');\n        return $el;\n      },\n      addElRole: function addElRole($el, role) {\n        $el.attr('role', role);\n        return $el;\n      },\n      addElLabel: function addElLabel($el, label) {\n        $el.attr('aria-label', label);\n        return $el;\n      },\n      disableEl: function disableEl($el) {\n        $el.attr('aria-disabled', true);\n        return $el;\n      },\n      enableEl: function enableEl($el) {\n        $el.attr('aria-disabled', false);\n        return $el;\n      },\n      onEnterKey: function onEnterKey(e) {\n        var swiper = this;\n        var params = swiper.params.a11y;\n        if (e.keyCode !== 13) { return; }\n        var $targetEl = $(e.target);\n        if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n          if (!(swiper.isEnd && !swiper.params.loop)) {\n            swiper.slideNext();\n          }\n          if (swiper.isEnd) {\n            swiper.a11y.notify(params.lastSlideMessage);\n          } else {\n            swiper.a11y.notify(params.nextSlideMessage);\n          }\n        }\n        if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n          if (!(swiper.isBeginning && !swiper.params.loop)) {\n            swiper.slidePrev();\n          }\n          if (swiper.isBeginning) {\n            swiper.a11y.notify(params.firstSlideMessage);\n          } else {\n            swiper.a11y.notify(params.prevSlideMessage);\n          }\n        }\n        if (swiper.pagination && $targetEl.is((\".\" + (swiper.params.pagination.bulletClass)))) {\n          $targetEl[0].click();\n        }\n      },\n      notify: function notify(message) {\n        var swiper = this;\n        var notification = swiper.a11y.liveRegion;\n        if (notification.length === 0) { return; }\n        notification.html('');\n        notification.html(message);\n      },\n      updateNavigation: function updateNavigation() {\n        var swiper = this;\n  \n        if (swiper.params.loop) { return; }\n        var ref = swiper.navigation;\n        var $nextEl = ref.$nextEl;\n        var $prevEl = ref.$prevEl;\n  \n        if ($prevEl && $prevEl.length > 0) {\n          if (swiper.isBeginning) {\n            swiper.a11y.disableEl($prevEl);\n          } else {\n            swiper.a11y.enableEl($prevEl);\n          }\n        }\n        if ($nextEl && $nextEl.length > 0) {\n          if (swiper.isEnd) {\n            swiper.a11y.disableEl($nextEl);\n          } else {\n            swiper.a11y.enableEl($nextEl);\n          }\n        }\n      },\n      updatePagination: function updatePagination() {\n        var swiper = this;\n        var params = swiper.params.a11y;\n        if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n          swiper.pagination.bullets.each(function (bulletIndex, bulletEl) {\n            var $bulletEl = $(bulletEl);\n            swiper.a11y.makeElFocusable($bulletEl);\n            swiper.a11y.addElRole($bulletEl, 'button');\n            swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/{{index}}/, $bulletEl.index() + 1));\n          });\n        }\n      },\n      init: function init() {\n        var swiper = this;\n  \n        swiper.$el.append(swiper.a11y.liveRegion);\n  \n        // Navigation\n        var params = swiper.params.a11y;\n        var $nextEl;\n        var $prevEl;\n        if (swiper.navigation && swiper.navigation.$nextEl) {\n          $nextEl = swiper.navigation.$nextEl;\n        }\n        if (swiper.navigation && swiper.navigation.$prevEl) {\n          $prevEl = swiper.navigation.$prevEl;\n        }\n        if ($nextEl) {\n          swiper.a11y.makeElFocusable($nextEl);\n          swiper.a11y.addElRole($nextEl, 'button');\n          swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);\n          $nextEl.on('keydown', swiper.a11y.onEnterKey);\n        }\n        if ($prevEl) {\n          swiper.a11y.makeElFocusable($prevEl);\n          swiper.a11y.addElRole($prevEl, 'button');\n          swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);\n          $prevEl.on('keydown', swiper.a11y.onEnterKey);\n        }\n  \n        // Pagination\n        if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n          swiper.pagination.$el.on('keydown', (\".\" + (swiper.params.pagination.bulletClass)), swiper.a11y.onEnterKey);\n        }\n      },\n      destroy: function destroy() {\n        var swiper = this;\n        if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) { swiper.a11y.liveRegion.remove(); }\n  \n        var $nextEl;\n        var $prevEl;\n        if (swiper.navigation && swiper.navigation.$nextEl) {\n          $nextEl = swiper.navigation.$nextEl;\n        }\n        if (swiper.navigation && swiper.navigation.$prevEl) {\n          $prevEl = swiper.navigation.$prevEl;\n        }\n        if ($nextEl) {\n          $nextEl.off('keydown', swiper.a11y.onEnterKey);\n        }\n        if ($prevEl) {\n          $prevEl.off('keydown', swiper.a11y.onEnterKey);\n        }\n  \n        // Pagination\n        if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n          swiper.pagination.$el.off('keydown', (\".\" + (swiper.params.pagination.bulletClass)), swiper.a11y.onEnterKey);\n        }\n      },\n    };\n    var A11y = {\n      name: 'a11y',\n      params: {\n        a11y: {\n          enabled: true,\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 swiper = this;\n        Utils.extend(swiper, {\n          a11y: {\n            liveRegion: $((\"<span class=\\\"\" + (swiper.params.a11y.notificationClass) + \"\\\" aria-live=\\\"assertive\\\" aria-atomic=\\\"true\\\"></span>\")),\n          },\n        });\n        Object.keys(a11y).forEach(function (methodName) {\n          swiper.a11y[methodName] = a11y[methodName].bind(swiper);\n        });\n      },\n      on: {\n        init: function init() {\n          var swiper = this;\n          if (!swiper.params.a11y.enabled) { return; }\n          swiper.a11y.init();\n          swiper.a11y.updateNavigation();\n        },\n        toEdge: function toEdge() {\n          var swiper = this;\n          if (!swiper.params.a11y.enabled) { return; }\n          swiper.a11y.updateNavigation();\n        },\n        fromEdge: function fromEdge() {\n          var swiper = this;\n          if (!swiper.params.a11y.enabled) { return; }\n          swiper.a11y.updateNavigation();\n        },\n        paginationUpdate: function paginationUpdate() {\n          var swiper = this;\n          if (!swiper.params.a11y.enabled) { return; }\n          swiper.a11y.updatePagination();\n        },\n        destroy: function destroy() {\n          var swiper = this;\n          if (!swiper.params.a11y.enabled) { return; }\n          swiper.a11y.destroy();\n        },\n      },\n    };\n  \n    var History = {\n      init: function init() {\n        var swiper = this;\n        if (!swiper.params.history) { return; }\n        if (!win.history || !win.history.pushState) {\n          swiper.params.history.enabled = false;\n          swiper.params.hashNavigation.enabled = true;\n          return;\n        }\n        var history = swiper.history;\n        history.initialized = true;\n        history.paths = History.getPathValues();\n        if (!history.paths.key && !history.paths.value) { return; }\n        history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);\n        if (!swiper.params.history.replaceState) {\n          win.addEventListener('popstate', swiper.history.setHistoryPopState);\n        }\n      },\n      destroy: function destroy() {\n        var swiper = this;\n        if (!swiper.params.history.replaceState) {\n          win.removeEventListener('popstate', swiper.history.setHistoryPopState);\n        }\n      },\n      setHistoryPopState: function setHistoryPopState() {\n        var swiper = this;\n        swiper.history.paths = History.getPathValues();\n        swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);\n      },\n      getPathValues: function getPathValues() {\n        var pathArray = win.location.pathname.slice(1).split('/').filter(function (part) { return part !== ''; });\n        var total = pathArray.length;\n        var key = pathArray[total - 2];\n        var value = pathArray[total - 1];\n        return { key: key, value: value };\n      },\n      setHistory: function setHistory(key, index) {\n        var swiper = this;\n        if (!swiper.history.initialized || !swiper.params.history.enabled) { return; }\n        var slide = swiper.slides.eq(index);\n        var value = History.slugify(slide.attr('data-history'));\n        if (!win.location.pathname.includes(key)) {\n          value = key + \"/\" + value;\n        }\n        var currentState = win.history.state;\n        if (currentState && currentState.value === value) {\n          return;\n        }\n        if (swiper.params.history.replaceState) {\n          win.history.replaceState({ value: value }, null, value);\n        } else {\n          win.history.pushState({ value: value }, null, value);\n        }\n      },\n      slugify: function slugify(text) {\n        return text.toString()\n          .replace(/\\s+/g, '-')\n          .replace(/[^\\w-]+/g, '')\n          .replace(/--+/g, '-')\n          .replace(/^-+/, '')\n          .replace(/-+$/, '');\n      },\n      scrollToSlide: function scrollToSlide(speed, value, runCallbacks) {\n        var swiper = this;\n        if (value) {\n          for (var i = 0, length = swiper.slides.length; i < length; i += 1) {\n            var slide = swiper.slides.eq(i);\n            var slideHistory = History.slugify(slide.attr('data-history'));\n            if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n              var index = slide.index();\n              swiper.slideTo(index, speed, runCallbacks);\n            }\n          }\n        } else {\n          swiper.slideTo(0, speed, runCallbacks);\n        }\n      },\n    };\n  \n    var History$1 = {\n      name: 'history',\n      params: {\n        history: {\n          enabled: false,\n          replaceState: false,\n          key: 'slides',\n        },\n      },\n      create: function create() {\n        var swiper = this;\n        Utils.extend(swiper, {\n          history: {\n            init: History.init.bind(swiper),\n            setHistory: History.setHistory.bind(swiper),\n            setHistoryPopState: History.setHistoryPopState.bind(swiper),\n            scrollToSlide: History.scrollToSlide.bind(swiper),\n            destroy: History.destroy.bind(swiper),\n          },\n        });\n      },\n      on: {\n        init: function init() {\n          var swiper = this;\n          if (swiper.params.history.enabled) {\n            swiper.history.init();\n          }\n        },\n        destroy: function destroy() {\n          var swiper = this;\n          if (swiper.params.history.enabled) {\n            swiper.history.destroy();\n          }\n        },\n        transitionEnd: function transitionEnd() {\n          var swiper = this;\n          if (swiper.history.initialized) {\n            swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n          }\n        },\n      },\n    };\n  \n    var HashNavigation = {\n      onHashCange: function onHashCange() {\n        var swiper = this;\n        var newHash = doc.location.hash.replace('#', '');\n        var activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n        if (newHash !== activeSlideHash) {\n          var newIndex = swiper.$wrapperEl.children((\".\" + (swiper.params.slideClass) + \"[data-hash=\\\"\" + newHash + \"\\\"]\")).index();\n          if (typeof newIndex === 'undefined') { return; }\n          swiper.slideTo(newIndex);\n        }\n      },\n      setHash: function setHash() {\n        var swiper = this;\n        if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) { return; }\n        if (swiper.params.hashNavigation.replaceState && win.history && win.history.replaceState) {\n          win.history.replaceState(null, null, ((\"#\" + (swiper.slides.eq(swiper.activeIndex).attr('data-hash'))) || ''));\n        } else {\n          var slide = swiper.slides.eq(swiper.activeIndex);\n          var hash = slide.attr('data-hash') || slide.attr('data-history');\n          doc.location.hash = hash || '';\n        }\n      },\n      init: function init() {\n        var swiper = this;\n        if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) { return; }\n        swiper.hashNavigation.initialized = true;\n        var hash = doc.location.hash.replace('#', '');\n        if (hash) {\n          var speed = 0;\n          for (var i = 0, length = swiper.slides.length; i < length; i += 1) {\n            var slide = swiper.slides.eq(i);\n            var slideHash = slide.attr('data-hash') || slide.attr('data-history');\n            if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n              var index = slide.index();\n              swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n            }\n          }\n        }\n        if (swiper.params.hashNavigation.watchState) {\n          $(win).on('hashchange', swiper.hashNavigation.onHashCange);\n        }\n      },\n      destroy: function destroy() {\n        var swiper = this;\n        if (swiper.params.hashNavigation.watchState) {\n          $(win).off('hashchange', swiper.hashNavigation.onHashCange);\n        }\n      },\n    };\n    var HashNavigation$1 = {\n      name: 'hash-navigation',\n      params: {\n        hashNavigation: {\n          enabled: false,\n          replaceState: false,\n          watchState: false,\n        },\n      },\n      create: function create() {\n        var swiper = this;\n        Utils.extend(swiper, {\n          hashNavigation: {\n            initialized: false,\n            init: HashNavigation.init.bind(swiper),\n            destroy: HashNavigation.destroy.bind(swiper),\n            setHash: HashNavigation.setHash.bind(swiper),\n            onHashCange: HashNavigation.onHashCange.bind(swiper),\n          },\n        });\n      },\n      on: {\n        init: function init() {\n          var swiper = this;\n          if (swiper.params.hashNavigation.enabled) {\n            swiper.hashNavigation.init();\n          }\n        },\n        destroy: function destroy() {\n          var swiper = this;\n          if (swiper.params.hashNavigation.enabled) {\n            swiper.hashNavigation.destroy();\n          }\n        },\n        transitionEnd: function transitionEnd() {\n          var swiper = this;\n          if (swiper.hashNavigation.initialized) {\n            swiper.hashNavigation.setHash();\n          }\n        },\n      },\n    };\n  \n    /* eslint no-underscore-dangle: \"off\" */\n  \n    var Autoplay = {\n      run: function run() {\n        var swiper = this;\n        var $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n        var delay = swiper.params.autoplay.delay;\n        if ($activeSlideEl.attr('data-swiper-autoplay')) {\n          delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n        }\n        clearTimeout(swiper.autoplay.timeout);\n        swiper.autoplay.timeout = Utils.nextTick(function () {\n          if (swiper.params.autoplay.reverseDirection) {\n            if (swiper.params.loop) {\n              swiper.loopFix();\n              swiper.slidePrev(swiper.params.speed, true, true);\n              swiper.emit('autoplay');\n            } else if (!swiper.isBeginning) {\n              swiper.slidePrev(swiper.params.speed, true, true);\n              swiper.emit('autoplay');\n            } else if (!swiper.params.autoplay.stopOnLastSlide) {\n              swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n              swiper.emit('autoplay');\n            } else {\n              swiper.autoplay.stop();\n            }\n          } else if (swiper.params.loop) {\n            swiper.loopFix();\n            swiper.slideNext(swiper.params.speed, true, true);\n            swiper.emit('autoplay');\n          } else if (!swiper.isEnd) {\n            swiper.slideNext(swiper.params.speed, true, true);\n            swiper.emit('autoplay');\n          } else if (!swiper.params.autoplay.stopOnLastSlide) {\n            swiper.slideTo(0, swiper.params.speed, true, true);\n            swiper.emit('autoplay');\n          } else {\n            swiper.autoplay.stop();\n          }\n        }, delay);\n      },\n      start: function start() {\n        var swiper = this;\n        if (typeof swiper.autoplay.timeout !== 'undefined') { return false; }\n        if (swiper.autoplay.running) { return false; }\n        swiper.autoplay.running = true;\n        swiper.emit('autoplayStart');\n        swiper.autoplay.run();\n        return true;\n      },\n      stop: function stop() {\n        var swiper = this;\n        if (!swiper.autoplay.running) { return false; }\n        if (typeof swiper.autoplay.timeout === 'undefined') { return false; }\n  \n        if (swiper.autoplay.timeout) {\n          clearTimeout(swiper.autoplay.timeout);\n          swiper.autoplay.timeout = undefined;\n        }\n        swiper.autoplay.running = false;\n        swiper.emit('autoplayStop');\n        return true;\n      },\n      pause: function pause(speed) {\n        var swiper = this;\n        if (!swiper.autoplay.running) { return; }\n        if (swiper.autoplay.paused) { return; }\n        if (swiper.autoplay.timeout) { clearTimeout(swiper.autoplay.timeout); }\n        swiper.autoplay.paused = true;\n        if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n          swiper.autoplay.paused = false;\n          swiper.autoplay.run();\n        } else {\n          swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n          swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n        }\n      },\n    };\n  \n    var Autoplay$1 = {\n      name: 'autoplay',\n      params: {\n        autoplay: {\n          enabled: false,\n          delay: 3000,\n          waitForTransition: true,\n          disableOnInteraction: true,\n          stopOnLastSlide: false,\n          reverseDirection: false,\n        },\n      },\n      create: function create() {\n        var swiper = this;\n        Utils.extend(swiper, {\n          autoplay: {\n            running: false,\n            paused: false,\n            run: Autoplay.run.bind(swiper),\n            start: Autoplay.start.bind(swiper),\n            stop: Autoplay.stop.bind(swiper),\n            pause: Autoplay.pause.bind(swiper),\n            onTransitionEnd: function onTransitionEnd(e) {\n              if (!swiper || swiper.destroyed || !swiper.$wrapperEl) { return; }\n              if (e.target !== this) { return; }\n              swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n              swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n              swiper.autoplay.paused = false;\n              if (!swiper.autoplay.running) {\n                swiper.autoplay.stop();\n              } else {\n                swiper.autoplay.run();\n              }\n            },\n          },\n        });\n      },\n      on: {\n        init: function init() {\n          var swiper = this;\n          if (swiper.params.autoplay.enabled) {\n            swiper.autoplay.start();\n          }\n        },\n        beforeTransitionStart: function beforeTransitionStart(speed, internal) {\n          var swiper = this;\n          if (swiper.autoplay.running) {\n            if (internal || !swiper.params.autoplay.disableOnInteraction) {\n              swiper.autoplay.pause(speed);\n            } else {\n              swiper.autoplay.stop();\n            }\n          }\n        },\n        sliderFirstMove: function sliderFirstMove() {\n          var swiper = this;\n          if (swiper.autoplay.running) {\n            if (swiper.params.autoplay.disableOnInteraction) {\n              swiper.autoplay.stop();\n            } else {\n              swiper.autoplay.pause();\n            }\n          }\n        },\n        destroy: function destroy() {\n          var swiper = this;\n          if (swiper.autoplay.running) {\n            swiper.autoplay.stop();\n          }\n        },\n      },\n    };\n  \n    var Fade = {\n      setTranslate: function setTranslate() {\n        var swiper = this;\n        var slides = swiper.slides;\n        for (var i = 0; i < slides.length; i += 1) {\n          var $slideEl = swiper.slides.eq(i);\n          var offset = $slideEl[0].swiperSlideOffset;\n          var tx = -offset;\n          if (!swiper.params.virtualTranslate) { tx -= swiper.translate; }\n          var ty = 0;\n          if (!swiper.isHorizontal()) {\n            ty = tx;\n            tx = 0;\n          }\n          var slideOpacity = swiper.params.fadeEffect.crossFade\n            ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n            : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n          $slideEl\n            .css({\n              opacity: slideOpacity,\n            })\n            .transform((\"translate3d(\" + tx + \"px, \" + ty + \"px, 0px)\"));\n        }\n      },\n      setTransition: function setTransition(duration) {\n        var swiper = this;\n        var slides = swiper.slides;\n        var $wrapperEl = swiper.$wrapperEl;\n        slides.transition(duration);\n        if (swiper.params.virtualTranslate && duration !== 0) {\n          var eventTriggered = false;\n          slides.transitionEnd(function () {\n            if (eventTriggered) { return; }\n            if (!swiper || swiper.destroyed) { return; }\n            eventTriggered = true;\n            swiper.animating = false;\n            var triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n            for (var i = 0; i < triggerEvents.length; i += 1) {\n              $wrapperEl.trigger(triggerEvents[i]);\n            }\n          });\n        }\n      },\n    };\n  \n    var EffectFade = {\n      name: 'effect-fade',\n      params: {\n        fadeEffect: {\n          crossFade: false,\n        },\n      },\n      create: function create() {\n        var swiper = this;\n        Utils.extend(swiper, {\n          fadeEffect: {\n            setTranslate: Fade.setTranslate.bind(swiper),\n            setTransition: Fade.setTransition.bind(swiper),\n          },\n        });\n      },\n      on: {\n        beforeInit: function beforeInit() {\n          var swiper = this;\n          if (swiper.params.effect !== 'fade') { return; }\n          swiper.classNames.push(((swiper.params.containerModifierClass) + \"fade\"));\n          var overwriteParams = {\n            slidesPerView: 1,\n            slidesPerColumn: 1,\n            slidesPerGroup: 1,\n            watchSlidesProgress: true,\n            spaceBetween: 0,\n            virtualTranslate: true,\n          };\n          Utils.extend(swiper.params, overwriteParams);\n          Utils.extend(swiper.originalParams, overwriteParams);\n        },\n        setTranslate: function setTranslate() {\n          var swiper = this;\n          if (swiper.params.effect !== 'fade') { return; }\n          swiper.fadeEffect.setTranslate();\n        },\n        setTransition: function setTransition(duration) {\n          var swiper = this;\n          if (swiper.params.effect !== 'fade') { return; }\n          swiper.fadeEffect.setTransition(duration);\n        },\n      },\n    };\n  \n    var Cube = {\n      setTranslate: function setTranslate() {\n        var swiper = this;\n        var $el = swiper.$el;\n        var $wrapperEl = swiper.$wrapperEl;\n        var slides = swiper.slides;\n        var swiperWidth = swiper.width;\n        var swiperHeight = swiper.height;\n        var rtl = swiper.rtlTranslate;\n        var swiperSize = swiper.size;\n        var params = swiper.params.cubeEffect;\n        var isHorizontal = swiper.isHorizontal();\n        var isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n        var wrapperRotate = 0;\n        var $cubeShadowEl;\n        if (params.shadow) {\n          if (isHorizontal) {\n            $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n            if ($cubeShadowEl.length === 0) {\n              $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n              $wrapperEl.append($cubeShadowEl);\n            }\n            $cubeShadowEl.css({ height: (swiperWidth + \"px\") });\n          } else {\n            $cubeShadowEl = $el.find('.swiper-cube-shadow');\n            if ($cubeShadowEl.length === 0) {\n              $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n              $el.append($cubeShadowEl);\n            }\n          }\n        }\n        for (var i = 0; i < slides.length; i += 1) {\n          var $slideEl = slides.eq(i);\n          var slideIndex = i;\n          if (isVirtual) {\n            slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n          }\n          var slideAngle = slideIndex * 90;\n          var round = Math.floor(slideAngle / 360);\n          if (rtl) {\n            slideAngle = -slideAngle;\n            round = Math.floor(-slideAngle / 360);\n          }\n          var progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n          var tx = 0;\n          var ty = 0;\n          var tz = 0;\n          if (slideIndex % 4 === 0) {\n            tx = -round * 4 * swiperSize;\n            tz = 0;\n          } else if ((slideIndex - 1) % 4 === 0) {\n            tx = 0;\n            tz = -round * 4 * swiperSize;\n          } else if ((slideIndex - 2) % 4 === 0) {\n            tx = swiperSize + (round * 4 * swiperSize);\n            tz = swiperSize;\n          } else if ((slideIndex - 3) % 4 === 0) {\n            tx = -swiperSize;\n            tz = (3 * swiperSize) + (swiperSize * 4 * round);\n          }\n          if (rtl) {\n            tx = -tx;\n          }\n  \n          if (!isHorizontal) {\n            ty = tx;\n            tx = 0;\n          }\n  \n          var transform = \"rotateX(\" + (isHorizontal ? 0 : -slideAngle) + \"deg) rotateY(\" + (isHorizontal ? slideAngle : 0) + \"deg) translate3d(\" + tx + \"px, \" + ty + \"px, \" + tz + \"px)\";\n          if (progress <= 1 && progress > -1) {\n            wrapperRotate = (slideIndex * 90) + (progress * 90);\n            if (rtl) { wrapperRotate = (-slideIndex * 90) - (progress * 90); }\n          }\n          $slideEl.transform(transform);\n          if (params.slideShadows) {\n            // Set shadows\n            var shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n            var shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n            if (shadowBefore.length === 0) {\n              shadowBefore = $((\"<div class=\\\"swiper-slide-shadow-\" + (isHorizontal ? 'left' : 'top') + \"\\\"></div>\"));\n              $slideEl.append(shadowBefore);\n            }\n            if (shadowAfter.length === 0) {\n              shadowAfter = $((\"<div class=\\\"swiper-slide-shadow-\" + (isHorizontal ? 'right' : 'bottom') + \"\\\"></div>\"));\n              $slideEl.append(shadowAfter);\n            }\n            if (shadowBefore.length) { shadowBefore[0].style.opacity = Math.max(-progress, 0); }\n            if (shadowAfter.length) { shadowAfter[0].style.opacity = Math.max(progress, 0); }\n          }\n        }\n        $wrapperEl.css({\n          '-webkit-transform-origin': (\"50% 50% -\" + (swiperSize / 2) + \"px\"),\n          '-moz-transform-origin': (\"50% 50% -\" + (swiperSize / 2) + \"px\"),\n          '-ms-transform-origin': (\"50% 50% -\" + (swiperSize / 2) + \"px\"),\n          'transform-origin': (\"50% 50% -\" + (swiperSize / 2) + \"px\"),\n        });\n  \n        if (params.shadow) {\n          if (isHorizontal) {\n            $cubeShadowEl.transform((\"translate3d(0px, \" + ((swiperWidth / 2) + params.shadowOffset) + \"px, \" + (-swiperWidth / 2) + \"px) rotateX(90deg) rotateZ(0deg) scale(\" + (params.shadowScale) + \")\"));\n          } else {\n            var shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);\n            var multiplier = 1.5 - (\n              (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2)\n              + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)\n            );\n            var scale1 = params.shadowScale;\n            var scale2 = params.shadowScale / multiplier;\n            var offset = params.shadowOffset;\n            $cubeShadowEl.transform((\"scale3d(\" + scale1 + \", 1, \" + scale2 + \") translate3d(0px, \" + ((swiperHeight / 2) + offset) + \"px, \" + (-swiperHeight / 2 / scale2) + \"px) rotateX(-90deg)\"));\n          }\n        }\n        var zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0;\n        $wrapperEl\n          .transform((\"translate3d(0px,0,\" + zFactor + \"px) rotateX(\" + (swiper.isHorizontal() ? 0 : wrapperRotate) + \"deg) rotateY(\" + (swiper.isHorizontal() ? -wrapperRotate : 0) + \"deg)\"));\n      },\n      setTransition: function setTransition(duration) {\n        var swiper = this;\n        var $el = swiper.$el;\n        var slides = swiper.slides;\n        slides\n          .transition(duration)\n          .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n          .transition(duration);\n        if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n          $el.find('.swiper-cube-shadow').transition(duration);\n        }\n      },\n    };\n  \n    var EffectCube = {\n      name: 'effect-cube',\n      params: {\n        cubeEffect: {\n          slideShadows: true,\n          shadow: true,\n          shadowOffset: 20,\n          shadowScale: 0.94,\n        },\n      },\n      create: function create() {\n        var swiper = this;\n        Utils.extend(swiper, {\n          cubeEffect: {\n            setTranslate: Cube.setTranslate.bind(swiper),\n            setTransition: Cube.setTransition.bind(swiper),\n          },\n        });\n      },\n      on: {\n        beforeInit: function beforeInit() {\n          var swiper = this;\n          if (swiper.params.effect !== 'cube') { return; }\n          swiper.classNames.push(((swiper.params.containerModifierClass) + \"cube\"));\n          swiper.classNames.push(((swiper.params.containerModifierClass) + \"3d\"));\n          var overwriteParams = {\n            slidesPerView: 1,\n            slidesPerColumn: 1,\n            slidesPerGroup: 1,\n            watchSlidesProgress: true,\n            resistanceRatio: 0,\n            spaceBetween: 0,\n            centeredSlides: false,\n            virtualTranslate: true,\n          };\n          Utils.extend(swiper.params, overwriteParams);\n          Utils.extend(swiper.originalParams, overwriteParams);\n        },\n        setTranslate: function setTranslate() {\n          var swiper = this;\n          if (swiper.params.effect !== 'cube') { return; }\n          swiper.cubeEffect.setTranslate();\n        },\n        setTransition: function setTransition(duration) {\n          var swiper = this;\n          if (swiper.params.effect !== 'cube') { return; }\n          swiper.cubeEffect.setTransition(duration);\n        },\n      },\n    };\n  \n    var Flip = {\n      setTranslate: function setTranslate() {\n        var swiper = this;\n        var slides = swiper.slides;\n        var rtl = swiper.rtlTranslate;\n        for (var i = 0; i < slides.length; i += 1) {\n          var $slideEl = slides.eq(i);\n          var progress = $slideEl[0].progress;\n          if (swiper.params.flipEffect.limitRotation) {\n            progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n          }\n          var offset = $slideEl[0].swiperSlideOffset;\n          var rotate = -180 * progress;\n          var rotateY = rotate;\n          var rotateX = 0;\n          var tx = -offset;\n          var ty = 0;\n          if (!swiper.isHorizontal()) {\n            ty = tx;\n            tx = 0;\n            rotateX = -rotateY;\n            rotateY = 0;\n          } else if (rtl) {\n            rotateY = -rotateY;\n          }\n  \n          $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n  \n          if (swiper.params.flipEffect.slideShadows) {\n            // Set shadows\n            var shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n            var shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n            if (shadowBefore.length === 0) {\n              shadowBefore = $((\"<div class=\\\"swiper-slide-shadow-\" + (swiper.isHorizontal() ? 'left' : 'top') + \"\\\"></div>\"));\n              $slideEl.append(shadowBefore);\n            }\n            if (shadowAfter.length === 0) {\n              shadowAfter = $((\"<div class=\\\"swiper-slide-shadow-\" + (swiper.isHorizontal() ? 'right' : 'bottom') + \"\\\"></div>\"));\n              $slideEl.append(shadowAfter);\n            }\n            if (shadowBefore.length) { shadowBefore[0].style.opacity = Math.max(-progress, 0); }\n            if (shadowAfter.length) { shadowAfter[0].style.opacity = Math.max(progress, 0); }\n          }\n          $slideEl\n            .transform((\"translate3d(\" + tx + \"px, \" + ty + \"px, 0px) rotateX(\" + rotateX + \"deg) rotateY(\" + rotateY + \"deg)\"));\n        }\n      },\n      setTransition: function setTransition(duration) {\n        var swiper = this;\n        var slides = swiper.slides;\n        var activeIndex = swiper.activeIndex;\n        var $wrapperEl = swiper.$wrapperEl;\n        slides\n          .transition(duration)\n          .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n          .transition(duration);\n        if (swiper.params.virtualTranslate && duration !== 0) {\n          var eventTriggered = false;\n          // eslint-disable-next-line\n          slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {\n            if (eventTriggered) { return; }\n            if (!swiper || swiper.destroyed) { return; }\n            // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;\n            eventTriggered = true;\n            swiper.animating = false;\n            var triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n            for (var i = 0; i < triggerEvents.length; i += 1) {\n              $wrapperEl.trigger(triggerEvents[i]);\n            }\n          });\n        }\n      },\n    };\n  \n    var EffectFlip = {\n      name: 'effect-flip',\n      params: {\n        flipEffect: {\n          slideShadows: true,\n          limitRotation: true,\n        },\n      },\n      create: function create() {\n        var swiper = this;\n        Utils.extend(swiper, {\n          flipEffect: {\n            setTranslate: Flip.setTranslate.bind(swiper),\n            setTransition: Flip.setTransition.bind(swiper),\n          },\n        });\n      },\n      on: {\n        beforeInit: function beforeInit() {\n          var swiper = this;\n          if (swiper.params.effect !== 'flip') { return; }\n          swiper.classNames.push(((swiper.params.containerModifierClass) + \"flip\"));\n          swiper.classNames.push(((swiper.params.containerModifierClass) + \"3d\"));\n          var overwriteParams = {\n            slidesPerView: 1,\n            slidesPerColumn: 1,\n            slidesPerGroup: 1,\n            watchSlidesProgress: true,\n            spaceBetween: 0,\n            virtualTranslate: true,\n          };\n          Utils.extend(swiper.params, overwriteParams);\n          Utils.extend(swiper.originalParams, overwriteParams);\n        },\n        setTranslate: function setTranslate() {\n          var swiper = this;\n          if (swiper.params.effect !== 'flip') { return; }\n          swiper.flipEffect.setTranslate();\n        },\n        setTransition: function setTransition(duration) {\n          var swiper = this;\n          if (swiper.params.effect !== 'flip') { return; }\n          swiper.flipEffect.setTransition(duration);\n        },\n      },\n    };\n  \n    var Coverflow = {\n      setTranslate: function setTranslate() {\n        var swiper = this;\n        var swiperWidth = swiper.width;\n        var swiperHeight = swiper.height;\n        var slides = swiper.slides;\n        var $wrapperEl = swiper.$wrapperEl;\n        var slidesSizesGrid = swiper.slidesSizesGrid;\n        var params = swiper.params.coverflowEffect;\n        var isHorizontal = swiper.isHorizontal();\n        var transform = swiper.translate;\n        var center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2);\n        var rotate = isHorizontal ? params.rotate : -params.rotate;\n        var translate = params.depth;\n        // Each slide offset from center\n        for (var i = 0, length = slides.length; i < length; i += 1) {\n          var $slideEl = slides.eq(i);\n          var slideSize = slidesSizesGrid[i];\n          var slideOffset = $slideEl[0].swiperSlideOffset;\n          var offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;\n  \n          var rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n          var rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n          // var rotateZ = 0\n          var translateZ = -translate * Math.abs(offsetMultiplier);\n  \n          var translateY = isHorizontal ? 0 : params.stretch * (offsetMultiplier);\n          var translateX = isHorizontal ? params.stretch * (offsetMultiplier) : 0;\n  \n          // Fix for ultra small values\n          if (Math.abs(translateX) < 0.001) { translateX = 0; }\n          if (Math.abs(translateY) < 0.001) { translateY = 0; }\n          if (Math.abs(translateZ) < 0.001) { translateZ = 0; }\n          if (Math.abs(rotateY) < 0.001) { rotateY = 0; }\n          if (Math.abs(rotateX) < 0.001) { rotateX = 0; }\n  \n          var slideTransform = \"translate3d(\" + translateX + \"px,\" + translateY + \"px,\" + translateZ + \"px)  rotateX(\" + rotateX + \"deg) rotateY(\" + rotateY + \"deg)\";\n  \n          $slideEl.transform(slideTransform);\n          $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n          if (params.slideShadows) {\n            // Set shadows\n            var $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n            var $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n            if ($shadowBeforeEl.length === 0) {\n              $shadowBeforeEl = $((\"<div class=\\\"swiper-slide-shadow-\" + (isHorizontal ? 'left' : 'top') + \"\\\"></div>\"));\n              $slideEl.append($shadowBeforeEl);\n            }\n            if ($shadowAfterEl.length === 0) {\n              $shadowAfterEl = $((\"<div class=\\\"swiper-slide-shadow-\" + (isHorizontal ? 'right' : 'bottom') + \"\\\"></div>\"));\n              $slideEl.append($shadowAfterEl);\n            }\n            if ($shadowBeforeEl.length) { $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; }\n            if ($shadowAfterEl.length) { $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0; }\n          }\n        }\n  \n        // Set correct perspective for IE10\n        if (Support.pointerEvents || Support.prefixedPointerEvents) {\n          var ws = $wrapperEl[0].style;\n          ws.perspectiveOrigin = center + \"px 50%\";\n        }\n      },\n      setTransition: function setTransition(duration) {\n        var swiper = this;\n        swiper.slides\n          .transition(duration)\n          .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n          .transition(duration);\n      },\n    };\n  \n    var EffectCoverflow = {\n      name: 'effect-coverflow',\n      params: {\n        coverflowEffect: {\n          rotate: 50,\n          stretch: 0,\n          depth: 100,\n          modifier: 1,\n          slideShadows: true,\n        },\n      },\n      create: function create() {\n        var swiper = this;\n        Utils.extend(swiper, {\n          coverflowEffect: {\n            setTranslate: Coverflow.setTranslate.bind(swiper),\n            setTransition: Coverflow.setTransition.bind(swiper),\n          },\n        });\n      },\n      on: {\n        beforeInit: function beforeInit() {\n          var swiper = this;\n          if (swiper.params.effect !== 'coverflow') { return; }\n  \n          swiper.classNames.push(((swiper.params.containerModifierClass) + \"coverflow\"));\n          swiper.classNames.push(((swiper.params.containerModifierClass) + \"3d\"));\n  \n          swiper.params.watchSlidesProgress = true;\n          swiper.originalParams.watchSlidesProgress = true;\n        },\n        setTranslate: function setTranslate() {\n          var swiper = this;\n          if (swiper.params.effect !== 'coverflow') { return; }\n          swiper.coverflowEffect.setTranslate();\n        },\n        setTransition: function setTransition(duration) {\n          var swiper = this;\n          if (swiper.params.effect !== 'coverflow') { return; }\n          swiper.coverflowEffect.setTransition(duration);\n        },\n      },\n    };\n  \n    var Thumbs = {\n      init: function init() {\n        var swiper = this;\n        var ref = swiper.params;\n        var thumbsParams = ref.thumbs;\n        var SwiperClass = swiper.constructor;\n        if (thumbsParams.swiper instanceof SwiperClass) {\n          swiper.thumbs.swiper = thumbsParams.swiper;\n          Utils.extend(swiper.thumbs.swiper.originalParams, {\n            watchSlidesProgress: true,\n            slideToClickedSlide: false,\n          });\n          Utils.extend(swiper.thumbs.swiper.params, {\n            watchSlidesProgress: true,\n            slideToClickedSlide: false,\n          });\n        } else if (Utils.isObject(thumbsParams.swiper)) {\n          swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, {\n            watchSlidesVisibility: true,\n            watchSlidesProgress: true,\n            slideToClickedSlide: false,\n          }));\n          swiper.thumbs.swiperCreated = true;\n        }\n        swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n        swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);\n      },\n      onThumbClick: function onThumbClick() {\n        var swiper = this;\n        var thumbsSwiper = swiper.thumbs.swiper;\n        if (!thumbsSwiper) { return; }\n        var clickedIndex = thumbsSwiper.clickedIndex;\n        var clickedSlide = thumbsSwiper.clickedSlide;\n        if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) { return; }\n        if (typeof clickedIndex === 'undefined' || clickedIndex === null) { return; }\n        var slideToIndex;\n        if (thumbsSwiper.params.loop) {\n          slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n        } else {\n          slideToIndex = clickedIndex;\n        }\n        if (swiper.params.loop) {\n          var currentIndex = swiper.activeIndex;\n          if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n            swiper.loopFix();\n            // eslint-disable-next-line\n            swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n            currentIndex = swiper.activeIndex;\n          }\n          var prevIndex = swiper.slides.eq(currentIndex).prevAll((\"[data-swiper-slide-index=\\\"\" + slideToIndex + \"\\\"]\")).eq(0).index();\n          var nextIndex = swiper.slides.eq(currentIndex).nextAll((\"[data-swiper-slide-index=\\\"\" + slideToIndex + \"\\\"]\")).eq(0).index();\n          if (typeof prevIndex === 'undefined') { slideToIndex = nextIndex; }\n          else if (typeof nextIndex === 'undefined') { slideToIndex = prevIndex; }\n          else if (nextIndex - currentIndex < currentIndex - prevIndex) { slideToIndex = nextIndex; }\n          else { slideToIndex = prevIndex; }\n        }\n        swiper.slideTo(slideToIndex);\n      },\n      update: function update(initial) {\n        var swiper = this;\n        var thumbsSwiper = swiper.thumbs.swiper;\n        if (!thumbsSwiper) { return; }\n  \n        var slidesPerView = thumbsSwiper.params.slidesPerView === 'auto'\n          ? thumbsSwiper.slidesPerViewDynamic()\n          : thumbsSwiper.params.slidesPerView;\n  \n        if (swiper.realIndex !== thumbsSwiper.realIndex) {\n          var currentThumbsIndex = thumbsSwiper.activeIndex;\n          var newThumbsIndex;\n          if (thumbsSwiper.params.loop) {\n            if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n              thumbsSwiper.loopFix();\n              // eslint-disable-next-line\n              thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n              currentThumbsIndex = thumbsSwiper.activeIndex;\n            }\n            // Find actual thumbs index to slide to\n            var prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll((\"[data-swiper-slide-index=\\\"\" + (swiper.realIndex) + \"\\\"]\")).eq(0).index();\n            var nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll((\"[data-swiper-slide-index=\\\"\" + (swiper.realIndex) + \"\\\"]\")).eq(0).index();\n            if (typeof prevThumbsIndex === 'undefined') { newThumbsIndex = nextThumbsIndex; }\n            else if (typeof nextThumbsIndex === 'undefined') { newThumbsIndex = prevThumbsIndex; }\n            else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) { newThumbsIndex = currentThumbsIndex; }\n            else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) { newThumbsIndex = nextThumbsIndex; }\n            else { newThumbsIndex = prevThumbsIndex; }\n          } else {\n            newThumbsIndex = swiper.realIndex;\n          }\n          if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n            if (thumbsSwiper.params.centeredSlides) {\n              if (newThumbsIndex > currentThumbsIndex) {\n                newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n              } else {\n                newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n              }\n            } else if (newThumbsIndex > currentThumbsIndex) {\n              newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n            }\n            thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n          }\n        }\n  \n        // Activate thumbs\n        var thumbsToActivate = 1;\n        var thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n  \n        if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n          thumbsToActivate = swiper.params.slidesPerView;\n        }\n  \n        thumbsSwiper.slides.removeClass(thumbActiveClass);\n        if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual) {\n          for (var i = 0; i < thumbsToActivate; i += 1) {\n            thumbsSwiper.$wrapperEl.children((\"[data-swiper-slide-index=\\\"\" + (swiper.realIndex + i) + \"\\\"]\")).addClass(thumbActiveClass);\n          }\n        } else {\n          for (var i$1 = 0; i$1 < thumbsToActivate; i$1 += 1) {\n            thumbsSwiper.slides.eq(swiper.realIndex + i$1).addClass(thumbActiveClass);\n          }\n        }\n      },\n    };\n    var Thumbs$1 = {\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        var swiper = this;\n        Utils.extend(swiper, {\n          thumbs: {\n            swiper: null,\n            init: Thumbs.init.bind(swiper),\n            update: Thumbs.update.bind(swiper),\n            onThumbClick: Thumbs.onThumbClick.bind(swiper),\n          },\n        });\n      },\n      on: {\n        beforeInit: function beforeInit() {\n          var swiper = this;\n          var ref = swiper.params;\n          var thumbs = ref.thumbs;\n          if (!thumbs || !thumbs.swiper) { return; }\n          swiper.thumbs.init();\n          swiper.thumbs.update(true);\n        },\n        slideChange: function slideChange() {\n          var swiper = this;\n          if (!swiper.thumbs.swiper) { return; }\n          swiper.thumbs.update();\n        },\n        update: function update() {\n          var swiper = this;\n          if (!swiper.thumbs.swiper) { return; }\n          swiper.thumbs.update();\n        },\n        resize: function resize() {\n          var swiper = this;\n          if (!swiper.thumbs.swiper) { return; }\n          swiper.thumbs.update();\n        },\n        observerUpdate: function observerUpdate() {\n          var swiper = this;\n          if (!swiper.thumbs.swiper) { return; }\n          swiper.thumbs.update();\n        },\n        setTransition: function setTransition(duration) {\n          var swiper = this;\n          var thumbsSwiper = swiper.thumbs.swiper;\n          if (!thumbsSwiper) { return; }\n          thumbsSwiper.setTransition(duration);\n        },\n        beforeDestroy: function beforeDestroy() {\n          var swiper = this;\n          var thumbsSwiper = swiper.thumbs.swiper;\n          if (!thumbsSwiper) { return; }\n          if (swiper.thumbs.swiperCreated && thumbsSwiper) {\n            thumbsSwiper.destroy();\n          }\n        },\n      },\n    };\n  \n    // Swiper Class\n  \n    var components = [\n      Device$1,\n      Support$1,\n      Browser$1,\n      Resize,\n      Observer$1,\n      Virtual$1,\n      Keyboard$1,\n      Mousewheel$1,\n      Navigation$1,\n      Pagination$1,\n      Scrollbar$1,\n      Parallax$1,\n      Zoom$1,\n      Lazy$1,\n      Controller$1,\n      A11y,\n      History$1,\n      HashNavigation$1,\n      Autoplay$1,\n      EffectFade,\n      EffectCube,\n      EffectFlip,\n      EffectCoverflow,\n      Thumbs$1\n    ];\n  \n    if (typeof Swiper.use === 'undefined') {\n      Swiper.use = Swiper.Class.use;\n      Swiper.installModule = Swiper.Class.installModule;\n    }\n  \n    Swiper.use(components);\n  \n    return Swiper;\n  \n  }));","/*\n     _ _      _       _\n ___| (_) ___| | __  (_)___\n/ __| | |/ __| |/ /  | / __|\n\\__ \\ | | (__|   < _ | \\__ \\\n|___/_|_|\\___|_|\\_(_)/ |___/\n                   |__/\n\n Version: 1.8.1\n  Author: Ken Wheeler\n Website: http://kenwheeler.github.io\n    Docs: http://kenwheeler.github.io/slick\n    Repo: http://github.com/kenwheeler/slick\n  Issues: http://github.com/kenwheeler/slick/issues\n\n     LWL: Removed outdated module structure\n\n */\n/* global window, document, define, jQuery, setInterval, clearInterval */\n(function($) {\n    'use strict';\n    var Slick = window.Slick || {};\n\n    Slick = (function() {\n\n        var instanceUid = 0;\n\n        function Slick(element, settings) {\n\n            var _ = this, dataSettings;\n\n            _.defaults = {\n                accessibility: true,\n                adaptiveHeight: false,\n                appendArrows: $(element),\n                appendDots: $(element),\n                arrows: true,\n                asNavFor: null,\n                prevArrow: '<button class=\"slick-prev\" aria-label=\"Previous\" type=\"button\">Previous</button>',\n                nextArrow: '<button class=\"slick-next\" aria-label=\"Next\" type=\"button\">Next</button>',\n                autoplay: false,\n                autoplaySpeed: 3000,\n                centerMode: false,\n                centerPadding: '50px',\n                cssEase: 'ease',\n                customPaging: function(slider, i) {\n                    return $('<button type=\"button\" />').text(i + 1);\n                },\n                dots: false,\n                dotsClass: 'slick-dots',\n                draggable: true,\n                easing: 'linear',\n                edgeFriction: 0.35,\n                fade: false,\n                focusOnSelect: false,\n                focusOnChange: false,\n                infinite: true,\n                initialSlide: 0,\n                lazyLoad: 'ondemand',\n                mobileFirst: false,\n                pauseOnHover: true,\n                pauseOnFocus: true,\n                pauseOnDotsHover: false,\n                respondTo: 'window',\n                responsive: null,\n                rows: 1,\n                rtl: false,\n                slide: '',\n                slidesPerRow: 1,\n                slidesToShow: 1,\n                slidesToScroll: 1,\n                speed: 500,\n                swipe: true,\n                swipeToSlide: false,\n                touchMove: true,\n                touchThreshold: 5,\n                useCSS: true,\n                useTransform: true,\n                variableWidth: false,\n                vertical: false,\n                verticalSwiping: false,\n                waitForAnimate: true,\n                zIndex: 1000\n            };\n\n            _.initials = {\n                animating: false,\n                dragging: false,\n                autoPlayTimer: null,\n                currentDirection: 0,\n                currentLeft: null,\n                currentSlide: 0,\n                direction: 1,\n                $dots: null,\n                listWidth: null,\n                listHeight: null,\n                loadIndex: 0,\n                $nextArrow: null,\n                $prevArrow: null,\n                scrolling: false,\n                slideCount: null,\n                slideWidth: null,\n                $slideTrack: null,\n                $slides: null,\n                sliding: false,\n                slideOffset: 0,\n                swipeLeft: null,\n                swiping: false,\n                $list: null,\n                touchObject: {},\n                transformsEnabled: false,\n                unslicked: false\n            };\n\n            $.extend(_, _.initials);\n\n            _.activeBreakpoint = null;\n            _.animType = null;\n            _.animProp = null;\n            _.breakpoints = [];\n            _.breakpointSettings = [];\n            _.cssTransitions = false;\n            _.focussed = false;\n            _.interrupted = false;\n            _.hidden = 'hidden';\n            _.paused = true;\n            _.positionProp = null;\n            _.respondTo = null;\n            _.rowCount = 1;\n            _.shouldClick = true;\n            _.$slider = $(element);\n            _.$slidesCache = null;\n            _.transformType = null;\n            _.transitionType = null;\n            _.visibilityChange = 'visibilitychange';\n            _.windowWidth = 0;\n            _.windowTimer = null;\n\n            dataSettings = $(element).data('slick') || {};\n\n            _.options = $.extend({}, _.defaults, settings, dataSettings);\n\n            _.currentSlide = _.options.initialSlide;\n\n            _.originalSettings = _.options;\n\n            if (typeof document.mozHidden !== 'undefined') {\n                _.hidden = 'mozHidden';\n                _.visibilityChange = 'mozvisibilitychange';\n            } else if (typeof document.webkitHidden !== 'undefined') {\n                _.hidden = 'webkitHidden';\n                _.visibilityChange = 'webkitvisibilitychange';\n            }\n\n            _.autoPlay = $.proxy(_.autoPlay, _);\n            _.autoPlayClear = $.proxy(_.autoPlayClear, _);\n            _.autoPlayIterator = $.proxy(_.autoPlayIterator, _);\n            _.changeSlide = $.proxy(_.changeSlide, _);\n            _.clickHandler = $.proxy(_.clickHandler, _);\n            _.selectHandler = $.proxy(_.selectHandler, _);\n            _.setPosition = $.proxy(_.setPosition, _);\n            _.swipeHandler = $.proxy(_.swipeHandler, _);\n            _.dragHandler = $.proxy(_.dragHandler, _);\n            _.keyHandler = $.proxy(_.keyHandler, _);\n\n            _.instanceUid = instanceUid++;\n\n            // A simple way to check for HTML strings\n            // Strict HTML recognition (must start with <)\n            // Extracted from jQuery v1.11 source\n            _.htmlExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*)$/;\n\n\n            _.registerBreakpoints();\n            _.init(true);\n\n        }\n\n        return Slick;\n\n    }());\n\n    Slick.prototype.activateADA = function() {\n        var _ = this;\n\n        _.$slideTrack.find('.slick-active').attr({\n            'aria-hidden': 'false'\n        }).find('a, input, button, select').attr({\n            'tabindex': '0'\n        });\n\n    };\n\n    Slick.prototype.addSlide = Slick.prototype.slickAdd = function(markup, index, addBefore) {\n\n        var _ = this;\n\n        if (typeof(index) === 'boolean') {\n            addBefore = index;\n            index = null;\n        } else if (index < 0 || (index >= _.slideCount)) {\n            return false;\n        }\n\n        _.unload();\n\n        if (typeof(index) === 'number') {\n            if (index === 0 && _.$slides.length === 0) {\n                $(markup).appendTo(_.$slideTrack);\n            } else if (addBefore) {\n                $(markup).insertBefore(_.$slides.eq(index));\n            } else {\n                $(markup).insertAfter(_.$slides.eq(index));\n            }\n        } else {\n            if (addBefore === true) {\n                $(markup).prependTo(_.$slideTrack);\n            } else {\n                $(markup).appendTo(_.$slideTrack);\n            }\n        }\n\n        _.$slides = _.$slideTrack.children(this.options.slide);\n\n        _.$slideTrack.children(this.options.slide).detach();\n\n        _.$slideTrack.append(_.$slides);\n\n        _.$slides.each(function(index, element) {\n            $(element).attr('data-slick-index', index);\n        });\n\n        _.$slidesCache = _.$slides;\n\n        _.reinit();\n\n    };\n\n    Slick.prototype.animateHeight = function() {\n        var _ = this;\n        if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {\n            var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);\n            _.$list.animate({\n                height: targetHeight\n            }, _.options.speed);\n        }\n    };\n\n    Slick.prototype.animateSlide = function(targetLeft, callback) {\n\n        var animProps = {},\n            _ = this;\n\n        _.animateHeight();\n\n        if (_.options.rtl === true && _.options.vertical === false) {\n            targetLeft = -targetLeft;\n        }\n        if (_.transformsEnabled === false) {\n            if (_.options.vertical === false) {\n                _.$slideTrack.animate({\n                    left: targetLeft\n                }, _.options.speed, _.options.easing, callback);\n            } else {\n                _.$slideTrack.animate({\n                    top: targetLeft\n                }, _.options.speed, _.options.easing, callback);\n            }\n\n        } else {\n\n            if (_.cssTransitions === false) {\n                if (_.options.rtl === true) {\n                    _.currentLeft = -(_.currentLeft);\n                }\n                $({\n                    animStart: _.currentLeft\n                }).animate({\n                    animStart: targetLeft\n                }, {\n                    duration: _.options.speed,\n                    easing: _.options.easing,\n                    step: function(now) {\n                        now = Math.ceil(now);\n                        if (_.options.vertical === false) {\n                            animProps[_.animType] = 'translate(' +\n                                now + 'px, 0px)';\n                            _.$slideTrack.css(animProps);\n                        } else {\n                            animProps[_.animType] = 'translate(0px,' +\n                                now + 'px)';\n                            _.$slideTrack.css(animProps);\n                        }\n                    },\n                    complete: function() {\n                        if (callback) {\n                            callback.call();\n                        }\n                    }\n                });\n\n            } else {\n\n                _.applyTransition();\n                targetLeft = Math.ceil(targetLeft);\n\n                if (_.options.vertical === false) {\n                    animProps[_.animType] = 'translate3d(' + targetLeft + 'px, 0px, 0px)';\n                } else {\n                    animProps[_.animType] = 'translate3d(0px,' + targetLeft + 'px, 0px)';\n                }\n                _.$slideTrack.css(animProps);\n\n                if (callback) {\n                    setTimeout(function() {\n\n                        _.disableTransition();\n\n                        callback.call();\n                    }, _.options.speed);\n                }\n\n            }\n\n        }\n\n    };\n\n    Slick.prototype.getNavTarget = function() {\n\n        var _ = this,\n            asNavFor = _.options.asNavFor;\n\n        if ( asNavFor && asNavFor !== null ) {\n            asNavFor = $(asNavFor).not(_.$slider);\n        }\n\n        return asNavFor;\n\n    };\n\n    Slick.prototype.asNavFor = function(index) {\n\n        var _ = this,\n            asNavFor = _.getNavTarget();\n\n        if ( asNavFor !== null && typeof asNavFor === 'object' ) {\n            asNavFor.each(function() {\n                var target = $(this).slick('getSlick');\n                if(!target.unslicked) {\n                    target.slideHandler(index, true);\n                }\n            });\n        }\n\n    };\n\n    Slick.prototype.applyTransition = function(slide) {\n\n        var _ = this,\n            transition = {};\n\n        if (_.options.fade === false) {\n            transition[_.transitionType] = _.transformType + ' ' + _.options.speed + 'ms ' + _.options.cssEase;\n        } else {\n            transition[_.transitionType] = 'opacity ' + _.options.speed + 'ms ' + _.options.cssEase;\n        }\n\n        if (_.options.fade === false) {\n            _.$slideTrack.css(transition);\n        } else {\n            _.$slides.eq(slide).css(transition);\n        }\n\n    };\n\n    Slick.prototype.autoPlay = function() {\n\n        var _ = this;\n\n        _.autoPlayClear();\n\n        if ( _.slideCount > _.options.slidesToShow ) {\n            _.autoPlayTimer = setInterval( _.autoPlayIterator, _.options.autoplaySpeed );\n        }\n\n    };\n\n    Slick.prototype.autoPlayClear = function() {\n\n        var _ = this;\n\n        if (_.autoPlayTimer) {\n            clearInterval(_.autoPlayTimer);\n        }\n\n    };\n\n    Slick.prototype.autoPlayIterator = function() {\n\n        var _ = this,\n            slideTo = _.currentSlide + _.options.slidesToScroll;\n\n        if ( !_.paused && !_.interrupted && !_.focussed ) {\n\n            if ( _.options.infinite === false ) {\n\n                if ( _.direction === 1 && ( _.currentSlide + 1 ) === ( _.slideCount - 1 )) {\n                    _.direction = 0;\n                }\n\n                else if ( _.direction === 0 ) {\n\n                    slideTo = _.currentSlide - _.options.slidesToScroll;\n\n                    if ( _.currentSlide - 1 === 0 ) {\n                        _.direction = 1;\n                    }\n\n                }\n\n            }\n\n            _.slideHandler( slideTo );\n\n        }\n\n    };\n\n    Slick.prototype.buildArrows = function() {\n\n        var _ = this;\n\n        if (_.options.arrows === true ) {\n\n            _.$prevArrow = $(_.options.prevArrow).addClass('slick-arrow');\n            _.$nextArrow = $(_.options.nextArrow).addClass('slick-arrow');\n\n            if( _.slideCount > _.options.slidesToShow ) {\n\n                _.$prevArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');\n                _.$nextArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');\n\n                if (_.htmlExpr.test(_.options.prevArrow)) {\n                    _.$prevArrow.prependTo(_.options.appendArrows);\n                }\n\n                if (_.htmlExpr.test(_.options.nextArrow)) {\n                    _.$nextArrow.appendTo(_.options.appendArrows);\n                }\n\n                if (_.options.infinite !== true) {\n                    _.$prevArrow\n                        .addClass('slick-disabled')\n                        .attr('aria-disabled', 'true');\n                }\n\n            } else {\n\n                _.$prevArrow.add( _.$nextArrow )\n\n                    .addClass('slick-hidden')\n                    .attr({\n                        'aria-disabled': 'true',\n                        'tabindex': '-1'\n                    });\n\n            }\n\n        }\n\n    };\n\n    Slick.prototype.buildDots = function() {\n\n        var _ = this,\n            i, dot;\n\n        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n\n            _.$slider.addClass('slick-dotted');\n\n            dot = $('<ul />').addClass(_.options.dotsClass);\n\n            for (i = 0; i <= _.getDotCount(); i += 1) {\n                dot.append($('<li />').append(_.options.customPaging.call(this, _, i)));\n            }\n\n            _.$dots = dot.appendTo(_.options.appendDots);\n\n            _.$dots.find('li').first().addClass('slick-active');\n\n        }\n\n    };\n\n    Slick.prototype.buildOut = function() {\n\n        var _ = this;\n\n        _.$slides =\n            _.$slider\n                .children( _.options.slide + ':not(.slick-cloned)')\n                .addClass('slick-slide');\n\n        _.slideCount = _.$slides.length;\n\n        _.$slides.each(function(index, element) {\n            $(element)\n                .attr('data-slick-index', index)\n                .data('originalStyling', $(element).attr('style') || '');\n        });\n\n        _.$slider.addClass('slick-slider');\n\n        _.$slideTrack = (_.slideCount === 0) ?\n            $('<div class=\"slick-track\"/>').appendTo(_.$slider) :\n            _.$slides.wrapAll('<div class=\"slick-track\"/>').parent();\n\n        _.$list = _.$slideTrack.wrap(\n            '<div class=\"slick-list\"/>').parent();\n        _.$slideTrack.css('opacity', 0);\n\n        if (_.options.centerMode === true || _.options.swipeToSlide === true) {\n            _.options.slidesToScroll = 1;\n        }\n\n        $('img[data-lazy]', _.$slider).not('[src]').addClass('slick-loading');\n\n        _.setupInfinite();\n\n        _.buildArrows();\n\n        _.buildDots();\n\n        _.updateDots();\n\n\n        _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);\n\n        if (_.options.draggable === true) {\n            _.$list.addClass('draggable');\n        }\n\n    };\n\n    Slick.prototype.buildRows = function() {\n\n        var _ = this, a, b, c, newSlides, numOfSlides, originalSlides,slidesPerSection;\n\n        newSlides = document.createDocumentFragment();\n        originalSlides = _.$slider.children();\n\n        if(_.options.rows > 0) {\n\n            slidesPerSection = _.options.slidesPerRow * _.options.rows;\n            numOfSlides = Math.ceil(\n                originalSlides.length / slidesPerSection\n            );\n\n            for(a = 0; a < numOfSlides; a++){\n                var slide = document.createElement('div');\n                for(b = 0; b < _.options.rows; b++) {\n                    var row = document.createElement('div');\n                    for(c = 0; c < _.options.slidesPerRow; c++) {\n                        var target = (a * slidesPerSection + ((b * _.options.slidesPerRow) + c));\n                        if (originalSlides.get(target)) {\n                            row.appendChild(originalSlides.get(target));\n                        }\n                    }\n                    slide.appendChild(row);\n                }\n                newSlides.appendChild(slide);\n            }\n\n            _.$slider.empty().append(newSlides);\n            _.$slider.children().children().children()\n                .css({\n                    'width':(100 / _.options.slidesPerRow) + '%',\n                    'display': 'inline-block'\n                });\n\n        }\n\n    };\n\n    Slick.prototype.checkResponsive = function(initial, forceUpdate) {\n\n        var _ = this,\n            breakpoint, targetBreakpoint, respondToWidth, triggerBreakpoint = false;\n        var sliderWidth = _.$slider.width();\n        var windowWidth = window.innerWidth || $(window).width();\n\n        if (_.respondTo === 'window') {\n            respondToWidth = windowWidth;\n        } else if (_.respondTo === 'slider') {\n            respondToWidth = sliderWidth;\n        } else if (_.respondTo === 'min') {\n            respondToWidth = Math.min(windowWidth, sliderWidth);\n        }\n\n        if ( _.options.responsive &&\n            _.options.responsive.length &&\n            _.options.responsive !== null) {\n\n            targetBreakpoint = null;\n\n            for (breakpoint in _.breakpoints) {\n                if (_.breakpoints.hasOwnProperty(breakpoint)) {\n                    if (_.originalSettings.mobileFirst === false) {\n                        if (respondToWidth < _.breakpoints[breakpoint]) {\n                            targetBreakpoint = _.breakpoints[breakpoint];\n                        }\n                    } else {\n                        if (respondToWidth > _.breakpoints[breakpoint]) {\n                            targetBreakpoint = _.breakpoints[breakpoint];\n                        }\n                    }\n                }\n            }\n\n            if (targetBreakpoint !== null) {\n                if (_.activeBreakpoint !== null) {\n                    if (targetBreakpoint !== _.activeBreakpoint || forceUpdate) {\n                        _.activeBreakpoint =\n                            targetBreakpoint;\n                        if (_.breakpointSettings[targetBreakpoint] === 'unslick') {\n                            _.unslick(targetBreakpoint);\n                        } else {\n                            _.options = $.extend({}, _.originalSettings,\n                                _.breakpointSettings[\n                                    targetBreakpoint]);\n                            if (initial === true) {\n                                _.currentSlide = _.options.initialSlide;\n                            }\n                            _.refresh(initial);\n                        }\n                        triggerBreakpoint = targetBreakpoint;\n                    }\n                } else {\n                    _.activeBreakpoint = targetBreakpoint;\n                    if (_.breakpointSettings[targetBreakpoint] === 'unslick') {\n                        _.unslick(targetBreakpoint);\n                    } else {\n                        _.options = $.extend({}, _.originalSettings,\n                            _.breakpointSettings[\n                                targetBreakpoint]);\n                        if (initial === true) {\n                            _.currentSlide = _.options.initialSlide;\n                        }\n                        _.refresh(initial);\n                    }\n                    triggerBreakpoint = targetBreakpoint;\n                }\n            } else {\n                if (_.activeBreakpoint !== null) {\n                    _.activeBreakpoint = null;\n                    _.options = _.originalSettings;\n                    if (initial === true) {\n                        _.currentSlide = _.options.initialSlide;\n                    }\n                    _.refresh(initial);\n                    triggerBreakpoint = targetBreakpoint;\n                }\n            }\n\n            // only trigger breakpoints during an actual break. not on initialize.\n            if( !initial && triggerBreakpoint !== false ) {\n                _.$slider.trigger('breakpoint', [_, triggerBreakpoint]);\n            }\n        }\n\n    };\n\n    Slick.prototype.changeSlide = function(event, dontAnimate) {\n\n        var _ = this,\n            $target = $(event.currentTarget),\n            indexOffset, slideOffset, unevenOffset;\n\n        // If target is a link, prevent default action.\n        if($target.is('a')) {\n            event.preventDefault();\n        }\n\n        // If target is not the <li> element (ie: a child), find the <li>.\n        if(!$target.is('li')) {\n            $target = $target.closest('li');\n        }\n\n        unevenOffset = (_.slideCount % _.options.slidesToScroll !== 0);\n        indexOffset = unevenOffset ? 0 : (_.slideCount - _.currentSlide) % _.options.slidesToScroll;\n\n        switch (event.data.message) {\n\n            case 'previous':\n                slideOffset = indexOffset === 0 ? _.options.slidesToScroll : _.options.slidesToShow - indexOffset;\n                if (_.slideCount > _.options.slidesToShow) {\n                    _.slideHandler(_.currentSlide - slideOffset, false, dontAnimate);\n                }\n                break;\n\n            case 'next':\n                slideOffset = indexOffset === 0 ? _.options.slidesToScroll : indexOffset;\n                if (_.slideCount > _.options.slidesToShow) {\n                    _.slideHandler(_.currentSlide + slideOffset, false, dontAnimate);\n                }\n                break;\n\n            case 'index':\n                var index = event.data.index === 0 ? 0 :\n                    event.data.index || $target.index() * _.options.slidesToScroll;\n\n                _.slideHandler(_.checkNavigable(index), false, dontAnimate);\n                $target.children().trigger('focus');\n                break;\n\n            default:\n                return;\n        }\n\n    };\n\n    Slick.prototype.checkNavigable = function(index) {\n\n        var _ = this,\n            navigables, prevNavigable;\n\n        navigables = _.getNavigableIndexes();\n        prevNavigable = 0;\n        if (index > navigables[navigables.length - 1]) {\n            index = navigables[navigables.length - 1];\n        } else {\n            for (var n in navigables) {\n                if (index < navigables[n]) {\n                    index = prevNavigable;\n                    break;\n                }\n                prevNavigable = navigables[n];\n            }\n        }\n\n        return index;\n    };\n\n    Slick.prototype.cleanUpEvents = function() {\n\n        var _ = this;\n\n        if (_.options.dots && _.$dots !== null) {\n\n            $('li', _.$dots)\n                .off('click.slick', _.changeSlide)\n                .off('mouseenter.slick', $.proxy(_.interrupt, _, true))\n                .off('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n            if (_.options.accessibility === true) {\n                _.$dots.off('keydown.slick', _.keyHandler);\n            }\n        }\n\n        _.$slider.off('focus.slick blur.slick');\n\n        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n            _.$prevArrow && _.$prevArrow.off('click.slick', _.changeSlide);\n            _.$nextArrow && _.$nextArrow.off('click.slick', _.changeSlide);\n\n            if (_.options.accessibility === true) {\n                _.$prevArrow && _.$prevArrow.off('keydown.slick', _.keyHandler);\n                _.$nextArrow && _.$nextArrow.off('keydown.slick', _.keyHandler);\n            }\n        }\n\n        _.$list.off('touchstart.slick mousedown.slick', _.swipeHandler);\n        _.$list.off('touchmove.slick mousemove.slick', _.swipeHandler);\n        _.$list.off('touchend.slick mouseup.slick', _.swipeHandler);\n        _.$list.off('touchcancel.slick mouseleave.slick', _.swipeHandler);\n\n        _.$list.off('click.slick', _.clickHandler);\n\n        $(document).off(_.visibilityChange, _.visibility);\n\n        _.cleanUpSlideEvents();\n\n        if (_.options.accessibility === true) {\n            _.$list.off('keydown.slick', _.keyHandler);\n        }\n\n        if (_.options.focusOnSelect === true) {\n            $(_.$slideTrack).children().off('click.slick', _.selectHandler);\n        }\n\n        $(window).off('orientationchange.slick.slick-' + _.instanceUid, _.orientationChange);\n\n        $(window).off('resize.slick.slick-' + _.instanceUid, _.resize);\n\n        $('[draggable!=true]', _.$slideTrack).off('dragstart', _.preventDefault);\n\n        $(window).off('load.slick.slick-' + _.instanceUid, _.setPosition);\n\n    };\n\n    Slick.prototype.cleanUpSlideEvents = function() {\n\n        var _ = this;\n\n        _.$list.off('mouseenter.slick', $.proxy(_.interrupt, _, true));\n        _.$list.off('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n    };\n\n    Slick.prototype.cleanUpRows = function() {\n\n        var _ = this, originalSlides;\n\n        if(_.options.rows > 0) {\n            originalSlides = _.$slides.children().children();\n            originalSlides.removeAttr('style');\n            _.$slider.empty().append(originalSlides);\n        }\n\n    };\n\n    Slick.prototype.clickHandler = function(event) {\n\n        var _ = this;\n\n        if (_.shouldClick === false) {\n            event.stopImmediatePropagation();\n            event.stopPropagation();\n            event.preventDefault();\n        }\n\n    };\n\n    Slick.prototype.destroy = function(refresh) {\n\n        var _ = this;\n\n        _.autoPlayClear();\n\n        _.touchObject = {};\n\n        _.cleanUpEvents();\n\n        $('.slick-cloned', _.$slider).detach();\n\n        if (_.$dots) {\n            _.$dots.remove();\n        }\n\n        if ( _.$prevArrow && _.$prevArrow.length ) {\n\n            _.$prevArrow\n                .removeClass('slick-disabled slick-arrow slick-hidden')\n                .removeAttr('aria-hidden aria-disabled tabindex')\n                .css('display','');\n\n            if ( _.htmlExpr.test( _.options.prevArrow )) {\n                _.$prevArrow.remove();\n            }\n        }\n\n        if ( _.$nextArrow && _.$nextArrow.length ) {\n\n            _.$nextArrow\n                .removeClass('slick-disabled slick-arrow slick-hidden')\n                .removeAttr('aria-hidden aria-disabled tabindex')\n                .css('display','');\n\n            if ( _.htmlExpr.test( _.options.nextArrow )) {\n                _.$nextArrow.remove();\n            }\n        }\n\n\n        if (_.$slides) {\n\n            _.$slides\n                .removeClass('slick-slide slick-active slick-center slick-visible slick-current')\n                .removeAttr('aria-hidden')\n                .removeAttr('data-slick-index')\n                .each(function(){\n                    $(this).attr('style', $(this).data('originalStyling'));\n                });\n\n            _.$slideTrack.children(this.options.slide).detach();\n\n            _.$slideTrack.detach();\n\n            _.$list.detach();\n\n            _.$slider.append(_.$slides);\n        }\n\n        _.cleanUpRows();\n\n        _.$slider.removeClass('slick-slider');\n        _.$slider.removeClass('slick-initialized');\n        _.$slider.removeClass('slick-dotted');\n\n        _.unslicked = true;\n\n        if(!refresh) {\n            _.$slider.trigger('destroy', [_]);\n        }\n\n    };\n\n    Slick.prototype.disableTransition = function(slide) {\n\n        var _ = this,\n            transition = {};\n\n        transition[_.transitionType] = '';\n\n        if (_.options.fade === false) {\n            _.$slideTrack.css(transition);\n        } else {\n            _.$slides.eq(slide).css(transition);\n        }\n\n    };\n\n    Slick.prototype.fadeSlide = function(slideIndex, callback) {\n\n        var _ = this;\n\n        if (_.cssTransitions === false) {\n\n            _.$slides.eq(slideIndex).css({\n                zIndex: _.options.zIndex\n            });\n\n            _.$slides.eq(slideIndex).animate({\n                opacity: 1\n            }, _.options.speed, _.options.easing, callback);\n\n        } else {\n\n            _.applyTransition(slideIndex);\n\n            _.$slides.eq(slideIndex).css({\n                opacity: 1,\n                zIndex: _.options.zIndex\n            });\n\n            if (callback) {\n                setTimeout(function() {\n\n                    _.disableTransition(slideIndex);\n\n                    callback.call();\n                }, _.options.speed);\n            }\n\n        }\n\n    };\n\n    Slick.prototype.fadeSlideOut = function(slideIndex) {\n\n        var _ = this;\n\n        if (_.cssTransitions === false) {\n\n            _.$slides.eq(slideIndex).animate({\n                opacity: 0,\n                zIndex: _.options.zIndex - 2\n            }, _.options.speed, _.options.easing);\n\n        } else {\n\n            _.applyTransition(slideIndex);\n\n            _.$slides.eq(slideIndex).css({\n                opacity: 0,\n                zIndex: _.options.zIndex - 2\n            });\n\n        }\n\n    };\n\n    Slick.prototype.filterSlides = Slick.prototype.slickFilter = function(filter) {\n\n        var _ = this;\n\n        if (filter !== null) {\n\n            _.$slidesCache = _.$slides;\n\n            _.unload();\n\n            _.$slideTrack.children(this.options.slide).detach();\n\n            _.$slidesCache.filter(filter).appendTo(_.$slideTrack);\n\n            _.reinit();\n\n        }\n\n    };\n\n    Slick.prototype.focusHandler = function() {\n\n        var _ = this;\n\n        _.$slider\n            .off('focus.slick blur.slick')\n            .on('focus.slick blur.slick', '*', function(event) {\n\n            event.stopImmediatePropagation();\n            var $sf = $(this);\n\n            setTimeout(function() {\n\n                if( _.options.pauseOnFocus ) {\n                    _.focussed = $sf.is(':focus');\n                    _.autoPlay();\n                }\n\n            }, 0);\n\n        });\n    };\n\n    Slick.prototype.getCurrent = Slick.prototype.slickCurrentSlide = function() {\n\n        var _ = this;\n        return _.currentSlide;\n\n    };\n\n    Slick.prototype.getDotCount = function() {\n\n        var _ = this;\n\n        var breakPoint = 0;\n        var counter = 0;\n        var pagerQty = 0;\n\n        if (_.options.infinite === true) {\n            if (_.slideCount <= _.options.slidesToShow) {\n                 ++pagerQty;\n            } else {\n                while (breakPoint < _.slideCount) {\n                    ++pagerQty;\n                    breakPoint = counter + _.options.slidesToScroll;\n                    counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;\n                }\n            }\n        } else if (_.options.centerMode === true) {\n            pagerQty = _.slideCount;\n        } else if(!_.options.asNavFor) {\n            pagerQty = 1 + Math.ceil((_.slideCount - _.options.slidesToShow) / _.options.slidesToScroll);\n        }else {\n            while (breakPoint < _.slideCount) {\n                ++pagerQty;\n                breakPoint = counter + _.options.slidesToScroll;\n                counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;\n            }\n        }\n\n        return pagerQty - 1;\n\n    };\n\n    Slick.prototype.getLeft = function(slideIndex) {\n\n        var _ = this,\n            targetLeft,\n            verticalHeight,\n            verticalOffset = 0,\n            targetSlide,\n            coef;\n\n        _.slideOffset = 0;\n        verticalHeight = _.$slides.first().outerHeight(true);\n\n        if (_.options.infinite === true) {\n            if (_.slideCount > _.options.slidesToShow) {\n                _.slideOffset = (_.slideWidth * _.options.slidesToShow) * -1;\n                coef = -1\n\n                if (_.options.vertical === true && _.options.centerMode === true) {\n                    if (_.options.slidesToShow === 2) {\n                        coef = -1.5;\n                    } else if (_.options.slidesToShow === 1) {\n                        coef = -2\n                    }\n                }\n                verticalOffset = (verticalHeight * _.options.slidesToShow) * coef;\n            }\n            if (_.slideCount % _.options.slidesToScroll !== 0) {\n                if (slideIndex + _.options.slidesToScroll > _.slideCount && _.slideCount > _.options.slidesToShow) {\n                    if (slideIndex > _.slideCount) {\n                        _.slideOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * _.slideWidth) * -1;\n                        verticalOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * verticalHeight) * -1;\n                    } else {\n                        _.slideOffset = ((_.slideCount % _.options.slidesToScroll) * _.slideWidth) * -1;\n                        verticalOffset = ((_.slideCount % _.options.slidesToScroll) * verticalHeight) * -1;\n                    }\n                }\n            }\n        } else {\n            if (slideIndex + _.options.slidesToShow > _.slideCount) {\n                _.slideOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * _.slideWidth;\n                verticalOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * verticalHeight;\n            }\n        }\n\n        if (_.slideCount <= _.options.slidesToShow) {\n            _.slideOffset = 0;\n            verticalOffset = 0;\n        }\n\n        if (_.options.centerMode === true && _.slideCount <= _.options.slidesToShow) {\n            _.slideOffset = ((_.slideWidth * Math.floor(_.options.slidesToShow)) / 2) - ((_.slideWidth * _.slideCount) / 2);\n        } else if (_.options.centerMode === true && _.options.infinite === true) {\n            _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2) - _.slideWidth;\n        } else if (_.options.centerMode === true) {\n            _.slideOffset = 0;\n            _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2);\n        }\n\n        if (_.options.vertical === false) {\n            targetLeft = ((slideIndex * _.slideWidth) * -1) + _.slideOffset;\n        } else {\n            targetLeft = ((slideIndex * verticalHeight) * -1) + verticalOffset;\n        }\n\n        if (_.options.variableWidth === true) {\n\n            if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {\n                targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);\n            } else {\n                targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow);\n            }\n\n            if (_.options.rtl === true) {\n                if (targetSlide[0]) {\n                    targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;\n                } else {\n                    targetLeft =  0;\n                }\n            } else {\n                targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;\n            }\n\n            if (_.options.centerMode === true) {\n                if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {\n                    targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);\n                } else {\n                    targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow + 1);\n                }\n\n                if (_.options.rtl === true) {\n                    if (targetSlide[0]) {\n                        targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;\n                    } else {\n                        targetLeft =  0;\n                    }\n                } else {\n                    targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;\n                }\n\n                targetLeft += (_.$list.width() - targetSlide.outerWidth()) / 2;\n            }\n        }\n\n        return targetLeft;\n\n    };\n\n    Slick.prototype.getOption = Slick.prototype.slickGetOption = function(option) {\n\n        var _ = this;\n\n        return _.options[option];\n\n    };\n\n    Slick.prototype.getNavigableIndexes = function() {\n\n        var _ = this,\n            breakPoint = 0,\n            counter = 0,\n            indexes = [],\n            max;\n\n        if (_.options.infinite === false) {\n            max = _.slideCount;\n        } else {\n            breakPoint = _.options.slidesToScroll * -1;\n            counter = _.options.slidesToScroll * -1;\n            max = _.slideCount * 2;\n        }\n\n        while (breakPoint < max) {\n            indexes.push(breakPoint);\n            breakPoint = counter + _.options.slidesToScroll;\n            counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;\n        }\n\n        return indexes;\n\n    };\n\n    Slick.prototype.getSlick = function() {\n\n        return this;\n\n    };\n\n    Slick.prototype.getSlideCount = function() {\n\n        var _ = this,\n            slidesTraversed, swipedSlide, centerOffset;\n\n        centerOffset = _.options.centerMode === true ? _.slideWidth * Math.floor(_.options.slidesToShow / 2) : 0;\n\n        if (_.options.swipeToSlide === true) {\n            _.$slideTrack.find('.slick-slide').each(function(index, slide) {\n                if (slide.offsetLeft - centerOffset + ($(slide).outerWidth() / 2) > (_.swipeLeft * -1)) {\n                    swipedSlide = slide;\n                    return false;\n                }\n            });\n\n            slidesTraversed = Math.abs($(swipedSlide).attr('data-slick-index') - _.currentSlide) || 1;\n\n            return slidesTraversed;\n\n        } else {\n            return _.options.slidesToScroll;\n        }\n\n    };\n\n    Slick.prototype.goTo = Slick.prototype.slickGoTo = function(slide, dontAnimate) {\n\n        var _ = this;\n\n        _.changeSlide({\n            data: {\n                message: 'index',\n                index: parseInt(slide)\n            }\n        }, dontAnimate);\n\n    };\n\n    Slick.prototype.init = function(creation) {\n\n        var _ = this;\n\n        if (!$(_.$slider).hasClass('slick-initialized')) {\n\n            $(_.$slider).addClass('slick-initialized');\n\n            _.buildRows();\n            _.buildOut();\n            _.setProps();\n            _.startLoad();\n            _.loadSlider();\n            _.initializeEvents();\n            _.updateArrows();\n            _.updateDots();\n            _.checkResponsive(true);\n            _.focusHandler();\n\n        }\n\n        if (creation) {\n            _.$slider.trigger('init', [_]);\n        }\n\n        if (_.options.accessibility === true) {\n            _.initADA();\n        }\n\n        if ( _.options.autoplay ) {\n\n            _.paused = false;\n            _.autoPlay();\n\n        }\n\n    };\n\n    Slick.prototype.initADA = function() {\n        var _ = this,\n                numDotGroups = Math.ceil(_.slideCount / _.options.slidesToShow),\n                tabControlIndexes = _.getNavigableIndexes().filter(function(val) {\n                    return (val >= 0) && (val < _.slideCount);\n                });\n\n        _.$slides.add(_.$slideTrack.find('.slick-cloned')).attr({\n            'aria-hidden': 'true',\n            'tabindex': '-1'\n        }).find('a, input, button, select').attr({\n            'tabindex': '-1'\n        });\n\n        if (_.$dots !== null) {\n            _.$slides.not(_.$slideTrack.find('.slick-cloned')).each(function(i) {\n                var slideControlIndex = tabControlIndexes.indexOf(i);\n\n                $(this).attr({\n                    'role': 'tabpanel',\n                    'id': 'slick-slide' + _.instanceUid + i,\n                    'tabindex': -1\n                });\n\n                if (slideControlIndex !== -1) {\n                   var ariaButtonControl = 'slick-slide-control' + _.instanceUid + slideControlIndex\n                   if ($('#' + ariaButtonControl).length) {\n                     $(this).attr({\n                         'aria-describedby': ariaButtonControl\n                     });\n                   }\n                }\n            });\n\n            _.$dots.attr('role', 'tablist').find('li').each(function(i) {\n                var mappedSlideIndex = tabControlIndexes[i];\n\n                $(this).attr({\n                    'role': 'presentation'\n                });\n\n                $(this).find('button').first().attr({\n                    'role': 'tab',\n                    'id': 'slick-slide-control' + _.instanceUid + i,\n                    'aria-controls': 'slick-slide' + _.instanceUid + mappedSlideIndex,\n                    'aria-label': (i + 1) + ' of ' + numDotGroups,\n                    'aria-selected': null,\n                    'tabindex': '-1'\n                });\n\n            }).eq(_.currentSlide).find('button').attr({\n                'aria-selected': 'true',\n                'tabindex': '0'\n            }).end();\n        }\n\n        for (var i=_.currentSlide, max=i+_.options.slidesToShow; i < max; i++) {\n          if (_.options.focusOnChange) {\n            _.$slides.eq(i).attr({'tabindex': '0'});\n          } else {\n            _.$slides.eq(i).removeAttr('tabindex');\n          }\n        }\n\n        _.activateADA();\n\n    };\n\n    Slick.prototype.initArrowEvents = function() {\n\n        var _ = this;\n\n        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n            _.$prevArrow\n               .off('click.slick')\n               .on('click.slick', {\n                    message: 'previous'\n               }, _.changeSlide);\n            _.$nextArrow\n               .off('click.slick')\n               .on('click.slick', {\n                    message: 'next'\n               }, _.changeSlide);\n\n            if (_.options.accessibility === true) {\n                _.$prevArrow.on('keydown.slick', _.keyHandler);\n                _.$nextArrow.on('keydown.slick', _.keyHandler);\n            }\n        }\n\n    };\n\n    Slick.prototype.initDotEvents = function() {\n\n        var _ = this;\n\n        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n            $('li', _.$dots).on('click.slick', {\n                message: 'index'\n            }, _.changeSlide);\n\n            if (_.options.accessibility === true) {\n                _.$dots.on('keydown.slick', _.keyHandler);\n            }\n        }\n\n        if (_.options.dots === true && _.options.pauseOnDotsHover === true && _.slideCount > _.options.slidesToShow) {\n\n            $('li', _.$dots)\n                .on('mouseenter.slick', $.proxy(_.interrupt, _, true))\n                .on('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n        }\n\n    };\n\n    Slick.prototype.initSlideEvents = function() {\n\n        var _ = this;\n\n        if ( _.options.pauseOnHover ) {\n\n            _.$list.on('mouseenter.slick', $.proxy(_.interrupt, _, true));\n            _.$list.on('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n        }\n\n    };\n\n    Slick.prototype.initializeEvents = function() {\n\n        var _ = this;\n\n        _.initArrowEvents();\n\n        _.initDotEvents();\n        _.initSlideEvents();\n\n        _.$list.on('touchstart.slick mousedown.slick', {\n            action: 'start'\n        }, _.swipeHandler);\n        _.$list.on('touchmove.slick mousemove.slick', {\n            action: 'move'\n        }, _.swipeHandler);\n        _.$list.on('touchend.slick mouseup.slick', {\n            action: 'end'\n        }, _.swipeHandler);\n        _.$list.on('touchcancel.slick mouseleave.slick', {\n            action: 'end'\n        }, _.swipeHandler);\n\n        _.$list.on('click.slick', _.clickHandler);\n\n        $(document).on(_.visibilityChange, $.proxy(_.visibility, _));\n\n        if (_.options.accessibility === true) {\n            _.$list.on('keydown.slick', _.keyHandler);\n        }\n\n        if (_.options.focusOnSelect === true) {\n            $(_.$slideTrack).children().on('click.slick', _.selectHandler);\n        }\n\n        $(window).on('orientationchange.slick.slick-' + _.instanceUid, $.proxy(_.orientationChange, _));\n\n        $(window).on('resize.slick.slick-' + _.instanceUid, $.proxy(_.resize, _));\n\n        $('[draggable!=true]', _.$slideTrack).on('dragstart', _.preventDefault);\n\n        $(window).on('load.slick.slick-' + _.instanceUid, _.setPosition);\n        $(_.setPosition);\n\n    };\n\n    Slick.prototype.initUI = function() {\n\n        var _ = this;\n\n        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n\n            _.$prevArrow.show();\n            _.$nextArrow.show();\n\n        }\n\n        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n\n            _.$dots.show();\n\n        }\n\n    };\n\n    Slick.prototype.keyHandler = function(event) {\n\n        var _ = this;\n         //Dont slide if the cursor is inside the form fields and arrow keys are pressed\n        if(!event.target.tagName.match('TEXTAREA|INPUT|SELECT')) {\n            if (event.keyCode === 37 && _.options.accessibility === true) {\n                _.changeSlide({\n                    data: {\n                        message: _.options.rtl === true ? 'next' :  'previous'\n                    }\n                });\n            } else if (event.keyCode === 39 && _.options.accessibility === true) {\n                _.changeSlide({\n                    data: {\n                        message: _.options.rtl === true ? 'previous' : 'next'\n                    }\n                });\n            }\n        }\n\n    };\n\n    Slick.prototype.lazyLoad = function() {\n\n        var _ = this,\n            loadRange, cloneRange, rangeStart, rangeEnd;\n\n        function loadImages(imagesScope) {\n\n            $('img[data-lazy]', imagesScope).each(function() {\n\n                var image = $(this),\n                    imageSource = $(this).attr('data-lazy'),\n                    imageSrcSet = $(this).attr('data-srcset'),\n                    imageSizes  = $(this).attr('data-sizes') || _.$slider.attr('data-sizes'),\n                    imageToLoad = document.createElement('img');\n\n                imageToLoad.onload = function() {\n\n                    image\n                        .animate({ opacity: 0 }, 100, function() {\n\n                            if (imageSrcSet) {\n                                image\n                                    .attr('srcset', imageSrcSet );\n\n                                if (imageSizes) {\n                                    image\n                                        .attr('sizes', imageSizes );\n                                }\n                            }\n\n                            image\n                                .attr('src', imageSource)\n                                .animate({ opacity: 1 }, 200, function() {\n                                    image\n                                        .removeAttr('data-lazy data-srcset data-sizes')\n                                        .removeClass('slick-loading');\n                                });\n                            _.$slider.trigger('lazyLoaded', [_, image, imageSource]);\n                        });\n\n                };\n\n                imageToLoad.onerror = function() {\n\n                    image\n                        .removeAttr( 'data-lazy' )\n                        .removeClass( 'slick-loading' )\n                        .addClass( 'slick-lazyload-error' );\n\n                    _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);\n\n                };\n\n                imageToLoad.src = imageSource;\n\n            });\n\n        }\n\n        if (_.options.centerMode === true) {\n            if (_.options.infinite === true) {\n                rangeStart = _.currentSlide + (_.options.slidesToShow / 2 + 1);\n                rangeEnd = rangeStart + _.options.slidesToShow + 2;\n            } else {\n                rangeStart = Math.max(0, _.currentSlide - (_.options.slidesToShow / 2 + 1));\n                rangeEnd = 2 + (_.options.slidesToShow / 2 + 1) + _.currentSlide;\n            }\n        } else {\n            rangeStart = _.options.infinite ? _.options.slidesToShow + _.currentSlide : _.currentSlide;\n            rangeEnd = Math.ceil(rangeStart + _.options.slidesToShow);\n            if (_.options.fade === true) {\n                if (rangeStart > 0) rangeStart--;\n                if (rangeEnd <= _.slideCount) rangeEnd++;\n            }\n        }\n\n        loadRange = _.$slider.find('.slick-slide').slice(rangeStart, rangeEnd);\n\n        if (_.options.lazyLoad === 'anticipated') {\n            var prevSlide = rangeStart - 1,\n                nextSlide = rangeEnd,\n                $slides = _.$slider.find('.slick-slide');\n\n            for (var i = 0; i < _.options.slidesToScroll; i++) {\n                if (prevSlide < 0) prevSlide = _.slideCount - 1;\n                loadRange = loadRange.add($slides.eq(prevSlide));\n                loadRange = loadRange.add($slides.eq(nextSlide));\n                prevSlide--;\n                nextSlide++;\n            }\n        }\n\n        loadImages(loadRange);\n\n        if (_.slideCount <= _.options.slidesToShow) {\n            cloneRange = _.$slider.find('.slick-slide');\n            loadImages(cloneRange);\n        } else\n        if (_.currentSlide >= _.slideCount - _.options.slidesToShow) {\n            cloneRange = _.$slider.find('.slick-cloned').slice(0, _.options.slidesToShow);\n            loadImages(cloneRange);\n        } else if (_.currentSlide === 0) {\n            cloneRange = _.$slider.find('.slick-cloned').slice(_.options.slidesToShow * -1);\n            loadImages(cloneRange);\n        }\n\n    };\n\n    Slick.prototype.loadSlider = function() {\n\n        var _ = this;\n\n        _.setPosition();\n\n        _.$slideTrack.css({\n            opacity: 1\n        });\n\n        _.$slider.removeClass('slick-loading');\n\n        _.initUI();\n\n        if (_.options.lazyLoad === 'progressive') {\n            _.progressiveLazyLoad();\n        }\n\n    };\n\n    Slick.prototype.next = Slick.prototype.slickNext = function() {\n\n        var _ = this;\n\n        _.changeSlide({\n            data: {\n                message: 'next'\n            }\n        });\n\n    };\n\n    Slick.prototype.orientationChange = function() {\n\n        var _ = this;\n\n        _.checkResponsive();\n        _.setPosition();\n\n    };\n\n    Slick.prototype.pause = Slick.prototype.slickPause = function() {\n\n        var _ = this;\n\n        _.autoPlayClear();\n        _.paused = true;\n\n    };\n\n    Slick.prototype.play = Slick.prototype.slickPlay = function() {\n\n        var _ = this;\n\n        _.autoPlay();\n        _.options.autoplay = true;\n        _.paused = false;\n        _.focussed = false;\n        _.interrupted = false;\n\n    };\n\n    Slick.prototype.postSlide = function(index) {\n\n        var _ = this;\n\n        if( !_.unslicked ) {\n\n            _.$slider.trigger('afterChange', [_, index]);\n\n            _.animating = false;\n\n            if (_.slideCount > _.options.slidesToShow) {\n                _.setPosition();\n            }\n\n            _.swipeLeft = null;\n\n            if ( _.options.autoplay ) {\n                _.autoPlay();\n            }\n\n            if (_.options.accessibility === true) {\n                _.initADA();\n\n                if (_.options.focusOnChange) {\n                    var $currentSlide = $(_.$slides.get(_.currentSlide));\n                    $currentSlide.attr('tabindex', 0).focus();\n                }\n            }\n\n        }\n\n    };\n\n    Slick.prototype.prev = Slick.prototype.slickPrev = function() {\n\n        var _ = this;\n\n        _.changeSlide({\n            data: {\n                message: 'previous'\n            }\n        });\n\n    };\n\n    Slick.prototype.preventDefault = function(event) {\n\n        event.preventDefault();\n\n    };\n\n    Slick.prototype.progressiveLazyLoad = function( tryCount ) {\n\n        tryCount = tryCount || 1;\n\n        var _ = this,\n            $imgsToLoad = $( 'img[data-lazy]', _.$slider ),\n            image,\n            imageSource,\n            imageSrcSet,\n            imageSizes,\n            imageToLoad;\n\n        if ( $imgsToLoad.length ) {\n\n            image = $imgsToLoad.first();\n            imageSource = image.attr('data-lazy');\n            imageSrcSet = image.attr('data-srcset');\n            imageSizes  = image.attr('data-sizes') || _.$slider.attr('data-sizes');\n            imageToLoad = document.createElement('img');\n\n            imageToLoad.onload = function() {\n\n                if (imageSrcSet) {\n                    image\n                        .attr('srcset', imageSrcSet );\n\n                    if (imageSizes) {\n                        image\n                            .attr('sizes', imageSizes );\n                    }\n                }\n\n                image\n                    .attr( 'src', imageSource )\n                    .removeAttr('data-lazy data-srcset data-sizes')\n                    .removeClass('slick-loading');\n\n                if ( _.options.adaptiveHeight === true ) {\n                    _.setPosition();\n                }\n\n                _.$slider.trigger('lazyLoaded', [ _, image, imageSource ]);\n                _.progressiveLazyLoad();\n\n            };\n\n            imageToLoad.onerror = function() {\n\n                if ( tryCount < 3 ) {\n\n                    /**\n                     * try to load the image 3 times,\n                     * leave a slight delay so we don't get\n                     * servers blocking the request.\n                     */\n                    setTimeout( function() {\n                        _.progressiveLazyLoad( tryCount + 1 );\n                    }, 500 );\n\n                } else {\n\n                    image\n                        .removeAttr( 'data-lazy' )\n                        .removeClass( 'slick-loading' )\n                        .addClass( 'slick-lazyload-error' );\n\n                    _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);\n\n                    _.progressiveLazyLoad();\n\n                }\n\n            };\n\n            imageToLoad.src = imageSource;\n\n        } else {\n\n            _.$slider.trigger('allImagesLoaded', [ _ ]);\n\n        }\n\n    };\n\n    Slick.prototype.refresh = function( initializing ) {\n\n        var _ = this, currentSlide, lastVisibleIndex;\n\n        lastVisibleIndex = _.slideCount - _.options.slidesToShow;\n\n        // in non-infinite sliders, we don't want to go past the\n        // last visible index.\n        if( !_.options.infinite && ( _.currentSlide > lastVisibleIndex )) {\n            _.currentSlide = lastVisibleIndex;\n        }\n\n        // if less slides than to show, go to start.\n        if ( _.slideCount <= _.options.slidesToShow ) {\n            _.currentSlide = 0;\n\n        }\n\n        currentSlide = _.currentSlide;\n\n        _.destroy(true);\n\n        $.extend(_, _.initials, { currentSlide: currentSlide });\n\n        _.init();\n\n        if( !initializing ) {\n\n            _.changeSlide({\n                data: {\n                    message: 'index',\n                    index: currentSlide\n                }\n            }, false);\n\n        }\n\n    };\n\n    Slick.prototype.registerBreakpoints = function() {\n\n        var _ = this, breakpoint, currentBreakpoint, l,\n            responsiveSettings = _.options.responsive || null;\n\n        if ( $.type(responsiveSettings) === 'array' && responsiveSettings.length ) {\n\n            _.respondTo = _.options.respondTo || 'window';\n\n            for ( breakpoint in responsiveSettings ) {\n\n                l = _.breakpoints.length-1;\n\n                if (responsiveSettings.hasOwnProperty(breakpoint)) {\n                    currentBreakpoint = responsiveSettings[breakpoint].breakpoint;\n\n                    // loop through the breakpoints and cut out any existing\n                    // ones with the same breakpoint number, we don't want dupes.\n                    while( l >= 0 ) {\n                        if( _.breakpoints[l] && _.breakpoints[l] === currentBreakpoint ) {\n                            _.breakpoints.splice(l,1);\n                        }\n                        l--;\n                    }\n\n                    _.breakpoints.push(currentBreakpoint);\n                    _.breakpointSettings[currentBreakpoint] = responsiveSettings[breakpoint].settings;\n\n                }\n\n            }\n\n            _.breakpoints.sort(function(a, b) {\n                return ( _.options.mobileFirst ) ? a-b : b-a;\n            });\n\n        }\n\n    };\n\n    Slick.prototype.reinit = function() {\n\n        var _ = this;\n\n        _.$slides =\n            _.$slideTrack\n                .children(_.options.slide)\n                .addClass('slick-slide');\n\n        _.slideCount = _.$slides.length;\n\n        if (_.currentSlide >= _.slideCount && _.currentSlide !== 0) {\n            _.currentSlide = _.currentSlide - _.options.slidesToScroll;\n        }\n\n        if (_.slideCount <= _.options.slidesToShow) {\n            _.currentSlide = 0;\n        }\n\n        _.registerBreakpoints();\n\n        _.setProps();\n        _.setupInfinite();\n        _.buildArrows();\n        _.updateArrows();\n        _.initArrowEvents();\n        _.buildDots();\n        _.updateDots();\n        _.initDotEvents();\n        _.cleanUpSlideEvents();\n        _.initSlideEvents();\n\n        _.checkResponsive(false, true);\n\n        if (_.options.focusOnSelect === true) {\n            $(_.$slideTrack).children().on('click.slick', _.selectHandler);\n        }\n\n        _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);\n\n        _.setPosition();\n        _.focusHandler();\n\n        _.paused = !_.options.autoplay;\n        _.autoPlay();\n\n        _.$slider.trigger('reInit', [_]);\n\n    };\n\n    Slick.prototype.resize = function() {\n\n        var _ = this;\n\n        if ($(window).width() !== _.windowWidth) {\n            clearTimeout(_.windowDelay);\n            _.windowDelay = window.setTimeout(function() {\n                _.windowWidth = $(window).width();\n                _.checkResponsive();\n                if( !_.unslicked ) { _.setPosition(); }\n            }, 50);\n        }\n    };\n\n    Slick.prototype.removeSlide = Slick.prototype.slickRemove = function(index, removeBefore, removeAll) {\n\n        var _ = this;\n\n        if (typeof(index) === 'boolean') {\n            removeBefore = index;\n            index = removeBefore === true ? 0 : _.slideCount - 1;\n        } else {\n            index = removeBefore === true ? --index : index;\n        }\n\n        if (_.slideCount < 1 || index < 0 || index > _.slideCount - 1) {\n            return false;\n        }\n\n        _.unload();\n\n        if (removeAll === true) {\n            _.$slideTrack.children().remove();\n        } else {\n            _.$slideTrack.children(this.options.slide).eq(index).remove();\n        }\n\n        _.$slides = _.$slideTrack.children(this.options.slide);\n\n        _.$slideTrack.children(this.options.slide).detach();\n\n        _.$slideTrack.append(_.$slides);\n\n        _.$slidesCache = _.$slides;\n\n        _.reinit();\n\n    };\n\n    Slick.prototype.setCSS = function(position) {\n\n        var _ = this,\n            positionProps = {},\n            x, y;\n\n        if (_.options.rtl === true) {\n            position = -position;\n        }\n        x = _.positionProp == 'left' ? Math.ceil(position) + 'px' : '0px';\n        y = _.positionProp == 'top' ? Math.ceil(position) + 'px' : '0px';\n\n        positionProps[_.positionProp] = position;\n\n        if (_.transformsEnabled === false) {\n            _.$slideTrack.css(positionProps);\n        } else {\n            positionProps = {};\n            if (_.cssTransitions === false) {\n                positionProps[_.animType] = 'translate(' + x + ', ' + y + ')';\n                _.$slideTrack.css(positionProps);\n            } else {\n                positionProps[_.animType] = 'translate3d(' + x + ', ' + y + ', 0px)';\n                _.$slideTrack.css(positionProps);\n            }\n        }\n\n    };\n\n    Slick.prototype.setDimensions = function() {\n\n        var _ = this;\n\n        if (_.options.vertical === false) {\n            if (_.options.centerMode === true) {\n                _.$list.css({\n                    padding: ('0px ' + _.options.centerPadding)\n                });\n            }\n        } else {\n            _.$list.height(_.$slides.first().outerHeight(true) * _.options.slidesToShow);\n            if (_.options.centerMode === true) {\n                _.$list.css({\n                    padding: (_.options.centerPadding + ' 0px')\n                });\n            }\n        }\n\n        _.listWidth = _.$list.width();\n        _.listHeight = _.$list.height();\n\n\n        if (_.options.vertical === false && _.options.variableWidth === false) {\n            _.slideWidth = Math.ceil(_.listWidth / _.options.slidesToShow);\n            _.$slideTrack.width(Math.ceil((_.slideWidth * _.$slideTrack.children('.slick-slide').length)));\n\n        } else if (_.options.variableWidth === true) {\n            _.$slideTrack.width(5000 * _.slideCount);\n        } else {\n            _.slideWidth = Math.ceil(_.listWidth);\n            _.$slideTrack.height(Math.ceil((_.$slides.first().outerHeight(true) * _.$slideTrack.children('.slick-slide').length)));\n        }\n\n        var offset = _.$slides.first().outerWidth(true) - _.$slides.first().width();\n        if (_.options.variableWidth === false) _.$slideTrack.children('.slick-slide').width(_.slideWidth - offset);\n\n    };\n\n    Slick.prototype.setFade = function() {\n\n        var _ = this,\n            targetLeft;\n\n        _.$slides.each(function(index, element) {\n            targetLeft = (_.slideWidth * index) * -1;\n            if (_.options.rtl === true) {\n                $(element).css({\n                    position: 'relative',\n                    right: targetLeft,\n                    top: 0,\n                    zIndex: _.options.zIndex - 2,\n                    opacity: 0\n                });\n            } else {\n                $(element).css({\n                    position: 'relative',\n                    left: targetLeft,\n                    top: 0,\n                    zIndex: _.options.zIndex - 2,\n                    opacity: 0\n                });\n            }\n        });\n\n        _.$slides.eq(_.currentSlide).css({\n            zIndex: _.options.zIndex - 1,\n            opacity: 1\n        });\n\n    };\n\n    Slick.prototype.setHeight = function() {\n\n        var _ = this;\n\n        if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {\n            var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);\n            _.$list.css('height', targetHeight);\n        }\n\n    };\n\n    Slick.prototype.setOption =\n    Slick.prototype.slickSetOption = function() {\n\n        /**\n         * accepts arguments in format of:\n         *\n         *  - for changing a single option's value:\n         *     .slick(\"setOption\", option, value, refresh )\n         *\n         *  - for changing a set of responsive options:\n         *     .slick(\"setOption\", 'responsive', [{}, ...], refresh )\n         *\n         *  - for updating multiple values at once (not responsive)\n         *     .slick(\"setOption\", { 'option': value, ... }, refresh )\n         */\n\n        var _ = this, l, item, option, value, refresh = false, type;\n\n        if( $.type( arguments[0] ) === 'object' ) {\n\n            option =  arguments[0];\n            refresh = arguments[1];\n            type = 'multiple';\n\n        } else if ( $.type( arguments[0] ) === 'string' ) {\n\n            option =  arguments[0];\n            value = arguments[1];\n            refresh = arguments[2];\n\n            if ( arguments[0] === 'responsive' && $.type( arguments[1] ) === 'array' ) {\n\n                type = 'responsive';\n\n            } else if ( typeof arguments[1] !== 'undefined' ) {\n\n                type = 'single';\n\n            }\n\n        }\n\n        if ( type === 'single' ) {\n\n            _.options[option] = value;\n\n\n        } else if ( type === 'multiple' ) {\n\n            $.each( option , function( opt, val ) {\n\n                _.options[opt] = val;\n\n            });\n\n\n        } else if ( type === 'responsive' ) {\n\n            for ( item in value ) {\n\n                if( $.type( _.options.responsive ) !== 'array' ) {\n\n                    _.options.responsive = [ value[item] ];\n\n                } else {\n\n                    l = _.options.responsive.length-1;\n\n                    // loop through the responsive object and splice out duplicates.\n                    while( l >= 0 ) {\n\n                        if( _.options.responsive[l].breakpoint === value[item].breakpoint ) {\n\n                            _.options.responsive.splice(l,1);\n\n                        }\n\n                        l--;\n\n                    }\n\n                    _.options.responsive.push( value[item] );\n\n                }\n\n            }\n\n        }\n\n        if ( refresh ) {\n\n            _.unload();\n            _.reinit();\n\n        }\n\n    };\n\n    Slick.prototype.setPosition = function() {\n\n        var _ = this;\n\n        _.setDimensions();\n\n        _.setHeight();\n\n        if (_.options.fade === false) {\n            _.setCSS(_.getLeft(_.currentSlide));\n        } else {\n            _.setFade();\n        }\n\n        _.$slider.trigger('setPosition', [_]);\n\n    };\n\n    Slick.prototype.setProps = function() {\n\n        var _ = this,\n            bodyStyle = document.body.style;\n\n        _.positionProp = _.options.vertical === true ? 'top' : 'left';\n\n        if (_.positionProp === 'top') {\n            _.$slider.addClass('slick-vertical');\n        } else {\n            _.$slider.removeClass('slick-vertical');\n        }\n\n        if (bodyStyle.WebkitTransition !== undefined ||\n            bodyStyle.MozTransition !== undefined ||\n            bodyStyle.msTransition !== undefined) {\n            if (_.options.useCSS === true) {\n                _.cssTransitions = true;\n            }\n        }\n\n        if ( _.options.fade ) {\n            if ( typeof _.options.zIndex === 'number' ) {\n                if( _.options.zIndex < 3 ) {\n                    _.options.zIndex = 3;\n                }\n            } else {\n                _.options.zIndex = _.defaults.zIndex;\n            }\n        }\n\n        if (bodyStyle.OTransform !== undefined) {\n            _.animType = 'OTransform';\n            _.transformType = '-o-transform';\n            _.transitionType = 'OTransition';\n            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;\n        }\n        if (bodyStyle.MozTransform !== undefined) {\n            _.animType = 'MozTransform';\n            _.transformType = '-moz-transform';\n            _.transitionType = 'MozTransition';\n            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.MozPerspective === undefined) _.animType = false;\n        }\n        if (bodyStyle.webkitTransform !== undefined) {\n            _.animType = 'webkitTransform';\n            _.transformType = '-webkit-transform';\n            _.transitionType = 'webkitTransition';\n            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;\n        }\n        if (bodyStyle.msTransform !== undefined) {\n            _.animType = 'msTransform';\n            _.transformType = '-ms-transform';\n            _.transitionType = 'msTransition';\n            if (bodyStyle.msTransform === undefined) _.animType = false;\n        }\n        if (bodyStyle.transform !== undefined && _.animType !== false) {\n            _.animType = 'transform';\n            _.transformType = 'transform';\n            _.transitionType = 'transition';\n        }\n        _.transformsEnabled = _.options.useTransform && (_.animType !== null && _.animType !== false);\n    };\n\n\n    Slick.prototype.setSlideClasses = function(index) {\n\n        var _ = this,\n            centerOffset, allSlides, indexOffset, remainder;\n\n        allSlides = _.$slider\n            .find('.slick-slide')\n            .removeClass('slick-active slick-center slick-current')\n            .attr('aria-hidden', 'true');\n\n        _.$slides\n            .eq(index)\n            .addClass('slick-current');\n\n        if (_.options.centerMode === true) {\n\n            var evenCoef = _.options.slidesToShow % 2 === 0 ? 1 : 0;\n\n            centerOffset = Math.floor(_.options.slidesToShow / 2);\n\n            if (_.options.infinite === true) {\n\n                if (index >= centerOffset && index <= (_.slideCount - 1) - centerOffset) {\n                    _.$slides\n                        .slice(index - centerOffset + evenCoef, index + centerOffset + 1)\n                        .addClass('slick-active')\n                        .attr('aria-hidden', 'false');\n\n                } else {\n\n                    indexOffset = _.options.slidesToShow + index;\n                    allSlides\n                        .slice(indexOffset - centerOffset + 1 + evenCoef, indexOffset + centerOffset + 2)\n                        .addClass('slick-active')\n                        .attr('aria-hidden', 'false');\n\n                }\n\n                if (index === 0) {\n\n                    allSlides\n                        .eq(allSlides.length - 1 - _.options.slidesToShow)\n                        .addClass('slick-center');\n\n                } else if (index === _.slideCount - 1) {\n\n                    allSlides\n                        .eq(_.options.slidesToShow)\n                        .addClass('slick-center');\n\n                }\n\n            }\n\n            _.$slides\n                .eq(index)\n                .addClass('slick-center');\n\n        } else {\n\n            if (index >= 0 && index <= (_.slideCount - _.options.slidesToShow)) {\n\n                _.$slides\n                    .slice(index, index + _.options.slidesToShow)\n                    .addClass('slick-active')\n                    .attr('aria-hidden', 'false');\n\n            } else if (allSlides.length <= _.options.slidesToShow) {\n\n                allSlides\n                    .addClass('slick-active')\n                    .attr('aria-hidden', 'false');\n\n            } else {\n\n                remainder = _.slideCount % _.options.slidesToShow;\n                indexOffset = _.options.infinite === true ? _.options.slidesToShow + index : index;\n\n                if (_.options.slidesToShow == _.options.slidesToScroll && (_.slideCount - index) < _.options.slidesToShow) {\n\n                    allSlides\n                        .slice(indexOffset - (_.options.slidesToShow - remainder), indexOffset + remainder)\n                        .addClass('slick-active')\n                        .attr('aria-hidden', 'false');\n\n                } else {\n\n                    allSlides\n                        .slice(indexOffset, indexOffset + _.options.slidesToShow)\n                        .addClass('slick-active')\n                        .attr('aria-hidden', 'false');\n\n                }\n\n            }\n\n        }\n\n        if (_.options.lazyLoad === 'ondemand' || _.options.lazyLoad === 'anticipated') {\n            _.lazyLoad();\n        }\n    };\n\n    Slick.prototype.setupInfinite = function() {\n\n        var _ = this,\n            i, slideIndex, infiniteCount;\n\n        if (_.options.fade === true) {\n            _.options.centerMode = false;\n        }\n\n        if (_.options.infinite === true && _.options.fade === false) {\n\n            slideIndex = null;\n\n            if (_.slideCount > _.options.slidesToShow) {\n\n                if (_.options.centerMode === true) {\n                    infiniteCount = _.options.slidesToShow + 1;\n                } else {\n                    infiniteCount = _.options.slidesToShow;\n                }\n\n                for (i = _.slideCount; i > (_.slideCount -\n                        infiniteCount); i -= 1) {\n                    slideIndex = i - 1;\n                    $(_.$slides[slideIndex]).clone(true).attr('id', '')\n                        .attr('data-slick-index', slideIndex - _.slideCount)\n                        .prependTo(_.$slideTrack).addClass('slick-cloned');\n                }\n                for (i = 0; i < infiniteCount  + _.slideCount; i += 1) {\n                    slideIndex = i;\n                    $(_.$slides[slideIndex]).clone(true).attr('id', '')\n                        .attr('data-slick-index', slideIndex + _.slideCount)\n                        .appendTo(_.$slideTrack).addClass('slick-cloned');\n                }\n                _.$slideTrack.find('.slick-cloned').removeAttr('id');\n\n            }\n\n        }\n\n    };\n\n    Slick.prototype.interrupt = function( toggle ) {\n\n        var _ = this;\n\n        if( !toggle ) {\n            _.autoPlay();\n        }\n        _.interrupted = toggle;\n\n    };\n\n    Slick.prototype.selectHandler = function(event) {\n\n        var _ = this;\n\n        var targetElement =\n            $(event.target).is('.slick-slide') ?\n                $(event.target) :\n                $(event.target).parents('.slick-slide');\n\n        var index = parseInt(targetElement.attr('data-slick-index'));\n\n        if (!index) index = 0;\n\n        if (_.slideCount <= _.options.slidesToShow) {\n\n            _.slideHandler(index, false, true);\n            return;\n\n        }\n\n        _.slideHandler(index);\n\n    };\n\n    Slick.prototype.slideHandler = function(index, sync, dontAnimate) {\n\n        var targetSlide, animSlide, oldSlide, slideLeft, targetLeft = null,\n            _ = this, navTarget;\n\n        sync = sync || false;\n\n        if (_.animating === true && _.options.waitForAnimate === true) {\n            return;\n        }\n\n        if (_.options.fade === true && _.currentSlide === index) {\n            return;\n        }\n\n        if (sync === false) {\n            _.asNavFor(index);\n        }\n\n        targetSlide = index;\n        targetLeft = _.getLeft(targetSlide);\n        slideLeft = _.getLeft(_.currentSlide);\n\n        _.currentLeft = _.swipeLeft === null ? slideLeft : _.swipeLeft;\n\n        if (_.options.infinite === false && _.options.centerMode === false && (index < 0 || index > _.getDotCount() * _.options.slidesToScroll)) {\n            if (_.options.fade === false) {\n                targetSlide = _.currentSlide;\n                if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {\n                    _.animateSlide(slideLeft, function() {\n                        _.postSlide(targetSlide);\n                    });\n                } else {\n                    _.postSlide(targetSlide);\n                }\n            }\n            return;\n        } else if (_.options.infinite === false && _.options.centerMode === true && (index < 0 || index > (_.slideCount - _.options.slidesToScroll))) {\n            if (_.options.fade === false) {\n                targetSlide = _.currentSlide;\n                if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {\n                    _.animateSlide(slideLeft, function() {\n                        _.postSlide(targetSlide);\n                    });\n                } else {\n                    _.postSlide(targetSlide);\n                }\n            }\n            return;\n        }\n\n        if ( _.options.autoplay ) {\n            clearInterval(_.autoPlayTimer);\n        }\n\n        if (targetSlide < 0) {\n            if (_.slideCount % _.options.slidesToScroll !== 0) {\n                animSlide = _.slideCount - (_.slideCount % _.options.slidesToScroll);\n            } else {\n                animSlide = _.slideCount + targetSlide;\n            }\n        } else if (targetSlide >= _.slideCount) {\n            if (_.slideCount % _.options.slidesToScroll !== 0) {\n                animSlide = 0;\n            } else {\n                animSlide = targetSlide - _.slideCount;\n            }\n        } else {\n            animSlide = targetSlide;\n        }\n\n        _.animating = true;\n\n        _.$slider.trigger('beforeChange', [_, _.currentSlide, animSlide]);\n\n        oldSlide = _.currentSlide;\n        _.currentSlide = animSlide;\n\n        _.setSlideClasses(_.currentSlide);\n\n        if ( _.options.asNavFor ) {\n\n            navTarget = _.getNavTarget();\n            navTarget = navTarget.slick('getSlick');\n\n            if ( navTarget.slideCount <= navTarget.options.slidesToShow ) {\n                navTarget.setSlideClasses(_.currentSlide);\n            }\n\n        }\n\n        _.updateDots();\n        _.updateArrows();\n\n        if (_.options.fade === true) {\n            if (dontAnimate !== true) {\n\n                _.fadeSlideOut(oldSlide);\n\n                _.fadeSlide(animSlide, function() {\n                    _.postSlide(animSlide);\n                });\n\n            } else {\n                _.postSlide(animSlide);\n            }\n            _.animateHeight();\n            return;\n        }\n\n        if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {\n            _.animateSlide(targetLeft, function() {\n                _.postSlide(animSlide);\n            });\n        } else {\n            _.postSlide(animSlide);\n        }\n\n    };\n\n    Slick.prototype.startLoad = function() {\n\n        var _ = this;\n\n        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n\n            _.$prevArrow.hide();\n            _.$nextArrow.hide();\n\n        }\n\n        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n\n            _.$dots.hide();\n\n        }\n\n        _.$slider.addClass('slick-loading');\n\n    };\n\n    Slick.prototype.swipeDirection = function() {\n\n        var xDist, yDist, r, swipeAngle, _ = this;\n\n        xDist = _.touchObject.startX - _.touchObject.curX;\n        yDist = _.touchObject.startY - _.touchObject.curY;\n        r = Math.atan2(yDist, xDist);\n\n        swipeAngle = Math.round(r * 180 / Math.PI);\n        if (swipeAngle < 0) {\n            swipeAngle = 360 - Math.abs(swipeAngle);\n        }\n\n        if ((swipeAngle <= 45) && (swipeAngle >= 0)) {\n            return (_.options.rtl === false ? 'left' : 'right');\n        }\n        if ((swipeAngle <= 360) && (swipeAngle >= 315)) {\n            return (_.options.rtl === false ? 'left' : 'right');\n        }\n        if ((swipeAngle >= 135) && (swipeAngle <= 225)) {\n            return (_.options.rtl === false ? 'right' : 'left');\n        }\n        if (_.options.verticalSwiping === true) {\n            if ((swipeAngle >= 35) && (swipeAngle <= 135)) {\n                return 'down';\n            } else {\n                return 'up';\n            }\n        }\n\n        return 'vertical';\n\n    };\n\n    Slick.prototype.swipeEnd = function(event) {\n\n        var _ = this,\n            slideCount,\n            direction;\n\n        _.dragging = false;\n        _.swiping = false;\n\n        if (_.scrolling) {\n            _.scrolling = false;\n            return false;\n        }\n\n        _.interrupted = false;\n        _.shouldClick = ( _.touchObject.swipeLength > 10 ) ? false : true;\n\n        if ( _.touchObject.curX === undefined ) {\n            return false;\n        }\n\n        if ( _.touchObject.edgeHit === true ) {\n            _.$slider.trigger('edge', [_, _.swipeDirection() ]);\n        }\n\n        if ( _.touchObject.swipeLength >= _.touchObject.minSwipe ) {\n\n            direction = _.swipeDirection();\n\n            switch ( direction ) {\n\n                case 'left':\n                case 'down':\n\n                    slideCount =\n                        _.options.swipeToSlide ?\n                            _.checkNavigable( _.currentSlide + _.getSlideCount() ) :\n                            _.currentSlide + _.getSlideCount();\n\n                    _.currentDirection = 0;\n\n                    break;\n\n                case 'right':\n                case 'up':\n\n                    slideCount =\n                        _.options.swipeToSlide ?\n                            _.checkNavigable( _.currentSlide - _.getSlideCount() ) :\n                            _.currentSlide - _.getSlideCount();\n\n                    _.currentDirection = 1;\n\n                    break;\n\n                default:\n\n\n            }\n\n            if( direction != 'vertical' ) {\n\n                _.slideHandler( slideCount );\n                _.touchObject = {};\n                _.$slider.trigger('swipe', [_, direction ]);\n\n            }\n\n        } else {\n\n            if ( _.touchObject.startX !== _.touchObject.curX ) {\n\n                _.slideHandler( _.currentSlide );\n                _.touchObject = {};\n\n            }\n\n        }\n\n    };\n\n    Slick.prototype.swipeHandler = function(event) {\n\n        var _ = this;\n\n        if ((_.options.swipe === false) || ('ontouchend' in document && _.options.swipe === false)) {\n            return;\n        } else if (_.options.draggable === false && event.type.indexOf('mouse') !== -1) {\n            return;\n        }\n\n        _.touchObject.fingerCount = event.originalEvent && event.originalEvent.touches !== undefined ?\n            event.originalEvent.touches.length : 1;\n\n        _.touchObject.minSwipe = _.listWidth / _.options\n            .touchThreshold;\n\n        if (_.options.verticalSwiping === true) {\n            _.touchObject.minSwipe = _.listHeight / _.options\n                .touchThreshold;\n        }\n\n        switch (event.data.action) {\n\n            case 'start':\n                _.swipeStart(event);\n                break;\n\n            case 'move':\n                _.swipeMove(event);\n                break;\n\n            case 'end':\n                _.swipeEnd(event);\n                break;\n\n        }\n\n    };\n\n    Slick.prototype.swipeMove = function(event) {\n\n        var _ = this,\n            edgeWasHit = false,\n            curLeft, swipeDirection, swipeLength, positionOffset, touches, verticalSwipeLength;\n\n        touches = event.originalEvent !== undefined ? event.originalEvent.touches : null;\n\n        if (!_.dragging || _.scrolling || touches && touches.length !== 1) {\n            return false;\n        }\n\n        curLeft = _.getLeft(_.currentSlide);\n\n        _.touchObject.curX = touches !== undefined ? touches[0].pageX : event.clientX;\n        _.touchObject.curY = touches !== undefined ? touches[0].pageY : event.clientY;\n\n        _.touchObject.swipeLength = Math.round(Math.sqrt(\n            Math.pow(_.touchObject.curX - _.touchObject.startX, 2)));\n\n        verticalSwipeLength = Math.round(Math.sqrt(\n            Math.pow(_.touchObject.curY - _.touchObject.startY, 2)));\n\n        if (!_.options.verticalSwiping && !_.swiping && verticalSwipeLength > 4) {\n            _.scrolling = true;\n            return false;\n        }\n\n        if (_.options.verticalSwiping === true) {\n            _.touchObject.swipeLength = verticalSwipeLength;\n        }\n\n        swipeDirection = _.swipeDirection();\n\n        if (event.originalEvent !== undefined && _.touchObject.swipeLength > 4) {\n            _.swiping = true;\n            event.preventDefault();\n        }\n\n        positionOffset = (_.options.rtl === false ? 1 : -1) * (_.touchObject.curX > _.touchObject.startX ? 1 : -1);\n        if (_.options.verticalSwiping === true) {\n            positionOffset = _.touchObject.curY > _.touchObject.startY ? 1 : -1;\n        }\n\n\n        swipeLength = _.touchObject.swipeLength;\n\n        _.touchObject.edgeHit = false;\n\n        if (_.options.infinite === false) {\n            if ((_.currentSlide === 0 && swipeDirection === 'right') || (_.currentSlide >= _.getDotCount() && swipeDirection === 'left')) {\n                swipeLength = _.touchObject.swipeLength * _.options.edgeFriction;\n                _.touchObject.edgeHit = true;\n            }\n        }\n\n        if (_.options.vertical === false) {\n            _.swipeLeft = curLeft + swipeLength * positionOffset;\n        } else {\n            _.swipeLeft = curLeft + (swipeLength * (_.$list.height() / _.listWidth)) * positionOffset;\n        }\n        if (_.options.verticalSwiping === true) {\n            _.swipeLeft = curLeft + swipeLength * positionOffset;\n        }\n\n        if (_.options.fade === true || _.options.touchMove === false) {\n            return false;\n        }\n\n        if (_.animating === true) {\n            _.swipeLeft = null;\n            return false;\n        }\n\n        _.setCSS(_.swipeLeft);\n\n    };\n\n    Slick.prototype.swipeStart = function(event) {\n\n        var _ = this,\n            touches;\n\n        _.interrupted = true;\n\n        if (_.touchObject.fingerCount !== 1 || _.slideCount <= _.options.slidesToShow) {\n            _.touchObject = {};\n            return false;\n        }\n\n        if (event.originalEvent !== undefined && event.originalEvent.touches !== undefined) {\n            touches = event.originalEvent.touches[0];\n        }\n\n        _.touchObject.startX = _.touchObject.curX = touches !== undefined ? touches.pageX : event.clientX;\n        _.touchObject.startY = _.touchObject.curY = touches !== undefined ? touches.pageY : event.clientY;\n\n        _.dragging = true;\n\n    };\n\n    Slick.prototype.unfilterSlides = Slick.prototype.slickUnfilter = function() {\n\n        var _ = this;\n\n        if (_.$slidesCache !== null) {\n\n            _.unload();\n\n            _.$slideTrack.children(this.options.slide).detach();\n\n            _.$slidesCache.appendTo(_.$slideTrack);\n\n            _.reinit();\n\n        }\n\n    };\n\n    Slick.prototype.unload = function() {\n\n        var _ = this;\n\n        $('.slick-cloned', _.$slider).remove();\n\n        if (_.$dots) {\n            _.$dots.remove();\n        }\n\n        if (_.$prevArrow && _.htmlExpr.test(_.options.prevArrow)) {\n            _.$prevArrow.remove();\n        }\n\n        if (_.$nextArrow && _.htmlExpr.test(_.options.nextArrow)) {\n            _.$nextArrow.remove();\n        }\n\n        _.$slides\n            .removeClass('slick-slide slick-active slick-visible slick-current')\n            .attr('aria-hidden', 'true')\n            .css('width', '');\n\n    };\n\n    Slick.prototype.unslick = function(fromBreakpoint) {\n\n        var _ = this;\n        _.$slider.trigger('unslick', [_, fromBreakpoint]);\n        _.destroy();\n\n    };\n\n    Slick.prototype.updateArrows = function() {\n\n        var _ = this,\n            centerOffset;\n\n        centerOffset = Math.floor(_.options.slidesToShow / 2);\n\n        if ( _.options.arrows === true &&\n            _.slideCount > _.options.slidesToShow &&\n            !_.options.infinite ) {\n\n            _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n            _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n            if (_.currentSlide === 0) {\n\n                _.$prevArrow.addClass('slick-disabled').attr('aria-disabled', 'true');\n                _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n            } else if (_.currentSlide >= _.slideCount - _.options.slidesToShow && _.options.centerMode === false) {\n\n                _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');\n                _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n            } else if (_.currentSlide >= _.slideCount - 1 && _.options.centerMode === true) {\n\n                _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');\n                _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n            }\n\n        }\n\n    };\n\n    Slick.prototype.updateDots = function() {\n\n        var _ = this;\n\n        if (_.$dots !== null) {\n\n            _.$dots\n                .find('li')\n                    .removeClass('slick-active')\n                    .end();\n\n            _.$dots\n                .find('li')\n                .eq(Math.floor(_.currentSlide / _.options.slidesToScroll))\n                .addClass('slick-active');\n\n        }\n\n    };\n\n    Slick.prototype.visibility = function() {\n\n        var _ = this;\n\n        if ( _.options.autoplay ) {\n\n            if ( document[_.hidden] ) {\n\n                _.interrupted = true;\n\n            } else {\n\n                _.interrupted = false;\n\n            }\n\n        }\n\n    };\n\n    $.fn.slick = function() {\n        var _ = this,\n            opt = arguments[0],\n            args = Array.prototype.slice.call(arguments, 1),\n            l = _.length,\n            i,\n            ret;\n        for (i = 0; i < l; i++) {\n            if (typeof opt == 'object' || typeof opt == 'undefined')\n                _[i].slick = new Slick(_[i], opt);\n            else\n                ret = _[i].slick[opt].apply(_[i].slick, args);\n            if (typeof ret != 'undefined') return ret;\n        }\n        return _;\n    };\n\n})(jQuery);\n","/*!\n * fancyBox - jQuery Plugin\n * version: 2.1.5 (Fri, 14 Jun 2013)\n * @requires jQuery v1.6 or later\n *\n * Examples at http://fancyapps.com/fancybox/\n * License: www.fancyapps.com/fancybox/#license\n *\n * Copyright 2012 Janis Skarnelis - janis@fancyapps.com\n *\n */\n\n(function (window, document, $, undefined) {\n\t\"use strict\";\n\n\tvar H = $(\"html\"),\n\t\tW = $(window),\n\t\tD = $(document),\n\t\tF = $.fancybox = function () {\n\t\t\tF.open.apply( this, arguments );\n\t\t},\n\t\tIE =  navigator.userAgent.match(/msie/i),\n\t\tdidUpdate\t= null,\n\t\tisTouch\t\t= document.createTouch !== undefined,\n\n\t\tisQuery\t= function(obj) {\n\t\t\treturn obj && obj.hasOwnProperty && obj instanceof $;\n\t\t},\n\t\tisString = function(str) {\n\t\t\treturn str && $.type(str) === \"string\";\n\t\t},\n\t\tisPercentage = function(str) {\n\t\t\treturn isString(str) && str.indexOf('%') > 0;\n\t\t},\n\t\tisScrollable = function(el) {\n\t\t\treturn (el && !(el.style.overflow && el.style.overflow === 'hidden') && ((el.clientWidth && el.scrollWidth > el.clientWidth) || (el.clientHeight && el.scrollHeight > el.clientHeight)));\n\t\t},\n\t\tgetScalar = function(orig, dim) {\n\t\t\tvar value = parseInt(orig, 10) || 0;\n\n\t\t\tif (dim && isPercentage(orig)) {\n\t\t\t\tvalue = F.getViewport()[ dim ] / 100 * value;\n\t\t\t}\n\n\t\t\treturn Math.ceil(value);\n\t\t},\n\t\tgetValue = function(value, dim) {\n\t\t\treturn getScalar(value, dim) + 'px';\n\t\t};\n\n\t$.extend(F, {\n\t\t// The current version of fancyBox\n\t\tversion: '2.1.5',\n\n\t\tdefaults: {\n\t\t\tpadding : 15,\n\t\t\tmargin  : 20,\n\n\t\t\twidth     : 800,\n\t\t\theight    : 600,\n\t\t\tminWidth  : 100,\n\t\t\tminHeight : 100,\n\t\t\tmaxWidth  : 9999,\n\t\t\tmaxHeight : 9999,\n\t\t\tpixelRatio: 1, // Set to 2 for retina display support\n\n\t\t\tautoSize   : true,\n\t\t\tautoHeight : false,\n\t\t\tautoWidth  : false,\n\n\t\t\tautoResize  : true,\n\t\t\tautoCenter  : !isTouch,\n\t\t\tfitToView   : true,\n\t\t\taspectRatio : false,\n\t\t\ttopRatio    : 0.5,\n\t\t\tleftRatio   : 0.5,\n\n\t\t\tscrolling : 'auto', // 'auto', 'yes' or 'no'\n\t\t\twrapCSS   : '',\n\n\t\t\tarrows     : true,\n\t\t\tcloseBtn   : true,\n\t\t\tcloseClick : false,\n\t\t\tnextClick  : false,\n\t\t\tmouseWheel : true,\n\t\t\tautoPlay   : false,\n\t\t\tplaySpeed  : 3000,\n\t\t\tpreload    : 3,\n\t\t\tmodal      : false,\n\t\t\tloop       : true,\n\n\t\t\tajax  : {\n\t\t\t\tdataType : 'html',\n\t\t\t\theaders  : { 'X-fancyBox': true }\n\t\t\t},\n\t\t\tiframe : {\n\t\t\t\tscrolling : 'auto',\n\t\t\t\tpreload   : true\n\t\t\t},\n\t\t\tswf : {\n\t\t\t\twmode: 'transparent',\n\t\t\t\tallowfullscreen   : 'true',\n\t\t\t\tallowscriptaccess : 'always'\n\t\t\t},\n\n\t\t\tkeys  : {\n\t\t\t\tnext : {\n\t\t\t\t\t13 : 'left', // enter\n\t\t\t\t\t34 : 'up',   // page down\n\t\t\t\t\t39 : 'left', // right arrow\n\t\t\t\t\t40 : 'up'    // down arrow\n\t\t\t\t},\n\t\t\t\tprev : {\n\t\t\t\t\t8  : 'right',  // backspace\n\t\t\t\t\t33 : 'down',   // page up\n\t\t\t\t\t37 : 'right',  // left arrow\n\t\t\t\t\t38 : 'down'    // up arrow\n\t\t\t\t},\n\t\t\t\tclose  : [27], // escape key\n\t\t\t\tplay   : [32], // space - start/stop slideshow\n\t\t\t\ttoggle : [70]  // letter \"f\" - toggle fullscreen\n\t\t\t},\n\n\t\t\tdirection : {\n\t\t\t\tnext : 'left',\n\t\t\t\tprev : 'right'\n\t\t\t},\n\n\t\t\tscrollOutside  : true,\n\n\t\t\t// Override some properties\n\t\t\tindex   : 0,\n\t\t\ttype    : null,\n\t\t\thref    : null,\n\t\t\tcontent : null,\n\t\t\ttitle   : null,\n\n\t\t\t// HTML templates\n\t\t\ttpl: {\n\t\t\t\twrap     : '<div class=\"fancybox-wrap\" tabIndex=\"-1\"><div class=\"fancybox-skin\"><div class=\"fancybox-outer\"><div class=\"fancybox-inner\"></div></div></div></div>',\n\t\t\t\timage    : '<img class=\"fancybox-image\" src=\"{href}\" alt=\"\" />',\n\t\t\t\tiframe   : '<iframe id=\"fancybox-frame{rnd}\" name=\"fancybox-frame{rnd}\" class=\"fancybox-iframe\" frameborder=\"0\" vspace=\"0\" hspace=\"0\" webkitAllowFullScreen mozallowfullscreen allowFullScreen' + (IE ? ' allowtransparency=\"true\"' : '') + '></iframe>',\n\t\t\t\terror    : '<p class=\"fancybox-error\">The requested content cannot be loaded.<br/>Please try again later.</p>',\n\t\t\t\tcloseBtn : '<a title=\"Close\" class=\"fancybox-item fancybox-close\" href=\"javascript:;\"></a>',\n\t\t\t\tnext     : '<a title=\"Next\" class=\"fancybox-nav fancybox-next\" href=\"javascript:;\"><span></span></a>',\n\t\t\t\tprev     : '<a title=\"Previous\" class=\"fancybox-nav fancybox-prev\" href=\"javascript:;\"><span></span></a>'\n\t\t\t},\n\n\t\t\t// Properties for each animation type\n\t\t\t// Opening fancyBox\n\t\t\topenEffect  : 'fade', // 'elastic', 'fade' or 'none'\n\t\t\topenSpeed   : 250,\n\t\t\topenEasing  : 'swing',\n\t\t\topenOpacity : true,\n\t\t\topenMethod  : 'zoomIn',\n\n\t\t\t// Closing fancyBox\n\t\t\tcloseEffect  : 'fade', // 'elastic', 'fade' or 'none'\n\t\t\tcloseSpeed   : 250,\n\t\t\tcloseEasing  : 'swing',\n\t\t\tcloseOpacity : true,\n\t\t\tcloseMethod  : 'zoomOut',\n\n\t\t\t// Changing next gallery item\n\t\t\tnextEffect : 'elastic', // 'elastic', 'fade' or 'none'\n\t\t\tnextSpeed  : 250,\n\t\t\tnextEasing : 'swing',\n\t\t\tnextMethod : 'changeIn',\n\n\t\t\t// Changing previous gallery item\n\t\t\tprevEffect : 'elastic', // 'elastic', 'fade' or 'none'\n\t\t\tprevSpeed  : 250,\n\t\t\tprevEasing : 'swing',\n\t\t\tprevMethod : 'changeOut',\n\n\t\t\t// Enable default helpers\n\t\t\thelpers : {\n\t\t\t\toverlay : true,\n\t\t\t\ttitle   : true\n\t\t\t},\n\n\t\t\t// Callbacks\n\t\t\tonCancel     : $.noop, // If canceling\n\t\t\tbeforeLoad   : $.noop, // Before loading\n\t\t\tafterLoad    : $.noop, // After loading\n\t\t\tbeforeShow   : $.noop, // Before changing in current item\n\t\t\tafterShow    : $.noop, // After opening\n\t\t\tbeforeChange : $.noop, // Before changing gallery item\n\t\t\tbeforeClose  : $.noop, // Before closing\n\t\t\tafterClose   : $.noop  // After closing\n\t\t},\n\n\t\t//Current state\n\t\tgroup    : {}, // Selected group\n\t\topts     : {}, // Group options\n\t\tprevious : null,  // Previous element\n\t\tcoming   : null,  // Element being loaded\n\t\tcurrent  : null,  // Currently loaded element\n\t\tisActive : false, // Is activated\n\t\tisOpen   : false, // Is currently open\n\t\tisOpened : false, // Have been fully opened at least once\n\n\t\twrap  : null,\n\t\tskin  : null,\n\t\touter : null,\n\t\tinner : null,\n\n\t\tplayer : {\n\t\t\ttimer    : null,\n\t\t\tisActive : false\n\t\t},\n\n\t\t// Loaders\n\t\tajaxLoad   : null,\n\t\timgPreload : null,\n\n\t\t// Some collections\n\t\ttransitions : {},\n\t\thelpers     : {},\n\n\t\t/*\n\t\t *\tStatic methods\n\t\t */\n\n\t\topen: function (group, opts) {\n\t\t\tif (!group) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!$.isPlainObject(opts)) {\n\t\t\t\topts = {};\n\t\t\t}\n\n\t\t\t// Close if already active\n\t\t\tif (false === F.close(true)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Normalize group\n\t\t\tif (!$.isArray(group)) {\n\t\t\t\tgroup = isQuery(group) ? $(group).get() : [group];\n\t\t\t}\n\n\t\t\t// Recheck if the type of each element is `object` and set content type (image, ajax, etc)\n\t\t\t$.each(group, function(i, element) {\n\t\t\t\tvar obj = {},\n\t\t\t\t\thref,\n\t\t\t\t\ttitle,\n\t\t\t\t\tcontent,\n\t\t\t\t\ttype,\n\t\t\t\t\trez,\n\t\t\t\t\threfParts,\n\t\t\t\t\tselector;\n\n\t\t\t\tif ($.type(element) === \"object\") {\n\t\t\t\t\t// Check if is DOM element\n\t\t\t\t\tif (element.nodeType) {\n\t\t\t\t\t\telement = $(element);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (isQuery(element)) {\n\t\t\t\t\t\tobj = {\n\t\t\t\t\t\t\thref    : element.data('fancybox-href') || element.attr('href'),\n\t\t\t\t\t\t\ttitle   : element.data('fancybox-title') || element.attr('title'),\n\t\t\t\t\t\t\tisDom   : true,\n\t\t\t\t\t\t\telement : element\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif ($.metadata) {\n\t\t\t\t\t\t\t$.extend(true, obj, element.metadata());\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tobj = element;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\thref  = opts.href  || obj.href || (isString(element) ? element : null);\n\t\t\t\ttitle = opts.title !== undefined ? opts.title : obj.title || '';\n\n\t\t\t\tcontent = opts.content || obj.content;\n\t\t\t\ttype    = content ? 'html' : (opts.type  || obj.type);\n\n\t\t\t\tif (!type && obj.isDom) {\n\t\t\t\t\ttype = element.data('fancybox-type');\n\n\t\t\t\t\tif (!type) {\n\t\t\t\t\t\trez  = element.prop('class').match(/fancybox\\.(\\w+)/);\n\t\t\t\t\t\ttype = rez ? rez[1] : null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (isString(href)) {\n\t\t\t\t\t// Try to guess the content type\n\t\t\t\t\tif (!type) {\n\t\t\t\t\t\tif (F.isImage(href)) {\n\t\t\t\t\t\t\ttype = 'image';\n\n\t\t\t\t\t\t} else if (F.isSWF(href)) {\n\t\t\t\t\t\t\ttype = 'swf';\n\n\t\t\t\t\t\t} else if (href.charAt(0) === '#') {\n\t\t\t\t\t\t\ttype = 'inline';\n\n\t\t\t\t\t\t} else if (isString(element)) {\n\t\t\t\t\t\t\ttype    = 'html';\n\t\t\t\t\t\t\tcontent = element;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Split url into two pieces with source url and content selector, e.g,\n\t\t\t\t\t// \"/mypage.html #my_id\" will load \"/mypage.html\" and display element having id \"my_id\"\n\t\t\t\t\tif (type === 'ajax') {\n\t\t\t\t\t\threfParts = href.split(/\\s+/, 2);\n\t\t\t\t\t\thref      = hrefParts.shift();\n\t\t\t\t\t\tselector  = hrefParts.shift();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!content) {\n\t\t\t\t\tif (type === 'inline') {\n\t\t\t\t\t\tif (href) {\n\t\t\t\t\t\t\tcontent = $( isString(href) ? href.replace(/.*(?=#[^\\s]+$)/, '') : href ); //strip for ie7\n\n\t\t\t\t\t\t} else if (obj.isDom) {\n\t\t\t\t\t\t\tcontent = element;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if (type === 'html') {\n\t\t\t\t\t\tcontent = href;\n\n\t\t\t\t\t} else if (!type && !href && obj.isDom) {\n\t\t\t\t\t\ttype    = 'inline';\n\t\t\t\t\t\tcontent = element;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t$.extend(obj, {\n\t\t\t\t\thref     : href,\n\t\t\t\t\ttype     : type,\n\t\t\t\t\tcontent  : content,\n\t\t\t\t\ttitle    : title,\n\t\t\t\t\tselector : selector\n\t\t\t\t});\n\n\t\t\t\tgroup[ i ] = obj;\n\t\t\t});\n\n\t\t\t// Extend the defaults\n\t\t\tF.opts = $.extend(true, {}, F.defaults, opts);\n\n\t\t\t// All options are merged recursive except keys\n\t\t\tif (opts.keys !== undefined) {\n\t\t\t\tF.opts.keys = opts.keys ? $.extend({}, F.defaults.keys, opts.keys) : false;\n\t\t\t}\n\n\t\t\tF.group = group;\n\n\t\t\treturn F._start(F.opts.index);\n\t\t},\n\n\t\t// Cancel image loading or abort ajax request\n\t\tcancel: function () {\n\t\t\tvar coming = F.coming;\n\n\t\t\tif (!coming || false === F.trigger('onCancel')) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tF.hideLoading();\n\n\t\t\tif (F.ajaxLoad) {\n\t\t\t\tF.ajaxLoad.abort();\n\t\t\t}\n\n\t\t\tF.ajaxLoad = null;\n\n\t\t\tif (F.imgPreload) {\n\t\t\t\tF.imgPreload.onload = F.imgPreload.onerror = null;\n\t\t\t}\n\n\t\t\tif (coming.wrap) {\n\t\t\t\tcoming.wrap.stop(true, true).trigger('onReset').remove();\n\t\t\t}\n\n\t\t\tF.coming = null;\n\n\t\t\t// If the first item has been canceled, then clear everything\n\t\t\tif (!F.current) {\n\t\t\t\tF._afterZoomOut( coming );\n\t\t\t}\n\t\t},\n\n\t\t// Start closing animation if is open; remove immediately if opening/closing\n\t\tclose: function (event) {\n\t\t\tF.cancel();\n\n\t\t\tif (false === F.trigger('beforeClose')) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tF.unbindEvents();\n\n\t\t\tif (!F.isActive) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!F.isOpen || event === true) {\n\t\t\t\t$('.fancybox-wrap').stop(true).trigger('onReset').remove();\n\n\t\t\t\tF._afterZoomOut();\n\n\t\t\t} else {\n\t\t\t\tF.isOpen = F.isOpened = false;\n\t\t\t\tF.isClosing = true;\n\n\t\t\t\t$('.fancybox-item, .fancybox-nav').remove();\n\n\t\t\t\tF.wrap.stop(true, true).removeClass('fancybox-opened');\n\n\t\t\t\tF.transitions[ F.current.closeMethod ]();\n\t\t\t}\n\t\t},\n\n\t\t// Manage slideshow:\n\t\t//   $.fancybox.play(); - toggle slideshow\n\t\t//   $.fancybox.play( true ); - start\n\t\t//   $.fancybox.play( false ); - stop\n\t\tplay: function ( action ) {\n\t\t\tvar clear = function () {\n\t\t\t\t\tclearTimeout(F.player.timer);\n\t\t\t\t},\n\t\t\t\tset = function () {\n\t\t\t\t\tclear();\n\n\t\t\t\t\tif (F.current && F.player.isActive) {\n\t\t\t\t\t\tF.player.timer = setTimeout(F.next, F.current.playSpeed);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tstop = function () {\n\t\t\t\t\tclear();\n\n\t\t\t\t\tD.unbind('.player');\n\n\t\t\t\t\tF.player.isActive = false;\n\n\t\t\t\t\tF.trigger('onPlayEnd');\n\t\t\t\t},\n\t\t\t\tstart = function () {\n\t\t\t\t\tif (F.current && (F.current.loop || F.current.index < F.group.length - 1)) {\n\t\t\t\t\t\tF.player.isActive = true;\n\n\t\t\t\t\t\tD.bind({\n\t\t\t\t\t\t\t'onCancel.player beforeClose.player' : stop,\n\t\t\t\t\t\t\t'onUpdate.player'   : set,\n\t\t\t\t\t\t\t'beforeLoad.player' : clear\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tset();\n\n\t\t\t\t\t\tF.trigger('onPlayStart');\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\tif (action === true || (!F.player.isActive && action !== false)) {\n\t\t\t\tstart();\n\t\t\t} else {\n\t\t\t\tstop();\n\t\t\t}\n\t\t},\n\n\t\t// Navigate to next gallery item\n\t\tnext: function ( direction ) {\n\t\t\tvar current = F.current;\n\n\t\t\tif (current) {\n\t\t\t\tif (!isString(direction)) {\n\t\t\t\t\tdirection = current.direction.next;\n\t\t\t\t}\n\n\t\t\t\tF.jumpto(current.index + 1, direction, 'next');\n\t\t\t}\n\t\t},\n\n\t\t// Navigate to previous gallery item\n\t\tprev: function ( direction ) {\n\t\t\tvar current = F.current;\n\n\t\t\tif (current) {\n\t\t\t\tif (!isString(direction)) {\n\t\t\t\t\tdirection = current.direction.prev;\n\t\t\t\t}\n\n\t\t\t\tF.jumpto(current.index - 1, direction, 'prev');\n\t\t\t}\n\t\t},\n\n\t\t// Navigate to gallery item by index\n\t\tjumpto: function ( index, direction, router ) {\n\t\t\tvar current = F.current;\n\n\t\t\tif (!current) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tindex = getScalar(index);\n\n\t\t\tF.direction = direction || current.direction[ (index >= current.index ? 'next' : 'prev') ];\n\t\t\tF.router    = router || 'jumpto';\n\n\t\t\tif (current.loop) {\n\t\t\t\tif (index < 0) {\n\t\t\t\t\tindex = current.group.length + (index % current.group.length);\n\t\t\t\t}\n\n\t\t\t\tindex = index % current.group.length;\n\t\t\t}\n\n\t\t\tif (current.group[ index ] !== undefined) {\n\t\t\t\tF.cancel();\n\n\t\t\t\tF._start(index);\n\t\t\t}\n\t\t},\n\n\t\t// Center inside viewport and toggle position type to fixed or absolute if needed\n\t\treposition: function (e, onlyAbsolute) {\n\t\t\tvar current = F.current,\n\t\t\t\twrap    = current ? current.wrap : null,\n\t\t\t\tpos;\n\n\t\t\tif (wrap) {\n\t\t\t\tpos = F._getPosition(onlyAbsolute);\n\n\t\t\t\tif (e && e.type === 'scroll') {\n\t\t\t\t\tdelete pos.position;\n\n\t\t\t\t\twrap.stop(true, true).animate(pos, 200);\n\n\t\t\t\t} else {\n\t\t\t\t\twrap.css(pos);\n\n\t\t\t\t\tcurrent.pos = $.extend({}, current.dim, pos);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tupdate: function (e) {\n\t\t\tvar type = (e && e.type),\n\t\t\t\tanyway = !type || type === 'orientationchange';\n\n\t\t\tif (anyway) {\n\t\t\t\tclearTimeout(didUpdate);\n\n\t\t\t\tdidUpdate = null;\n\t\t\t}\n\n\t\t\tif (!F.isOpen || didUpdate) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdidUpdate = setTimeout(function() {\n\t\t\t\tvar current = F.current;\n\n\t\t\t\tif (!current || F.isClosing) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tF.wrap.removeClass('fancybox-tmp');\n\n\t\t\t\tif (anyway || type === 'load' || (type === 'resize' && current.autoResize)) {\n\t\t\t\t\tF._setDimension();\n\t\t\t\t}\n\n\t\t\t\tif (!(type === 'scroll' && current.canShrink)) {\n\t\t\t\t\tF.reposition(e);\n\t\t\t\t}\n\n\t\t\t\tF.trigger('onUpdate');\n\n\t\t\t\tdidUpdate = null;\n\n\t\t\t}, (anyway && !isTouch ? 0 : 300));\n\t\t},\n\n\t\t// Shrink content to fit inside viewport or restore if resized\n\t\ttoggle: function ( action ) {\n\t\t\tif (F.isOpen) {\n\t\t\t\tF.current.fitToView = $.type(action) === \"boolean\" ? action : !F.current.fitToView;\n\n\t\t\t\t// Help browser to restore document dimensions\n\t\t\t\tif (isTouch) {\n\t\t\t\t\tF.wrap.removeAttr('style').addClass('fancybox-tmp');\n\n\t\t\t\t\tF.trigger('onUpdate');\n\t\t\t\t}\n\n\t\t\t\tF.update();\n\t\t\t}\n\t\t},\n\n\t\thideLoading: function () {\n\t\t\tD.unbind('.loading');\n\n\t\t\t$('#fancybox-loading').remove();\n\t\t},\n\n\t\tshowLoading: function () {\n\t\t\tvar el, viewport;\n\n\t\t\tF.hideLoading();\n\n\t\t\tel = $('<div id=\"fancybox-loading\"><div></div></div>').click(F.cancel).appendTo('body');\n\n\t\t\t// If user will press the escape-button, the request will be canceled\n\t\t\tD.bind('keydown.loading', function(e) {\n\t\t\t\tif ((e.which || e.keyCode) === 27) {\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tF.cancel();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (!F.defaults.fixed) {\n\t\t\t\tviewport = F.getViewport();\n\n\t\t\t\tel.css({\n\t\t\t\t\tposition : 'absolute',\n\t\t\t\t\ttop  : (viewport.h * 0.5) + viewport.y,\n\t\t\t\t\tleft : (viewport.w * 0.5) + viewport.x\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\tgetViewport: function () {\n\t\t\tvar locked = (F.current && F.current.locked) || false,\n\t\t\t\trez    = {\n\t\t\t\t\tx: W.scrollLeft(),\n\t\t\t\t\ty: W.scrollTop()\n\t\t\t\t};\n\n\t\t\tif (locked) {\n\t\t\t\trez.w = locked[0].clientWidth;\n\t\t\t\trez.h = locked[0].clientHeight;\n\n\t\t\t} else {\n\t\t\t\t// See http://bugs.jquery.com/ticket/6724\n\t\t\t\trez.w = isTouch && window.innerWidth  ? window.innerWidth  : W.width();\n\t\t\t\trez.h = isTouch && window.innerHeight ? window.innerHeight : W.height();\n\t\t\t}\n\n\t\t\treturn rez;\n\t\t},\n\n\t\t// Unbind the keyboard / clicking actions\n\t\tunbindEvents: function () {\n\t\t\tif (F.wrap && isQuery(F.wrap)) {\n\t\t\t\tF.wrap.unbind('.fb');\n\t\t\t}\n\n\t\t\tD.unbind('.fb');\n\t\t\tW.unbind('.fb');\n\t\t},\n\n\t\tbindEvents: function () {\n\t\t\tvar current = F.current,\n\t\t\t\tkeys;\n\n\t\t\tif (!current) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Changing document height on iOS devices triggers a 'resize' event,\n\t\t\t// that can change document height... repeating infinitely\n\t\t\tW.bind('orientationchange.fb' + (isTouch ? '' : ' resize.fb') + (current.autoCenter && !current.locked ? ' scroll.fb' : ''), F.update);\n\n\t\t\tkeys = current.keys;\n\n\t\t\tif (keys) {\n\t\t\t\tD.bind('keydown.fb', function (e) {\n\t\t\t\t\tvar code   = e.which || e.keyCode,\n\t\t\t\t\t\ttarget = e.target || e.srcElement;\n\n\t\t\t\t\t// Skip esc key if loading, because showLoading will cancel preloading\n\t\t\t\t\tif (code === 27 && F.coming) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Ignore key combinations and key events within form elements\n\t\t\t\t\tif (!e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey && !(target && (target.type || $(target).is('[contenteditable]')))) {\n\t\t\t\t\t\t$.each(keys, function(i, val) {\n\t\t\t\t\t\t\tif (current.group.length > 1 && val[ code ] !== undefined) {\n\t\t\t\t\t\t\t\tF[ i ]( val[ code ] );\n\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ($.inArray(code, val) > -1) {\n\t\t\t\t\t\t\t\tF[ i ] ();\n\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ($.fn.mousewheel && current.mouseWheel) {\n\t\t\t\tF.wrap.bind('mousewheel.fb', function (e, delta, deltaX, deltaY) {\n\t\t\t\t\tvar target = e.target || null,\n\t\t\t\t\t\tparent = $(target),\n\t\t\t\t\t\tcanScroll = false;\n\n\t\t\t\t\twhile (parent.length) {\n\t\t\t\t\t\tif (canScroll || parent.is('.fancybox-skin') || parent.is('.fancybox-wrap')) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcanScroll = isScrollable( parent[0] );\n\t\t\t\t\t\tparent    = $(parent).parent();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (delta !== 0 && !canScroll) {\n\t\t\t\t\t\tif (F.group.length > 1 && !current.canShrink) {\n\t\t\t\t\t\t\tif (deltaY > 0 || deltaX > 0) {\n\t\t\t\t\t\t\t\tF.prev( deltaY > 0 ? 'down' : 'left' );\n\n\t\t\t\t\t\t\t} else if (deltaY < 0 || deltaX < 0) {\n\t\t\t\t\t\t\t\tF.next( deltaY < 0 ? 'up' : 'right' );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\ttrigger: function (event, o) {\n\t\t\tvar ret, obj = o || F.coming || F.current;\n\n\t\t\tif (!obj) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ($.isFunction( obj[event] )) {\n\t\t\t\tret = obj[event].apply(obj, Array.prototype.slice.call(arguments, 1));\n\t\t\t}\n\n\t\t\tif (ret === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (obj.helpers) {\n\t\t\t\t$.each(obj.helpers, function (helper, opts) {\n\t\t\t\t\tif (opts && F.helpers[helper] && $.isFunction(F.helpers[helper][event])) {\n\t\t\t\t\t\tF.helpers[helper][event]($.extend(true, {}, F.helpers[helper].defaults, opts), obj);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tD.trigger(event);\n\t\t},\n\n\t\tisImage: function (str) {\n\t\t\treturn isString(str) && str.match(/(^data:image\\/.*,)|(\\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\\?|#).*)?$)/i);\n\t\t},\n\n\t\tisSWF: function (str) {\n\t\t\treturn isString(str) && str.match(/\\.(swf)((\\?|#).*)?$/i);\n\t\t},\n\n\t\t_start: function (index) {\n\t\t\tvar coming = {},\n\t\t\t\tobj,\n\t\t\t\thref,\n\t\t\t\ttype,\n\t\t\t\tmargin,\n\t\t\t\tpadding;\n\n\t\t\tindex = getScalar( index );\n\t\t\tobj   = F.group[ index ] || null;\n\n\t\t\tif (!obj) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tcoming = $.extend(true, {}, F.opts, obj);\n\n\t\t\t// Convert margin and padding properties to array - top, right, bottom, left\n\t\t\tmargin  = coming.margin;\n\t\t\tpadding = coming.padding;\n\n\t\t\tif ($.type(margin) === 'number') {\n\t\t\t\tcoming.margin = [margin, margin, margin, margin];\n\t\t\t}\n\n\t\t\tif ($.type(padding) === 'number') {\n\t\t\t\tcoming.padding = [padding, padding, padding, padding];\n\t\t\t}\n\n\t\t\t// 'modal' propery is just a shortcut\n\t\t\tif (coming.modal) {\n\t\t\t\t$.extend(true, coming, {\n\t\t\t\t\tcloseBtn   : false,\n\t\t\t\t\tcloseClick : false,\n\t\t\t\t\tnextClick  : false,\n\t\t\t\t\tarrows     : false,\n\t\t\t\t\tmouseWheel : false,\n\t\t\t\t\tkeys       : null,\n\t\t\t\t\thelpers: {\n\t\t\t\t\t\toverlay : {\n\t\t\t\t\t\t\tcloseClick : false\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// 'autoSize' property is a shortcut, too\n\t\t\tif (coming.autoSize) {\n\t\t\t\tcoming.autoWidth = coming.autoHeight = true;\n\t\t\t}\n\n\t\t\tif (coming.width === 'auto') {\n\t\t\t\tcoming.autoWidth = true;\n\t\t\t}\n\n\t\t\tif (coming.height === 'auto') {\n\t\t\t\tcoming.autoHeight = true;\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * Add reference to the group, so it`s possible to access from callbacks, example:\n\t\t\t * afterLoad : function() {\n\t\t\t *     this.title = 'Image ' + (this.index + 1) + ' of ' + this.group.length + (this.title ? ' - ' + this.title : '');\n\t\t\t * }\n\t\t\t */\n\n\t\t\tcoming.group  = F.group;\n\t\t\tcoming.index  = index;\n\n\t\t\t// Give a chance for callback or helpers to update coming item (type, title, etc)\n\t\t\tF.coming = coming;\n\n\t\t\tif (false === F.trigger('beforeLoad')) {\n\t\t\t\tF.coming = null;\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttype = coming.type;\n\t\t\thref = coming.href;\n\n\t\t\tif (!type) {\n\t\t\t\tF.coming = null;\n\n\t\t\t\t//If we can not determine content type then drop silently or display next/prev item if looping through gallery\n\t\t\t\tif (F.current && F.router && F.router !== 'jumpto') {\n\t\t\t\t\tF.current.index = index;\n\n\t\t\t\t\treturn F[ F.router ]( F.direction );\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tF.isActive = true;\n\n\t\t\tif (type === 'image' || type === 'swf') {\n\t\t\t\tcoming.autoHeight = coming.autoWidth = false;\n\t\t\t\tcoming.scrolling  = 'visible';\n\t\t\t}\n\n\t\t\tif (type === 'image') {\n\t\t\t\tcoming.aspectRatio = true;\n\t\t\t}\n\n\t\t\tif (type === 'iframe' && isTouch) {\n\t\t\t\tcoming.scrolling = 'scroll';\n\t\t\t}\n\n\t\t\t// Build the neccessary markup\n\t\t\tcoming.wrap = $(coming.tpl.wrap).addClass('fancybox-' + (isTouch ? 'mobile' : 'desktop') + ' fancybox-type-' + type + ' fancybox-tmp ' + coming.wrapCSS).appendTo( coming.parent || 'body' );\n\n\t\t\t$.extend(coming, {\n\t\t\t\tskin  : $('.fancybox-skin',  coming.wrap),\n\t\t\t\touter : $('.fancybox-outer', coming.wrap),\n\t\t\t\tinner : $('.fancybox-inner', coming.wrap)\n\t\t\t});\n\n\t\t\t$.each([\"Top\", \"Right\", \"Bottom\", \"Left\"], function(i, v) {\n\t\t\t\tcoming.skin.css('padding' + v, getValue(coming.padding[ i ]));\n\t\t\t});\n\n\t\t\tF.trigger('onReady');\n\n\t\t\t// Check before try to load; 'inline' and 'html' types need content, others - href\n\t\t\tif (type === 'inline' || type === 'html') {\n\t\t\t\tif (!coming.content || !coming.content.length) {\n\t\t\t\t\treturn F._error( 'content' );\n\t\t\t\t}\n\n\t\t\t} else if (!href) {\n\t\t\t\treturn F._error( 'href' );\n\t\t\t}\n\n\t\t\tif (type === 'image') {\n\t\t\t\tF._loadImage();\n\n\t\t\t} else if (type === 'ajax') {\n\t\t\t\tF._loadAjax();\n\n\t\t\t} else if (type === 'iframe') {\n\t\t\t\tF._loadIframe();\n\n\t\t\t} else {\n\t\t\t\tF._afterLoad();\n\t\t\t}\n\t\t},\n\n\t\t_error: function ( type ) {\n\t\t\t$.extend(F.coming, {\n\t\t\t\ttype       : 'html',\n\t\t\t\tautoWidth  : true,\n\t\t\t\tautoHeight : true,\n\t\t\t\tminWidth   : 0,\n\t\t\t\tminHeight  : 0,\n\t\t\t\tscrolling  : 'no',\n\t\t\t\thasError   : type,\n\t\t\t\tcontent    : F.coming.tpl.error\n\t\t\t});\n\n\t\t\tF._afterLoad();\n\t\t},\n\n\t\t_loadImage: function () {\n\t\t\t// Reset preload image so it is later possible to check \"complete\" property\n\t\t\tvar img = F.imgPreload = new Image();\n\n\t\t\timg.onload = function () {\n\t\t\t\tthis.onload = this.onerror = null;\n\n\t\t\t\tF.coming.width  = this.width / F.opts.pixelRatio;\n\t\t\t\tF.coming.height = this.height / F.opts.pixelRatio;\n\n\t\t\t\tF._afterLoad();\n\t\t\t};\n\n\t\t\timg.onerror = function () {\n\t\t\t\tthis.onload = this.onerror = null;\n\n\t\t\t\tF._error( 'image' );\n\t\t\t};\n\n\t\t\timg.src = F.coming.href;\n\n\t\t\tif (img.complete !== true) {\n\t\t\t\tF.showLoading();\n\t\t\t}\n\t\t},\n\n\t\t_loadAjax: function () {\n\t\t\tvar coming = F.coming;\n\n\t\t\tF.showLoading();\n\n\t\t\tF.ajaxLoad = $.ajax($.extend({}, coming.ajax, {\n\t\t\t\turl: coming.href,\n\t\t\t\terror: function (jqXHR, textStatus) {\n\t\t\t\t\tif (F.coming && textStatus !== 'abort') {\n\t\t\t\t\t\tF._error( 'ajax', jqXHR );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tF.hideLoading();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tsuccess: function (data, textStatus) {\n\t\t\t\t\tif (textStatus === 'success') {\n\t\t\t\t\t\tcoming.content = data;\n\n\t\t\t\t\t\tF._afterLoad();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}));\n\t\t},\n\n\t\t_loadIframe: function() {\n\t\t\tvar coming = F.coming,\n\t\t\t\tiframe = $(coming.tpl.iframe.replace(/\\{rnd\\}/g, new Date().getTime()))\n\t\t\t\t\t.attr('scrolling', isTouch ? 'auto' : coming.iframe.scrolling)\n\t\t\t\t\t.attr('src', coming.href);\n\n\t\t\t// This helps IE\n\t\t\t$(coming.wrap).bind('onReset', function () {\n\t\t\t\ttry {\n\t\t\t\t\t$(this).find('iframe').hide().attr('src', '//about:blank').end().empty();\n\t\t\t\t} catch (e) {}\n\t\t\t});\n\n\t\t\tif (coming.iframe.preload) {\n\t\t\t\tF.showLoading();\n\n\t\t\t\tiframe.one('load', function() {\n\t\t\t\t\t$(this).data('ready', 1);\n\n\t\t\t\t\t// iOS will lose scrolling if we resize\n\t\t\t\t\tif (!isTouch) {\n\t\t\t\t\t\t$(this).bind('load.fb', F.update);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Without this trick:\n\t\t\t\t\t//   - iframe won't scroll on iOS devices\n\t\t\t\t\t//   - IE7 sometimes displays empty iframe\n\t\t\t\t\t$(this).parents('.fancybox-wrap').width('100%').removeClass('fancybox-tmp').show();\n\n\t\t\t\t\tF._afterLoad();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcoming.content = iframe.appendTo( coming.inner );\n\n\t\t\tif (!coming.iframe.preload) {\n\t\t\t\tF._afterLoad();\n\t\t\t}\n\t\t},\n\n\t\t_preloadImages: function() {\n\t\t\tvar group   = F.group,\n\t\t\t\tcurrent = F.current,\n\t\t\t\tlen     = group.length,\n\t\t\t\tcnt     = current.preload ? Math.min(current.preload, len - 1) : 0,\n\t\t\t\titem,\n\t\t\t\ti;\n\n\t\t\tfor (i = 1; i <= cnt; i += 1) {\n\t\t\t\titem = group[ (current.index + i ) % len ];\n\n\t\t\t\tif (item.type === 'image' && item.href) {\n\t\t\t\t\tnew Image().src = item.href;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_afterLoad: function () {\n\t\t\tvar coming   = F.coming,\n\t\t\t\tprevious = F.current,\n\t\t\t\tplaceholder = 'fancybox-placeholder',\n\t\t\t\tcurrent,\n\t\t\t\tcontent,\n\t\t\t\ttype,\n\t\t\t\tscrolling,\n\t\t\t\thref,\n\t\t\t\tembed;\n\n\t\t\tF.hideLoading();\n\n\t\t\tif (!coming || F.isActive === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (false === F.trigger('afterLoad', coming, previous)) {\n\t\t\t\tcoming.wrap.stop(true).trigger('onReset').remove();\n\n\t\t\t\tF.coming = null;\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (previous) {\n\t\t\t\tF.trigger('beforeChange', previous);\n\n\t\t\t\tprevious.wrap.stop(true).removeClass('fancybox-opened')\n\t\t\t\t\t.find('.fancybox-item, .fancybox-nav')\n\t\t\t\t\t.remove();\n\t\t\t}\n\n\t\t\tF.unbindEvents();\n\n\t\t\tcurrent   = coming;\n\t\t\tcontent   = coming.content;\n\t\t\ttype      = coming.type;\n\t\t\tscrolling = coming.scrolling;\n\n\t\t\t$.extend(F, {\n\t\t\t\twrap  : current.wrap,\n\t\t\t\tskin  : current.skin,\n\t\t\t\touter : current.outer,\n\t\t\t\tinner : current.inner,\n\t\t\t\tcurrent  : current,\n\t\t\t\tprevious : previous\n\t\t\t});\n\n\t\t\thref = current.href;\n\n\t\t\tswitch (type) {\n\t\t\t\tcase 'inline':\n\t\t\t\tcase 'ajax':\n\t\t\t\tcase 'html':\n\t\t\t\t\tif (current.selector) {\n\t\t\t\t\t\tcontent = $('<div>').html(content).find(current.selector);\n\n\t\t\t\t\t} else if (isQuery(content)) {\n\t\t\t\t\t\tif (!content.data(placeholder)) {\n\t\t\t\t\t\t\tcontent.data(placeholder, $('<div class=\"' + placeholder + '\"></div>').insertAfter( content ).hide() );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcontent = content.show().detach();\n\n\t\t\t\t\t\tcurrent.wrap.bind('onReset', function () {\n\t\t\t\t\t\t\tif ($(this).find(content).length) {\n\t\t\t\t\t\t\t\tcontent.hide().replaceAll( content.data(placeholder) ).data(placeholder, false);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t\tcase 'image':\n\t\t\t\t\tcontent = current.tpl.image.replace('{href}', href);\n\t\t\t\tbreak;\n\n\t\t\t\tcase 'swf':\n\t\t\t\t\tcontent = '<object id=\"fancybox-swf\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\"100%\" height=\"100%\"><param name=\"movie\" value=\"' + href + '\"></param>';\n\t\t\t\t\tembed   = '';\n\n\t\t\t\t\t$.each(current.swf, function(name, val) {\n\t\t\t\t\t\tcontent += '<param name=\"' + name + '\" value=\"' + val + '\"></param>';\n\t\t\t\t\t\tembed   += ' ' + name + '=\"' + val + '\"';\n\t\t\t\t\t});\n\n\t\t\t\t\tcontent += '<embed src=\"' + href + '\" type=\"application/x-shockwave-flash\" width=\"100%\" height=\"100%\"' + embed + '></embed></object>';\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (!(isQuery(content) && content.parent().is(current.inner))) {\n\t\t\t\tcurrent.inner.append( content );\n\t\t\t}\n\n\t\t\t// Give a chance for helpers or callbacks to update elements\n\t\t\tF.trigger('beforeShow');\n\n\t\t\t// Set scrolling before calculating dimensions\n\t\t\tcurrent.inner.css('overflow', scrolling === 'yes' ? 'scroll' : (scrolling === 'no' ? 'hidden' : scrolling));\n\n\t\t\t// Set initial dimensions and start position\n\t\t\tF._setDimension();\n\n\t\t\tF.reposition();\n\n\t\t\tF.isOpen = false;\n\t\t\tF.coming = null;\n\n\t\t\tF.bindEvents();\n\n\t\t\tif (!F.isOpened) {\n\t\t\t\t$('.fancybox-wrap').not( current.wrap ).stop(true).trigger('onReset').remove();\n\n\t\t\t} else if (previous.prevMethod) {\n\t\t\t\tF.transitions[ previous.prevMethod ]();\n\t\t\t}\n\n\t\t\tF.transitions[ F.isOpened ? current.nextMethod : current.openMethod ]();\n\n\t\t\tF._preloadImages();\n\t\t},\n\n\t\t_setDimension: function () {\n\t\t\tvar viewport   = F.getViewport(),\n\t\t\t\tsteps      = 0,\n\t\t\t\tcanShrink  = false,\n\t\t\t\tcanExpand  = false,\n\t\t\t\twrap       = F.wrap,\n\t\t\t\tskin       = F.skin,\n\t\t\t\tinner      = F.inner,\n\t\t\t\tcurrent    = F.current,\n\t\t\t\twidth      = current.width,\n\t\t\t\theight     = current.height,\n\t\t\t\tminWidth   = current.minWidth,\n\t\t\t\tminHeight  = current.minHeight,\n\t\t\t\tmaxWidth   = current.maxWidth,\n\t\t\t\tmaxHeight  = current.maxHeight,\n\t\t\t\tscrolling  = current.scrolling,\n\t\t\t\tscrollOut  = current.scrollOutside ? current.scrollbarWidth : 0,\n\t\t\t\tmargin     = current.margin,\n\t\t\t\twMargin    = getScalar(margin[1] + margin[3]),\n\t\t\t\thMargin    = getScalar(margin[0] + margin[2]),\n\t\t\t\twPadding,\n\t\t\t\thPadding,\n\t\t\t\twSpace,\n\t\t\t\thSpace,\n\t\t\t\torigWidth,\n\t\t\t\torigHeight,\n\t\t\t\torigMaxWidth,\n\t\t\t\torigMaxHeight,\n\t\t\t\tratio,\n\t\t\t\twidth_,\n\t\t\t\theight_,\n\t\t\t\tmaxWidth_,\n\t\t\t\tmaxHeight_,\n\t\t\t\tiframe,\n\t\t\t\tbody;\n\n\t\t\t// Reset dimensions so we could re-check actual size\n\t\t\twrap.add(skin).add(inner).width('auto').height('auto').removeClass('fancybox-tmp');\n\n\t\t\twPadding = getScalar(skin.outerWidth(true)  - skin.width());\n\t\t\thPadding = getScalar(skin.outerHeight(true) - skin.height());\n\n\t\t\t// Any space between content and viewport (margin, padding, border, title)\n\t\t\twSpace = wMargin + wPadding;\n\t\t\thSpace = hMargin + hPadding;\n\n\t\t\torigWidth  = isPercentage(width)  ? (viewport.w - wSpace) * getScalar(width)  / 100 : width;\n\t\t\torigHeight = isPercentage(height) ? (viewport.h - hSpace) * getScalar(height) / 100 : height;\n\n\t\t\tif (current.type === 'iframe') {\n\t\t\t\tiframe = current.content;\n\n\t\t\t\tif (current.autoHeight && iframe.data('ready') === 1) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (iframe[0].contentWindow.document.location) {\n\t\t\t\t\t\t\tinner.width( origWidth ).height(9999);\n\n\t\t\t\t\t\t\tbody = iframe.contents().find('body');\n\n\t\t\t\t\t\t\tif (scrollOut) {\n\t\t\t\t\t\t\t\tbody.css('overflow-x', 'hidden');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\torigHeight = body.outerHeight(true);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} catch (e) {}\n\t\t\t\t}\n\n\t\t\t} else if (current.autoWidth || current.autoHeight) {\n\t\t\t\tinner.addClass( 'fancybox-tmp' );\n\n\t\t\t\t// Set width or height in case we need to calculate only one dimension\n\t\t\t\tif (!current.autoWidth) {\n\t\t\t\t\tinner.width( origWidth );\n\t\t\t\t}\n\n\t\t\t\tif (!current.autoHeight) {\n\t\t\t\t\tinner.height( origHeight );\n\t\t\t\t}\n\n\t\t\t\tif (current.autoWidth) {\n\t\t\t\t\torigWidth = inner.width();\n\t\t\t\t}\n\n\t\t\t\tif (current.autoHeight) {\n\t\t\t\t\torigHeight = inner.height();\n\t\t\t\t}\n\n\t\t\t\tinner.removeClass( 'fancybox-tmp' );\n\t\t\t}\n\n\t\t\twidth  = getScalar( origWidth );\n\t\t\theight = getScalar( origHeight );\n\n\t\t\tratio  = origWidth / origHeight;\n\n\t\t\t// Calculations for the content\n\t\t\tminWidth  = getScalar(isPercentage(minWidth) ? getScalar(minWidth, 'w') - wSpace : minWidth);\n\t\t\tmaxWidth  = getScalar(isPercentage(maxWidth) ? getScalar(maxWidth, 'w') - wSpace : maxWidth);\n\n\t\t\tminHeight = getScalar(isPercentage(minHeight) ? getScalar(minHeight, 'h') - hSpace : minHeight);\n\t\t\tmaxHeight = getScalar(isPercentage(maxHeight) ? getScalar(maxHeight, 'h') - hSpace : maxHeight);\n\n\t\t\t// These will be used to determine if wrap can fit in the viewport\n\t\t\torigMaxWidth  = maxWidth;\n\t\t\torigMaxHeight = maxHeight;\n\n\t\t\tif (current.fitToView) {\n\t\t\t\tmaxWidth  = Math.min(viewport.w - wSpace, maxWidth);\n\t\t\t\tmaxHeight = Math.min(viewport.h - hSpace, maxHeight);\n\t\t\t}\n\n\t\t\tmaxWidth_  = viewport.w - wMargin;\n\t\t\tmaxHeight_ = viewport.h - hMargin;\n\n\t\t\tif (current.aspectRatio) {\n\t\t\t\tif (width > maxWidth) {\n\t\t\t\t\twidth  = maxWidth;\n\t\t\t\t\theight = getScalar(width / ratio);\n\t\t\t\t}\n\n\t\t\t\tif (height > maxHeight) {\n\t\t\t\t\theight = maxHeight;\n\t\t\t\t\twidth  = getScalar(height * ratio);\n\t\t\t\t}\n\n\t\t\t\tif (width < minWidth) {\n\t\t\t\t\twidth  = minWidth;\n\t\t\t\t\theight = getScalar(width / ratio);\n\t\t\t\t}\n\n\t\t\t\tif (height < minHeight) {\n\t\t\t\t\theight = minHeight;\n\t\t\t\t\twidth  = getScalar(height * ratio);\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\twidth = Math.max(minWidth, Math.min(width, maxWidth));\n\n\t\t\t\tif (current.autoHeight && current.type !== 'iframe') {\n\t\t\t\t\tinner.width( width );\n\n\t\t\t\t\theight = inner.height();\n\t\t\t\t}\n\n\t\t\t\theight = Math.max(minHeight, Math.min(height, maxHeight));\n\t\t\t}\n\n\t\t\t// Try to fit inside viewport (including the title)\n\t\t\tif (current.fitToView) {\n\t\t\t\tinner.width( width ).height( height );\n\n\t\t\t\twrap.width( width + wPadding );\n\n\t\t\t\t// Real wrap dimensions\n\t\t\t\twidth_  = wrap.width();\n\t\t\t\theight_ = wrap.height();\n\n\t\t\t\tif (current.aspectRatio) {\n\t\t\t\t\twhile ((width_ > maxWidth_ || height_ > maxHeight_) && width > minWidth && height > minHeight) {\n\t\t\t\t\t\tif (steps++ > 19) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\theight = Math.max(minHeight, Math.min(maxHeight, height - 10));\n\t\t\t\t\t\twidth  = getScalar(height * ratio);\n\n\t\t\t\t\t\tif (width < minWidth) {\n\t\t\t\t\t\t\twidth  = minWidth;\n\t\t\t\t\t\t\theight = getScalar(width / ratio);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (width > maxWidth) {\n\t\t\t\t\t\t\twidth  = maxWidth;\n\t\t\t\t\t\t\theight = getScalar(width / ratio);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tinner.width( width ).height( height );\n\n\t\t\t\t\t\twrap.width( width + wPadding );\n\n\t\t\t\t\t\twidth_  = wrap.width();\n\t\t\t\t\t\theight_ = wrap.height();\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\twidth  = Math.max(minWidth,  Math.min(width,  width  - (width_  - maxWidth_)));\n\t\t\t\t\theight = Math.max(minHeight, Math.min(height, height - (height_ - maxHeight_)));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (scrollOut && scrolling === 'auto' && height < origHeight && (width + wPadding + scrollOut) < maxWidth_) {\n\t\t\t\twidth += scrollOut;\n\t\t\t}\n\n\t\t\tinner.width( width ).height( height );\n\n\t\t\twrap.width( width + wPadding );\n\n\t\t\twidth_  = wrap.width();\n\t\t\theight_ = wrap.height();\n\n\t\t\tcanShrink = (width_ > maxWidth_ || height_ > maxHeight_) && width > minWidth && height > minHeight;\n\t\t\tcanExpand = current.aspectRatio ? (width < origMaxWidth && height < origMaxHeight && width < origWidth && height < origHeight) : ((width < origMaxWidth || height < origMaxHeight) && (width < origWidth || height < origHeight));\n\n\t\t\t$.extend(current, {\n\t\t\t\tdim : {\n\t\t\t\t\twidth\t: getValue( width_ ),\n\t\t\t\t\theight\t: getValue( height_ )\n\t\t\t\t},\n\t\t\t\torigWidth  : origWidth,\n\t\t\t\torigHeight : origHeight,\n\t\t\t\tcanShrink  : canShrink,\n\t\t\t\tcanExpand  : canExpand,\n\t\t\t\twPadding   : wPadding,\n\t\t\t\thPadding   : hPadding,\n\t\t\t\twrapSpace  : height_ - skin.outerHeight(true),\n\t\t\t\tskinSpace  : skin.height() - height\n\t\t\t});\n\n\t\t\tif (!iframe && current.autoHeight && height > minHeight && height < maxHeight && !canExpand) {\n\t\t\t\tinner.height('auto');\n\t\t\t}\n\t\t},\n\n\t\t_getPosition: function (onlyAbsolute) {\n\t\t\tvar current  = F.current,\n\t\t\t\tviewport = F.getViewport(),\n\t\t\t\tmargin   = current.margin,\n\t\t\t\twidth    = F.wrap.width()  + margin[1] + margin[3],\n\t\t\t\theight   = F.wrap.height() + margin[0] + margin[2],\n\t\t\t\trez      = {\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\ttop  : margin[0],\n\t\t\t\t\tleft : margin[3]\n\t\t\t\t};\n\n\t\t\tif (current.autoCenter && current.fixed && !onlyAbsolute && height <= viewport.h && width <= viewport.w) {\n\t\t\t\trez.position = 'fixed';\n\n\t\t\t} else if (!current.locked) {\n\t\t\t\trez.top  += viewport.y;\n\t\t\t\trez.left += viewport.x;\n\t\t\t}\n\n\t\t\trez.top  = getValue(Math.max(rez.top,  rez.top  + ((viewport.h - height) * current.topRatio)));\n\t\t\trez.left = getValue(Math.max(rez.left, rez.left + ((viewport.w - width)  * current.leftRatio)));\n\n\t\t\treturn rez;\n\t\t},\n\n\t\t_afterZoomIn: function () {\n\t\t\tvar current = F.current;\n\n\t\t\tif (!current) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tF.isOpen = F.isOpened = true;\n\n\t\t\tF.wrap.css('overflow', 'visible').addClass('fancybox-opened');\n\n\t\t\tF.update();\n\n\t\t\t// Assign a click event\n\t\t\tif ( current.closeClick || (current.nextClick && F.group.length > 1) ) {\n\t\t\t\tF.inner.css('cursor', 'pointer').bind('click.fb', function(e) {\n\t\t\t\t\tif (!$(e.target).is('a') && !$(e.target).parent().is('a')) {\n\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\tF[ current.closeClick ? 'close' : 'next' ]();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Create a close button\n\t\t\tif (current.closeBtn) {\n\t\t\t\t$(current.tpl.closeBtn).appendTo(F.skin).bind('click.fb', function(e) {\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tF.close();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Create navigation arrows\n\t\t\tif (current.arrows && F.group.length > 1) {\n\t\t\t\tif (current.loop || current.index > 0) {\n\t\t\t\t\t$(current.tpl.prev).appendTo(F.outer).bind('click.fb', F.prev);\n\t\t\t\t}\n\n\t\t\t\tif (current.loop || current.index < F.group.length - 1) {\n\t\t\t\t\t$(current.tpl.next).appendTo(F.outer).bind('click.fb', F.next);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tF.trigger('afterShow');\n\n\t\t\t// Stop the slideshow if this is the last item\n\t\t\tif (!current.loop && current.index === current.group.length - 1) {\n\t\t\t\tF.play( false );\n\n\t\t\t} else if (F.opts.autoPlay && !F.player.isActive) {\n\t\t\t\tF.opts.autoPlay = false;\n\n\t\t\t\tF.play();\n\t\t\t}\n\t\t},\n\n\t\t_afterZoomOut: function ( obj ) {\n\t\t\tobj = obj || F.current;\n\n\t\t\t$('.fancybox-wrap').trigger('onReset').remove();\n\n\t\t\t$.extend(F, {\n\t\t\t\tgroup  : {},\n\t\t\t\topts   : {},\n\t\t\t\trouter : false,\n\t\t\t\tcurrent   : null,\n\t\t\t\tisActive  : false,\n\t\t\t\tisOpened  : false,\n\t\t\t\tisOpen    : false,\n\t\t\t\tisClosing : false,\n\t\t\t\twrap   : null,\n\t\t\t\tskin   : null,\n\t\t\t\touter  : null,\n\t\t\t\tinner  : null\n\t\t\t});\n\n\t\t\tF.trigger('afterClose', obj);\n\t\t}\n\t});\n\n\t/*\n\t *\tDefault transitions\n\t */\n\n\tF.transitions = {\n\t\tgetOrigPosition: function () {\n\t\t\tvar current  = F.current,\n\t\t\t\telement  = current.element,\n\t\t\t\torig     = current.orig,\n\t\t\t\tpos      = {},\n\t\t\t\twidth    = 50,\n\t\t\t\theight   = 50,\n\t\t\t\thPadding = current.hPadding,\n\t\t\t\twPadding = current.wPadding,\n\t\t\t\tviewport = F.getViewport();\n\n\t\t\tif (!orig && current.isDom && element.is(':visible')) {\n\t\t\t\torig = element.find('img:first');\n\n\t\t\t\tif (!orig.length) {\n\t\t\t\t\torig = element;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (isQuery(orig)) {\n\t\t\t\tpos = orig.offset();\n\n\t\t\t\tif (orig.is('img')) {\n\t\t\t\t\twidth  = orig.outerWidth();\n\t\t\t\t\theight = orig.outerHeight();\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tpos.top  = viewport.y + (viewport.h - height) * current.topRatio;\n\t\t\t\tpos.left = viewport.x + (viewport.w - width)  * current.leftRatio;\n\t\t\t}\n\n\t\t\tif (F.wrap.css('position') === 'fixed' || current.locked) {\n\t\t\t\tpos.top  -= viewport.y;\n\t\t\t\tpos.left -= viewport.x;\n\t\t\t}\n\n\t\t\tpos = {\n\t\t\t\ttop     : getValue(pos.top  - hPadding * current.topRatio),\n\t\t\t\tleft    : getValue(pos.left - wPadding * current.leftRatio),\n\t\t\t\twidth   : getValue(width  + wPadding),\n\t\t\t\theight  : getValue(height + hPadding)\n\t\t\t};\n\n\t\t\treturn pos;\n\t\t},\n\n\t\tstep: function (now, fx) {\n\t\t\tvar ratio,\n\t\t\t\tpadding,\n\t\t\t\tvalue,\n\t\t\t\tprop       = fx.prop,\n\t\t\t\tcurrent    = F.current,\n\t\t\t\twrapSpace  = current.wrapSpace,\n\t\t\t\tskinSpace  = current.skinSpace;\n\n\t\t\tif (prop === 'width' || prop === 'height') {\n\t\t\t\tratio = fx.end === fx.start ? 1 : (now - fx.start) / (fx.end - fx.start);\n\n\t\t\t\tif (F.isClosing) {\n\t\t\t\t\tratio = 1 - ratio;\n\t\t\t\t}\n\n\t\t\t\tpadding = prop === 'width' ? current.wPadding : current.hPadding;\n\t\t\t\tvalue   = now - padding;\n\n\t\t\t\tF.skin[ prop ](  getScalar( prop === 'width' ?  value : value - (wrapSpace * ratio) ) );\n\t\t\t\tF.inner[ prop ]( getScalar( prop === 'width' ?  value : value - (wrapSpace * ratio) - (skinSpace * ratio) ) );\n\t\t\t}\n\t\t},\n\n\t\tzoomIn: function () {\n\t\t\tvar current  = F.current,\n\t\t\t\tstartPos = current.pos,\n\t\t\t\teffect   = current.openEffect,\n\t\t\t\telastic  = effect === 'elastic',\n\t\t\t\tendPos   = $.extend({opacity : 1}, startPos);\n\n\t\t\t// Remove \"position\" property that breaks older IE\n\t\t\tdelete endPos.position;\n\n\t\t\tif (elastic) {\n\t\t\t\tstartPos = this.getOrigPosition();\n\n\t\t\t\tif (current.openOpacity) {\n\t\t\t\t\tstartPos.opacity = 0.1;\n\t\t\t\t}\n\n\t\t\t} else if (effect === 'fade') {\n\t\t\t\tstartPos.opacity = 0.1;\n\t\t\t}\n\n\t\t\tF.wrap.css(startPos).animate(endPos, {\n\t\t\t\tduration : effect === 'none' ? 0 : current.openSpeed,\n\t\t\t\teasing   : current.openEasing,\n\t\t\t\tstep     : elastic ? this.step : null,\n\t\t\t\tcomplete : F._afterZoomIn\n\t\t\t});\n\t\t},\n\n\t\tzoomOut: function () {\n\t\t\tvar current  = F.current,\n\t\t\t\teffect   = current.closeEffect,\n\t\t\t\telastic  = effect === 'elastic',\n\t\t\t\tendPos   = {opacity : 0.1};\n\n\t\t\tif (elastic) {\n\t\t\t\tendPos = this.getOrigPosition();\n\n\t\t\t\tif (current.closeOpacity) {\n\t\t\t\t\tendPos.opacity = 0.1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tF.wrap.animate(endPos, {\n\t\t\t\tduration : effect === 'none' ? 0 : current.closeSpeed,\n\t\t\t\teasing   : current.closeEasing,\n\t\t\t\tstep     : elastic ? this.step : null,\n\t\t\t\tcomplete : F._afterZoomOut\n\t\t\t});\n\t\t},\n\n\t\tchangeIn: function () {\n\t\t\tvar current   = F.current,\n\t\t\t\teffect    = current.nextEffect,\n\t\t\t\tstartPos  = current.pos,\n\t\t\t\tendPos    = { opacity : 1 },\n\t\t\t\tdirection = F.direction,\n\t\t\t\tdistance  = 200,\n\t\t\t\tfield;\n\n\t\t\tstartPos.opacity = 0.1;\n\n\t\t\tif (effect === 'elastic') {\n\t\t\t\tfield = direction === 'down' || direction === 'up' ? 'top' : 'left';\n\n\t\t\t\tif (direction === 'down' || direction === 'right') {\n\t\t\t\t\tstartPos[ field ] = getValue(getScalar(startPos[ field ]) - distance);\n\t\t\t\t\tendPos[ field ]   = '+=' + distance + 'px';\n\n\t\t\t\t} else {\n\t\t\t\t\tstartPos[ field ] = getValue(getScalar(startPos[ field ]) + distance);\n\t\t\t\t\tendPos[ field ]   = '-=' + distance + 'px';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Workaround for http://bugs.jquery.com/ticket/12273\n\t\t\tif (effect === 'none') {\n\t\t\t\tF._afterZoomIn();\n\n\t\t\t} else {\n\t\t\t\tF.wrap.css(startPos).animate(endPos, {\n\t\t\t\t\tduration : current.nextSpeed,\n\t\t\t\t\teasing   : current.nextEasing,\n\t\t\t\t\tcomplete : F._afterZoomIn\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\tchangeOut: function () {\n\t\t\tvar previous  = F.previous,\n\t\t\t\teffect    = previous.prevEffect,\n\t\t\t\tendPos    = { opacity : 0.1 },\n\t\t\t\tdirection = F.direction,\n\t\t\t\tdistance  = 200;\n\n\t\t\tif (effect === 'elastic') {\n\t\t\t\tendPos[ direction === 'down' || direction === 'up' ? 'top' : 'left' ] = ( direction === 'up' || direction === 'left' ? '-' : '+' ) + '=' + distance + 'px';\n\t\t\t}\n\n\t\t\tprevious.wrap.animate(endPos, {\n\t\t\t\tduration : effect === 'none' ? 0 : previous.prevSpeed,\n\t\t\t\teasing   : previous.prevEasing,\n\t\t\t\tcomplete : function () {\n\t\t\t\t\t$(this).trigger('onReset').remove();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n\n\t/*\n\t *\tOverlay helper\n\t */\n\n\tF.helpers.overlay = {\n\t\tdefaults : {\n\t\t\tcloseClick : true,      // if true, fancyBox will be closed when user clicks on the overlay\n\t\t\tspeedOut   : 200,       // duration of fadeOut animation\n\t\t\tshowEarly  : true,      // indicates if should be opened immediately or wait until the content is ready\n\t\t\tcss        : {},        // custom CSS properties\n\t\t\tlocked     : !isTouch,  // if true, the content will be locked into overlay\n\t\t\tfixed      : true       // if false, the overlay CSS position property will not be set to \"fixed\"\n\t\t},\n\n\t\toverlay : null,      // current handle\n\t\tfixed   : false,     // indicates if the overlay has position \"fixed\"\n\t\tel      : $('html'), // element that contains \"the lock\"\n\n\t\t// Public methods\n\t\tcreate : function(opts) {\n\t\t\topts = $.extend({}, this.defaults, opts);\n\n\t\t\tif (this.overlay) {\n\t\t\t\tthis.close();\n\t\t\t}\n\n\t\t\tthis.overlay = $('<div class=\"fancybox-overlay\"></div>').appendTo( F.coming ? F.coming.parent : opts.parent );\n\t\t\tthis.fixed   = false;\n\n\t\t\tif (opts.fixed && F.defaults.fixed) {\n\t\t\t\tthis.overlay.addClass('fancybox-overlay-fixed');\n\n\t\t\t\tthis.fixed = true;\n\t\t\t}\n\t\t},\n\n\t\topen : function(opts) {\n\t\t\tvar that = this;\n\n\t\t\topts = $.extend({}, this.defaults, opts);\n\n\t\t\tif (this.overlay) {\n\t\t\t\tthis.overlay.unbind('.overlay').width('auto').height('auto');\n\n\t\t\t} else {\n\t\t\t\tthis.create(opts);\n\t\t\t}\n\n\t\t\tif (!this.fixed) {\n\t\t\t\tW.bind('resize.overlay', $.proxy( this.update, this) );\n\n\t\t\t\tthis.update();\n\t\t\t}\n\n\t\t\tif (opts.closeClick) {\n\t\t\t\tthis.overlay.bind('click.overlay', function(e) {\n\t\t\t\t\tif ($(e.target).hasClass('fancybox-overlay')) {\n\t\t\t\t\t\tif (F.isActive) {\n\t\t\t\t\t\t\tF.close();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthat.close();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.overlay.css( opts.css ).show();\n\t\t},\n\n\t\tclose : function() {\n\t\t\tvar scrollV, scrollH;\n\n\t\t\tW.unbind('resize.overlay');\n\n\t\t\tif (this.el.hasClass('fancybox-lock')) {\n\t\t\t\t$('.fancybox-margin').removeClass('fancybox-margin');\n\n\t\t\t\tscrollV = W.scrollTop();\n\t\t\t\tscrollH = W.scrollLeft();\n\n\t\t\t\tthis.el.removeClass('fancybox-lock');\n\n\t\t\t\tW.scrollTop( scrollV ).scrollLeft( scrollH );\n\t\t\t}\n\n\t\t\t$('.fancybox-overlay').remove().hide();\n\n\t\t\t$.extend(this, {\n\t\t\t\toverlay : null,\n\t\t\t\tfixed   : false\n\t\t\t});\n\t\t},\n\n\t\t// Private, callbacks\n\n\t\tupdate : function () {\n\t\t\tvar width = '100%', offsetWidth;\n\n\t\t\t// Reset width/height so it will not mess\n\t\t\tthis.overlay.width(width).height('100%');\n\n\t\t\t// jQuery does not return reliable result for IE\n\t\t\tif (IE) {\n\t\t\t\toffsetWidth = Math.max(document.documentElement.offsetWidth, document.body.offsetWidth);\n\n\t\t\t\tif (D.width() > offsetWidth) {\n\t\t\t\t\twidth = D.width();\n\t\t\t\t}\n\n\t\t\t} else if (D.width() > W.width()) {\n\t\t\t\twidth = D.width();\n\t\t\t}\n\n\t\t\tthis.overlay.width(width).height(D.height());\n\t\t},\n\n\t\t// This is where we can manipulate DOM, because later it would cause iframes to reload\n\t\tonReady : function (opts, obj) {\n\t\t\tvar overlay = this.overlay;\n\n\t\t\t$('.fancybox-overlay').stop(true, true);\n\n\t\t\tif (!overlay) {\n\t\t\t\tthis.create(opts);\n\t\t\t}\n\n\t\t\tif (opts.locked && this.fixed && obj.fixed) {\n\t\t\t\tif (!overlay) {\n\t\t\t\t\tthis.margin = D.height() > W.height() ? $('html').css('margin-right').replace(\"px\", \"\") : false;\n\t\t\t\t}\n\n\t\t\t\tobj.locked = this.overlay.append( obj.wrap );\n\t\t\t\tobj.fixed  = false;\n\t\t\t}\n\n\t\t\tif (opts.showEarly === true) {\n\t\t\t\tthis.beforeShow.apply(this, arguments);\n\t\t\t}\n\t\t},\n\n\t\tbeforeShow : function(opts, obj) {\n\t\t\tvar scrollV, scrollH;\n\n\t\t\tif (obj.locked) {\n\t\t\t\tif (this.margin !== false) {\n\t\t\t\t\t$('*').filter(function(){\n\t\t\t\t\t\treturn ($(this).css('position') === 'fixed' && !$(this).hasClass(\"fancybox-overlay\") && !$(this).hasClass(\"fancybox-wrap\") );\n\t\t\t\t\t}).addClass('fancybox-margin');\n\n\t\t\t\t\tthis.el.addClass('fancybox-margin');\n\t\t\t\t}\n\n\t\t\t\tscrollV = W.scrollTop();\n\t\t\t\tscrollH = W.scrollLeft();\n\n\t\t\t\tthis.el.addClass('fancybox-lock');\n\n\t\t\t\tW.scrollTop( scrollV ).scrollLeft( scrollH );\n\t\t\t}\n\n\t\t\tthis.open(opts);\n\t\t},\n\n\t\tonUpdate : function() {\n\t\t\tif (!this.fixed) {\n\t\t\t\tthis.update();\n\t\t\t}\n\t\t},\n\n\t\tafterClose: function (opts) {\n\t\t\t// Remove overlay if exists and fancyBox is not opening\n\t\t\t// (e.g., it is not being open using afterClose callback)\n\t\t\t//if (this.overlay && !F.isActive) {\n\t\t\tif (this.overlay && !F.coming) {\n\t\t\t\tthis.overlay.fadeOut(opts.speedOut, $.proxy( this.close, this ));\n\t\t\t}\n\t\t}\n\t};\n\n\t/*\n\t *\tTitle helper\n\t */\n\n\tF.helpers.title = {\n\t\tdefaults : {\n\t\t\ttype     : 'float', // 'float', 'inside', 'outside' or 'over',\n\t\t\tposition : 'bottom' // 'top' or 'bottom'\n\t\t},\n\n\t\tbeforeShow: function (opts) {\n\t\t\tvar current = F.current,\n\t\t\t\ttext    = current.title,\n\t\t\t\ttype    = opts.type,\n\t\t\t\ttitle,\n\t\t\t\ttarget;\n\n\t\t\tif ($.isFunction(text)) {\n\t\t\t\ttext = text.call(current.element, current);\n\t\t\t}\n\n\t\t\tif (!isString(text) || $.trim(text) === '') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttitle = $('<div class=\"fancybox-title fancybox-title-' + type + '-wrap\">' + text + '</div>');\n\n\t\t\tswitch (type) {\n\t\t\t\tcase 'inside':\n\t\t\t\t\ttarget = F.skin;\n\t\t\t\tbreak;\n\n\t\t\t\tcase 'outside':\n\t\t\t\t\ttarget = F.wrap;\n\t\t\t\tbreak;\n\n\t\t\t\tcase 'over':\n\t\t\t\t\ttarget = F.inner;\n\t\t\t\tbreak;\n\n\t\t\t\tdefault: // 'float'\n\t\t\t\t\ttarget = F.skin;\n\n\t\t\t\t\ttitle.appendTo('body');\n\n\t\t\t\t\tif (IE) {\n\t\t\t\t\t\ttitle.width( title.width() );\n\t\t\t\t\t}\n\n\t\t\t\t\ttitle.wrapInner('<span class=\"child\"></span>');\n\n\t\t\t\t\t//Increase bottom margin so this title will also fit into viewport\n\t\t\t\t\tF.current.margin[2] += Math.abs( getScalar(title.css('margin-bottom')) );\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\ttitle[ (opts.position === 'top' ? 'prependTo'  : 'appendTo') ](target);\n\t\t}\n\t};\n\n\t// jQuery plugin initialization\n\t$.fn.fancybox = function (options) {\n\t\tvar index,\n\t\t\tthat     = $(this),\n\t\t\tselector = this.selector || '',\n\t\t\trun      = function(e) {\n\t\t\t\tvar what = $(this).blur(), idx = index, relType, relVal;\n\n\t\t\t\tif (!(e.ctrlKey || e.altKey || e.shiftKey || e.metaKey) && !what.is('.fancybox-wrap')) {\n\t\t\t\t\trelType = options.groupAttr || 'data-fancybox-group';\n\t\t\t\t\trelVal  = what.attr(relType);\n\n\t\t\t\t\tif (!relVal) {\n\t\t\t\t\t\trelType = 'rel';\n\t\t\t\t\t\trelVal  = what.get(0)[ relType ];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (relVal && relVal !== '' && relVal !== 'nofollow') {\n\t\t\t\t\t\twhat = selector.length ? $(selector) : that;\n\t\t\t\t\t\twhat = what.filter('[' + relType + '=\"' + relVal + '\"]');\n\t\t\t\t\t\tidx  = what.index(this);\n\t\t\t\t\t}\n\n\t\t\t\t\toptions.index = idx;\n\n\t\t\t\t\t// Stop an event from bubbling if everything is fine\n\t\t\t\t\tif (F.open(what, options) !== false) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\toptions = options || {};\n\t\tindex   = options.index || 0;\n\n\t\tif (!selector || options.live === false) {\n\t\t\tthat.unbind('click.fb-start').bind('click.fb-start', run);\n\n\t\t} else {\n\t\t\tD.undelegate(selector, 'click.fb-start').delegate(selector + \":not('.fancybox-item, .fancybox-nav')\", 'click.fb-start', run);\n\t\t}\n\n\t\tthis.filter('[data-fancybox-start=1]').trigger('click');\n\n\t\treturn this;\n\t};\n\n\t// Tests that need a body at doc ready\n\tD.ready(function() {\n\t\tvar w1, w2;\n\n\t\tif ( $.scrollbarWidth === undefined ) {\n\t\t\t// http://benalman.com/projects/jquery-misc-plugins/#scrollbarwidth\n\t\t\t$.scrollbarWidth = function() {\n\t\t\t\tvar parent = $('<div style=\"width:50px;height:50px;overflow:auto\"><div/></div>').appendTo('body'),\n\t\t\t\t\tchild  = parent.children(),\n\t\t\t\t\twidth  = child.innerWidth() - child.height( 99 ).innerWidth();\n\n\t\t\t\tparent.remove();\n\n\t\t\t\treturn width;\n\t\t\t};\n\t\t}\n\n\t\tif ( $.support.fixedPosition === undefined ) {\n\t\t\t$.support.fixedPosition = (function() {\n\t\t\t\tvar elem  = $('<div style=\"position:fixed;top:20px;\"></div>').appendTo('body'),\n\t\t\t\t\tfixed = ( elem[0].offsetTop === 20 || elem[0].offsetTop === 15 );\n\n\t\t\t\telem.remove();\n\n\t\t\t\treturn fixed;\n\t\t\t}());\n\t\t}\n\n\t\t$.extend(F.defaults, {\n\t\t\tscrollbarWidth : $.scrollbarWidth(),\n\t\t\tfixed  : $.support.fixedPosition,\n\t\t\tparent : $('body')\n\t\t});\n\n\t\t//Get real width of page scroll-bar\n\t\tw1 = $(window).width();\n\n\t\tH.addClass('fancybox-lock-test');\n\n\t\tw2 = $(window).width();\n\n\t\tH.removeClass('fancybox-lock-test');\n\n\t\t$(\"<style type='text/css'>.fancybox-margin{margin-right:\" + (w2 - w1) + \"px;}</style>\").appendTo(\"head\");\n\t});\n\n}(window, document, jQuery));","const calculateScrollbarWidth = () => {\n  document.documentElement.style.setProperty('--scrollbar-width', (window.innerWidth - document.documentElement.clientWidth) + 'px');\n};\nwindow.addEventListener('resize', calculateScrollbarWidth);\ndocument.addEventListener('DOMContentLoaded', calculateScrollbarWidth);\nwindow.addEventListener('load', calculateScrollbarWidth);\n","let navButton = null;\nconst buttonActiveVariant = 'nav-button-open';\n\nlet mobileBreakpoint = window.matchMedia('(max-width: 968px)');\n\nconst swapAriaLabel = (button, key) => {\n  // const label = button.attr(key)\n\n  // if (label) {\n  //   button.attr('aria-label', label)\n  // }\n};\n\nconst onOpenNavigation = button => {\n  button.closest('.nav-button').addClass(buttonActiveVariant);\n\n  button.closest('.nav-buttons').find('a[role=\"button\"], button').not(button).attr('tabindex', -1);\n  button.attr('tabindex', 0);\n  swapAriaLabel(button, 'data-label-close');\n  let $lastActiveMenuItem = null;\n  if (mobileBreakpoint.matches) {\n    $lastActiveMenuItem = $('li.active > [role=menuitem]').first();\n  } else {\n    $lastActiveMenuItem = $('li.active > [role=menuitem]').last();\n  }\n  if ($lastActiveMenuItem.length === 0) {\n    $('#navPanel-navigation a:visible').first().focus();\n  } else {\n    $lastActiveMenuItem.focus();\n  }\n};\n\nconst onCloseNavigation = button => {\n  button.closest('.nav-button').removeClass(buttonActiveVariant);\n  button.closest('.nav-buttons').find('a[role=\"button\"], button').removeAttr('tabindex');\n  swapAriaLabel(button, 'data-label-open');\n};\n\nconst NavButton = ({buttonSelector, handleAttr}) => {\n  navButton = $(buttonSelector);\n\n  if (navButton.length === 0) {\n    return;\n  }\n\n  navButton.each((index, node) => {\n    const button = $(node);\n    const eventHandle = button.attr(handleAttr);\n\n    if (!eventHandle) {\n      return;\n    }\n\n    swapAriaLabel(button, 'data-label-open');\n\n    button.on('click', (e) => {\n      e.preventDefault();\n      $(document).trigger(`toggle-${eventHandle}`);\n    });\n    button.on('keydown', e => {\n      if (e.keyCode === 32 || e.keyCode === 38 || e.keyCode === 40) {\n        e.preventDefault();\n        e.stopPropagation();\n      }\n\n      if (e.keyCode === 32) {\n        $(document).trigger(`toggle-${eventHandle}`);\n      }\n\n      if (e.keyCode === 40) {\n        $(document).trigger(`toggle-open-${eventHandle}`);\n      } else if (e.keyCode === 38) {\n        $(document).trigger(`toggle-close-${eventHandle}`);\n      }\n\n      if (e.keyCode === 40) {\n        $('.nav-panel:visible a:first:visible').focus();\n      }\n    });\n    $(document).off(`open-${eventHandle}`);\n    $(document).off(`close-${eventHandle}`);\n    $(document).on(`open-${eventHandle}`, () => onOpenNavigation(button));\n    $(document).on(`close-${eventHandle}`, () => onCloseNavigation(button));\n  });\n};\n\nexport { NavButton };\nexport default NavButton;\n","class NavPanel {\n  constructor (element, handle) {\n    this.panel = element;\n    this.handle = handle;\n    this.isOpen = element.hasClass('is-open');\n    this.focusedElementBeforeOpen = null;\n    this.mainContent = $('main');\n    this.header = $('.site-header');\n    this.bodyContent = $('body');\n    this.footerContent = $('.footer');\n    this.footerLegalContent = $('.footer-legal');\n\n    this.lastScrollY = window.scrollY;\n    this.addListeners();\n  }\n\n  addListeners () {\n    this.panel.find('[data-close]').each((index, item) => {\n      item.addEventListener('click', this.close.bind(this));\n      item.addEventListener('keyup', e => e.keyCode === 32 && this.close());\n    });\n\n    // $(document).keyup(e => e.keyCode === 27 && this.close())\n    $(document).off(`toggle-${this.handle}`);\n    $(document).off(`toggle-open-${this.handle}`);\n    $(document).off(`toggle-close-${this.handle}`);\n    // $(document).off('close-overlays')\n    $(document).on(`toggle-${this.handle}`, this.toggle.bind(this));\n    $(document).on(`toggle-open-${this.handle}`, this.open.bind(this));\n    $(document).on(`toggle-close-${this.handle}`, this.close.bind(this));\n    $(document).on('close-overlays', (e, sourceNode) => {\n      if (!this.panel.get(0).isEqualNode(sourceNode) && this.isOpen) {\n        this.close();\n      }\n    });\n\n    $(document).on('click', (e) => {\n      if ($(e.target).closest('.nav-panel').length === 0 && $(e.target).closest('.banner').length === 0) {\n        this.close();\n      }\n    });\n\n    var that = this;\n    $(document).on('keydown', (e) => {\n      var keyCode = e.keyCode || e.which;\n\n      if (keyCode === 9 && that.isOpen) {\n        var selectableElements = that.panel.find('input,select,textarea,button,object,a[href]').filter(':not(:disabled)');\n        var lastElement = selectableElements.last();\n\n        if (!$.contains(that.panel[0], e.target) || lastElement[0] === e.target) {\n          selectableElements.first().focus();\n          e.preventDefault();\n        }\n      }\n    });\n\n    let scrollTimeout;\n    const siteHeader = document.querySelector('.site-header');\n\n    window.addEventListener('scroll', () => {\n      const direction = this.lastScrollY > window.scrollY ? 'up' : 'down';\n      const atTop = window.scrollY === 0;\n\n\n      if (atTop) {\n        siteHeader.classList.remove('site-header--scrolling');\n      } else {\n        siteHeader.classList.add('site-header--scrolling');\n        if (direction === 'down') {\n          siteHeader.classList.remove('site-header--fixed');\n        } else {\n          siteHeader.classList.add('site-header--fixed');\n        }\n      }\n\n      this.lastScrollY = window.scrollY;\n    });\n  }\n\n  toggle () {\n    if (this.isOpen) {\n      this.close();\n    } else {\n      this.open();\n    }\n  }\n\n  close () {\n    this.isOpen = false;\n    this.panel.removeClass('is-open');\n    this.panel.fadeOut(150);\n    this.panel.attr('aria-hidden', true);\n\n    this.bodyContent.removeClass('no-scroll');\n    this.header.removeClass('site-header--open');\n    this.mainContent.removeClass('nav-panel-overlay');\n    this.mainContent.attr('aria-hidden', false);\n    this.footerContent.attr('aria-hidden', false);\n    this.footerLegalContent.attr('aria-hidden', false);\n\n    if (this.panel.attr('id') === 'navPanel-navigation') {\n      this.mainContent.removeClass('nav-panel-overlay-full');\n    }\n\n    if (this.focusedElementBeforeOpen) {\n      this.focusedElementBeforeOpen.focus();\n      this.focusedElementBeforeOpen = null;\n    }\n\n    $(document).trigger(`close-${this.handle}`);\n  }\n\n  open () {\n    $(document).trigger('close-overlays', this.panel);\n\n    this.bodyContent.addClass('no-scroll');\n    this.header.addClass('site-header--open');\n    this.mainContent.attr('aria-hidden', true);\n    this.mainContent.addClass('nav-panel-overlay');\n    this.footerContent.attr('aria-hidden', true);\n    this.footerLegalContent.attr('aria-hidden', true);\n\n    this.isOpen = true;\n    this.panel.addClass('is-open');\n    this.panel.fadeIn(150);\n    this.panel.attr('aria-hidden', false);\n    this.focusedElementBeforeOpen = $(':focus');\n    this.panel.filter(':visible').focusWithoutScrolling();\n\n    if (this.panel.attr('id') === 'navPanel-navigation') {\n      this.mainContent.addClass('nav-panel-overlay-full');\n    }\n\n    $(document).trigger(`open-${this.handle}`);\n  }\n}\n\nexport {NavPanel};\nexport default NavPanel;\n","class LazyVideo {\n  constructor (element) {\n    this.isInitiated = false;\n    this.isPlaying = false;\n    this.isCreated = false;\n    this.youtubeContainer = $(element);\n    this.playerId = 'yt-player-' + this.youtubeContainer.parent().attr('data-content-uid');\n    this.playButton = this.youtubeContainer.find('.play-button');\n    this.customPoster = this.youtubeContainer.parent().find('.video-poster');\n    this.setupPrivacyChangeEvent();\n    this.initIfApproved();\n  }\n\n  setupPrivacyChangeEvent () {\n    const that = this;\n    this.youtubeContainer.on('privacychange', function () {\n      that.initIfApproved();\n    });\n  }\n\n  initIfApproved () {\n    if (this.isContentApproved() && !this.isInitiated) {\n      this.init();\n    } else {\n      this.setupCustomPosterHandlers();\n    }\n  }\n\n  isContentApproved () {\n    return this.youtubeContainer.attr('data-privacy-content-approved') === 'approved';\n  }\n\n  init () {\n    this.isInitiated = true;\n    this.youtubeId = $(this.youtubeContainer).attr('data-embed');\n    this.title = $(this.youtubeContainer).attr('data-title');\n    this.createIframe();\n    this.setupScript();\n    this.loadImage();\n    this.setupListener();\n    this.setupCustomPosterHandlers();\n  }\n\n  /**\n   * Tries to load the YouTube API script in case it was not before\n   */\n  setupScript () {\n    const scriptUrl = 'https://www.youtube.com/iframe_api';\n    let scriptElement = $(`script[src=\"${scriptUrl}\"]`);\n\n    if (scriptElement.length == 0) {\n      scriptElement = $('<script>', {\n        'src': scriptUrl,\n      }).insertBefore($('script').first());\n    }\n  }\n\n  /**\n   * Sets up listeners for automatic pausing of playback caused by certain events\n   */\n  setupListener () {\n    this.playButton.on('click keypress', (e) => {\n      e.preventDefault();\n      e.stopPropagation();\n\n      if (e.type === 'click' || (e.type === 'keypress' && (e.keyCode === 32 || e.keyCode === 13))) {\n        if (this.customPoster.length > 0 && this.customPoster.is(':visible')) {\n          this.customPoster.hide();\n        }\n        this.createVideo();\n      }\n    });\n    this.youtubeContainer.on('click keypress', (e) => {\n      e.preventDefault();\n      e.stopPropagation();\n\n      if (e.type === 'click' || (e.type === 'keypress' && (e.keyCode === 32 || e.keyCode === 13))) {\n        if (this.customPoster.length > 0 && this.customPoster.is(':visible')) {\n          this.customPoster.hide();\n        }\n        this.createVideo();\n      }\n    });\n\n    $('.nav-button').on('click', () => this.pauseVideo());\n    $('.accessibility-navigation').on('click', () => this.pauseVideo());\n    $('button').on('click', () => this.pauseVideo());\n    $('video').on('play', () => this.pauseVideo());\n    $('.vimeo-lazy').on('play', () => this.pauseVideo());\n    $('.youtube-lazy').not(this.youtubeContainer).on('play', () => this.pauseVideo());\n  }\n\n  /**\n   * Creates the IFrame element of the player without appending in to the document\n   */\n  createIframe () {\n    this.iframe = $('<iframe>', {\n      'frameborder': '0',\n      'allowfullscreen': '',\n      'class': 'embed-responsive-item',\n      'title': this.title,\n      'id': this.playerId,\n      'src': `https://www.youtube.com/embed/${this.youtubeId}?enablejsapi=1&version=3&playerapiid=ytplayer&autoplay=1`,\n    });\n  }\n\n  /**\n   * Create and append video container\n   */\n  createVideo () {\n    this.hidePlayButton();\n    this.isCreated = true;\n    this.youtubeContainer.innerHTML = '';\n    this.youtubeContainer.append(this.iframe);\n\n    // Hide custom poster when video starts playing\n    if (this.customPoster.length > 0) {\n      this.customPoster.hide();\n    }\n\n    if (!this.checkApi()) {\n      // keep checking until iframe_api finished loading\n      this.ytApiCheck = setInterval(() => {\n        if (this.checkApi()) {\n          clearInterval(this.ytApiCheck);\n        }\n      }, 100);\n    }\n\n    const container = this.youtubeContainer;\n    const thisFunction = this;\n    const videoPos = container.offset().top;\n\n    // stop playing on scrolling\n    $(window).on('scroll', function () {\n      var containerHeight = container.height();\n\n      if ($(this).scrollTop() >= (videoPos + containerHeight) || $(this).scrollTop() <= (videoPos + containerHeight)) {\n        thisFunction.pauseVideo();\n      }\n    });\n  }\n\n  /**\n   * Check if the YouTube API has loaded\n   */\n  checkApi () {\n    if (YT !== undefined) {\n      this.player = new YT.Player(this.playerId, {\n        events: {\n          'onReady': (event) => this.onPlayerReady(event),\n          'onStateChange': (event) => this.onStateChange(event),\n        }\n      });\n\n      return true;\n    }\n\n    return false;\n  }\n\n  /**\n   * Fired when a YouTube player loaded\n   */\n  onPlayerReady (event) {\n    // Trigger Matomo Media Analytics to track the video\n    var _paq = window._paq = window._paq || [];\n    _paq.push(['MediaAnalytics::scanForMedia']);\n\n    this.isPlaying = this.player.getPlayerState() != 2;\n    this.youtubeContainer.trigger(this.isPlaying ? 'play' : 'pause');\n  }\n\n  /**\n   * Fired when the state of a YouTube player changed\n   */\n  onStateChange (event) {\n    if (event.data == 1) { // playing\n      this.isPlaying = true;\n      this.youtubeContainer.trigger('play');\n    } else if (event.data == 2) {// paused\n      this.isPlaying = false;\n      this.youtubeContainer.trigger('pause');\n    }\n  }\n\n  /**\n   * Hides the play button in the player container\n   */\n  hidePlayButton () {\n    this.playButton.attr('aria-expanded', 'true');\n    this.playButton.css('z-index', '-1');\n  }\n\n  /**\n   * Pauses playback of the player\n   */\n  pauseVideo () {\n    if (this.isCreated) {\n      this.iframe[0].contentWindow.postMessage('{\"event\":\"command\",\"func\":\"pauseVideo\",\"args\":\"\"}', '*');\n    }\n  }\n\n  /**\n   * Starts playback of the player\n   */\n  playVideo () {\n    if (this.isCreated) {\n      this.iframe[0].contentWindow.postMessage('{\"event\":\"command\",\"func\":\"playVideo\",\"args\":\"\"}', '*');\n    }\n  }\n\n  /**\n   * Lazy Load Preview Thumbnails\n   */\n  loadImage () {\n    const customPoster = this.youtubeContainer.attr('data-poster');\n    this.youtubeContainer.attr('title', this.title);\n\n    if (customPoster) {\n        this.youtubeContainer.addClass('custom-poster-background');\n        this.youtubeContainer.css('background-image', `url(${customPoster})`);\n    } else {\n        const imageSource = `https://img.youtube.com/vi/${this.youtubeId}/hqdefault.jpg`;\n        const image = new Image();\n        image.src = imageSource;\n        image.setAttribute('alt', this.title);\n        image.addEventListener('load', () => {\n          this.youtubeContainer.append(image);\n        });\n    }\n  }\n\n  setupCustomPosterHandlers () {\n    if (!this.customPoster || this.customPoster.length === 0) return;\n\n    this.customPoster.show();\n\n    const playButton = this.customPoster.find('.play-button');\n    const container = this.customPoster;\n\n    playButton.off('click keypress');\n    container.off('click keypress click');\n\n    const handlePlay = () => {\n      this.customPoster.hide();\n      if (this.isContentApproved()) {\n        this.createVideo();\n      }\n    };\n\n    const isValidKey = (e) => e.keyCode === 32 || e.keyCode === 13;\n\n    playButton.on('click keypress', (e) => {\n      if (e.type === 'click' || (e.type === 'keypress' && isValidKey(e))) {\n        e.preventDefault();\n        e.stopPropagation();\n        handlePlay();\n      }\n    });\n\n    container.on('click', (e) => {\n      if (e.target === container[0] || e.target === this.customPoster.find('img')[0]) {\n        handlePlay();\n      }\n    });\n}\n\n}\n\nexport default LazyVideo;\n","class LazyVimeo {\n  constructor (element) {\n    this.isInitiated = false;\n    this.videoContainer = $(element);\n    this.playButton = this.videoContainer.find('.play-button');\n    this.setupPrivacyChangeEvent();\n    this.initIfApproved();\n  }\n\n  setupPrivacyChangeEvent () {\n    const that = this;\n    this.videoContainer.on('privacychange', () => {\n      that.initIfApproved();\n    });\n  }\n\n  initIfApproved () {\n    if (this.isContentApproved() && !this.isInitiated) {\n      this.init();\n    } else {\n      this.initCustomPoster();\n    }\n  }\n\n  isContentApproved () {\n    return this.videoContainer.attr('data-privacy-content-approved') === 'approved';\n  }\n\n  init () {\n    this.isInitiated = true;\n    this.videoId = $(this.videoContainer).attr('data-embed');\n    this.title = $(this.videoContainer).attr('data-title');\n    this.loadImage();\n    this.setupListener();\n    this.setupScript();\n  }\n\n  /**\n   * Tries to load the Vimeo API script in case it was not before\n   */\n  setupScript () {\n    const scriptUrl = 'https://player.vimeo.com/api/player.js';\n    let scriptElement = $(`script[src=\"${scriptUrl}\"]`);\n\n    if (scriptElement.length == 0) {\n      scriptElement = $('<script>', {\n        'src': scriptUrl,\n      }).insertBefore($('script').first());\n    }\n  }\n\n  /**\n   * Check if the Vimeo API has loaded and initiate a Player once it is\n   */\n  checkApi () {\n    if (Vimeo !== undefined) {\n      this.player = new Vimeo.Player(this.iframe);\n      this.player.on('play', () => {\n        this.videoContainer.trigger('play');\n      });\n      this.player.on('pause', () => {\n        this.videoContainer.trigger('pause');\n      });\n      this.player.on('ready', () => {\n        // Trigger Matomo Media Analytics to track the video\n        var _paq = window._paq = window._paq || [];\n        _paq.push(['MediaAnalytics::scanForMedia']);\n\n        this.videoContainer.trigger(this.videoContainer.getPaused() ? 'pause' : 'play');\n      });\n\n      return true;\n    }\n\n    return false;\n  }\n\n  /**\n   * Sets up listeners for automatic pausing of playback caused by certain events\n   */\n  setupListener () {\n    let func = (e) => {\n      e.preventDefault();\n      e.stopPropagation();\n      if (e.type === 'click' || (e.type === 'keypress' && (e.keyCode === 32 || e.keyCode === 13))) {\n        this.createVideo();\n      }\n    };\n\n    this.playButton.on('click keypress', (e) => func(e));\n    this.videoContainer.on('click keypress', (e) => func(e));\n  }\n\n  /**\n   * Creates the IFrame element of the player without appending in to the document\n   */\n  createIframe () {\n    this.iframe = $('<iframe>', {\n      'frameborder': '0',\n      'allowfullscreen': '',\n      'class': 'embed-responsive-item',\n      'title': this.title,\n      'src': `https://player.vimeo.com/video/${this.videoId}?api=1&autoplay=1`\n    });\n  }\n\n  /**\n   * Create and append video container\n   */\n  createVideo () {\n    this.hidePlayButton();\n    this.pauseVideo();\n    this.createIframe();\n    this.videoContainer.innerHTML = '';\n    this.videoContainer.append(this.iframe);\n\n    $('.nav-button').on('click', () => this.pauseVideo());\n    $('.accessibility-navigation').on('click', () => this.pauseVideo());\n    $('button').on('click', () => this.pauseVideo());\n    $('video').on('play', () => this.pauseVideo());\n    $('.youtube-lazy').on('play', () => this.pauseVideo());\n    $('.vimeo-lazy').not(this.videoContainer).on('play', () => this.pauseVideo());\n\n    if (!this.checkApi()) {\n      // keep checking until player API finished loading\n      this.vimeoApiCheck = setInterval(() => {\n        if (this.checkApi()) {\n          clearInterval(this.vimeoApiCheck);\n        }\n      }, 100);\n    }\n\n    const container = this.videoContainer;\n    const thisFunction = this;\n    const videoPos = this.videoContainer.offset().top;\n\n    // stop playing once the player fully scrolls out of view\n    $(window).on('scroll', () => {\n      let containerHeight = container.height();\n      let headerHeight = $('div.site-header').height();\n      let scrollTop = $(window).scrollTop() + headerHeight;\n      let scrollBottom = $(window).scrollTop() + $(window).height();\n\n      if (scrollTop >= (videoPos + containerHeight) || scrollBottom <= videoPos) {\n        thisFunction.pauseVideo();\n      }\n    });\n  }\n\n  hidePlayButton () {\n    this.playButton.attr('aria-expanded', 'true');\n    this.playButton.css('z-index', '-1');\n  }\n\n  pauseVideo () {\n    if (this.iframe) {\n      this.iframe[0].contentWindow.postMessage({'method': 'pause'}, '*');\n    }\n  }\n\n  /**\n   * Lazy Load Vimeo Preview Thumbnails\n   */\n  loadImage () {\n    var that = this;\n    let customPoster = this.videoContainer.attr('data-poster');\n\n    if (customPoster) {\n      const image = $('<img>', {\n        'src': customPoster,\n        'alt': that.title\n      });\n      image.on('load', () => {\n        that.videoContainer.append(image);\n      });\n    }\n    else {\n      $.getJSON(`https://vimeo.com/api/oembed.json?url=https%3A//vimeo.com/${this.videoId}&width=960`, (data) => {\n        const image = $('<img>', {\n          'src': data['thumbnail_url'],\n          'alt': that.title\n        });\n        image.on('load', () => {\n          that.videoContainer.append(image);\n        });\n      });\n    }\n  }\n\n  initCustomPoster() {\n    // Next element\n    const customPoster = this.videoContainer.parent().find('.video-poster');\n\n    if (customPoster) {\n      customPoster.on('click', () => {\n        customPoster.hide();\n      });\n    }\n  }\n}\n\nexport {LazyVimeo};\nexport default LazyVimeo;\n","class BackgroundVideo {\n  constructor (element, config) {\n    this.container = $(element);\n    this.navButton = $('header .nav-button');\n    this.video = this.container.find('[data-video]');\n    this.videoControl = this.container.find('[data-video-control]');\n    this.playing = false;\n    this.autoplay = window.matchMedia('(min-width: 968px)').matches;\n    this.autoplay_set = (this.container.find('[play]').length > 0 ? 'true' : 'false');\n    this.accessNav = $('.accessibility-navigation');\n    this.globalButton = $('button');\n    this.init();\n  }\n\n  init () {\n    this.accessibility();\n\n    if (this.videoControl) {\n      this.video.on('playing', () => {\n        this.playing = true;\n        this.updateButtonState();\n      });\n\n      this.video.on('pause', () => {\n        this.playing = false;\n        this.updateButtonState();\n      });\n\n      this.videoControl.on('click', (e) => {\n        this.onPressVideoControl(e);\n      });\n    }\n\n    $(this.navButton).on('click', () => {\n      this.pause();\n    });\n\n    $(this.accessNav).on('click', () => {\n      this.pause();\n    });\n\n    $(this.globalButton).on('click', () => {\n      if (!$(this).has('btn-video-control')) {\n        this.pause();\n      }\n    });\n    this.checkAutoplay();\n  }\n\n  checkAutoplay() {\n    const autoplayPromise = this.video.get(0).play();\n    if (autoplayPromise !== undefined) {\n      autoplayPromise.then(() => {\n        // Autoplay started\n        this.playing = true;\n        this.updateButtonState();\n      }).catch(() => {\n        // Autoplay prevented\n        this.playing = false;\n        this.updateButtonState();\n      });\n    }\n  }\n\n  onPressVideoControl (e) {\n    e.preventDefault();\n\n    if (this.playing) {\n      this.pause();\n    } else {\n      this.play();\n    }\n  }\n\n  play() {\n    const video = this.video.get(0);\n    video.play();\n  }\n\n  pause() {\n    const video = this.video.get(0);\n    video.pause();\n  }\n\n  updateButtonState() {\n    const videoControlIcon = this.videoControl.find('[data-video-icon]:first');\n    const videoControlLabel = this.videoControl.find('[data-video-label]:first');\n\n    if (this.playing) {\n      const iconName = videoControlIcon.attr('data-icon-playing');\n      const icon = videoControlIcon.find('svg').clone();\n      icon.find('use').attr('xlink:href', iconName);\n      videoControlIcon.empty().append(icon);\n      videoControlLabel.html(videoControlLabel.attr('data-label-playing'));\n    } else {\n      const iconName = videoControlIcon.attr('data-icon-pausing');\n      const icon = videoControlIcon.find('svg').clone();\n      icon.find('use').attr('xlink:href', iconName);\n      videoControlIcon.empty().append(icon);\n      videoControlLabel.html(videoControlLabel.attr('data-label-pausing'));\n    }\n  }\n\n  accessibility () {\n    if (window.matchMedia('(prefers-reduced-motion)').matches) {\n      this.video.removeAttr('autoplay');\n      this.pause();\n    } else if (!this.playing && this.autoplay && this.autoplay_set === 'true') {\n      this.play();\n    } else {\n      this.video.attr('preload', 'none');\n    }\n  }\n}\n\nexport { BackgroundVideo };\nexport default BackgroundVideo;\n","class GeneralVideo {\n  constructor (element, config) {\n    this.video = $(element);\n    this.init();\n  }\n\n  init () {\n    $('.nav-button').on('click', () => this.pauseVideo());\n    $('.accessibility-navigation').on('click', () => this.pauseVideo());\n    $('button').on('click', () => this.pauseVideo());\n    $('video').not(this.video).on('play', () => this.pauseVideo());\n    $('.youtube-lazy').on('play', () => this.pauseVideo());\n    $('.vimeo-lazy').on('play', () => this.pauseVideo());\n\n    const container = this.video;\n    const thisFunction = this;\n    const videoPos = container.offset().top;\n\n    // stop playing on scrolling\n    $(window).on('scroll', function () {\n      var containerHeight = container.height();\n\n      if ($(this).scrollTop() >= (videoPos + containerHeight) || $(this).scrollTop() <= (videoPos + containerHeight)) {\n        thisFunction.pauseVideo();\n      }\n    });\n  }\n\n  playVideo () {\n    const video = this.video.get(0);\n    video.play();\n  }\n\n  pauseVideo () {\n    const video = this.video.get(0);\n    video.pause();\n  }\n}\n\nexport default GeneralVideo;\n","const keys = {\n  enter: 13,\n  space: 32,\n  end: 35,\n  home: 36,\n  left: 37,\n  up: 38,\n  right: 39,\n  down: 40\n};\n\nclass Tabs {\n  constructor (element) {\n    this.container = $(element);\n    this.list = this.container.find('.tab-list');\n    this.buttons = this.container.find('.tab-button:not(.tab-button--standalone)');\n    this.buttons_standalone = this.container.find('.tab-button.tab-button--standalone');\n    this.panes = this.container.find('.tab-pane');\n    this.breakpoint = '(max-width: 767px)';\n    this.matchMedia = window.matchMedia(this.breakpoint);\n    this.mountAsCollapse = this.matchMedia.matches;\n    this.defaultTab = Number(this.container.attr('data-tabs-default'));\n\n    if (!Number.isInteger(this.defaultTab) || this.defaultTab >= this.buttons.length) {\n      this.defaultTab = undefined;\n    }\n\n    this.initListener();\n    this.init();\n  }\n\n  initListener () {\n    this.matchMedia.addListener(e => {\n      this.mountAsCollapse = e.matches;\n      this.init();\n    });\n\n    window.addEventListener('load', this.triggerHash.bind(this));\n    window.addEventListener('hashchange', this.triggerHash.bind(this));\n\n    this.buttons_standalone.on('click', (e) => {\n      this.toggle(e.currentTarget);\n    });\n\n    this.buttons.on('click', (e) => {\n      this.toggle(e.currentTarget);\n    });\n\n    this.buttons.on('keydown', (e) => {\n      switch (e.keyCode) {\n        case keys.right:\n          e.preventDefault();\n          this.onArrowPress('right', e.currentTarget);\n          break;\n        case keys.left:\n          e.preventDefault();\n          this.onArrowPress('left', e.currentTarget);\n          break;\n        case keys.up:\n          e.preventDefault();\n          this.onArrowPress('left', e.currentTarget);\n          break;\n        case keys.down:\n          e.preventDefault();\n          this.onArrowPress('right', e.currentTarget);\n          break;\n        case keys.home:\n          e.preventDefault();\n          this.focusButton(0);\n          break;\n        case keys.end:\n          e.preventDefault();\n          this.focusButton(this.buttons.length - 1);\n          break;\n        case keys.space:\n          e.preventDefault();\n          if (!this.mountAsCollapse) {\n            this.toggle(e.currentTarget);\n          }\n          break;\n        case keys.enter:\n          e.preventDefault();\n          if (!this.mountAsCollapse) {\n            this.toggle(e.currentTarget);\n          }\n          break;\n        default:\n          break;\n      }\n    });\n  }\n\n  triggerHash () {\n    const hash = window.location.hash;\n    if (hash) {\n      const targetContained = this.panes.find(hash);\n      let targetButton;\n\n      if (targetContained.length) {\n        const paneId = targetContained.closest('.tab-pane').attr('id');\n        targetButton = this.buttons.filter(`[data-owns=\"${paneId}\"]`);\n      }\n\n      if (targetButton && targetButton.length) {\n        targetButton.trigger('click');\n      }\n    }\n  }\n\n  /**\n   * Init either collapse or tab menu\n   * based on matching breakpoint\n   */\n  init () {\n    if (this.mountAsCollapse) {\n      this.initCollapse();\n      this.panes.attr('role', 'region');\n    } else {\n      this.initTabs();\n      this.panes.attr('role', 'tabPanel');\n    }\n  }\n\n  /**\n   * Init collapsible menu with\n   * special aria attributes and\n   * and close all active panes\n   */\n  initCollapse () {\n    this.container.css('paddingBottom', '');\n    this.buttons.removeAttr('tabindex');\n    this.list.attr('data-orientation', 'vertical');\n    this.panes.attr('hidden', true);\n    this.close(this.buttons, this.panes);\n  }\n\n  /**\n   * Init tab menu with aria attributes\n   * and a custom tabindex navigation\n   */\n  initTabs () {\n    this.panes.attr('hidden', true);\n    this.list.attr('data-orientation', 'horizontal');\n    this.buttons.attr('tabindex', -1);\n    this.close(this.buttons, this.panes);\n\n    if (this.defaultTab === undefined) {\n      this.toggle(this.buttons.first());\n    } else {\n      this.toggle(this.buttons[this.defaultTab]);\n    }\n  }\n\n  /**\n   * Toggles passed button and associated pane.\n   * Has different behaviour while in collapsible mode.\n   *\n   * @param {Node} buttonNode\n   */\n  toggle (buttonNode) {\n    const button = $(buttonNode);\n    const pane = $(`#${button.attr('data-owns')}`);\n    if (pane.length > 0 && button.parent().hasClass('active') && this.mountAsCollapse) {\n      this.close(button, pane);\n    } else if (pane.length > 0) {\n      if (!this.mountAsCollapse) {\n        this.close(this.buttons.not(button), this.panes.not(pane));\n      }\n      this.open(button, pane);\n    }\n  }\n\n  /**\n   * Works with single jQuery nodes and jQuery nodelists.\n   *\n   * @param {jQueryNode} button\n   * @param {jQueryNode} pane\n   */\n  open (button, pane) {\n    button.parent().addClass('active');\n    if (button.attr('aria-selected') !== undefined) {\n      button.attr('aria-selected', true);\n    }\n    if (button.attr('aria-expanded') !== undefined) {\n      button.attr('aria-expanded', true);\n    }\n    pane.addClass('active');\n    pane.removeAttr('hidden');\n\n    if (!this.mountAsCollapse) {\n      button.removeAttr('tabindex');\n    }\n  }\n\n  /**\n   * Works with single jQuery nodes and jQuery nodelists.\n   *\n   * @param {jQueryNode} button\n   * @param {jQueryNode} pane\n   */\n  close (button, pane) {\n    button.parent().removeClass('active');\n    if (button.attr('aria-selected') !== undefined) {\n      button.attr('aria-selected', false);\n    }\n    if (button.attr('aria-expanded') !== undefined) {\n      button.attr('aria-expanded', false);\n    }\n    pane.removeClass('active');\n    pane.attr('hidden', true);\n\n    if (!this.mountAsCollapse) {\n      button.attr('tabindex', -1);\n    }\n  }\n\n  /**\n   * Focus specific button\n   * @param {int} index\n   */\n  focusButton (index) {\n    const selectedButton = this.buttons.get(index);\n    if (selectedButton && index !== null) {\n      selectedButton.focus();\n    }\n  }\n\n  /**\n   * Handle arrow key navigation through\n   * tabs, based on aria-orientation\n   *\n   * @param {String} direction (up,down,right,left)\n   * @param {Node} buttonNode\n   */\n  onArrowPress (direction, buttonNode) {\n    const button = $(buttonNode);\n    const orientation = this.list.attr('data-orientation');\n    const buttonIndex = this.buttons.index(button);\n    let index = null;\n    if ((orientation === 'horizontal' && direction === 'right') || (orientation === 'vertical' && direction === 'right')) {\n      index = buttonIndex + 1;\n      if (index > (this.buttons.length - 1)) {\n        index = 0;\n      }\n    }\n\n    if ((orientation === 'horizontal' && direction === 'left') || (orientation === 'vertical' && direction === 'left')) {\n      index = buttonIndex - 1;\n      if (index < 0) {\n        index = (this.buttons.length - 1);\n      }\n    }\n    if (this.mountAsCollapse) {\n      // Circle through the second half of buttons (only visible below breakpoint)\n      index = (index % (this.buttons.length)) + this.buttons.length;\n    } else {\n      // Circle through the first half of buttons (only visible above breakpoint)\n      index = index % (this.buttons.length);\n    }\n\n    this.focusButton(index);\n  }\n}\n\nexport { Tabs };\nexport default Tabs;\n","// import $ from 'jquery';\n// import 'slick-carousel';\n\nconst defaultConfig = {\n  accessibility: true,\n  infinite: false,\n  swipeToSlide: true,\n  dots: false,\n  arrows: true,\n  variableWidth: true,\n  slidesToShow: 4,\n  slidesToScroll: 4,\n  // Custom\n  containerSelector: '.slider-container',\n  nextArrowSelector: '.carousel-control.right',\n  prevArrowSelector: '.carousel-control.left',\n  appendDotsSelector: '.carousel-control-wrap'\n};\n\nfunction setCarouselControlPosition (slick) {\n  let controlPos = slick.$slides.find('img').first().height();\n  slick.$slider.siblings('.carousel-control-wrap').css('top', controlPos);\n  slick.$slider.parent().siblings('.carousel-control-wrap').css('top', controlPos);\n}\n\nfunction setHiddenAttributeOnSlides (slick) {\n  $(slick).find('[aria-hidden=true]').attr('hidden', true);\n  $(slick).find('[aria-hidden=false]').removeAttr('hidden');\n}\n\nconst Slider = (selector, customConfig = {}) => {\n  const config = $.extend({}, defaultConfig, customConfig);\n\n  const element = $(selector);\n  const container = $(selector).find(config.containerSelector);\n  const useElements = container.find('use');\n  config.appendDots = $(selector).find(config.appendDotsSelector);\n\n  if (config.arrows) {\n    config.nextArrow = element.find(config.nextArrowSelector);\n    config.prevArrow = element.find(config.prevArrowSelector);\n  }\n\n  container.on('init', (event, slick) => {\n    useElements.each((index, item) => {\n      if (item.href && item.href.baseVal) {\n        item.href.baseVal = item.href.baseVal;\n      }\n    });\n    if (customConfig.centerArrows) {\n      setCarouselControlPosition(slick);\n\n      $(window).on('resize', function () {\n        // slick.$slider.slick('refresh')\n        setCarouselControlPosition(slick);\n      });\n    }\n  });\n\n  container.on('init', function (event, slick) {\n    // Initial text for arrow buttons\n    slick.$slides.addClass(container.attr('data-bg'));\n\n    // attributes for accessibility\n    slick.$slides.attr('aria-roledescription', 'Einzelne Ansicht');\n    slick.$slides.attr('role', 'group');\n    slick.$slideTrack.attr('role', 'group');\n    slick.$slideTrack.attr('aria-roledescription', 'Ringelspiel');\n\n    if (slick.$slides.last().find('.show-more-eventbox').length > 0) {\n      slick.$slides.last().removeClass(container.attr('data-bg')).addClass(container.attr('data-show-more-bg'));\n    }\n\n    slick.$nextArrow.find('.js-slideCount').text(slick.slideCount);\n    slick.$prevArrow.find('.js-slideCount').text(slick.slideCount);\n    let slidesShown = $(this).find('[aria-hidden=false]').length;\n    let currentSlide = slidesShown;\n    let prevSlide = null;\n    if (slick.options.infinite) {\n      prevSlide = slick.slideCount;\n    } else {\n      prevSlide = currentSlide;\n    }\n    let nextSlide = currentSlide + 1;\n    let prevTopic = $(slick.$slides[prevSlide - 1]).find('[data-topic]').text();\n    let nextTopic = $(slick.$slides[nextSlide - 1]).find('[data-topic]').text();\n    slick.$prevArrow.find('.js-slideBefore').text(prevSlide);\n    slick.$prevArrow.find('.js-slideTopic').text(prevTopic);\n    slick.$nextArrow.find('.js-slideNext').text(nextSlide);\n    slick.$nextArrow.find('.js-slideTopic').text(nextTopic);\n\n    setHiddenAttributeOnSlides(this);\n  });\n  container.slick(config);\n  container.on('afterChange', function (event, slick, currentSlide) {\n    slick.$slides.addClass(container.attr('data-bg'));\n    if (slick.$slides.last().find('.show-more-eventbox').length > 0) {\n      slick.$slides.last().removeClass(container.attr('data-bg')).addClass(container.attr('data-show-more-bg'));\n    }\n\n    setHiddenAttributeOnSlides(this);\n\n    let slidesShown = $(this).find('[aria-hidden=false]').length;\n    if (currentSlide === undefined) {\n      currentSlide = slidesShown;\n    }\n    // Prev Arrow\n    if (slick.options.infinite || currentSlide > 0) {\n      let prevSlide = currentSlide + slidesShown - 1;\n      if (slick.options.infinite) {\n        // Loop indexes\n        if (prevSlide === 0) {\n          prevSlide += slick.slideCount;\n        }\n      }\n      // The setTimeout is used to make sure the screen reader does not read the text changed in the focus button\n      // if the focus is shifted by slick to the slide anyways (slick.options.focusOnChange).\n      setTimeout(function () {\n        let prevTopic = $(slick.$slides[prevSlide - 1]).find('[data-topic]').text();\n        slick.$prevArrow.find('.js-slideBefore').text(prevSlide);\n        slick.$prevArrow.find('.js-slideTopic').text(prevTopic);\n        // If there is no focusOnChange set for slick read the changed text in the focused button\n        if (slick.$prevArrow.is(':focus') && !slick.options.focusOnChange) {\n          slick.$prevArrow.attr('aria-live', 'polite');\n        }\n        slick.$prevArrow.html(slick.$prevArrow.html());\n        if (slick.$prevArrow.is(':focus') && !slick.options.focusOnChange) {\n          slick.$prevArrow.attr('aria-live', 'off');\n        }\n      });\n    }\n    // Next Arrow\n    let nextSlide = null;\n    if (slick.options.infinite || (currentSlide + slidesShown + 1 <= slick.slideCount)) {\n      nextSlide = currentSlide + slidesShown + 1;\n      if (slick.options.infinite) {\n        // Loop indexes\n        if (nextSlide === slick.slideCount + 1) {\n          nextSlide = 1;\n        }\n      }\n      setTimeout(function () {\n        let nextTopic = $(slick.$slides[nextSlide - 1]).find('[data-topic]').text();\n        slick.$nextArrow.find('.js-slideNext').text(nextSlide);\n        slick.$nextArrow.find('.js-slideTopic').text(nextTopic);\n        if (slick.$nextArrow.is(':focus') && !slick.options.focusOnChange) {\n          slick.$nextArrow.attr('aria-live', 'polite');\n        }\n        slick.$nextArrow.html(slick.$nextArrow.html());\n        if (slick.$nextArrow.is(':focus') && !slick.options.focusOnChange) {\n          slick.$nextArrow.attr('aria-live', 'off');\n        }\n      }, 0);\n    }\n  });\n};\n\nexport { Slider };\n","export const config = {\n  infinite: false,\n  slidesToShow: 4,\n  slidesToScroll: 1,\n  variableWidth: true,\n  // focusOnChange: true,\n  accessibility: true,\n  responsive: [\n    {\n      breakpoint: 1440,\n      settings: {\n        slidesToShow: 2\n      }\n    },\n    {\n      breakpoint: 968,\n      settings: {\n        slidesToShow: 2\n      }\n    },\n    {\n      breakpoint: 768,\n      settings: {\n        slidesToShow: 1,\n        centerMode: false,\n        dots: true\n      }\n    },\n    {\n      breakpoint: 400,\n      settings: {\n        slidesToShow: 1,\n        variableWidth: false,\n        dots: true\n      }\n    }\n  ]\n};\n","const config = {\n  infinite: true,\n  slidesToShow: 1,\n  slidesToScroll: 1,\n  variableWidth: false,\n  focusOnChange: true,\n  accessibility: true,\n  centerArrows: true,\n  responsive: [\n    {\n      breakpoint: 768,\n      settings: {\n        dots: true\n      }\n    }\n  ]\n};\n\nexport { config };\n","/*! jQuery.Flipster, v1.1.5 (built 2020-10-17) */\n\n!function(P,t,D){\"use strict\";function L(n,i){var a=null;return function(){var t=this,e=arguments;null===a&&(a=setTimeout(function(){n.apply(t,e),a=null},i))}}var r,e=(r={},function(t){if(r[t]!==D)return r[t];var e=document.createElement(\"div\").style,n=t.charAt(0).toUpperCase()+t.slice(1),i=(t+\" \"+[\"webkit\",\"moz\",\"ms\",\"o\"].join(n+\" \")+n).split(\" \");for(var a in i)if(i[a]in e)return r[t]=i[a];return r[t]=!1}),a=\"http://www.w3.org/2000/svg\",E=P(t),M=e(\"transform\"),i={itemContainer:\"ul\",itemSelector:\"li\",start:\"center\",fadeIn:400,loop:!1,autoplay:!1,pauseOnHover:!0,style:\"coverflow\",spacing:-.6,click:!0,keyboard:!0,scrollwheel:!0,touch:!0,nav:!1,buttons:!1,buttonPrev:\"Previous\",buttonNext:\"Next\",onItemSwitch:!1},T={main:\"flipster\",active:\"flipster--active\",container:\"flipster__container\",nav:\"flipster__nav\",navChild:\"flipster__nav__child\",navItem:\"flipster__nav__item\",navLink:\"flipster__nav__link\",navCurrent:\"flipster__nav__item--current\",navCategory:\"flipster__nav__item--category\",navCategoryLink:\"flipster__nav__link--category\",button:\"flipster__button\",buttonPrev:\"flipster__button--prev\",buttonNext:\"flipster__button--next\",item:\"flipster__item\",itemCurrent:\"flipster__item--current\",itemPast:\"flipster__item--past\",itemFuture:\"flipster__item--future\",itemContent:\"flipster__item__content\"},X=new RegExp(\"\\\\b(\"+T.itemCurrent+\"|\"+T.itemPast+\"|\"+T.itemFuture+\")(.*?)(\\\\s|$)\",\"g\"),j=new RegExp(\"\\\\s\\\\s+\",\"g\");P.fn.flipster=function(e){if(\"string\"==typeof e){var n=Array.prototype.slice.call(arguments,1);return this.each(function(){var t=P(this).data(\"methods\");return t[e]?t[e].apply(this,n):this})}var I=P.extend({},i,e);return this.each(function(){var t,f,r,n,p,s,l,c,u,v=P(this),o=[],h=0,d=!1,e=!1;function i(e){return e=e||\"next\",P('<button class=\"'+T.button+\" \"+(\"next\"===e?T.buttonNext:T.buttonPrev)+'\" role=\"button\" />').html((n=\"next\"===(t=e)?I.buttonNext:I.buttonPrev,\"custom\"===I.buttons?n:'<svg viewBox=\"0 0 13 20\" xmlns=\"'+a+'\" aria-labelledby=\"title\"><title>'+n+'</title><polyline points=\"10,3 3,10 10,17\"'+(\"next\"===t?' transform=\"rotate(180 6.5,10)\"':\"\")+\"/></svg>\")).on(\"click\",function(t){y(e),t.preventDefault()});var t,n}function m(){v.css(\"transition\",\"\"),f.css(\"transition\",\"\"),p.css(\"transition\",\"\")}function g(a){var t,e;a&&(v.css(\"transition\",\"none\"),f.css(\"transition\",\"none\"),p.css(\"transition\",\"none\")),r=f.width(),f.height((e=0,p.each(function(){t=P(this).height(),e<t&&(e=t)}),e)),r?(n&&(clearInterval(n),n=!1),p.each(function(t){var e,n,i=P(this);i.attr(\"class\",function(t,e){return e&&e.replace(X,\"\").replace(j,\" \")}),e=i.outerWidth(),0!==I.spacing&&i.css(\"margin-right\",e*I.spacing+\"px\"),n=i.position().left,o[t]=-1*(n+e/2-r/2),t===p.length-1&&(_(),a&&setTimeout(m,1))})):n=n||setInterval(function(){g(a)},500)}function _(){var e,n,i,a=p.length;p.each(function(t){e=P(this),n=\" \",i=t===h?(n+=T.itemCurrent,a+1):t<h?(n+=T.itemPast+\" \"+T.itemPast+\"-\"+(h-t),a-(h-t)):(n+=T.itemFuture+\" \"+T.itemFuture+\"-\"+(t-h),a-(t-h)),e.css(\"z-index\",i).attr(\"class\",function(t,e){return e&&e.replace(X,\"\").replace(j,\" \")+n})}),0<=h&&(r&&o[h]!==D||g(!0),M?f.css(\"transform\",\"translateX(\"+o[h]+\"px)\"):f.css({left:o[h]+\"px\"})),function(){if(I.nav){var t=s.data(\"flip-category\");c.removeClass(T.navCurrent),u.filter(function(){return P(this).data(\"index\")===h||t&&P(this).data(\"category\")===t}).parent().addClass(T.navCurrent)}}()}function y(t){var e=h;if(!(p.length<=1))return\"prev\"===t?0<h?h--:I.loop&&(h=p.length-1):\"next\"===t?h<p.length-1?h++:I.loop&&(h=0):\"number\"==typeof t?h=t:t!==D&&(h=p.index(t),I.loop&&e!=h&&(e==p.length-1&&h!=p.length-2&&(h=0),0==e&&1!=h&&(h=p.length-1))),s=p.eq(h),h!==e&&I.onItemSwitch&&I.onItemSwitch.call(v,p[h],p[e]),_(),v}function b(t){return I.autoplay=t||I.autoplay,clearInterval(d),d=setInterval(function(){var t=h;y(\"next\"),t!==h||I.loop||clearInterval(d)},I.autoplay),v}function x(){return clearInterval(d),d=0,v}function w(t){return x(),I.autoplay&&t&&(d=-1),v}function C(){g(!0),v.hide().css(\"visibility\",\"\").addClass(T.active).fadeIn(I.fadeIn)}function k(){var o;if(f=v.find(I.itemContainer).addClass(T.container),!((p=f.find(I.itemSelector)).length<=1))return p.addClass(T.item).each(function(){var t=P(this);t.children(\".\"+T.itemContent).length||t.wrapInner('<div class=\"'+T.itemContent+'\" />')}),I.click&&p.on(\"click.flipster touchend.flipster\",function(t){e||(P(this).hasClass(T.itemCurrent)||t.preventDefault(),y(this))}),I.buttons&&1<p.length&&(v.find(\".\"+T.button).remove(),v.append(i(\"prev\"),i(\"next\"))),o={},!I.nav||p.length<=1||(l&&l.remove(),l=P('<ul class=\"'+T.nav+'\" role=\"navigation\" />'),u=P(\"\"),p.each(function(t){var e=P(this),n=e.data(\"flip-category\"),i=e.data(\"flip-title\")||e.attr(\"title\")||t,a=P('<a href=\"#\" class=\"'+T.navLink+'\">'+i+\"</a>\").data(\"index\",t);if(u=u.add(a),n){if(!o[n]){var r=P('<li class=\"'+T.navItem+\" \"+T.navCategory+'\">'),s=P('<a href=\"#\" class=\"'+T.navLink+\" \"+T.navCategoryLink+'\" data-flip-category=\"'+n+'\">'+n+\"</a>\").data(\"category\",n).data(\"index\",t);o[n]=P('<ul class=\"'+T.navChild+'\" />'),u=u.add(s),r.append(s,o[n]).appendTo(l)}o[n].append(a)}else l.append(a);a.wrap('<li class=\"'+T.navItem+'\">')}),l.on(\"click\",\"a\",function(t){var e=P(this).data(\"index\");0<=e&&(y(e),t.preventDefault())}),\"after\"===I.nav?v.append(l):v.prepend(l),c=l.find(\".\"+T.navItem)),0<=h&&y(h),v}t={jump:y,next:function(){return y(\"next\")},prev:function(){return y(\"prev\")},play:b,stop:x,pause:w,index:k},v.data(\"methods\",t),v.hasClass(T.active)||function(){var t;if(v.css(\"visibility\",\"hidden\"),k(),p.length<=1)v.css(\"visibility\",\"\");else{t=!!I.style&&\"flipster--\"+I.style.split(\" \").join(\" flipster--\"),v.addClass([T.main,M?\"flipster--transform\":\" flipster--no-transform\",t,I.click?\"flipster--click\":\"\"].join(\" \")),I.start&&(h=\"center\"===I.start?Math.floor(p.length/2):I.start),y(h);var e,n,i,a,r,s,o,l,c=v.find(\"img\");if(c.length){var u=0;c.on(\"load\",function(){++u>=c.length&&C()}),setTimeout(C,750)}else C();E.on(\"resize.flipster\",L(g,400)),I.autoplay&&b(),I.pauseOnHover&&f.on(\"mouseenter.flipster\",function(){d?w(!0):x()}).on(\"mouseleave.flipster\",function(){-1===d&&b()}),e=v,I.keyboard&&(e[0].tabIndex=0,e.on(\"keydown.flipster\",L(function(t){var e=t.which;37!==e&&39!==e||(y(37===e?\"prev\":\"next\"),t.preventDefault())},250))),function(t){if(I.scrollwheel){var e,n,i=!1,a=0,r=0,s=0,o=/mozilla/.test(navigator.userAgent.toLowerCase())&&!/webkit/.test(navigator.userAgent.toLowerCase());t.on(\"mousewheel.flipster wheel.flipster\",function(){i=!0}).on(\"mousewheel.flipster wheel.flipster\",L(function(t){clearTimeout(r),r=setTimeout(function(){s=a=0},300),t=t.originalEvent,s+=t.wheelDelta||-1*(t.deltaY+t.deltaX),Math.abs(s)<25&&!o||(a++,n!==(e=0<s?\"prev\":\"next\")&&(a=0),n=e,(a<6||a%3==0)&&y(e),s=0)},50)),t.on(\"mousewheel.flipster wheel.flipster\",function(t){i&&(t.preventDefault(),i=!1)})}}(f),n=f,I.touch&&n.on({\"touchstart.flipster\":function(t){t=t.originalEvent,i=t.touches?t.touches[0].clientX:t.clientX,a=t.touches?t.touches[0].clientY:t.clientY},\"touchmove.flipster\":function(t){t=t.originalEvent,r=t.touches?t.touches[0].clientX:t.clientX,s=t.touches?t.touches[0].clientY:t.clientY,l=r-i,o=s-a,30<Math.abs(l)&&Math.abs(o)<100&&t.preventDefault()},\"touchend.flipster touchcancel.flipster \":function(){l=r-i,o=s-a,30<Math.abs(l)&&Math.abs(o)<100&&y(0<l?\"prev\":\"next\")}})}}()})}}(jQuery,window);","import $ from 'jquery';\nimport 'jquery.flipster';\n\nconst defaultConfig = {\n  itemContainer: '.slider-container',\n  itemSelector: '.slide',\n  style: 'carousel',\n  touch: true,\n  keyboard: true,\n  loop: true,\n  spacing: -0.3,\n  scrollwheel: false,\n\n  nav: 'after',\n  buttons: false\n\n  // fadeIn: 400,\n  // loop: false,\n  // autoplay: false,\n  // pauseOnHover: true,\n  // click: true,\n  // scrollwheel: false,\n};\n\nconst Flipster = (selector, customConfig = {}) => {\n  const config = $.extend({}, defaultConfig, customConfig);\n\n  const element = $(selector);\n  const controlPrev = $(selector).find('.carousel-control.left');\n  const controlNext = $(selector).find('.carousel-control.right');\n  const container = element.find(config.itemContainer);\n\n  config.itemContainer = container;\n  element.flipster(config);\n\n  if (controlPrev) {\n    controlPrev.on('click', (e) => {\n      e.preventDefault();\n      element.flipster('prev');\n    });\n  }\n\n  if (controlNext) {\n    controlNext.on('click', (e) => {\n      e.preventDefault();\n      element.flipster('next');\n    });\n  }\n};\n\nexport { Flipster };\n","const initAnisMap = (element) => {\n  const anisMapInstance = Object.assign({}, AnisMap);\n  anisMapInstance.config = {\n    useInstances: true,\n    scriptid: element.id,\n    iconurl: element.dataset.iconurl,\n    mapparamsurl: element.dataset.mapparamsurl,\n    geojsonurl: element.dataset.geojsonurl,\n    wosearchurl: element.dataset.wosearchurl,\n    mapgeojsonurl: element.dataset.mapgeojsonurl,\n    ignoreTitle: true,\n    mapid: element.id,\n    searchids: element.dataset.searchids,\n  };\n  AnisMapInstances[anisMapInstance.config.scriptid] = anisMapInstance;\n  anisMapInstance.initById(element.dataset.mapid);\n\n  initLegend(element, anisMapInstance);\n  initClearSearch(element.parentElement, anisMapInstance);\n}\n\nconst initLegend = (element, instance) => {\n  const legend = element.parentElement.querySelector('.map_legend');\n\n  if (!legend) {\n    return;\n  }\n\n  legend.innerHTML = '';\n\n  const fetchUrl = element.dataset.mapparamsurl + element.dataset.mapid;\n\n  fetch(fetchUrl).then(response => response.json()).then((response) => {\n\n    response.layers.forEach((layer) => {\n      let legenddiv = document.createElement('div');\n      let svg = document.createElement('img');\n      let titlediv = document.createElement('div');\n      const pinId = 'pin_' + element.id;\n\n      svg.setAttribute('id', pinId);\n      svg.setAttribute('src', element.dataset.svgurl + '?id=' + layer.id + '&mapid=' + element.dataset.mapid);\n      svg.style.scale = '0.7';\n\n      titlediv.append(layer.title);\n\n      legenddiv.style.display = 'flex';\n      legenddiv.style.alignItems = \"center\";\n\n      legenddiv.appendChild(svg);\n      legenddiv.append(titlediv);\n\n      legend.appendChild(legenddiv);\n    });\n\n  });\n}\n\nconst initClearSearch = (element, instance) => {\n  document.addEventListener(\"DOMContentLoaded\", function() {\n    const clearButton = element.querySelector(\"[data-part='clear-search']\");\n    const searchInput = element.querySelector(\"input[name^='cps_search_']\");\n    const mapContainer = element.querySelector(\"[id^='map_']\");\n\n    if (clearButton && searchInput && mapContainer) {\n      clearButton.addEventListener(\"click\", function(event) {\n        event.preventDefault();\n        searchInput.value = \"\";\n        window.history.pushState({}, document.title, window.location.pathname);\n        mapContainer.innerHTML = \"\";\n        location.reload();\n      });\n    }\n  });\n}\n\nexport {\n  initAnisMap,\n}\n","const config = {\n};\n\nexport { config };\n","/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction decode (s) {\n\t\treturn s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api() {}\n\n\t\tfunction set (key, value, attributes) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tattributes = extend({\n\t\t\t\tpath: '/'\n\t\t\t}, api.defaults, attributes);\n\n\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\tattributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n\t\t\t}\n\n\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\ttry {\n\t\t\t\tvar result = JSON.stringify(value);\n\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\tvalue = result;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tvalue = converter.write ?\n\t\t\t\tconverter.write(value, key) :\n\t\t\t\tencodeURIComponent(String(value))\n\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n\t\t\tkey = encodeURIComponent(String(key))\n\t\t\t\t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n\t\t\t\t.replace(/[\\(\\)]/g, escape);\n\n\t\t\tvar stringifiedAttributes = '';\n\t\t\tfor (var attributeName in attributes) {\n\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Considers RFC 6265 section 5.2:\n\t\t\t\t// ...\n\t\t\t\t// 3.  If the remaining unparsed-attributes contains a %x3B (\";\")\n\t\t\t\t//     character:\n\t\t\t\t// Consume the characters of the unparsed-attributes up to,\n\t\t\t\t// not including, the first %x3B (\";\") character.\n\t\t\t\t// ...\n\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n\t\t\t}\n\n\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t}\n\n\t\tfunction get (key, json) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar jar = {};\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all.\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = decode(parts[0]);\n\t\t\t\t\tcookie = (converter.read || converter)(cookie, name) ||\n\t\t\t\t\t\tdecode(cookie);\n\n\t\t\t\t\tif (json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tjar[name] = cookie;\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn key ? jar[key] : jar;\n\t\t}\n\n\t\tapi.set = set;\n\t\tapi.get = function (key) {\n\t\t\treturn get(key, false /* read as raw */);\n\t\t};\n\t\tapi.getJSON = function (key) {\n\t\t\treturn get(key, true /* read as json */);\n\t\t};\n\t\tapi.remove = function (key, attributes) {\n\t\t\tset(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.defaults = {};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n","import $ from 'jquery';\nimport Cookies from 'js-cookie';\n\nexport const ContrastMode = (selector) => {\n  addListeners(selector);\n};\n\nexport const addListeners = selector => {\n  selector.each((index, node) => {\n    node.addEventListener('click', switchMode);\n  });\n};\n\nexport const switchMode = e => {\n  const styleNode = $('[data-stylesheet]');\n  const styleNodeCustom = $('[data-stylesheet-custom]');\n  const styleNodeDsg = $('[data-stylesheet-dsg]');\n  const styleSources = document.styleSources;\n  const styleSourcesCustom = document.styleSourcesCustom;\n  const styleSourcesDsg = document.styleSourcesDsg;\n\n  if (typeof e.target !== 'undefined' && typeof e.target.value !== 'undefined') {\n    Cookies.set('lwl-contrast-mode', e.target.value, { expires: 7 });\n    if (styleNode.length > 0 && styleSources.contrast && styleSources.main) {\n      let styleSrc = styleSources.main;\n\n      if (e.target.value === 'true') {\n        styleSrc = styleSources.contrast;\n      }\n      styleNode.attr('href', styleSrc);\n    }\n    if (styleNodeCustom && styleNodeCustom.length > 0 && styleSourcesCustom.contrast && styleSourcesCustom.main) {\n      let styleSrcCustom = styleSourcesCustom.main;\n\n      if (e.target.value === 'true') {\n        styleSrcCustom = styleSourcesCustom.contrast;\n      }\n      styleNodeCustom.attr('href', styleSrcCustom);\n    }\n    if (styleNodeDsg && styleNodeDsg.length > 0 && styleSourcesDsg.main) {\n      let styleSrcDsg = styleSourcesDsg.main;\n\n      if (e.target.value === 'true') {\n        styleSrcDsg='';\n      }\n      styleNodeDsg.attr('href', styleSrcDsg);\n    }\n  }\n};\n\nexport default ContrastMode;\n","import $ from 'jquery';\nimport Cookies from 'js-cookie';\n\nexport const FontSettings = (selector) => {\n  addListeners(selector);\n};\n\nexport const addListeners = selector => {\n  selector.each((index, node) => {\n    node.addEventListener('click', switchMode);\n  });\n};\n\nexport const switchMode = e => {\n  if (typeof e.target !== 'undefined' && typeof e.target.value !== 'undefined') {\n    Cookies.set('lwl-font-settings', e.target.value, { expires: 7 });\n    if (e.target.value === 'true') {\n      $('html').addClass('font-size-1');\n    } else {\n      $('html').removeClass('font-size-1');\n    }\n  }\n};\n\nexport default FontSettings;\n","import $ from 'jquery';\n\nfunction scrollTop () {\n  return document.documentElement.scrollTop || document.body.scrollTop;\n}\n\n/**\n * SmoothScrolling Script\n * @param {jQuery node} target target element selector\n * @param {Number} duration animation duration\n */\nconst SmoothScroll = (duration = 1500) => {\n  // Get banner height to substract it from the scrollTop.\n\n  $('.scrollindicator').click((e) => {\n    e.preventDefault();\n    $('html, body').animate({\n      scrollTop: $(window).height() / 2\n    }, duration);\n  });\n};\n\n/**\n * @param {jQueryNode} target\n * @param {Number} offset\n */\nconst HideAfterScroll = (target, offset = 200) => {\n  const disabledClass = 'is-hidden';\n  const scrollHandling = {\n    allow: true,\n    reallow: () => {\n      scrollHandling.allow = true;\n    },\n    delay: 50\n  };\n\n  if (scrollTop() >= offset) {\n    target.addClass(disabledClass);\n    target.attr('aria-hidden', true);\n  } else {\n    target.show(0);\n\n    const handler = () => {\n      if (scrollHandling.allow) {\n        if (scrollTop() >= offset) {\n          target.addClass(disabledClass);\n          target.attr('aria-hidden', true);\n          $(window).off('scroll', handler);\n        }\n\n        scrollHandling.allow = false;\n        setTimeout(scrollHandling.reallow, scrollHandling.delay);\n      }\n    };\n\n    $(window).on('scroll', false, handler);\n  }\n};\n\nexport {\n  SmoothScroll,\n  HideAfterScroll\n};\n","const Banner = (banner = $('.banner'), threshold = 100) => {\n  const navPanels = $('.nav-panel');\n  $(document).on('scroll', () => {\n    if ($(document).scrollTop() > threshold) {\n      if($(document.body).hasClass('body--show-stories'))\n        return;\n      banner.addClass('small');\n      navPanels.each((index, panel) => {\n        $(panel).addClass('small');\n      });\n    } else {\n      banner.removeClass('small');\n      navPanels.each((index, panel) => {\n        $(panel).removeClass('small');\n      });\n    }\n  });\n};\n\nexport { Banner };\n","import $ from 'jquery';\n\nclass Gallery {\n  constructor (selector) {\n    this.container = $(selector);\n    this.settings = this.container.data();\n    this.pagination = this.container.find('.js-gallery-navigation');\n    this.slides = this.container.find('.gallery-item');\n    this.showAll = this.container.find('.gallery-all');\n    this.allState = false;\n    this.loadingSpinner = this.container.find('.gallery-loading-container');\n    this.currentIndex = 0;\n    this.templates = {\n      anchor: '<a role=\"button\" aria-label=\"Aktuelle Position\" href=\"#\" data-index=\"{index}\">{text}</a>',\n      active: '<span class=\"active\">{text}</span>',\n      next: '<a role=\"button\" href=\"#next\" aria-label=\"Nächste\" data-index=\"next\"><svg class=\"icon\" focusable=\"false\"><use xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#icon-arrow-right\"></use></svg></a>',\n      back: '<a role=\"button\" aria-label=\"Zurück\" href=\"#back\" data-index=\"back\"><svg class=\"icon\" focusable=\"false\"><use xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#icon-arrow-left\"></use></svg></a>'\n    };\n    this.settings.pagebound = Math.ceil(this.slides.length / this.settings.bound);\n\n    this._setup();\n    this._events(this.settings.pagebound, this.settings.bound);\n    this._resize();\n  }\n\n  _resize () {\n    var thisFunction = this;\n    var newPageBound = this.settings.pagebound;\n    var bound = this.settings.bound;\n    window.addEventListener('resize', function () {\n      if (thisFunction.allState) {\n        this.showAll.click();\n      } else {\n        if (window.innerWidth <= 768) {\n          if (window.innerWidth <= 480) {\n            bound = 6;\n          } else if (window.innerWidth <= 768) {\n            bound = 8;\n          }\n          newPageBound = Math.ceil(thisFunction.slides.length / bound);\n          if (newPageBound > 1) {\n            thisFunction.loadPage(newPageBound, bound);\n            thisFunction._events(newPageBound, bound);\n          }\n        } else {\n          thisFunction.currentIndex = 0;\n          thisFunction.setIndex($(thisFunction).data());\n          thisFunction.loadPage(thisFunction.settings.pagebound, thisFunction.settings.bound);\n          thisFunction._events(thisFunction.settings.pagebound, thisFunction.settings.bound);\n        }\n      }\n    }, true);\n  }\n\n  _setup () {\n    var bound = 0;\n    if (window.innerWidth <= 768) {\n      if (window.innerWidth <= 480) {\n        bound = 6;\n      } else if (window.innerWidth <= 768) {\n        bound = 8;\n      }\n      var newPageBound = Math.ceil(this.slides.length / bound);\n      if (newPageBound > 1) {\n        this.loadPage(newPageBound, bound);\n        this._events(newPageBound, bound);\n      }\n    } else if (this.settings.pagebound > 1) {\n      this.loadPage(this.settings.pagebound, this.settings.bound);\n    }\n  }\n\n  _events (newPageBound, bound) {\n    var that = this;\n\n    this.pagination.on('click', 'a', function (e) {\n      e.preventDefault();\n      that.setIndex($(this).data());\n      that.loadPage(newPageBound, bound);\n    });\n    this.showAll.on('click', function (e) {\n      e.preventDefault();\n      var thatInner = that;\n      that.currentIndex = 0;\n      that.setIndex($(this).data());\n      that.showAll.css('display', 'none');\n      that.allState = true;\n      that.pagination.html('');\n      that.loadingSpinner.css('display', 'inline-block');\n      setTimeout(function () {\n        if (window.innerWidth <= 480) {\n          thatInner.loadPage(0, 30);\n        } else {\n          thatInner.loadPage(0, 12);\n        }\n      }, 1500);\n    });\n  }\n\n  setIndex (data) {\n    if (data.index === 'next' && this.currentIndex < this.settings.pagebound - 1) {\n      this.currentIndex = this.currentIndex + 1;\n    }\n    if (data.index === 'back' && this.currentIndex > 0) {\n      this.currentIndex = this.currentIndex - 1;\n    }\n    if (typeof data.index === 'number') {\n      this.currentIndex = data.index;\n    }\n  }\n\n  loadPage (newPageBound, bound) {\n    var template = '';\n    var index = this.currentIndex;\n\n    this.showAll.css('display', 'none');\n\n    // show back\n    if (index > 0) {\n      template += this.templates.back;\n    }\n    // generate the initial navigation\n    for (var i = 0; i < newPageBound; i++) {\n      if (i === index) {\n        template += this.templates.active\n          .replace('{text}', i + 1).replace('{index}', i);\n      } else {\n        template += this.templates.anchor\n          .replace('{text}', i + 1).replace('{index}', i);\n      }\n    }\n\n    // show next\n    if (index < newPageBound - 1) {\n      template += this.templates.next;\n    }\n\n    if (index === 0 && newPageBound === 1) {\n      this.pagination.html('');\n    } else {\n      if (this.slides.length < 31 && newPageBound !== 0 && bound !== 30) {\n        if (window.innerWidth <= 480 && this.slides.length > 12) {\n          this.showAll.css('display', 'none');\n        } else {\n          this.showAll.css('display', 'inline-block');\n        }\n      }\n      this.pagination.html(template);\n    }\n\n    // reset the gallery\n    this.slides.css('display', 'none');\n    // now show the first bound entries\n    this.slides.slice(\n      index * bound,\n      index * bound + bound)\n      .css('display', 'block');\n\n    this.loadingSpinner.css('display', 'none');\n  }\n}\n\nexport {Gallery};\nexport default Gallery;\n","class GroupedGallery {\n  constructor(element) {\n    this.gallery = element;\n    if (this.gallery.querySelector('.gallery--type-text-image')) {\n      return;\n    }\n    this.items = element.querySelectorAll('.gallery-item');\n\n    this._resize();\n    window.addEventListener('resize', this._resize.bind(this));\n  }\n\n  _resize() {\n    let rowPos = 0;\n    let rowNum = -1;\n    const rows = [];\n\n    if (window.innerWidth < 480) {\n      this.items.forEach(item => {\n        item.querySelector('.gallery-item__group-title').style.height = null;\n      });\n      return;\n    }\n\n    this.items.forEach(item => {\n      let currentPos = item.getBoundingClientRect().top + window.scrollY;\n\n      // New row\n      if (currentPos !== rowPos) {\n        rowPos = currentPos;\n        rowNum++;\n        rows.push({\n          row: rowNum,\n          maxHeadline: item.querySelector('.gallery-item__group-title')?.offsetHeight,\n          items: [item]\n        })\n      } else {\n        rows[rowNum].items.push(item);\n        rows[rowNum].maxHeadline = Math.max(rows[rowNum].maxHeadline, item.querySelector('.gallery-item__group-title')?.offsetHeight);\n      }\n    });\n\n    rows.forEach(row => {\n      row.items.forEach(item => {\n        item.querySelector('.gallery-item__group-title').style.height = `${row.maxHeadline}px`;\n      });\n    });\n  }\n}\n\nexport default GroupedGallery;\n","\nconst Zoomable = () => {\n  var zoomablesPilot = $('.js-zoomable-link');\n  var nonModalElements;\n  var isFocusLocked = false;\n  var triggeringElement;\n  zoomablesPilot.fancybox({\n    firstLoad: true,\n    fitToView: true,\n    autoSize: false,\n    width: 'auto',\n    nextClick: true,\n    closeClick: true,\n    height: '90%',\n    maxHeight: '90%',\n    padding: [17, 0, 0, 0],\n    tpl: {\n      next: '<p><a role=\"button\" title=\"Nächstes\" class=\"fancybox-nav fancybox-next\" href=\"javascript:;\"><svg class=\"icon icon-arrow-right\" aria-hidden=\"true\" focusable=\"false\"><use xlink:href=\"#icon-arrow-right\"></use></svg></a></p>',\n      prev: '<p><a role=\"button\" title=\"Zurück\" class=\"fancybox-nav fancybox-prev\" href=\"javascript:;\"><svg class=\"icon icon-arrow-left\" aria-hidden=\"true\" focusable=\"false\"><use xlink:href=\"#icon-arrow-left\"></use></svg></a></p>',\n      closeBtn: '<div class=\"fancybox-close-wrapper\"><button role=\"button\" aria-label=\"Vergrößerte Ansicht schließen\" title=\"Vergrößerte Ansicht schließen\" class=\"fancybox-close\" href=\"javascript:;\"><span class=\"fancybox-close-text\">schließen</span><svg class=\"icon icon-close-boxed icon-lg\" aria-hidden=\"true\" focusable=\"false\"><use xlink:href=\"#icon-close-boxed\"></use></svg></button></div>'\n    },\n    beforeShow: function () {\n      var imageCaption = $(this.element).parents('.gallery-item').find('.gallery-content').html();\n      var pressImageCaption = $(this.element).parents('.img-container').find('img').attr('alt');\n      var dataCaption = $(this.element).data('caption');\n      this.title = imageCaption || pressImageCaption || dataCaption;\n      var imgAlt = $(this.element).closest('.image-block').attr('title');\n      var dataAlt = $(this.element).data('alt');\n      if (imgAlt) {\n        $('.fancybox-image').attr('alt', imgAlt).wrap('<figure></figure>');\n      } else if (dataAlt) {\n        $('.fancybox-image').attr('alt', dataAlt).wrap('<figure></figure>');\n      }\n      $('.fancybox-overlay').attr('role', 'dialog').attr('aria-modal', 'true');\n      if (this.group.length >= 1) {\n        var bildPos = 'Bild ' + (this.index + 1) + ' von ' + this.group.length;\n      } else {\n        bildPos = '';\n      }\n      $('.fancybox-skin').prepend('<div class=\"image-pos\"><p>' + bildPos + '</p></div>');\n    },\n    afterShow: function () {\n      if (!isFocusLocked) {\n        triggeringElement = this.element;\n        this.lockFocusOnDialog();\n      }\n      $('.fancybox-close-wrapper').each(function () {\n        $(this).closest('.fancybox-skin').prepend(this);\n      });\n    },\n    afterClose: function () {\n      this.unlockFocusOnDialog();\n      triggeringElement.focus();\n    },\n    lockFocusOnDialog: function () {\n      // nonModalElements = Array.from(document.querySelectorAll('body *:not(.fancybox-overlay):not(.fancybox-overlay *)'));\n      nonModalElements = $('a[href], area[href], input, select, textarea, button, iframe, object, embed, *[tabindex], *[contenteditable]').not('.fancybox-overlay, .fancybox-overlay *, [disabled], :hidden');\n      for (var i = 0; i < nonModalElements.length; i++) {\n        var element = nonModalElements[i];\n        element._prevTabIndex = element.getAttribute('tabindex');\n        element.setAttribute('tabindex', -1);\n      }\n      isFocusLocked = true;\n    },\n    unlockFocusOnDialog: function () {\n      for (var i = 0; i < nonModalElements.length; i++) {\n        var element = nonModalElements[i];\n        if (element._prevTabIndex) {\n          element.setAttribute('tabindex', element._prevTabIndex);\n          element._prevTabIndex = null;\n        } else {\n          element.removeAttribute('tabindex');\n        }\n      }\n      isFocusLocked = false;\n    },\n    helpers: {\n      title: {\n        type: 'inside'\n      }\n    }\n  });\n  zoomablesPilot.click(function () {\n    var title = $(this).prev().attr('title');\n    setTimeout(function () {\n      $('.fancybox-image').attr('alt', title).wrap('<p></p>');\n      $('.fancybox-inner p').wrap('<figure></figure>');\n    }, 1500);\n  });\n};\n\nexport {\n  Zoomable\n};\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n    return (obj !== null &&\n        typeof obj === 'object' &&\n        'constructor' in obj &&\n        obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n    Object.keys(src).forEach((key) => {\n        if (typeof target[key] === 'undefined')\n            target[key] = src[key];\n        else if (isObject(src[key]) &&\n            isObject(target[key]) &&\n            Object.keys(src[key]).length > 0) {\n            extend(target[key], src[key]);\n        }\n    });\n}\n\nconst ssrDocument = {\n    body: {},\n    addEventListener() { },\n    removeEventListener() { },\n    activeElement: {\n        blur() { },\n        nodeName: '',\n    },\n    querySelector() {\n        return null;\n    },\n    querySelectorAll() {\n        return [];\n    },\n    getElementById() {\n        return null;\n    },\n    createEvent() {\n        return {\n            initEvent() { },\n        };\n    },\n    createElement() {\n        return {\n            children: [],\n            childNodes: [],\n            style: {},\n            setAttribute() { },\n            getElementsByTagName() {\n                return [];\n            },\n        };\n    },\n    createElementNS() {\n        return {};\n    },\n    importNode() {\n        return null;\n    },\n    location: {\n        hash: '',\n        host: '',\n        hostname: '',\n        href: '',\n        origin: '',\n        pathname: '',\n        protocol: '',\n        search: '',\n    },\n};\nfunction getDocument() {\n    const doc = typeof document !== 'undefined' ? document : {};\n    extend(doc, ssrDocument);\n    return doc;\n}\n\nconst ssrWindow = {\n    document: ssrDocument,\n    navigator: {\n        userAgent: '',\n    },\n    location: {\n        hash: '',\n        host: '',\n        hostname: '',\n        href: '',\n        origin: '',\n        pathname: '',\n        protocol: '',\n        search: '',\n    },\n    history: {\n        replaceState() { },\n        pushState() { },\n        go() { },\n        back() { },\n    },\n    CustomEvent: function CustomEvent() {\n        return this;\n    },\n    addEventListener() { },\n    removeEventListener() { },\n    getComputedStyle() {\n        return {\n            getPropertyValue() {\n                return '';\n            },\n        };\n    },\n    Image() { },\n    Date() { },\n    screen: {},\n    setTimeout() { },\n    clearTimeout() { },\n    matchMedia() {\n        return {};\n    },\n    requestAnimationFrame(callback) {\n        if (typeof setTimeout === 'undefined') {\n            callback();\n            return null;\n        }\n        return setTimeout(callback, 0);\n    },\n    cancelAnimationFrame(id) {\n        if (typeof setTimeout === 'undefined') {\n            return;\n        }\n        clearTimeout(id);\n    },\n};\nfunction getWindow() {\n    const win = typeof window !== 'undefined' ? window : {};\n    extend(win, ssrWindow);\n    return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.6\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2023, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: February 2, 2023\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n  const proto = obj.__proto__;\n  Object.defineProperty(obj, '__proto__', {\n    get() {\n      return proto;\n    },\n\n    set(value) {\n      proto.__proto__ = value;\n    }\n\n  });\n}\n\nclass Dom7 extends Array {\n  constructor(items) {\n    if (typeof items === 'number') {\n      super(items);\n    } else {\n      super(...(items || []));\n      makeReactive(this);\n    }\n  }\n\n}\n\nfunction arrayFlat(arr = []) {\n  const res = [];\n  arr.forEach(el => {\n    if (Array.isArray(el)) {\n      res.push(...arrayFlat(el));\n    } else {\n      res.push(el);\n    }\n  });\n  return res;\n}\nfunction arrayFilter(arr, callback) {\n  return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n  const uniqueArray = [];\n\n  for (let i = 0; i < arr.length; i += 1) {\n    if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n  }\n\n  return uniqueArray;\n}\nfunction toCamelCase(string) {\n  return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n  if (typeof selector !== 'string') {\n    return [selector];\n  }\n\n  const a = [];\n  const res = context.querySelectorAll(selector);\n\n  for (let i = 0; i < res.length; i += 1) {\n    a.push(res[i]);\n  }\n\n  return a;\n}\n\nfunction $(selector, context) {\n  const window = getWindow();\n  const document = getDocument();\n  let arr = [];\n\n  if (!context && selector instanceof Dom7) {\n    return selector;\n  }\n\n  if (!selector) {\n    return new Dom7(arr);\n  }\n\n  if (typeof selector === 'string') {\n    const html = selector.trim();\n\n    if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n      let toCreate = 'div';\n      if (html.indexOf('<li') === 0) toCreate = 'ul';\n      if (html.indexOf('<tr') === 0) toCreate = 'tbody';\n      if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';\n      if (html.indexOf('<tbody') === 0) toCreate = 'table';\n      if (html.indexOf('<option') === 0) toCreate = 'select';\n      const tempParent = document.createElement(toCreate);\n      tempParent.innerHTML = html;\n\n      for (let i = 0; i < tempParent.childNodes.length; i += 1) {\n        arr.push(tempParent.childNodes[i]);\n      }\n    } else {\n      arr = qsa(selector.trim(), context || document);\n    } // arr = qsa(selector, document);\n\n  } else if (selector.nodeType || selector === window || selector === document) {\n    arr.push(selector);\n  } else if (Array.isArray(selector)) {\n    if (selector instanceof Dom7) return selector;\n    arr = selector;\n  }\n\n  return new Dom7(arrayUnique(arr));\n}\n\n$.fn = Dom7.prototype;\n\n// eslint-disable-next-line\n\nfunction addClass(...classes) {\n  const classNames = arrayFlat(classes.map(c => c.split(' ')));\n  this.forEach(el => {\n    el.classList.add(...classNames);\n  });\n  return this;\n}\n\nfunction removeClass(...classes) {\n  const classNames = arrayFlat(classes.map(c => c.split(' ')));\n  this.forEach(el => {\n    el.classList.remove(...classNames);\n  });\n  return this;\n}\n\nfunction toggleClass(...classes) {\n  const classNames = arrayFlat(classes.map(c => c.split(' ')));\n  this.forEach(el => {\n    classNames.forEach(className => {\n      el.classList.toggle(className);\n    });\n  });\n}\n\nfunction hasClass(...classes) {\n  const classNames = arrayFlat(classes.map(c => c.split(' ')));\n  return arrayFilter(this, el => {\n    return classNames.filter(className => el.classList.contains(className)).length > 0;\n  }).length > 0;\n}\n\nfunction attr(attrs, value) {\n  if (arguments.length === 1 && typeof attrs === 'string') {\n    // Get attr\n    if (this[0]) return this[0].getAttribute(attrs);\n    return undefined;\n  } // Set attrs\n\n\n  for (let i = 0; i < this.length; i += 1) {\n    if (arguments.length === 2) {\n      // String\n      this[i].setAttribute(attrs, value);\n    } else {\n      // Object\n      for (const attrName in attrs) {\n        this[i][attrName] = attrs[attrName];\n        this[i].setAttribute(attrName, attrs[attrName]);\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction removeAttr(attr) {\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].removeAttribute(attr);\n  }\n\n  return this;\n}\n\nfunction prop(props, value) {\n  if (arguments.length === 1 && typeof props === 'string') {\n    // Get prop\n    if (this[0]) return this[0][props];\n  } else {\n    // Set props\n    for (let i = 0; i < this.length; i += 1) {\n      if (arguments.length === 2) {\n        // String\n        this[i][props] = value;\n      } else {\n        // Object\n        for (const propName in props) {\n          this[i][propName] = props[propName];\n        }\n      }\n    }\n\n    return this;\n  }\n\n  return this;\n}\n\nfunction data(key, value) {\n  let el;\n\n  if (typeof value === 'undefined') {\n    el = this[0];\n    if (!el) return undefined; // Get value\n\n    if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n      return el.dom7ElementDataStorage[key];\n    }\n\n    const dataKey = el.getAttribute(`data-${key}`);\n\n    if (dataKey) {\n      return dataKey;\n    }\n\n    return undefined;\n  } // Set value\n\n\n  for (let i = 0; i < this.length; i += 1) {\n    el = this[i];\n    if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n    el.dom7ElementDataStorage[key] = value;\n  }\n\n  return this;\n}\n\nfunction removeData(key) {\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n\n    if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n      el.dom7ElementDataStorage[key] = null;\n      delete el.dom7ElementDataStorage[key];\n    }\n  }\n}\n\nfunction dataset() {\n  const el = this[0];\n  if (!el) return undefined;\n  const dataset = {}; // eslint-disable-line\n\n  if (el.dataset) {\n    for (const dataKey in el.dataset) {\n      dataset[dataKey] = el.dataset[dataKey];\n    }\n  } else {\n    for (let i = 0; i < el.attributes.length; i += 1) {\n      const attr = el.attributes[i];\n\n      if (attr.name.indexOf('data-') >= 0) {\n        dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n      }\n    }\n  }\n\n  for (const key in dataset) {\n    if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n  }\n\n  return dataset;\n}\n\nfunction val(value) {\n  if (typeof value === 'undefined') {\n    // get value\n    const el = this[0];\n    if (!el) return undefined;\n\n    if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n      const values = [];\n\n      for (let i = 0; i < el.selectedOptions.length; i += 1) {\n        values.push(el.selectedOptions[i].value);\n      }\n\n      return values;\n    }\n\n    return el.value;\n  } // set value\n\n\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n\n    if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n      for (let j = 0; j < el.options.length; j += 1) {\n        el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n      }\n    } else {\n      el.value = value;\n    }\n  }\n\n  return this;\n}\n\nfunction value(value) {\n  return this.val(value);\n}\n\nfunction transform(transform) {\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].style.transform = transform;\n  }\n\n  return this;\n}\n\nfunction transition(duration) {\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n  }\n\n  return this;\n}\n\nfunction on(...args) {\n  let [eventType, targetSelector, listener, capture] = args;\n\n  if (typeof args[1] === 'function') {\n    [eventType, listener, capture] = args;\n    targetSelector = undefined;\n  }\n\n  if (!capture) capture = false;\n\n  function handleLiveEvent(e) {\n    const target = e.target;\n    if (!target) return;\n    const eventData = e.target.dom7EventData || [];\n\n    if (eventData.indexOf(e) < 0) {\n      eventData.unshift(e);\n    }\n\n    if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n      const parents = $(target).parents(); // eslint-disable-line\n\n      for (let k = 0; k < parents.length; k += 1) {\n        if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n      }\n    }\n  }\n\n  function handleEvent(e) {\n    const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n    if (eventData.indexOf(e) < 0) {\n      eventData.unshift(e);\n    }\n\n    listener.apply(this, eventData);\n  }\n\n  const events = eventType.split(' ');\n  let j;\n\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n\n    if (!targetSelector) {\n      for (j = 0; j < events.length; j += 1) {\n        const event = events[j];\n        if (!el.dom7Listeners) el.dom7Listeners = {};\n        if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n        el.dom7Listeners[event].push({\n          listener,\n          proxyListener: handleEvent\n        });\n        el.addEventListener(event, handleEvent, capture);\n      }\n    } else {\n      // Live events\n      for (j = 0; j < events.length; j += 1) {\n        const event = events[j];\n        if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n        if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n        el.dom7LiveListeners[event].push({\n          listener,\n          proxyListener: handleLiveEvent\n        });\n        el.addEventListener(event, handleLiveEvent, capture);\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction off(...args) {\n  let [eventType, targetSelector, listener, capture] = args;\n\n  if (typeof args[1] === 'function') {\n    [eventType, listener, capture] = args;\n    targetSelector = undefined;\n  }\n\n  if (!capture) capture = false;\n  const events = eventType.split(' ');\n\n  for (let i = 0; i < events.length; i += 1) {\n    const event = events[i];\n\n    for (let j = 0; j < this.length; j += 1) {\n      const el = this[j];\n      let handlers;\n\n      if (!targetSelector && el.dom7Listeners) {\n        handlers = el.dom7Listeners[event];\n      } else if (targetSelector && el.dom7LiveListeners) {\n        handlers = el.dom7LiveListeners[event];\n      }\n\n      if (handlers && handlers.length) {\n        for (let k = handlers.length - 1; k >= 0; k -= 1) {\n          const handler = handlers[k];\n\n          if (listener && handler.listener === listener) {\n            el.removeEventListener(event, handler.proxyListener, capture);\n            handlers.splice(k, 1);\n          } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n            el.removeEventListener(event, handler.proxyListener, capture);\n            handlers.splice(k, 1);\n          } else if (!listener) {\n            el.removeEventListener(event, handler.proxyListener, capture);\n            handlers.splice(k, 1);\n          }\n        }\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction once(...args) {\n  const dom = this;\n  let [eventName, targetSelector, listener, capture] = args;\n\n  if (typeof args[1] === 'function') {\n    [eventName, listener, capture] = args;\n    targetSelector = undefined;\n  }\n\n  function onceHandler(...eventArgs) {\n    listener.apply(this, eventArgs);\n    dom.off(eventName, targetSelector, onceHandler, capture);\n\n    if (onceHandler.dom7proxy) {\n      delete onceHandler.dom7proxy;\n    }\n  }\n\n  onceHandler.dom7proxy = listener;\n  return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n  const window = getWindow();\n  const events = args[0].split(' ');\n  const eventData = args[1];\n\n  for (let i = 0; i < events.length; i += 1) {\n    const event = events[i];\n\n    for (let j = 0; j < this.length; j += 1) {\n      const el = this[j];\n\n      if (window.CustomEvent) {\n        const evt = new window.CustomEvent(event, {\n          detail: eventData,\n          bubbles: true,\n          cancelable: true\n        });\n        el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n        el.dispatchEvent(evt);\n        el.dom7EventData = [];\n        delete el.dom7EventData;\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction transitionStart(callback) {\n  const dom = this;\n\n  function fireCallBack(e) {\n    if (e.target !== this) return;\n    callback.call(this, e);\n    dom.off('transitionstart', fireCallBack);\n  }\n\n  if (callback) {\n    dom.on('transitionstart', fireCallBack);\n  }\n\n  return this;\n}\n\nfunction transitionEnd(callback) {\n  const dom = this;\n\n  function fireCallBack(e) {\n    if (e.target !== this) return;\n    callback.call(this, e);\n    dom.off('transitionend', fireCallBack);\n  }\n\n  if (callback) {\n    dom.on('transitionend', fireCallBack);\n  }\n\n  return this;\n}\n\nfunction animationEnd(callback) {\n  const dom = this;\n\n  function fireCallBack(e) {\n    if (e.target !== this) return;\n    callback.call(this, e);\n    dom.off('animationend', fireCallBack);\n  }\n\n  if (callback) {\n    dom.on('animationend', fireCallBack);\n  }\n\n  return this;\n}\n\nfunction width() {\n  const window = getWindow();\n\n  if (this[0] === window) {\n    return window.innerWidth;\n  }\n\n  if (this.length > 0) {\n    return parseFloat(this.css('width'));\n  }\n\n  return null;\n}\n\nfunction outerWidth(includeMargins) {\n  if (this.length > 0) {\n    if (includeMargins) {\n      const styles = this.styles();\n      return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n    }\n\n    return this[0].offsetWidth;\n  }\n\n  return null;\n}\n\nfunction height() {\n  const window = getWindow();\n\n  if (this[0] === window) {\n    return window.innerHeight;\n  }\n\n  if (this.length > 0) {\n    return parseFloat(this.css('height'));\n  }\n\n  return null;\n}\n\nfunction outerHeight(includeMargins) {\n  if (this.length > 0) {\n    if (includeMargins) {\n      const styles = this.styles();\n      return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n    }\n\n    return this[0].offsetHeight;\n  }\n\n  return null;\n}\n\nfunction offset() {\n  if (this.length > 0) {\n    const window = getWindow();\n    const document = getDocument();\n    const el = this[0];\n    const box = el.getBoundingClientRect();\n    const body = document.body;\n    const clientTop = el.clientTop || body.clientTop || 0;\n    const clientLeft = el.clientLeft || body.clientLeft || 0;\n    const scrollTop = el === window ? window.scrollY : el.scrollTop;\n    const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n    return {\n      top: box.top + scrollTop - clientTop,\n      left: box.left + scrollLeft - clientLeft\n    };\n  }\n\n  return null;\n}\n\nfunction hide() {\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].style.display = 'none';\n  }\n\n  return this;\n}\n\nfunction show() {\n  const window = getWindow();\n\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n\n    if (el.style.display === 'none') {\n      el.style.display = '';\n    }\n\n    if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n      // Still not visible\n      el.style.display = 'block';\n    }\n  }\n\n  return this;\n}\n\nfunction styles() {\n  const window = getWindow();\n  if (this[0]) return window.getComputedStyle(this[0], null);\n  return {};\n}\n\nfunction css(props, value) {\n  const window = getWindow();\n  let i;\n\n  if (arguments.length === 1) {\n    if (typeof props === 'string') {\n      // .css('width')\n      if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n    } else {\n      // .css({ width: '100px' })\n      for (i = 0; i < this.length; i += 1) {\n        for (const prop in props) {\n          this[i].style[prop] = props[prop];\n        }\n      }\n\n      return this;\n    }\n  }\n\n  if (arguments.length === 2 && typeof props === 'string') {\n    // .css('width', '100px')\n    for (i = 0; i < this.length; i += 1) {\n      this[i].style[props] = value;\n    }\n\n    return this;\n  }\n\n  return this;\n}\n\nfunction each(callback) {\n  if (!callback) return this;\n  this.forEach((el, index) => {\n    callback.apply(el, [el, index]);\n  });\n  return this;\n}\n\nfunction filter(callback) {\n  const result = arrayFilter(this, callback);\n  return $(result);\n}\n\nfunction html(html) {\n  if (typeof html === 'undefined') {\n    return this[0] ? this[0].innerHTML : null;\n  }\n\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].innerHTML = html;\n  }\n\n  return this;\n}\n\nfunction text(text) {\n  if (typeof text === 'undefined') {\n    return this[0] ? this[0].textContent.trim() : null;\n  }\n\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].textContent = text;\n  }\n\n  return this;\n}\n\nfunction is(selector) {\n  const window = getWindow();\n  const document = getDocument();\n  const el = this[0];\n  let compareWith;\n  let i;\n  if (!el || typeof selector === 'undefined') return false;\n\n  if (typeof selector === 'string') {\n    if (el.matches) return el.matches(selector);\n    if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n    if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n    compareWith = $(selector);\n\n    for (i = 0; i < compareWith.length; i += 1) {\n      if (compareWith[i] === el) return true;\n    }\n\n    return false;\n  }\n\n  if (selector === document) {\n    return el === document;\n  }\n\n  if (selector === window) {\n    return el === window;\n  }\n\n  if (selector.nodeType || selector instanceof Dom7) {\n    compareWith = selector.nodeType ? [selector] : selector;\n\n    for (i = 0; i < compareWith.length; i += 1) {\n      if (compareWith[i] === el) return true;\n    }\n\n    return false;\n  }\n\n  return false;\n}\n\nfunction index() {\n  let child = this[0];\n  let i;\n\n  if (child) {\n    i = 0; // eslint-disable-next-line\n\n    while ((child = child.previousSibling) !== null) {\n      if (child.nodeType === 1) i += 1;\n    }\n\n    return i;\n  }\n\n  return undefined;\n}\n\nfunction eq(index) {\n  if (typeof index === 'undefined') return this;\n  const length = this.length;\n\n  if (index > length - 1) {\n    return $([]);\n  }\n\n  if (index < 0) {\n    const returnIndex = length + index;\n    if (returnIndex < 0) return $([]);\n    return $([this[returnIndex]]);\n  }\n\n  return $([this[index]]);\n}\n\nfunction append(...els) {\n  let newChild;\n  const document = getDocument();\n\n  for (let k = 0; k < els.length; k += 1) {\n    newChild = els[k];\n\n    for (let i = 0; i < this.length; i += 1) {\n      if (typeof newChild === 'string') {\n        const tempDiv = document.createElement('div');\n        tempDiv.innerHTML = newChild;\n\n        while (tempDiv.firstChild) {\n          this[i].appendChild(tempDiv.firstChild);\n        }\n      } else if (newChild instanceof Dom7) {\n        for (let j = 0; j < newChild.length; j += 1) {\n          this[i].appendChild(newChild[j]);\n        }\n      } else {\n        this[i].appendChild(newChild);\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction appendTo(parent) {\n  $(parent).append(this);\n  return this;\n}\n\nfunction prepend(newChild) {\n  const document = getDocument();\n  let i;\n  let j;\n\n  for (i = 0; i < this.length; i += 1) {\n    if (typeof newChild === 'string') {\n      const tempDiv = document.createElement('div');\n      tempDiv.innerHTML = newChild;\n\n      for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n        this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n      }\n    } else if (newChild instanceof Dom7) {\n      for (j = 0; j < newChild.length; j += 1) {\n        this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n      }\n    } else {\n      this[i].insertBefore(newChild, this[i].childNodes[0]);\n    }\n  }\n\n  return this;\n}\n\nfunction prependTo(parent) {\n  $(parent).prepend(this);\n  return this;\n}\n\nfunction insertBefore(selector) {\n  const before = $(selector);\n\n  for (let i = 0; i < this.length; i += 1) {\n    if (before.length === 1) {\n      before[0].parentNode.insertBefore(this[i], before[0]);\n    } else if (before.length > 1) {\n      for (let j = 0; j < before.length; j += 1) {\n        before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n      }\n    }\n  }\n}\n\nfunction insertAfter(selector) {\n  const after = $(selector);\n\n  for (let i = 0; i < this.length; i += 1) {\n    if (after.length === 1) {\n      after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n    } else if (after.length > 1) {\n      for (let j = 0; j < after.length; j += 1) {\n        after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n      }\n    }\n  }\n}\n\nfunction next(selector) {\n  if (this.length > 0) {\n    if (selector) {\n      if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n        return $([this[0].nextElementSibling]);\n      }\n\n      return $([]);\n    }\n\n    if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n    return $([]);\n  }\n\n  return $([]);\n}\n\nfunction nextAll(selector) {\n  const nextEls = [];\n  let el = this[0];\n  if (!el) return $([]);\n\n  while (el.nextElementSibling) {\n    const next = el.nextElementSibling; // eslint-disable-line\n\n    if (selector) {\n      if ($(next).is(selector)) nextEls.push(next);\n    } else nextEls.push(next);\n\n    el = next;\n  }\n\n  return $(nextEls);\n}\n\nfunction prev(selector) {\n  if (this.length > 0) {\n    const el = this[0];\n\n    if (selector) {\n      if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n        return $([el.previousElementSibling]);\n      }\n\n      return $([]);\n    }\n\n    if (el.previousElementSibling) return $([el.previousElementSibling]);\n    return $([]);\n  }\n\n  return $([]);\n}\n\nfunction prevAll(selector) {\n  const prevEls = [];\n  let el = this[0];\n  if (!el) return $([]);\n\n  while (el.previousElementSibling) {\n    const prev = el.previousElementSibling; // eslint-disable-line\n\n    if (selector) {\n      if ($(prev).is(selector)) prevEls.push(prev);\n    } else prevEls.push(prev);\n\n    el = prev;\n  }\n\n  return $(prevEls);\n}\n\nfunction siblings(selector) {\n  return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n  const parents = []; // eslint-disable-line\n\n  for (let i = 0; i < this.length; i += 1) {\n    if (this[i].parentNode !== null) {\n      if (selector) {\n        if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n      } else {\n        parents.push(this[i].parentNode);\n      }\n    }\n  }\n\n  return $(parents);\n}\n\nfunction parents(selector) {\n  const parents = []; // eslint-disable-line\n\n  for (let i = 0; i < this.length; i += 1) {\n    let parent = this[i].parentNode; // eslint-disable-line\n\n    while (parent) {\n      if (selector) {\n        if ($(parent).is(selector)) parents.push(parent);\n      } else {\n        parents.push(parent);\n      }\n\n      parent = parent.parentNode;\n    }\n  }\n\n  return $(parents);\n}\n\nfunction closest(selector) {\n  let closest = this; // eslint-disable-line\n\n  if (typeof selector === 'undefined') {\n    return $([]);\n  }\n\n  if (!closest.is(selector)) {\n    closest = closest.parents(selector).eq(0);\n  }\n\n  return closest;\n}\n\nfunction find(selector) {\n  const foundElements = [];\n\n  for (let i = 0; i < this.length; i += 1) {\n    const found = this[i].querySelectorAll(selector);\n\n    for (let j = 0; j < found.length; j += 1) {\n      foundElements.push(found[j]);\n    }\n  }\n\n  return $(foundElements);\n}\n\nfunction children(selector) {\n  const children = []; // eslint-disable-line\n\n  for (let i = 0; i < this.length; i += 1) {\n    const childNodes = this[i].children;\n\n    for (let j = 0; j < childNodes.length; j += 1) {\n      if (!selector || $(childNodes[j]).is(selector)) {\n        children.push(childNodes[j]);\n      }\n    }\n  }\n\n  return $(children);\n}\n\nfunction remove() {\n  for (let i = 0; i < this.length; i += 1) {\n    if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n  }\n\n  return this;\n}\n\nfunction detach() {\n  return this.remove();\n}\n\nfunction add(...els) {\n  const dom = this;\n  let i;\n  let j;\n\n  for (i = 0; i < els.length; i += 1) {\n    const toAdd = $(els[i]);\n\n    for (j = 0; j < toAdd.length; j += 1) {\n      dom.push(toAdd[j]);\n    }\n  }\n\n  return dom;\n}\n\nfunction empty() {\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n\n    if (el.nodeType === 1) {\n      for (let j = 0; j < el.childNodes.length; j += 1) {\n        if (el.childNodes[j].parentNode) {\n          el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n        }\n      }\n\n      el.textContent = '';\n    }\n  }\n\n  return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n  const window = getWindow();\n  let [left, top, duration, easing, callback] = args;\n\n  if (args.length === 4 && typeof easing === 'function') {\n    callback = easing;\n    [left, top, duration, callback, easing] = args;\n  }\n\n  if (typeof easing === 'undefined') easing = 'swing';\n  return this.each(function animate() {\n    const el = this;\n    let currentTop;\n    let currentLeft;\n    let maxTop;\n    let maxLeft;\n    let newTop;\n    let newLeft;\n    let scrollTop; // eslint-disable-line\n\n    let scrollLeft; // eslint-disable-line\n\n    let animateTop = top > 0 || top === 0;\n    let animateLeft = left > 0 || left === 0;\n\n    if (typeof easing === 'undefined') {\n      easing = 'swing';\n    }\n\n    if (animateTop) {\n      currentTop = el.scrollTop;\n\n      if (!duration) {\n        el.scrollTop = top;\n      }\n    }\n\n    if (animateLeft) {\n      currentLeft = el.scrollLeft;\n\n      if (!duration) {\n        el.scrollLeft = left;\n      }\n    }\n\n    if (!duration) return;\n\n    if (animateTop) {\n      maxTop = el.scrollHeight - el.offsetHeight;\n      newTop = Math.max(Math.min(top, maxTop), 0);\n    }\n\n    if (animateLeft) {\n      maxLeft = el.scrollWidth - el.offsetWidth;\n      newLeft = Math.max(Math.min(left, maxLeft), 0);\n    }\n\n    let startTime = null;\n    if (animateTop && newTop === currentTop) animateTop = false;\n    if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n    function render(time = new Date().getTime()) {\n      if (startTime === null) {\n        startTime = time;\n      }\n\n      const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n      const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n      let done;\n      if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n      if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n      if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n        el.scrollTop = newTop;\n        done = true;\n      }\n\n      if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n        el.scrollTop = newTop;\n        done = true;\n      }\n\n      if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n        el.scrollLeft = newLeft;\n        done = true;\n      }\n\n      if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n        el.scrollLeft = newLeft;\n        done = true;\n      }\n\n      if (done) {\n        if (callback) callback();\n        return;\n      }\n\n      if (animateTop) el.scrollTop = scrollTop;\n      if (animateLeft) el.scrollLeft = scrollLeft;\n      window.requestAnimationFrame(render);\n    }\n\n    window.requestAnimationFrame(render);\n  });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n  let [top, duration, easing, callback] = args;\n\n  if (args.length === 3 && typeof easing === 'function') {\n    [top, duration, callback, easing] = args;\n  }\n\n  const dom = this;\n\n  if (typeof top === 'undefined') {\n    if (dom.length > 0) return dom[0].scrollTop;\n    return null;\n  }\n\n  return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n  let [left, duration, easing, callback] = args;\n\n  if (args.length === 3 && typeof easing === 'function') {\n    [left, duration, callback, easing] = args;\n  }\n\n  const dom = this;\n\n  if (typeof left === 'undefined') {\n    if (dom.length > 0) return dom[0].scrollLeft;\n    return null;\n  }\n\n  return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n  const window = getWindow();\n  const els = this;\n  const a = {\n    props: Object.assign({}, initialProps),\n    params: Object.assign({\n      duration: 300,\n      easing: 'swing' // or 'linear'\n\n      /* Callbacks\n      begin(elements)\n      complete(elements)\n      progress(elements, complete, remaining, start, tweenValue)\n      */\n\n    }, initialParams),\n    elements: els,\n    animating: false,\n    que: [],\n\n    easingProgress(easing, progress) {\n      if (easing === 'swing') {\n        return 0.5 - Math.cos(progress * Math.PI) / 2;\n      }\n\n      if (typeof easing === 'function') {\n        return easing(progress);\n      }\n\n      return progress;\n    },\n\n    stop() {\n      if (a.frameId) {\n        window.cancelAnimationFrame(a.frameId);\n      }\n\n      a.animating = false;\n      a.elements.each(el => {\n        const element = el;\n        delete element.dom7AnimateInstance;\n      });\n      a.que = [];\n    },\n\n    done(complete) {\n      a.animating = false;\n      a.elements.each(el => {\n        const element = el;\n        delete element.dom7AnimateInstance;\n      });\n      if (complete) complete(els);\n\n      if (a.que.length > 0) {\n        const que = a.que.shift();\n        a.animate(que[0], que[1]);\n      }\n    },\n\n    animate(props, params) {\n      if (a.animating) {\n        a.que.push([props, params]);\n        return a;\n      }\n\n      const elements = []; // Define & Cache Initials & Units\n\n      a.elements.each((el, index) => {\n        let initialFullValue;\n        let initialValue;\n        let unit;\n        let finalValue;\n        let finalFullValue;\n        if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n        elements[index] = {\n          container: el\n        };\n        Object.keys(props).forEach(prop => {\n          initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n          initialValue = parseFloat(initialFullValue);\n          unit = initialFullValue.replace(initialValue, '');\n          finalValue = parseFloat(props[prop]);\n          finalFullValue = props[prop] + unit;\n          elements[index][prop] = {\n            initialFullValue,\n            initialValue,\n            unit,\n            finalValue,\n            finalFullValue,\n            currentValue: initialValue\n          };\n        });\n      });\n      let startTime = null;\n      let time;\n      let elementsDone = 0;\n      let propsDone = 0;\n      let done;\n      let began = false;\n      a.animating = true;\n\n      function render() {\n        time = new Date().getTime();\n        let progress;\n        let easeProgress; // let el;\n\n        if (!began) {\n          began = true;\n          if (params.begin) params.begin(els);\n        }\n\n        if (startTime === null) {\n          startTime = time;\n        }\n\n        if (params.progress) {\n          // eslint-disable-next-line\n          params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n        }\n\n        elements.forEach(element => {\n          const el = element;\n          if (done || el.done) return;\n          Object.keys(props).forEach(prop => {\n            if (done || el.done) return;\n            progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n            easeProgress = a.easingProgress(params.easing, progress);\n            const {\n              initialValue,\n              finalValue,\n              unit\n            } = el[prop];\n            el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n            const currentValue = el[prop].currentValue;\n\n            if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n              el.container.style[prop] = finalValue + unit;\n              propsDone += 1;\n\n              if (propsDone === Object.keys(props).length) {\n                el.done = true;\n                elementsDone += 1;\n              }\n\n              if (elementsDone === elements.length) {\n                done = true;\n              }\n            }\n\n            if (done) {\n              a.done(params.complete);\n              return;\n            }\n\n            el.container.style[prop] = currentValue + unit;\n          });\n        });\n        if (done) return; // Then call\n\n        a.frameId = window.requestAnimationFrame(render);\n      }\n\n      a.frameId = window.requestAnimationFrame(render);\n      return a;\n    }\n\n  };\n\n  if (a.elements.length === 0) {\n    return els;\n  }\n\n  let animateInstance;\n\n  for (let i = 0; i < a.elements.length; i += 1) {\n    if (a.elements[i].dom7AnimateInstance) {\n      animateInstance = a.elements[i].dom7AnimateInstance;\n    } else a.elements[i].dom7AnimateInstance = a;\n  }\n\n  if (!animateInstance) {\n    animateInstance = a;\n  }\n\n  if (initialProps === 'stop') {\n    animateInstance.stop();\n  } else {\n    animateInstance.animate(a.props, a.params);\n  }\n\n  return els;\n}\n\nfunction stop() {\n  const els = this;\n\n  for (let i = 0; i < els.length; i += 1) {\n    if (els[i].dom7AnimateInstance) {\n      els[i].dom7AnimateInstance.stop();\n    }\n  }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n  function eventHandler(...args) {\n    if (typeof args[0] === 'undefined') {\n      for (let i = 0; i < this.length; i += 1) {\n        if (noTrigger.indexOf(name) < 0) {\n          if (name in this[i]) this[i][name]();else {\n            $(this[i]).trigger(name);\n          }\n        }\n      }\n\n      return this;\n    }\n\n    return this.on(name, ...args);\n  }\n\n  return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, transitionStart, trigger, val, value, width };\n","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n  addClass,\n  removeClass,\n  hasClass,\n  toggleClass,\n  attr,\n  removeAttr,\n  transform,\n  transition,\n  on,\n  off,\n  trigger,\n  transitionEnd,\n  outerWidth,\n  outerHeight,\n  styles,\n  offset,\n  css,\n  each,\n  html,\n  text,\n  is,\n  index,\n  eq,\n  append,\n  prepend,\n  next,\n  nextAll,\n  prev,\n  prevAll,\n  parent,\n  parents,\n  closest,\n  find,\n  children,\n  filter,\n  remove\n};\nObject.keys(Methods).forEach(methodName => {\n  Object.defineProperty($.fn, methodName, {\n    value: Methods[methodName],\n    writable: true\n  });\n});\nexport default $;","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n  const object = obj;\n  Object.keys(object).forEach(key => {\n    try {\n      object[key] = null;\n    } catch (e) {// no getter for object\n    }\n\n    try {\n      delete object[key];\n    } catch (e) {// something got wrong\n    }\n  });\n}\n\nfunction nextTick(callback, delay = 0) {\n  return setTimeout(callback, delay);\n}\n\nfunction now() {\n  return Date.now();\n}\n\nfunction getComputedStyle(el) {\n  const window = getWindow();\n  let style;\n\n  if (window.getComputedStyle) {\n    style = window.getComputedStyle(el, null);\n  }\n\n  if (!style && el.currentStyle) {\n    style = el.currentStyle;\n  }\n\n  if (!style) {\n    style = el.style;\n  }\n\n  return style;\n}\n\nfunction getTranslate(el, axis = 'x') {\n  const window = getWindow();\n  let matrix;\n  let curTransform;\n  let transformMatrix;\n  const curStyle = getComputedStyle(el, null);\n\n  if (window.WebKitCSSMatrix) {\n    curTransform = curStyle.transform || curStyle.webkitTransform;\n\n    if (curTransform.split(',').length > 6) {\n      curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n    } // Some old versions of Webkit choke when 'none' is passed; pass\n    // empty string instead in this case\n\n\n    transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n  } else {\n    transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n    matrix = transformMatrix.toString().split(',');\n  }\n\n  if (axis === 'x') {\n    // Latest Chrome and webkits Fix\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n    else curTransform = parseFloat(matrix[4]);\n  }\n\n  if (axis === 'y') {\n    // Latest Chrome and webkits Fix\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n    else curTransform = parseFloat(matrix[5]);\n  }\n\n  return curTransform || 0;\n}\n\nfunction isObject(o) {\n  return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction isNode(node) {\n  // eslint-disable-next-line\n  if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n    return node instanceof HTMLElement;\n  }\n\n  return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend(...args) {\n  const to = Object(args[0]);\n  const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n  for (let i = 1; i < args.length; i += 1) {\n    const nextSource = args[i];\n\n    if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n      const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\n      for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n        const nextKey = keysArray[nextIndex];\n        const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n\n        if (desc !== undefined && desc.enumerable) {\n          if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            if (nextSource[nextKey].__swiper__) {\n              to[nextKey] = nextSource[nextKey];\n            } else {\n              extend(to[nextKey], nextSource[nextKey]);\n            }\n          } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            to[nextKey] = {};\n\n            if (nextSource[nextKey].__swiper__) {\n              to[nextKey] = nextSource[nextKey];\n            } else {\n              extend(to[nextKey], nextSource[nextKey]);\n            }\n          } else {\n            to[nextKey] = nextSource[nextKey];\n          }\n        }\n      }\n    }\n  }\n\n  return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n  el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({\n  swiper,\n  targetPosition,\n  side\n}) {\n  const window = getWindow();\n  const startPosition = -swiper.translate;\n  let startTime = null;\n  let time;\n  const duration = swiper.params.speed;\n  swiper.wrapperEl.style.scrollSnapType = 'none';\n  window.cancelAnimationFrame(swiper.cssModeFrameID);\n  const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n  const isOutOfBound = (current, target) => {\n    return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n  };\n\n  const animate = () => {\n    time = new Date().getTime();\n\n    if (startTime === null) {\n      startTime = time;\n    }\n\n    const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n    const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n    let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n    if (isOutOfBound(currentPosition, targetPosition)) {\n      currentPosition = targetPosition;\n    }\n\n    swiper.wrapperEl.scrollTo({\n      [side]: currentPosition\n    });\n\n    if (isOutOfBound(currentPosition, targetPosition)) {\n      swiper.wrapperEl.style.overflow = 'hidden';\n      swiper.wrapperEl.style.scrollSnapType = '';\n      setTimeout(() => {\n        swiper.wrapperEl.style.overflow = '';\n        swiper.wrapperEl.scrollTo({\n          [side]: currentPosition\n        });\n      });\n      window.cancelAnimationFrame(swiper.cssModeFrameID);\n      return;\n    }\n\n    swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n  };\n\n  animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };","import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\nfunction calcSupport() {\n  const window = getWindow();\n  const document = getDocument();\n  return {\n    smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n    touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n    passiveListener: function checkPassiveListener() {\n      let supportsPassive = false;\n\n      try {\n        const opts = Object.defineProperty({}, 'passive', {\n          // eslint-disable-next-line\n          get() {\n            supportsPassive = true;\n          }\n\n        });\n        window.addEventListener('testPassiveListener', null, opts);\n      } catch (e) {// No support\n      }\n\n      return supportsPassive;\n    }(),\n    gestures: function checkGestures() {\n      return 'ongesturestart' in window;\n    }()\n  };\n}\n\nfunction getSupport() {\n  if (!support) {\n    support = calcSupport();\n  }\n\n  return support;\n}\n\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\nfunction calcDevice({\n  userAgent\n} = {}) {\n  const support = getSupport();\n  const window = getWindow();\n  const platform = window.navigator.platform;\n  const ua = userAgent || window.navigator.userAgent;\n  const device = {\n    ios: false,\n    android: false\n  };\n  const screenWidth = window.screen.width;\n  const screenHeight = window.screen.height;\n  const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n  let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n  const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n  const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n  const windows = platform === 'Win32';\n  let macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n  const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\n  if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n    ipad = ua.match(/(Version)\\/([\\d.]+)/);\n    if (!ipad) ipad = [0, 1, '13_0_0'];\n    macos = false;\n  } // Android\n\n\n  if (android && !windows) {\n    device.os = 'android';\n    device.android = true;\n  }\n\n  if (ipad || iphone || ipod) {\n    device.os = 'ios';\n    device.ios = true;\n  } // Export object\n\n\n  return device;\n}\n\nfunction getDevice(overrides = {}) {\n  if (!deviceCached) {\n    deviceCached = calcDevice(overrides);\n  }\n\n  return deviceCached;\n}\n\nexport { getDevice };","import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n  const window = getWindow();\n\n  function isSafari() {\n    const ua = window.navigator.userAgent.toLowerCase();\n    return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n  }\n\n  return {\n    isSafari: isSafari(),\n    isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n  };\n}\n\nfunction getBrowser() {\n  if (!browser) {\n    browser = calcBrowser();\n  }\n\n  return browser;\n}\n\nexport { getBrowser };","import { getWindow } from 'ssr-window';\nexport default function Resize({\n  swiper,\n  on,\n  emit\n}) {\n  const window = getWindow();\n  let observer = null;\n  let animationFrame = null;\n\n  const resizeHandler = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    emit('beforeResize');\n    emit('resize');\n  };\n\n  const createObserver = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    observer = new ResizeObserver(entries => {\n      animationFrame = window.requestAnimationFrame(() => {\n        const {\n          width,\n          height\n        } = swiper;\n        let newWidth = width;\n        let newHeight = height;\n        entries.forEach(({\n          contentBoxSize,\n          contentRect,\n          target\n        }) => {\n          if (target && target !== swiper.el) return;\n          newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n          newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n        });\n\n        if (newWidth !== width || newHeight !== height) {\n          resizeHandler();\n        }\n      });\n    });\n    observer.observe(swiper.el);\n  };\n\n  const removeObserver = () => {\n    if (animationFrame) {\n      window.cancelAnimationFrame(animationFrame);\n    }\n\n    if (observer && observer.unobserve && swiper.el) {\n      observer.unobserve(swiper.el);\n      observer = null;\n    }\n  };\n\n  const orientationChangeHandler = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    emit('orientationchange');\n  };\n\n  on('init', () => {\n    if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n      createObserver();\n      return;\n    }\n\n    window.addEventListener('resize', resizeHandler);\n    window.addEventListener('orientationchange', orientationChangeHandler);\n  });\n  on('destroy', () => {\n    removeObserver();\n    window.removeEventListener('resize', resizeHandler);\n    window.removeEventListener('orientationchange', orientationChangeHandler);\n  });\n}","import { getWindow } from 'ssr-window';\nexport default function Observer({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const observers = [];\n  const window = getWindow();\n\n  const attach = (target, options = {}) => {\n    const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n    const observer = new ObserverFunc(mutations => {\n      // The observerUpdate event should only be triggered\n      // once despite the number of mutations.  Additional\n      // triggers are redundant and are very costly\n      if (mutations.length === 1) {\n        emit('observerUpdate', mutations[0]);\n        return;\n      }\n\n      const observerUpdate = function observerUpdate() {\n        emit('observerUpdate', mutations[0]);\n      };\n\n      if (window.requestAnimationFrame) {\n        window.requestAnimationFrame(observerUpdate);\n      } else {\n        window.setTimeout(observerUpdate, 0);\n      }\n    });\n    observer.observe(target, {\n      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n      childList: typeof options.childList === 'undefined' ? true : options.childList,\n      characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n    });\n    observers.push(observer);\n  };\n\n  const init = () => {\n    if (!swiper.params.observer) return;\n\n    if (swiper.params.observeParents) {\n      const containerParents = swiper.$el.parents();\n\n      for (let i = 0; i < containerParents.length; i += 1) {\n        attach(containerParents[i]);\n      }\n    } // Observe container\n\n\n    attach(swiper.$el[0], {\n      childList: swiper.params.observeSlideChildren\n    }); // Observe wrapper\n\n    attach(swiper.$wrapperEl[0], {\n      attributes: false\n    });\n  };\n\n  const destroy = () => {\n    observers.forEach(observer => {\n      observer.disconnect();\n    });\n    observers.splice(0, observers.length);\n  };\n\n  extendParams({\n    observer: false,\n    observeParents: false,\n    observeSlideChildren: false\n  });\n  on('init', init);\n  on('destroy', destroy);\n}","/* eslint-disable no-underscore-dangle */\nexport default {\n  on(events, handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n    events.split(' ').forEach(event => {\n      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n      self.eventsListeners[event][method](handler);\n    });\n    return self;\n  },\n\n  once(events, handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n\n    function onceHandler(...args) {\n      self.off(events, onceHandler);\n\n      if (onceHandler.__emitterProxy) {\n        delete onceHandler.__emitterProxy;\n      }\n\n      handler.apply(self, args);\n    }\n\n    onceHandler.__emitterProxy = handler;\n    return self.on(events, onceHandler, priority);\n  },\n\n  onAny(handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n\n    if (self.eventsAnyListeners.indexOf(handler) < 0) {\n      self.eventsAnyListeners[method](handler);\n    }\n\n    return self;\n  },\n\n  offAny(handler) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsAnyListeners) return self;\n    const index = self.eventsAnyListeners.indexOf(handler);\n\n    if (index >= 0) {\n      self.eventsAnyListeners.splice(index, 1);\n    }\n\n    return self;\n  },\n\n  off(events, handler) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsListeners) return self;\n    events.split(' ').forEach(event => {\n      if (typeof handler === 'undefined') {\n        self.eventsListeners[event] = [];\n      } else if (self.eventsListeners[event]) {\n        self.eventsListeners[event].forEach((eventHandler, index) => {\n          if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n            self.eventsListeners[event].splice(index, 1);\n          }\n        });\n      }\n    });\n    return self;\n  },\n\n  emit(...args) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsListeners) return self;\n    let events;\n    let data;\n    let context;\n\n    if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n      events = args[0];\n      data = args.slice(1, args.length);\n      context = self;\n    } else {\n      events = args[0].events;\n      data = args[0].data;\n      context = args[0].context || self;\n    }\n\n    data.unshift(context);\n    const eventsArray = Array.isArray(events) ? events : events.split(' ');\n    eventsArray.forEach(event => {\n      if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n        self.eventsAnyListeners.forEach(eventHandler => {\n          eventHandler.apply(context, [event, ...data]);\n        });\n      }\n\n      if (self.eventsListeners && self.eventsListeners[event]) {\n        self.eventsListeners[event].forEach(eventHandler => {\n          eventHandler.apply(context, data);\n        });\n      }\n    });\n    return self;\n  }\n\n};","export default function updateSize() {\n  const swiper = this;\n  let width;\n  let height;\n  const $el = swiper.$el;\n\n  if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n    width = swiper.params.width;\n  } else {\n    width = $el[0].clientWidth;\n  }\n\n  if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n    height = swiper.params.height;\n  } else {\n    height = $el[0].clientHeight;\n  }\n\n  if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n    return;\n  } // Subtract paddings\n\n\n  width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n  height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n  if (Number.isNaN(width)) width = 0;\n  if (Number.isNaN(height)) height = 0;\n  Object.assign(swiper, {\n    width,\n    height,\n    size: swiper.isHorizontal() ? width : height\n  });\n}","import { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n  const swiper = this;\n\n  function getDirectionLabel(property) {\n    if (swiper.isHorizontal()) {\n      return property;\n    } // prettier-ignore\n\n\n    return {\n      'width': 'height',\n      'margin-top': 'margin-left',\n      'margin-bottom ': 'margin-right',\n      'margin-left': 'margin-top',\n      'margin-right': 'margin-bottom',\n      'padding-left': 'padding-top',\n      'padding-right': 'padding-bottom',\n      'marginRight': 'marginBottom'\n    }[property];\n  }\n\n  function getDirectionPropertyValue(node, label) {\n    return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n  }\n\n  const params = swiper.params;\n  const {\n    $wrapperEl,\n    size: swiperSize,\n    rtlTranslate: rtl,\n    wrongRTL\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n  const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n  const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n  let snapGrid = [];\n  const slidesGrid = [];\n  const slidesSizesGrid = [];\n  let offsetBefore = params.slidesOffsetBefore;\n\n  if (typeof offsetBefore === 'function') {\n    offsetBefore = params.slidesOffsetBefore.call(swiper);\n  }\n\n  let offsetAfter = params.slidesOffsetAfter;\n\n  if (typeof offsetAfter === 'function') {\n    offsetAfter = params.slidesOffsetAfter.call(swiper);\n  }\n\n  const previousSnapGridLength = swiper.snapGrid.length;\n  const previousSlidesGridLength = swiper.slidesGrid.length;\n  let spaceBetween = params.spaceBetween;\n  let slidePosition = -offsetBefore;\n  let prevSlideSize = 0;\n  let index = 0;\n\n  if (typeof swiperSize === 'undefined') {\n    return;\n  }\n\n  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n  }\n\n  swiper.virtualSize = -spaceBetween; // reset margins\n\n  if (rtl) slides.css({\n    marginLeft: '',\n    marginBottom: '',\n    marginTop: ''\n  });else slides.css({\n    marginRight: '',\n    marginBottom: '',\n    marginTop: ''\n  }); // reset cssMode offsets\n\n  if (params.centeredSlides && params.cssMode) {\n    setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n    setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n  }\n\n  const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n  if (gridEnabled) {\n    swiper.grid.initSlides(slidesLength);\n  } // Calc slides\n\n\n  let slideSize;\n  const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n    return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n  }).length > 0;\n\n  for (let i = 0; i < slidesLength; i += 1) {\n    slideSize = 0;\n    const slide = slides.eq(i);\n\n    if (gridEnabled) {\n      swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n    }\n\n    if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n    if (params.slidesPerView === 'auto') {\n      if (shouldResetSlideSize) {\n        slides[i].style[getDirectionLabel('width')] = ``;\n      }\n\n      const slideStyles = getComputedStyle(slide[0]);\n      const currentTransform = slide[0].style.transform;\n      const currentWebKitTransform = slide[0].style.webkitTransform;\n\n      if (currentTransform) {\n        slide[0].style.transform = 'none';\n      }\n\n      if (currentWebKitTransform) {\n        slide[0].style.webkitTransform = 'none';\n      }\n\n      if (params.roundLengths) {\n        slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n      } else {\n        // eslint-disable-next-line\n        const width = getDirectionPropertyValue(slideStyles, 'width');\n        const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n        const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n        const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n        const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n        const boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n        if (boxSizing && boxSizing === 'border-box') {\n          slideSize = width + marginLeft + marginRight;\n        } else {\n          const {\n            clientWidth,\n            offsetWidth\n          } = slide[0];\n          slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n        }\n      }\n\n      if (currentTransform) {\n        slide[0].style.transform = currentTransform;\n      }\n\n      if (currentWebKitTransform) {\n        slide[0].style.webkitTransform = currentWebKitTransform;\n      }\n\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n    } else {\n      slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n      if (slides[i]) {\n        slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n      }\n    }\n\n    if (slides[i]) {\n      slides[i].swiperSlideSize = slideSize;\n    }\n\n    slidesSizesGrid.push(slideSize);\n\n    if (params.centeredSlides) {\n      slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n      if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n    } else {\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n      slidePosition = slidePosition + slideSize + spaceBetween;\n    }\n\n    swiper.virtualSize += slideSize + spaceBetween;\n    prevSlideSize = slideSize;\n    index += 1;\n  }\n\n  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n  if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n    $wrapperEl.css({\n      width: `${swiper.virtualSize + params.spaceBetween}px`\n    });\n  }\n\n  if (params.setWrapperSize) {\n    $wrapperEl.css({\n      [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n    });\n  }\n\n  if (gridEnabled) {\n    swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n  } // Remove last grid elements depending on width\n\n\n  if (!params.centeredSlides) {\n    const newSlidesGrid = [];\n\n    for (let i = 0; i < snapGrid.length; i += 1) {\n      let slidesGridItem = snapGrid[i];\n      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n      if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n        newSlidesGrid.push(slidesGridItem);\n      }\n    }\n\n    snapGrid = newSlidesGrid;\n\n    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n      snapGrid.push(swiper.virtualSize - swiperSize);\n    }\n  }\n\n  if (snapGrid.length === 0) snapGrid = [0];\n\n  if (params.spaceBetween !== 0) {\n    const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n    slides.filter((_, slideIndex) => {\n      if (!params.cssMode) return true;\n\n      if (slideIndex === slides.length - 1) {\n        return false;\n      }\n\n      return true;\n    }).css({\n      [key]: `${spaceBetween}px`\n    });\n  }\n\n  if (params.centeredSlides && params.centeredSlidesBounds) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach(slideSizeValue => {\n      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n    });\n    allSlidesSize -= params.spaceBetween;\n    const maxSnap = allSlidesSize - swiperSize;\n    snapGrid = snapGrid.map(snap => {\n      if (snap < 0) return -offsetBefore;\n      if (snap > maxSnap) return maxSnap + offsetAfter;\n      return snap;\n    });\n  }\n\n  if (params.centerInsufficientSlides) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach(slideSizeValue => {\n      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n    });\n    allSlidesSize -= params.spaceBetween;\n\n    if (allSlidesSize < swiperSize) {\n      const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n      snapGrid.forEach((snap, snapIndex) => {\n        snapGrid[snapIndex] = snap - allSlidesOffset;\n      });\n      slidesGrid.forEach((snap, snapIndex) => {\n        slidesGrid[snapIndex] = snap + allSlidesOffset;\n      });\n    }\n  }\n\n  Object.assign(swiper, {\n    slides,\n    snapGrid,\n    slidesGrid,\n    slidesSizesGrid\n  });\n\n  if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n    setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n    setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n    const addToSnapGrid = -swiper.snapGrid[0];\n    const addToSlidesGrid = -swiper.slidesGrid[0];\n    swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n    swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n  }\n\n  if (slidesLength !== previousSlidesLength) {\n    swiper.emit('slidesLengthChange');\n  }\n\n  if (snapGrid.length !== previousSnapGridLength) {\n    if (swiper.params.watchOverflow) swiper.checkOverflow();\n    swiper.emit('snapGridLengthChange');\n  }\n\n  if (slidesGrid.length !== previousSlidesGridLength) {\n    swiper.emit('slidesGridLengthChange');\n  }\n\n  if (params.watchSlidesProgress) {\n    swiper.updateSlidesOffset();\n  }\n\n  if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n    const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n    const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass);\n\n    if (slidesLength <= params.maxBackfaceHiddenSlides) {\n      if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass);\n    } else if (hasClassBackfaceClassAdded) {\n      swiper.$el.removeClass(backFaceHiddenClass);\n    }\n  }\n}","import $ from '../../shared/dom.js';\nexport default function updateAutoHeight(speed) {\n  const swiper = this;\n  const activeSlides = [];\n  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n  let newHeight = 0;\n  let i;\n\n  if (typeof speed === 'number') {\n    swiper.setTransition(speed);\n  } else if (speed === true) {\n    swiper.setTransition(swiper.params.speed);\n  }\n\n  const getSlideByIndex = index => {\n    if (isVirtual) {\n      return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n    }\n\n    return swiper.slides.eq(index)[0];\n  }; // Find slides currently in view\n\n\n  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n    if (swiper.params.centeredSlides) {\n      (swiper.visibleSlides || $([])).each(slide => {\n        activeSlides.push(slide);\n      });\n    } else {\n      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n        const index = swiper.activeIndex + i;\n        if (index > swiper.slides.length && !isVirtual) break;\n        activeSlides.push(getSlideByIndex(index));\n      }\n    }\n  } else {\n    activeSlides.push(getSlideByIndex(swiper.activeIndex));\n  } // Find new height from highest slide in view\n\n\n  for (i = 0; i < activeSlides.length; i += 1) {\n    if (typeof activeSlides[i] !== 'undefined') {\n      const height = activeSlides[i].offsetHeight;\n      newHeight = height > newHeight ? height : newHeight;\n    }\n  } // Update Height\n\n\n  if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}","export default function updateSlidesOffset() {\n  const swiper = this;\n  const slides = swiper.slides;\n\n  for (let i = 0; i < slides.length; i += 1) {\n    slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n  }\n}","import $ from '../../shared/dom.js';\nexport default function updateSlidesProgress(translate = this && this.translate || 0) {\n  const swiper = this;\n  const params = swiper.params;\n  const {\n    slides,\n    rtlTranslate: rtl,\n    snapGrid\n  } = swiper;\n  if (slides.length === 0) return;\n  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n  let offsetCenter = -translate;\n  if (rtl) offsetCenter = translate; // Visible Slides\n\n  slides.removeClass(params.slideVisibleClass);\n  swiper.visibleSlidesIndexes = [];\n  swiper.visibleSlides = [];\n\n  for (let i = 0; i < slides.length; i += 1) {\n    const slide = slides[i];\n    let slideOffset = slide.swiperSlideOffset;\n\n    if (params.cssMode && params.centeredSlides) {\n      slideOffset -= slides[0].swiperSlideOffset;\n    }\n\n    const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n    const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n    const slideBefore = -(offsetCenter - slideOffset);\n    const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n    const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n    if (isVisible) {\n      swiper.visibleSlides.push(slide);\n      swiper.visibleSlidesIndexes.push(i);\n      slides.eq(i).addClass(params.slideVisibleClass);\n    }\n\n    slide.progress = rtl ? -slideProgress : slideProgress;\n    slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n  }\n\n  swiper.visibleSlides = $(swiper.visibleSlides);\n}","export default function updateProgress(translate) {\n  const swiper = this;\n\n  if (typeof translate === 'undefined') {\n    const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n    translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n  }\n\n  const params = swiper.params;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  let {\n    progress,\n    isBeginning,\n    isEnd\n  } = swiper;\n  const wasBeginning = isBeginning;\n  const wasEnd = isEnd;\n\n  if (translatesDiff === 0) {\n    progress = 0;\n    isBeginning = true;\n    isEnd = true;\n  } else {\n    progress = (translate - swiper.minTranslate()) / translatesDiff;\n    isBeginning = progress <= 0;\n    isEnd = progress >= 1;\n  }\n\n  Object.assign(swiper, {\n    progress,\n    isBeginning,\n    isEnd\n  });\n  if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n  if (isBeginning && !wasBeginning) {\n    swiper.emit('reachBeginning toEdge');\n  }\n\n  if (isEnd && !wasEnd) {\n    swiper.emit('reachEnd toEdge');\n  }\n\n  if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n    swiper.emit('fromEdge');\n  }\n\n  swiper.emit('progress', progress);\n}","export default function updateSlidesClasses() {\n  const swiper = this;\n  const {\n    slides,\n    params,\n    $wrapperEl,\n    activeIndex,\n    realIndex\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n  let activeSlide;\n\n  if (isVirtual) {\n    activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n  } else {\n    activeSlide = slides.eq(activeIndex);\n  } // Active classes\n\n\n  activeSlide.addClass(params.slideActiveClass);\n\n  if (params.loop) {\n    // Duplicate to all looped slides\n    if (activeSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n    } else {\n      $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n    }\n  } // Next Slide\n\n\n  let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n\n  if (params.loop && nextSlide.length === 0) {\n    nextSlide = slides.eq(0);\n    nextSlide.addClass(params.slideNextClass);\n  } // Prev Slide\n\n\n  let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n\n  if (params.loop && prevSlide.length === 0) {\n    prevSlide = slides.eq(-1);\n    prevSlide.addClass(params.slidePrevClass);\n  }\n\n  if (params.loop) {\n    // Duplicate to all looped slides\n    if (nextSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n    } else {\n      $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n    }\n\n    if (prevSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n    } else {\n      $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n    }\n  }\n\n  swiper.emitSlidesClasses();\n}","export default function updateActiveIndex(newActiveIndex) {\n  const swiper = this;\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  const {\n    slidesGrid,\n    snapGrid,\n    params,\n    activeIndex: previousIndex,\n    realIndex: previousRealIndex,\n    snapIndex: previousSnapIndex\n  } = swiper;\n  let activeIndex = newActiveIndex;\n  let snapIndex;\n\n  if (typeof activeIndex === 'undefined') {\n    for (let i = 0; i < slidesGrid.length; i += 1) {\n      if (typeof slidesGrid[i + 1] !== 'undefined') {\n        if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n          activeIndex = i;\n        } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n          activeIndex = i + 1;\n        }\n      } else if (translate >= slidesGrid[i]) {\n        activeIndex = i;\n      }\n    } // Normalize slideIndex\n\n\n    if (params.normalizeSlideIndex) {\n      if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n    }\n  }\n\n  if (snapGrid.indexOf(translate) >= 0) {\n    snapIndex = snapGrid.indexOf(translate);\n  } else {\n    const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n  }\n\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n  if (activeIndex === previousIndex) {\n    if (snapIndex !== previousSnapIndex) {\n      swiper.snapIndex = snapIndex;\n      swiper.emit('snapIndexChange');\n    }\n\n    return;\n  } // Get real index\n\n\n  const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n  Object.assign(swiper, {\n    snapIndex,\n    realIndex,\n    previousIndex,\n    activeIndex\n  });\n  swiper.emit('activeIndexChange');\n  swiper.emit('snapIndexChange');\n\n  if (previousRealIndex !== realIndex) {\n    swiper.emit('realIndexChange');\n  }\n\n  if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n    swiper.emit('slideChange');\n  }\n}","import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n  const swiper = this;\n  const params = swiper.params;\n  const slide = $(e).closest(`.${params.slideClass}`)[0];\n  let slideFound = false;\n  let slideIndex;\n\n  if (slide) {\n    for (let i = 0; i < swiper.slides.length; i += 1) {\n      if (swiper.slides[i] === slide) {\n        slideFound = true;\n        slideIndex = i;\n        break;\n      }\n    }\n  }\n\n  if (slide && slideFound) {\n    swiper.clickedSlide = slide;\n\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n    } else {\n      swiper.clickedIndex = slideIndex;\n    }\n  } else {\n    swiper.clickedSlide = undefined;\n    swiper.clickedIndex = undefined;\n    return;\n  }\n\n  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n    swiper.slideToClickedSlide();\n  }\n}","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n  updateSize,\n  updateSlides,\n  updateAutoHeight,\n  updateSlidesOffset,\n  updateSlidesProgress,\n  updateProgress,\n  updateSlidesClasses,\n  updateActiveIndex,\n  updateClickedSlide\n};","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n  const swiper = this;\n  const {\n    params,\n    rtlTranslate: rtl,\n    translate,\n    $wrapperEl\n  } = swiper;\n\n  if (params.virtualTranslate) {\n    return rtl ? -translate : translate;\n  }\n\n  if (params.cssMode) {\n    return translate;\n  }\n\n  let currentTranslate = getTranslate($wrapperEl[0], axis);\n  if (rtl) currentTranslate = -currentTranslate;\n  return currentTranslate || 0;\n}","export default function setTranslate(translate, byController) {\n  const swiper = this;\n  const {\n    rtlTranslate: rtl,\n    params,\n    $wrapperEl,\n    wrapperEl,\n    progress\n  } = swiper;\n  let x = 0;\n  let y = 0;\n  const z = 0;\n\n  if (swiper.isHorizontal()) {\n    x = rtl ? -translate : translate;\n  } else {\n    y = translate;\n  }\n\n  if (params.roundLengths) {\n    x = Math.floor(x);\n    y = Math.floor(y);\n  }\n\n  if (params.cssMode) {\n    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n  } else if (!params.virtualTranslate) {\n    $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n  }\n\n  swiper.previousTranslate = swiper.translate;\n  swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n  }\n\n  if (newProgress !== progress) {\n    swiper.updateProgress(translate);\n  }\n\n  swiper.emit('setTranslate', swiper.translate, byController);\n}","export default function minTranslate() {\n  return -this.snapGrid[0];\n}","export default function maxTranslate() {\n  return -this.snapGrid[this.snapGrid.length - 1];\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n  const swiper = this;\n  const {\n    params,\n    wrapperEl\n  } = swiper;\n\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return false;\n  }\n\n  const minTranslate = swiper.minTranslate();\n  const maxTranslate = swiper.maxTranslate();\n  let newTranslate;\n  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n  swiper.updateProgress(newTranslate);\n\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n\n    if (speed === 0) {\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n    } else {\n      if (!swiper.support.smoothScroll) {\n        animateCSSModeScroll({\n          swiper,\n          targetPosition: -newTranslate,\n          side: isH ? 'left' : 'top'\n        });\n        return true;\n      }\n\n      wrapperEl.scrollTo({\n        [isH ? 'left' : 'top']: -newTranslate,\n        behavior: 'smooth'\n      });\n    }\n\n    return true;\n  }\n\n  if (speed === 0) {\n    swiper.setTransition(0);\n    swiper.setTranslate(newTranslate);\n\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionEnd');\n    }\n  } else {\n    swiper.setTransition(speed);\n    swiper.setTranslate(newTranslate);\n\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionStart');\n    }\n\n    if (!swiper.animating) {\n      swiper.animating = true;\n\n      if (!swiper.onTranslateToWrapperTransitionEnd) {\n        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n          if (!swiper || swiper.destroyed) return;\n          if (e.target !== this) return;\n          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n          swiper.onTranslateToWrapperTransitionEnd = null;\n          delete swiper.onTranslateToWrapperTransitionEnd;\n\n          if (runCallbacks) {\n            swiper.emit('transitionEnd');\n          }\n        };\n      }\n\n      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n    }\n  }\n\n  return true;\n}","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n  getTranslate,\n  setTranslate,\n  minTranslate,\n  maxTranslate,\n  translateTo\n};","export default function setTransition(duration, byController) {\n  const swiper = this;\n\n  if (!swiper.params.cssMode) {\n    swiper.$wrapperEl.transition(duration);\n  }\n\n  swiper.emit('setTransition', duration, byController);\n}","export default function transitionEmit({\n  swiper,\n  runCallbacks,\n  direction,\n  step\n}) {\n  const {\n    activeIndex,\n    previousIndex\n  } = swiper;\n  let dir = direction;\n\n  if (!dir) {\n    if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n  }\n\n  swiper.emit(`transition${step}`);\n\n  if (runCallbacks && activeIndex !== previousIndex) {\n    if (dir === 'reset') {\n      swiper.emit(`slideResetTransition${step}`);\n      return;\n    }\n\n    swiper.emit(`slideChangeTransition${step}`);\n\n    if (dir === 'next') {\n      swiper.emit(`slideNextTransition${step}`);\n    } else {\n      swiper.emit(`slidePrevTransition${step}`);\n    }\n  }\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks = true, direction) {\n  const swiper = this;\n  const {\n    params\n  } = swiper;\n  if (params.cssMode) return;\n\n  if (params.autoHeight) {\n    swiper.updateAutoHeight();\n  }\n\n  transitionEmit({\n    swiper,\n    runCallbacks,\n    direction,\n    step: 'Start'\n  });\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks = true, direction) {\n  const swiper = this;\n  const {\n    params\n  } = swiper;\n  swiper.animating = false;\n  if (params.cssMode) return;\n  swiper.setTransition(0);\n  transitionEmit({\n    swiper,\n    runCallbacks,\n    direction,\n    step: 'End'\n  });\n}","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n  setTransition,\n  transitionStart,\n  transitionEnd\n};","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {\n  if (typeof index !== 'number' && typeof index !== 'string') {\n    throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);\n  }\n\n  if (typeof index === 'string') {\n    /**\n     * The `index` argument converted from `string` to `number`.\n     * @type {number}\n     */\n    const indexAsNumber = parseInt(index, 10);\n    /**\n     * Determines whether the `index` argument is a valid `number`\n     * after being converted from the `string` type.\n     * @type {boolean}\n     */\n\n    const isValidNumber = isFinite(indexAsNumber);\n\n    if (!isValidNumber) {\n      throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n    } // Knowing that the converted `index` is a valid number,\n    // we can update the original argument's value.\n\n\n    index = indexAsNumber;\n  }\n\n  const swiper = this;\n  let slideIndex = index;\n  if (slideIndex < 0) slideIndex = 0;\n  const {\n    params,\n    snapGrid,\n    slidesGrid,\n    previousIndex,\n    activeIndex,\n    rtlTranslate: rtl,\n    wrapperEl,\n    enabled\n  } = swiper;\n\n  if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n    return false;\n  }\n\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n  let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n  const translate = -snapGrid[snapIndex]; // Normalize slideIndex\n\n  if (params.normalizeSlideIndex) {\n    for (let i = 0; i < slidesGrid.length; i += 1) {\n      const normalizedTranslate = -Math.floor(translate * 100);\n      const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n      const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n      if (typeof slidesGrid[i + 1] !== 'undefined') {\n        if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n          slideIndex = i;\n        } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n          slideIndex = i + 1;\n        }\n      } else if (normalizedTranslate >= normalizedGrid) {\n        slideIndex = i;\n      }\n    }\n  } // Directions locks\n\n\n  if (swiper.initialized && slideIndex !== activeIndex) {\n    if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n      return false;\n    }\n\n    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n      if ((activeIndex || 0) !== slideIndex) return false;\n    }\n  }\n\n  if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n    swiper.emit('beforeSlideChangeStart');\n  } // Update progress\n\n\n  swiper.updateProgress(translate);\n  let direction;\n  if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n  if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n    swiper.updateActiveIndex(slideIndex); // Update Height\n\n    if (params.autoHeight) {\n      swiper.updateAutoHeight();\n    }\n\n    swiper.updateSlidesClasses();\n\n    if (params.effect !== 'slide') {\n      swiper.setTranslate(translate);\n    }\n\n    if (direction !== 'reset') {\n      swiper.transitionStart(runCallbacks, direction);\n      swiper.transitionEnd(runCallbacks, direction);\n    }\n\n    return false;\n  }\n\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n    const t = rtl ? translate : -translate;\n\n    if (speed === 0) {\n      const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n      if (isVirtual) {\n        swiper.wrapperEl.style.scrollSnapType = 'none';\n        swiper._immediateVirtual = true;\n      }\n\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n      if (isVirtual) {\n        requestAnimationFrame(() => {\n          swiper.wrapperEl.style.scrollSnapType = '';\n          swiper._swiperImmediateVirtual = false;\n        });\n      }\n    } else {\n      if (!swiper.support.smoothScroll) {\n        animateCSSModeScroll({\n          swiper,\n          targetPosition: t,\n          side: isH ? 'left' : 'top'\n        });\n        return true;\n      }\n\n      wrapperEl.scrollTo({\n        [isH ? 'left' : 'top']: t,\n        behavior: 'smooth'\n      });\n    }\n\n    return true;\n  }\n\n  swiper.setTransition(speed);\n  swiper.setTranslate(translate);\n  swiper.updateActiveIndex(slideIndex);\n  swiper.updateSlidesClasses();\n  swiper.emit('beforeTransitionStart', speed, internal);\n  swiper.transitionStart(runCallbacks, direction);\n\n  if (speed === 0) {\n    swiper.transitionEnd(runCallbacks, direction);\n  } else if (!swiper.animating) {\n    swiper.animating = true;\n\n    if (!swiper.onSlideToWrapperTransitionEnd) {\n      swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n        if (!swiper || swiper.destroyed) return;\n        if (e.target !== this) return;\n        swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n        swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n        swiper.onSlideToWrapperTransitionEnd = null;\n        delete swiper.onSlideToWrapperTransitionEnd;\n        swiper.transitionEnd(runCallbacks, direction);\n      };\n    }\n\n    swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n    swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n  }\n\n  return true;\n}","export default function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n  if (typeof index === 'string') {\n    /**\n     * The `index` argument converted from `string` to `number`.\n     * @type {number}\n     */\n    const indexAsNumber = parseInt(index, 10);\n    /**\n     * Determines whether the `index` argument is a valid `number`\n     * after being converted from the `string` type.\n     * @type {boolean}\n     */\n\n    const isValidNumber = isFinite(indexAsNumber);\n\n    if (!isValidNumber) {\n      throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n    } // Knowing that the converted `index` is a valid number,\n    // we can update the original argument's value.\n\n\n    index = indexAsNumber;\n  }\n\n  const swiper = this;\n  let newIndex = index;\n\n  if (swiper.params.loop) {\n    newIndex += swiper.loopedSlides;\n  }\n\n  return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  const {\n    animating,\n    enabled,\n    params\n  } = swiper;\n  if (!enabled) return swiper;\n  let perGroup = params.slidesPerGroup;\n\n  if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n    perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n  }\n\n  const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n\n  if (params.loop) {\n    if (animating && params.loopPreventsSlide) return false;\n    swiper.loopFix(); // eslint-disable-next-line\n\n    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n  }\n\n  if (params.rewind && swiper.isEnd) {\n    return swiper.slideTo(0, speed, runCallbacks, internal);\n  }\n\n  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  const {\n    params,\n    animating,\n    snapGrid,\n    slidesGrid,\n    rtlTranslate,\n    enabled\n  } = swiper;\n  if (!enabled) return swiper;\n\n  if (params.loop) {\n    if (animating && params.loopPreventsSlide) return false;\n    swiper.loopFix(); // eslint-disable-next-line\n\n    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n  }\n\n  const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n  function normalize(val) {\n    if (val < 0) return -Math.floor(Math.abs(val));\n    return Math.floor(val);\n  }\n\n  const normalizedTranslate = normalize(translate);\n  const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n  if (typeof prevSnap === 'undefined' && params.cssMode) {\n    let prevSnapIndex;\n    snapGrid.forEach((snap, snapIndex) => {\n      if (normalizedTranslate >= snap) {\n        // prevSnap = snap;\n        prevSnapIndex = snapIndex;\n      }\n    });\n\n    if (typeof prevSnapIndex !== 'undefined') {\n      prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n    }\n  }\n\n  let prevIndex = 0;\n\n  if (typeof prevSnap !== 'undefined') {\n    prevIndex = slidesGrid.indexOf(prevSnap);\n    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\n    if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n      prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n      prevIndex = Math.max(prevIndex, 0);\n    }\n  }\n\n  if (params.rewind && swiper.isBeginning) {\n    const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n    return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n  }\n\n  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n  const swiper = this;\n  let index = swiper.activeIndex;\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n  const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n  if (translate >= swiper.snapGrid[snapIndex]) {\n    // The current translate is on or after the current snap index, so the choice\n    // is between the current index and the one after it.\n    const currentSnap = swiper.snapGrid[snapIndex];\n    const nextSnap = swiper.snapGrid[snapIndex + 1];\n\n    if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n      index += swiper.params.slidesPerGroup;\n    }\n  } else {\n    // The current translate is before the current snap index, so the choice\n    // is between the current index and the one before it.\n    const prevSnap = swiper.snapGrid[snapIndex - 1];\n    const currentSnap = swiper.snapGrid[snapIndex];\n\n    if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n      index -= swiper.params.slidesPerGroup;\n    }\n  }\n\n  index = Math.max(index, 0);\n  index = Math.min(index, swiper.slidesGrid.length - 1);\n  return swiper.slideTo(index, speed, runCallbacks, internal);\n}","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n  const swiper = this;\n  const {\n    params,\n    $wrapperEl\n  } = swiper;\n  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n  let slideToIndex = swiper.clickedIndex;\n  let realIndex;\n\n  if (params.loop) {\n    if (swiper.animating) return;\n    realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n    if (params.centeredSlides) {\n      if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n        swiper.loopFix();\n        slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n        nextTick(() => {\n          swiper.slideTo(slideToIndex);\n        });\n      } else {\n        swiper.slideTo(slideToIndex);\n      }\n    } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n      swiper.loopFix();\n      slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n      nextTick(() => {\n        swiper.slideTo(slideToIndex);\n      });\n    } else {\n      swiper.slideTo(slideToIndex);\n    }\n  } else {\n    swiper.slideTo(slideToIndex);\n  }\n}","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n  slideTo,\n  slideToLoop,\n  slideNext,\n  slidePrev,\n  slideReset,\n  slideToClosest,\n  slideToClickedSlide\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n  const swiper = this;\n  const document = getDocument();\n  const {\n    params,\n    $wrapperEl\n  } = swiper; // Remove duplicated slides\n\n  const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n  $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n  let slides = $selector.children(`.${params.slideClass}`);\n\n  if (params.loopFillGroupWithBlank) {\n    const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n    if (blankSlidesNum !== params.slidesPerGroup) {\n      for (let i = 0; i < blankSlidesNum; i += 1) {\n        const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n        $selector.append(blankNode);\n      }\n\n      slides = $selector.children(`.${params.slideClass}`);\n    }\n  }\n\n  if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n  swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n  swiper.loopedSlides += params.loopAdditionalSlides;\n\n  if (swiper.loopedSlides > slides.length && swiper.params.loopedSlidesLimit) {\n    swiper.loopedSlides = slides.length;\n  }\n\n  const prependSlides = [];\n  const appendSlides = [];\n  slides.each((el, index) => {\n    const slide = $(el);\n    slide.attr('data-swiper-slide-index', index);\n  });\n\n  for (let i = 0; i < swiper.loopedSlides; i += 1) {\n    const index = i - Math.floor(i / slides.length) * slides.length;\n    appendSlides.push(slides.eq(index)[0]);\n    prependSlides.unshift(slides.eq(slides.length - index - 1)[0]);\n  }\n\n  for (let i = 0; i < appendSlides.length; i += 1) {\n    $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n  }\n\n  for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n    $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n  }\n}","export default function loopFix() {\n  const swiper = this;\n  swiper.emit('beforeLoopFix');\n  const {\n    activeIndex,\n    slides,\n    loopedSlides,\n    allowSlidePrev,\n    allowSlideNext,\n    snapGrid,\n    rtlTranslate: rtl\n  } = swiper;\n  let newIndex;\n  swiper.allowSlidePrev = true;\n  swiper.allowSlideNext = true;\n  const snapTranslate = -snapGrid[activeIndex];\n  const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n  if (activeIndex < loopedSlides) {\n    newIndex = slides.length - loopedSlides * 3 + activeIndex;\n    newIndex += loopedSlides;\n    const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n    if (slideChanged && diff !== 0) {\n      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n    }\n  } else if (activeIndex >= slides.length - loopedSlides) {\n    // Fix For Positive Oversliding\n    newIndex = -slides.length + activeIndex + loopedSlides;\n    newIndex += loopedSlides;\n    const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n    if (slideChanged && diff !== 0) {\n      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n    }\n  }\n\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n  swiper.emit('loopFix');\n}","export default function loopDestroy() {\n  const swiper = this;\n  const {\n    $wrapperEl,\n    params,\n    slides\n  } = swiper;\n  $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n  slides.removeAttr('data-swiper-slide-index');\n}","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n  loopCreate,\n  loopFix,\n  loopDestroy\n};","export default function setGrabCursor(moving) {\n  const swiper = this;\n  if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n  const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n  el.style.cursor = 'move';\n  el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n  const swiper = this;\n\n  if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n    return;\n  }\n\n  swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n  setGrabCursor,\n  unsetGrabCursor\n};","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base = this) {\n  function __closestFrom(el) {\n    if (!el || el === getDocument() || el === getWindow()) return null;\n    if (el.assignedSlot) el = el.assignedSlot;\n    const found = el.closest(selector);\n\n    if (!found && !el.getRootNode) {\n      return null;\n    }\n\n    return found || __closestFrom(el.getRootNode().host);\n  }\n\n  return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n  const swiper = this;\n  const document = getDocument();\n  const window = getWindow();\n  const data = swiper.touchEventsData;\n  const {\n    params,\n    touches,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return;\n  }\n\n  if (!swiper.animating && params.cssMode && params.loop) {\n    swiper.loopFix();\n  }\n\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  let $targetEl = $(e.target);\n\n  if (params.touchEventsTarget === 'wrapper') {\n    if (!$targetEl.closest(swiper.wrapperEl).length) return;\n  }\n\n  data.isTouchEvent = e.type === 'touchstart';\n  if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n  if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n  if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n  const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; // eslint-disable-next-line\n\n  const eventPath = event.composedPath ? event.composedPath() : event.path;\n\n  if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n    $targetEl = $(eventPath[0]);\n  }\n\n  const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n  const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n  if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, $targetEl[0]) : $targetEl.closest(noSwipingSelector)[0])) {\n    swiper.allowClick = true;\n    return;\n  }\n\n  if (params.swipeHandler) {\n    if (!$targetEl.closest(params.swipeHandler)[0]) return;\n  }\n\n  touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n  touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n  const startX = touches.currentX;\n  const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n  const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n  const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n  if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n    if (edgeSwipeDetection === 'prevent') {\n      event.preventDefault();\n    } else {\n      return;\n    }\n  }\n\n  Object.assign(data, {\n    isTouched: true,\n    isMoved: false,\n    allowTouchCallbacks: true,\n    isScrolling: undefined,\n    startMoving: undefined\n  });\n  touches.startX = startX;\n  touches.startY = startY;\n  data.touchStartTime = now();\n  swiper.allowClick = true;\n  swiper.updateSize();\n  swiper.swipeDirection = undefined;\n  if (params.threshold > 0) data.allowThresholdMove = false;\n\n  if (e.type !== 'touchstart') {\n    let preventDefault = true;\n\n    if ($targetEl.is(data.focusableElements)) {\n      preventDefault = false;\n\n      if ($targetEl[0].nodeName === 'SELECT') {\n        data.isTouched = false;\n      }\n    }\n\n    if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n      document.activeElement.blur();\n    }\n\n    const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n    if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n      e.preventDefault();\n    }\n  }\n\n  if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n    swiper.freeMode.onTouchStart();\n  }\n\n  swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\nexport default function onTouchMove(event) {\n  const document = getDocument();\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  const {\n    params,\n    touches,\n    rtlTranslate: rtl,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n\n  if (!data.isTouched) {\n    if (data.startMoving && data.isScrolling) {\n      swiper.emit('touchMoveOpposite', e);\n    }\n\n    return;\n  }\n\n  if (data.isTouchEvent && e.type !== 'touchmove') return;\n  const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n  const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n  const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n  if (e.preventedByNestedSwiper) {\n    touches.startX = pageX;\n    touches.startY = pageY;\n    return;\n  }\n\n  if (!swiper.allowTouchMove) {\n    if (!$(e.target).is(data.focusableElements)) {\n      swiper.allowClick = false;\n    }\n\n    if (data.isTouched) {\n      Object.assign(touches, {\n        startX: pageX,\n        startY: pageY,\n        currentX: pageX,\n        currentY: pageY\n      });\n      data.touchStartTime = now();\n    }\n\n    return;\n  }\n\n  if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n    if (swiper.isVertical()) {\n      // Vertical\n      if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n        data.isTouched = false;\n        data.isMoved = false;\n        return;\n      }\n    } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n      return;\n    }\n  }\n\n  if (data.isTouchEvent && document.activeElement) {\n    if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n      data.isMoved = true;\n      swiper.allowClick = false;\n      return;\n    }\n  }\n\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchMove', e);\n  }\n\n  if (e.targetTouches && e.targetTouches.length > 1) return;\n  touches.currentX = pageX;\n  touches.currentY = pageY;\n  const diffX = touches.currentX - touches.startX;\n  const diffY = touches.currentY - touches.startY;\n  if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n\n  if (typeof data.isScrolling === 'undefined') {\n    let touchAngle;\n\n    if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n      data.isScrolling = false;\n    } else {\n      // eslint-disable-next-line\n      if (diffX * diffX + diffY * diffY >= 25) {\n        touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n      }\n    }\n  }\n\n  if (data.isScrolling) {\n    swiper.emit('touchMoveOpposite', e);\n  }\n\n  if (typeof data.startMoving === 'undefined') {\n    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n      data.startMoving = true;\n    }\n  }\n\n  if (data.isScrolling) {\n    data.isTouched = false;\n    return;\n  }\n\n  if (!data.startMoving) {\n    return;\n  }\n\n  swiper.allowClick = false;\n\n  if (!params.cssMode && e.cancelable) {\n    e.preventDefault();\n  }\n\n  if (params.touchMoveStopPropagation && !params.nested) {\n    e.stopPropagation();\n  }\n\n  if (!data.isMoved) {\n    if (params.loop && !params.cssMode) {\n      swiper.loopFix();\n    }\n\n    data.startTranslate = swiper.getTranslate();\n    swiper.setTransition(0);\n\n    if (swiper.animating) {\n      swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n    }\n\n    data.allowMomentumBounce = false; // Grab Cursor\n\n    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n      swiper.setGrabCursor(true);\n    }\n\n    swiper.emit('sliderFirstMove', e);\n  }\n\n  swiper.emit('sliderMove', e);\n  data.isMoved = true;\n  let diff = swiper.isHorizontal() ? diffX : diffY;\n  touches.diff = diff;\n  diff *= params.touchRatio;\n  if (rtl) diff = -diff;\n  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n  data.currentTranslate = diff + data.startTranslate;\n  let disableParentSwiper = true;\n  let resistanceRatio = params.resistanceRatio;\n\n  if (params.touchReleaseOnEdges) {\n    resistanceRatio = 0;\n  }\n\n  if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n    disableParentSwiper = false;\n    if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n  } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n    disableParentSwiper = false;\n    if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n  }\n\n  if (disableParentSwiper) {\n    e.preventedByNestedSwiper = true;\n  } // Directions locks\n\n\n  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n\n  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n\n  if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n    data.currentTranslate = data.startTranslate;\n  } // Threshold\n\n\n  if (params.threshold > 0) {\n    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n      if (!data.allowThresholdMove) {\n        data.allowThresholdMove = true;\n        touches.startX = touches.currentX;\n        touches.startY = touches.currentY;\n        data.currentTranslate = data.startTranslate;\n        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n        return;\n      }\n    } else {\n      data.currentTranslate = data.startTranslate;\n      return;\n    }\n  }\n\n  if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n  if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n\n  if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n    swiper.freeMode.onTouchMove();\n  } // Update progress\n\n\n  swiper.updateProgress(data.currentTranslate); // Update translate\n\n  swiper.setTranslate(data.currentTranslate);\n}","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  const {\n    params,\n    touches,\n    rtlTranslate: rtl,\n    slidesGrid,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchEnd', e);\n  }\n\n  data.allowTouchCallbacks = false;\n\n  if (!data.isTouched) {\n    if (data.isMoved && params.grabCursor) {\n      swiper.setGrabCursor(false);\n    }\n\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  } // Return Grab Cursor\n\n\n  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n    swiper.setGrabCursor(false);\n  } // Time diff\n\n\n  const touchEndTime = now();\n  const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n  if (swiper.allowClick) {\n    const pathTree = e.path || e.composedPath && e.composedPath();\n    swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n    swiper.emit('tap click', e);\n\n    if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n      swiper.emit('doubleTap doubleClick', e);\n    }\n  }\n\n  data.lastClickTime = now();\n  nextTick(() => {\n    if (!swiper.destroyed) swiper.allowClick = true;\n  });\n\n  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n    data.isTouched = false;\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n\n  data.isTouched = false;\n  data.isMoved = false;\n  data.startMoving = false;\n  let currentPos;\n\n  if (params.followFinger) {\n    currentPos = rtl ? swiper.translate : -swiper.translate;\n  } else {\n    currentPos = -data.currentTranslate;\n  }\n\n  if (params.cssMode) {\n    return;\n  }\n\n  if (swiper.params.freeMode && params.freeMode.enabled) {\n    swiper.freeMode.onTouchEnd({\n      currentPos\n    });\n    return;\n  } // Find current slide\n\n\n  let stopIndex = 0;\n  let groupSize = swiper.slidesSizesGrid[0];\n\n  for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n    const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n    if (typeof slidesGrid[i + increment] !== 'undefined') {\n      if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n        stopIndex = i;\n        groupSize = slidesGrid[i + increment] - slidesGrid[i];\n      }\n    } else if (currentPos >= slidesGrid[i]) {\n      stopIndex = i;\n      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n    }\n  }\n\n  let rewindFirstIndex = null;\n  let rewindLastIndex = null;\n\n  if (params.rewind) {\n    if (swiper.isBeginning) {\n      rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n    } else if (swiper.isEnd) {\n      rewindFirstIndex = 0;\n    }\n  } // Find current slide size\n\n\n  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n  const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n  if (timeDiff > params.longSwipesMs) {\n    // Long touches\n    if (!params.longSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n\n    if (swiper.swipeDirection === 'next') {\n      if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n    }\n\n    if (swiper.swipeDirection === 'prev') {\n      if (ratio > 1 - params.longSwipesRatio) {\n        swiper.slideTo(stopIndex + increment);\n      } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n        swiper.slideTo(rewindLastIndex);\n      } else {\n        swiper.slideTo(stopIndex);\n      }\n    }\n  } else {\n    // Short swipes\n    if (!params.shortSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n\n    const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n    if (!isNavButtonTarget) {\n      if (swiper.swipeDirection === 'next') {\n        swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n      }\n\n      if (swiper.swipeDirection === 'prev') {\n        swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n      }\n    } else if (e.target === swiper.navigation.nextEl) {\n      swiper.slideTo(stopIndex + increment);\n    } else {\n      swiper.slideTo(stopIndex);\n    }\n  }\n}","export default function onResize() {\n  const swiper = this;\n  const {\n    params,\n    el\n  } = swiper;\n  if (el && el.offsetWidth === 0) return; // Breakpoints\n\n  if (params.breakpoints) {\n    swiper.setBreakpoint();\n  } // Save locks\n\n\n  const {\n    allowSlideNext,\n    allowSlidePrev,\n    snapGrid\n  } = swiper; // Disable locks on resize\n\n  swiper.allowSlideNext = true;\n  swiper.allowSlidePrev = true;\n  swiper.updateSize();\n  swiper.updateSlides();\n  swiper.updateSlidesClasses();\n\n  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n    swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n  } else {\n    swiper.slideTo(swiper.activeIndex, 0, false, true);\n  }\n\n  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n    swiper.autoplay.run();\n  } // Return locks after resize\n\n\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n\n  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n    swiper.checkOverflow();\n  }\n}","export default function onClick(e) {\n  const swiper = this;\n  if (!swiper.enabled) return;\n\n  if (!swiper.allowClick) {\n    if (swiper.params.preventClicks) e.preventDefault();\n\n    if (swiper.params.preventClicksPropagation && swiper.animating) {\n      e.stopPropagation();\n      e.stopImmediatePropagation();\n    }\n  }\n}","export default function onScroll() {\n  const swiper = this;\n  const {\n    wrapperEl,\n    rtlTranslate,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  swiper.previousTranslate = swiper.translate;\n\n  if (swiper.isHorizontal()) {\n    swiper.translate = -wrapperEl.scrollLeft;\n  } else {\n    swiper.translate = -wrapperEl.scrollTop;\n  } // eslint-disable-next-line\n\n\n  if (swiper.translate === 0) swiper.translate = 0;\n  swiper.updateActiveIndex();\n  swiper.updateSlidesClasses();\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n  }\n\n  if (newProgress !== swiper.progress) {\n    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n  }\n\n  swiper.emit('setTranslate', swiper.translate, false);\n}","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n  const document = getDocument();\n  const {\n    params,\n    touchEvents,\n    el,\n    wrapperEl,\n    device,\n    support\n  } = swiper;\n  const capture = !!params.nested;\n  const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n  const swiperMethod = method; // Touch Events\n\n  if (!support.touch) {\n    el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n    document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n    document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n  } else {\n    const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n    el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n    el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n      passive: false,\n      capture\n    } : capture);\n    el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n    if (touchEvents.cancel) {\n      el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n    }\n  } // Prevent Links Clicks\n\n\n  if (params.preventClicks || params.preventClicksPropagation) {\n    el[domMethod]('click', swiper.onClick, true);\n  }\n\n  if (params.cssMode) {\n    wrapperEl[domMethod]('scroll', swiper.onScroll);\n  } // Resize handler\n\n\n  if (params.updateOnWindowResize) {\n    swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n  } else {\n    swiper[swiperMethod]('observerUpdate', onResize, true);\n  }\n};\n\nfunction attachEvents() {\n  const swiper = this;\n  const document = getDocument();\n  const {\n    params,\n    support\n  } = swiper;\n  swiper.onTouchStart = onTouchStart.bind(swiper);\n  swiper.onTouchMove = onTouchMove.bind(swiper);\n  swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n  if (params.cssMode) {\n    swiper.onScroll = onScroll.bind(swiper);\n  }\n\n  swiper.onClick = onClick.bind(swiper);\n\n  if (support.touch && !dummyEventAttached) {\n    document.addEventListener('touchstart', dummyEventListener);\n    dummyEventAttached = true;\n  }\n\n  events(swiper, 'on');\n}\n\nfunction detachEvents() {\n  const swiper = this;\n  events(swiper, 'off');\n}\n\nexport default {\n  attachEvents,\n  detachEvents\n};","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n  return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n  const swiper = this;\n  const {\n    activeIndex,\n    initialized,\n    loopedSlides = 0,\n    params,\n    $el\n  } = swiper;\n  const breakpoints = params.breakpoints;\n  if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n  const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n  if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n  const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n  const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n  const wasMultiRow = isGridEnabled(swiper, params);\n  const isMultiRow = isGridEnabled(swiper, breakpointParams);\n  const wasEnabled = params.enabled;\n\n  if (wasMultiRow && !isMultiRow) {\n    $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n    swiper.emitContainerClasses();\n  } else if (!wasMultiRow && isMultiRow) {\n    $el.addClass(`${params.containerModifierClass}grid`);\n\n    if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n      $el.addClass(`${params.containerModifierClass}grid-column`);\n    }\n\n    swiper.emitContainerClasses();\n  } // Toggle navigation, pagination, scrollbar\n\n\n  ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n    const wasModuleEnabled = params[prop] && params[prop].enabled;\n    const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n\n    if (wasModuleEnabled && !isModuleEnabled) {\n      swiper[prop].disable();\n    }\n\n    if (!wasModuleEnabled && isModuleEnabled) {\n      swiper[prop].enable();\n    }\n  });\n  const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n  const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n  if (directionChanged && initialized) {\n    swiper.changeDirection();\n  }\n\n  extend(swiper.params, breakpointParams);\n  const isEnabled = swiper.params.enabled;\n  Object.assign(swiper, {\n    allowTouchMove: swiper.params.allowTouchMove,\n    allowSlideNext: swiper.params.allowSlideNext,\n    allowSlidePrev: swiper.params.allowSlidePrev\n  });\n\n  if (wasEnabled && !isEnabled) {\n    swiper.disable();\n  } else if (!wasEnabled && isEnabled) {\n    swiper.enable();\n  }\n\n  swiper.currentBreakpoint = breakpoint;\n  swiper.emit('_beforeBreakpoint', breakpointParams);\n\n  if (needsReLoop && initialized) {\n    swiper.loopDestroy();\n    swiper.loopCreate();\n    swiper.updateSlides();\n    swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n  }\n\n  swiper.emit('breakpoint', breakpointParams);\n}","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n  if (!breakpoints || base === 'container' && !containerEl) return undefined;\n  let breakpoint = false;\n  const window = getWindow();\n  const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n  const points = Object.keys(breakpoints).map(point => {\n    if (typeof point === 'string' && point.indexOf('@') === 0) {\n      const minRatio = parseFloat(point.substr(1));\n      const value = currentHeight * minRatio;\n      return {\n        value,\n        point\n      };\n    }\n\n    return {\n      value: point,\n      point\n    };\n  });\n  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n\n  for (let i = 0; i < points.length; i += 1) {\n    const {\n      point,\n      value\n    } = points[i];\n\n    if (base === 'window') {\n      if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n        breakpoint = point;\n      }\n    } else if (value <= containerEl.clientWidth) {\n      breakpoint = point;\n    }\n  }\n\n  return breakpoint || 'max';\n}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n  setBreakpoint,\n  getBreakpoint\n};","function prepareClasses(entries, prefix) {\n  const resultClasses = [];\n  entries.forEach(item => {\n    if (typeof item === 'object') {\n      Object.keys(item).forEach(classNames => {\n        if (item[classNames]) {\n          resultClasses.push(prefix + classNames);\n        }\n      });\n    } else if (typeof item === 'string') {\n      resultClasses.push(prefix + item);\n    }\n  });\n  return resultClasses;\n}\n\nexport default function addClasses() {\n  const swiper = this;\n  const {\n    classNames,\n    params,\n    rtl,\n    $el,\n    device,\n    support\n  } = swiper; // prettier-ignore\n\n  const suffixes = prepareClasses(['initialized', params.direction, {\n    'pointer-events': !support.touch\n  }, {\n    'free-mode': swiper.params.freeMode && params.freeMode.enabled\n  }, {\n    'autoheight': params.autoHeight\n  }, {\n    'rtl': rtl\n  }, {\n    'grid': params.grid && params.grid.rows > 1\n  }, {\n    'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n  }, {\n    'android': device.android\n  }, {\n    'ios': device.ios\n  }, {\n    'css-mode': params.cssMode\n  }, {\n    'centered': params.cssMode && params.centeredSlides\n  }, {\n    'watch-progress': params.watchSlidesProgress\n  }], params.containerModifierClass);\n  classNames.push(...suffixes);\n  $el.addClass([...classNames].join(' '));\n  swiper.emitContainerClasses();\n}","export default function removeClasses() {\n  const swiper = this;\n  const {\n    $el,\n    classNames\n  } = swiper;\n  $el.removeClass(classNames.join(' '));\n  swiper.emitContainerClasses();\n}","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n  addClasses,\n  removeClasses\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n  const window = getWindow();\n  let image;\n\n  function onReady() {\n    if (callback) callback();\n  }\n\n  const isPicture = $(imageEl).parent('picture')[0];\n\n  if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n    if (src) {\n      image = new window.Image();\n      image.onload = onReady;\n      image.onerror = onReady;\n\n      if (sizes) {\n        image.sizes = sizes;\n      }\n\n      if (srcset) {\n        image.srcset = srcset;\n      }\n\n      if (src) {\n        image.src = src;\n      }\n    } else {\n      onReady();\n    }\n  } else {\n    // image already loaded...\n    onReady();\n  }\n}","export default function preloadImages() {\n  const swiper = this;\n  swiper.imagesToLoad = swiper.$el.find('img');\n\n  function onReady() {\n    if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n    if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n    if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n      if (swiper.params.updateOnImagesReady) swiper.update();\n      swiper.emit('imagesReady');\n    }\n  }\n\n  for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n    const imageEl = swiper.imagesToLoad[i];\n    swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n  }\n}","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n  loadImage,\n  preloadImages\n};","function checkOverflow() {\n  const swiper = this;\n  const {\n    isLocked: wasLocked,\n    params\n  } = swiper;\n  const {\n    slidesOffsetBefore\n  } = params;\n\n  if (slidesOffsetBefore) {\n    const lastSlideIndex = swiper.slides.length - 1;\n    const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n    swiper.isLocked = swiper.size > lastSlideRightEdge;\n  } else {\n    swiper.isLocked = swiper.snapGrid.length === 1;\n  }\n\n  if (params.allowSlideNext === true) {\n    swiper.allowSlideNext = !swiper.isLocked;\n  }\n\n  if (params.allowSlidePrev === true) {\n    swiper.allowSlidePrev = !swiper.isLocked;\n  }\n\n  if (wasLocked && wasLocked !== swiper.isLocked) {\n    swiper.isEnd = false;\n  }\n\n  if (wasLocked !== swiper.isLocked) {\n    swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n  }\n}\n\nexport default {\n  checkOverflow\n};","export default {\n  init: true,\n  direction: 'horizontal',\n  touchEventsTarget: 'wrapper',\n  initialSlide: 0,\n  speed: 300,\n  cssMode: false,\n  updateOnWindowResize: true,\n  resizeObserver: true,\n  nested: false,\n  createElements: false,\n  enabled: true,\n  focusableElements: 'input, select, option, textarea, button, video, label',\n  // Overrides\n  width: null,\n  height: null,\n  //\n  preventInteractionOnTransition: false,\n  // ssr\n  userAgent: null,\n  url: null,\n  // To support iOS's swipe-to-go-back gesture (when being used in-app).\n  edgeSwipeDetection: false,\n  edgeSwipeThreshold: 20,\n  // Autoheight\n  autoHeight: false,\n  // Set wrapper width\n  setWrapperSize: false,\n  // Virtual Translate\n  virtualTranslate: false,\n  // Effects\n  effect: 'slide',\n  // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n  // Breakpoints\n  breakpoints: undefined,\n  breakpointsBase: 'window',\n  // Slides grid\n  spaceBetween: 0,\n  slidesPerView: 1,\n  slidesPerGroup: 1,\n  slidesPerGroupSkip: 0,\n  slidesPerGroupAuto: false,\n  centeredSlides: false,\n  centeredSlidesBounds: false,\n  slidesOffsetBefore: 0,\n  // in px\n  slidesOffsetAfter: 0,\n  // in px\n  normalizeSlideIndex: true,\n  centerInsufficientSlides: false,\n  // Disable swiper and hide navigation when container not overflow\n  watchOverflow: true,\n  // Round length\n  roundLengths: false,\n  // Touches\n  touchRatio: 1,\n  touchAngle: 45,\n  simulateTouch: true,\n  shortSwipes: true,\n  longSwipes: true,\n  longSwipesRatio: 0.5,\n  longSwipesMs: 300,\n  followFinger: true,\n  allowTouchMove: true,\n  threshold: 0,\n  touchMoveStopPropagation: false,\n  touchStartPreventDefault: true,\n  touchStartForcePreventDefault: false,\n  touchReleaseOnEdges: false,\n  // Unique Navigation Elements\n  uniqueNavElements: true,\n  // Resistance\n  resistance: true,\n  resistanceRatio: 0.85,\n  // Progress\n  watchSlidesProgress: false,\n  // Cursor\n  grabCursor: false,\n  // Clicks\n  preventClicks: true,\n  preventClicksPropagation: true,\n  slideToClickedSlide: false,\n  // Images\n  preloadImages: true,\n  updateOnImagesReady: true,\n  // loop\n  loop: false,\n  loopAdditionalSlides: 0,\n  loopedSlides: null,\n  loopedSlidesLimit: true,\n  loopFillGroupWithBlank: false,\n  loopPreventsSlide: true,\n  // rewind\n  rewind: false,\n  // Swiping/no swiping\n  allowSlidePrev: true,\n  allowSlideNext: true,\n  swipeHandler: null,\n  // '.swipe-handler',\n  noSwiping: true,\n  noSwipingClass: 'swiper-no-swiping',\n  noSwipingSelector: null,\n  // Passive Listeners\n  passiveListeners: true,\n  maxBackfaceHiddenSlides: 10,\n  // NS\n  containerModifierClass: 'swiper-',\n  // NEW\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  // Callbacks\n  runCallbacksOnInit: true,\n  // Internals\n  _emitClasses: false\n};","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n  return function extendParams(obj = {}) {\n    const moduleParamName = Object.keys(obj)[0];\n    const moduleParams = obj[moduleParamName];\n\n    if (typeof moduleParams !== 'object' || moduleParams === null) {\n      extend(allModulesParams, obj);\n      return;\n    }\n\n    if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n      params[moduleParamName] = {\n        auto: true\n      };\n    }\n\n    if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n      extend(allModulesParams, obj);\n      return;\n    }\n\n    if (params[moduleParamName] === true) {\n      params[moduleParamName] = {\n        enabled: true\n      };\n    }\n\n    if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n      params[moduleParamName].enabled = true;\n    }\n\n    if (!params[moduleParamName]) params[moduleParamName] = {\n      enabled: false\n    };\n    extend(allModulesParams, obj);\n  };\n}","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nconst prototypes = {\n  eventsEmitter,\n  update,\n  translate,\n  transition,\n  slide,\n  loop,\n  grabCursor,\n  events,\n  breakpoints,\n  checkOverflow,\n  classes,\n  images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n  constructor(...args) {\n    let el;\n    let params;\n\n    if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n      params = args[0];\n    } else {\n      [el, params] = args;\n    }\n\n    if (!params) params = {};\n    params = extend({}, params);\n    if (el && !params.el) params.el = el;\n\n    if (params.el && $(params.el).length > 1) {\n      const swipers = [];\n      $(params.el).each(containerEl => {\n        const newParams = extend({}, params, {\n          el: containerEl\n        });\n        swipers.push(new Swiper(newParams));\n      }); // eslint-disable-next-line no-constructor-return\n\n      return swipers;\n    } // Swiper Instance\n\n\n    const swiper = this;\n    swiper.__swiper__ = true;\n    swiper.support = getSupport();\n    swiper.device = getDevice({\n      userAgent: params.userAgent\n    });\n    swiper.browser = getBrowser();\n    swiper.eventsListeners = {};\n    swiper.eventsAnyListeners = [];\n    swiper.modules = [...swiper.__modules__];\n\n    if (params.modules && Array.isArray(params.modules)) {\n      swiper.modules.push(...params.modules);\n    }\n\n    const allModulesParams = {};\n    swiper.modules.forEach(mod => {\n      mod({\n        swiper,\n        extendParams: moduleExtendParams(params, allModulesParams),\n        on: swiper.on.bind(swiper),\n        once: swiper.once.bind(swiper),\n        off: swiper.off.bind(swiper),\n        emit: swiper.emit.bind(swiper)\n      });\n    }); // Extend defaults with modules params\n\n    const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params\n\n    swiper.params = extend({}, swiperParams, extendedDefaults, params);\n    swiper.originalParams = extend({}, swiper.params);\n    swiper.passedParams = extend({}, params); // add event listeners\n\n    if (swiper.params && swiper.params.on) {\n      Object.keys(swiper.params.on).forEach(eventName => {\n        swiper.on(eventName, swiper.params.on[eventName]);\n      });\n    }\n\n    if (swiper.params && swiper.params.onAny) {\n      swiper.onAny(swiper.params.onAny);\n    } // Save Dom lib\n\n\n    swiper.$ = $; // Extend Swiper\n\n    Object.assign(swiper, {\n      enabled: swiper.params.enabled,\n      el,\n      // Classes\n      classNames: [],\n      // Slides\n      slides: $(),\n      slidesGrid: [],\n      snapGrid: [],\n      slidesSizesGrid: [],\n\n      // isDirection\n      isHorizontal() {\n        return swiper.params.direction === 'horizontal';\n      },\n\n      isVertical() {\n        return swiper.params.direction === 'vertical';\n      },\n\n      // Indexes\n      activeIndex: 0,\n      realIndex: 0,\n      //\n      isBeginning: true,\n      isEnd: false,\n      // Props\n      translate: 0,\n      previousTranslate: 0,\n      progress: 0,\n      velocity: 0,\n      animating: false,\n      // Locks\n      allowSlideNext: swiper.params.allowSlideNext,\n      allowSlidePrev: swiper.params.allowSlidePrev,\n      // Touch Events\n      touchEvents: function touchEvents() {\n        const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n        const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n        swiper.touchEventsTouch = {\n          start: touch[0],\n          move: touch[1],\n          end: touch[2],\n          cancel: touch[3]\n        };\n        swiper.touchEventsDesktop = {\n          start: desktop[0],\n          move: desktop[1],\n          end: desktop[2]\n        };\n        return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n      }(),\n      touchEventsData: {\n        isTouched: undefined,\n        isMoved: undefined,\n        allowTouchCallbacks: undefined,\n        touchStartTime: undefined,\n        isScrolling: undefined,\n        currentTranslate: undefined,\n        startTranslate: undefined,\n        allowThresholdMove: undefined,\n        // Form elements to match\n        focusableElements: swiper.params.focusableElements,\n        // Last click time\n        lastClickTime: now(),\n        clickTimeout: undefined,\n        // Velocities\n        velocities: [],\n        allowMomentumBounce: undefined,\n        isTouchEvent: undefined,\n        startMoving: undefined\n      },\n      // Clicks\n      allowClick: true,\n      // Touches\n      allowTouchMove: swiper.params.allowTouchMove,\n      touches: {\n        startX: 0,\n        startY: 0,\n        currentX: 0,\n        currentY: 0,\n        diff: 0\n      },\n      // Images\n      imagesToLoad: [],\n      imagesLoaded: 0\n    });\n    swiper.emit('_swiper'); // Init\n\n    if (swiper.params.init) {\n      swiper.init();\n    } // Return app instance\n    // eslint-disable-next-line no-constructor-return\n\n\n    return swiper;\n  }\n\n  enable() {\n    const swiper = this;\n    if (swiper.enabled) return;\n    swiper.enabled = true;\n\n    if (swiper.params.grabCursor) {\n      swiper.setGrabCursor();\n    }\n\n    swiper.emit('enable');\n  }\n\n  disable() {\n    const swiper = this;\n    if (!swiper.enabled) return;\n    swiper.enabled = false;\n\n    if (swiper.params.grabCursor) {\n      swiper.unsetGrabCursor();\n    }\n\n    swiper.emit('disable');\n  }\n\n  setProgress(progress, speed) {\n    const swiper = this;\n    progress = Math.min(Math.max(progress, 0), 1);\n    const min = swiper.minTranslate();\n    const max = swiper.maxTranslate();\n    const current = (max - min) * progress + min;\n    swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n\n  emitContainerClasses() {\n    const swiper = this;\n    if (!swiper.params._emitClasses || !swiper.el) return;\n    const cls = swiper.el.className.split(' ').filter(className => {\n      return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n    });\n    swiper.emit('_containerClasses', cls.join(' '));\n  }\n\n  getSlideClasses(slideEl) {\n    const swiper = this;\n    if (swiper.destroyed) return '';\n    return slideEl.className.split(' ').filter(className => {\n      return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n    }).join(' ');\n  }\n\n  emitSlidesClasses() {\n    const swiper = this;\n    if (!swiper.params._emitClasses || !swiper.el) return;\n    const updates = [];\n    swiper.slides.each(slideEl => {\n      const classNames = swiper.getSlideClasses(slideEl);\n      updates.push({\n        slideEl,\n        classNames\n      });\n      swiper.emit('_slideClass', slideEl, classNames);\n    });\n    swiper.emit('_slideClasses', updates);\n  }\n\n  slidesPerViewDynamic(view = 'current', exact = false) {\n    const swiper = this;\n    const {\n      params,\n      slides,\n      slidesGrid,\n      slidesSizesGrid,\n      size: swiperSize,\n      activeIndex\n    } = swiper;\n    let spv = 1;\n\n    if (params.centeredSlides) {\n      let slideSize = slides[activeIndex].swiperSlideSize;\n      let breakLoop;\n\n      for (let i = activeIndex + 1; i < slides.length; i += 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n\n      for (let i = activeIndex - 1; i >= 0; i -= 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n    } else {\n      // eslint-disable-next-line\n      if (view === 'current') {\n        for (let i = activeIndex + 1; i < slides.length; i += 1) {\n          const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n\n          if (slideInView) {\n            spv += 1;\n          }\n        }\n      } else {\n        // previous\n        for (let i = activeIndex - 1; i >= 0; i -= 1) {\n          const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n\n          if (slideInView) {\n            spv += 1;\n          }\n        }\n      }\n    }\n\n    return spv;\n  }\n\n  update() {\n    const swiper = this;\n    if (!swiper || swiper.destroyed) return;\n    const {\n      snapGrid,\n      params\n    } = swiper; // Breakpoints\n\n    if (params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n\n    swiper.updateSize();\n    swiper.updateSlides();\n    swiper.updateProgress();\n    swiper.updateSlidesClasses();\n\n    function setTranslate() {\n      const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n      const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n      swiper.setTranslate(newTranslate);\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n\n    let translated;\n\n    if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n      setTranslate();\n\n      if (swiper.params.autoHeight) {\n        swiper.updateAutoHeight();\n      }\n    } else {\n      if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n        translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n      } else {\n        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n      }\n\n      if (!translated) {\n        setTranslate();\n      }\n    }\n\n    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n      swiper.checkOverflow();\n    }\n\n    swiper.emit('update');\n  }\n\n  changeDirection(newDirection, needUpdate = true) {\n    const swiper = this;\n    const currentDirection = swiper.params.direction;\n\n    if (!newDirection) {\n      // eslint-disable-next-line\n      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n    }\n\n    if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n      return swiper;\n    }\n\n    swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n    swiper.emitContainerClasses();\n    swiper.params.direction = newDirection;\n    swiper.slides.each(slideEl => {\n      if (newDirection === 'vertical') {\n        slideEl.style.width = '';\n      } else {\n        slideEl.style.height = '';\n      }\n    });\n    swiper.emit('changeDirection');\n    if (needUpdate) swiper.update();\n    return swiper;\n  }\n\n  changeLanguageDirection(direction) {\n    const swiper = this;\n    if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n    swiper.rtl = direction === 'rtl';\n    swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n\n    if (swiper.rtl) {\n      swiper.$el.addClass(`${swiper.params.containerModifierClass}rtl`);\n      swiper.el.dir = 'rtl';\n    } else {\n      swiper.$el.removeClass(`${swiper.params.containerModifierClass}rtl`);\n      swiper.el.dir = 'ltr';\n    }\n\n    swiper.update();\n  }\n\n  mount(el) {\n    const swiper = this;\n    if (swiper.mounted) return true; // Find el\n\n    const $el = $(el || swiper.params.el);\n    el = $el[0];\n\n    if (!el) {\n      return false;\n    }\n\n    el.swiper = swiper;\n\n    const getWrapperSelector = () => {\n      return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n    };\n\n    const getWrapper = () => {\n      if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n        const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n        res.children = options => $el.children(options);\n\n        return res;\n      }\n\n      if (!$el.children) {\n        return $($el).children(getWrapperSelector());\n      }\n\n      return $el.children(getWrapperSelector());\n    }; // Find Wrapper\n\n\n    let $wrapperEl = getWrapper();\n\n    if ($wrapperEl.length === 0 && swiper.params.createElements) {\n      const document = getDocument();\n      const wrapper = document.createElement('div');\n      $wrapperEl = $(wrapper);\n      wrapper.className = swiper.params.wrapperClass;\n      $el.append(wrapper);\n      $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n        $wrapperEl.append(slideEl);\n      });\n    }\n\n    Object.assign(swiper, {\n      $el,\n      el,\n      $wrapperEl,\n      wrapperEl: $wrapperEl[0],\n      mounted: true,\n      // RTL\n      rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n      wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n    });\n    return true;\n  }\n\n  init(el) {\n    const swiper = this;\n    if (swiper.initialized) return swiper;\n    const mounted = swiper.mount(el);\n    if (mounted === false) return swiper;\n    swiper.emit('beforeInit'); // Set breakpoint\n\n    if (swiper.params.breakpoints) {\n      swiper.setBreakpoint();\n    } // Add Classes\n\n\n    swiper.addClasses(); // Create loop\n\n    if (swiper.params.loop) {\n      swiper.loopCreate();\n    } // Update size\n\n\n    swiper.updateSize(); // Update slides\n\n    swiper.updateSlides();\n\n    if (swiper.params.watchOverflow) {\n      swiper.checkOverflow();\n    } // Set Grab Cursor\n\n\n    if (swiper.params.grabCursor && swiper.enabled) {\n      swiper.setGrabCursor();\n    }\n\n    if (swiper.params.preloadImages) {\n      swiper.preloadImages();\n    } // Slide To Initial Slide\n\n\n    if (swiper.params.loop) {\n      swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n    } else {\n      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n    } // Attach events\n\n\n    swiper.attachEvents(); // Init Flag\n\n    swiper.initialized = true; // Emit\n\n    swiper.emit('init');\n    swiper.emit('afterInit');\n    return swiper;\n  }\n\n  destroy(deleteInstance = true, cleanStyles = true) {\n    const swiper = this;\n    const {\n      params,\n      $el,\n      $wrapperEl,\n      slides\n    } = swiper;\n\n    if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n      return null;\n    }\n\n    swiper.emit('beforeDestroy'); // Init Flag\n\n    swiper.initialized = false; // Detach events\n\n    swiper.detachEvents(); // Destroy loop\n\n    if (params.loop) {\n      swiper.loopDestroy();\n    } // Cleanup styles\n\n\n    if (cleanStyles) {\n      swiper.removeClasses();\n      $el.removeAttr('style');\n      $wrapperEl.removeAttr('style');\n\n      if (slides && slides.length) {\n        slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n      }\n    }\n\n    swiper.emit('destroy'); // Detach emitter events\n\n    Object.keys(swiper.eventsListeners).forEach(eventName => {\n      swiper.off(eventName);\n    });\n\n    if (deleteInstance !== false) {\n      swiper.$el[0].swiper = null;\n      deleteProps(swiper);\n    }\n\n    swiper.destroyed = true;\n    return null;\n  }\n\n  static extendDefaults(newDefaults) {\n    extend(extendedDefaults, newDefaults);\n  }\n\n  static get extendedDefaults() {\n    return extendedDefaults;\n  }\n\n  static get defaults() {\n    return defaults;\n  }\n\n  static installModule(mod) {\n    if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n    const modules = Swiper.prototype.__modules__;\n\n    if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n      modules.push(mod);\n    }\n  }\n\n  static use(module) {\n    if (Array.isArray(module)) {\n      module.forEach(m => Swiper.installModule(m));\n      return Swiper;\n    }\n\n    Swiper.installModule(module);\n    return Swiper;\n  }\n\n}\n\nObject.keys(prototypes).forEach(prototypeGroup => {\n  Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n    Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n  });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;","/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function Keyboard({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const document = getDocument();\n  const window = getWindow();\n  swiper.keyboard = {\n    enabled: false\n  };\n  extendParams({\n    keyboard: {\n      enabled: false,\n      onlyInViewport: true,\n      pageUpDown: true\n    }\n  });\n\n  function handle(event) {\n    if (!swiper.enabled) return;\n    const {\n      rtlTranslate: rtl\n    } = swiper;\n    let e = event;\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n    const kc = e.keyCode || e.charCode;\n    const pageUpDown = swiper.params.keyboard.pageUpDown;\n    const isPageUp = pageUpDown && kc === 33;\n    const isPageDown = pageUpDown && kc === 34;\n    const isArrowLeft = kc === 37;\n    const isArrowRight = kc === 39;\n    const isArrowUp = kc === 38;\n    const isArrowDown = kc === 40; // Directions locks\n\n    if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n      return false;\n    }\n\n    if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n      return false;\n    }\n\n    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n      return undefined;\n    }\n\n    if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n      return undefined;\n    }\n\n    if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n      let inView = false; // Check that swiper should be inside of visible area of window\n\n      if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n        return undefined;\n      }\n\n      const $el = swiper.$el;\n      const swiperWidth = $el[0].clientWidth;\n      const swiperHeight = $el[0].clientHeight;\n      const windowWidth = window.innerWidth;\n      const windowHeight = window.innerHeight;\n      const swiperOffset = swiper.$el.offset();\n      if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n      const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n\n      for (let i = 0; i < swiperCoord.length; i += 1) {\n        const point = swiperCoord[i];\n\n        if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n          if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n          inView = true;\n        }\n      }\n\n      if (!inView) return undefined;\n    }\n\n    if (swiper.isHorizontal()) {\n      if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n        if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n      }\n\n      if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n      if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n    } else {\n      if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n        if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n      }\n\n      if (isPageDown || isArrowDown) swiper.slideNext();\n      if (isPageUp || isArrowUp) swiper.slidePrev();\n    }\n\n    emit('keyPress', kc);\n    return undefined;\n  }\n\n  function enable() {\n    if (swiper.keyboard.enabled) return;\n    $(document).on('keydown', handle);\n    swiper.keyboard.enabled = true;\n  }\n\n  function disable() {\n    if (!swiper.keyboard.enabled) return;\n    $(document).off('keydown', handle);\n    swiper.keyboard.enabled = false;\n  }\n\n  on('init', () => {\n    if (swiper.params.keyboard.enabled) {\n      enable();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.keyboard.enabled) {\n      disable();\n    }\n  });\n  Object.assign(swiper.keyboard, {\n    enable,\n    disable\n  });\n}","import { getDocument } from 'ssr-window';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n  const document = getDocument();\n\n  if (swiper.params.createElements) {\n    Object.keys(checkProps).forEach(key => {\n      if (!params[key] && params.auto === true) {\n        let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n\n        if (!element) {\n          element = document.createElement('div');\n          element.className = checkProps[key];\n          swiper.$el.append(element);\n        }\n\n        params[key] = element;\n        originalParams[key] = element;\n      }\n    });\n  }\n\n  return params;\n}","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\nexport default function Navigation({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  extendParams({\n    navigation: {\n      nextEl: null,\n      prevEl: null,\n      hideOnClick: false,\n      disabledClass: 'swiper-button-disabled',\n      hiddenClass: 'swiper-button-hidden',\n      lockClass: 'swiper-button-lock',\n      navigationDisabledClass: 'swiper-navigation-disabled'\n    }\n  });\n  swiper.navigation = {\n    nextEl: null,\n    $nextEl: null,\n    prevEl: null,\n    $prevEl: null\n  };\n\n  function getEl(el) {\n    let $el;\n\n    if (el) {\n      $el = $(el);\n\n      if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {\n        $el = swiper.$el.find(el);\n      }\n    }\n\n    return $el;\n  }\n\n  function toggleEl($el, disabled) {\n    const params = swiper.params.navigation;\n\n    if ($el && $el.length > 0) {\n      $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n      if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n\n      if (swiper.params.watchOverflow && swiper.enabled) {\n        $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n      }\n    }\n  }\n\n  function update() {\n    // Update Navigation Buttons\n    if (swiper.params.loop) return;\n    const {\n      $nextEl,\n      $prevEl\n    } = swiper.navigation;\n    toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);\n    toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);\n  }\n\n  function onPrevClick(e) {\n    e.preventDefault();\n    if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n    swiper.slidePrev();\n    emit('navigationPrev');\n  }\n\n  function onNextClick(e) {\n    e.preventDefault();\n    if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n    swiper.slideNext();\n    emit('navigationNext');\n  }\n\n  function init() {\n    const params = swiper.params.navigation;\n    swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n      nextEl: 'swiper-button-next',\n      prevEl: 'swiper-button-prev'\n    });\n    if (!(params.nextEl || params.prevEl)) return;\n    const $nextEl = getEl(params.nextEl);\n    const $prevEl = getEl(params.prevEl);\n\n    if ($nextEl && $nextEl.length > 0) {\n      $nextEl.on('click', onNextClick);\n    }\n\n    if ($prevEl && $prevEl.length > 0) {\n      $prevEl.on('click', onPrevClick);\n    }\n\n    Object.assign(swiper.navigation, {\n      $nextEl,\n      nextEl: $nextEl && $nextEl[0],\n      $prevEl,\n      prevEl: $prevEl && $prevEl[0]\n    });\n\n    if (!swiper.enabled) {\n      if ($nextEl) $nextEl.addClass(params.lockClass);\n      if ($prevEl) $prevEl.addClass(params.lockClass);\n    }\n  }\n\n  function destroy() {\n    const {\n      $nextEl,\n      $prevEl\n    } = swiper.navigation;\n\n    if ($nextEl && $nextEl.length) {\n      $nextEl.off('click', onNextClick);\n      $nextEl.removeClass(swiper.params.navigation.disabledClass);\n    }\n\n    if ($prevEl && $prevEl.length) {\n      $prevEl.off('click', onPrevClick);\n      $prevEl.removeClass(swiper.params.navigation.disabledClass);\n    }\n  }\n\n  on('init', () => {\n    if (swiper.params.navigation.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      update();\n    }\n  });\n  on('toEdge fromEdge lock unlock', () => {\n    update();\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  on('enable disable', () => {\n    const {\n      $nextEl,\n      $prevEl\n    } = swiper.navigation;\n\n    if ($nextEl) {\n      $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n    }\n\n    if ($prevEl) {\n      $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n    }\n  });\n  on('click', (_s, e) => {\n    const {\n      $nextEl,\n      $prevEl\n    } = swiper.navigation;\n    const targetEl = e.target;\n\n    if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\n      if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n      let isHidden;\n\n      if ($nextEl) {\n        isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n      } else if ($prevEl) {\n        isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n      }\n\n      if (isHidden === true) {\n        emit('navigationShow');\n      } else {\n        emit('navigationHide');\n      }\n\n      if ($nextEl) {\n        $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n      }\n\n      if ($prevEl) {\n        $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n      }\n    }\n  });\n\n  const enable = () => {\n    swiper.$el.removeClass(swiper.params.navigation.navigationDisabledClass);\n    init();\n    update();\n  };\n\n  const disable = () => {\n    swiper.$el.addClass(swiper.params.navigation.navigationDisabledClass);\n    destroy();\n  };\n\n  Object.assign(swiper.navigation, {\n    enable,\n    disable,\n    update,\n    init,\n    destroy\n  });\n}","export default function classesToSelector(classes = '') {\n  return `.${classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n  .replace(/ /g, '.')}`;\n}","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Pagination({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const pfx = 'swiper-pagination';\n  extendParams({\n    pagination: {\n      el: null,\n      bulletElement: 'span',\n      clickable: false,\n      hideOnClick: false,\n      renderBullet: null,\n      renderProgressbar: null,\n      renderFraction: null,\n      renderCustom: null,\n      progressbarOpposite: false,\n      type: 'bullets',\n      // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n      dynamicBullets: false,\n      dynamicMainBullets: 1,\n      formatFractionCurrent: number => number,\n      formatFractionTotal: number => number,\n      bulletClass: `${pfx}-bullet`,\n      bulletActiveClass: `${pfx}-bullet-active`,\n      modifierClass: `${pfx}-`,\n      currentClass: `${pfx}-current`,\n      totalClass: `${pfx}-total`,\n      hiddenClass: `${pfx}-hidden`,\n      progressbarFillClass: `${pfx}-progressbar-fill`,\n      progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n      clickableClass: `${pfx}-clickable`,\n      lockClass: `${pfx}-lock`,\n      horizontalClass: `${pfx}-horizontal`,\n      verticalClass: `${pfx}-vertical`,\n      paginationDisabledClass: `${pfx}-disabled`\n    }\n  });\n  swiper.pagination = {\n    el: null,\n    $el: null,\n    bullets: []\n  };\n  let bulletSize;\n  let dynamicBulletIndex = 0;\n\n  function isPaginationDisabled() {\n    return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;\n  }\n\n  function setSideBullets($bulletEl, position) {\n    const {\n      bulletActiveClass\n    } = swiper.params.pagination;\n    $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);\n  }\n\n  function update() {\n    // Render || Update Pagination bullets/items\n    const rtl = swiper.rtl;\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n    const $el = swiper.pagination.$el; // Current/Total\n\n    let current;\n    const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n    if (swiper.params.loop) {\n      current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n      if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n        current -= slidesLength - swiper.loopedSlides * 2;\n      }\n\n      if (current > total - 1) current -= total;\n      if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n    } else if (typeof swiper.snapIndex !== 'undefined') {\n      current = swiper.snapIndex;\n    } else {\n      current = swiper.activeIndex || 0;\n    } // Types\n\n\n    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n      const bullets = swiper.pagination.bullets;\n      let firstIndex;\n      let lastIndex;\n      let midIndex;\n\n      if (params.dynamicBullets) {\n        bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n        $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`);\n\n        if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n          dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);\n\n          if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n            dynamicBulletIndex = params.dynamicMainBullets - 1;\n          } else if (dynamicBulletIndex < 0) {\n            dynamicBulletIndex = 0;\n          }\n        }\n\n        firstIndex = Math.max(current - dynamicBulletIndex, 0);\n        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n        midIndex = (lastIndex + firstIndex) / 2;\n      }\n\n      bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' '));\n\n      if ($el.length > 1) {\n        bullets.each(bullet => {\n          const $bullet = $(bullet);\n          const bulletIndex = $bullet.index();\n\n          if (bulletIndex === current) {\n            $bullet.addClass(params.bulletActiveClass);\n          }\n\n          if (params.dynamicBullets) {\n            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n              $bullet.addClass(`${params.bulletActiveClass}-main`);\n            }\n\n            if (bulletIndex === firstIndex) {\n              setSideBullets($bullet, 'prev');\n            }\n\n            if (bulletIndex === lastIndex) {\n              setSideBullets($bullet, 'next');\n            }\n          }\n        });\n      } else {\n        const $bullet = bullets.eq(current);\n        const bulletIndex = $bullet.index();\n        $bullet.addClass(params.bulletActiveClass);\n\n        if (params.dynamicBullets) {\n          const $firstDisplayedBullet = bullets.eq(firstIndex);\n          const $lastDisplayedBullet = bullets.eq(lastIndex);\n\n          for (let i = firstIndex; i <= lastIndex; i += 1) {\n            bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n          }\n\n          if (swiper.params.loop) {\n            if (bulletIndex >= bullets.length) {\n              for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n                bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n              }\n\n              bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n            } else {\n              setSideBullets($firstDisplayedBullet, 'prev');\n              setSideBullets($lastDisplayedBullet, 'next');\n            }\n          } else {\n            setSideBullets($firstDisplayedBullet, 'prev');\n            setSideBullets($lastDisplayedBullet, 'next');\n          }\n        }\n      }\n\n      if (params.dynamicBullets) {\n        const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n        const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n        const offsetProp = rtl ? 'right' : 'left';\n        bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n      }\n    }\n\n    if (params.type === 'fraction') {\n      $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n      $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n    }\n\n    if (params.type === 'progressbar') {\n      let progressbarDirection;\n\n      if (params.progressbarOpposite) {\n        progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n      } else {\n        progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n      }\n\n      const scale = (current + 1) / total;\n      let scaleX = 1;\n      let scaleY = 1;\n\n      if (progressbarDirection === 'horizontal') {\n        scaleX = scale;\n      } else {\n        scaleY = scale;\n      }\n\n      $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n    }\n\n    if (params.type === 'custom' && params.renderCustom) {\n      $el.html(params.renderCustom(swiper, current + 1, total));\n      emit('paginationRender', $el[0]);\n    } else {\n      emit('paginationUpdate', $el[0]);\n    }\n\n    if (swiper.params.watchOverflow && swiper.enabled) {\n      $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n    }\n  }\n\n  function render() {\n    // Render Container\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n    const $el = swiper.pagination.$el;\n    let paginationHTML = '';\n\n    if (params.type === 'bullets') {\n      let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n      if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {\n        numberOfBullets = slidesLength;\n      }\n\n      for (let i = 0; i < numberOfBullets; i += 1) {\n        if (params.renderBullet) {\n          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n        } else {\n          paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n        }\n      }\n\n      $el.html(paginationHTML);\n      swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n    }\n\n    if (params.type === 'fraction') {\n      if (params.renderFraction) {\n        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n      } else {\n        paginationHTML = `<span class=\"${params.currentClass}\"></span>` + ' / ' + `<span class=\"${params.totalClass}\"></span>`;\n      }\n\n      $el.html(paginationHTML);\n    }\n\n    if (params.type === 'progressbar') {\n      if (params.renderProgressbar) {\n        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n      } else {\n        paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n      }\n\n      $el.html(paginationHTML);\n    }\n\n    if (params.type !== 'custom') {\n      emit('paginationRender', swiper.pagination.$el[0]);\n    }\n  }\n\n  function init() {\n    swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n      el: 'swiper-pagination'\n    });\n    const params = swiper.params.pagination;\n    if (!params.el) return;\n    let $el = $(params.el);\n    if ($el.length === 0) return;\n\n    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n      $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper\n\n      if ($el.length > 1) {\n        $el = $el.filter(el => {\n          if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n          return true;\n        });\n      }\n    }\n\n    if (params.type === 'bullets' && params.clickable) {\n      $el.addClass(params.clickableClass);\n    }\n\n    $el.addClass(params.modifierClass + params.type);\n    $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n\n    if (params.type === 'bullets' && params.dynamicBullets) {\n      $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n      dynamicBulletIndex = 0;\n\n      if (params.dynamicMainBullets < 1) {\n        params.dynamicMainBullets = 1;\n      }\n    }\n\n    if (params.type === 'progressbar' && params.progressbarOpposite) {\n      $el.addClass(params.progressbarOppositeClass);\n    }\n\n    if (params.clickable) {\n      $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n        e.preventDefault();\n        let index = $(this).index() * swiper.params.slidesPerGroup;\n        if (swiper.params.loop) index += swiper.loopedSlides;\n        swiper.slideTo(index);\n      });\n    }\n\n    Object.assign(swiper.pagination, {\n      $el,\n      el: $el[0]\n    });\n\n    if (!swiper.enabled) {\n      $el.addClass(params.lockClass);\n    }\n  }\n\n  function destroy() {\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    const $el = swiper.pagination.$el;\n    $el.removeClass(params.hiddenClass);\n    $el.removeClass(params.modifierClass + params.type);\n    $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n    if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n    if (params.clickable) {\n      $el.off('click', classesToSelector(params.bulletClass));\n    }\n  }\n\n  on('init', () => {\n    if (swiper.params.pagination.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      render();\n      update();\n    }\n  });\n  on('activeIndexChange', () => {\n    if (swiper.params.loop) {\n      update();\n    } else if (typeof swiper.snapIndex === 'undefined') {\n      update();\n    }\n  });\n  on('snapIndexChange', () => {\n    if (!swiper.params.loop) {\n      update();\n    }\n  });\n  on('slidesLengthChange', () => {\n    if (swiper.params.loop) {\n      render();\n      update();\n    }\n  });\n  on('snapGridLengthChange', () => {\n    if (!swiper.params.loop) {\n      render();\n      update();\n    }\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  on('enable disable', () => {\n    const {\n      $el\n    } = swiper.pagination;\n\n    if ($el) {\n      $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n    }\n  });\n  on('lock unlock', () => {\n    update();\n  });\n  on('click', (_s, e) => {\n    const targetEl = e.target;\n    const {\n      $el\n    } = swiper.pagination;\n\n    if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el && $el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {\n      if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n      const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n\n      if (isHidden === true) {\n        emit('paginationShow');\n      } else {\n        emit('paginationHide');\n      }\n\n      $el.toggleClass(swiper.params.pagination.hiddenClass);\n    }\n  });\n\n  const enable = () => {\n    swiper.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n\n    if (swiper.pagination.$el) {\n      swiper.pagination.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n    }\n\n    init();\n    render();\n    update();\n  };\n\n  const disable = () => {\n    swiper.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n\n    if (swiper.pagination.$el) {\n      swiper.pagination.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n    }\n\n    destroy();\n  };\n\n  Object.assign(swiper.pagination, {\n    enable,\n    disable,\n    render,\n    update,\n    init,\n    destroy\n  });\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function HashNavigation({\n  swiper,\n  extendParams,\n  emit,\n  on\n}) {\n  let initialized = false;\n  const document = getDocument();\n  const window = getWindow();\n  extendParams({\n    hashNavigation: {\n      enabled: false,\n      replaceState: false,\n      watchState: false\n    }\n  });\n\n  const onHashChange = () => {\n    emit('hashChange');\n    const newHash = document.location.hash.replace('#', '');\n    const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n\n    if (newHash !== activeSlideHash) {\n      const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`).index();\n      if (typeof newIndex === 'undefined') return;\n      swiper.slideTo(newIndex);\n    }\n  };\n\n  const setHash = () => {\n    if (!initialized || !swiper.params.hashNavigation.enabled) return;\n\n    if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n      window.history.replaceState(null, null, `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '');\n      emit('hashSet');\n    } else {\n      const slide = swiper.slides.eq(swiper.activeIndex);\n      const hash = slide.attr('data-hash') || slide.attr('data-history');\n      document.location.hash = hash || '';\n      emit('hashSet');\n    }\n  };\n\n  const init = () => {\n    if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n    initialized = true;\n    const hash = document.location.hash.replace('#', '');\n\n    if (hash) {\n      const speed = 0;\n\n      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n        const slide = swiper.slides.eq(i);\n        const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n\n        if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n          const index = slide.index();\n          swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n        }\n      }\n    }\n\n    if (swiper.params.hashNavigation.watchState) {\n      $(window).on('hashchange', onHashChange);\n    }\n  };\n\n  const destroy = () => {\n    if (swiper.params.hashNavigation.watchState) {\n      $(window).off('hashchange', onHashChange);\n    }\n  };\n\n  on('init', () => {\n    if (swiper.params.hashNavigation.enabled) {\n      init();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.params.hashNavigation.enabled) {\n      destroy();\n    }\n  });\n  on('transitionEnd _freeModeNoMomentumRelease', () => {\n    if (initialized) {\n      setHash();\n    }\n  });\n  on('slideChange', () => {\n    if (initialized && swiper.params.cssMode) {\n      setHash();\n    }\n  });\n}","import $ from 'jquery';\nimport Swiper, {Navigation, Pagination} from 'swiper';\n\nconst initAccessibilitySlider = (element) => {\n  const swiperId = element.querySelector('.swiper-container').id;\n  const swiper = new Swiper('#' + swiperId, {\n    modules: [Navigation, Pagination],\n    initialSlide: 1,\n    spaceBetween: 30,\n    slidesPerView: 'auto',\n    centeredSlides: true,\n    slideToClickedSlide: true,\n    loop: true,\n    loopedSlides: 3,\n    grabCursor: true,\n    mousewheel: {\n      enabled: false\n    },\n    keyboard: {\n      enabled: true\n    },\n    pagination: {\n      el: '.swiper-pagination'\n    },\n    navigation: {\n      nextEl: '.swiper-button-next',\n      prevEl: '.swiper-button-prev'\n    }\n  });\n  window.setTimeout(() => {\n    $('.swiper-slide-duplicate .card-body div:nth-child(2)').attr('id', '');\n  }, 500);\n};\n\nexport {\n  initAccessibilitySlider\n};\n","/**\n * Based on Cl.Locations by Angelo Dini\n */\n/* global google, CMS */\nimport $ from 'jquery'\n\nclass Locations {\n    constructor(container, options) {\n        // has to be inside because `google` isn't defined at load time\n        this.defaults = {\n            // eslint-disable-next-line camelcase\n            edit_mode: false,\n            mapType: '',\n            mapTypeControlOptions: google.maps.MapTypeControlStyle.DROPDOWN_MENU,\n            markers: [],\n            markerAnimation: google.maps.Animation.DROP,\n            routePlanner: false,\n            settings: {},\n            zoom: 12,\n            zoomControlOptions: google.maps.ZoomControlStyle.SMALL,\n            cls: {\n                mapContainer: '.aldryn-locations-container',\n                formContainer: '.aldryn-locations-form',\n                formOutput: '.aldryn-locations-form-output'\n            }\n        }\n\n        this.container = $(container)\n        this.options = $.extend(true, {}, this.defaults, options)\n        this.settings = this.options.settings\n        this.markers = []\n        this.bounds = new google.maps.LatLngBounds()\n        this.form = this.container.find(this.options.cls.formContainer)\n\n        // presets\n        this.mapTypes = {\n            hybrid: google.maps.MapTypeId.HYBRID,\n            roadmap: google.maps.MapTypeId.ROADMAP,\n            satellite: google.maps.MapTypeId.SATELLITE,\n            terrain: google.maps.MapTypeId.TERRAIN\n        }\n\n        // move to setup\n        this._setup()\n    }\n\n    _setup() {\n        // extend google map settings\n        this.settings.mapTypeId = this.mapTypes[this.options.mapType]\n        this.settings.zoomControlOptions = { style: this.options.zoomControlOptions }\n        this.settings.mapTypeControlOptions = { style: this.options.mapTypeControlOptions }\n\n        // setting up map\n        this.mapContainer = this.container.find(this.options.cls.mapContainer)[0]\n        this.map = new google.maps.Map(this.mapContainer, this.settings)\n\n        // add all markers\n        this.addMarkers(this.options.markers)\n        this.addLayers(this.options.layerSources)\n\n        // enable routing\n        this._routePlanner()\n    }\n\n    /**\n     * Adds a collection of markers to the google map instance\n     *\n     * @param {Object[]} markers exptects a collection of markers (see addMarker())\n     */\n    addMarkers(markers) {\n        var that = this\n\n        /**\n         * geocode helper\n         *\n         * @param {google.map.Marker} marker marker\n         */\n        function geocode(marker) {\n            var geocoder = new google.maps.Geocoder()\n\n            geocoder.geocode({ address: marker.address }, function (results, status) {\n                if (status === google.maps.GeocoderStatus.OK) {\n                    marker.latlng = results[0].geometry.location\n                    that.addMarker(marker)\n                }\n            })\n        }\n\n        // loop through all given markers\n        for (var i = 0; i < markers.length; i++) {\n            var marker = markers[i]\n\n            //  check if we need to calculate the latlng or continue\n            if (marker.latlng === null) {\n                geocode(marker)\n            } else {\n                marker.latlng = new google.maps.LatLng(marker.latlng[0], marker.latlng[1])\n                this.addMarker(marker)\n            }\n        }\n    }\n\n    /**\n     * Adds KLM layers\n     *\n     * @param {String[]} layerSources sources\n     */\n    addLayers(layerSources) {\n        if (!layerSources || !layerSources.length) {\n            return\n        }\n\n        layerSources.forEach((src) => {\n            // eslint-disable-next-line no-new\n            new google.maps.KmlLayer(src, {\n                suppressInfoWindows: true,\n                preserveViewport: false,\n                map: this.map\n            })\n        })\n    }\n\n    /**\n     * adds a single marker to the google map instance\n     *\n     * @param {Object} marker  marker object\n     * @param {String} marker.address expects a valid address\n     * @param {String} marker.admin admin link for editing within the cms\n     * @param {String} [marker.content] content for the markerInfoWindow\n     * @param {Number} [marker.latlng] expects valid lat and lng values\n    */\n    addMarker(marker) {\n        var that = this\n\n        // Creates a marker on the map, calls fitMap afterwards\n        // eslint-disable-next-line no-param-reassign\n        marker = new google.maps.Marker({\n            map: this.map,\n            admin: marker.admin,\n            position: marker.latlng,\n            title: marker.title,\n            content: marker.content\n        })\n\n        // attach info window\n        if (marker.content) {\n            var infoWindow = new google.maps.InfoWindow({\n                disableAutoPan: true,\n                // to false and InfoWindow is out of bounds\n                content: marker.content\n            })\n\n            google.maps.event.addListener(marker, 'click', function () {\n                infoWindow.open(that.map, marker)\n                marker.setAnimation(google.maps.Animation.BOUNCE)\n                setTimeout(function () {\n                    marker.setAnimation(null)\n                }, 750) // eslint-disable-line no-magic-numbers\n            })\n\n            if (this.options.markers.length === 1) {\n                setTimeout(function () {\n                    infoWindow.open(that.map, marker)\n                }, 500) // eslint-disable-line no-magic-numbers\n            }\n        }\n\n        // add admin edit capabilities for markers\n        if (this.options.edit && window.CMS) {\n            google.maps.event.addListener(marker, 'dblclick', function () {\n                setTimeout(function () {\n                    var modal = new CMS.Modal()\n\n                    modal.open({\n                        url: marker.admin\n                    })\n                }, 0.3) // eslint-disable-line\n            })\n        }\n\n        // update markers and map position\n        this.markers.push(marker)\n        this.bounds.extend(marker.position)\n        this.map.fitBounds(this.bounds)\n        this.map.panBy(0, -50) // eslint-disable-line no-magic-numbers\n\n        // reassign zoom level\n        var listener = google.maps.event.addListener(that.map, 'idle', function () {\n            if (that.map.getZoom() > that.options.zoom) {\n                that.map.setZoom(that.options.zoom)\n            }\n            google.maps.event.removeListener(listener)\n        })\n    }\n\n    _routePlanner() {\n        var that = this\n        var mode = ''\n        var destination = this.form.find('input[type=\"hidden\"]').val()\n        var routers = this.container.find('span[data-type]')\n        var directionsService = new google.maps.DirectionsService()\n        var directionsDisplay = new google.maps.DirectionsRenderer()\n\n        directionsDisplay.setMap(this.map)\n        directionsDisplay.setPanel(this.container.find(this.options.cls.formOutput)[0])\n\n        /**\n         * getRoute\n         * @private\n         */\n        function getRoute() {\n            var origin = that.form.find('input[type=\"text\"]').val()\n\n            // hide streetview\n            that.map.getStreetView().setVisible(false)\n\n            var request = {\n                origin: origin,\n                destination: destination,\n                travelMode: google.maps.TravelMode[mode.toUpperCase()]\n            }\n\n            directionsService.route(request, function (result, status) {\n                if (status === google.maps.DirectionsStatus.OK) {\n                    directionsDisplay.setMap(that.map)\n                    directionsDisplay.setDirections(result)\n                    that.form.find('.form-group').removeClass('has-error')\n                } else {\n                    that.form.find('.form-group').addClass('has-error')\n                }\n            })\n        }\n\n        // attach routes handling\n        routers.on('click', function () {\n            routers.removeClass('active')\n            $(this).addClass('active')\n            mode = $(this).data('type')\n        }).eq(0).trigger('click')\n\n        // prevent form submission\n        this.form.on('submit', function (e) {\n            e.preventDefault()\n            getRoute()\n        })\n    }\n}\n\n/**\n * @function initGoogleMaps\n * @param {String|jQuery} [selector='.js-aldryn-locations'] selector or jquery collection to init map\n */\nexport function initGoogleMaps(selector = '.js-aldryn-locations') {\n    var maps = $(selector)\n\n    if (!maps.length) {\n        return\n    }\n\n    // wait for google maps api to load\n    $(window).on('load', function () {\n        // last failcheck\n        if (!google || !google.maps) {\n            return\n        }\n\n        maps.each(function () {\n            var mapElement = $(this)\n            var mapData = mapElement.data('googleMap')\n\n            mapElement.data('locations', new Locations(mapElement, mapData))\n        })\n    })\n}\n","export const initDynamicLayers = function (event) {\n  const sections = document.querySelectorAll('.dynamic-layers .dynamic-layers__content');\n  const background = document.querySelectorAll('.dynamic-layers .dynamic-layers__static .layer-bg');\n\n  const options = {\n    root: null,\n    rootMargin: '0px',\n    threshold: window.innerWidth > 968 ? 0.1 : 0\n  };\n\n  let observer = new IntersectionObserver((entries, observer) => {\n    entries.forEach(entry => {\n      if (entry.isIntersecting) {\n        intersectionHandler(entry);\n      } else if (!entry.isIntersecting && entry.boundingClientRect.top > 0) {\n        document.querySelector('.dynamic-layers__indicators .dynamic-layers__indicator a[href=\"#' + entry.target.id + '\"]').parentNode.classList.remove('active');\n        entry.target.classList.remove('active');\n      }\n    });\n  }, options);\n\n  sections.forEach(section => { observer.observe(section); });\n\n  function intersectionHandler (entry) {\n    const id = entry.target.id;\n\n    entry.target.classList.add('active');\n\n    let target = document.querySelector('.dynamic-layers__indicators .dynamic-layers__indicator a[href=\"#' + id + '\"]').parentNode;\n\n    target.classList.add('active');\n\n    while (target === target.previousElementSibling) {\n      target.classList.add('active');\n    }\n  }\n\n  let backgroundObserver = new IntersectionObserver((entries, observer) => {\n    entries.forEach(entry => {\n      if (entry.isIntersecting) {\n        entry.target.classList.add('active');\n        // observer.unobserve(entry.target)\n      } else if (!entry.isIntersecting && entry.target.children && entry.target.children[0] && entry.target.children[0].children && entry.target.children[0].children[0]) {\n        // entry.target.classList.remove('active')\n        entry.target.children[0].children[0].pause();\n      }\n    });\n  }, { threshold: 0.85 });\n  background.forEach(section => { backgroundObserver.observe(section); });\n\n  const videoContainer = $('[data-dyn-layers-video-container]');\n\n  if (videoContainer.length > 0) {\n    videoContainer.each((index, element) => new DynamicLayerBackgroundVideo(element, {}));\n  }\n\n  document.querySelectorAll(\".dynamic-layers__container[data-show-first='true']\").forEach(container => {\n    const firstSection = container.querySelector(\".dynamic-layers__content\");\n    if (firstSection) {\n      firstSection.classList.add(\"active\");\n\n      if (!window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches) {\n        firstSection.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\n      } else {\n        firstSection.scrollIntoView({ behavior: \"auto\", block: \"start\" });\n      }\n\n      const id = firstSection.id;\n      let target = document.querySelector('.dynamic-layers__indicators .dynamic-layers__indicator a[href=\"#' + id + '\"]');\n      if (target) {\n        target.parentNode.classList.add('active');\n      }\n    }\n  });\n}\n\nclass DynamicLayerBackgroundVideo {\n  constructor (element, config) {\n    this.container = $(element);\n    this.navButton = $('header .nav-button');\n    this.video = this.container.find('[data-video]');\n    this.videoControl = this.container.find('[data-video-control]');\n    // !!! Modified from original\n    this.captionControl = this.container.find('[data-caption-control]');\n    this.playing = false;\n    this.autoplay = window.matchMedia('(min-width: 968px)').matches;\n    this.autoplay_set = (this.container.find('[play]').length > 0 ? 'true' : 'false');\n    this.accessNav = $('.accessibility-navigation');\n    this.globalButton = $('button');\n    this.init();\n  }\n\n  init () {\n    this.accessibility();\n\n    if (this.videoControl) {\n      this.video.on('playing', () => {\n        this.playing = true;\n      });\n\n      this.videoControl.on('click', (e) => {\n        this.onPressVideoControl(e);\n      });\n    }\n\n    $(this.navButton).on('click', () => {\n      this.pause();\n    });\n\n    $(this.accessNav).on('click', () => {\n      this.pause();\n    });\n\n    $(this.globalButton).on('click', () => {\n      if (!$(this).has('btn-video-control')) {\n        this.pause();\n      }\n    });\n\n    // !!! Modified from original\n    $(this.captionControl).on('click', () => {\n      this.captionToggle();\n    });\n\n    const video = this.video.get(0);\n    video.addEventListener('pause', () => {\n      this.pause();\n    });\n    let track = video.textTracks && video.textTracks[0];\n    if (track) {\n      track.mode = 'hidden';\n    }\n  }\n\n  onPressVideoControl (e) {\n    e.preventDefault();\n\n    if (this.playing) {\n      this.pause();\n    } else {\n      this.play();\n    }\n  }\n\n  play () {\n    const video = this.video.get(0);\n    const videoControlIcon = this.videoControl.find('[data-video-icon]:first');\n    const iconName = videoControlIcon.attr('data-icon-playing');\n    const icon = videoControlIcon.find('svg').clone();\n    const videoControlLabel = this.videoControl.find('[data-video-label]:first');\n    const videoPos = this.container.offset().top;\n    const container = this.container;\n    const dynamicLayerContainer = document.getElementsByClassName('dynamic-layers__static')[0];\n    const thisFunction = this;\n\n    video.play();\n\n    this.playing = true;\n    this.container.addClass('playing');\n    dynamicLayerContainer.classList.add('hasPlayed');\n\n    icon.find('use').attr('xlink:href', iconName);\n    videoControlIcon.empty().append(icon);\n    videoControlLabel.html(videoControlLabel.attr('data-label-playing'));\n\n    this.videoControl.blur();\n\n    // stop playing on scrolling\n    $(window).on('scroll', function () {\n      // !!! Modified from original\n      // var containerHeight = container.height()\n      var containerHeight = container.closest('.dynamic-layers').height();\n\n      if ($(this).scrollTop() >= (videoPos + containerHeight) - 100) {\n        if (thisFunction.playing) {\n          thisFunction.pause();\n        }\n      }\n    });\n    video.addEventListener('ended', (e) => {\n      console.log('Video ended.');\n      this.pause();\n    });\n  }\n\n  pause () {\n    const video = this.video.get(0);\n    const videoControlIcon = this.videoControl.find('[data-video-icon]:first');\n    const iconName = videoControlIcon.attr('data-icon-pausing');\n    const icon = videoControlIcon.find('svg').clone();\n    const videoControlLabel = this.videoControl.find('[data-video-label]:first');\n\n    video.pause();\n    this.playing = false;\n\n    this.container.removeClass('playing');\n\n    icon.find('use').attr('xlink:href', iconName);\n    videoControlIcon.empty().append(icon);\n    videoControlLabel.html(videoControlLabel.attr('data-label-pausing'));\n  }\n\n  // !!! Modified from original\n  captionToggle () {\n    const video = this.video.get(0);\n    const videoControlIcon = this.captionControl.find('[data-caption-icon]:first');\n    const icon = videoControlIcon.find('svg').clone();\n    const videoControlLabel = this.captionControl.find('[data-caption-label]:first');\n\n    let track = video.textTracks && video.textTracks[0];\n    if (track) {\n      if (track.mode === 'hidden') {\n        track.mode = 'showing';\n        icon.find('use').attr('xlink:href', videoControlIcon.attr('data-captions-off'));\n        videoControlLabel.html(videoControlLabel.attr('data-captions-off'));\n      } else {\n        track.mode = 'hidden';\n        icon.find('use').attr('xlink:href', videoControlIcon.attr('data-captions-on'));\n        videoControlLabel.html(videoControlLabel.attr('data-captions-on'));\n      }\n    }\n\n    videoControlIcon.empty().append(icon);\n  }\n\n  accessibility () {\n    if (window.matchMedia('(prefers-reduced-motion)').matches) {\n      this.video.removeAttr('autoplay');\n      this.pause();\n    } else if (!this.playing && this.autoplay && this.autoplay_set === 'true') {\n      this.play();\n    } else {\n      this.video.attr('preload', 'none');\n    }\n  }\n}\n","export const initDynamicLayersB = function (event) {\n  const sections = document.querySelectorAll('.dynamic-layers-bg .dynamic-layers__bg');\n  const content = document.querySelectorAll('.dynamic-layers-bg .dynamic-layers__content');\n\n  const options = {\n    root: null,\n    rootMargin: '0px',\n    threshold: 0.25\n  };\n\n  let observer = new IntersectionObserver((entries, observer) => {\n    entries.forEach(entry => {\n      if (entry.isIntersecting) {\n        intersectionHandler(entry);\n      } else if (!entry.isIntersecting && entry.boundingClientRect.top > 0) {\n        document.querySelector('.dynamic-layers__indicators .dynamic-layers__indicator a[href=\"#' + entry.target.id + '\"]').parentNode.classList.remove('active');\n        entry.target.classList.remove('active');\n      }\n    });\n  }, options);\n\n  sections.forEach(section => { observer.observe(section); });\n\n  function intersectionHandler (entry) {\n    const id = entry.target.id;\n\n    entry.target.classList.add('active');\n\n    let target = document.querySelector('.dynamic-layers__indicators .dynamic-layers__indicator a[href=\"#' + id + '\"]').parentNode;\n\n    target.classList.add('active');\n\n    while (target === target.previousElementSibling) {\n      target.classList.add('active');\n    }\n  }\n\n  let contentObserver = new IntersectionObserver((entries, observer) => {\n    entries.forEach(entry => {\n      if (entry.isIntersecting) {\n        entry.target.classList.add('active');\n        observer.unobserve(entry.target);\n      }\n    });\n  }, { threshold: 0.85 });\n  content.forEach(section => { contentObserver.observe(section); });\n}\n","class FlipCardBackgroundVideo {\n  constructor (element, config) {\n    this.container = $(element);\n    this.navButton = $('header .nav-button');\n    this.video = this.container.find('[data-video]');\n    this.videoControl = this.container.find('[data-video-control]');\n    // !!! Modified from original\n    this.captionControl = this.container.find('[data-caption-control]');\n    this.bigPlayButton = this.container.find('.video-big-play');\n    this.progressBar = this.container.find('.video-progress__bar');\n    this.playing = false;\n    this.autoplay = window.matchMedia('(min-width: 968px)').matches;\n    this.autoplay_set = (this.container.find('[play]').length > 0 ? 'true' : 'false');\n    this.accessNav = $('.accessibility-navigation');\n    this.globalButton = $('button');\n    this.init();\n  }\n\n  init () {\n    this.accessibility();\n\n    if (this.videoControl) {\n      this.video.on('playing', () => {\n        this.playing = true;\n      });\n\n      this.videoControl.on('click', (e) => {\n        this.onPressVideoControl(e);\n      });\n    }\n\n    if (this.bigPlayButton.length) {\n      this.bigPlayButton.on('click', (e) => {\n        e.preventDefault();\n        this.play();\n        this.bigPlayButton.addClass('hidden');\n      });\n    }\n\n    $(this.navButton).on('click', () => {\n      this.pause();\n    });\n\n    $(this.accessNav).on('click', () => {\n      this.pause();\n    });\n\n    $(this.globalButton).on('click', () => {\n      if (!$(this).has('btn-video-control')) {\n        this.pause();\n      }\n    });\n\n    // !!! Modified from original\n    $(this.captionControl).on('click', () => {\n      this.captionToggle();\n    });\n\n    const video = this.video.get(0);\n    let track = video.textTracks && video.textTracks[0];\n    if (track) {\n      track.mode = 'hidden';\n    }\n    video.addEventListener('pause', () => {\n      this.pause();\n    });\n\n    video.addEventListener('timeupdate', () => {\n      if (this.progressBar.length && video.duration) {\n        const progress = (video.currentTime / video.duration) * 100;\n        this.progressBar.css('width', `${progress}%`);\n      }\n    });\n\n    video.addEventListener('ended', () => {\n      this.pause();\n\n      if (this.bigPlayButton.length) {\n        this.bigPlayButton.removeClass('hidden');\n      }\n      if (this.progressBar.length) {\n        this.progressBar.css('width', '0%');\n      }\n\n      this.container.find('.video-progress__bar').css('width', '0%');\n      this.container.find('.video-big-play').removeClass('hidden');\n      this.videoControl.addClass('hidden');\n    });\n  }\n\n  onPressVideoControl (e) {\n    e.preventDefault();\n\n    if (this.playing) {\n      this.pause();\n    } else {\n      this.play();\n    }\n  }\n\n  play () {\n    const video = this.video.get(0);\n    const videoControlIcon = this.videoControl.find('[data-video-icon]:first');\n    const iconName = videoControlIcon.attr('data-icon-playing');\n    const icon = videoControlIcon.find('svg').clone();\n    const videoControlLabel = this.videoControl.find('[data-video-label]:first');\n    const videoPos = this.container.offset().top;\n    const container = this.container;\n    const thisFunction = this;\n\n    this.container.find('.video-big-play').addClass('hidden');\n    this.videoControl.removeClass('hidden');\n\n    video.play();\n\n    this.playing = true;\n    this.container.addClass('playing');\n\n    icon.find('use').attr('xlink:href', iconName);\n    videoControlIcon.empty().append(icon);\n\n    videoControlLabel.html(videoControlLabel.attr('data-label-playing'));\n\n    this.videoControl.attr('aria-label', 'Video stoppen');\n\n    this.videoControl.blur();\n\n    // stop playing on scrolling\n    $(window).on('scroll', function () {\n      var containerHeight = container.height();\n      if ($(this).scrollTop() >= (videoPos + containerHeight) - 100) {\n        if (thisFunction.playing) {\n          thisFunction.pause();\n        }\n      }\n    });\n  }\n\n  pause () {\n    const video = this.video.get(0);\n    const videoControlIcon = this.videoControl.find('[data-video-icon]:first');\n    const iconName = videoControlIcon.attr('data-icon-pausing');\n    const icon = videoControlIcon.find('svg').clone();\n    const videoControlLabel = this.videoControl.find('[data-video-label]:first');\n\n    video.pause();\n    this.playing = false;\n\n    this.container.removeClass('playing');\n\n    this.videoControl.attr('aria-label', 'Video starten');\n\n    icon.find('use').attr('xlink:href', iconName);\n    videoControlIcon.empty().append(icon);\n    videoControlLabel.html(videoControlLabel.attr('data-label-pausing'));\n  }\n\n  // !!! Modified from original\n  captionToggle () {\n    const video = this.video.get(0);\n    const videoControlIcon = this.captionControl.find('[data-caption-icon]:first');\n    const icon = videoControlIcon.find('svg').clone();\n    const videoControlLabel = this.captionControl;\n\n    let track = video.textTracks && video.textTracks[0];\n    if (track) {\n      if (track.mode === 'hidden') {\n        track.mode = 'showing';\n        icon.find('use').attr('xlink:href', videoControlIcon.attr('data-captions-off'));\n        videoControlLabel.attr('aria-label', videoControlLabel.attr('data-captions-off'));\n      } else {\n        track.mode = 'hidden';\n        icon.find('use').attr('xlink:href', videoControlIcon.attr('data-captions-on'));\n        videoControlLabel.attr('aria-label', videoControlLabel.attr('data-captions-on'));\n      }\n    }\n\n    videoControlIcon.empty().append(icon);\n  }\n\n  accessibility () {\n    if (window.matchMedia('(prefers-reduced-motion)').matches) {\n      this.video.removeAttr('autoplay');\n      this.pause();\n    } else if (!this.playing && this.autoplay && this.autoplay_set === 'true') {\n      this.play();\n    } else {\n      this.video.attr('preload', 'none');\n    }\n  }\n}\n\nexport const initFlipCards = function (event) {\n  const videoContainer = $('[data-behaviour=\"flipcard-video\"]');\n\n  if (videoContainer.length > 0) {\n    videoContainer.each((index, element) => new FlipCardBackgroundVideo(element, {}));\n  }\n\n  // Ideally this would be part of the BackgroundVideo class above\n  $('[data-behaviour=\"flipcard-video\"] video').on('play', function (e) {\n    $('[data-behaviour=\"flipcard-video\"] video').not(e.target).each(function (index, video) {\n      if (!video.paused) {\n        $(video).siblings('[data-video-control]').trigger('click');\n      }\n    });\n  });\n};\n","'use strict';\n\nvar ms = {};\n\nfunction getItem (key) {\n  return key in ms ? ms[key] : null;\n}\n\nfunction setItem (key, value) {\n  ms[key] = value;\n  return true;\n}\n\nfunction removeItem (key) {\n  var found = key in ms;\n  if (found) {\n    return delete ms[key];\n  }\n  return false;\n}\n\nfunction clear () {\n  ms = {};\n  return true;\n}\n\nmodule.exports = {\n  getItem: getItem,\n  setItem: setItem,\n  removeItem: removeItem,\n  clear: clear\n};\n","'use strict';\n\nvar listeners = {};\nvar listening = false;\n\nfunction listen () {\n  if (global.addEventListener) {\n    global.addEventListener('storage', change, false);\n  } else if (global.attachEvent) {\n    global.attachEvent('onstorage', change);\n  } else {\n    global.onstorage = change;\n  }\n}\n\nfunction change (e) {\n  if (!e) {\n    e = global.event;\n  }\n  var all = listeners[e.key];\n  if (all) {\n    all.forEach(fire);\n  }\n\n  function fire (listener) {\n    listener(JSON.parse(e.newValue), JSON.parse(e.oldValue), e.url || e.uri);\n  }\n}\n\nfunction on (key, fn) {\n  if (listeners[key]) {\n    listeners[key].push(fn);\n  } else {\n    listeners[key] = [fn];\n  }\n  if (listening === false) {\n    listen();\n  }\n}\n\nfunction off (key, fn) {\n  var ns = listeners[key];\n  if (ns.length > 1) {\n    ns.splice(ns.indexOf(fn), 1);\n  } else {\n    listeners[key] = [];\n  }\n}\n\nmodule.exports = {\n  on: on,\n  off: off\n};\n","'use strict';\n\nvar stub = require('./stub');\nvar tracking = require('./tracking');\nvar ls = 'localStorage' in global && global.localStorage ? global.localStorage : stub;\n\nfunction accessor (key, value) {\n  if (arguments.length === 1) {\n    return get(key);\n  }\n  return set(key, value);\n}\n\nfunction get (key) {\n  return JSON.parse(ls.getItem(key));\n}\n\nfunction set (key, value) {\n  try {\n    ls.setItem(key, JSON.stringify(value));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\nfunction remove (key) {\n  return ls.removeItem(key);\n}\n\nfunction clear () {\n  return ls.clear();\n}\n\naccessor.set = set;\naccessor.get = get;\naccessor.remove = remove;\naccessor.clear = clear;\naccessor.on = tracking.on;\naccessor.off = tracking.off;\n\nmodule.exports = accessor;\n","import ls from 'local-storage';\n\n/**\n * default options which contain selectors\n * @type {Object}\n */\nlet mobileBreakpoint = window.matchMedia('(max-width: 60.5rem)');\n\n/**\n * Accessible Mega Menu Navigation\n * @type {Prototype}\n */\nclass Navigation {\n  constructor ({navigationSelector, tutorialLayerSelector, defaultLayerSelector, navigationContentSelector}) {\n    this.container = $(navigationSelector);\n    this.contentSelector = navigationContentSelector;\n    this.linksWithSubmenu = this.container.find('[aria-haspopup=true]');\n    this.defaultLayer = this.container.find(defaultLayerSelector).first();\n    this.tutorialLayer = this.container.find(tutorialLayerSelector).first();\n    this.current = this.container.find('.current');\n\n    this.currentDepth = 0;\n    this.isLayerOpen = false;\n\n    this.primaryNavEls = $('.navigation > ul.navigation-group');\n    this.secondaryNavEl = '';\n\n    this.init();\n  }\n\n  /**\n   * If no current page is selected\n   */\n  init () {\n    this.setIds();\n\n    if (this.current.length > 0) {\n      this.expandCurrentPageTree();\n    } else {\n      this.showLayer(this.defaultLayer);\n    }\n\n    // this.primaryNavEls.attr('tabindex', 0)\n    this.setupListeners();\n    this.storage();\n  }\n\n  expandCurrentPageTree () {\n    const currentNavItem = this.current.first();\n    const liAncestors = currentNavItem.parents('li');\n    const contentAncestors = currentNavItem.parents(this.contentSelector);\n    currentNavItem.addClass('active');\n    currentNavItem.closest('.navigation-group').attr('aria-activedescendant', currentNavItem.attr('id'));\n\n    if (currentNavItem.find('> .nav-link:first').attr('aria-haspopup') === 'true') {\n      currentNavItem.find('> .nav-link:first').attr('aria-expanded', true);\n    }\n    liAncestors.addClass('active');\n    liAncestors.find('> [aria-expanded]').attr('aria-expanded', true);\n    contentAncestors.attr('aria-hidden', 'false');\n  }\n\n  collapseCurrentPageTree (e) {\n    e.preventDefault();\n    e.stopPropagation();\n\n    var $ele = $(e.target);\n    if ($ele.parent().parent().hasClass('navigation-list')) {\n      let navHandle = $('[data-nav-panel]').attr(('data-nav-panel'));\n      $(document).trigger(`toggle-close-${navHandle}`);\n      return false;\n    }\n\n    const closestContent = $ele.closest('[data-navigation-content]');\n    if (closestContent.length === 0) {\n      return false;\n    }\n    this.close(closestContent.closest('nav'));\n\n    closestContent.siblings('a').focus();\n\n    this.adjustContainerHeight();\n    return false;\n  }\n\n  expand (target) {\n    const button = $(target);\n\n    if (button.attr('aria-expanded') === 'true') {\n      return false;\n    }\n\n    this.closeAll(button.parents('li'));\n\n    const content = button.siblings(this.contentSelector).first();\n    this.secondaryNavEl = content.closest('.navigation-content-column > .navigation-sub');\n\n    button.attr('aria-expanded', true);\n    button.closest('li').addClass('active');\n    content.attr('aria-hidden', false);\n\n    this.adjustContainerHeight();\n  }\n\n  close (target) {\n    const button = $(target).find('[aria-expanded]');\n    const content = button.siblings(this.contentSelector).first();\n\n    button.attr('aria-expanded', false);\n    $(target).removeClass('active');\n    content.attr('aria-hidden', true);\n  }\n\n  closeAll (exception) {\n    this.container.find('li.active').each((index, node) => {\n      if (!$(node).is(exception) && $(node).find(exception).length === 0) {\n        this.close(node);\n      }\n    });\n  }\n\n  adjustContainerHeight () {\n    const navContainer = this.container.find('.navigation-container');\n    let height = this.container.find('.navigation').innerHeight();\n\n    this.container.find('.navigation-content:visible').each((index, node) => {\n      if ($(node).innerHeight() > height) {\n        height = $(node).innerHeight();\n      }\n    });\n\n    if (height > navContainer.innerHeight()) {\n      navContainer.css('height', height);\n    }\n\n    if (mobileBreakpoint.matches) {\n      navContainer[0].scrollIntoView();\n    }\n  }\n\n  showLayer (layer) {\n    if (layer.length === 0) {\n      return false;\n    }\n\n    this.isLayerOpen = true;\n\n    layer.show();\n    layer.removeAttr('hidden');\n  }\n\n  hideLayer (layer) {\n    if (layer.length === 0) {\n      return false;\n    }\n\n    this.isLayerOpen = false;\n\n    layer.hide();\n    layer.attr('hidden');\n  }\n\n  shiftFocus (e) {\n    this.closeAll();\n    e.preventDefault();\n    $('.list-nav button').first().click();\n    if (e.shiftKey) {\n      $('.list-nav button').first().focus();\n    } else {\n      $('.list-help button').focus();\n    }\n  }\n\n  setupListeners () {\n    const eventHandle = 'navigation';\n\n    this.linksWithSubmenu.on('click keypress', (e) => {\n      if (e.type === 'click' || (e.type === 'keypress' && e.keyCode === 32)) {\n        e.preventDefault();\n        this.expand(e.currentTarget);\n\n        if (this.isLayerOpen) {\n          this.hideLayer(this.tutorialLayer);\n          this.hideLayer(this.defaultLayer);\n        }\n\n        if (mobileBreakpoint.matches) {\n          this.currentDepth++;\n          this.container.find('.navigation').css('transform', `translate3d(-${this.currentDepth * 100}%, 0, 0)`);\n        }\n      }\n    });\n\n    this.container.find('[data-navigation-back]').on('click keypress', (e) => {\n      if (e.type === 'click' || (e.type === 'keypress' && e.keyCode === 32)) {\n        e.preventDefault();\n        if (mobileBreakpoint.matches) {\n          this.currentDepth--;\n          this.container.find('.navigation').css('transform', `translate3d(-${this.currentDepth * 100}%, 0, 0)`);\n        }\n      }\n    });\n\n    this.container.find('[data-tutorial-button]').on('click keypress', (e) => {\n      // e.preventDefault()\n      // e.stopPropagation()\n      if (e.type === 'click' || (e.type === 'keypress' && (e.keyCode === 32 || e.keyCode === 13))) {\n        if (this.isLayerOpen === true) {\n          this.hideLayer(this.tutorialLayer);\n        } else {\n          this.showLayer(this.tutorialLayer);\n        }\n      }\n    });\n\n    this.primaryNavEls.each((index, item) => {\n      const primaryNavEl = $(item);\n\n      primaryNavEl.find('.nav-link').on('focus', (e) => {\n        primaryNavEl.attr('aria-activedescendant', $(e.target).closest('li').attr('id'));\n      });\n    });\n\n    // Reset translate\n    mobileBreakpoint.addListener((e) => {\n      if (e.matches) {\n        this.container.find('.navigation').css('transform', 'translate3d(0, 0, 0)');\n      } else {\n        this.container.find('.navigation').css('transform', '');\n      }\n    });\n\n    // Reset selection on menu close\n    $(document).on(`close-${eventHandle}`, () => {\n      setTimeout(() => {\n        this.closeAll();\n        this.expandCurrentPageTree();\n        this.container.find('.navigation-container').css('height', '');\n      }, 500);\n    });\n\n    this.container.on('keydown', e => {\n      switch (e.keyCode) {\n        case 38:\n          this.onPanelArrowKeyPress('top', e);\n          break;\n        case 40:\n          this.onPanelArrowKeyPress('bottom', e);\n          break;\n        default:\n          break;\n      }\n    });\n\n    $('#navPanel-navigation').on('keydown', e => {\n      switch (e.keyCode) {\n        case 9:\n          this.shiftFocus(e);\n          break;\n        case 27:\n          this.collapseCurrentPageTree(e);\n          break;\n        case 35:\n          this.onArrowKeyPress('last', e);\n          break;\n        case 36:\n          this.onArrowKeyPress('first', e);\n          break;\n        case 38:\n          this.onArrowKeyPress('top', e);\n          break;\n        case 39:\n          this.onArrowKeyPress('right', e);\n          break;\n        case 40:\n          this.onArrowKeyPress('bottom', e);\n          break;\n        case 37:\n          this.onArrowKeyPress('left', e);\n          break;\n      }\n    });\n\n    this.container.find('.navigation-container').on('keydown', e => {\n      switch (e.keyCode) {\n        case 27:\n          this.collapseCurrentPageTree(e);\n          break;\n        case 35:\n          this.onArrowKeyPress('last', e);\n          break;\n        case 36:\n          this.onArrowKeyPress('first', e);\n          break;\n        case 38:\n          this.onArrowKeyPress('top', e);\n          break;\n        case 40:\n          this.onArrowKeyPress('bottom', e);\n          break;\n        case 37:\n          this.onArrowKeyPress('left', e);\n          break;\n        case 13:\n          if ($(e.target).attr('aria-haspopup') === 'true') {\n            this.onArrowKeyPress('right', e);\n          }\n          break;\n        case 32:\n          if ($(e.target).attr('aria-haspopup') === 'true') {\n            this.onArrowKeyPress('right', e);\n          } else {\n            e.preventDefault();\n            document.location = $(e.target).attr('href');\n          }\n          break;\n        case 39:\n          this.onArrowKeyPress('right', e);\n          break;\n        default:\n          this.focusNextItemStartingWith(e);\n          break;\n      }\n    });\n  }\n\n  storage () {\n    const isVisited = ls('lwl-tutorial');\n\n    if (!isVisited) {\n      ls('lwl-tutorial', true);\n      this.showLayer(this.tutorialLayer);\n    }\n\n    if (document.location.pathname === '/') {\n      this.showLayer(this.tutorialLayer);\n    }\n  }\n\n  onPanelArrowKeyPress (direction, e) {\n    e.preventDefault();\n    e.stopPropagation();\n\n    const focusedItem = this.container.find(':focus');\n    let focusContainer = focusedItem.closest('[data-navigation-content]');\n    const items = focusContainer.find(`a:visible, button:visible`);\n    const index = items.index(focusedItem);\n\n    if (direction === 'bottom' && (index + 1) <= items.length - 1) {\n      $(items.get(index + 1)).focus();\n    } else if (direction === 'top' && (index - 1) >= 0) {\n      $(items.get(index - 1)).focus();\n    } else if (direction === 'top' && (index - 1) < 0) {\n      $(items.get(items.length - 1)).focus();\n    } else if (direction === 'bottom' && (index + 1) >= items.length - 1) {\n      $(items.get(0)).focus();\n    }\n  }\n\n  focusNextItemStartingWith (event) {\n    const focusedItem = this.container.find(':focus');\n    let focusContainer = focusedItem.closest('nav');\n    const items = focusContainer.find(`a:visible, button:visible`);\n    const index = items.index(focusedItem);\n    const char = event.key;\n    for (let i = index; i < items.length; i++) {\n      if (i !== index && $(items[i]).text().replace('…', '').trim().slice(0, 1).toLowerCase() === char) {\n        $(items[i]).focus();\n        return false;\n      }\n    }\n    for (let i = 0; i < index; i++) {\n      if (i !== index && $(items[i]).text().replace('…', '').trim().slice(0, 1).toLowerCase() === char) {\n        $(items[i]).focus();\n        return false;\n      }\n    }\n  }\n\n  onArrowKeyPress (direction, e) {\n    const focusedItem = this.container.find(':focus');\n    let focusContainer = focusedItem.closest('.navigation-content');\n    let isInsideLayerOne = false;\n\n    if (focusContainer.length === 0) {\n      focusContainer = focusedItem.closest('.nav-panel');\n      isInsideLayerOne = true;\n    }\n\n    const items = focusContainer.find(`\n      a:visible,\n      > ul > li > a:visible,\n      > .navigation-teaser > a,\n      > nav > ul > li > a:visible\n    `);\n    const index = items.index(focusedItem);\n\n    e.preventDefault();\n    e.stopPropagation();\n    if (direction === 'last') {\n      $(items.get(items.length - 1)).focus();\n    } else if (direction === 'first') {\n      $(items.get(0)).focus();\n    } else if (direction === 'bottom' && (index + 1) <= items.length - 1) {\n      const next = $(items.get(index + 1));\n      if (next.parent().hasClass('navigation-header-item')) {\n        $(items.get(index + 2)).focus();\n      } else {\n        next.focus();\n      }\n    } else if (direction === 'top' && (index - 1) >= 0) {\n      const next = $(items.get(index - 1));\n      if (next.parent().hasClass('navigation-header-item')) {\n        $(items.get(index - 2)).focus();\n      } else {\n        next.focus();\n      }\n    } else if (direction === 'top' && (index - 1) < 0) {\n      $(items.get(items.length - 1)).focus();\n    } else if (direction === 'bottom' && (index + 1) > items.length - 1) {\n      $(items.get(0)).focus();\n    } else if (isInsideLayerOne && direction === 'top' && (index - 1) < 0) {\n      const outerContextSiblings = this.container.find('a:visible, a:button');\n      const outerIndex = outerContextSiblings.index(focusedItem) - 1;\n      $(outerContextSiblings.get(outerIndex)).focus();\n    }\n\n    if (direction === 'right' && focusedItem.attr('aria-haspopup') === 'true') {\n      focusedItem.click();\n      focusedItem.parent().find('.navigation-content a:visible:first').focus();\n    } else if (direction === 'right' && focusedItem.attr('aria-haspopup') !== 'true') {\n      if ((index + 1) > items.length - 1) {\n        $(items.get(0)).focus();\n      } else {\n        $(items.get(index + 1)).focus();\n      }\n    }\n\n    if (direction === 'left' && focusedItem.closest('.navigation-content').length > 0) {\n      let parentItem = focusedItem.closest('.navigation-content').parent().find('a:visible:first');\n      parentItem.focus();\n      this.close(parentItem.parent());\n    } else if (direction === 'left' && focusedItem.closest('.navigation-content').length === 0) {\n      $(items.get(index - 1)).focus();\n    }\n  }\n\n  setIds () {\n    const navItems = $('.navigation li');\n    navItems.map((i, node) => {\n      node.setAttribute('id', this.uid());\n    });\n  }\n\n  uid () {\n    const s4 = () => {\n      return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\n    };\n\n    return 'i-' + (s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4());\n  }\n}\n\nexport { Navigation };\nexport default Navigation;\n","class LangSwitcher {\n  constructor (node) {\n    this.element = $(node);\n    this.button = $(node).find('[data-lang-button]');\n    this.popup = $(node).find('[data-lang-popup]');\n    this.isActive = false;\n\n    this.addListener();\n  }\n\n  addListener () {\n    this.button.on('click', this.onButtonClick.bind(this));\n\n    if (this.element.attr('data-clickaway')) {\n      $(document).on('click', (e) => {\n        if (this.isActive && this.element.has(e.target).length === 0) {\n          this.close();\n        }\n      });\n    }\n    $(document).keyup(e => e.keyCode === 27 && this.close());\n  }\n\n  onButtonClick (e) {\n    e.preventDefault();\n\n    if (this.isActive) {\n      this.close();\n    } else {\n      this.open();\n    }\n  }\n\n  open () {\n    this.isActive = true;\n    this.element.addClass('is-active');\n    this.button.attr('aria-expanded', true);\n    this.popup.attr('aria-hidden', false);\n    this.popup.fadeIn(100);\n  }\n\n  close () {\n    this.isActive = false;\n    this.element.removeClass('is-active');\n    this.button.attr('aria-expanded', false);\n    this.popup.attr('aria-hidden', true);\n    this.popup.fadeOut(100);\n    this.popup.blur();\n  }\n}\n\nexport {LangSwitcher};\nexport default LangSwitcher;\n","export default class Loader {\n  constructor() {\n    this.componentClasses = {};\n    this.components = [];\n    this.register.bind(this);\n    this.init.bind(this);\n  }\n\n  register(name, component) {\n    this.componentClasses[name] = component;\n  }\n\n  getComponentsByType(type) {\n    return this.components.filter((component) => {\n      return component instanceof type;\n    });\n  }\n\n  findProps(node) {\n    let result = {};\n    if (node.getAttribute('data-component-var')) {\n      const name = node.getAttribute('data-component-var');\n      const val = node.innerHTML;\n      result[name] = val;\n    }\n    if (node.getAttribute('data-component-json')) {\n      const name = node.getAttribute('data-component-json');\n      try {\n        const val = JSON.parse(node.innerHTML);\n        result[name] = val;\n      } catch (error) {\n        console.error(`Error: ${name}`);\n        console.error(`${error.name}: ${error.message}`);\n      }\n    }\n    if (node.getAttribute('data-component-list')) {\n      const name = node.getAttribute('data-component-list');\n      let list = [...node.children].map((child) => {\n        return this.findProps(child);\n      })\n      result[name] = list;\n    }\n    if (Object.keys(result).length === 0) { //No config here, descend\n      const childProps = Object.assign({}, ...[...node.children].map((child) => {\n        return this.findProps(child);\n      }));\n      result = Object.assign(result, childProps);\n    }\n    return result;\n  }\n\n  init(dom) {\n    const componentNodes = [...dom.querySelectorAll('[data-component]')];\n\n    componentNodes.forEach((node) => {\n      const componentName = node.getAttribute('data-component');\n\n      const ComponentClass = this.componentClasses[componentName];\n      if (typeof ComponentClass === 'undefined') {\n        console.error(\"Component \" + componentName + \" not defined.\");\n        return;\n      }\n\n      const props = this.findProps(node);\n\n      const component = new ComponentClass(node, props, this);\n\n      this.components.push(component);\n    });\n  }\n\n  ready() {\n    this.components.forEach((component) => {\n      if (typeof component.ready === 'undefined') {\n        return;\n      }\n      component.ready();\n    });\n  }\n\n  clear() {\n    this.components.forEach((component) => {\n      if (typeof component.clear === 'undefined') {\n        return;\n      }\n      component.clear();\n    });\n    this.components = [];\n  }\n\n  windowResize() {\n    this.components.forEach((component) => {\n      if (typeof component.windowResize === 'undefined') {\n        return;\n      }\n      component.windowResize();\n    });\n  }\n\n  cmsRefresh() {\n    this.clear();\n    this.init(window.document);\n    this.ready();\n  }\n}\n","function _defineProperty$1(e,t,i){return(t=_toPropertyKey(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function _toPrimitive(e,t){if(\"object\"!=typeof e||null===e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var s=i.call(e,t||\"default\");if(\"object\"!=typeof s)return s;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===t?String:Number)(e)}function _toPropertyKey(e){var t=_toPrimitive(e,\"string\");return\"symbol\"==typeof t?t:String(t)}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function _defineProperties(e,t){for(var i=0;i<t.length;i++){var s=t[i];s.enumerable=s.enumerable||!1,s.configurable=!0,\"value\"in s&&(s.writable=!0),Object.defineProperty(e,s.key,s)}}function _createClass(e,t,i){return t&&_defineProperties(e.prototype,t),i&&_defineProperties(e,i),e}function _defineProperty(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function ownKeys(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,s)}return i}function _objectSpread2(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(i),!0).forEach((function(t){_defineProperty(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):ownKeys(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}var defaults$1={addCSS:!0,thumbWidth:15,watch:!0};function matches$1(e,t){return function(){return Array.from(document.querySelectorAll(t)).includes(this)}.call(e,t)}function trigger(e,t){if(e&&t){var i=new Event(t,{bubbles:!0});e.dispatchEvent(i)}}var getConstructor$1=function(e){return null!=e?e.constructor:null},instanceOf$1=function(e,t){return!!(e&&t&&e instanceof t)},isNullOrUndefined$1=function(e){return null==e},isObject$1=function(e){return getConstructor$1(e)===Object},isNumber$1=function(e){return getConstructor$1(e)===Number&&!Number.isNaN(e)},isString$1=function(e){return getConstructor$1(e)===String},isBoolean$1=function(e){return getConstructor$1(e)===Boolean},isFunction$1=function(e){return getConstructor$1(e)===Function},isArray$1=function(e){return Array.isArray(e)},isNodeList$1=function(e){return instanceOf$1(e,NodeList)},isElement$1=function(e){return instanceOf$1(e,Element)},isEvent$1=function(e){return instanceOf$1(e,Event)},isEmpty$1=function(e){return isNullOrUndefined$1(e)||(isString$1(e)||isArray$1(e)||isNodeList$1(e))&&!e.length||isObject$1(e)&&!Object.keys(e).length},is$1={nullOrUndefined:isNullOrUndefined$1,object:isObject$1,number:isNumber$1,string:isString$1,boolean:isBoolean$1,function:isFunction$1,array:isArray$1,nodeList:isNodeList$1,element:isElement$1,event:isEvent$1,empty:isEmpty$1};function getDecimalPlaces(e){var t=\"\".concat(e).match(/(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/);return t?Math.max(0,(t[1]?t[1].length:0)-(t[2]?+t[2]:0)):0}function round(e,t){if(1>t){var i=getDecimalPlaces(t);return parseFloat(e.toFixed(i))}return Math.round(e/t)*t}var RangeTouch=function(){function e(t,i){_classCallCheck(this,e),is$1.element(t)?this.element=t:is$1.string(t)&&(this.element=document.querySelector(t)),is$1.element(this.element)&&is$1.empty(this.element.rangeTouch)&&(this.config=_objectSpread2({},defaults$1,{},i),this.init())}return _createClass(e,[{key:\"init\",value:function(){e.enabled&&(this.config.addCSS&&(this.element.style.userSelect=\"none\",this.element.style.webKitUserSelect=\"none\",this.element.style.touchAction=\"manipulation\"),this.listeners(!0),this.element.rangeTouch=this)}},{key:\"destroy\",value:function(){e.enabled&&(this.config.addCSS&&(this.element.style.userSelect=\"\",this.element.style.webKitUserSelect=\"\",this.element.style.touchAction=\"\"),this.listeners(!1),this.element.rangeTouch=null)}},{key:\"listeners\",value:function(e){var t=this,i=e?\"addEventListener\":\"removeEventListener\";[\"touchstart\",\"touchmove\",\"touchend\"].forEach((function(e){t.element[i](e,(function(e){return t.set(e)}),!1)}))}},{key:\"get\",value:function(t){if(!e.enabled||!is$1.event(t))return null;var i,s=t.target,n=t.changedTouches[0],r=parseFloat(s.getAttribute(\"min\"))||0,a=parseFloat(s.getAttribute(\"max\"))||100,o=parseFloat(s.getAttribute(\"step\"))||1,l=s.getBoundingClientRect(),c=100/l.width*(this.config.thumbWidth/2)/100;return 0>(i=100/l.width*(n.clientX-l.left))?i=0:100<i&&(i=100),50>i?i-=(100-2*i)*c:50<i&&(i+=2*(i-50)*c),r+round(i/100*(a-r),o)}},{key:\"set\",value:function(t){e.enabled&&is$1.event(t)&&!t.target.disabled&&(t.preventDefault(),t.target.value=this.get(t),trigger(t.target,\"touchend\"===t.type?\"change\":\"input\"))}}],[{key:\"setup\",value:function(t){var i=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},s=null;if(is$1.empty(t)||is$1.string(t)?s=Array.from(document.querySelectorAll(is$1.string(t)?t:'input[type=\"range\"]')):is$1.element(t)?s=[t]:is$1.nodeList(t)?s=Array.from(t):is$1.array(t)&&(s=t.filter(is$1.element)),is$1.empty(s))return null;var n=_objectSpread2({},defaults$1,{},i);if(is$1.string(t)&&n.watch){var r=new MutationObserver((function(i){Array.from(i).forEach((function(i){Array.from(i.addedNodes).forEach((function(i){is$1.element(i)&&matches$1(i,t)&&new e(i,n)}))}))}));r.observe(document.body,{childList:!0,subtree:!0})}return s.map((function(t){return new e(t,i)}))}},{key:\"enabled\",get:function(){return\"ontouchstart\"in document.documentElement}}]),e}();const getConstructor=e=>null!=e?e.constructor:null,instanceOf=(e,t)=>Boolean(e&&t&&e instanceof t),isNullOrUndefined=e=>null==e,isObject=e=>getConstructor(e)===Object,isNumber=e=>getConstructor(e)===Number&&!Number.isNaN(e),isString=e=>getConstructor(e)===String,isBoolean=e=>getConstructor(e)===Boolean,isFunction=e=>\"function\"==typeof e,isArray=e=>Array.isArray(e),isWeakMap=e=>instanceOf(e,WeakMap),isNodeList=e=>instanceOf(e,NodeList),isTextNode=e=>getConstructor(e)===Text,isEvent=e=>instanceOf(e,Event),isKeyboardEvent=e=>instanceOf(e,KeyboardEvent),isCue=e=>instanceOf(e,window.TextTrackCue)||instanceOf(e,window.VTTCue),isTrack=e=>instanceOf(e,TextTrack)||!isNullOrUndefined(e)&&isString(e.kind),isPromise=e=>instanceOf(e,Promise)&&isFunction(e.then),isElement=e=>null!==e&&\"object\"==typeof e&&1===e.nodeType&&\"object\"==typeof e.style&&\"object\"==typeof e.ownerDocument,isEmpty=e=>isNullOrUndefined(e)||(isString(e)||isArray(e)||isNodeList(e))&&!e.length||isObject(e)&&!Object.keys(e).length,isUrl=e=>{if(instanceOf(e,window.URL))return!0;if(!isString(e))return!1;let t=e;e.startsWith(\"http://\")&&e.startsWith(\"https://\")||(t=`http://${e}`);try{return!isEmpty(new URL(t).hostname)}catch(e){return!1}};var is={nullOrUndefined:isNullOrUndefined,object:isObject,number:isNumber,string:isString,boolean:isBoolean,function:isFunction,array:isArray,weakMap:isWeakMap,nodeList:isNodeList,element:isElement,textNode:isTextNode,event:isEvent,keyboardEvent:isKeyboardEvent,cue:isCue,track:isTrack,promise:isPromise,url:isUrl,empty:isEmpty};const transitionEndEvent=(()=>{const e=document.createElement(\"span\"),t={WebkitTransition:\"webkitTransitionEnd\",MozTransition:\"transitionend\",OTransition:\"oTransitionEnd otransitionend\",transition:\"transitionend\"},i=Object.keys(t).find((t=>void 0!==e.style[t]));return!!is.string(i)&&t[i]})();function repaint(e,t){setTimeout((()=>{try{e.hidden=!0,e.offsetHeight,e.hidden=!1}catch(e){}}),t)}const isIE=Boolean(window.document.documentMode),isEdge=/Edge/g.test(navigator.userAgent),isWebKit=\"WebkitAppearance\"in document.documentElement.style&&!/Edge/g.test(navigator.userAgent),isIPhone=/iPhone|iPod/gi.test(navigator.userAgent)&&navigator.maxTouchPoints>1,isIPadOS=\"MacIntel\"===navigator.platform&&navigator.maxTouchPoints>1,isIos=/iPad|iPhone|iPod/gi.test(navigator.userAgent)&&navigator.maxTouchPoints>1;var browser={isIE:isIE,isEdge:isEdge,isWebKit:isWebKit,isIPhone:isIPhone,isIPadOS:isIPadOS,isIos:isIos};function cloneDeep(e){return JSON.parse(JSON.stringify(e))}function getDeep(e,t){return t.split(\".\").reduce(((e,t)=>e&&e[t]),e)}function extend(e={},...t){if(!t.length)return e;const i=t.shift();return is.object(i)?(Object.keys(i).forEach((t=>{is.object(i[t])?(Object.keys(e).includes(t)||Object.assign(e,{[t]:{}}),extend(e[t],i[t])):Object.assign(e,{[t]:i[t]})})),extend(e,...t)):e}function wrap(e,t){const i=e.length?e:[e];Array.from(i).reverse().forEach(((e,i)=>{const s=i>0?t.cloneNode(!0):t,n=e.parentNode,r=e.nextSibling;s.appendChild(e),r?n.insertBefore(s,r):n.appendChild(s)}))}function setAttributes(e,t){is.element(e)&&!is.empty(t)&&Object.entries(t).filter((([,e])=>!is.nullOrUndefined(e))).forEach((([t,i])=>e.setAttribute(t,i)))}function createElement(e,t,i){const s=document.createElement(e);return is.object(t)&&setAttributes(s,t),is.string(i)&&(s.innerText=i),s}function insertAfter(e,t){is.element(e)&&is.element(t)&&t.parentNode.insertBefore(e,t.nextSibling)}function insertElement(e,t,i,s){is.element(t)&&t.appendChild(createElement(e,i,s))}function removeElement(e){is.nodeList(e)||is.array(e)?Array.from(e).forEach(removeElement):is.element(e)&&is.element(e.parentNode)&&e.parentNode.removeChild(e)}function emptyElement(e){if(!is.element(e))return;let{length:t}=e.childNodes;for(;t>0;)e.removeChild(e.lastChild),t-=1}function replaceElement(e,t){return is.element(t)&&is.element(t.parentNode)&&is.element(e)?(t.parentNode.replaceChild(e,t),e):null}function getAttributesFromSelector(e,t){if(!is.string(e)||is.empty(e))return{};const i={},s=extend({},t);return e.split(\",\").forEach((e=>{const t=e.trim(),n=t.replace(\".\",\"\"),r=t.replace(/[[\\]]/g,\"\").split(\"=\"),[a]=r,o=r.length>1?r[1].replace(/[\"']/g,\"\"):\"\";switch(t.charAt(0)){case\".\":is.string(s.class)?i.class=`${s.class} ${n}`:i.class=n;break;case\"#\":i.id=t.replace(\"#\",\"\");break;case\"[\":i[a]=o}})),extend(s,i)}function toggleHidden(e,t){if(!is.element(e))return;let i=t;is.boolean(i)||(i=!e.hidden),e.hidden=i}function toggleClass(e,t,i){if(is.nodeList(e))return Array.from(e).map((e=>toggleClass(e,t,i)));if(is.element(e)){let s=\"toggle\";return void 0!==i&&(s=i?\"add\":\"remove\"),e.classList[s](t),e.classList.contains(t)}return!1}function hasClass(e,t){return is.element(e)&&e.classList.contains(t)}function matches(e,t){const{prototype:i}=Element;return(i.matches||i.webkitMatchesSelector||i.mozMatchesSelector||i.msMatchesSelector||function(){return Array.from(document.querySelectorAll(t)).includes(this)}).call(e,t)}function closest$1(e,t){const{prototype:i}=Element;return(i.closest||function(){let e=this;do{if(matches.matches(e,t))return e;e=e.parentElement||e.parentNode}while(null!==e&&1===e.nodeType);return null}).call(e,t)}function getElements(e){return this.elements.container.querySelectorAll(e)}function getElement(e){return this.elements.container.querySelector(e)}function setFocus(e=null,t=!1){is.element(e)&&e.focus({preventScroll:!0,focusVisible:t})}const defaultCodecs={\"audio/ogg\":\"vorbis\",\"audio/wav\":\"1\",\"video/webm\":\"vp8, vorbis\",\"video/mp4\":\"avc1.42E01E, mp4a.40.2\",\"video/ogg\":\"theora\"},support={audio:\"canPlayType\"in document.createElement(\"audio\"),video:\"canPlayType\"in document.createElement(\"video\"),check(e,t){const i=support[e]||\"html5\"!==t;return{api:i,ui:i&&support.rangeInput}},pip:!(browser.isIPhone||!is.function(createElement(\"video\").webkitSetPresentationMode)&&(!document.pictureInPictureEnabled||createElement(\"video\").disablePictureInPicture)),airplay:is.function(window.WebKitPlaybackTargetAvailabilityEvent),playsinline:\"playsInline\"in document.createElement(\"video\"),mime(e){if(is.empty(e))return!1;const[t]=e.split(\"/\");let i=e;if(!this.isHTML5||t!==this.type)return!1;Object.keys(defaultCodecs).includes(i)&&(i+=`; codecs=\"${defaultCodecs[e]}\"`);try{return Boolean(i&&this.media.canPlayType(i).replace(/no/,\"\"))}catch(e){return!1}},textTracks:\"textTracks\"in document.createElement(\"video\"),rangeInput:(()=>{const e=document.createElement(\"input\");return e.type=\"range\",\"range\"===e.type})(),touch:\"ontouchstart\"in document.documentElement,transitions:!1!==transitionEndEvent,reducedMotion:\"matchMedia\"in window&&window.matchMedia(\"(prefers-reduced-motion)\").matches},supportsPassiveListeners=(()=>{let e=!1;try{const t=Object.defineProperty({},\"passive\",{get:()=>(e=!0,null)});window.addEventListener(\"test\",null,t),window.removeEventListener(\"test\",null,t)}catch(e){}return e})();function toggleListener(e,t,i,s=!1,n=!0,r=!1){if(!e||!(\"addEventListener\"in e)||is.empty(t)||!is.function(i))return;const a=t.split(\" \");let o=r;supportsPassiveListeners&&(o={passive:n,capture:r}),a.forEach((t=>{this&&this.eventListeners&&s&&this.eventListeners.push({element:e,type:t,callback:i,options:o}),e[s?\"addEventListener\":\"removeEventListener\"](t,i,o)}))}function on(e,t=\"\",i,s=!0,n=!1){toggleListener.call(this,e,t,i,!0,s,n)}function off(e,t=\"\",i,s=!0,n=!1){toggleListener.call(this,e,t,i,!1,s,n)}function once(e,t=\"\",i,s=!0,n=!1){const r=(...a)=>{off(e,t,r,s,n),i.apply(this,a)};toggleListener.call(this,e,t,r,!0,s,n)}function triggerEvent(e,t=\"\",i=!1,s={}){if(!is.element(e)||is.empty(t))return;const n=new CustomEvent(t,{bubbles:i,detail:{...s,plyr:this}});e.dispatchEvent(n)}function unbindListeners(){this&&this.eventListeners&&(this.eventListeners.forEach((e=>{const{element:t,type:i,callback:s,options:n}=e;t.removeEventListener(i,s,n)})),this.eventListeners=[])}function ready(){return new Promise((e=>this.ready?setTimeout(e,0):on.call(this,this.elements.container,\"ready\",e))).then((()=>{}))}function silencePromise(e){is.promise(e)&&e.then(null,(()=>{}))}function dedupe(e){return is.array(e)?e.filter(((t,i)=>e.indexOf(t)===i)):e}function closest(e,t){return is.array(e)&&e.length?e.reduce(((e,i)=>Math.abs(i-t)<Math.abs(e-t)?i:e)):null}function supportsCSS(e){return!(!window||!window.CSS)&&window.CSS.supports(e)}const standardRatios=[[1,1],[4,3],[3,4],[5,4],[4,5],[3,2],[2,3],[16,10],[10,16],[16,9],[9,16],[21,9],[9,21],[32,9],[9,32]].reduce(((e,[t,i])=>({...e,[t/i]:[t,i]})),{});function validateAspectRatio(e){if(!(is.array(e)||is.string(e)&&e.includes(\":\")))return!1;return(is.array(e)?e:e.split(\":\")).map(Number).every(is.number)}function reduceAspectRatio(e){if(!is.array(e)||!e.every(is.number))return null;const[t,i]=e,s=(e,t)=>0===t?e:s(t,e%t),n=s(t,i);return[t/n,i/n]}function getAspectRatio(e){const t=e=>validateAspectRatio(e)?e.split(\":\").map(Number):null;let i=t(e);if(null===i&&(i=t(this.config.ratio)),null===i&&!is.empty(this.embed)&&is.array(this.embed.ratio)&&({ratio:i}=this.embed),null===i&&this.isHTML5){const{videoWidth:e,videoHeight:t}=this.media;i=[e,t]}return reduceAspectRatio(i)}function setAspectRatio(e){if(!this.isVideo)return{};const{wrapper:t}=this.elements,i=getAspectRatio.call(this,e);if(!is.array(i))return{};const[s,n]=reduceAspectRatio(i),r=100/s*n;if(supportsCSS(`aspect-ratio: ${s}/${n}`)?t.style.aspectRatio=`${s}/${n}`:t.style.paddingBottom=`${r}%`,this.isVimeo&&!this.config.vimeo.premium&&this.supported.ui){const e=100/this.media.offsetWidth*parseInt(window.getComputedStyle(this.media).paddingBottom,10),i=(e-r)/(e/50);this.fullscreen.active?t.style.paddingBottom=null:this.media.style.transform=`translateY(-${i}%)`}else this.isHTML5&&t.classList.add(this.config.classNames.videoFixedRatio);return{padding:r,ratio:i}}function roundAspectRatio(e,t,i=.05){const s=e/t,n=closest(Object.keys(standardRatios),s);return Math.abs(n-s)<=i?standardRatios[n]:[e,t]}function getViewportSize(){return[Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),Math.max(document.documentElement.clientHeight||0,window.innerHeight||0)]}const html5={getSources(){if(!this.isHTML5)return[];return Array.from(this.media.querySelectorAll(\"source\")).filter((e=>{const t=e.getAttribute(\"type\");return!!is.empty(t)||support.mime.call(this,t)}))},getQualityOptions(){return this.config.quality.forced?this.config.quality.options:html5.getSources.call(this).map((e=>Number(e.getAttribute(\"size\")))).filter(Boolean)},setup(){if(!this.isHTML5)return;const e=this;e.options.speed=e.config.speed.options,is.empty(this.config.ratio)||setAspectRatio.call(e),Object.defineProperty(e.media,\"quality\",{get(){const t=html5.getSources.call(e).find((t=>t.getAttribute(\"src\")===e.source));return t&&Number(t.getAttribute(\"size\"))},set(t){if(e.quality!==t){if(e.config.quality.forced&&is.function(e.config.quality.onChange))e.config.quality.onChange(t);else{const i=html5.getSources.call(e).find((e=>Number(e.getAttribute(\"size\"))===t));if(!i)return;const{currentTime:s,paused:n,preload:r,readyState:a,playbackRate:o}=e.media;e.media.src=i.getAttribute(\"src\"),(\"none\"!==r||a)&&(e.once(\"loadedmetadata\",(()=>{e.speed=o,e.currentTime=s,n||silencePromise(e.play())})),e.media.load())}triggerEvent.call(e,e.media,\"qualitychange\",!1,{quality:t})}}})},cancelRequests(){this.isHTML5&&(removeElement(html5.getSources.call(this)),this.media.setAttribute(\"src\",this.config.blankVideo),this.media.load(),this.debug.log(\"Cancelled network requests\"))}};function generateId(e){return`${e}-${Math.floor(1e4*Math.random())}`}function format(e,...t){return is.empty(e)?e:e.toString().replace(/{(\\d+)}/g,((e,i)=>t[i].toString()))}function getPercentage(e,t){return 0===e||0===t||Number.isNaN(e)||Number.isNaN(t)?0:(e/t*100).toFixed(2)}const replaceAll=(e=\"\",t=\"\",i=\"\")=>e.replace(new RegExp(t.toString().replace(/([.*+?^=!:${}()|[\\]/\\\\])/g,\"\\\\$1\"),\"g\"),i.toString()),toTitleCase=(e=\"\")=>e.toString().replace(/\\w\\S*/g,(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()));function toPascalCase(e=\"\"){let t=e.toString();return t=replaceAll(t,\"-\",\" \"),t=replaceAll(t,\"_\",\" \"),t=toTitleCase(t),replaceAll(t,\" \",\"\")}function toCamelCase(e=\"\"){let t=e.toString();return t=toPascalCase(t),t.charAt(0).toLowerCase()+t.slice(1)}function stripHTML(e){const t=document.createDocumentFragment(),i=document.createElement(\"div\");return t.appendChild(i),i.innerHTML=e,t.firstChild.innerText}function getHTML(e){const t=document.createElement(\"div\");return t.appendChild(e),t.innerHTML}const resources={pip:\"PIP\",airplay:\"AirPlay\",html5:\"HTML5\",vimeo:\"Vimeo\",youtube:\"YouTube\"},i18n={get(e=\"\",t={}){if(is.empty(e)||is.empty(t))return\"\";let i=getDeep(t.i18n,e);if(is.empty(i))return Object.keys(resources).includes(e)?resources[e]:\"\";const s={\"{seektime}\":t.seekTime,\"{title}\":t.title};return Object.entries(s).forEach((([e,t])=>{i=replaceAll(i,e,t)})),i}};class Storage{constructor(e){_defineProperty$1(this,\"get\",(e=>{if(!Storage.supported||!this.enabled)return null;const t=window.localStorage.getItem(this.key);if(is.empty(t))return null;const i=JSON.parse(t);return is.string(e)&&e.length?i[e]:i})),_defineProperty$1(this,\"set\",(e=>{if(!Storage.supported||!this.enabled)return;if(!is.object(e))return;let t=this.get();is.empty(t)&&(t={}),extend(t,e);try{window.localStorage.setItem(this.key,JSON.stringify(t))}catch(e){}})),this.enabled=e.config.storage.enabled,this.key=e.config.storage.key}static get supported(){try{if(!(\"localStorage\"in window))return!1;const e=\"___test\";return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch(e){return!1}}}function fetch(e,t=\"text\"){return new Promise(((i,s)=>{try{const s=new XMLHttpRequest;if(!(\"withCredentials\"in s))return;s.addEventListener(\"load\",(()=>{if(\"text\"===t)try{i(JSON.parse(s.responseText))}catch(e){i(s.responseText)}else i(s.response)})),s.addEventListener(\"error\",(()=>{throw new Error(s.status)})),s.open(\"GET\",e,!0),s.responseType=t,s.send()}catch(e){s(e)}}))}function loadSprite(e,t){if(!is.string(e))return;const i=\"cache\",s=is.string(t);let n=!1;const r=()=>null!==document.getElementById(t),a=(e,t)=>{e.innerHTML=t,s&&r()||document.body.insertAdjacentElement(\"afterbegin\",e)};if(!s||!r()){const r=Storage.supported,o=document.createElement(\"div\");if(o.setAttribute(\"hidden\",\"\"),s&&o.setAttribute(\"id\",t),r){const e=window.localStorage.getItem(`${i}-${t}`);if(n=null!==e,n){const t=JSON.parse(e);a(o,t.content)}}fetch(e).then((e=>{if(!is.empty(e)){if(r)try{window.localStorage.setItem(`${i}-${t}`,JSON.stringify({content:e}))}catch(e){}a(o,e)}})).catch((()=>{}))}}const getHours=e=>Math.trunc(e/60/60%60,10),getMinutes=e=>Math.trunc(e/60%60,10),getSeconds=e=>Math.trunc(e%60,10);function formatTime(e=0,t=!1,i=!1){if(!is.number(e))return formatTime(void 0,t,i);const s=e=>`0${e}`.slice(-2);let n=getHours(e);const r=getMinutes(e),a=getSeconds(e);return n=t||n>0?`${n}:`:\"\",`${i&&e>0?\"-\":\"\"}${n}${s(r)}:${s(a)}`}const controls={getIconUrl(){const e=new URL(this.config.iconUrl,window.location),t=window.location.host?window.location.host:window.top.location.host,i=e.host!==t||browser.isIE&&!window.svg4everybody;return{url:this.config.iconUrl,cors:i}},findElements(){try{return this.elements.controls=getElement.call(this,this.config.selectors.controls.wrapper),this.elements.buttons={play:getElements.call(this,this.config.selectors.buttons.play),pause:getElement.call(this,this.config.selectors.buttons.pause),restart:getElement.call(this,this.config.selectors.buttons.restart),rewind:getElement.call(this,this.config.selectors.buttons.rewind),fastForward:getElement.call(this,this.config.selectors.buttons.fastForward),mute:getElement.call(this,this.config.selectors.buttons.mute),pip:getElement.call(this,this.config.selectors.buttons.pip),airplay:getElement.call(this,this.config.selectors.buttons.airplay),settings:getElement.call(this,this.config.selectors.buttons.settings),captions:getElement.call(this,this.config.selectors.buttons.captions),fullscreen:getElement.call(this,this.config.selectors.buttons.fullscreen)},this.elements.progress=getElement.call(this,this.config.selectors.progress),this.elements.inputs={seek:getElement.call(this,this.config.selectors.inputs.seek),volume:getElement.call(this,this.config.selectors.inputs.volume)},this.elements.display={buffer:getElement.call(this,this.config.selectors.display.buffer),currentTime:getElement.call(this,this.config.selectors.display.currentTime),duration:getElement.call(this,this.config.selectors.display.duration)},is.element(this.elements.progress)&&(this.elements.display.seekTooltip=this.elements.progress.querySelector(`.${this.config.classNames.tooltip}`)),!0}catch(e){return this.debug.warn(\"It looks like there is a problem with your custom controls HTML\",e),this.toggleNativeControls(!0),!1}},createIcon(e,t){const i=\"http://www.w3.org/2000/svg\",s=controls.getIconUrl.call(this),n=`${s.cors?\"\":s.url}#${this.config.iconPrefix}`,r=document.createElementNS(i,\"svg\");setAttributes(r,extend(t,{\"aria-hidden\":\"true\",focusable:\"false\"}));const a=document.createElementNS(i,\"use\"),o=`${n}-${e}`;return\"href\"in a&&a.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"href\",o),a.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"xlink:href\",o),r.appendChild(a),r},createLabel(e,t={}){const i=i18n.get(e,this.config);return createElement(\"span\",{...t,class:[t.class,this.config.classNames.hidden].filter(Boolean).join(\" \")},i)},createBadge(e){if(is.empty(e))return null;const t=createElement(\"span\",{class:this.config.classNames.menu.value});return t.appendChild(createElement(\"span\",{class:this.config.classNames.menu.badge},e)),t},createButton(e,t){const i=extend({},t);let s=toCamelCase(e);const n={element:\"button\",toggle:!1,label:null,icon:null,labelPressed:null,iconPressed:null};switch([\"element\",\"icon\",\"label\"].forEach((e=>{Object.keys(i).includes(e)&&(n[e]=i[e],delete i[e])})),\"button\"!==n.element||Object.keys(i).includes(\"type\")||(i.type=\"button\"),Object.keys(i).includes(\"class\")?i.class.split(\" \").some((e=>e===this.config.classNames.control))||extend(i,{class:`${i.class} ${this.config.classNames.control}`}):i.class=this.config.classNames.control,e){case\"play\":n.toggle=!0,n.label=\"play\",n.labelPressed=\"pause\",n.icon=\"play\",n.iconPressed=\"pause\";break;case\"mute\":n.toggle=!0,n.label=\"mute\",n.labelPressed=\"unmute\",n.icon=\"volume\",n.iconPressed=\"muted\";break;case\"captions\":n.toggle=!0,n.label=\"enableCaptions\",n.labelPressed=\"disableCaptions\",n.icon=\"captions-off\",n.iconPressed=\"captions-on\";break;case\"fullscreen\":n.toggle=!0,n.label=\"enterFullscreen\",n.labelPressed=\"exitFullscreen\",n.icon=\"enter-fullscreen\",n.iconPressed=\"exit-fullscreen\";break;case\"play-large\":i.class+=` ${this.config.classNames.control}--overlaid`,s=\"play\",n.label=\"play\",n.icon=\"play\";break;default:is.empty(n.label)&&(n.label=s),is.empty(n.icon)&&(n.icon=e)}const r=createElement(n.element);return n.toggle?(r.appendChild(controls.createIcon.call(this,n.iconPressed,{class:\"icon--pressed\"})),r.appendChild(controls.createIcon.call(this,n.icon,{class:\"icon--not-pressed\"})),r.appendChild(controls.createLabel.call(this,n.labelPressed,{class:\"label--pressed\"})),r.appendChild(controls.createLabel.call(this,n.label,{class:\"label--not-pressed\"}))):(r.appendChild(controls.createIcon.call(this,n.icon)),r.appendChild(controls.createLabel.call(this,n.label))),extend(i,getAttributesFromSelector(this.config.selectors.buttons[s],i)),setAttributes(r,i),\"play\"===s?(is.array(this.elements.buttons[s])||(this.elements.buttons[s]=[]),this.elements.buttons[s].push(r)):this.elements.buttons[s]=r,r},createRange(e,t){const i=createElement(\"input\",extend(getAttributesFromSelector(this.config.selectors.inputs[e]),{type:\"range\",min:0,max:100,step:.01,value:0,autocomplete:\"off\",role:\"slider\",\"aria-label\":i18n.get(e,this.config),\"aria-valuemin\":0,\"aria-valuemax\":100,\"aria-valuenow\":0},t));return this.elements.inputs[e]=i,controls.updateRangeFill.call(this,i),RangeTouch.setup(i),i},createProgress(e,t){const i=createElement(\"progress\",extend(getAttributesFromSelector(this.config.selectors.display[e]),{min:0,max:100,value:0,role:\"progressbar\",\"aria-hidden\":!0},t));if(\"volume\"!==e){i.appendChild(createElement(\"span\",null,\"0\"));const t={played:\"played\",buffer:\"buffered\"}[e],s=t?i18n.get(t,this.config):\"\";i.innerText=`% ${s.toLowerCase()}`}return this.elements.display[e]=i,i},createTime(e,t){const i=getAttributesFromSelector(this.config.selectors.display[e],t),s=createElement(\"div\",extend(i,{class:`${i.class?i.class:\"\"} ${this.config.classNames.display.time} `.trim(),\"aria-label\":i18n.get(e,this.config),role:\"timer\"}),\"00:00\");return this.elements.display[e]=s,s},bindMenuItemShortcuts(e,t){on.call(this,e,\"keydown keyup\",(i=>{if(![\" \",\"ArrowUp\",\"ArrowDown\",\"ArrowRight\"].includes(i.key))return;if(i.preventDefault(),i.stopPropagation(),\"keydown\"===i.type)return;const s=matches(e,'[role=\"menuitemradio\"]');if(!s&&[\" \",\"ArrowRight\"].includes(i.key))controls.showMenuPanel.call(this,t,!0);else{let t;\" \"!==i.key&&(\"ArrowDown\"===i.key||s&&\"ArrowRight\"===i.key?(t=e.nextElementSibling,is.element(t)||(t=e.parentNode.firstElementChild)):(t=e.previousElementSibling,is.element(t)||(t=e.parentNode.lastElementChild)),setFocus.call(this,t,!0))}}),!1),on.call(this,e,\"keyup\",(e=>{\"Return\"===e.key&&controls.focusFirstMenuItem.call(this,null,!0)}))},createMenuItem({value:e,list:t,type:i,title:s,badge:n=null,checked:r=!1}){const a=getAttributesFromSelector(this.config.selectors.inputs[i]),o=createElement(\"button\",extend(a,{type:\"button\",role:\"menuitemradio\",class:`${this.config.classNames.control} ${a.class?a.class:\"\"}`.trim(),\"aria-checked\":r,value:e})),l=createElement(\"span\");l.innerHTML=s,is.element(n)&&l.appendChild(n),o.appendChild(l),Object.defineProperty(o,\"checked\",{enumerable:!0,get:()=>\"true\"===o.getAttribute(\"aria-checked\"),set(e){e&&Array.from(o.parentNode.children).filter((e=>matches(e,'[role=\"menuitemradio\"]'))).forEach((e=>e.setAttribute(\"aria-checked\",\"false\"))),o.setAttribute(\"aria-checked\",e?\"true\":\"false\")}}),this.listeners.bind(o,\"click keyup\",(t=>{if(!is.keyboardEvent(t)||\" \"===t.key){switch(t.preventDefault(),t.stopPropagation(),o.checked=!0,i){case\"language\":this.currentTrack=Number(e);break;case\"quality\":this.quality=e;break;case\"speed\":this.speed=parseFloat(e)}controls.showMenuPanel.call(this,\"home\",is.keyboardEvent(t))}}),i,!1),controls.bindMenuItemShortcuts.call(this,o,i),t.appendChild(o)},formatTime(e=0,t=!1){if(!is.number(e))return e;return formatTime(e,getHours(this.duration)>0,t)},updateTimeDisplay(e=null,t=0,i=!1){is.element(e)&&is.number(t)&&(e.innerText=controls.formatTime(t,i))},updateVolume(){this.supported.ui&&(is.element(this.elements.inputs.volume)&&controls.setRange.call(this,this.elements.inputs.volume,this.muted?0:this.volume),is.element(this.elements.buttons.mute)&&(this.elements.buttons.mute.pressed=this.muted||0===this.volume))},setRange(e,t=0){is.element(e)&&(e.value=t,controls.updateRangeFill.call(this,e))},updateProgress(e){if(!this.supported.ui||!is.event(e))return;let t=0;const i=(e,t)=>{const i=is.number(t)?t:0,s=is.element(e)?e:this.elements.display.buffer;if(is.element(s)){s.value=i;const e=s.getElementsByTagName(\"span\")[0];is.element(e)&&(e.childNodes[0].nodeValue=i)}};if(e)switch(e.type){case\"timeupdate\":case\"seeking\":case\"seeked\":t=getPercentage(this.currentTime,this.duration),\"timeupdate\"===e.type&&controls.setRange.call(this,this.elements.inputs.seek,t);break;case\"playing\":case\"progress\":i(this.elements.display.buffer,100*this.buffered)}},updateRangeFill(e){const t=is.event(e)?e.target:e;if(is.element(t)&&\"range\"===t.getAttribute(\"type\")){if(matches(t,this.config.selectors.inputs.seek)){t.setAttribute(\"aria-valuenow\",this.currentTime);const e=controls.formatTime(this.currentTime),i=controls.formatTime(this.duration),s=i18n.get(\"seekLabel\",this.config);t.setAttribute(\"aria-valuetext\",s.replace(\"{currentTime}\",e).replace(\"{duration}\",i))}else if(matches(t,this.config.selectors.inputs.volume)){const e=100*t.value;t.setAttribute(\"aria-valuenow\",e),t.setAttribute(\"aria-valuetext\",`${e.toFixed(1)}%`)}else t.setAttribute(\"aria-valuenow\",t.value);(browser.isWebKit||browser.isIPadOS)&&t.style.setProperty(\"--value\",t.value/t.max*100+\"%\")}},updateSeekTooltip(e){var t,i;if(!this.config.tooltips.seek||!is.element(this.elements.inputs.seek)||!is.element(this.elements.display.seekTooltip)||0===this.duration)return;const s=this.elements.display.seekTooltip,n=`${this.config.classNames.tooltip}--visible`,r=e=>toggleClass(s,n,e);if(this.touch)return void r(!1);let a=0;const o=this.elements.progress.getBoundingClientRect();if(is.event(e))a=100/o.width*(e.pageX-o.left);else{if(!hasClass(s,n))return;a=parseFloat(s.style.left,10)}a<0?a=0:a>100&&(a=100);const l=this.duration/100*a;s.innerText=controls.formatTime(l);const c=null===(t=this.config.markers)||void 0===t||null===(i=t.points)||void 0===i?void 0:i.find((({time:e})=>e===Math.round(l)));c&&s.insertAdjacentHTML(\"afterbegin\",`${c.label}<br>`),s.style.left=`${a}%`,is.event(e)&&[\"mouseenter\",\"mouseleave\"].includes(e.type)&&r(\"mouseenter\"===e.type)},timeUpdate(e){const t=!is.element(this.elements.display.duration)&&this.config.invertTime;controls.updateTimeDisplay.call(this,this.elements.display.currentTime,t?this.duration-this.currentTime:this.currentTime,t),e&&\"timeupdate\"===e.type&&this.media.seeking||controls.updateProgress.call(this,e)},durationUpdate(){if(!this.supported.ui||!this.config.invertTime&&this.currentTime)return;if(this.duration>=2**32)return toggleHidden(this.elements.display.currentTime,!0),void toggleHidden(this.elements.progress,!0);is.element(this.elements.inputs.seek)&&this.elements.inputs.seek.setAttribute(\"aria-valuemax\",this.duration);const e=is.element(this.elements.display.duration);!e&&this.config.displayDuration&&this.paused&&controls.updateTimeDisplay.call(this,this.elements.display.currentTime,this.duration),e&&controls.updateTimeDisplay.call(this,this.elements.display.duration,this.duration),this.config.markers.enabled&&controls.setMarkers.call(this),controls.updateSeekTooltip.call(this)},toggleMenuButton(e,t){toggleHidden(this.elements.settings.buttons[e],!t)},updateSetting(e,t,i){const s=this.elements.settings.panels[e];let n=null,r=t;if(\"captions\"===e)n=this.currentTrack;else{if(n=is.empty(i)?this[e]:i,is.empty(n)&&(n=this.config[e].default),!is.empty(this.options[e])&&!this.options[e].includes(n))return void this.debug.warn(`Unsupported value of '${n}' for ${e}`);if(!this.config[e].options.includes(n))return void this.debug.warn(`Disabled value of '${n}' for ${e}`)}if(is.element(r)||(r=s&&s.querySelector('[role=\"menu\"]')),!is.element(r))return;this.elements.settings.buttons[e].querySelector(`.${this.config.classNames.menu.value}`).innerHTML=controls.getLabel.call(this,e,n);const a=r&&r.querySelector(`[value=\"${n}\"]`);is.element(a)&&(a.checked=!0)},getLabel(e,t){switch(e){case\"speed\":return 1===t?i18n.get(\"normal\",this.config):`${t}&times;`;case\"quality\":if(is.number(t)){const e=i18n.get(`qualityLabel.${t}`,this.config);return e.length?e:`${t}p`}return toTitleCase(t);case\"captions\":return captions.getLabel.call(this);default:return null}},setQualityMenu(e){if(!is.element(this.elements.settings.panels.quality))return;const t=\"quality\",i=this.elements.settings.panels.quality.querySelector('[role=\"menu\"]');is.array(e)&&(this.options.quality=dedupe(e).filter((e=>this.config.quality.options.includes(e))));const s=!is.empty(this.options.quality)&&this.options.quality.length>1;if(controls.toggleMenuButton.call(this,t,s),emptyElement(i),controls.checkMenu.call(this),!s)return;const n=e=>{const t=i18n.get(`qualityBadge.${e}`,this.config);return t.length?controls.createBadge.call(this,t):null};this.options.quality.sort(((e,t)=>{const i=this.config.quality.options;return i.indexOf(e)>i.indexOf(t)?1:-1})).forEach((e=>{controls.createMenuItem.call(this,{value:e,list:i,type:t,title:controls.getLabel.call(this,\"quality\",e),badge:n(e)})})),controls.updateSetting.call(this,t,i)},setCaptionsMenu(){if(!is.element(this.elements.settings.panels.captions))return;const e=\"captions\",t=this.elements.settings.panels.captions.querySelector('[role=\"menu\"]'),i=captions.getTracks.call(this),s=Boolean(i.length);if(controls.toggleMenuButton.call(this,e,s),emptyElement(t),controls.checkMenu.call(this),!s)return;const n=i.map(((e,i)=>({value:i,checked:this.captions.toggled&&this.currentTrack===i,title:captions.getLabel.call(this,e),badge:e.language&&controls.createBadge.call(this,e.language.toUpperCase()),list:t,type:\"language\"})));n.unshift({value:-1,checked:!this.captions.toggled,title:i18n.get(\"disabled\",this.config),list:t,type:\"language\"}),n.forEach(controls.createMenuItem.bind(this)),controls.updateSetting.call(this,e,t)},setSpeedMenu(){if(!is.element(this.elements.settings.panels.speed))return;const e=\"speed\",t=this.elements.settings.panels.speed.querySelector('[role=\"menu\"]');this.options.speed=this.options.speed.filter((e=>e>=this.minimumSpeed&&e<=this.maximumSpeed));const i=!is.empty(this.options.speed)&&this.options.speed.length>1;controls.toggleMenuButton.call(this,e,i),emptyElement(t),controls.checkMenu.call(this),i&&(this.options.speed.forEach((i=>{controls.createMenuItem.call(this,{value:i,list:t,type:e,title:controls.getLabel.call(this,\"speed\",i)})})),controls.updateSetting.call(this,e,t))},checkMenu(){const{buttons:e}=this.elements.settings,t=!is.empty(e)&&Object.values(e).some((e=>!e.hidden));toggleHidden(this.elements.settings.menu,!t)},focusFirstMenuItem(e,t=!1){if(this.elements.settings.popup.hidden)return;let i=e;is.element(i)||(i=Object.values(this.elements.settings.panels).find((e=>!e.hidden)));const s=i.querySelector('[role^=\"menuitem\"]');setFocus.call(this,s,t)},toggleMenu(e){const{popup:t}=this.elements.settings,i=this.elements.buttons.settings;if(!is.element(t)||!is.element(i))return;const{hidden:s}=t;let n=s;if(is.boolean(e))n=e;else if(is.keyboardEvent(e)&&\"Escape\"===e.key)n=!1;else if(is.event(e)){const s=is.function(e.composedPath)?e.composedPath()[0]:e.target,r=t.contains(s);if(r||!r&&e.target!==i&&n)return}i.setAttribute(\"aria-expanded\",n),toggleHidden(t,!n),toggleClass(this.elements.container,this.config.classNames.menu.open,n),n&&is.keyboardEvent(e)?controls.focusFirstMenuItem.call(this,null,!0):n||s||setFocus.call(this,i,is.keyboardEvent(e))},getMenuSize(e){const t=e.cloneNode(!0);t.style.position=\"absolute\",t.style.opacity=0,t.removeAttribute(\"hidden\"),e.parentNode.appendChild(t);const i=t.scrollWidth,s=t.scrollHeight;return removeElement(t),{width:i,height:s}},showMenuPanel(e=\"\",t=!1){const i=this.elements.container.querySelector(`#plyr-settings-${this.id}-${e}`);if(!is.element(i))return;const s=i.parentNode,n=Array.from(s.children).find((e=>!e.hidden));if(support.transitions&&!support.reducedMotion){s.style.width=`${n.scrollWidth}px`,s.style.height=`${n.scrollHeight}px`;const e=controls.getMenuSize.call(this,i),t=e=>{e.target===s&&[\"width\",\"height\"].includes(e.propertyName)&&(s.style.width=\"\",s.style.height=\"\",off.call(this,s,transitionEndEvent,t))};on.call(this,s,transitionEndEvent,t),s.style.width=`${e.width}px`,s.style.height=`${e.height}px`}toggleHidden(n,!0),toggleHidden(i,!1),controls.focusFirstMenuItem.call(this,i,t)},setDownloadUrl(){const e=this.elements.buttons.download;is.element(e)&&e.setAttribute(\"href\",this.download)},create(e){const{bindMenuItemShortcuts:t,createButton:i,createProgress:s,createRange:n,createTime:r,setQualityMenu:a,setSpeedMenu:o,showMenuPanel:l}=controls;this.elements.controls=null,is.array(this.config.controls)&&this.config.controls.includes(\"play-large\")&&this.elements.container.appendChild(i.call(this,\"play-large\"));const c=createElement(\"div\",getAttributesFromSelector(this.config.selectors.controls.wrapper));this.elements.controls=c;const u={class:\"plyr__controls__item\"};return dedupe(is.array(this.config.controls)?this.config.controls:[]).forEach((a=>{if(\"restart\"===a&&c.appendChild(i.call(this,\"restart\",u)),\"rewind\"===a&&c.appendChild(i.call(this,\"rewind\",u)),\"play\"===a&&c.appendChild(i.call(this,\"play\",u)),\"fast-forward\"===a&&c.appendChild(i.call(this,\"fast-forward\",u)),\"progress\"===a){const t=createElement(\"div\",{class:`${u.class} plyr__progress__container`}),i=createElement(\"div\",getAttributesFromSelector(this.config.selectors.progress));if(i.appendChild(n.call(this,\"seek\",{id:`plyr-seek-${e.id}`})),i.appendChild(s.call(this,\"buffer\")),this.config.tooltips.seek){const e=createElement(\"span\",{class:this.config.classNames.tooltip},\"00:00\");i.appendChild(e),this.elements.display.seekTooltip=e}this.elements.progress=i,t.appendChild(this.elements.progress),c.appendChild(t)}if(\"current-time\"===a&&c.appendChild(r.call(this,\"currentTime\",u)),\"duration\"===a&&c.appendChild(r.call(this,\"duration\",u)),\"mute\"===a||\"volume\"===a){let{volume:t}=this.elements;if(is.element(t)&&c.contains(t)||(t=createElement(\"div\",extend({},u,{class:`${u.class} plyr__volume`.trim()})),this.elements.volume=t,c.appendChild(t)),\"mute\"===a&&t.appendChild(i.call(this,\"mute\")),\"volume\"===a&&!browser.isIos&&!browser.isIPadOS){const i={max:1,step:.05,value:this.config.volume};t.appendChild(n.call(this,\"volume\",extend(i,{id:`plyr-volume-${e.id}`})))}}if(\"captions\"===a&&c.appendChild(i.call(this,\"captions\",u)),\"settings\"===a&&!is.empty(this.config.settings)){const s=createElement(\"div\",extend({},u,{class:`${u.class} plyr__menu`.trim(),hidden:\"\"}));s.appendChild(i.call(this,\"settings\",{\"aria-haspopup\":!0,\"aria-controls\":`plyr-settings-${e.id}`,\"aria-expanded\":!1}));const n=createElement(\"div\",{class:\"plyr__menu__container\",id:`plyr-settings-${e.id}`,hidden:\"\"}),r=createElement(\"div\"),a=createElement(\"div\",{id:`plyr-settings-${e.id}-home`}),o=createElement(\"div\",{role:\"menu\"});a.appendChild(o),r.appendChild(a),this.elements.settings.panels.home=a,this.config.settings.forEach((i=>{const s=createElement(\"button\",extend(getAttributesFromSelector(this.config.selectors.buttons.settings),{type:\"button\",class:`${this.config.classNames.control} ${this.config.classNames.control}--forward`,role:\"menuitem\",\"aria-haspopup\":!0,hidden:\"\"}));t.call(this,s,i),on.call(this,s,\"click\",(()=>{l.call(this,i,!1)}));const n=createElement(\"span\",null,i18n.get(i,this.config)),a=createElement(\"span\",{class:this.config.classNames.menu.value});a.innerHTML=e[i],n.appendChild(a),s.appendChild(n),o.appendChild(s);const c=createElement(\"div\",{id:`plyr-settings-${e.id}-${i}`,hidden:\"\"}),u=createElement(\"button\",{type:\"button\",class:`${this.config.classNames.control} ${this.config.classNames.control}--back`});u.appendChild(createElement(\"span\",{\"aria-hidden\":!0},i18n.get(i,this.config))),u.appendChild(createElement(\"span\",{class:this.config.classNames.hidden},i18n.get(\"menuBack\",this.config))),on.call(this,c,\"keydown\",(e=>{\"ArrowLeft\"===e.key&&(e.preventDefault(),e.stopPropagation(),l.call(this,\"home\",!0))}),!1),on.call(this,u,\"click\",(()=>{l.call(this,\"home\",!1)})),c.appendChild(u),c.appendChild(createElement(\"div\",{role:\"menu\"})),r.appendChild(c),this.elements.settings.buttons[i]=s,this.elements.settings.panels[i]=c})),n.appendChild(r),s.appendChild(n),c.appendChild(s),this.elements.settings.popup=n,this.elements.settings.menu=s}if(\"pip\"===a&&support.pip&&c.appendChild(i.call(this,\"pip\",u)),\"airplay\"===a&&support.airplay&&c.appendChild(i.call(this,\"airplay\",u)),\"download\"===a){const e=extend({},u,{element:\"a\",href:this.download,target:\"_blank\"});this.isHTML5&&(e.download=\"\");const{download:t}=this.config.urls;!is.url(t)&&this.isEmbed&&extend(e,{icon:`logo-${this.provider}`,label:this.provider}),c.appendChild(i.call(this,\"download\",e))}\"fullscreen\"===a&&c.appendChild(i.call(this,\"fullscreen\",u))})),this.isHTML5&&a.call(this,html5.getQualityOptions.call(this)),o.call(this),c},inject(){if(this.config.loadSprite){const e=controls.getIconUrl.call(this);e.cors&&loadSprite(e.url,\"sprite-plyr\")}this.id=Math.floor(1e4*Math.random());let e=null;this.elements.controls=null;const t={id:this.id,seektime:this.config.seekTime,title:this.config.title};let i=!0;is.function(this.config.controls)&&(this.config.controls=this.config.controls.call(this,t)),this.config.controls||(this.config.controls=[]),is.element(this.config.controls)||is.string(this.config.controls)?e=this.config.controls:(e=controls.create.call(this,{id:this.id,seektime:this.config.seekTime,speed:this.speed,quality:this.quality,captions:captions.getLabel.call(this)}),i=!1);let s;i&&is.string(this.config.controls)&&(e=(e=>{let i=e;return Object.entries(t).forEach((([e,t])=>{i=replaceAll(i,`{${e}}`,t)})),i})(e)),is.string(this.config.selectors.controls.container)&&(s=document.querySelector(this.config.selectors.controls.container)),is.element(s)||(s=this.elements.container);if(s[is.element(e)?\"insertAdjacentElement\":\"insertAdjacentHTML\"](\"afterbegin\",e),is.element(this.elements.controls)||controls.findElements.call(this),!is.empty(this.elements.buttons)){const e=e=>{const t=this.config.classNames.controlPressed;e.setAttribute(\"aria-pressed\",\"false\"),Object.defineProperty(e,\"pressed\",{configurable:!0,enumerable:!0,get:()=>hasClass(e,t),set(i=!1){toggleClass(e,t,i),e.setAttribute(\"aria-pressed\",i?\"true\":\"false\")}})};Object.values(this.elements.buttons).filter(Boolean).forEach((t=>{is.array(t)||is.nodeList(t)?Array.from(t).filter(Boolean).forEach(e):e(t)}))}if(browser.isEdge&&repaint(s),this.config.tooltips.controls){const{classNames:e,selectors:t}=this.config,i=`${t.controls.wrapper} ${t.labels} .${e.hidden}`,s=getElements.call(this,i);Array.from(s).forEach((e=>{toggleClass(e,this.config.classNames.hidden,!1),toggleClass(e,this.config.classNames.tooltip,!0)}))}},setMediaMetadata(){try{\"mediaSession\"in navigator&&(navigator.mediaSession.metadata=new window.MediaMetadata({title:this.config.mediaMetadata.title,artist:this.config.mediaMetadata.artist,album:this.config.mediaMetadata.album,artwork:this.config.mediaMetadata.artwork}))}catch(e){}},setMarkers(){var e,t;if(!this.duration||this.elements.markers)return;const i=null===(e=this.config.markers)||void 0===e||null===(t=e.points)||void 0===t?void 0:t.filter((({time:e})=>e>0&&e<this.duration));if(null==i||!i.length)return;const s=document.createDocumentFragment(),n=document.createDocumentFragment();let r=null;const a=`${this.config.classNames.tooltip}--visible`,o=e=>toggleClass(r,a,e);i.forEach((e=>{const t=createElement(\"span\",{class:this.config.classNames.marker},\"\"),i=e.time/this.duration*100+\"%\";r&&(t.addEventListener(\"mouseenter\",(()=>{e.label||(r.style.left=i,r.innerHTML=e.label,o(!0))})),t.addEventListener(\"mouseleave\",(()=>{o(!1)}))),t.addEventListener(\"click\",(()=>{this.currentTime=e.time})),t.style.left=i,n.appendChild(t)})),s.appendChild(n),this.config.tooltips.seek||(r=createElement(\"span\",{class:this.config.classNames.tooltip},\"\"),s.appendChild(r)),this.elements.markers={points:n,tip:r},this.elements.progress.appendChild(s)}};function parseUrl(e,t=!0){let i=e;if(t){const e=document.createElement(\"a\");e.href=i,i=e.href}try{return new URL(i)}catch(e){return null}}function buildUrlParams(e){const t=new URLSearchParams;return is.object(e)&&Object.entries(e).forEach((([e,i])=>{t.set(e,i)})),t}const captions={setup(){if(!this.supported.ui)return;if(!this.isVideo||this.isYouTube||this.isHTML5&&!support.textTracks)return void(is.array(this.config.controls)&&this.config.controls.includes(\"settings\")&&this.config.settings.includes(\"captions\")&&controls.setCaptionsMenu.call(this));if(is.element(this.elements.captions)||(this.elements.captions=createElement(\"div\",getAttributesFromSelector(this.config.selectors.captions)),this.elements.captions.setAttribute(\"dir\",\"auto\"),insertAfter(this.elements.captions,this.elements.wrapper)),browser.isIE&&window.URL){const e=this.media.querySelectorAll(\"track\");Array.from(e).forEach((e=>{const t=e.getAttribute(\"src\"),i=parseUrl(t);null!==i&&i.hostname!==window.location.href.hostname&&[\"http:\",\"https:\"].includes(i.protocol)&&fetch(t,\"blob\").then((t=>{e.setAttribute(\"src\",window.URL.createObjectURL(t))})).catch((()=>{removeElement(e)}))}))}const e=dedupe((navigator.languages||[navigator.language||navigator.userLanguage||\"en\"]).map((e=>e.split(\"-\")[0])));let t=(this.storage.get(\"language\")||this.config.captions.language||\"auto\").toLowerCase();\"auto\"===t&&([t]=e);let i=this.storage.get(\"captions\");if(is.boolean(i)||({active:i}=this.config.captions),Object.assign(this.captions,{toggled:!1,active:i,language:t,languages:e}),this.isHTML5){const e=this.config.captions.update?\"addtrack removetrack\":\"removetrack\";on.call(this,this.media.textTracks,e,captions.update.bind(this))}setTimeout(captions.update.bind(this),0)},update(){const e=captions.getTracks.call(this,!0),{active:t,language:i,meta:s,currentTrackNode:n}=this.captions,r=Boolean(e.find((e=>e.language===i)));this.isHTML5&&this.isVideo&&e.filter((e=>!s.get(e))).forEach((e=>{this.debug.log(\"Track added\",e),s.set(e,{default:\"showing\"===e.mode}),\"showing\"===e.mode&&(e.mode=\"hidden\"),on.call(this,e,\"cuechange\",(()=>captions.updateCues.call(this)))})),(r&&this.language!==i||!e.includes(n))&&(captions.setLanguage.call(this,i),captions.toggle.call(this,t&&r)),this.elements&&toggleClass(this.elements.container,this.config.classNames.captions.enabled,!is.empty(e)),is.array(this.config.controls)&&this.config.controls.includes(\"settings\")&&this.config.settings.includes(\"captions\")&&controls.setCaptionsMenu.call(this)},toggle(e,t=!0){if(!this.supported.ui)return;const{toggled:i}=this.captions,s=this.config.classNames.captions.active,n=is.nullOrUndefined(e)?!i:e;if(n!==i){if(t||(this.captions.active=n,this.storage.set({captions:n})),!this.language&&n&&!t){const e=captions.getTracks.call(this),t=captions.findTrack.call(this,[this.captions.language,...this.captions.languages],!0);return this.captions.language=t.language,void captions.set.call(this,e.indexOf(t))}this.elements.buttons.captions&&(this.elements.buttons.captions.pressed=n),toggleClass(this.elements.container,s,n),this.captions.toggled=n,controls.updateSetting.call(this,\"captions\"),triggerEvent.call(this,this.media,n?\"captionsenabled\":\"captionsdisabled\")}setTimeout((()=>{n&&this.captions.toggled&&(this.captions.currentTrackNode.mode=\"hidden\")}))},set(e,t=!0){const i=captions.getTracks.call(this);if(-1!==e)if(is.number(e))if(e in i){if(this.captions.currentTrack!==e){this.captions.currentTrack=e;const s=i[e],{language:n}=s||{};this.captions.currentTrackNode=s,controls.updateSetting.call(this,\"captions\"),t||(this.captions.language=n,this.storage.set({language:n})),this.isVimeo&&this.embed.enableTextTrack(n),triggerEvent.call(this,this.media,\"languagechange\")}captions.toggle.call(this,!0,t),this.isHTML5&&this.isVideo&&captions.updateCues.call(this)}else this.debug.warn(\"Track not found\",e);else this.debug.warn(\"Invalid caption argument\",e);else captions.toggle.call(this,!1,t)},setLanguage(e,t=!0){if(!is.string(e))return void this.debug.warn(\"Invalid language argument\",e);const i=e.toLowerCase();this.captions.language=i;const s=captions.getTracks.call(this),n=captions.findTrack.call(this,[i]);captions.set.call(this,s.indexOf(n),t)},getTracks(e=!1){return Array.from((this.media||{}).textTracks||[]).filter((t=>!this.isHTML5||e||this.captions.meta.has(t))).filter((e=>[\"captions\",\"subtitles\"].includes(e.kind)))},findTrack(e,t=!1){const i=captions.getTracks.call(this),s=e=>Number((this.captions.meta.get(e)||{}).default),n=Array.from(i).sort(((e,t)=>s(t)-s(e)));let r;return e.every((e=>(r=n.find((t=>t.language===e)),!r))),r||(t?n[0]:void 0)},getCurrentTrack(){return captions.getTracks.call(this)[this.currentTrack]},getLabel(e){let t=e;return!is.track(t)&&support.textTracks&&this.captions.toggled&&(t=captions.getCurrentTrack.call(this)),is.track(t)?is.empty(t.label)?is.empty(t.language)?i18n.get(\"enabled\",this.config):e.language.toUpperCase():t.label:i18n.get(\"disabled\",this.config)},updateCues(e){if(!this.supported.ui)return;if(!is.element(this.elements.captions))return void this.debug.warn(\"No captions element to render to\");if(!is.nullOrUndefined(e)&&!Array.isArray(e))return void this.debug.warn(\"updateCues: Invalid input\",e);let t=e;if(!t){const e=captions.getCurrentTrack.call(this);t=Array.from((e||{}).activeCues||[]).map((e=>e.getCueAsHTML())).map(getHTML)}const i=t.map((e=>e.trim())).join(\"\\n\");if(i!==this.elements.captions.innerHTML){emptyElement(this.elements.captions);const e=createElement(\"span\",getAttributesFromSelector(this.config.selectors.caption));e.innerHTML=i,this.elements.captions.appendChild(e),triggerEvent.call(this,this.media,\"cuechange\")}}},defaults={enabled:!0,title:\"\",debug:!1,autoplay:!1,autopause:!0,playsinline:!0,seekTime:10,volume:1,muted:!1,duration:null,displayDuration:!0,invertTime:!0,toggleInvert:!0,ratio:null,clickToPlay:!0,hideControls:!0,resetOnEnd:!1,disableContextMenu:!0,loadSprite:!0,iconPrefix:\"plyr\",iconUrl:\"https://cdn.plyr.io/3.7.8/plyr.svg\",blankVideo:\"https://cdn.plyr.io/static/blank.mp4\",quality:{default:576,options:[4320,2880,2160,1440,1080,720,576,480,360,240],forced:!1,onChange:null},loop:{active:!1},speed:{selected:1,options:[.5,.75,1,1.25,1.5,1.75,2,4]},keyboard:{focused:!0,global:!1},tooltips:{controls:!1,seek:!0},captions:{active:!1,language:\"auto\",update:!1},fullscreen:{enabled:!0,fallback:!0,iosNative:!1},storage:{enabled:!0,key:\"plyr\"},controls:[\"play-large\",\"play\",\"progress\",\"current-time\",\"mute\",\"volume\",\"captions\",\"settings\",\"pip\",\"airplay\",\"fullscreen\"],settings:[\"captions\",\"quality\",\"speed\"],i18n:{restart:\"Restart\",rewind:\"Rewind {seektime}s\",play:\"Play\",pause:\"Pause\",fastForward:\"Forward {seektime}s\",seek:\"Seek\",seekLabel:\"{currentTime} of {duration}\",played:\"Played\",buffered:\"Buffered\",currentTime:\"Current time\",duration:\"Duration\",volume:\"Volume\",mute:\"Mute\",unmute:\"Unmute\",enableCaptions:\"Enable captions\",disableCaptions:\"Disable captions\",download:\"Download\",enterFullscreen:\"Enter fullscreen\",exitFullscreen:\"Exit fullscreen\",frameTitle:\"Player for {title}\",captions:\"Captions\",settings:\"Settings\",pip:\"PIP\",menuBack:\"Go back to previous menu\",speed:\"Speed\",normal:\"Normal\",quality:\"Quality\",loop:\"Loop\",start:\"Start\",end:\"End\",all:\"All\",reset:\"Reset\",disabled:\"Disabled\",enabled:\"Enabled\",advertisement:\"Ad\",qualityBadge:{2160:\"4K\",1440:\"HD\",1080:\"HD\",720:\"HD\",576:\"SD\",480:\"SD\"}},urls:{download:null,vimeo:{sdk:\"https://player.vimeo.com/api/player.js\",iframe:\"https://player.vimeo.com/video/{0}?{1}\",api:\"https://vimeo.com/api/oembed.json?url={0}\"},youtube:{sdk:\"https://www.youtube.com/iframe_api\",api:\"https://noembed.com/embed?url=https://www.youtube.com/watch?v={0}\"},googleIMA:{sdk:\"https://imasdk.googleapis.com/js/sdkloader/ima3.js\"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,fastForward:null,mute:null,volume:null,captions:null,download:null,fullscreen:null,pip:null,airplay:null,speed:null,quality:null,loop:null,language:null},events:[\"ended\",\"progress\",\"stalled\",\"playing\",\"waiting\",\"canplay\",\"canplaythrough\",\"loadstart\",\"loadeddata\",\"loadedmetadata\",\"timeupdate\",\"volumechange\",\"play\",\"pause\",\"error\",\"seeking\",\"seeked\",\"emptied\",\"ratechange\",\"cuechange\",\"download\",\"enterfullscreen\",\"exitfullscreen\",\"captionsenabled\",\"captionsdisabled\",\"languagechange\",\"controlshidden\",\"controlsshown\",\"ready\",\"statechange\",\"qualitychange\",\"adsloaded\",\"adscontentpause\",\"adscontentresume\",\"adstarted\",\"adsmidpoint\",\"adscomplete\",\"adsallcomplete\",\"adsimpression\",\"adsclick\"],selectors:{editable:\"input, textarea, select, [contenteditable]\",container:\".plyr\",controls:{container:null,wrapper:\".plyr__controls\"},labels:\"[data-plyr]\",buttons:{play:'[data-plyr=\"play\"]',pause:'[data-plyr=\"pause\"]',restart:'[data-plyr=\"restart\"]',rewind:'[data-plyr=\"rewind\"]',fastForward:'[data-plyr=\"fast-forward\"]',mute:'[data-plyr=\"mute\"]',captions:'[data-plyr=\"captions\"]',download:'[data-plyr=\"download\"]',fullscreen:'[data-plyr=\"fullscreen\"]',pip:'[data-plyr=\"pip\"]',airplay:'[data-plyr=\"airplay\"]',settings:'[data-plyr=\"settings\"]',loop:'[data-plyr=\"loop\"]'},inputs:{seek:'[data-plyr=\"seek\"]',volume:'[data-plyr=\"volume\"]',speed:'[data-plyr=\"speed\"]',language:'[data-plyr=\"language\"]',quality:'[data-plyr=\"quality\"]'},display:{currentTime:\".plyr__time--current\",duration:\".plyr__time--duration\",buffer:\".plyr__progress__buffer\",loop:\".plyr__progress__loop\",volume:\".plyr__volume--display\"},progress:\".plyr__progress\",captions:\".plyr__captions\",caption:\".plyr__caption\"},classNames:{type:\"plyr--{0}\",provider:\"plyr--{0}\",video:\"plyr__video-wrapper\",embed:\"plyr__video-embed\",videoFixedRatio:\"plyr__video-wrapper--fixed-ratio\",embedContainer:\"plyr__video-embed__container\",poster:\"plyr__poster\",posterEnabled:\"plyr__poster-enabled\",ads:\"plyr__ads\",control:\"plyr__control\",controlPressed:\"plyr__control--pressed\",playing:\"plyr--playing\",paused:\"plyr--paused\",stopped:\"plyr--stopped\",loading:\"plyr--loading\",hover:\"plyr--hover\",tooltip:\"plyr__tooltip\",cues:\"plyr__cues\",marker:\"plyr__progress__marker\",hidden:\"plyr__sr-only\",hideControls:\"plyr--hide-controls\",isTouch:\"plyr--is-touch\",uiSupported:\"plyr--full-ui\",noTransition:\"plyr--no-transition\",display:{time:\"plyr__time\"},menu:{value:\"plyr__menu__value\",badge:\"plyr__badge\",open:\"plyr--menu-open\"},captions:{enabled:\"plyr--captions-enabled\",active:\"plyr--captions-active\"},fullscreen:{enabled:\"plyr--fullscreen-enabled\",fallback:\"plyr--fullscreen-fallback\"},pip:{supported:\"plyr--pip-supported\",active:\"plyr--pip-active\"},airplay:{supported:\"plyr--airplay-supported\",active:\"plyr--airplay-active\"},previewThumbnails:{thumbContainer:\"plyr__preview-thumb\",thumbContainerShown:\"plyr__preview-thumb--is-shown\",imageContainer:\"plyr__preview-thumb__image-container\",timeContainer:\"plyr__preview-thumb__time-container\",scrubbingContainer:\"plyr__preview-scrubbing\",scrubbingContainerShown:\"plyr__preview-scrubbing--is-shown\"}},attributes:{embed:{provider:\"data-plyr-provider\",id:\"data-plyr-embed-id\",hash:\"data-plyr-embed-hash\"}},ads:{enabled:!1,publisherId:\"\",tagUrl:\"\"},previewThumbnails:{enabled:!1,src:\"\"},vimeo:{byline:!1,portrait:!1,title:!1,speed:!0,transparent:!1,customControls:!0,referrerPolicy:null,premium:!1},youtube:{rel:0,showinfo:0,iv_load_policy:3,modestbranding:1,customControls:!0,noCookie:!1},mediaMetadata:{title:\"\",artist:\"\",album:\"\",artwork:[]},markers:{enabled:!1,points:[]}},pip={active:\"picture-in-picture\",inactive:\"inline\"},providers={html5:\"html5\",youtube:\"youtube\",vimeo:\"vimeo\"},types={audio:\"audio\",video:\"video\"};function getProviderByUrl(e){return/^(https?:\\/\\/)?(www\\.)?(youtube\\.com|youtube-nocookie\\.com|youtu\\.?be)\\/.+$/.test(e)?providers.youtube:/^https?:\\/\\/player.vimeo.com\\/video\\/\\d{0,9}(?=\\b|\\/)/.test(e)?providers.vimeo:null}const noop=()=>{};class Console{constructor(e=!1){this.enabled=window.console&&e,this.enabled&&this.log(\"Debugging enabled\")}get log(){return this.enabled?Function.prototype.bind.call(console.log,console):noop}get warn(){return this.enabled?Function.prototype.bind.call(console.warn,console):noop}get error(){return this.enabled?Function.prototype.bind.call(console.error,console):noop}}class Fullscreen{constructor(e){_defineProperty$1(this,\"onChange\",(()=>{if(!this.supported)return;const e=this.player.elements.buttons.fullscreen;is.element(e)&&(e.pressed=this.active);const t=this.target===this.player.media?this.target:this.player.elements.container;triggerEvent.call(this.player,t,this.active?\"enterfullscreen\":\"exitfullscreen\",!0)})),_defineProperty$1(this,\"toggleFallback\",((e=!1)=>{if(e?this.scrollPosition={x:window.scrollX??0,y:window.scrollY??0}:window.scrollTo(this.scrollPosition.x,this.scrollPosition.y),document.body.style.overflow=e?\"hidden\":\"\",toggleClass(this.target,this.player.config.classNames.fullscreen.fallback,e),browser.isIos){let t=document.head.querySelector('meta[name=\"viewport\"]');const i=\"viewport-fit=cover\";t||(t=document.createElement(\"meta\"),t.setAttribute(\"name\",\"viewport\"));const s=is.string(t.content)&&t.content.includes(i);e?(this.cleanupViewport=!s,s||(t.content+=`,${i}`)):this.cleanupViewport&&(t.content=t.content.split(\",\").filter((e=>e.trim()!==i)).join(\",\"))}this.onChange()})),_defineProperty$1(this,\"trapFocus\",(e=>{if(browser.isIos||browser.isIPadOS||!this.active||\"Tab\"!==e.key)return;const t=document.activeElement,i=getElements.call(this.player,\"a[href], button:not(:disabled), input:not(:disabled), [tabindex]\"),[s]=i,n=i[i.length-1];t!==n||e.shiftKey?t===s&&e.shiftKey&&(n.focus(),e.preventDefault()):(s.focus(),e.preventDefault())})),_defineProperty$1(this,\"update\",(()=>{if(this.supported){let e;e=this.forceFallback?\"Fallback (forced)\":Fullscreen.nativeSupported?\"Native\":\"Fallback\",this.player.debug.log(`${e} fullscreen enabled`)}else this.player.debug.log(\"Fullscreen not supported and fallback disabled\");toggleClass(this.player.elements.container,this.player.config.classNames.fullscreen.enabled,this.supported)})),_defineProperty$1(this,\"enter\",(()=>{this.supported&&(browser.isIos&&this.player.config.fullscreen.iosNative?this.player.isVimeo?this.player.embed.requestFullscreen():this.target.webkitEnterFullscreen():!Fullscreen.nativeSupported||this.forceFallback?this.toggleFallback(!0):this.prefix?is.empty(this.prefix)||this.target[`${this.prefix}Request${this.property}`]():this.target.requestFullscreen({navigationUI:\"hide\"}))})),_defineProperty$1(this,\"exit\",(()=>{if(this.supported)if(browser.isIos&&this.player.config.fullscreen.iosNative)this.player.isVimeo?this.player.embed.exitFullscreen():this.target.webkitEnterFullscreen(),silencePromise(this.player.play());else if(!Fullscreen.nativeSupported||this.forceFallback)this.toggleFallback(!1);else if(this.prefix){if(!is.empty(this.prefix)){const e=\"moz\"===this.prefix?\"Cancel\":\"Exit\";document[`${this.prefix}${e}${this.property}`]()}}else(document.cancelFullScreen||document.exitFullscreen).call(document)})),_defineProperty$1(this,\"toggle\",(()=>{this.active?this.exit():this.enter()})),this.player=e,this.prefix=Fullscreen.prefix,this.property=Fullscreen.property,this.scrollPosition={x:0,y:0},this.forceFallback=\"force\"===e.config.fullscreen.fallback,this.player.elements.fullscreen=e.config.fullscreen.container&&closest$1(this.player.elements.container,e.config.fullscreen.container),on.call(this.player,document,\"ms\"===this.prefix?\"MSFullscreenChange\":`${this.prefix}fullscreenchange`,(()=>{this.onChange()})),on.call(this.player,this.player.elements.container,\"dblclick\",(e=>{is.element(this.player.elements.controls)&&this.player.elements.controls.contains(e.target)||this.player.listeners.proxy(e,this.toggle,\"fullscreen\")})),on.call(this,this.player.elements.container,\"keydown\",(e=>this.trapFocus(e))),this.update()}static get nativeSupported(){return!!(document.fullscreenEnabled||document.webkitFullscreenEnabled||document.mozFullScreenEnabled||document.msFullscreenEnabled)}get useNative(){return Fullscreen.nativeSupported&&!this.forceFallback}static get prefix(){if(is.function(document.exitFullscreen))return\"\";let e=\"\";return[\"webkit\",\"moz\",\"ms\"].some((t=>!(!is.function(document[`${t}ExitFullscreen`])&&!is.function(document[`${t}CancelFullScreen`]))&&(e=t,!0))),e}static get property(){return\"moz\"===this.prefix?\"FullScreen\":\"Fullscreen\"}get supported(){return[this.player.config.fullscreen.enabled,this.player.isVideo,Fullscreen.nativeSupported||this.player.config.fullscreen.fallback,!this.player.isYouTube||Fullscreen.nativeSupported||!browser.isIos||this.player.config.playsinline&&!this.player.config.fullscreen.iosNative].every(Boolean)}get active(){if(!this.supported)return!1;if(!Fullscreen.nativeSupported||this.forceFallback)return hasClass(this.target,this.player.config.classNames.fullscreen.fallback);const e=this.prefix?this.target.getRootNode()[`${this.prefix}${this.property}Element`]:this.target.getRootNode().fullscreenElement;return e&&e.shadowRoot?e===this.target.getRootNode().host:e===this.target}get target(){return browser.isIos&&this.player.config.fullscreen.iosNative?this.player.media:this.player.elements.fullscreen??this.player.elements.container}}function loadImage(e,t=1){return new Promise(((i,s)=>{const n=new Image,r=()=>{delete n.onload,delete n.onerror,(n.naturalWidth>=t?i:s)(n)};Object.assign(n,{onload:r,onerror:r,src:e})}))}const ui={addStyleHook(){toggleClass(this.elements.container,this.config.selectors.container.replace(\".\",\"\"),!0),toggleClass(this.elements.container,this.config.classNames.uiSupported,this.supported.ui)},toggleNativeControls(e=!1){e&&this.isHTML5?this.media.setAttribute(\"controls\",\"\"):this.media.removeAttribute(\"controls\")},build(){if(this.listeners.media(),!this.supported.ui)return this.debug.warn(`Basic support only for ${this.provider} ${this.type}`),void ui.toggleNativeControls.call(this,!0);is.element(this.elements.controls)||(controls.inject.call(this),this.listeners.controls()),ui.toggleNativeControls.call(this),this.isHTML5&&captions.setup.call(this),this.volume=null,this.muted=null,this.loop=null,this.quality=null,this.speed=null,controls.updateVolume.call(this),controls.timeUpdate.call(this),controls.durationUpdate.call(this),ui.checkPlaying.call(this),toggleClass(this.elements.container,this.config.classNames.pip.supported,support.pip&&this.isHTML5&&this.isVideo),toggleClass(this.elements.container,this.config.classNames.airplay.supported,support.airplay&&this.isHTML5),toggleClass(this.elements.container,this.config.classNames.isTouch,this.touch),this.ready=!0,setTimeout((()=>{triggerEvent.call(this,this.media,\"ready\")}),0),ui.setTitle.call(this),this.poster&&ui.setPoster.call(this,this.poster,!1).catch((()=>{})),this.config.duration&&controls.durationUpdate.call(this),this.config.mediaMetadata&&controls.setMediaMetadata.call(this)},setTitle(){let e=i18n.get(\"play\",this.config);if(is.string(this.config.title)&&!is.empty(this.config.title)&&(e+=`, ${this.config.title}`),Array.from(this.elements.buttons.play||[]).forEach((t=>{t.setAttribute(\"aria-label\",e)})),this.isEmbed){const e=getElement.call(this,\"iframe\");if(!is.element(e))return;const t=is.empty(this.config.title)?\"video\":this.config.title,i=i18n.get(\"frameTitle\",this.config);e.setAttribute(\"title\",i.replace(\"{title}\",t))}},togglePoster(e){toggleClass(this.elements.container,this.config.classNames.posterEnabled,e)},setPoster(e,t=!0){return t&&this.poster?Promise.reject(new Error(\"Poster already set\")):(this.media.setAttribute(\"data-poster\",e),this.elements.poster.removeAttribute(\"hidden\"),ready.call(this).then((()=>loadImage(e))).catch((t=>{throw e===this.poster&&ui.togglePoster.call(this,!1),t})).then((()=>{if(e!==this.poster)throw new Error(\"setPoster cancelled by later call to setPoster\")})).then((()=>(Object.assign(this.elements.poster.style,{backgroundImage:`url('${e}')`,backgroundSize:\"\"}),ui.togglePoster.call(this,!0),e))))},checkPlaying(e){toggleClass(this.elements.container,this.config.classNames.playing,this.playing),toggleClass(this.elements.container,this.config.classNames.paused,this.paused),toggleClass(this.elements.container,this.config.classNames.stopped,this.stopped),Array.from(this.elements.buttons.play||[]).forEach((e=>{Object.assign(e,{pressed:this.playing}),e.setAttribute(\"aria-label\",i18n.get(this.playing?\"pause\":\"play\",this.config))})),is.event(e)&&\"timeupdate\"===e.type||ui.toggleControls.call(this)},checkLoading(e){this.loading=[\"stalled\",\"waiting\"].includes(e.type),clearTimeout(this.timers.loading),this.timers.loading=setTimeout((()=>{toggleClass(this.elements.container,this.config.classNames.loading,this.loading),ui.toggleControls.call(this)}),this.loading?250:0)},toggleControls(e){const{controls:t}=this.elements;if(t&&this.config.hideControls){const i=this.touch&&this.lastSeekTime+2e3>Date.now();this.toggleControls(Boolean(e||this.loading||this.paused||t.pressed||t.hover||i))}},migrateStyles(){Object.values({...this.media.style}).filter((e=>!is.empty(e)&&is.string(e)&&e.startsWith(\"--plyr\"))).forEach((e=>{this.elements.container.style.setProperty(e,this.media.style.getPropertyValue(e)),this.media.style.removeProperty(e)})),is.empty(this.media.style)&&this.media.removeAttribute(\"style\")}};class Listeners{constructor(e){_defineProperty$1(this,\"firstTouch\",(()=>{const{player:e}=this,{elements:t}=e;e.touch=!0,toggleClass(t.container,e.config.classNames.isTouch,!0)})),_defineProperty$1(this,\"global\",((e=!0)=>{const{player:t}=this;t.config.keyboard.global&&toggleListener.call(t,window,\"keydown keyup\",this.handleKey,e,!1),toggleListener.call(t,document.body,\"click\",this.toggleMenu,e),once.call(t,document.body,\"touchstart\",this.firstTouch)})),_defineProperty$1(this,\"container\",(()=>{const{player:e}=this,{config:t,elements:i,timers:s}=e;!t.keyboard.global&&t.keyboard.focused&&on.call(e,i.container,\"keydown keyup\",this.handleKey,!1),on.call(e,i.container,\"mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen\",(t=>{const{controls:n}=i;n&&\"enterfullscreen\"===t.type&&(n.pressed=!1,n.hover=!1);let r=0;[\"touchstart\",\"touchmove\",\"mousemove\"].includes(t.type)&&(ui.toggleControls.call(e,!0),r=e.touch?3e3:2e3),clearTimeout(s.controls),s.controls=setTimeout((()=>ui.toggleControls.call(e,!1)),r)}));const n=()=>{if(!e.isVimeo||e.config.vimeo.premium)return;const t=i.wrapper,{active:s}=e.fullscreen,[n,r]=getAspectRatio.call(e),a=supportsCSS(`aspect-ratio: ${n} / ${r}`);if(!s)return void(a?(t.style.width=null,t.style.height=null):(t.style.maxWidth=null,t.style.margin=null));const[o,l]=getViewportSize(),c=o/l>n/r;a?(t.style.width=c?\"auto\":\"100%\",t.style.height=c?\"100%\":\"auto\"):(t.style.maxWidth=c?l/r*n+\"px\":null,t.style.margin=c?\"0 auto\":null)},r=()=>{clearTimeout(s.resized),s.resized=setTimeout(n,50)};on.call(e,i.container,\"enterfullscreen exitfullscreen\",(t=>{const{target:s}=e.fullscreen;if(s!==i.container)return;if(!e.isEmbed&&is.empty(e.config.ratio))return;n();(\"enterfullscreen\"===t.type?on:off).call(e,window,\"resize\",r)}))})),_defineProperty$1(this,\"media\",(()=>{const{player:e}=this,{elements:t}=e;if(on.call(e,e.media,\"timeupdate seeking seeked\",(t=>controls.timeUpdate.call(e,t))),on.call(e,e.media,\"durationchange loadeddata loadedmetadata\",(t=>controls.durationUpdate.call(e,t))),on.call(e,e.media,\"ended\",(()=>{e.isHTML5&&e.isVideo&&e.config.resetOnEnd&&(e.restart(),e.pause())})),on.call(e,e.media,\"progress playing seeking seeked\",(t=>controls.updateProgress.call(e,t))),on.call(e,e.media,\"volumechange\",(t=>controls.updateVolume.call(e,t))),on.call(e,e.media,\"playing play pause ended emptied timeupdate\",(t=>ui.checkPlaying.call(e,t))),on.call(e,e.media,\"waiting canplay seeked playing\",(t=>ui.checkLoading.call(e,t))),e.supported.ui&&e.config.clickToPlay&&!e.isAudio){const i=getElement.call(e,`.${e.config.classNames.video}`);if(!is.element(i))return;on.call(e,t.container,\"click\",(s=>{([t.container,i].includes(s.target)||i.contains(s.target))&&(e.touch&&e.config.hideControls||(e.ended?(this.proxy(s,e.restart,\"restart\"),this.proxy(s,(()=>{silencePromise(e.play())}),\"play\")):this.proxy(s,(()=>{silencePromise(e.togglePlay())}),\"play\")))}))}e.supported.ui&&e.config.disableContextMenu&&on.call(e,t.wrapper,\"contextmenu\",(e=>{e.preventDefault()}),!1),on.call(e,e.media,\"volumechange\",(()=>{e.storage.set({volume:e.volume,muted:e.muted})})),on.call(e,e.media,\"ratechange\",(()=>{controls.updateSetting.call(e,\"speed\"),e.storage.set({speed:e.speed})})),on.call(e,e.media,\"qualitychange\",(t=>{controls.updateSetting.call(e,\"quality\",null,t.detail.quality)})),on.call(e,e.media,\"ready qualitychange\",(()=>{controls.setDownloadUrl.call(e)}));const i=e.config.events.concat([\"keyup\",\"keydown\"]).join(\" \");on.call(e,e.media,i,(i=>{let{detail:s={}}=i;\"error\"===i.type&&(s=e.media.error),triggerEvent.call(e,t.container,i.type,!0,s)}))})),_defineProperty$1(this,\"proxy\",((e,t,i)=>{const{player:s}=this,n=s.config.listeners[i];let r=!0;is.function(n)&&(r=n.call(s,e)),!1!==r&&is.function(t)&&t.call(s,e)})),_defineProperty$1(this,\"bind\",((e,t,i,s,n=!0)=>{const{player:r}=this,a=r.config.listeners[s],o=is.function(a);on.call(r,e,t,(e=>this.proxy(e,i,s)),n&&!o)})),_defineProperty$1(this,\"controls\",(()=>{const{player:e}=this,{elements:t}=e,i=browser.isIE?\"change\":\"input\";if(t.buttons.play&&Array.from(t.buttons.play).forEach((t=>{this.bind(t,\"click\",(()=>{silencePromise(e.togglePlay())}),\"play\")})),this.bind(t.buttons.restart,\"click\",e.restart,\"restart\"),this.bind(t.buttons.rewind,\"click\",(()=>{e.lastSeekTime=Date.now(),e.rewind()}),\"rewind\"),this.bind(t.buttons.fastForward,\"click\",(()=>{e.lastSeekTime=Date.now(),e.forward()}),\"fastForward\"),this.bind(t.buttons.mute,\"click\",(()=>{e.muted=!e.muted}),\"mute\"),this.bind(t.buttons.captions,\"click\",(()=>e.toggleCaptions())),this.bind(t.buttons.download,\"click\",(()=>{triggerEvent.call(e,e.media,\"download\")}),\"download\"),this.bind(t.buttons.fullscreen,\"click\",(()=>{e.fullscreen.toggle()}),\"fullscreen\"),this.bind(t.buttons.pip,\"click\",(()=>{e.pip=\"toggle\"}),\"pip\"),this.bind(t.buttons.airplay,\"click\",e.airplay,\"airplay\"),this.bind(t.buttons.settings,\"click\",(t=>{t.stopPropagation(),t.preventDefault(),controls.toggleMenu.call(e,t)}),null,!1),this.bind(t.buttons.settings,\"keyup\",(t=>{[\" \",\"Enter\"].includes(t.key)&&(\"Enter\"!==t.key?(t.preventDefault(),t.stopPropagation(),controls.toggleMenu.call(e,t)):controls.focusFirstMenuItem.call(e,null,!0))}),null,!1),this.bind(t.settings.menu,\"keydown\",(t=>{\"Escape\"===t.key&&controls.toggleMenu.call(e,t)})),this.bind(t.inputs.seek,\"mousedown mousemove\",(e=>{const i=t.progress.getBoundingClientRect(),s=100/i.width*(e.pageX-i.left);e.currentTarget.setAttribute(\"seek-value\",s)})),this.bind(t.inputs.seek,\"mousedown mouseup keydown keyup touchstart touchend\",(t=>{const i=t.currentTarget,s=\"play-on-seeked\";if(is.keyboardEvent(t)&&![\"ArrowLeft\",\"ArrowRight\"].includes(t.key))return;e.lastSeekTime=Date.now();const n=i.hasAttribute(s),r=[\"mouseup\",\"touchend\",\"keyup\"].includes(t.type);n&&r?(i.removeAttribute(s),silencePromise(e.play())):!r&&e.playing&&(i.setAttribute(s,\"\"),e.pause())})),browser.isIos){const t=getElements.call(e,'input[type=\"range\"]');Array.from(t).forEach((e=>this.bind(e,i,(e=>repaint(e.target)))))}this.bind(t.inputs.seek,i,(t=>{const i=t.currentTarget;let s=i.getAttribute(\"seek-value\");is.empty(s)&&(s=i.value),i.removeAttribute(\"seek-value\"),e.currentTime=s/i.max*e.duration}),\"seek\"),this.bind(t.progress,\"mouseenter mouseleave mousemove\",(t=>controls.updateSeekTooltip.call(e,t))),this.bind(t.progress,\"mousemove touchmove\",(t=>{const{previewThumbnails:i}=e;i&&i.loaded&&i.startMove(t)})),this.bind(t.progress,\"mouseleave touchend click\",(()=>{const{previewThumbnails:t}=e;t&&t.loaded&&t.endMove(!1,!0)})),this.bind(t.progress,\"mousedown touchstart\",(t=>{const{previewThumbnails:i}=e;i&&i.loaded&&i.startScrubbing(t)})),this.bind(t.progress,\"mouseup touchend\",(t=>{const{previewThumbnails:i}=e;i&&i.loaded&&i.endScrubbing(t)})),browser.isWebKit&&Array.from(getElements.call(e,'input[type=\"range\"]')).forEach((t=>{this.bind(t,\"input\",(t=>controls.updateRangeFill.call(e,t.target)))})),e.config.toggleInvert&&!is.element(t.display.duration)&&this.bind(t.display.currentTime,\"click\",(()=>{0!==e.currentTime&&(e.config.invertTime=!e.config.invertTime,controls.timeUpdate.call(e))})),this.bind(t.inputs.volume,i,(t=>{e.volume=t.target.value}),\"volume\"),this.bind(t.controls,\"mouseenter mouseleave\",(i=>{t.controls.hover=!e.touch&&\"mouseenter\"===i.type})),t.fullscreen&&Array.from(t.fullscreen.children).filter((e=>!e.contains(t.container))).forEach((i=>{this.bind(i,\"mouseenter mouseleave\",(i=>{t.controls&&(t.controls.hover=!e.touch&&\"mouseenter\"===i.type)}))})),this.bind(t.controls,\"mousedown mouseup touchstart touchend touchcancel\",(e=>{t.controls.pressed=[\"mousedown\",\"touchstart\"].includes(e.type)})),this.bind(t.controls,\"focusin\",(()=>{const{config:i,timers:s}=e;toggleClass(t.controls,i.classNames.noTransition,!0),ui.toggleControls.call(e,!0),setTimeout((()=>{toggleClass(t.controls,i.classNames.noTransition,!1)}),0);const n=this.touch?3e3:4e3;clearTimeout(s.controls),s.controls=setTimeout((()=>ui.toggleControls.call(e,!1)),n)})),this.bind(t.inputs.volume,\"wheel\",(t=>{const i=t.webkitDirectionInvertedFromDevice,[s,n]=[t.deltaX,-t.deltaY].map((e=>i?-e:e)),r=Math.sign(Math.abs(s)>Math.abs(n)?s:n);e.increaseVolume(r/50);const{volume:a}=e.media;(1===r&&a<1||-1===r&&a>0)&&t.preventDefault()}),\"volume\",!1)})),this.player=e,this.lastKey=null,this.focusTimer=null,this.lastKeyDown=null,this.handleKey=this.handleKey.bind(this),this.toggleMenu=this.toggleMenu.bind(this),this.firstTouch=this.firstTouch.bind(this)}handleKey(e){const{player:t}=this,{elements:i}=t,{key:s,type:n,altKey:r,ctrlKey:a,metaKey:o,shiftKey:l}=e,c=\"keydown\"===n,u=c&&s===this.lastKey;if(r||a||o||l)return;if(!s)return;if(c){const n=document.activeElement;if(is.element(n)){const{editable:s}=t.config.selectors,{seek:r}=i.inputs;if(n!==r&&matches(n,s))return;if(\" \"===e.key&&matches(n,'button, [role^=\"menuitem\"]'))return}switch([\" \",\"ArrowLeft\",\"ArrowUp\",\"ArrowRight\",\"ArrowDown\",\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"c\",\"f\",\"k\",\"l\",\"m\"].includes(s)&&(e.preventDefault(),e.stopPropagation()),s){case\"0\":case\"1\":case\"2\":case\"3\":case\"4\":case\"5\":case\"6\":case\"7\":case\"8\":case\"9\":u||(d=parseInt(s,10),t.currentTime=t.duration/10*d);break;case\" \":case\"k\":u||silencePromise(t.togglePlay());break;case\"ArrowUp\":t.increaseVolume(.1);break;case\"ArrowDown\":t.decreaseVolume(.1);break;case\"m\":u||(t.muted=!t.muted);break;case\"ArrowRight\":t.forward();break;case\"ArrowLeft\":t.rewind();break;case\"f\":t.fullscreen.toggle();break;case\"c\":u||t.toggleCaptions();break;case\"l\":t.loop=!t.loop}\"Escape\"===s&&!t.fullscreen.usingNative&&t.fullscreen.active&&t.fullscreen.toggle(),this.lastKey=s}else this.lastKey=null;var d}toggleMenu(e){controls.toggleMenu.call(this.player,e)}}var commonjsGlobal=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{};function createCommonjsModule(e,t){return e(t={exports:{}},t.exports),t.exports}var loadjs_umd=createCommonjsModule((function(e,t){e.exports=function(){var e=function(){},t={},i={},s={};function n(e,t){e=e.push?e:[e];var n,r,a,o=[],l=e.length,c=l;for(n=function(e,i){i.length&&o.push(e),--c||t(o)};l--;)r=e[l],(a=i[r])?n(r,a):(s[r]=s[r]||[]).push(n)}function r(e,t){if(e){var n=s[e];if(i[e]=t,n)for(;n.length;)n[0](e,t),n.splice(0,1)}}function a(t,i){t.call&&(t={success:t}),i.length?(t.error||e)(i):(t.success||e)(t)}function o(t,i,s,n){var r,a,l=document,c=s.async,u=(s.numRetries||0)+1,d=s.before||e,h=t.replace(/[\\?|#].*$/,\"\"),m=t.replace(/^(css|img)!/,\"\");n=n||0,/(^css!|\\.css$)/.test(h)?((a=l.createElement(\"link\")).rel=\"stylesheet\",a.href=m,(r=\"hideFocus\"in a)&&a.relList&&(r=0,a.rel=\"preload\",a.as=\"style\")):/(^img!|\\.(png|gif|jpg|svg|webp)$)/.test(h)?(a=l.createElement(\"img\")).src=m:((a=l.createElement(\"script\")).src=t,a.async=void 0===c||c),a.onload=a.onerror=a.onbeforeload=function(e){var l=e.type[0];if(r)try{a.sheet.cssText.length||(l=\"e\")}catch(e){18!=e.code&&(l=\"e\")}if(\"e\"==l){if((n+=1)<u)return o(t,i,s,n)}else if(\"preload\"==a.rel&&\"style\"==a.as)return a.rel=\"stylesheet\";i(t,l,e.defaultPrevented)},!1!==d(t,a)&&l.head.appendChild(a)}function l(e,t,i){var s,n,r=(e=e.push?e:[e]).length,a=r,l=[];for(s=function(e,i,s){if(\"e\"==i&&l.push(e),\"b\"==i){if(!s)return;l.push(e)}--r||t(l)},n=0;n<a;n++)o(e[n],s,i)}function c(e,i,s){var n,o;if(i&&i.trim&&(n=i),o=(n?s:i)||{},n){if(n in t)throw\"LoadJS\";t[n]=!0}function c(t,i){l(e,(function(e){a(o,e),t&&a({success:t,error:i},e),r(n,e)}),o)}if(o.returnPromise)return new Promise(c);c()}return c.ready=function(e,t){return n(e,(function(e){a(t,e)})),c},c.done=function(e){r(e,[])},c.reset=function(){t={},i={},s={}},c.isDefined=function(e){return e in t},c}()}));function loadScript(e){return new Promise(((t,i)=>{loadjs_umd(e,{success:t,error:i})}))}function parseId$1(e){if(is.empty(e))return null;if(is.number(Number(e)))return e;return e.match(/^.*(vimeo.com\\/|video\\/)(\\d+).*/)?RegExp.$2:e}function parseHash(e){const t=e.match(/^.*(vimeo.com\\/|video\\/)(\\d+)(\\?.*&*h=|\\/)+([\\d,a-f]+)/);return t&&5===t.length?t[4]:null}function assurePlaybackState$1(e){e&&!this.embed.hasPlayed&&(this.embed.hasPlayed=!0),this.media.paused===e&&(this.media.paused=!e,triggerEvent.call(this,this.media,e?\"play\":\"pause\"))}const vimeo={setup(){const e=this;toggleClass(e.elements.wrapper,e.config.classNames.embed,!0),e.options.speed=e.config.speed.options,setAspectRatio.call(e),is.object(window.Vimeo)?vimeo.ready.call(e):loadScript(e.config.urls.vimeo.sdk).then((()=>{vimeo.ready.call(e)})).catch((t=>{e.debug.warn(\"Vimeo SDK (player.js) failed to load\",t)}))},ready(){const e=this,t=e.config.vimeo,{premium:i,referrerPolicy:s,...n}=t;let r=e.media.getAttribute(\"src\"),a=\"\";is.empty(r)?(r=e.media.getAttribute(e.config.attributes.embed.id),a=e.media.getAttribute(e.config.attributes.embed.hash)):a=parseHash(r);const o=a?{h:a}:{};i&&Object.assign(n,{controls:!1,sidedock:!1});const l=buildUrlParams({loop:e.config.loop.active,autoplay:e.autoplay,muted:e.muted,gesture:\"media\",playsinline:e.config.playsinline,...o,...n}),c=parseId$1(r),u=createElement(\"iframe\"),d=format(e.config.urls.vimeo.iframe,c,l);if(u.setAttribute(\"src\",d),u.setAttribute(\"allowfullscreen\",\"\"),u.setAttribute(\"allow\",[\"autoplay\",\"fullscreen\",\"picture-in-picture\",\"encrypted-media\",\"accelerometer\",\"gyroscope\"].join(\"; \")),is.empty(s)||u.setAttribute(\"referrerPolicy\",s),i||!t.customControls)u.setAttribute(\"data-poster\",e.poster),e.media=replaceElement(u,e.media);else{const t=createElement(\"div\",{class:e.config.classNames.embedContainer,\"data-poster\":e.poster});t.appendChild(u),e.media=replaceElement(t,e.media)}t.customControls||fetch(format(e.config.urls.vimeo.api,d)).then((t=>{!is.empty(t)&&t.thumbnail_url&&ui.setPoster.call(e,t.thumbnail_url).catch((()=>{}))})),e.embed=new window.Vimeo.Player(u,{autopause:e.config.autopause,muted:e.muted}),e.media.paused=!0,e.media.currentTime=0,e.supported.ui&&e.embed.disableTextTrack(),e.media.play=()=>(assurePlaybackState$1.call(e,!0),e.embed.play()),e.media.pause=()=>(assurePlaybackState$1.call(e,!1),e.embed.pause()),e.media.stop=()=>{e.pause(),e.currentTime=0};let{currentTime:h}=e.media;Object.defineProperty(e.media,\"currentTime\",{get:()=>h,set(t){const{embed:i,media:s,paused:n,volume:r}=e,a=n&&!i.hasPlayed;s.seeking=!0,triggerEvent.call(e,s,\"seeking\"),Promise.resolve(a&&i.setVolume(0)).then((()=>i.setCurrentTime(t))).then((()=>a&&i.pause())).then((()=>a&&i.setVolume(r))).catch((()=>{}))}});let m=e.config.speed.selected;Object.defineProperty(e.media,\"playbackRate\",{get:()=>m,set(t){e.embed.setPlaybackRate(t).then((()=>{m=t,triggerEvent.call(e,e.media,\"ratechange\")})).catch((()=>{e.options.speed=[1]}))}});let{volume:p}=e.config;Object.defineProperty(e.media,\"volume\",{get:()=>p,set(t){e.embed.setVolume(t).then((()=>{p=t,triggerEvent.call(e,e.media,\"volumechange\")}))}});let{muted:g}=e.config;Object.defineProperty(e.media,\"muted\",{get:()=>g,set(t){const i=!!is.boolean(t)&&t;e.embed.setMuted(!!i||e.config.muted).then((()=>{g=i,triggerEvent.call(e,e.media,\"volumechange\")}))}});let f,{loop:y}=e.config;Object.defineProperty(e.media,\"loop\",{get:()=>y,set(t){const i=is.boolean(t)?t:e.config.loop.active;e.embed.setLoop(i).then((()=>{y=i}))}}),e.embed.getVideoUrl().then((t=>{f=t,controls.setDownloadUrl.call(e)})).catch((e=>{this.debug.warn(e)})),Object.defineProperty(e.media,\"currentSrc\",{get:()=>f}),Object.defineProperty(e.media,\"ended\",{get:()=>e.currentTime===e.duration}),Promise.all([e.embed.getVideoWidth(),e.embed.getVideoHeight()]).then((t=>{const[i,s]=t;e.embed.ratio=roundAspectRatio(i,s),setAspectRatio.call(this)})),e.embed.setAutopause(e.config.autopause).then((t=>{e.config.autopause=t})),e.embed.getVideoTitle().then((t=>{e.config.title=t,ui.setTitle.call(this)})),e.embed.getCurrentTime().then((t=>{h=t,triggerEvent.call(e,e.media,\"timeupdate\")})),e.embed.getDuration().then((t=>{e.media.duration=t,triggerEvent.call(e,e.media,\"durationchange\")})),e.embed.getTextTracks().then((t=>{e.media.textTracks=t,captions.setup.call(e)})),e.embed.on(\"cuechange\",(({cues:t=[]})=>{const i=t.map((e=>stripHTML(e.text)));captions.updateCues.call(e,i)})),e.embed.on(\"loaded\",(()=>{if(e.embed.getPaused().then((t=>{assurePlaybackState$1.call(e,!t),t||triggerEvent.call(e,e.media,\"playing\")})),is.element(e.embed.element)&&e.supported.ui){e.embed.element.setAttribute(\"tabindex\",-1)}})),e.embed.on(\"bufferstart\",(()=>{triggerEvent.call(e,e.media,\"waiting\")})),e.embed.on(\"bufferend\",(()=>{triggerEvent.call(e,e.media,\"playing\")})),e.embed.on(\"play\",(()=>{assurePlaybackState$1.call(e,!0),triggerEvent.call(e,e.media,\"playing\")})),e.embed.on(\"pause\",(()=>{assurePlaybackState$1.call(e,!1)})),e.embed.on(\"timeupdate\",(t=>{e.media.seeking=!1,h=t.seconds,triggerEvent.call(e,e.media,\"timeupdate\")})),e.embed.on(\"progress\",(t=>{e.media.buffered=t.percent,triggerEvent.call(e,e.media,\"progress\"),1===parseInt(t.percent,10)&&triggerEvent.call(e,e.media,\"canplaythrough\"),e.embed.getDuration().then((t=>{t!==e.media.duration&&(e.media.duration=t,triggerEvent.call(e,e.media,\"durationchange\"))}))})),e.embed.on(\"seeked\",(()=>{e.media.seeking=!1,triggerEvent.call(e,e.media,\"seeked\")})),e.embed.on(\"ended\",(()=>{e.media.paused=!0,triggerEvent.call(e,e.media,\"ended\")})),e.embed.on(\"error\",(t=>{e.media.error=t,triggerEvent.call(e,e.media,\"error\")})),t.customControls&&setTimeout((()=>ui.build.call(e)),0)}};function parseId(e){if(is.empty(e))return null;return e.match(/^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#&?]*).*/)?RegExp.$2:e}function assurePlaybackState(e){e&&!this.embed.hasPlayed&&(this.embed.hasPlayed=!0),this.media.paused===e&&(this.media.paused=!e,triggerEvent.call(this,this.media,e?\"play\":\"pause\"))}function getHost(e){return e.noCookie?\"https://www.youtube-nocookie.com\":\"http:\"===window.location.protocol?\"http://www.youtube.com\":void 0}const youtube={setup(){if(toggleClass(this.elements.wrapper,this.config.classNames.embed,!0),is.object(window.YT)&&is.function(window.YT.Player))youtube.ready.call(this);else{const e=window.onYouTubeIframeAPIReady;window.onYouTubeIframeAPIReady=()=>{is.function(e)&&e(),youtube.ready.call(this)},loadScript(this.config.urls.youtube.sdk).catch((e=>{this.debug.warn(\"YouTube API failed to load\",e)}))}},getTitle(e){fetch(format(this.config.urls.youtube.api,e)).then((e=>{if(is.object(e)){const{title:t,height:i,width:s}=e;this.config.title=t,ui.setTitle.call(this),this.embed.ratio=roundAspectRatio(s,i)}setAspectRatio.call(this)})).catch((()=>{setAspectRatio.call(this)}))},ready(){const e=this,t=e.config.youtube,i=e.media&&e.media.getAttribute(\"id\");if(!is.empty(i)&&i.startsWith(\"youtube-\"))return;let s=e.media.getAttribute(\"src\");is.empty(s)&&(s=e.media.getAttribute(this.config.attributes.embed.id));const n=parseId(s),r=createElement(\"div\",{id:generateId(e.provider),\"data-poster\":t.customControls?e.poster:void 0});if(e.media=replaceElement(r,e.media),t.customControls){const t=e=>`https://i.ytimg.com/vi/${n}/${e}default.jpg`;loadImage(t(\"maxres\"),121).catch((()=>loadImage(t(\"sd\"),121))).catch((()=>loadImage(t(\"hq\")))).then((t=>ui.setPoster.call(e,t.src))).then((t=>{t.includes(\"maxres\")||(e.elements.poster.style.backgroundSize=\"cover\")})).catch((()=>{}))}e.embed=new window.YT.Player(e.media,{videoId:n,host:getHost(t),playerVars:extend({},{autoplay:e.config.autoplay?1:0,hl:e.config.hl,controls:e.supported.ui&&t.customControls?0:1,disablekb:1,playsinline:e.config.playsinline&&!e.config.fullscreen.iosNative?1:0,cc_load_policy:e.captions.active?1:0,cc_lang_pref:e.config.captions.language,widget_referrer:window?window.location.href:null},t),events:{onError(t){if(!e.media.error){const i=t.data,s={2:\"The request contains an invalid parameter value. For example, this error occurs if you specify a video ID that does not have 11 characters, or if the video ID contains invalid characters, such as exclamation points or asterisks.\",5:\"The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.\",100:\"The video requested was not found. This error occurs when a video has been removed (for any reason) or has been marked as private.\",101:\"The owner of the requested video does not allow it to be played in embedded players.\",150:\"The owner of the requested video does not allow it to be played in embedded players.\"}[i]||\"An unknown error occurred\";e.media.error={code:i,message:s},triggerEvent.call(e,e.media,\"error\")}},onPlaybackRateChange(t){const i=t.target;e.media.playbackRate=i.getPlaybackRate(),triggerEvent.call(e,e.media,\"ratechange\")},onReady(i){if(is.function(e.media.play))return;const s=i.target;youtube.getTitle.call(e,n),e.media.play=()=>{assurePlaybackState.call(e,!0),s.playVideo()},e.media.pause=()=>{assurePlaybackState.call(e,!1),s.pauseVideo()},e.media.stop=()=>{s.stopVideo()},e.media.duration=s.getDuration(),e.media.paused=!0,e.media.currentTime=0,Object.defineProperty(e.media,\"currentTime\",{get:()=>Number(s.getCurrentTime()),set(t){e.paused&&!e.embed.hasPlayed&&e.embed.mute(),e.media.seeking=!0,triggerEvent.call(e,e.media,\"seeking\"),s.seekTo(t)}}),Object.defineProperty(e.media,\"playbackRate\",{get:()=>s.getPlaybackRate(),set(e){s.setPlaybackRate(e)}});let{volume:r}=e.config;Object.defineProperty(e.media,\"volume\",{get:()=>r,set(t){r=t,s.setVolume(100*r),triggerEvent.call(e,e.media,\"volumechange\")}});let{muted:a}=e.config;Object.defineProperty(e.media,\"muted\",{get:()=>a,set(t){const i=is.boolean(t)?t:a;a=i,s[i?\"mute\":\"unMute\"](),s.setVolume(100*r),triggerEvent.call(e,e.media,\"volumechange\")}}),Object.defineProperty(e.media,\"currentSrc\",{get:()=>s.getVideoUrl()}),Object.defineProperty(e.media,\"ended\",{get:()=>e.currentTime===e.duration});const o=s.getAvailablePlaybackRates();e.options.speed=o.filter((t=>e.config.speed.options.includes(t))),e.supported.ui&&t.customControls&&e.media.setAttribute(\"tabindex\",-1),triggerEvent.call(e,e.media,\"timeupdate\"),triggerEvent.call(e,e.media,\"durationchange\"),clearInterval(e.timers.buffering),e.timers.buffering=setInterval((()=>{e.media.buffered=s.getVideoLoadedFraction(),(null===e.media.lastBuffered||e.media.lastBuffered<e.media.buffered)&&triggerEvent.call(e,e.media,\"progress\"),e.media.lastBuffered=e.media.buffered,1===e.media.buffered&&(clearInterval(e.timers.buffering),triggerEvent.call(e,e.media,\"canplaythrough\"))}),200),t.customControls&&setTimeout((()=>ui.build.call(e)),50)},onStateChange(i){const s=i.target;clearInterval(e.timers.playing);switch(e.media.seeking&&[1,2].includes(i.data)&&(e.media.seeking=!1,triggerEvent.call(e,e.media,\"seeked\")),i.data){case-1:triggerEvent.call(e,e.media,\"timeupdate\"),e.media.buffered=s.getVideoLoadedFraction(),triggerEvent.call(e,e.media,\"progress\");break;case 0:assurePlaybackState.call(e,!1),e.media.loop?(s.stopVideo(),s.playVideo()):triggerEvent.call(e,e.media,\"ended\");break;case 1:t.customControls&&!e.config.autoplay&&e.media.paused&&!e.embed.hasPlayed?e.media.pause():(assurePlaybackState.call(e,!0),triggerEvent.call(e,e.media,\"playing\"),e.timers.playing=setInterval((()=>{triggerEvent.call(e,e.media,\"timeupdate\")}),50),e.media.duration!==s.getDuration()&&(e.media.duration=s.getDuration(),triggerEvent.call(e,e.media,\"durationchange\")));break;case 2:e.muted||e.embed.unMute(),assurePlaybackState.call(e,!1);break;case 3:triggerEvent.call(e,e.media,\"waiting\")}triggerEvent.call(e,e.elements.container,\"statechange\",!1,{code:i.data})}}})}},media={setup(){this.media?(toggleClass(this.elements.container,this.config.classNames.type.replace(\"{0}\",this.type),!0),toggleClass(this.elements.container,this.config.classNames.provider.replace(\"{0}\",this.provider),!0),this.isEmbed&&toggleClass(this.elements.container,this.config.classNames.type.replace(\"{0}\",\"video\"),!0),this.isVideo&&(this.elements.wrapper=createElement(\"div\",{class:this.config.classNames.video}),wrap(this.media,this.elements.wrapper),this.elements.poster=createElement(\"div\",{class:this.config.classNames.poster}),this.elements.wrapper.appendChild(this.elements.poster)),this.isHTML5?html5.setup.call(this):this.isYouTube?youtube.setup.call(this):this.isVimeo&&vimeo.setup.call(this)):this.debug.warn(\"No media element found!\")}},destroy=e=>{e.manager&&e.manager.destroy(),e.elements.displayContainer&&e.elements.displayContainer.destroy(),e.elements.container.remove()};class Ads{constructor(e){_defineProperty$1(this,\"load\",(()=>{this.enabled&&(is.object(window.google)&&is.object(window.google.ima)?this.ready():loadScript(this.player.config.urls.googleIMA.sdk).then((()=>{this.ready()})).catch((()=>{this.trigger(\"error\",new Error(\"Google IMA SDK failed to load\"))})))})),_defineProperty$1(this,\"ready\",(()=>{var e;this.enabled||((e=this).manager&&e.manager.destroy(),e.elements.displayContainer&&e.elements.displayContainer.destroy(),e.elements.container.remove()),this.startSafetyTimer(12e3,\"ready()\"),this.managerPromise.then((()=>{this.clearSafetyTimer(\"onAdsManagerLoaded()\")})),this.listeners(),this.setupIMA()})),_defineProperty$1(this,\"setupIMA\",(()=>{this.elements.container=createElement(\"div\",{class:this.player.config.classNames.ads}),this.player.elements.container.appendChild(this.elements.container),google.ima.settings.setVpaidMode(google.ima.ImaSdkSettings.VpaidMode.ENABLED),google.ima.settings.setLocale(this.player.config.ads.language),google.ima.settings.setDisableCustomPlaybackForIOS10Plus(this.player.config.playsinline),this.elements.displayContainer=new google.ima.AdDisplayContainer(this.elements.container,this.player.media),this.loader=new google.ima.AdsLoader(this.elements.displayContainer),this.loader.addEventListener(google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,(e=>this.onAdsManagerLoaded(e)),!1),this.loader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,(e=>this.onAdError(e)),!1),this.requestAds()})),_defineProperty$1(this,\"requestAds\",(()=>{const{container:e}=this.player.elements;try{const t=new google.ima.AdsRequest;t.adTagUrl=this.tagUrl,t.linearAdSlotWidth=e.offsetWidth,t.linearAdSlotHeight=e.offsetHeight,t.nonLinearAdSlotWidth=e.offsetWidth,t.nonLinearAdSlotHeight=e.offsetHeight,t.forceNonLinearFullSlot=!1,t.setAdWillPlayMuted(!this.player.muted),this.loader.requestAds(t)}catch(e){this.onAdError(e)}})),_defineProperty$1(this,\"pollCountdown\",((e=!1)=>{if(!e)return clearInterval(this.countdownTimer),void this.elements.container.removeAttribute(\"data-badge-text\");this.countdownTimer=setInterval((()=>{const e=formatTime(Math.max(this.manager.getRemainingTime(),0)),t=`${i18n.get(\"advertisement\",this.player.config)} - ${e}`;this.elements.container.setAttribute(\"data-badge-text\",t)}),100)})),_defineProperty$1(this,\"onAdsManagerLoaded\",(e=>{if(!this.enabled)return;const t=new google.ima.AdsRenderingSettings;t.restoreCustomPlaybackStateOnAdBreakComplete=!0,t.enablePreloading=!0,this.manager=e.getAdsManager(this.player,t),this.cuePoints=this.manager.getCuePoints(),this.manager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,(e=>this.onAdError(e))),Object.keys(google.ima.AdEvent.Type).forEach((e=>{this.manager.addEventListener(google.ima.AdEvent.Type[e],(e=>this.onAdEvent(e)))})),this.trigger(\"loaded\")})),_defineProperty$1(this,\"addCuePoints\",(()=>{is.empty(this.cuePoints)||this.cuePoints.forEach((e=>{if(0!==e&&-1!==e&&e<this.player.duration){const t=this.player.elements.progress;if(is.element(t)){const i=100/this.player.duration*e,s=createElement(\"span\",{class:this.player.config.classNames.cues});s.style.left=`${i.toString()}%`,t.appendChild(s)}}}))})),_defineProperty$1(this,\"onAdEvent\",(e=>{const{container:t}=this.player.elements,i=e.getAd(),s=e.getAdData();switch((e=>{triggerEvent.call(this.player,this.player.media,`ads${e.replace(/_/g,\"\").toLowerCase()}`)})(e.type),e.type){case google.ima.AdEvent.Type.LOADED:this.trigger(\"loaded\"),this.pollCountdown(!0),i.isLinear()||(i.width=t.offsetWidth,i.height=t.offsetHeight);break;case google.ima.AdEvent.Type.STARTED:this.manager.setVolume(this.player.volume);break;case google.ima.AdEvent.Type.ALL_ADS_COMPLETED:this.player.ended?this.loadAds():this.loader.contentComplete();break;case google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED:this.pauseContent();break;case google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED:this.pollCountdown(),this.resumeContent();break;case google.ima.AdEvent.Type.LOG:s.adError&&this.player.debug.warn(`Non-fatal ad error: ${s.adError.getMessage()}`)}})),_defineProperty$1(this,\"onAdError\",(e=>{this.cancel(),this.player.debug.warn(\"Ads error\",e)})),_defineProperty$1(this,\"listeners\",(()=>{const{container:e}=this.player.elements;let t;this.player.on(\"canplay\",(()=>{this.addCuePoints()})),this.player.on(\"ended\",(()=>{this.loader.contentComplete()})),this.player.on(\"timeupdate\",(()=>{t=this.player.currentTime})),this.player.on(\"seeked\",(()=>{const e=this.player.currentTime;is.empty(this.cuePoints)||this.cuePoints.forEach(((i,s)=>{t<i&&i<e&&(this.manager.discardAdBreak(),this.cuePoints.splice(s,1))}))})),window.addEventListener(\"resize\",(()=>{this.manager&&this.manager.resize(e.offsetWidth,e.offsetHeight,google.ima.ViewMode.NORMAL)}))})),_defineProperty$1(this,\"play\",(()=>{const{container:e}=this.player.elements;this.managerPromise||this.resumeContent(),this.managerPromise.then((()=>{this.manager.setVolume(this.player.volume),this.elements.displayContainer.initialize();try{this.initialized||(this.manager.init(e.offsetWidth,e.offsetHeight,google.ima.ViewMode.NORMAL),this.manager.start()),this.initialized=!0}catch(e){this.onAdError(e)}})).catch((()=>{}))})),_defineProperty$1(this,\"resumeContent\",(()=>{this.elements.container.style.zIndex=\"\",this.playing=!1,silencePromise(this.player.media.play())})),_defineProperty$1(this,\"pauseContent\",(()=>{this.elements.container.style.zIndex=3,this.playing=!0,this.player.media.pause()})),_defineProperty$1(this,\"cancel\",(()=>{this.initialized&&this.resumeContent(),this.trigger(\"error\"),this.loadAds()})),_defineProperty$1(this,\"loadAds\",(()=>{this.managerPromise.then((()=>{this.manager&&this.manager.destroy(),this.managerPromise=new Promise((e=>{this.on(\"loaded\",e),this.player.debug.log(this.manager)})),this.initialized=!1,this.requestAds()})).catch((()=>{}))})),_defineProperty$1(this,\"trigger\",((e,...t)=>{const i=this.events[e];is.array(i)&&i.forEach((e=>{is.function(e)&&e.apply(this,t)}))})),_defineProperty$1(this,\"on\",((e,t)=>(is.array(this.events[e])||(this.events[e]=[]),this.events[e].push(t),this))),_defineProperty$1(this,\"startSafetyTimer\",((e,t)=>{this.player.debug.log(`Safety timer invoked from: ${t}`),this.safetyTimer=setTimeout((()=>{this.cancel(),this.clearSafetyTimer(\"startSafetyTimer()\")}),e)})),_defineProperty$1(this,\"clearSafetyTimer\",(e=>{is.nullOrUndefined(this.safetyTimer)||(this.player.debug.log(`Safety timer cleared from: ${e}`),clearTimeout(this.safetyTimer),this.safetyTimer=null)})),this.player=e,this.config=e.config.ads,this.playing=!1,this.initialized=!1,this.elements={container:null,displayContainer:null},this.manager=null,this.loader=null,this.cuePoints=null,this.events={},this.safetyTimer=null,this.countdownTimer=null,this.managerPromise=new Promise(((e,t)=>{this.on(\"loaded\",e),this.on(\"error\",t)})),this.load()}get enabled(){const{config:e}=this;return this.player.isHTML5&&this.player.isVideo&&e.enabled&&(!is.empty(e.publisherId)||is.url(e.tagUrl))}get tagUrl(){const{config:e}=this;if(is.url(e.tagUrl))return e.tagUrl;return`https://go.aniview.com/api/adserver6/vast/?${buildUrlParams({AV_PUBLISHERID:\"58c25bb0073ef448b1087ad6\",AV_CHANNELID:\"5a0458dc28a06145e4519d21\",AV_URL:window.location.hostname,cb:Date.now(),AV_WIDTH:640,AV_HEIGHT:480,AV_CDIM2:e.publisherId})}`}}function clamp(e=0,t=0,i=255){return Math.min(Math.max(e,t),i)}const parseVtt=e=>{const t=[];return e.split(/\\r\\n\\r\\n|\\n\\n|\\r\\r/).forEach((e=>{const i={};e.split(/\\r\\n|\\n|\\r/).forEach((e=>{if(is.number(i.startTime)){if(!is.empty(e.trim())&&is.empty(i.text)){const t=e.trim().split(\"#xywh=\");[i.text]=t,t[1]&&([i.x,i.y,i.w,i.h]=t[1].split(\",\"))}}else{const t=e.match(/([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})( ?--> ?)([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})/);t&&(i.startTime=60*Number(t[1]||0)*60+60*Number(t[2])+Number(t[3])+Number(`0.${t[4]}`),i.endTime=60*Number(t[6]||0)*60+60*Number(t[7])+Number(t[8])+Number(`0.${t[9]}`))}})),i.text&&t.push(i)})),t},fitRatio=(e,t)=>{const i={};return e>t.width/t.height?(i.width=t.width,i.height=1/e*t.width):(i.height=t.height,i.width=e*t.height),i};class PreviewThumbnails{constructor(e){_defineProperty$1(this,\"load\",(()=>{this.player.elements.display.seekTooltip&&(this.player.elements.display.seekTooltip.hidden=this.enabled),this.enabled&&this.getThumbnails().then((()=>{this.enabled&&(this.render(),this.determineContainerAutoSizing(),this.listeners(),this.loaded=!0)}))})),_defineProperty$1(this,\"getThumbnails\",(()=>new Promise((e=>{const{src:t}=this.player.config.previewThumbnails;if(is.empty(t))throw new Error(\"Missing previewThumbnails.src config attribute\");const i=()=>{this.thumbnails.sort(((e,t)=>e.height-t.height)),this.player.debug.log(\"Preview thumbnails\",this.thumbnails),e()};if(is.function(t))t((e=>{this.thumbnails=e,i()}));else{const e=(is.string(t)?[t]:t).map((e=>this.getThumbnail(e)));Promise.all(e).then(i)}})))),_defineProperty$1(this,\"getThumbnail\",(e=>new Promise((t=>{fetch(e).then((i=>{const s={frames:parseVtt(i),height:null,urlPrefix:\"\"};s.frames[0].text.startsWith(\"/\")||s.frames[0].text.startsWith(\"http://\")||s.frames[0].text.startsWith(\"https://\")||(s.urlPrefix=e.substring(0,e.lastIndexOf(\"/\")+1));const n=new Image;n.onload=()=>{s.height=n.naturalHeight,s.width=n.naturalWidth,this.thumbnails.push(s),t()},n.src=s.urlPrefix+s.frames[0].text}))})))),_defineProperty$1(this,\"startMove\",(e=>{if(this.loaded&&is.event(e)&&[\"touchmove\",\"mousemove\"].includes(e.type)&&this.player.media.duration){if(\"touchmove\"===e.type)this.seekTime=this.player.media.duration*(this.player.elements.inputs.seek.value/100);else{var t,i;const s=this.player.elements.progress.getBoundingClientRect(),n=100/s.width*(e.pageX-s.left);this.seekTime=this.player.media.duration*(n/100),this.seekTime<0&&(this.seekTime=0),this.seekTime>this.player.media.duration-1&&(this.seekTime=this.player.media.duration-1),this.mousePosX=e.pageX,this.elements.thumb.time.innerText=formatTime(this.seekTime);const r=null===(t=this.player.config.markers)||void 0===t||null===(i=t.points)||void 0===i?void 0:i.find((({time:e})=>e===Math.round(this.seekTime)));r&&this.elements.thumb.time.insertAdjacentHTML(\"afterbegin\",`${r.label}<br>`)}this.showImageAtCurrentTime()}})),_defineProperty$1(this,\"endMove\",(()=>{this.toggleThumbContainer(!1,!0)})),_defineProperty$1(this,\"startScrubbing\",(e=>{(is.nullOrUndefined(e.button)||!1===e.button||0===e.button)&&(this.mouseDown=!0,this.player.media.duration&&(this.toggleScrubbingContainer(!0),this.toggleThumbContainer(!1,!0),this.showImageAtCurrentTime()))})),_defineProperty$1(this,\"endScrubbing\",(()=>{this.mouseDown=!1,Math.ceil(this.lastTime)===Math.ceil(this.player.media.currentTime)?this.toggleScrubbingContainer(!1):once.call(this.player,this.player.media,\"timeupdate\",(()=>{this.mouseDown||this.toggleScrubbingContainer(!1)}))})),_defineProperty$1(this,\"listeners\",(()=>{this.player.on(\"play\",(()=>{this.toggleThumbContainer(!1,!0)})),this.player.on(\"seeked\",(()=>{this.toggleThumbContainer(!1)})),this.player.on(\"timeupdate\",(()=>{this.lastTime=this.player.media.currentTime}))})),_defineProperty$1(this,\"render\",(()=>{this.elements.thumb.container=createElement(\"div\",{class:this.player.config.classNames.previewThumbnails.thumbContainer}),this.elements.thumb.imageContainer=createElement(\"div\",{class:this.player.config.classNames.previewThumbnails.imageContainer}),this.elements.thumb.container.appendChild(this.elements.thumb.imageContainer);const e=createElement(\"div\",{class:this.player.config.classNames.previewThumbnails.timeContainer});this.elements.thumb.time=createElement(\"span\",{},\"00:00\"),e.appendChild(this.elements.thumb.time),this.elements.thumb.imageContainer.appendChild(e),is.element(this.player.elements.progress)&&this.player.elements.progress.appendChild(this.elements.thumb.container),this.elements.scrubbing.container=createElement(\"div\",{class:this.player.config.classNames.previewThumbnails.scrubbingContainer}),this.player.elements.wrapper.appendChild(this.elements.scrubbing.container)})),_defineProperty$1(this,\"destroy\",(()=>{this.elements.thumb.container&&this.elements.thumb.container.remove(),this.elements.scrubbing.container&&this.elements.scrubbing.container.remove()})),_defineProperty$1(this,\"showImageAtCurrentTime\",(()=>{this.mouseDown?this.setScrubbingContainerSize():this.setThumbContainerSizeAndPos();const e=this.thumbnails[0].frames.findIndex((e=>this.seekTime>=e.startTime&&this.seekTime<=e.endTime)),t=e>=0;let i=0;this.mouseDown||this.toggleThumbContainer(t),t&&(this.thumbnails.forEach(((t,s)=>{this.loadedImages.includes(t.frames[e].text)&&(i=s)})),e!==this.showingThumb&&(this.showingThumb=e,this.loadImage(i)))})),_defineProperty$1(this,\"loadImage\",((e=0)=>{const t=this.showingThumb,i=this.thumbnails[e],{urlPrefix:s}=i,n=i.frames[t],r=i.frames[t].text,a=s+r;if(this.currentImageElement&&this.currentImageElement.dataset.filename===r)this.showImage(this.currentImageElement,n,e,t,r,!1),this.currentImageElement.dataset.index=t,this.removeOldImages(this.currentImageElement);else{this.loadingImage&&this.usingSprites&&(this.loadingImage.onload=null);const i=new Image;i.src=a,i.dataset.index=t,i.dataset.filename=r,this.showingThumbFilename=r,this.player.debug.log(`Loading image: ${a}`),i.onload=()=>this.showImage(i,n,e,t,r,!0),this.loadingImage=i,this.removeOldImages(i)}})),_defineProperty$1(this,\"showImage\",((e,t,i,s,n,r=!0)=>{this.player.debug.log(`Showing thumb: ${n}. num: ${s}. qual: ${i}. newimg: ${r}`),this.setImageSizeAndOffset(e,t),r&&(this.currentImageContainer.appendChild(e),this.currentImageElement=e,this.loadedImages.includes(n)||this.loadedImages.push(n)),this.preloadNearby(s,!0).then(this.preloadNearby(s,!1)).then(this.getHigherQuality(i,e,t,n))})),_defineProperty$1(this,\"removeOldImages\",(e=>{Array.from(this.currentImageContainer.children).forEach((t=>{if(\"img\"!==t.tagName.toLowerCase())return;const i=this.usingSprites?500:1e3;if(t.dataset.index!==e.dataset.index&&!t.dataset.deleting){t.dataset.deleting=!0;const{currentImageContainer:e}=this;setTimeout((()=>{e.removeChild(t),this.player.debug.log(`Removing thumb: ${t.dataset.filename}`)}),i)}}))})),_defineProperty$1(this,\"preloadNearby\",((e,t=!0)=>new Promise((i=>{setTimeout((()=>{const s=this.thumbnails[0].frames[e].text;if(this.showingThumbFilename===s){let n;n=t?this.thumbnails[0].frames.slice(e):this.thumbnails[0].frames.slice(0,e).reverse();let r=!1;n.forEach((e=>{const t=e.text;if(t!==s&&!this.loadedImages.includes(t)){r=!0,this.player.debug.log(`Preloading thumb filename: ${t}`);const{urlPrefix:e}=this.thumbnails[0],s=e+t,n=new Image;n.src=s,n.onload=()=>{this.player.debug.log(`Preloaded thumb filename: ${t}`),this.loadedImages.includes(t)||this.loadedImages.push(t),i()}}})),r||i()}}),300)})))),_defineProperty$1(this,\"getHigherQuality\",((e,t,i,s)=>{if(e<this.thumbnails.length-1){let n=t.naturalHeight;this.usingSprites&&(n=i.h),n<this.thumbContainerHeight&&setTimeout((()=>{this.showingThumbFilename===s&&(this.player.debug.log(`Showing higher quality thumb for: ${s}`),this.loadImage(e+1))}),300)}})),_defineProperty$1(this,\"toggleThumbContainer\",((e=!1,t=!1)=>{const i=this.player.config.classNames.previewThumbnails.thumbContainerShown;this.elements.thumb.container.classList.toggle(i,e),!e&&t&&(this.showingThumb=null,this.showingThumbFilename=null)})),_defineProperty$1(this,\"toggleScrubbingContainer\",((e=!1)=>{const t=this.player.config.classNames.previewThumbnails.scrubbingContainerShown;this.elements.scrubbing.container.classList.toggle(t,e),e||(this.showingThumb=null,this.showingThumbFilename=null)})),_defineProperty$1(this,\"determineContainerAutoSizing\",(()=>{(this.elements.thumb.imageContainer.clientHeight>20||this.elements.thumb.imageContainer.clientWidth>20)&&(this.sizeSpecifiedInCSS=!0)})),_defineProperty$1(this,\"setThumbContainerSizeAndPos\",(()=>{const{imageContainer:e}=this.elements.thumb;if(this.sizeSpecifiedInCSS){if(e.clientHeight>20&&e.clientWidth<20){const t=Math.floor(e.clientHeight*this.thumbAspectRatio);e.style.width=`${t}px`}else if(e.clientHeight<20&&e.clientWidth>20){const t=Math.floor(e.clientWidth/this.thumbAspectRatio);e.style.height=`${t}px`}}else{const t=Math.floor(this.thumbContainerHeight*this.thumbAspectRatio);e.style.height=`${this.thumbContainerHeight}px`,e.style.width=`${t}px`}this.setThumbContainerPos()})),_defineProperty$1(this,\"setThumbContainerPos\",(()=>{const e=this.player.elements.progress.getBoundingClientRect(),t=this.player.elements.container.getBoundingClientRect(),{container:i}=this.elements.thumb,s=t.left-e.left+10,n=t.right-e.left-i.clientWidth-10,r=this.mousePosX-e.left-i.clientWidth/2,a=clamp(r,s,n);i.style.left=`${a}px`,i.style.setProperty(\"--preview-arrow-offset\",r-a+\"px\")})),_defineProperty$1(this,\"setScrubbingContainerSize\",(()=>{const{width:e,height:t}=fitRatio(this.thumbAspectRatio,{width:this.player.media.clientWidth,height:this.player.media.clientHeight});this.elements.scrubbing.container.style.width=`${e}px`,this.elements.scrubbing.container.style.height=`${t}px`})),_defineProperty$1(this,\"setImageSizeAndOffset\",((e,t)=>{if(!this.usingSprites)return;const i=this.thumbContainerHeight/t.h;e.style.height=e.naturalHeight*i+\"px\",e.style.width=e.naturalWidth*i+\"px\",e.style.left=`-${t.x*i}px`,e.style.top=`-${t.y*i}px`})),this.player=e,this.thumbnails=[],this.loaded=!1,this.lastMouseMoveTime=Date.now(),this.mouseDown=!1,this.loadedImages=[],this.elements={thumb:{},scrubbing:{}},this.load()}get enabled(){return this.player.isHTML5&&this.player.isVideo&&this.player.config.previewThumbnails.enabled}get currentImageContainer(){return this.mouseDown?this.elements.scrubbing.container:this.elements.thumb.imageContainer}get usingSprites(){return Object.keys(this.thumbnails[0].frames[0]).includes(\"w\")}get thumbAspectRatio(){return this.usingSprites?this.thumbnails[0].frames[0].w/this.thumbnails[0].frames[0].h:this.thumbnails[0].width/this.thumbnails[0].height}get thumbContainerHeight(){if(this.mouseDown){const{height:e}=fitRatio(this.thumbAspectRatio,{width:this.player.media.clientWidth,height:this.player.media.clientHeight});return e}return this.sizeSpecifiedInCSS?this.elements.thumb.imageContainer.clientHeight:Math.floor(this.player.media.clientWidth/this.thumbAspectRatio/4)}get currentImageElement(){return this.mouseDown?this.currentScrubbingImageElement:this.currentThumbnailImageElement}set currentImageElement(e){this.mouseDown?this.currentScrubbingImageElement=e:this.currentThumbnailImageElement=e}}const source={insertElements(e,t){is.string(t)?insertElement(e,this.media,{src:t}):is.array(t)&&t.forEach((t=>{insertElement(e,this.media,t)}))},change(e){getDeep(e,\"sources.length\")?(html5.cancelRequests.call(this),this.destroy.call(this,(()=>{this.options.quality=[],removeElement(this.media),this.media=null,is.element(this.elements.container)&&this.elements.container.removeAttribute(\"class\");const{sources:t,type:i}=e,[{provider:s=providers.html5,src:n}]=t,r=\"html5\"===s?i:\"div\",a=\"html5\"===s?{}:{src:n};Object.assign(this,{provider:s,type:i,supported:support.check(i,s,this.config.playsinline),media:createElement(r,a)}),this.elements.container.appendChild(this.media),is.boolean(e.autoplay)&&(this.config.autoplay=e.autoplay),this.isHTML5&&(this.config.crossorigin&&this.media.setAttribute(\"crossorigin\",\"\"),this.config.autoplay&&this.media.setAttribute(\"autoplay\",\"\"),is.empty(e.poster)||(this.poster=e.poster),this.config.loop.active&&this.media.setAttribute(\"loop\",\"\"),this.config.muted&&this.media.setAttribute(\"muted\",\"\"),this.config.playsinline&&this.media.setAttribute(\"playsinline\",\"\")),ui.addStyleHook.call(this),this.isHTML5&&source.insertElements.call(this,\"source\",t),this.config.title=e.title,media.setup.call(this),this.isHTML5&&Object.keys(e).includes(\"tracks\")&&source.insertElements.call(this,\"track\",e.tracks),(this.isHTML5||this.isEmbed&&!this.supported.ui)&&ui.build.call(this),this.isHTML5&&this.media.load(),is.empty(e.previewThumbnails)||(Object.assign(this.config.previewThumbnails,e.previewThumbnails),this.previewThumbnails&&this.previewThumbnails.loaded&&(this.previewThumbnails.destroy(),this.previewThumbnails=null),this.config.previewThumbnails.enabled&&(this.previewThumbnails=new PreviewThumbnails(this))),this.fullscreen.update()}),!0)):this.debug.warn(\"Invalid source format\")}};class Plyr{constructor(e,t){if(_defineProperty$1(this,\"play\",(()=>is.function(this.media.play)?(this.ads&&this.ads.enabled&&this.ads.managerPromise.then((()=>this.ads.play())).catch((()=>silencePromise(this.media.play()))),this.media.play()):null)),_defineProperty$1(this,\"pause\",(()=>this.playing&&is.function(this.media.pause)?this.media.pause():null)),_defineProperty$1(this,\"togglePlay\",(e=>(is.boolean(e)?e:!this.playing)?this.play():this.pause())),_defineProperty$1(this,\"stop\",(()=>{this.isHTML5?(this.pause(),this.restart()):is.function(this.media.stop)&&this.media.stop()})),_defineProperty$1(this,\"restart\",(()=>{this.currentTime=0})),_defineProperty$1(this,\"rewind\",(e=>{this.currentTime-=is.number(e)?e:this.config.seekTime})),_defineProperty$1(this,\"forward\",(e=>{this.currentTime+=is.number(e)?e:this.config.seekTime})),_defineProperty$1(this,\"increaseVolume\",(e=>{const t=this.media.muted?0:this.volume;this.volume=t+(is.number(e)?e:0)})),_defineProperty$1(this,\"decreaseVolume\",(e=>{this.increaseVolume(-e)})),_defineProperty$1(this,\"airplay\",(()=>{support.airplay&&this.media.webkitShowPlaybackTargetPicker()})),_defineProperty$1(this,\"toggleControls\",(e=>{if(this.supported.ui&&!this.isAudio){const t=hasClass(this.elements.container,this.config.classNames.hideControls),i=void 0===e?void 0:!e,s=toggleClass(this.elements.container,this.config.classNames.hideControls,i);if(s&&is.array(this.config.controls)&&this.config.controls.includes(\"settings\")&&!is.empty(this.config.settings)&&controls.toggleMenu.call(this,!1),s!==t){const e=s?\"controlshidden\":\"controlsshown\";triggerEvent.call(this,this.media,e)}return!s}return!1})),_defineProperty$1(this,\"on\",((e,t)=>{on.call(this,this.elements.container,e,t)})),_defineProperty$1(this,\"once\",((e,t)=>{once.call(this,this.elements.container,e,t)})),_defineProperty$1(this,\"off\",((e,t)=>{off(this.elements.container,e,t)})),_defineProperty$1(this,\"destroy\",((e,t=!1)=>{if(!this.ready)return;const i=()=>{document.body.style.overflow=\"\",this.embed=null,t?(Object.keys(this.elements).length&&(removeElement(this.elements.buttons.play),removeElement(this.elements.captions),removeElement(this.elements.controls),removeElement(this.elements.wrapper),this.elements.buttons.play=null,this.elements.captions=null,this.elements.controls=null,this.elements.wrapper=null),is.function(e)&&e()):(unbindListeners.call(this),html5.cancelRequests.call(this),replaceElement(this.elements.original,this.elements.container),triggerEvent.call(this,this.elements.original,\"destroyed\",!0),is.function(e)&&e.call(this.elements.original),this.ready=!1,setTimeout((()=>{this.elements=null,this.media=null}),200))};this.stop(),clearTimeout(this.timers.loading),clearTimeout(this.timers.controls),clearTimeout(this.timers.resized),this.isHTML5?(ui.toggleNativeControls.call(this,!0),i()):this.isYouTube?(clearInterval(this.timers.buffering),clearInterval(this.timers.playing),null!==this.embed&&is.function(this.embed.destroy)&&this.embed.destroy(),i()):this.isVimeo&&(null!==this.embed&&this.embed.unload().then(i),setTimeout(i,200))})),_defineProperty$1(this,\"supports\",(e=>support.mime.call(this,e))),this.timers={},this.ready=!1,this.loading=!1,this.failed=!1,this.touch=support.touch,this.media=e,is.string(this.media)&&(this.media=document.querySelectorAll(this.media)),(window.jQuery&&this.media instanceof jQuery||is.nodeList(this.media)||is.array(this.media))&&(this.media=this.media[0]),this.config=extend({},defaults,Plyr.defaults,t||{},(()=>{try{return JSON.parse(this.media.getAttribute(\"data-plyr-config\"))}catch(e){return{}}})()),this.elements={container:null,fullscreen:null,captions:null,buttons:{},display:{},progress:{},inputs:{},settings:{popup:null,menu:null,panels:{},buttons:{}}},this.captions={active:null,currentTrack:-1,meta:new WeakMap},this.fullscreen={active:!1},this.options={speed:[],quality:[]},this.debug=new Console(this.config.debug),this.debug.log(\"Config\",this.config),this.debug.log(\"Support\",support),is.nullOrUndefined(this.media)||!is.element(this.media))return void this.debug.error(\"Setup failed: no suitable element passed\");if(this.media.plyr)return void this.debug.warn(\"Target already setup\");if(!this.config.enabled)return void this.debug.error(\"Setup failed: disabled by config\");if(!support.check().api)return void this.debug.error(\"Setup failed: no support\");const i=this.media.cloneNode(!0);i.autoplay=!1,this.elements.original=i;const s=this.media.tagName.toLowerCase();let n=null,r=null;switch(s){case\"div\":if(n=this.media.querySelector(\"iframe\"),is.element(n)){if(r=parseUrl(n.getAttribute(\"src\")),this.provider=getProviderByUrl(r.toString()),this.elements.container=this.media,this.media=n,this.elements.container.className=\"\",r.search.length){const e=[\"1\",\"true\"];e.includes(r.searchParams.get(\"autoplay\"))&&(this.config.autoplay=!0),e.includes(r.searchParams.get(\"loop\"))&&(this.config.loop.active=!0),this.isYouTube?(this.config.playsinline=e.includes(r.searchParams.get(\"playsinline\")),this.config.youtube.hl=r.searchParams.get(\"hl\")):this.config.playsinline=!0}}else this.provider=this.media.getAttribute(this.config.attributes.embed.provider),this.media.removeAttribute(this.config.attributes.embed.provider);if(is.empty(this.provider)||!Object.values(providers).includes(this.provider))return void this.debug.error(\"Setup failed: Invalid provider\");this.type=types.video;break;case\"video\":case\"audio\":this.type=s,this.provider=providers.html5,this.media.hasAttribute(\"crossorigin\")&&(this.config.crossorigin=!0),this.media.hasAttribute(\"autoplay\")&&(this.config.autoplay=!0),(this.media.hasAttribute(\"playsinline\")||this.media.hasAttribute(\"webkit-playsinline\"))&&(this.config.playsinline=!0),this.media.hasAttribute(\"muted\")&&(this.config.muted=!0),this.media.hasAttribute(\"loop\")&&(this.config.loop.active=!0);break;default:return void this.debug.error(\"Setup failed: unsupported type\")}this.supported=support.check(this.type,this.provider),this.supported.api?(this.eventListeners=[],this.listeners=new Listeners(this),this.storage=new Storage(this),this.media.plyr=this,is.element(this.elements.container)||(this.elements.container=createElement(\"div\"),wrap(this.media,this.elements.container)),ui.migrateStyles.call(this),ui.addStyleHook.call(this),media.setup.call(this),this.config.debug&&on.call(this,this.elements.container,this.config.events.join(\" \"),(e=>{this.debug.log(`event: ${e.type}`)})),this.fullscreen=new Fullscreen(this),(this.isHTML5||this.isEmbed&&!this.supported.ui)&&ui.build.call(this),this.listeners.container(),this.listeners.global(),this.config.ads.enabled&&(this.ads=new Ads(this)),this.isHTML5&&this.config.autoplay&&this.once(\"canplay\",(()=>silencePromise(this.play()))),this.lastSeekTime=0,this.config.previewThumbnails.enabled&&(this.previewThumbnails=new PreviewThumbnails(this))):this.debug.error(\"Setup failed: no support\")}get isHTML5(){return this.provider===providers.html5}get isEmbed(){return this.isYouTube||this.isVimeo}get isYouTube(){return this.provider===providers.youtube}get isVimeo(){return this.provider===providers.vimeo}get isVideo(){return this.type===types.video}get isAudio(){return this.type===types.audio}get playing(){return Boolean(this.ready&&!this.paused&&!this.ended)}get paused(){return Boolean(this.media.paused)}get stopped(){return Boolean(this.paused&&0===this.currentTime)}get ended(){return Boolean(this.media.ended)}set currentTime(e){if(!this.duration)return;const t=is.number(e)&&e>0;this.media.currentTime=t?Math.min(e,this.duration):0,this.debug.log(`Seeking to ${this.currentTime} seconds`)}get currentTime(){return Number(this.media.currentTime)}get buffered(){const{buffered:e}=this.media;return is.number(e)?e:e&&e.length&&this.duration>0?e.end(0)/this.duration:0}get seeking(){return Boolean(this.media.seeking)}get duration(){const e=parseFloat(this.config.duration),t=(this.media||{}).duration,i=is.number(t)&&t!==1/0?t:0;return e||i}set volume(e){let t=e;is.string(t)&&(t=Number(t)),is.number(t)||(t=this.storage.get(\"volume\")),is.number(t)||({volume:t}=this.config),t>1&&(t=1),t<0&&(t=0),this.config.volume=t,this.media.volume=t,!is.empty(e)&&this.muted&&t>0&&(this.muted=!1)}get volume(){return Number(this.media.volume)}set muted(e){let t=e;is.boolean(t)||(t=this.storage.get(\"muted\")),is.boolean(t)||(t=this.config.muted),this.config.muted=t,this.media.muted=t}get muted(){return Boolean(this.media.muted)}get hasAudio(){return!this.isHTML5||(!!this.isAudio||(Boolean(this.media.mozHasAudio)||Boolean(this.media.webkitAudioDecodedByteCount)||Boolean(this.media.audioTracks&&this.media.audioTracks.length)))}set speed(e){let t=null;is.number(e)&&(t=e),is.number(t)||(t=this.storage.get(\"speed\")),is.number(t)||(t=this.config.speed.selected);const{minimumSpeed:i,maximumSpeed:s}=this;t=clamp(t,i,s),this.config.speed.selected=t,setTimeout((()=>{this.media&&(this.media.playbackRate=t)}),0)}get speed(){return Number(this.media.playbackRate)}get minimumSpeed(){return this.isYouTube?Math.min(...this.options.speed):this.isVimeo?.5:.0625}get maximumSpeed(){return this.isYouTube?Math.max(...this.options.speed):this.isVimeo?2:16}set quality(e){const t=this.config.quality,i=this.options.quality;if(!i.length)return;let s=[!is.empty(e)&&Number(e),this.storage.get(\"quality\"),t.selected,t.default].find(is.number),n=!0;if(!i.includes(s)){const e=closest(i,s);this.debug.warn(`Unsupported quality option: ${s}, using ${e} instead`),s=e,n=!1}t.selected=s,this.media.quality=s,n&&this.storage.set({quality:s})}get quality(){return this.media.quality}set loop(e){const t=is.boolean(e)?e:this.config.loop.active;this.config.loop.active=t,this.media.loop=t}get loop(){return Boolean(this.media.loop)}set source(e){source.change.call(this,e)}get source(){return this.media.currentSrc}get download(){const{download:e}=this.config.urls;return is.url(e)?e:this.source}set download(e){is.url(e)&&(this.config.urls.download=e,controls.setDownloadUrl.call(this))}set poster(e){this.isVideo?ui.setPoster.call(this,e,!1).catch((()=>{})):this.debug.warn(\"Poster can only be set for video\")}get poster(){return this.isVideo?this.media.getAttribute(\"poster\")||this.media.getAttribute(\"data-poster\"):null}get ratio(){if(!this.isVideo)return null;const e=reduceAspectRatio(getAspectRatio.call(this));return is.array(e)?e.join(\":\"):e}set ratio(e){this.isVideo?is.string(e)&&validateAspectRatio(e)?(this.config.ratio=reduceAspectRatio(e),setAspectRatio.call(this)):this.debug.error(`Invalid aspect ratio specified (${e})`):this.debug.warn(\"Aspect ratio can only be set for video\")}set autoplay(e){this.config.autoplay=is.boolean(e)?e:this.config.autoplay}get autoplay(){return Boolean(this.config.autoplay)}toggleCaptions(e){captions.toggle.call(this,e,!1)}set currentTrack(e){captions.set.call(this,e,!1),captions.setup.call(this)}get currentTrack(){const{toggled:e,currentTrack:t}=this.captions;return e?t:-1}set language(e){captions.setLanguage.call(this,e,!1)}get language(){return(captions.getCurrentTrack.call(this)||{}).language}set pip(e){if(!support.pip)return;const t=is.boolean(e)?e:!this.pip;is.function(this.media.webkitSetPresentationMode)&&this.media.webkitSetPresentationMode(t?pip.active:pip.inactive),is.function(this.media.requestPictureInPicture)&&(!this.pip&&t?this.media.requestPictureInPicture():this.pip&&!t&&document.exitPictureInPicture())}get pip(){return support.pip?is.empty(this.media.webkitPresentationMode)?this.media===document.pictureInPictureElement:this.media.webkitPresentationMode===pip.active:null}setPreviewThumbnails(e){this.previewThumbnails&&this.previewThumbnails.loaded&&(this.previewThumbnails.destroy(),this.previewThumbnails=null),Object.assign(this.config.previewThumbnails,e),this.config.previewThumbnails.enabled&&(this.previewThumbnails=new PreviewThumbnails(this))}static supported(e,t){return support.check(e,t)}static loadSprite(e,t){return loadSprite(e,t)}static setup(e,t={}){let i=null;return is.string(e)?i=Array.from(document.querySelectorAll(e)):is.nodeList(e)?i=Array.from(e):is.array(e)&&(i=e.filter(is.element)),is.empty(i)?null:i.map((e=>new Plyr(e,t)))}}Plyr.defaults=cloneDeep(defaults);export{Plyr as default};","import Plyr from 'plyr';\n\nexport default class U010AudioPlayer {\n  constructor(node, props) {\n    this.node = node;\n    this.props = props;\n    this.player = null;\n  }\n\n  init() {\n    const audioi18n = this.props.audioi18n;\n    const plyrOptions = {\n      controls: [\n        'progress', 'current-time', 'play', 'rewind', 'fast-forward', 'mute', 'volume', 'settings',\n      ],\n      invertTime: false,\n      loadSprite: false,\n      settings: this.props.text ? ['captions', 'speed'] : ['speed'],\n      tooltips: {controls: true, seek: true},\n      toggleInvert: false,\n      i18n: audioi18n,\n    };\n    const audioNode = this.node.querySelector('[data-component-part=\"audio\"]');\n    const player = new Plyr('#' + audioNode.id, plyrOptions);\n    const hasTranscription = !!this.props.text;\n\n    if (hasTranscription) {\n      player.on('ready', () => {\n        const captionButton = $(`<button\n            class=\"custom-captions-button plyr__controls__item plyr__control\"\n            type=\"button\"\n            data-plyr=\"captions\"\n            aria-label=\"${audioi18n.textLabel}\"\n            aria-haspopup=\"dialog\">\n            <svg focusable=\"false\"><use xlink:href=\"#plyr-captions-off\"></use></svg>\n            </button>`);\n        captionButton.click((event) => {\n          event.preventDefault();\n          $('#audioPlayerModal' + this.props.id).modal('show');\n        });\n        captionButton.insertAfter($(player.elements.volume));\n        $(\".plyr\", this.node).addClass(\"plyr--captions-enabled\");\n      });\n    }\n\n    const timeUpdated = (e) => {\n      var timer = $('.plyr__time', this.node);\n      timer.each(function (index, timerInstance) {\n        var timer = $(timerInstance);\n        if (!timer.html().includes('sr-only')) {\n          timer.removeAttr('aria-label').prepend(\n            '<span class=\"sr-only\">' + audioi18n.currentTime + '</span>'\n          );\n        }\n      });\n    }\n\n    function focusPlay(e) {\n      $(e.target).find('[data-plyr=\"play\"]').focus().addClass('plyr__tab-focus');\n    }\n\n    player.on('timeupdate', timeUpdated);\n    player.on('loadedmetadata', timeUpdated);\n    player.on('playing', focusPlay);\n    player.on('pause', focusPlay);\n\n    if(player.elements.container) player.elements.container.removeAttribute('tabindex');\n    this.player = player;\n\n    // ensure that only one audio is playing at a time\n    $('audio').on('play', function () {\n      let activated = this;\n      $('audio').each(function() {\n        if(this != activated) this.pause();\n      });\n    });\n  }\n\n  ready() {\n    this.init();\n  }\n\n  clear() {\n    if(this.player) this.player.destroy();\n  }\n\n  stop() {\n    if(this.player) this.player.stop();\n  }\n\n  cmsRefresh() {\n    this.init();\n  }\n}\n","/*!\n * jQuery JavaScript Library v3.7.0\n * https://jquery.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2023-05-11T18:29Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket trac-14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML <object> elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar version = \"3.7.0\",\n\n\trhtmlSuffix = /HTML$/i,\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\n\t// Retrieve the text value of an array of DOM nodes\n\ttext: function( elem ) {\n\t\tvar node,\n\t\t\tret = \"\",\n\t\t\ti = 0,\n\t\t\tnodeType = elem.nodeType;\n\n\t\tif ( !nodeType ) {\n\n\t\t\t// If no nodeType, this is expected to be an array\n\t\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t\t// Do not traverse comment nodes\n\t\t\t\tret += jQuery.text( node );\n\t\t\t}\n\t\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t\treturn elem.textContent;\n\t\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\n\t\t// Do not include comment or processing instruction nodes\n\n\t\treturn ret;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\tisXMLDoc: function( elem ) {\n\t\tvar namespace = elem && elem.namespaceURI,\n\t\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t\t// Assume HTML when documentElement doesn't yet exist, such as inside\n\t\t// document fragments.\n\t\treturn !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar pop = arr.pop;\n\n\nvar sort = arr.sort;\n\n\nvar splice = arr.splice;\n\n\nvar whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\n\nvar rtrimCSS = new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\n\n\n\n// Note: an element does not contain itself\njQuery.contains = function( a, b ) {\n\tvar bup = b && b.parentNode;\n\n\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE doesn't have `contains` on SVG.\n\t\ta.contains ?\n\t\t\ta.contains( bup ) :\n\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t) );\n};\n\n\n\n\n// CSS string/identifier serialization\n// https://drafts.csswg.org/cssom/#common-serializing-idioms\nvar rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n\nfunction fcssescape( ch, asCodePoint ) {\n\tif ( asCodePoint ) {\n\n\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\tif ( ch === \"\\0\" ) {\n\t\t\treturn \"\\uFFFD\";\n\t\t}\n\n\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t}\n\n\t// Other potentially-special ASCII characters get backslash-escaped\n\treturn \"\\\\\" + ch;\n}\n\njQuery.escapeSelector = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\n\n\n\nvar preferredDoc = document,\n\tpushNative = push;\n\n( function() {\n\nvar i,\n\tExpr,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\tpush = pushNative,\n\n\t// Local document vars\n\tdocument,\n\tdocumentElement,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\tmatches,\n\n\t// Instance-specific data\n\texpando = jQuery.expando,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|\" +\n\t\t\"loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trleadingCombinator = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" +\n\t\twhitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\tID: new RegExp( \"^#(\" + identifier + \")\" ),\n\t\tCLASS: new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\tTAG: new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\tATTR: new RegExp( \"^\" + attributes ),\n\t\tPSEUDO: new RegExp( \"^\" + pseudos ),\n\t\tCHILD: new RegExp(\n\t\t\t\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\tbool: new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\tneedsContext: new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// https://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\tif ( nonHex ) {\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\treturn nonHex;\n\t\t}\n\n\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t// Support: IE <=11+\n\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t// surrogate pair\n\t\treturn high < 0 ?\n\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes; see `setDocument`.\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE/Edge.\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && nodeName( elem, \"fieldset\" );\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android <=4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = {\n\t\tapply: function( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t},\n\t\tcall: function( target ) {\n\t\t\tpushNative.apply( target, slice.call( arguments, 1 ) );\n\t\t}\n\t};\n}\n\nfunction find( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tfind.contains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && context.getElementsByClassName ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( !nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when\n\t\t\t\t\t// strict-comparing two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( newContext != context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = jQuery.escapeSelector( nid );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrimCSS, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties\n\t\t// (see https://github.com/jquery/sizzle/issues/157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by jQuery selector module\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn nodeName( elem, \"input\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn ( nodeName( elem, \"input\" ) || nodeName( elem, \"button\" ) ) &&\n\t\t\telem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11+\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a jQuery selector context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [node] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nfunction setDocument( node ) {\n\tvar subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocumentElement = document.documentElement;\n\tdocumentIsHTML = !jQuery.isXMLDoc( document );\n\n\t// Support: iOS 7 only, IE 9 - 11+\n\t// Older browsers didn't support unprefixed `matches`.\n\tmatches = documentElement.matches ||\n\t\tdocumentElement.webkitMatchesSelector ||\n\t\tdocumentElement.msMatchesSelector;\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (see trac-13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t\tsubWindow.addEventListener( \"unload\", unloadHandler );\n\t}\n\n\t// Support: IE <10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocumentElement.appendChild( el ).id = jQuery.expando;\n\t\treturn !document.getElementsByName ||\n\t\t\t!document.getElementsByName( jQuery.expando ).length;\n\t} );\n\n\t// Support: IE 9 only\n\t// Check to see if it's possible to do matchesSelector\n\t// on a disconnected node.\n\tsupport.disconnectedMatch = assert( function( el ) {\n\t\treturn matches.call( el, \"*\" );\n\t} );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// IE/Edge don't support the :scope pseudo-class.\n\tsupport.scope = assert( function() {\n\t\treturn document.querySelectorAll( \":scope\" );\n\t} );\n\n\t// Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only\n\t// Make sure the `:has()` argument is parsed unforgivingly.\n\t// We include `*` in the test to detect buggy implementations that are\n\t// _selectively_ forgiving (specifically when the list includes at least\n\t// one valid selector).\n\t// Note that we treat complete lack of support for `:has()` as if it were\n\t// spec-compliant support, which is fine because use of `:has()` in such\n\t// environments will fail in the qSA path and fall back to jQuery traversal\n\t// anyway.\n\tsupport.cssHas = assert( function() {\n\t\ttry {\n\t\t\tdocument.querySelector( \":has(*,:jqfake)\" );\n\t\t\treturn false;\n\t\t} catch ( e ) {\n\t\t\treturn true;\n\t\t}\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter.ID = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter.ID =  function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find.TAG = function( tag, context ) {\n\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t// DocumentFragment nodes don't have gEBTN\n\t\t} else {\n\t\t\treturn context.querySelectorAll( tag );\n\t\t}\n\t};\n\n\t// Class\n\tExpr.find.CLASS = function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\trbuggyQSA = [];\n\n\t// Build QSA regex\n\t// Regex strategy adopted from Diego Perini\n\tassert( function( el ) {\n\n\t\tvar input;\n\n\t\tdocumentElement.appendChild( el ).innerHTML =\n\t\t\t\"<a id='\" + expando + \"' href='' disabled='disabled'></a>\" +\n\t\t\t\"<select id='\" + expando + \"-\\r\\\\' disabled='disabled'>\" +\n\t\t\t\"<option selected=''></option></select>\";\n\n\t\t// Support: iOS <=7 - 8 only\n\t\t// Boolean attributes and \"value\" are not treated correctly in some XML documents\n\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t}\n\n\t\t// Support: iOS <=7 - 8 only\n\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\trbuggyQSA.push( \"~=\" );\n\t\t}\n\n\t\t// Support: iOS 8 only\n\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t}\n\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\trbuggyQSA.push( \":checked\" );\n\t\t}\n\n\t\t// Support: Windows 8 Native Apps\n\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tdocumentElement.appendChild( el ).disabled = true;\n\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t}\n\n\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t// Adding a temporary attribute to the document before the selection works\n\t\t// around the issue.\n\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"name\", \"\" );\n\t\tel.appendChild( input );\n\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t}\n\t} );\n\n\tif ( !support.cssHas ) {\n\n\t\t// Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n\t\t// Our regular `try-catch` mechanism fails to detect natively-unsupported\n\t\t// pseudo-classes inside `:has()` (such as `:has(:contains(\"Foo\"))`)\n\t\t// in browsers that parse the `:has()` argument as a forgiving selector list.\n\t\t// https://drafts.csswg.org/selectors/#relational now requires the argument\n\t\t// to be parsed unforgivingly, but browsers have not yet fully adjusted.\n\t\trbuggyQSA.push( \":has\" );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = function( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a === document || a.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b === document || b.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t};\n\n\treturn document;\n}\n\nfind.matches = function( expr, elements ) {\n\treturn find( expr, null, null, elements );\n};\n\nfind.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn find( expr, document, null, [ elem ] ).length > 0;\n};\n\nfind.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn jQuery.contains( context, elem );\n};\n\n\nfind.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (see trac-13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\tif ( val !== undefined ) {\n\t\treturn val;\n\t}\n\n\treturn elem.getAttribute( name );\n};\n\nfind.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\njQuery.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\t//\n\t// Support: Android <=4.0+\n\t// Testing for detecting duplicates is unpredictable so instead assume we can't\n\t// depend on duplicate detection in all browsers without a stable sort.\n\thasDuplicate = !support.sortStable;\n\tsortInput = !support.sortStable && slice.call( results, 0 );\n\tsort.call( results, sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tsplice.call( results, duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\njQuery.fn.uniqueSort = function() {\n\treturn this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) );\n};\n\nExpr = jQuery.expr = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\tATTR: function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || \"\" )\n\t\t\t\t.replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\tCHILD: function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" )\n\t\t\t\t);\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr.CHILD.test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\tTAG: function( nodeNameSelector ) {\n\t\t\tvar expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn nodeName( elem, expectedNodeName );\n\t\t\t\t};\n\t\t},\n\n\t\tCLASS: function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace + \")\" + className +\n\t\t\t\t\t\"(\" + whitespace + \"|$)\" ) ) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\tATTR: function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = find.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\tif ( operator === \"=\" ) {\n\t\t\t\t\treturn result === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"!=\" ) {\n\t\t\t\t\treturn result !== check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"^=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) === 0;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"*=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"$=\" ) {\n\t\t\t\t\treturn check && result.slice( -check.length ) === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"~=\" ) {\n\t\t\t\t\treturn ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" )\n\t\t\t\t\t\t.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"|=\" ) {\n\t\t\t\t\treturn result === check || result.slice( 0, check.length + 1 ) === check + \"-\";\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t};\n\t\t},\n\n\t\tCHILD: function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || ( parent[ expando ] = {} );\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\t\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\t\t\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\tPSEUDO: function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// https://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tfind.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as jQuery does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\tnot: markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrimCSS, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element\n\t\t\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\thas: markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn find( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\tcontains: markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// https://www.w3.org/TR/selectors/#lang-pseudo\n\t\tlang: markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tfind.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\ttarget: function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\troot: function( elem ) {\n\t\t\treturn elem === documentElement;\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === safeActiveElement() &&\n\t\t\t\tdocument.hasFocus() &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\tenabled: createDisabledPseudo( false ),\n\t\tdisabled: createDisabledPseudo( true ),\n\n\t\tchecked: function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\treturn ( nodeName( elem, \"input\" ) && !!elem.checked ) ||\n\t\t\t\t( nodeName( elem, \"option\" ) && !!elem.selected );\n\t\t},\n\n\t\tselected: function( elem ) {\n\n\t\t\t// Support: IE <=11+\n\t\t\t// Accessing the selectedIndex property\n\t\t\t// forces the browser to treat the default option as\n\t\t\t// selected when in an optgroup.\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\tempty: function( elem ) {\n\n\t\t\t// https://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t//   but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !Expr.pseudos.empty( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\theader: function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"button\" ||\n\t\t\t\tnodeName( elem, \"button\" );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"text\" &&\n\n\t\t\t\t// Support: IE <10 only\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear\n\t\t\t\t// with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\tfirst: createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\tlast: createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\teq: createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\teven: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\todd: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tlt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i;\n\n\t\t\tif ( argument < 0 ) {\n\t\t\t\ti = argument + length;\n\t\t\t} else if ( argument > length ) {\n\t\t\t\ti = length;\n\t\t\t} else {\n\t\t\t\ti = argument;\n\t\t\t}\n\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tgt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos.nth = Expr.pseudos.eq;\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\nfunction tokenize( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rleadingCombinator.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrimCSS, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\tif ( parseOnly ) {\n\t\treturn soFar.length;\n\t}\n\n\treturn soFar ?\n\t\tfind.error( selector ) :\n\n\t\t// Cache the tokens\n\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\tif ( skip && nodeName( elem, skip ) ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = outerCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tfind( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem, matcherOut,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed ||\n\t\t\t\tmultipleContexts( selector || \"*\",\n\t\t\t\t\tcontext.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems;\n\n\t\tif ( matcher ) {\n\n\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter\n\t\t\t// or preexisting results,\n\t\t\tmatcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t[] :\n\n\t\t\t\t// ...otherwise use results directly\n\t\t\t\tresults;\n\n\t\t\t// Find primary matches\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t} else {\n\t\t\tmatcherOut = matcherIn;\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tvar ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element\n\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 )\n\t\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrimCSS, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find.TAG( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: iOS <=7 - 9 only\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching\n\t\t\t// elements by id. (see trac-14142)\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tjQuery.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\nfunction compile( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n}\n\n/**\n * A low-level selection function that works with jQuery's compiled\n *  selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n *  selector function built with jQuery selector compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nfunction select( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find.ID(\n\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\tcontext\n\t\t\t) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr.needsContext.test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) &&\n\t\t\t\t\t\ttestContext( context.parentNode ) || context\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n}\n\n// One-time assignments\n\n// Support: Android <=4.0 - 4.1+\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Android <=4.0 - 4.1+\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\njQuery.find = find;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.unique = jQuery.uniqueSort;\n\n// These have always been private, but they used to be documented\n// as part of Sizzle so let's maintain them in the 3.x line\n// for backwards compatibility purposes.\nfind.compile = compile;\nfind.select = select;\nfind.setDocument = setDocument;\n\nfind.escape = jQuery.escapeSelector;\nfind.getText = jQuery.text;\nfind.isXML = jQuery.isXMLDoc;\nfind.selectors = jQuery.expr;\nfind.support = jQuery.support;\nfind.uniqueSort = jQuery.uniqueSort;\n\n\t/* eslint-enable */\n\n} )();\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521)\n\t// Strict HTML recognition (trac-11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to jQuery#find\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// <object> elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.error );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the error, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getErrorHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getErrorHook();\n\n\t\t\t\t\t\t\t\t// The deprecated alias of the above. While the name suggests\n\t\t\t\t\t\t\t\t// returning the stack, not an error instance, jQuery just passes\n\t\t\t\t\t\t\t\t// it directly to `console.warn` so both will work; an instance\n\t\t\t\t\t\t\t\t// just better cooperates with source maps.\n\t\t\t\t\t\t\t\t} else if ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error\n// captured before the async barrier to get the original error cause\n// which may otherwise be hidden.\njQuery.Deferred.exceptionHook = function( error, asyncError ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message,\n\t\t\terror.stack, asyncError );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See trac-6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (trac-9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t//  - Node\n\t//    - Node.ELEMENT_NODE\n\t//    - Node.DOCUMENT_NODE\n\t//  - Object\n\t//    - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see trac-8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t//   1. No key was specified\n\t\t//   2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t//   1. The entire cache object\n\t\t//   2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t//   1. An object of properties\n\t\t//   2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (trac-14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces <option> tags with their contents when inserted outside of\n\t// the select element.\n\tdiv.innerHTML = \"<option></option>\";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (trac-13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"<select multiple='multiple'>\", \"</select>\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (trac-12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (trac-13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", true );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, isSetup ) {\n\n\t// Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !isSetup ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\tif ( !saved ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tdataPriv.set( this, type, false );\n\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering\n\t\t\t\t// the native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, jQuery.event.trigger(\n\t\t\t\t\tsaved[ 0 ],\n\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\tthis\n\t\t\t\t) );\n\n\t\t\t\t// Abort handling of the native event by all jQuery handlers while allowing\n\t\t\t\t// native handlers on the same element to run. On target, this is achieved\n\t\t\t\t// by stopping immediate propagation just on the jQuery event. However,\n\t\t\t\t// the native event is re-wrapped by a jQuery one on each level of the\n\t\t\t\t// propagation so the only way to stop it for jQuery is to stop it for\n\t\t\t\t// everyone via native `stopPropagation()`. This is not a problem for\n\t\t\t\t// focus/blur which don't bubble, but it does also stop click on checkboxes\n\t\t\t\t// and radios. We accept this limitation.\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.isImmediatePropagationStopped = returnTrue;\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (trac-504, trac-13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\n\tfunction focusMappedHandler( nativeEvent ) {\n\t\tif ( document.documentMode ) {\n\n\t\t\t// Support: IE 11+\n\t\t\t// Attach a single focusin/focusout handler on the document while someone wants\n\t\t\t// focus/blur. This is because the former are synchronous in IE while the latter\n\t\t\t// are async. In other browsers, all those handlers are invoked synchronously.\n\n\t\t\t// `handle` from private data would already wrap the event, but we need\n\t\t\t// to change the `type` here.\n\t\t\tvar handle = dataPriv.get( this, \"handle\" ),\n\t\t\t\tevent = jQuery.event.fix( nativeEvent );\n\t\t\tevent.type = nativeEvent.type === \"focusin\" ? \"focus\" : \"blur\";\n\t\t\tevent.isSimulated = true;\n\n\t\t\t// First, handle focusin/focusout\n\t\t\thandle( nativeEvent );\n\n\t\t\t// ...then, handle focus/blur\n\t\t\t//\n\t\t\t// focus/blur don't bubble while focusin/focusout do; simulate the former by only\n\t\t\t// invoking the handler at the lower level.\n\t\t\tif ( event.target === event.currentTarget ) {\n\n\t\t\t\t// The setup part calls `leverageNative`, which, in turn, calls\n\t\t\t\t// `jQuery.event.add`, so event handle will already have been set\n\t\t\t\t// by this point.\n\t\t\t\thandle( event );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// For non-IE browsers, attach a single capturing handler on the document\n\t\t\t// while someone wants focusin/focusout.\n\t\t\tjQuery.event.simulate( delegateType, nativeEvent.target,\n\t\t\t\tjQuery.event.fix( nativeEvent ) );\n\t\t}\n\t}\n\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\tvar attaches;\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, true );\n\n\t\t\tif ( document.documentMode ) {\n\n\t\t\t\t// Support: IE 9 - 11+\n\t\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\t\tattaches = dataPriv.get( this, delegateType );\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t}\n\t\t\t\tdataPriv.set( this, delegateType, ( attaches || 0 ) + 1 );\n\t\t\t} else {\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tvar attaches;\n\n\t\t\tif ( document.documentMode ) {\n\t\t\t\tattaches = dataPriv.get( this, delegateType ) - 1;\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t\tdataPriv.remove( this, delegateType );\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.set( this, delegateType, attaches );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Return false to indicate standard teardown should be applied\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n\n\t// Support: Firefox <=44\n\t// Firefox doesn't have focus(in | out) events\n\t// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n\t//\n\t// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n\t// focus(in | out) events fire after focus & blur events,\n\t// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n\t// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n\t//\n\t// Support: IE 9 - 11+\n\t// To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,\n\t// attach a single handler for both events in IE.\n\tjQuery.event.special[ delegateType ] = {\n\t\tsetup: function() {\n\n\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType );\n\n\t\t\t// Support: IE 9 - 11+\n\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.addEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\tdataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 );\n\t\t},\n\t\tteardown: function() {\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType ) - 1;\n\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.removeEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( dataHolder, delegateType );\n\t\t\t} else {\n\t\t\t\tdataPriv.set( dataHolder, delegateType, attaches );\n\t\t\t}\n\t\t}\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\n\trcleanScript = /^\\s*<!\\[CDATA\\[|\\]\\]>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (trac-8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase()  !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Unwrap a CDATA section containing script contents. This shouldn't be\n\t\t\t\t\t\t\t// needed as in XML documents they're already not visible when\n\t\t\t\t\t\t\t// inspecting element contents and in HTML documents they have no\n\t\t\t\t\t\t\t// meaning but we're preserving that logic for backwards compatibility.\n\t\t\t\t\t\t\t// This will be removed completely in 4.0. See gh-4904.\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew jQuery#find here for performance reasons:\n\t\t\t// https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar rcustomProp = /^--/;\n\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (trac-8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is display: block\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tisCustomProp = rcustomProp.test( name ),\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t//   .css('filter') (IE 9 only, trac-12537)\n\t//   .css('--customProperty) (gh-3144)\n\tif ( computed ) {\n\n\t\t// Support: IE <=9 - 11+\n\t\t// IE only supports `\"float\"` in `getPropertyValue`; in computed styles\n\t\t// it's only available as `\"cssFloat\"`. We no longer modify properties\n\t\t// sent to `.css()` apart from camelCasing, so we need to check both.\n\t\t// Normally, this would create difference in behavior: if\n\t\t// `getPropertyValue` returns an empty string, the value returned\n\t\t// by `.css()` would be `undefined`. This is usually the case for\n\t\t// disconnected elements. However, in IE even disconnected elements\n\t\t// with no styles return `\"none\"` for `getPropertyValue( \"float\" )`\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( isCustomProp && ret ) {\n\n\t\t\t// Support: Firefox 105+, Chrome <=105+\n\t\t\t// Spec requires trimming whitespace for custom properties (gh-4926).\n\t\t\t// Firefox only trims leading whitespace. Chrome just collapses\n\t\t\t// both leading & trailing whitespace to a single space.\n\t\t\t//\n\t\t\t// Fall back to `undefined` if empty string returned.\n\t\t\t// This collapses a missing definition with property defined\n\t\t\t// and set to an empty string but there's no standard API\n\t\t\t// allowing us to differentiate them without a performance penalty\n\t\t\t// and returning `undefined` aligns with older jQuery.\n\t\t\t//\n\t\t\t// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" ) || undefined;\n\t\t}\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0,\n\t\tmarginDelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\t// Count margin delta separately to only add it after scroll gutter adjustment.\n\t\t// This is needed to make negative margins work with `outerHeight( true )` (gh-3982).\n\t\tif ( box === \"margin\" ) {\n\t\t\tmarginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta + marginDelta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\tanimationIterationCount: true,\n\t\taspectRatio: true,\n\t\tborderImageSlice: true,\n\t\tcolumnCount: true,\n\t\tflexGrow: true,\n\t\tflexShrink: true,\n\t\tfontWeight: true,\n\t\tgridArea: true,\n\t\tgridColumn: true,\n\t\tgridColumnEnd: true,\n\t\tgridColumnStart: true,\n\t\tgridRow: true,\n\t\tgridRowEnd: true,\n\t\tgridRowStart: true,\n\t\tlineHeight: true,\n\t\topacity: true,\n\t\torder: true,\n\t\torphans: true,\n\t\tscale: true,\n\t\twidows: true,\n\t\tzIndex: true,\n\t\tzoom: true,\n\n\t\t// SVG-related\n\t\tfillOpacity: true,\n\t\tfloodOpacity: true,\n\t\tstopOpacity: true,\n\t\tstrokeMiterlimit: true,\n\t\tstrokeOpacity: true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug trac-9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (trac-7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// Use proper attribute retrieval (trac-12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar classNames, className, i, self,\n\t\t\ttype = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\treturn this.each( function() {\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (trac-14686, trac-14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (trac-2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (trac-6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// trac-7653, trac-8125, trac-8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes trac-9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (trac-10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket trac-12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// trac-9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (trac-11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// trac-1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see trac-8605, trac-14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\"  ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// trac-14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce.guid++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t//    documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( _i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( {\n\t\tpadding: \"inner\" + name,\n\t\tcontent: type,\n\t\t\"\": \"outer\" + name\n\t}, function( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( _i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\njQuery.each(\n\t( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( _i, name ) {\n\n\t\t// Handle event binding\n\t\tjQuery.fn[ name ] = function( data, fn ) {\n\t\t\treturn arguments.length > 0 ?\n\t\t\t\tthis.on( name, null, data, fn ) :\n\t\t\t\tthis.trigger( name );\n\t\t};\n\t}\n);\n\n\n\n\n// Support: Android <=4.0 only\n// Make sure we trim BOM and NBSP\n// Require that the \"whitespace run\" starts from a non-whitespace\n// to avoid O(N^2) behavior when the engine would try matching \"\\s+$\" at each space position.\nvar rtrim = /^[\\s\\uFEFF\\xA0]+|([^\\s\\uFEFF\\xA0])[\\s\\uFEFF\\xA0]+$/g;\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\njQuery.trim = function( text ) {\n\treturn text == null ?\n\t\t\"\" :\n\t\t( text + \"\" ).replace( rtrim, \"$1\" );\n};\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (trac-13566)\nif ( typeof noGlobal === \"undefined\" ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n","import $ from \"jquery\";\n\nexport default class C001Accordion {\n  constructor(node, props) {\n    this.node = node;\n    this.props = props;\n  }\n\n  init() {\n    const accordionItems = this.node.querySelectorAll('[data-component-part=\"item\"]');\n    accordionItems.forEach((item) => {\n      const $button = $('.panel-heading .panel-title button', item);\n\n      $button.on('click', () => {\n        let scrollToElement;\n        // active item has to be saved globally because component is destroyed on cms refresh\n        window.activeAccordionItem = item.id;\n        if ($button.hasClass('collapsed')) {\n          scrollToElement = this.getScrollToElement(this.node);\n          if(scrollToElement) {\n            window.setTimeout(() => {\n              history.replaceState(null, null, window.location.pathname + window.location.search);\n              window.scrollTo({\n                top: scrollToElement.getBoundingClientRect().top + window.scrollY - 100,\n                behavior: 'smooth',\n              });\n            }, 350);\n          }\n        } else {\n          window.activeAccordionItem = null;\n        }\n      })\n\n      $button.on('keyup', function (event) {\n        if (event.which === 32 || event.which === 13) {\n          $('[class*=button_close]').click();\n          this.click();\n          return false;\n        }\n      });\n    });\n\n    this.triggerHash();\n\n    window.addEventListener('hashchange', this.triggerHash.bind(this));\n  }\n\n  getScrollToElement(accordionItem) {\n    let anchorElement = this.getAnchorElement();\n    if (anchorElement && anchorElement.length && this.isElementInPanel(anchorElement)) {\n      return anchorElement[0];\n    }\n    else {\n      return accordionItem;\n    }\n  }\n\n  triggerHash() {\n    let $elem = this.getAnchorElement();\n\n    if (!$elem || !$elem.length) {\n      return;\n    }\n\n    if ($elem.hasClass('panel') && $elem.parent().hasClass('accordion')) {\n      let $panelButton = $('.panel-heading .panel-title button', $elem);\n\n      if ($panelButton.length && $panelButton.hasClass('collapsed')) {\n        $panelButton.click();\n      }\n    }\n    else if (this.isElementInPanel($elem)) {\n      let $panelButton = $('.panel-heading .panel-title button', $elem.closest('.panel'));\n\n      if ($panelButton.length && $panelButton.hasClass('collapsed')) {\n        $panelButton.click();\n      }\n    }\n  }\n\n  getAnchorElement() {\n    let hash = document.location.hash;\n    if(!hash && window.activeAccordionItem) {\n      hash = '#' + window.activeAccordionItem;\n    }\n\n    if (!hash) {\n      return;\n    }\n    return $(hash);\n  }\n\n  isElementInPanel(element) {\n    return element.closest('.panel').length;\n  }\n\n  ready() {\n    this.init();\n  }\n\n  clear() {\n    // There seems to be no destroy method for bootstrap accordion\n  }\n\n  cmsRefresh() {\n    this.init();\n  }\n}\n","class ComponentPrivacy {\n  constructor(props) {\n    this.node = props.node;\n    this.privacyCategory = props.privacyCategory;\n    this.init = props.init;\n    this.userIsAuthenticated = document.querySelector('.cms-toolbar')\n  }\n\n  ready() {\n    if(this.userIsAuthenticated || django_privacy_mgmt.getPreference(this.privacyCategory)) {\n      this.init();\n    } else {\n      // Above works because privacy manager reloads the page after setting the preference.\n      // Should be replaced with custom event\n      window.django_privacy_mgmt.addListener('change', allowed => {\n        if(allowed) {\n          this.init();\n        }\n      }, this.privacyCategory);\n    }\n  }\n\n  updatePreference(value, permanent=false) {\n    django_privacy_mgmt.setPreference(this.privacyCategory, value);\n    this.init();\n  }\n}\n\nexport default ComponentPrivacy;\n","import Swiper, {Keyboard, Navigation, Pagination} from \"swiper\";\nimport ComponentPrivacy from \"./utils/component-privacy\";\n\nexport default class C042ShortsSlider {\n  constructor(node, props) {\n    this.node = node;\n    this.props = props;\n    this.id = props.id;\n\n    this.privacyManager = new ComponentPrivacy({\n      node: this.node,\n      privacyCategory: 'YOUTUBE_VIDEOS',\n      init: this.init.bind(this),\n    });\n    this.checkbox = this.node.querySelector('[data-component-part=\"privacy-checkbox\"]');\n    node.querySelector('[data-component-part=\"accept\"]').addEventListener('click', () => {\n      const accepted = this.checkbox.checked;\n      if(accepted) {\n        this.privacyManager.updatePreference(true);\n      }\n    });\n\n    // Need jquery to trigger bootstrap modal\n    this.modal = $(`#shorts-slider-modal-${this.id}`);\n  }\n\n  initSlider() {\n    const sliderNodeId = `#shorts-slider-${this.id}`;\n    const numberOfSlides = this.node.querySelectorAll('[data-component-part=\"shorts-slider-slide\"]').length;\n    this.swiper = new Swiper(sliderNodeId, {\n      modules: [Navigation, Pagination],\n      spaceBetween: 30,\n      slidesPerView: 1,\n      centeredSlides: false,\n      slideToClickedSlide: true,\n      loop: false,\n      mousewheel: {\n        enabled: false\n      },\n      keyboard: {\n        enabled: true\n      },\n      navigation: {\n        nextEl: '.swiper-button-next',\n        prevEl: '.swiper-button-prev'\n      },\n      breakpoints: {\n        320: {\n          slidesPerView: 2,\n        },\n        480: {\n          slidesPerView: 3,\n        },\n        768: {\n          slidesPerView: 4,\n        },\n        1380: {\n          slidesPerView: 5,\n        },\n      }\n    });\n\n    this.node.classList.add('shorts-slider--initialized');\n  }\n\n  initModalSlider() {\n    const sliderNodeId = `#shorts-modal-slider-${this.id}`;\n    this.modalSlider = new Swiper(sliderNodeId, {\n      modules: [Navigation, Pagination, Keyboard],\n      spaceBetween: 30,\n      slidesPerView: 1,\n      centeredSlides: true,\n      slideToClickedSlide: true,\n      loop: false,\n      mousewheel: {\n        enabled: false\n      },\n      keyboard: {\n        enabled: true\n      },\n      navigation: {\n        nextEl: '.swiper-button-next',\n        prevEl: '.swiper-button-prev'\n      },\n      on: {\n        afterInit: (swiper) => {\n          swiper.slideTo(this.activeIndex, 0, false);\n          const video = swiper.slides[this.activeIndex].querySelector('iframe');\n          // Start youtube video with postMessage (does not always work)\n          video.contentWindow.postMessage(JSON.stringify({\n            event: 'command',\n            func: 'playVideo'\n          }), 'https://www.youtube.com');\n        },\n        slideChange: (swiper) => {\n          // Stop all videos\n          const videos = swiper.el.querySelectorAll('iframe');\n          videos.forEach((video) => {\n            video.contentWindow.postMessage(JSON.stringify({\n              event: 'command',\n              func: 'stopVideo'\n            }), 'https://www.youtube.com');\n          });\n\n          // Start youtube video with postMessage\n          const video = swiper.slides[swiper.activeIndex].querySelector('iframe');\n\n          video.contentWindow.postMessage(JSON.stringify({\n            event: 'command',\n            func: 'playVideo'\n          }), 'https://www.youtube.com');\n        }\n      }\n    });\n  }\n\n  initModals() {\n    const slides = this.node.querySelectorAll('[data-component-part=\"shorts-slider-slide\"]');\n    this.modalSlider = null;\n    this.activeIndex = 0;\n\n    this.modal.on('shown.bs.modal', () => {\n      this.initModalSlider();\n    });\n    // On close, destroy modal swiper, stop videos\n    this.modal.on('hidden.bs.modal', () => {\n      // Stop all videos\n      const videos = this.modalSlider.el.querySelectorAll('iframe');\n      videos.forEach((video) => {\n        video.contentWindow.postMessage(JSON.stringify({\n          event: 'command',\n          func: 'stopVideo'\n        }), 'https://www.youtube.com');\n      });\n      this.modalSlider.destroy(true, true);\n    });\n\n    let timer;\n    slides.forEach((slide, index) => {\n      slide.addEventListener('click', () => {\n        if (event.detail === 1) {\n          timer = setTimeout(() => {\n            this.activeIndex = index;\n            this.modal.modal('show');\n          }, 200)\n        }\n      });\n      slide.addEventListener('dblclick', () => {\n        clearTimeout(timer);\n      });\n    });\n  }\n\n  init() {\n    this.initSlider();\n    this.initModals();\n  }\n\n  ready() {\n    this.privacyManager.ready();\n  }\n}\n","// TODO Django 4: Solution with calculateTitleHeight should be reworked\nexport default class C025Quicklinks {\n  constructor(node, props) {\n    this.node = node;\n    this.props = props;\n    this.id = props.id;\n  }\n\n  init() {\n    this.calculateTitleHeight();\n    this.initFilters();\n  }\n\n  calculateTitleHeight() {\n    const quickLinkTexts = this.node.querySelectorAll('[data-component-part=\"quicklink-link-text\"]');\n    let minHeight = 0;\n\n    quickLinkTexts.forEach((component) => {\n      component.style.minHeight = 0;\n      minHeight = Math.max(minHeight, component.getBoundingClientRect().height);\n    });\n\n    quickLinkTexts.forEach((component) => {\n      component.style.minHeight = minHeight + 'px';\n    });\n  }\n\n  ready() {\n    this.init();\n  }\n\n  windowResize() {\n    this.calculateTitleHeight();\n  }\n\n  clear() { }\n\n  cmsRefresh() {\n    this.calculateTitleHeight();\n  }\n\n  initFilters() {\n    const filterButtonGroups = this.node.querySelectorAll('[data-component-part=\"filter-button-group\"]');\n    const filterDropdowns = this.node.querySelectorAll('[data-component-part=\"filter-select\"]');\n    const filterItems = this.node.querySelectorAll('[data-component-part=\"quicklink\"]');\n    const filterItemsArray = Array.from(filterItems);\n    const currentFilters =  {};\n\n    const applyFilter = (filter, groupId) => {\n      currentFilters[groupId] = filter;\n\n      filterItemsArray.forEach((item) => {\n        const dataIds = item.dataset.filterIds.split(' ');\n        let visible = false;\n\n        for (const group in currentFilters) {\n          const currentFilter = currentFilters[group];\n\n          if (currentFilter === '') {\n            visible = true;\n          } else if (dataIds.includes(currentFilter)) {\n            visible = true;\n          } else {\n            visible = false;\n            break;\n          }\n        }\n        if (visible) {\n          item.parentNode.style.display = 'block';\n        } else {\n          item.parentNode.style.display = 'none';\n        }\n      });\n    };\n\n    filterButtonGroups.forEach((group) => {\n      const buttons = group.querySelectorAll('[data-component-part=\"filter-button\"]');\n      buttons.forEach((button) => {\n        button.addEventListener('click', (event) => {\n          const filter = event.target.dataset.filter;\n          applyFilter(filter, group.getAttribute('id'));\n          buttons.forEach((btn) => {\n            btn.classList.remove('active');\n          });\n          event.target.classList.add('active');\n        });\n      });\n    })\n\n    filterDropdowns.forEach((dropdown) => {\n      dropdown.addEventListener('change', (event) => {\n        const filter = event.target.value;\n        const groupId = dropdown.getAttribute('id');\n        applyFilter(filter, groupId);\n      });\n    });\n  }\n}\n","import U010AudioPlayer from \"./u010-audio-player.js\";\n\nexport default class U015Hotspots {\n  constructor(node, props, loader) {\n    this.node = node;\n    this.props = props;\n    this.id = props.id;\n    this.loader = loader;\n  }\n\n  toggleHotspot(hotspot) {\n    hotspot.classList.toggle('hotspot--active');\n    [...this.hotspots].filter(h => h !== hotspot)\n      .forEach(h => h.classList.remove('hotspot--active'));\n    if (!hotspot.classList.contains('hotspot--active')) {\n      return;\n    }\n\n    const tooltip = hotspot.nextElementSibling;\n    if (tooltip && tooltip.classList.contains('hotspot__tooltip')) {\n      const width = tooltip.offsetWidth;\n      const windowWidth = window.innerWidth;\n\n      // Right aligned\n      if (tooltip.style.right) {\n        let shift = -width / 2;\n        const right = windowWidth - hotspot.getBoundingClientRect().right;\n\n        if (right < width / 2) {\n          shift = -right + 12;\n        }\n        tooltip.style.setProperty('--shift-right', `${shift}px`);\n        tooltip.style.setProperty('--shift-arrow-right', `${-shift - 9}px`);\n      } else {\n        const left = hotspot.getBoundingClientRect().left;\n        let shift = -width / 2;\n        if (left + shift < 0) {\n          shift = -left;\n        }\n        tooltip.style.setProperty('--shift', `${shift}px`);\n        tooltip.style.setProperty('--shift-arrow', `${-shift - 9}px`);\n      }\n\n    }\n\n    const target = hotspot.getAttribute('href');\n    const targetEl = document.querySelector(target);\n    if (!targetEl) return;\n\n    targetEl.classList.toggle('hotspot-modal--active');\n    targetEl.focus();\n    document.body.classList.add('modal-open');\n  }\n\n  closeModal(hotspot_modal) {\n    hotspot_modal.classList.remove('hotspot-modal--active');\n    const hotspot = document.querySelector(`[href=\"#${hotspot_modal.id}\"]`);\n    hotspot.classList.remove('hotspot--active');\n    document.body.classList.remove('modal-open');\n\n    this.loader.getComponentsByType(U010AudioPlayer).forEach((audioPlayer) => {\n      audioPlayer.stop();\n    });\n  }\n  init() {\n    this.hotspots = this.node.querySelectorAll('[data-component-part=\"hotspot\"]');\n    let timer = null;\n    this.hotspots.forEach((hotspot) => {\n      hotspot.addEventListener('click', (e) => {\n        e.preventDefault();\n        if (event.detail === 1) {\n          clearTimeout(timer);\n          timer = setTimeout(() => {\n            this.toggleHotspot(hotspot);\n          }, 200);\n        }\n      });\n      hotspot.addEventListener('dblclick', () => {\n        // If edit mode, prevent double click\n        if (window.CMS) {\n          clearTimeout(timer);\n        }\n      });\n      hotspot.addEventListener('keyup', (e) => {\n        e.preventDefault();\n        if (e.keyCode === 13) {\n          this.toggleHotspot(hotspot);\n        }\n      });\n    });\n\n    const hotspot_modals = document.querySelectorAll('[data-component-part=\"hotspot-modal\"]');\n    hotspot_modals.forEach((hotspot_modal) => {\n      hotspot_modal.addEventListener('keyup', (e) => {\n        e.preventDefault();\n        if (e.keyCode === 27) {\n          this.closeModal(hotspot_modal);\n        }\n      });\n      hotspot_modal.addEventListener('click', (e) => {\n        if (e.target !== hotspot_modal) return;\n        this.closeModal(hotspot_modal);\n      });\n      const modal_close = hotspot_modal.querySelector('[data-component-part=\"hotspot-modal-close\"]');\n      modal_close.addEventListener('click', (e) => {\n        e.preventDefault();\n        this.closeModal(hotspot_modal);\n      });\n    });\n  }\n\n  ready() {\n    this.init();\n  }\n}\n","import Swiper, {HashNavigation, Navigation, Pagination} from \"swiper\";\n\nexport default class C044StorySlider {\n  constructor(node, props) {\n    this.node = node;\n    this.props = props;\n    this.id = props.id;\n    this.number = 0;\n    this.paused = null;\n\n    this.lastScrollY = 0;\n  }\n\n  initHeight() {\n    const mapContainer = this.node.querySelector('.story-slider__map-inner');\n    const containerWidth = mapContainer.offsetWidth;\n    const containerHeight = mapContainer.offsetHeight;\n    const multiplier = containerWidth / containerHeight / 1.2;\n    mapContainer.style.setProperty('--spot-pos-y-multiplier', multiplier);\n  }\n\n  init() {\n    this.lastScrollY = window.scrollY;\n\n    window.addEventListener('scroll', () => {\n      if (\n        window.scrollY > window.innerHeight &&\n        window.scrollY > this.lastScrollY &&\n        this.lastScrollY > 0\n      ) {\n        document.body.classList.remove('body--show-stories');\n      }\n      this.lastScrollY = window.scrollY;\n    });\n    if (window.location.hash === '#site-header') {\n      document.body.classList.remove('body--show-stories');\n    }\n    this.initHeight();\n    this.initSlider();\n\n    window.addEventListener('resize', () => {\n      this.initHeight();\n    });\n\n    const skipLink = document.querySelector('[data-component-part=\"skip-link\"]');\n    skipLink.addEventListener('click', (e) => {\n      e.preventDefault();\n      window.scroll({\n        top: window.innerHeight,\n        left: 0,\n        behavior: 'smooth'\n      });\n    });\n\n    const backLink = document.getElementById('story-slider-back');\n    backLink.addEventListener('click', (e) => {\n      e.preventDefault();\n      document.body.classList.add('body--show-stories');\n      // Jump under the slider\n      window.scroll({\n        top: window.innerHeight,\n        left: 0,\n        behavior: 'instant'\n      });\n\n      setTimeout(() => {\n        this.initHeight();\n        this.node.scrollIntoView({\n          behavior: 'smooth'\n        });\n      }, 100);\n    });\n  }\n\n  initSlider() {\n    const sliderNodeId = `#story-slider-${this.id}`;\n\n    this.swiper = new Swiper(sliderNodeId, {\n      modules: [Navigation, Pagination, HashNavigation],\n      slidesPerView: 1,\n      centeredSlides: false,\n      slideToClickedSlide: true,\n      loop: true,\n      hashNavigation: {\n        watchState: true\n      },\n      mousewheel: {\n        enabled: false\n      },\n      keyboard: {\n        enabled: true\n      },\n      navigation: {\n        nextEl: '.story-slider__slider-controls-next',\n        prevEl: '.story-slider__slider-controls-prev'\n      },\n      on: {\n        beforeInit: (swiper) => {\n          this.number = swiper.el.querySelectorAll('[data-component-part=\"story-slider-slide\"]').length;\n        },\n        init: (swiper) => {\n          swiper.slides[swiper.activeIndex].classList.add('story-slider-bounce');\n          this.videoControl = this.node.querySelector('.story-slider__slider-controls-play-pause');\n\n          this.videoControl.addEventListener('click', () => {\n            const srInfo = this.videoControl.querySelector('.sr-only');\n\n            if (this.videoElement.paused) {\n              this.videoElement.play();\n              this.paused = false;\n              this.videoControl.classList.remove('story-slider__slider-controls-play-pause--paused');\n              srInfo.textContent = srInfo.dataset['data-label-pausing'];\n            } else {\n              this.videoElement.pause();\n              this.paused = true;\n              this.videoControl.classList.add('story-slider__slider-controls-play-pause--paused');\n              srInfo.textContent = srInfo.dataset['data-label-playing'];\n            }\n          });\n\n        },\n        slideChange: (swiper) => {\n          const activeIndex = swiper.activeIndex;\n          const realIndex = swiper.realIndex;\n          const slide = swiper.slides[activeIndex];\n          if (!slide) {\n            return;\n          }\n          const slideId = slide.getAttribute('id');\n          const hasShadow = slide.getAttribute('data-shadow') === '1';\n          this.videoElement = slide.querySelector('video');\n          const otherVideos = [...this.node.querySelectorAll('video')].filter(v => v !== this.videoElement);\n          const spotId = slideId.replace('story-slider__slide-', 'story-slider__map-group-');\n          const contentId = slideId.replace('story-slider__slide-', 'story-slider__slider-content-');\n\n          const posControl = this.node.querySelector('.story-slider__slider-controls-pos');\n          if (posControl) {\n            posControl.textContent = `${realIndex + 1} / ${this.number}`;\n          }\n\n          if (hasShadow) {\n            swiper.el.classList.add('swiper-wrapper--shadow');\n          } else {\n            swiper.el.classList.remove('swiper-wrapper--shadow');\n          }\n\n          this.videoControl = this.node.querySelector('.story-slider__slider-controls-play-pause');\n          if (this.videoElement) {\n            this.videoControl.classList.add('story-slider__slider-controls-play-pause--active');\n\n            // Initial slide\n            if (this.paused === null) {\n              this.paused = false;\n              this.videoControl.classList.toggle('story-slider__slider-controls-play-pause--paused', this.paused);\n              this.videoElement.play();\n            } else {\n              if (this.paused) {\n                this.videoElement.pause();\n              } else {\n                this.videoElement.play();\n              }\n              otherVideos.forEach(v => v.pause());\n            }\n          } else {\n            this.videoControl.classList.remove('story-slider__slider-controls-play-pause--active');\n          }\n\n          const spotGroup = document.getElementById(spotId);\n          spotGroup.classList.add('story-slider__map-group--active');\n\n          [...document.querySelectorAll('.story-slider__map-group')]\n            .filter(s => s !== spotGroup)\n            .forEach(s => s.classList.remove('story-slider__map-group--active'));\n\n          const contentGroup = document.getElementById(contentId);\n          contentGroup.classList.add('story-slider__slider-content--active');\n\n          const contentGroupDesktop = document.getElementById(contentId + '-desktop');\n          contentGroupDesktop.classList.add('story-slider__slider-content--active');\n\n          [...document.querySelectorAll('.story-slider__slider-content')]\n            .filter(s => s !== contentGroup && s !== contentGroupDesktop)\n            .forEach(s => s.classList.remove('story-slider__slider-content--active'));\n        }\n      }\n\n    });\n\n    this.node.classList.add('shorts-slider--initialized');\n  }\n\n  ready() {\n    this.init();\n  }\n}\n","export default class C046CommentsRatings {\n  constructor(node, props) {\n    this.node = node;\n    this.props = props;\n  }\n\n  init() {\n    const commentsSections = this.node.querySelectorAll('[data-components-part=\"comments\"]');\n\n    commentsSections.forEach((comments) => {\n      const element = comments;\n      const url = element.dataset.commentsUrl;\n      const adminUrl = element.dataset.adminUrl;\n\n      this.initCommentsIframe(element, adminUrl ? adminUrl : url);\n    });\n\n    const numberSections = this.node.querySelectorAll('[data-component-part=\"numbers\"]');\n\n    numberSections.forEach((numbers) => {\n      const element = numbers;\n      const baseUrl = this.node.querySelector('[data-component-var=\"baseUrl\"]').textContent;\n      const uid = this.node.querySelector('[data-component-var=\"uid\"]').textContent;\n\n      this.initNumbers(element, baseUrl, [uid]);\n    });\n\n  }\n\n  initCommentsIframe(element, url) {\n    var iframeHeight;\n\n    var src = url + '#' + encodeURIComponent(document.location.href);\n    // Append the Iframe into the DOM.\n\n    element.insertAdjacentHTML('beforeend', `\n        <iframe class=\"ratings-comments__iframe\" src=\"${src}\"\n            scrolling=\"no\"\n            frameborder=\"0\">\n        </iframe>\n    `);\n\n    // Setup a callback to handle the dispatched MessageEvent event. In cases where\n    // window.postMessage is supported, the passed event will have .data, .origin and\n    // .source properties. Otherwise, this will only have the .data property.\n    window.addEventListener('message', function (e) {\n      if (!e || !e.data || typeof e.data !== 'string') {\n        return;\n      }\n      const iframe = element.querySelector('.ratings-comments__iframe');\n      var h = Number(e.data.replace(/.*if_height=(\\d+)(?:&|$)/, '$1'));\n\n      if (!isNaN(h) && h > 0 && h !== iframeHeight) {\n        iframeHeight = h;\n        iframe.style.height = `${iframeHeight}px`;\n      }\n    }, false);\n  }\n\n  initNumbers(element, baseUrl, ids) {\n    const query = ids.map(uid => `ids=${uid}`).join('&');\n\n    fetch(baseUrl + 'votes/multi?' + query)\n      .then(response => response.json())\n      .then(data => {\n        ids.forEach(id => {\n          const socialBlock = element;\n          const votesCount = data[id].votes;\n          const commentsCount = data[id].num_comments;\n\n          const votesElement = socialBlock.querySelector('[data-component-part=\"votes\"]');\n          votesElement.textContent = votesCount;\n\n          const commentsElement = socialBlock.querySelector('[data-component-part=\"num_comments\"]');\n          commentsElement.textContent = commentsCount;\n        });\n      });\n  }\n\n\n  ready() {\n    this.init();\n  }\n\n  clear() {\n  }\n\n  cmsRefresh() {\n    this.init();\n  }\n}\n","export class U016SingleSocialMediaPostFacebook {\n  constructor(node, props) {\n    this.node = node;\n    this.props = props;\n    this.loaded = false;\n    this.id = this.node.parentElement.parentElement.dataset.contentUid;\n\n    window.django_privacy_mgmt.addListener(\n      \"change\",\n      this.handleConsentChange.bind(this)\n    );\n  }\n\n  addScript() {\n    if (window.U016SingleSocialMediaPostFacebookScriptLoaded) {\n      return;\n    } else {\n      window.U016SingleSocialMediaPostFacebookScriptLoaded = true;\n    }\n\n    //<script async defer crossorigin=\"anonymous\" src=\"https://connect.facebook.net/de_DE/sdk.js#xfbml=1&version=v20.0\" nonce=\"hRqRjPbX\"></script>\n\n    const scriptEl = document.createElement(\"script\");\n\n    scriptEl.setAttribute(\"async\", \"\");\n    scriptEl.setAttribute(\"defer\", \"\");\n    scriptEl.setAttribute(\"crossorigin\", \"anonymous\");\n    scriptEl.setAttribute(\n      \"src\",\n      \"https://connect.facebook.net/de_DE/sdk.js#xfbml=1&version=v20.0\"\n    );\n    scriptEl.setAttribute(\"nonce\", \"hRqRjPbX\");\n\n    document.body.appendChild(scriptEl);\n  }\n\n  loadPluginContent() {\n    const post = this.node.querySelector(\"._fb-post\");\n    if (post) {\n      post.classList.remove(\"_fb-post\");\n      post.classList.add(\"fb-post\");\n    }\n\n    let editorPlaceholder = this.node.querySelector(\".socialmedia-editor-placeholder\");\n    if (editorPlaceholder) {\n      editorPlaceholder.style.display = \"none\";\n    }\n  }\n\n  isContentApproved() {\n    return (\n      this.node.parentElement.dataset.privacyContentApproved === \"approved\"\n    );\n  }\n\n  ready() {\n    if (this.isContentApproved()) {\n      this.loadPluginContent();\n      this.loaded = true;\n\n      window.setTimeout(() => {\n        this.addScript();\n      }, 250);\n    }\n  }\n\n  handleConsentChange(preferences) {\n    if (\n      window.django_privacy_mgmt.getPreference(\"SOCIAL_MEDIA\") ||\n      window.django_privacy_mgmt.getPreference(\"FACEBOOK_POSTS\") ||\n      preferences[this.id]\n    ) {\n      if (!this.loaded) {\n        if (window.U016SingleSocialMediaPostFacebookScriptLoaded) {\n          window.location.reload();\n        } else {\n          window.setTimeout(() => {\n            this.ready();\n          }, 250);\n        }\n      }\n    }\n  }\n}\n\nexport class U016SingleSocialMediaPostInstagram {\n  constructor(node, props) {\n    this.node = node;\n    this.props = props;\n    this.loaded = false;\n    this.id = this.node.parentElement.parentElement.dataset.contentUid;\n\n    window.django_privacy_mgmt.addListener(\n      \"change\",\n      this.handleConsentChange.bind(this)\n    );\n  }\n\n  addScript() {\n    if (window.U016SingleSocialMediaPostInstagramScriptLoaded) {\n      return;\n    } else {\n      window.U016SingleSocialMediaPostInstagramScriptLoaded = true;\n    }\n\n    //<script async src=\"//www.instagram.com/embed.js\"></script>\n\n    const scriptEl = document.createElement(\"script\");\n\n    scriptEl.setAttribute(\"async\", \"\");\n    scriptEl.setAttribute(\"src\", \"//www.instagram.com/embed.js\");\n\n    document.body.appendChild(scriptEl);\n  }\n\n  loadPluginContent() {\n    const placeholder = this.node.querySelector(\"._instagram-media\");\n    if (placeholder) {\n      placeholder.classList.remove(\"_instagram-media\");\n      placeholder.classList.add(\"instagram-media\");\n    }\n\n    let editorPlaceholder = this.node.querySelector(\".socialmedia-editor-placeholder\");\n    if (editorPlaceholder) {\n      editorPlaceholder.style.display = \"none\";\n    }\n  }\n\n  isContentApproved() {\n    return (\n      this.node.parentElement.dataset.privacyContentApproved === \"approved\"\n    );\n  }\n\n  ready() {\n    if (this.isContentApproved()) {\n      this.loadPluginContent();\n      this.loaded = true;\n      window.setTimeout(() => {\n        this.addScript();\n      }, 250);\n    }\n  }\n\n  handleConsentChange(preferences) {\n    if (\n      window.django_privacy_mgmt.getPreference(\"SOCIAL_MEDIA\") ||\n      window.django_privacy_mgmt.getPreference(\"INSTAGRAM_POSTS\") ||\n      preferences[this.id]\n    ) {\n      if (!this.loaded) {\n        if (window.U016SingleSocialMediaPostInstagramScriptLoaded) {\n          window.location.reload();\n        } else {\n          window.setTimeout(() => {\n            this.ready();\n          }, 250);\n        }\n      }\n    }\n  }\n}\n\nexport class U016SingleSocialMediaPostX {\n  constructor(node, props) {\n    this.node = node;\n    this.props = props;\n    this.loaded = false;\n    this.id = this.node.parentElement.parentElement.dataset.contentUid;\n\n    window.django_privacy_mgmt.addListener(\n      \"change\",\n      this.handleConsentChange.bind(this)\n    );\n  }\n\n  addScript() {\n    if (window.U016SingleSocialMediaPostXScriptLoaded) {\n      return;\n    } else {\n      window.U016SingleSocialMediaPostXScriptLoaded = true;\n    }\n\n    //<script async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\"></script>\n\n    const scriptEl = document.createElement(\"script\");\n\n    scriptEl.setAttribute(\"async\", \"\");\n    scriptEl.setAttribute(\"src\", \"https://platform.twitter.com/widgets.js\");\n    scriptEl.setAttribute(\"charset\", \"utf-8\");\n\n    document.body.appendChild(scriptEl);\n  }\n\n  loadPluginContent() {\n    const placeholder = this.node.querySelector(\"._twitter-tweet\");\n    if (placeholder) {\n      placeholder.classList.remove(\"_twitter-tweet\");\n      placeholder.classList.add(\"twitter-tweet\");\n    }\n\n    let editorPlaceholder = this.node.querySelector(\".socialmedia-editor-placeholder\");\n    if (editorPlaceholder) {\n      editorPlaceholder.style.display = \"none\";\n    }\n  }\n\n  isContentApproved() {\n    return (\n      this.node.parentElement.dataset.privacyContentApproved === \"approved\"\n    );\n  }\n\n  ready() {\n    if (this.isContentApproved()) {\n      this.loadPluginContent();\n      this.loaded = true;\n      window.setTimeout(() => {\n        this.addScript();\n      }, 250);\n    }\n  }\n\n  handleConsentChange(preferences) {\n    if (\n      window.django_privacy_mgmt.getPreference(\"SOCIAL_MEDIA\") ||\n      window.django_privacy_mgmt.getPreference(\"X_POSTS\") ||\n      preferences[this.id]\n    ) {\n      if (!this.loaded) {\n        if (window.U016SingleSocialMediaPostXScriptLoaded) {\n          window.location.reload();\n        } else {\n          window.setTimeout(() => {\n            this.ready();\n          }, 250);\n        }\n      }\n    }\n  }\n}\n\nexport class U016SingleSocialMediaPostLinkedin {\n  constructor(node, props) {\n    this.node = node;\n    this.props = props;\n    this.loaded = false;\n    this.id = this.node.parentElement.parentElement.dataset.contentUid;\n\n    window.django_privacy_mgmt.addListener(\n      \"change\",\n      this.handleConsentChange.bind(this)\n    );\n  }\n\n  loadPluginContent() {\n    const { src, height } = this.node.dataset;\n    const placeholder = this.node.querySelector(\".linkedin-placeholder-div\");\n\n    if (placeholder) {\n      placeholder.innerHTML = `\n            <iframe\n                src=\"${src}\"\n                height=\"${height}\"\n                width=\"504\"\n                frameborder=\"0\"\n                allowfullscreen=\"\"\n                title=\"Eingebetteter Beitrag\"\n                class=\"privacy-content\"\n            ></iframe>`;\n    }\n\n    let editorPlaceholder = this.node.querySelector(\".socialmedia-editor-placeholder\");\n    if (editorPlaceholder) {\n      editorPlaceholder.style.display = \"none\";\n    }\n  }\n\n  isContentApproved() {\n    return (\n      this.node.parentElement.dataset.privacyContentApproved === \"approved\"\n    );\n  }\n\n  ready() {\n    if (this.isContentApproved()) {\n      this.loadPluginContent();\n      this.loaded = true;\n    }\n  }\n\n  handleConsentChange(preferences) {\n    if (\n      window.django_privacy_mgmt.getPreference(\"SOCIAL_MEDIA\") ||\n      window.django_privacy_mgmt.getPreference(\"LINKEDIN_POSTS\") ||\n      preferences[this.id]\n    ) {\n      if (!this.loaded) {\n        window.setTimeout(() => {\n          this.ready();\n        }, 250);\n      }\n    }\n  }\n}\n","export default class CookieBanner {\n  constructor(node, props) {\n    this.node = node;\n    this.props = props;\n  }\n\n  COOKIE_BANNER_COOKIE_NAME = 'cookielaw_accepted';\n  COOKIE_BANNER_MINIMIZE_COOKIE_NAME = 'cookielaw_minimized';\n  COOKIE_BANNER_COOKIE_LIFETIME = 182; // 6 months\n\n  init() {\n    const settingsButton = this.node.querySelector('[data-component-part=\"settings\"]');\n    const acceptButton = this.node.querySelector('[data-component-part=\"accept-all\"]');\n    const rejectButton = this.node.querySelector('[data-component-part=\"reject-all\"]');\n    const minimizeButton = this.node.querySelector('[data-component-part=\"minimize\"]');\n\n    window.document.body.classList.add('cookie-padding');\n\n    if (Cookies.get(this.COOKIE_BANNER_MINIMIZE_COOKIE_NAME)) {\n      window.document.body.classList.add('cookie-padding--minimized');\n    }\n\n    settingsButton.addEventListener('click', () => {\n      window.django_privacy_mgmt.showSettings();\n    });\n\n    acceptButton.addEventListener('click', () => {\n      window.django_privacy_mgmt.setAcceptAll();\n      this.hideBanner();\n    });\n\n    rejectButton.addEventListener('click', () => {\n      window.django_privacy_mgmt.setRejectAll();\n      this.hideBanner();\n    });\n\n    minimizeButton.addEventListener('click', () => {\n      if (window.document.body.classList.contains('cookie-padding--minimized')) {\n        window.document.body.classList.remove('cookie-padding--minimized');\n        Cookies.remove(this.COOKIE_BANNER_MINIMIZE_COOKIE_NAME);\n      } else {\n        window.document.body.classList.add('cookie-padding--minimized');\n        Cookies.set(this.COOKIE_BANNER_MINIMIZE_COOKIE_NAME, 'true', {\n          expires: this.COOKIE_BANNER_COOKIE_LIFETIME\n        });\n      }\n    });\n\n    window.django_privacy_mgmt.addListener('change', () => {\n      this.hideBanner();\n    });\n\n    const hide_banner = Cookies.get(this.COOKIE_BANNER_COOKIE_NAME);\n    if(hide_banner === this.props.version_hash) {\n      this.hideBanner();\n    }\n  }\n\n  hideBanner() {\n    this.node.classList.add('banner-cookie--hidden');\n    window.document.body.classList.remove('cookie-padding');\n    Cookies.set(this.COOKIE_BANNER_COOKIE_NAME, this.props.version_hash, {\n      expires: this.COOKIE_BANNER_COOKIE_LIFETIME\n    });\n  }\n\n  ready() {\n    this.init();\n  }\n}\n","export default function setupYoutubeAndGoogleMapsContent() {\n  // Accept specific content type or instance (all or a single instance of a youtube video or google maps)\n  $('.accept-content-btn').on('click', function () {\n    const container = $(this).closest('.privacy-content-container');\n    const content_uid = container.attr('data-content-uid');\n    const content_category = container.attr('data-content-category');\n    const checkbox_field = container.find('.accept-content-checkbox');\n    if (checkbox_field.prop('checked')) {\n      django_privacy_mgmt.setPreference(content_category, true);\n    } else {\n      django_privacy_mgmt.setPreference(content_uid, true);\n    }\n    // Reinitialize placeholders\n    initPlaceholders();\n  });\n\n  const settingsButtons = document.querySelectorAll(\".js-cookie-settings\");\n  settingsButtons.forEach((settingsButton) => {\n    settingsButton.addEventListener(\"click\", () => {\n      window.django_privacy_mgmt.showSettings();\n    });\n  });\n\n  function initPlaceholders() {\n    // Show the privacy contents (youtube videos and google maps instances) or the placeholders\n    $('.privacy-content-container').each(function () {\n      const content_uid = $(this).attr('data-content-uid');\n      const content_category = $(this).attr('data-content-category');\n      const privacy_content = $(this).find('.privacy-content');\n      const placeholder = $($(this).find('.privacy-content-placeholder-wrapper'));\n      if (isContentApproved(content_category, content_uid)) {\n        $(privacy_content).attr('data-privacy-content-approved', 'approved');\n        $(privacy_content).trigger('privacychange');\n        privacy_content.show();\n        placeholder.hide();\n        if (content_category === 'GOOGLE_MAPS') {\n          const google_maps_url = $(this).attr('data-google-maps-url');\n          if (google_maps_url) {\n            $.getScript(google_maps_url);\n          }\n        }\n      } else {\n        placeholder.show();\n      }\n    });\n  }\n\n\n  function isContentApproved(content_category, content_uid) {\n    const userIsAuthenticated = Boolean($('.cms-toolbar').length);\n    return (userIsAuthenticated\n      || django_privacy_mgmt.getPreference(content_category)\n      || django_privacy_mgmt.getPreference(content_uid))\n  }\n\n  django_privacy_mgmt.addListener('change', initPlaceholders)\n  initPlaceholders();\n}\n","export default class Chatbot {\n  constructor(node, props) {\n    this.node = node;\n    this.props = props;\n  }\n\n  async init() {\n    this.focussed = false;\n    this.input = this.node.querySelector(\"input\");\n    this.input.addEventListener(\"keypress\", (e) => {\n      if (e.key === \"Enter\") {\n        this.commitSearch();\n      }\n    });\n    this.input.addEventListener(\"focus\", () => {\n      this.focussed = true;\n      this.input.setAttribute(\"placeholder\", \"\");\n    });\n\n    this.button = this.node.querySelector(\"button\");\n    this.button.addEventListener(\"click\", () => {\n      this.commitSearch();\n    });\n\n    this.texts = [];\n\n    if (this.props.placeholder_text_1) {\n      this.texts.push(this.props.placeholder_text_1);\n    }\n    if (this.props.placeholder_text_2) {\n      this.texts.push(this.props.placeholder_text_2);\n    }\n    if (this.props.placeholder_text_3) {\n      this.texts.push(this.props.placeholder_text_3);\n    }\n\n    this.cyclePlaceholderTexts();\n  }\n\n  async cyclePlaceholderTexts() {\n    for (const text of this.texts) {\n      if (this.focussed) {\n        this.input.setAttribute(\"placeholder\", \"\");\n        return;\n      }\n      await this.writePlaceholderText(text);\n      await new Promise((resolve) => setTimeout(resolve, 3000));\n    }\n    await this.cyclePlaceholderTexts();\n  }\n\n  async writePlaceholderText(text) {\n    await this.typeCharacter(text, 0);\n  }\n\n  async typeCharacter(text, index) {\n    if (this.input && !this.focussed) {\n      this.input.setAttribute(\"placeholder\", text.substring(0, index + 1));\n      if (index < text.length - 1) {\n        await new Promise((resolve) => setTimeout(resolve, 50));\n        await this.typeCharacter(text, index + 1);\n      }\n    }\n  }\n\n  commitSearch() {\n    const message = this.input.value.trim();\n\n    if (\n      typeof window.neurabot !== \"undefined\" &&\n      typeof window.neurabot.openWindowAndSendMessage === \"function\"\n    ) {\n      window.neurabot.openWindowAndSendMessage(message);\n    } else {\n      console.error(\n        \"window.neurabot is not defined or openWindowAndSendMessage function is not available.\",\n      );\n    }\n\n    this.input.value = \"\";\n  }\n\n  ready() {\n    this.init();\n  }\n\n  cmsRefresh() {\n    this.init();\n  }\n}\n","/* global CMS */\nimport 'vite/modulepreload-polyfill';\n\nimport './bootstrap';\nimport './tabs';\nimport './ownselect';\nimport './modules/focusWithoutScrolling';\nimport './scroll-page-event';\nimport './swiper';\nimport 'bootstrap-accessibility-plugin';\nimport './slick.js';\nimport './fancybox.js';\nimport './scrollbar.js';\n\nimport NavButton from \"../../components/10-atoms/nav-button/nav-button.js\";\nimport NavPanel from \"../../components/20-molecules/nav-panel/nav-panel.js\";\nimport LazyVideo from \"../../components/20-molecules/lazy-video/lazy-video.js\";\nimport LazyVimeo from \"../../components/20-molecules/lazy-vimeo/lazy-vimeo.js\";\nimport BackgroundVideo from \"../../components/40-modules/background-video/background-video.js\";\nimport GeneralVideo from '../../components/20-molecules/general-video/general-video.js';\nimport Tabs from \"../../components/40-modules/tabs/tabs.js\";\nimport {Slider} from \"./modules/slider.js\";\nimport {config as listSliderConfig} from \"../../components/30-organisms/list-slider/list-slider.js\";\nimport {config as carouselConfig} from \"../../components/30-organisms/carousel/carousel.js\";\nimport {Flipster} from \"./modules/flipster.js\";\nimport {initAnisMap} from \"./modules/anis-map.js\"\nimport {\n  config as coverFlowCarouselConfig\n} from \"../../components/30-organisms/coverflow-carousel/coverflow-carousel.js\";\nimport ContrastMode from \"../../components/20-molecules/nav-panel/contrast-mode.js\";\nimport FontSettings from \"../../components/20-molecules/nav-panel/font-settings.js\";\nimport {HideAfterScroll, SmoothScroll} from \"../../components/20-molecules/scrollindicator/scrollindicator.js\";\nimport {Banner} from \"../../components/40-modules/banner/banner.js\";\nimport Gallery from \"./modules/js-gallery-navigation.js\";\nimport GroupedGallery from \"./modules/grouped-gallery.js\";\nimport {Zoomable} from \"./modules/zoomable.js\";\nimport {initAccessibilitySlider} from \"./modules/accessibility_slider.js\";\nimport {initGoogleMaps} from \"./modules/locations.js\";\nimport {initDynamicLayers} from './modules/dynamic-layers.js';\nimport {initDynamicLayersB} from \"./modules/dynamic-layers-variant-b.js\";\nimport {initFlipCards} from './modules/flipcards.js';\nimport Navigation from \"../../components/40-modules/navigation/navigation.js\";\nimport LangSwitcher from \"../../components/20-molecules/lang-switcher/lang-switcher.js\";\n\nimport Loader from \"./loader.js\";\nimport U010AudioPlayer from \"./components/u010-audio-player.js\";\nimport C001Accordion from \"./components/001-accordion.js\";\nimport C042ShortsSlider from \"./components/042-shorts-slider.js\";\nimport C025Quicklinks from \"./components/025-quicklinks.js\";\nimport U015Hotspots from \"./components/u015-hotspots.js\";\nimport C044StorySlider from \"./components/044-story-slider.js\";\nimport C046CommentsRatings from \"./components/046-comments.js\";\nimport {\n  U016SingleSocialMediaPostFacebook,\n  U016SingleSocialMediaPostInstagram,\n  U016SingleSocialMediaPostX,\n  U016SingleSocialMediaPostLinkedin\n} from \"./components/u016-single-social-media-post.js\";\nimport CookieBanner from \"./components/cookiebanner.js\";\nimport setupYoutubeAndGoogleMapsContent from \"./modules/privacy.js\";\nimport Chatbot from \"./components/chatbot.js\";\n\ndocument.documentElement.classList.add((('ontouchstart' in document.documentElement) ? 'touch' : 'no-touch'));\n\n/**\n * Components\n */\n\nfunction init(refresh = false) {\n  if(!refresh) {\n    const loader = new Loader();\n\n    loader.register('U010AudioPlayer', U010AudioPlayer);\n    loader.register('C001Accordion', C001Accordion);\n    loader.register('C042ShortsSlider', C042ShortsSlider);\n    loader.register('C046CommentsRatings', C046CommentsRatings);\n    loader.register('U015Hotspots', U015Hotspots);\n    loader.register('U016SingleSocialMediaPostFacebook', U016SingleSocialMediaPostFacebook);\n    loader.register('U016SingleSocialMediaPostInstagram', U016SingleSocialMediaPostInstagram);\n    loader.register('U016SingleSocialMediaPostX', U016SingleSocialMediaPostX);\n    loader.register('U016SingleSocialMediaPostLinkedin', U016SingleSocialMediaPostLinkedin);\n    loader.register('C025Quicklinks', C025Quicklinks);\n    loader.register('C044StorySlider', C044StorySlider);\n    loader.register('CookieBanner', CookieBanner);\n    loader.register('Chatbot', Chatbot);\n\n    loader.init(window.document);\n\n    document.addEventListener('DOMContentLoaded', function () {\n      loader.ready();\n    });\n\n    window.addEventListener(\"resize\", function () {\n      loader.windowResize();\n    });\n\n    if (window.CMS) {\n      CMS.$(window).on('cms-content-refresh', function () {\n        loader.cmsRefresh();\n      });\n    }\n  }\n\n  setupYoutubeAndGoogleMapsContent();\n\n  //\n  // Background Video\n  //\n  const videoContainer = $('[data-video-container]');\n  if (videoContainer.length > 0) {\n    videoContainer.each((index, element) => new BackgroundVideo(element, {}));\n  }\n\n  //\n  // YouTube Lazyload/embed\n  //\n  const youtubeLazyElements = $('.youtube-lazy');\n\n  if (youtubeLazyElements.length > 0) {\n    youtubeLazyElements.each((index, element) => new LazyVideo(element));\n  }\n\n  //\n  // General Video\n  //\n  const generalVideoElements = $('.general-video');\n\n  if (generalVideoElements.length > 0) {\n    generalVideoElements.each((index, element) => new GeneralVideo(element));\n  }\n\n  //\n  // Vimeo Lazyload/embed\n  //\n  const vimeoLazyElements = $('.vimeo-lazy');\n\n  if (vimeoLazyElements.length > 0) {\n    vimeoLazyElements.each((index, element) => new LazyVimeo(element));\n  }\n\n  //\n  // Tabs\n  //\n  const tabsContainers = $('[data-tabs]');\n\n  if (tabsContainers.length > 0) {\n    tabsContainers.each((index, element) => new Tabs(element));\n  }\n\n  //\n  // Default Slider (not bootstraps carousel)\n  //\n  const sliderContainer = $('[data-slider]');\n\n  if (sliderContainer.length > 0) {\n    sliderContainer.each((index, element) => Slider(element, listSliderConfig));\n  }\n  //\n  // Carousel\n  //\n  const carouselContainer = $('[data-carousel]');\n\n  if (carouselContainer.length > 0) {\n    carouselContainer.each((index, element) => Slider(element, carouselConfig));\n  }\n\n  //\n  // Coverflow Slider\n  //\n  const coverflowSliderContainer = $('[data-coverflow]');\n\n  if (coverflowSliderContainer.length > 0) {\n    coverflowSliderContainer.each((index, element) => Flipster(element, coverFlowCarouselConfig));\n  }\n\n  // const accessibilityNavigation = $('[data-accessnav]')\n  // if (accessibilityNavigation.length > 0) {\n  //   import(/* webpackChunkName: \"linguatech\" */'~js/vendor/readpremium15')\n  // }\n\n  /**\n   * Navigation Parts\n   */\n  new Navigation({\n    navigationSelector: '[data-navigation]',\n    navigationContentSelector: '[data-navigation-content]',\n    tutorialLayerSelector: '[data-layer-tutorial]',\n    defaultLayerSelector: '[data-layer-default]'\n  });\n\n  NavButton({ buttonSelector: '[data-nav-button]', handleAttr: 'data-nav-button' })\n\n  $('.lang-switcher, .nav-lang-switcher').each((index, node) => {\n    return new LangSwitcher(node);\n  });\n\n  $('[data-nav-panel]').each((index, node) => {\n    const element = $(node);\n\n    return new NavPanel(element, element.attr('data-nav-panel'));\n  });\n\n  ContrastMode($('[data-contrast]'));\n  FontSettings($('[data-font]'));\n\n  //\n  // Smoothscroll\n  //\n  const scrollindicator = $('.scrollindicator');\n\n  if (scrollindicator.length > 0) {\n    SmoothScroll();\n    HideAfterScroll(scrollindicator);\n  }\n\n  //\n  // Small Banner\n  //\n  const banner = $('.banner');\n\n  if (banner.length > 0) {\n    Banner();\n  }\n  //\n  // Gallery JS\n  //\n  const galleryElements = $('.gallery-wrap');\n\n  if (galleryElements.length > 0) {\n    galleryElements.each((index, element) => {\n      if (element.classList.contains('gallery-wrap--with-groups')) {\n        return new GroupedGallery(element);\n      } else {\n        return new Gallery(element);\n      }\n    });\n  }\n  //\n  // Zoomable\n  //\n  const zoomableElement = $('.js-zoomable-link');\n  if (zoomableElement.length > 0) {\n    Zoomable();\n  }\n  //\n  // Slider\n  //\n  const aSliderElements = document.querySelectorAll('.teaser-slider-container');\n  if (aSliderElements.length > 0) {\n    aSliderElements.forEach((element) => {\n      initAccessibilitySlider(element);\n    });\n  }\n\n  //\n  // Locations\n  //\n  const locationElements = $('.js-aldryn-locations');\n  if (locationElements.length > 0) {\n    initGoogleMaps();\n  }\n\n  //\n  // ReadSpeaker Extension, close focus element by space and enter\n  //\n  const readSpeakerButton = $('.rsbtn');\n\n  if (readSpeakerButton.length > 0) {\n    $('.rsbtn').on('keydown', '.rsbtn_player_item', function (event) {\n      if (event.which === 32 || event.which === 13) {\n        event.preventDefault();\n        $(this).click();\n      }\n    });\n  }\n  //\n  // Quicklink Extension\n  //\n  const squareQuickModule = $('.quick-link-wrapper.small');\n\n  if (squareQuickModule.length > 0) {\n    $('.quick-link-wrapper.small').each(function () {\n      // Cache the highest\n      var highestBox = 0;\n\n      // Select and loop the elements you want to equalise\n      $('.quick-link-element', this).each(function () {\n        // If this box is higher than the cached highest then store it\n        if ($(this).height() > highestBox) {\n          highestBox = $(this).height();\n        }\n      });\n      // Set the height of all those children to whichever was highest\n      $('.quick-link-element', this).height(highestBox);\n    });\n    $(window).resize(function () {\n      $('.quick-link-wrapper.small').each(function () {\n        $('.quick-link-element', this).removeAttr('style');\n        // Cache the highest\n        var newHighestBox = 0;\n\n        // Select and loop the elements you want to equalise\n        $('.quick-link-element', this).each(function () {\n          // If this box is higher than the cached highest then store it\n          if ($(this).height() > newHighestBox) {\n            newHighestBox = $(this).height();\n          }\n        });\n        // Set the height of all those children to whichever was highest\n        $('.quick-link-element', this).height(newHighestBox);\n      });\n    });\n  }\n\n  const anismaps = document.querySelectorAll('[data-anismap]')\n\n  if (anismaps.length > 0) {\n    anismaps.forEach((element) => {\n      initAnisMap(element);\n    });\n  }\n\n  const printButtons = document.querySelectorAll('[data-print-button]');\n\n  if (printButtons.length > 0) {\n    printButtons.forEach((element) => {\n      element.addEventListener('click', (e) => {\n        e.preventDefault();\n        window.print();\n      });\n    });\n  }\n\n  initDynamicLayers();\n  initDynamicLayersB();\n  initFlipCards();\n}\n\ninit();\n\ntry {\n  CMS.$(window).on('cms-content-refresh', () => { init(true); });\n} catch (e) {\n}\n"],"names":["$","transitionEnd","el","transEndEventNames","name","duration","called","$el","callback","dismiss","Alert","e","$this","selector","$parent","removeElement","Plugin","option","data","old","Button","element","options","state","d","val","changed","$input","$btn","Collapse","hasWidth","activesData","actives","startEvent","dimension","complete","scrollSize","i","$element","getTargetFromTrigger","$trigger","isOpen","href","target","$target","backdrop","toggle","Dropdown","getParent","clearMenus","relatedTarget","isActive","desc","$items","index","Modal","_relatedTarget","that","transition","animate","doAnimate","callbackRemove","modalIsOverflowing","fullWindowWidth","documentElementRect","bodyPad","scrollbarWidth","actualPadding","calculatedPadding","padding","scrollDiv","showEvent","Affix","scrollHeight","height","offsetTop","offsetBottom","scrollTop","position","targetHeight","initializing","colliderTop","colliderHeight","offset","affix","affixType","$spy","ScrollSpy","offsetMethod","offsetBase","$href","a","maxScroll","offsets","targets","activeTarget","active","DISALLOWED_ATTRIBUTES","uriAttrs","ARIA_ATTRIBUTE_PATTERN","DefaultWhitelist","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attr","allowedAttributeList","attrName","regExp","value","l","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","whitelistKeys","elements","len","elName","attributeList","whitelistedAttributes","j","len2","Tooltip","type","triggers","trigger","eventIn","eventOut","dataAttributes","dataAttr","defaults","key","obj","self","inDom","$tip","tipId","placement","autoToken","autoPlace","pos","actualWidth","actualHeight","orgPlacement","viewportDim","calculatedOffset","prevHoverState","width","marginTop","marginLeft","props","delta","isVertical","arrowDelta","arrowOffsetPosition","title","$e","isBody","elRect","isSvg","elOffset","scroll","outerDims","viewportPadding","viewportDimensions","topEdgeOffset","bottomEdgeOffset","leftEdgeOffset","rightEdgeOffset","o","prefix","Popover","content","typeContent","generateArrays","tabs","generator","panels","addListeners","clickEventListener","keydownEventListener","keyupEventListener","event","tab","activateTab","keys","focusLastTab","focusFirstTab","determineOrientation","determineDeletable","vertical","tablist","proceed","switchTabOnArrowPress","pressed","direction","setFocus","deactivateTabs","controls","t","p","deleteTab","panel","determineDelay","hasDelay","delay","delayValue","x","selElmnt","b","c","y","k","s","h","condition","closeAllSelect","elmnt","arrNo","isMsie","focusWithoutScrolling","first","smoothScrollIntoView","stickyHeader","cmsToolbar","headerOffset","getOuterHeight","offsetPosition","pageOffset","pageelementOffset","styles","margin","global","factory","exports","module","this","doc","win","Dom7","arr","context","els","tempParent","html","toCreate","unique","uniqueArray","addClass","className","classes","removeClass","hasClass","toggleClass","attrs","arguments$1","removeAttr","dataKey","transform","elStyle","on","assign","args","eventType","targetSelector","listener","capture","handleLiveEvent","eventData","parents","handleEvent","events","event$1","off","handlers","handler","evt","dataIndex","dom","fireCallBack","outerWidth","includeMargins","outerHeight","box","body","clientTop","clientLeft","scrollLeft","css","prop","each","text","is","compareWith","child","eq","length","returnIndex","append","newChild","tempDiv","prepend","next","nextAll","nextEls","prev","prevAll","prevEls","parent","closest","find","foundElements","found","children","childNodes","remove","add","toAdd","Methods","methodName","Utils","object","axis","matrix","curTransform","transformMatrix","curStyle","url","query","urlToParse","params","param","paramsPart","len$1","to","nextSource","keysArray","nextIndex","nextKey","Support","testDiv","style","supportsPassive","opts","Browser","isSafari","ua","SwiperClass","eventName","staticAccessors","priority","method","onceHandler","eventHandler","eventsArray","instanceParams","instance","moduleName","modulesParams","moduleParams","modulePropName","moduleProp","moduleEventName","components","Class","m","updateSize","swiper","updateSlides","$wrapperEl","swiperSize","rtl","wrongRTL","isVirtual","previousSlidesLength","slides","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","slidesNumberEvenToRows","slideSize","slidesPerColumn","slidesPerRow","numFullColumns","slide","newSlideOrderIndex","column","row","groupIndex","slideStyles","currentTransform","currentWebKitTransform","paddingLeft","paddingRight","marginRight","boxSizing","paddingTop","paddingBottom","marginBottom","boxSizing$1","newSlidesGrid","i$1","slidesGridItem","i$2","slidesGridItem$1","allSlidesSize","slideSizeValue","allSlidesOffset","snap","snapIndex","updateAutoHeight","speed","activeSlides","newHeight","updateSlidesOffset","updateSlidesProgress","translate","offsetCenter","slideProgress","slideBefore","slideAfter","isVisible","updateProgress","translatesDiff","progress","isBeginning","isEnd","wasBeginning","wasEnd","updateSlidesClasses","activeIndex","realIndex","activeSlide","nextSlide","prevSlide","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","updateClickedSlide","slideFound","update","getTranslate","currentTranslate","setTranslate","byController","z","newProgress","minTranslate","maxTranslate","setTransition","transitionStart","runCallbacks","dir","transitionEnd$1","transition$1","slideTo","internal","slideIndex","slideToLoop","newIndex","slideNext","animating","slidePrev","rtlTranslate","normalize","normalizedTranslate","normalizedSnapGrid","prevSnap","prevIndex","slideReset","slideToClosest","currentSnap","nextSnap","slideToClickedSlide","slidesPerView","slideToIndex","loopCreate","blankSlidesNum","blankNode","prependSlides","appendSlides","loopFix","loopedSlides","allowSlidePrev","allowSlideNext","snapTranslate","diff","slideChanged","slideChanged$1","loopDestroy","loop","setGrabCursor","moving","unsetGrabCursor","grabCursor","appendSlide","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","manipulation","Device","device","windows","android","ipad","ipod","iphone","osVersionArr","metaViewport","onTouchStart","touches","startX","startY","edgeSwipeDetection","edgeSwipeThreshold","preventDefault","shouldPreventDefault","onTouchMove","pageX","pageY","diffX","diffY","touchAngle","disableParentSwiper","resistanceRatio","onTouchEnd","touchEndTime","timeDiff","currentPos","lastMoveEvent","velocityEvent","distance","time","momentumDuration","momentumDistance","newPosition","doBounce","afterBouncePosition","bounceAmount","needsLoopFix","stopIndex","groupSize","ratio","onResize","newTranslate","onClick","attachEvents","touchEvents","wrapperEl","passiveListener","detachEvents","setBreakpoint","initialized","breakpoints","breakpoint","breakpointOnlyParams","paramValue","breakpointParams","directionChanged","needsReLoop","getBreakpoint","points","point","addClasses","classNames","suffixes","suffix","removeClasses","loadImage","imageEl","src","srcset","sizes","checkForComplete","image","onReady","preloadImages","images","checkOverflow","wasLocked","checkOverflow$1","prototypes","extendedDefaults","Swiper","prototypeGroup","protoMethod","moduleParamName","swiperParams","swipers","containerEl","newParams","touch","desktop","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","slideEl","deleteInstance","cleanStyles","newDefaults","Device$1","Support$1","Browser$1","Resize","Observer","ObserverFunc","observer","mutations","observerUpdate","containerParents","Observer$1","Virtual","force","ref","slidesPerGroup","centeredSlides","ref$1","addSlidesBefore","addSlidesAfter","ref$2","previousFrom","previousTo","previousSlidesGrid","renderSlide","previousOffset","offsetProp","slidesAfter","slidesBefore","from","onRendered","slidesToRender","prependIndexes","appendIndexes","$slideEl","numberOfNewSlides","cache","newCache","cachedIndex","Virtual$1","overwriteParams","Keyboard","kc","inView","windowWidth","windowHeight","swiperOffset","swiperCoord","Keyboard$1","isEventSupported","isSupported","Mousewheel","PIXEL_STEP","LINE_HEIGHT","PAGE_HEIGHT","sX","sY","pX","pY","rtlFactor","Mousewheel$1","Navigation","$nextEl","$prevEl","Navigation$1","isHidden","Pagination","current","total","bullets","firstIndex","lastIndex","midIndex","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","progressbarDirection","scale","scaleX","scaleY","paginationHTML","numberOfBullets","Pagination$1","number","Scrollbar","scrollbar","dragSize","trackSize","$dragEl","newSize","newPos","divider","moveDivider","dragStartPos","positionRatio","touchEventsTouch","touchEventsDesktop","activeListener","$swiperEl","Scrollbar$1","Parallax","opacity","currentOpacity","currentScale","parallaxEl","$parallaxEl","parallaxDuration","Parallax$1","Zoom","x1","y1","x2","y2","zoom","gesture","velocity","scaledWidth","scaledHeight","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","slideWidth","slideHeight","Zoom$1","Lazy","loadInDuplicate","$images","imageIndex","$imageEl","background","slideOriginalIndex","originalSlide","duplicatedSlide","slideExist","elIndex","amount","maxIndex","minIndex","Lazy$1","Controller","binarySearch","guess","array","i1","i3","setTranslate$1","controlled","multiplier","controlledTranslate","setControlledTranslate","setControlledTransition","Controller$1","a11y","role","label","$targetEl","message","notification","bulletEl","$bulletEl","A11y","History","history","pathArray","part","currentState","slideHistory","History$1","HashNavigation","newHash","activeSlideHash","hash","slideHash","HashNavigation$1","Autoplay","$activeSlideEl","Autoplay$1","Fade","tx","ty","slideOpacity","eventTriggered","triggerEvents","EffectFade","Cube","swiperWidth","swiperHeight","isHorizontal","wrapperRotate","$cubeShadowEl","slideAngle","round","tz","shadowBefore","shadowAfter","shadowAngle","scale1","scale2","zFactor","EffectCube","Flip","rotate","rotateY","rotateX","EffectFlip","Coverflow","center","slideOffset","offsetMultiplier","translateZ","slideTransform","$shadowBeforeEl","$shadowAfterEl","ws","EffectCoverflow","Thumbs","thumbsParams","thumbsSwiper","clickedIndex","clickedSlide","currentIndex","initial","currentThumbsIndex","newThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","Thumbs$1","thumbs","Slick","instanceUid","settings","_","dataSettings","slider","markup","addBefore","targetLeft","animProps","now","asNavFor","dot","newSlides","numOfSlides","originalSlides","slidesPerSection","forceUpdate","targetBreakpoint","respondToWidth","triggerBreakpoint","sliderWidth","dontAnimate","indexOffset","unevenOffset","navigables","prevNavigable","n","refresh","filter","$sf","breakPoint","counter","pagerQty","verticalHeight","verticalOffset","targetSlide","coef","indexes","max","slidesTraversed","swipedSlide","centerOffset","creation","numDotGroups","tabControlIndexes","slideControlIndex","ariaButtonControl","mappedSlideIndex","loadRange","cloneRange","rangeStart","rangeEnd","loadImages","imagesScope","imageSource","imageSrcSet","imageSizes","imageToLoad","$slides","$currentSlide","tryCount","$imgsToLoad","lastVisibleIndex","currentBreakpoint","responsiveSettings","removeBefore","removeAll","positionProps","item","opt","bodyStyle","allSlides","remainder","evenCoef","infiniteCount","targetElement","sync","animSlide","oldSlide","slideLeft","navTarget","xDist","yDist","swipeAngle","slideCount","curLeft","swipeDirection","swipeLength","positionOffset","verticalSwipeLength","fromBreakpoint","ret","window","document","undefined","H","W","D","F","IE","didUpdate","isTouch","isQuery","isString","str","isPercentage","isScrollable","getScalar","orig","dim","getValue","group","rez","hrefParts","coming","action","clear","set","stop","start","router","onlyAbsolute","wrap","anyway","viewport","locked","code","deltaX","deltaY","canScroll","helper","v","img","jqXHR","textStatus","iframe","cnt","previous","placeholder","scrolling","embed","steps","canShrink","canExpand","skin","inner","minWidth","minHeight","maxWidth","maxHeight","scrollOut","wMargin","hMargin","wPadding","hPadding","wSpace","hSpace","origWidth","origHeight","origMaxWidth","origMaxHeight","width_","height_","maxWidth_","maxHeight_","fx","wrapSpace","skinSpace","startPos","effect","elastic","endPos","field","scrollV","scrollH","offsetWidth","overlay","run","what","idx","relType","relVal","w1","w2","elem","fixed","calculateScrollbarWidth","navButton","buttonActiveVariant","mobileBreakpoint","onOpenNavigation","button","$lastActiveMenuItem","onCloseNavigation","NavButton","buttonSelector","handleAttr","node","eventHandle","NavPanel","handle","sourceNode","keyCode","selectableElements","lastElement","siteHeader","LazyVideo","scriptUrl","scriptElement","container","thisFunction","videoPos","containerHeight","_paq","customPoster","playButton","handlePlay","isValidKey","LazyVimeo","func","headerHeight","scrollBottom","BackgroundVideo","config","autoplayPromise","videoControlIcon","videoControlLabel","iconName","icon","GeneralVideo","Tabs","targetContained","targetButton","paneId","buttonNode","pane","selectedButton","orientation","buttonIndex","defaultConfig","setCarouselControlPosition","slick","controlPos","setHiddenAttributeOnSlides","Slider","customConfig","useElements","prevTopic","nextTopic","slidesShown","P","L","E","M","T","X","I","f","r","u","g","w","C","Flipster","controlPrev","controlNext","initAnisMap","anisMapInstance","initLegend","initClearSearch","legend","fetchUrl","response","layer","legenddiv","svg","titlediv","pinId","clearButton","searchInput","mapContainer","registeredInModuleLoader","OldCookies","api","extend","result","attributes","decode","init","converter","stringifiedAttributes","attributeName","get","json","jar","cookies","parts","cookie","ContrastMode","switchMode","styleNode","styleNodeCustom","styleNodeDsg","styleSources","styleSourcesCustom","styleSourcesDsg","Cookies","styleSrc","styleSrcCustom","styleSrcDsg","FontSettings","SmoothScroll","HideAfterScroll","disabledClass","scrollHandling","Banner","banner","threshold","navPanels","Gallery","newPageBound","bound","thatInner","template","GroupedGallery","rowPos","rowNum","rows","_a","_b","Zoomable","zoomablesPilot","nonModalElements","isFocusLocked","triggeringElement","imageCaption","pressImageCaption","dataCaption","imgAlt","dataAlt","bildPos","isObject","ssrDocument","getDocument","ssrWindow","id","getWindow","makeReactive","proto","items","arrayFlat","res","arrayFilter","arrayUnique","qsa","deleteProps","nextTick","getComputedStyle","isNode","noExtend","setCSSProperty","varName","varValue","animateCSSModeScroll","targetPosition","side","startPosition","startTime","isOutOfBound","easeProgress","currentPosition","support","calcSupport","getSupport","deviceCached","calcDevice","userAgent","platform","screenWidth","screenHeight","macos","iPadScreens","getDevice","overrides","browser","calcBrowser","getBrowser","emit","animationFrame","resizeHandler","createObserver","entries","newWidth","contentBoxSize","contentRect","removeObserver","orientationChangeHandler","extendParams","observers","attach","destroy","eventsEmitter","getDirectionLabel","property","getDirectionPropertyValue","gridEnabled","shouldResetSlideSize","clientWidth","maxSnap","addToSnapGrid","addToSlidesGrid","backFaceHiddenClass","hasClassBackfaceClassAdded","getSlideByIndex","originalSlideProgress","skip","getSwiperTranslate","translateTo","translateBounds","isH","transitionEmit","step","indexAsNumber","enabled","normalizedGrid","normalizedGridNext","perGroup","increment","prevSnapIndex","$selector","closestElement","base","__closestFrom","swipingClassHasValue","eventPath","noSwipingSelector","isTargetShadow","targetTouch","pathTree","rewindFirstIndex","rewindLastIndex","onScroll","dummyEventAttached","dummyEventListener","domMethod","swiperMethod","events$1","isGridEnabled","wasMultiRow","isMultiRow","wasEnabled","wasModuleEnabled","isModuleEnabled","isEnabled","currentHeight","minRatio","prepareClasses","resultClasses","slidesOffsetBefore","lastSlideIndex","lastSlideRightEdge","defaults$2","moduleExtendParams","allModulesParams","mod","min","cls","updates","view","exact","getWrapperSelector","wrapper","modules","pageUpDown","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","enable","disable","createElementIfNotDefined","originalParams","checkProps","getEl","toggleEl","disabled","onPrevClick","onNextClick","_s","targetEl","classesToSelector","pfx","bulletSize","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletActiveClass","render","onHashChange","setHash","initAccessibilitySlider","swiperId","Locations","markers","geocode","marker","geocoder","results","status","layerSources","infoWindow","modal","mode","destination","routers","directionsService","directionsDisplay","getRoute","origin","request","initGoogleMaps","maps","mapElement","mapData","initDynamicLayers","sections","entry","intersectionHandler","section","backgroundObserver","videoContainer","DynamicLayerBackgroundVideo","firstSection","video","track","dynamicLayerContainer","initDynamicLayersB","contentObserver","FlipCardBackgroundVideo","initFlipCards","ms","getItem","setItem","removeItem","stub","listeners","listen","change","all","fire","fn","ns","tracking","require$$0","require$$1","ls","accessor","localStorage","navigationSelector","tutorialLayerSelector","defaultLayerSelector","navigationContentSelector","currentNavItem","liAncestors","contentAncestors","$ele","navHandle","closestContent","exception","navContainer","primaryNavEl","focusedItem","char","focusContainer","isInsideLayerOne","outerContextSiblings","outerIndex","parentItem","s4","LangSwitcher","Loader","component","error","list","childProps","componentName","ComponentClass","_defineProperty$1","_toPropertyKey","_toPrimitive","_classCallCheck","_defineProperties","_createClass","_defineProperty","ownKeys","_objectSpread2","defaults$1","matches$1","getConstructor$1","instanceOf$1","isNullOrUndefined$1","isObject$1","isNumber$1","isString$1","isBoolean$1","isFunction$1","isArray$1","isNodeList$1","isElement$1","isEvent$1","isEmpty$1","is$1","getDecimalPlaces","RangeTouch","getConstructor","instanceOf","isNullOrUndefined","isNumber","isBoolean","isFunction","isArray","isWeakMap","isNodeList","isTextNode","isEvent","isKeyboardEvent","isCue","isTrack","isPromise","isElement","isEmpty","isUrl","transitionEndEvent","repaint","isIE","isEdge","isWebKit","isIPhone","isIPadOS","isIos","cloneDeep","getDeep","setAttributes","createElement","insertAfter","insertElement","emptyElement","replaceElement","getAttributesFromSelector","toggleHidden","matches","closest$1","getElements","getElement","defaultCodecs","supportsPassiveListeners","toggleListener","once","triggerEvent","unbindListeners","ready","silencePromise","dedupe","supportsCSS","standardRatios","validateAspectRatio","reduceAspectRatio","getAspectRatio","setAspectRatio","roundAspectRatio","getViewportSize","html5","generateId","format","getPercentage","replaceAll","toTitleCase","toPascalCase","toCamelCase","stripHTML","getHTML","resources","i18n","Storage","fetch","loadSprite","getHours","getMinutes","getSeconds","formatTime","captions","parseUrl","buildUrlParams","pip","providers","types","getProviderByUrl","noop","Console","Fullscreen","ui","Listeners","createCommonjsModule","loadjs_umd","loadScript","parseId$1","parseHash","assurePlaybackState$1","vimeo","parseId","assurePlaybackState","getHost","youtube","media","Ads","clamp","parseVtt","fitRatio","PreviewThumbnails","source","Plyr","U010AudioPlayer","audioi18n","plyrOptions","audioNode","player","captionButton","timeUpdated","timer","timerInstance","focusPlay","activated","noGlobal","getProto","slice","flat","push","indexOf","class2type","toString","hasOwn","fnToString","ObjectFunctionString","isWindow","preservedScriptAttributes","DOMEval","script","toType","version","rhtmlSuffix","jQuery","num","elems","_elem","copy","copyIsArray","clone","deep","msg","Ctor","isArrayLike","nodeType","namespace","docElem","second","invert","callbackInverse","callbackExpect","arg","_i","nodeName","pop","sort","splice","whitespace","rtrimCSS","bup","rcssescape","fcssescape","ch","asCodePoint","sel","preferredDoc","pushNative","Expr","outermostContext","sortInput","hasDuplicate","documentElement","documentIsHTML","rbuggyQSA","expando","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","booleans","identifier","pseudos","rwhitespace","rcomma","rleadingCombinator","rdescend","rpseudo","ridentifier","matchExpr","rinputs","rheader","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","unloadHandler","setDocument","inDisabledFieldset","addCombinator","safeActiveElement","seed","nid","match","groups","newSelector","newContext","testContext","tokenize","toSelector","select","markFunction","assert","createInputPseudo","createButtonPseudo","createDisabledPseudo","createPositionalPseudo","argument","matchIndexes","subWindow","attrId","tag","input","compare","expr","duplicates","excess","unquoted","nodeNameSelector","expectedNodeName","pattern","operator","check","_argument","last","simple","forward","ofType","_context","xml","outerCache","nodeIndex","useCache","pseudo","matched","matcher","compile","unmatched","lang","elemLang","_matchIndexes","setFilters","parseOnly","tokens","soFar","preFilters","cached","combinator","checkNonElements","doneName","oldCache","elementMatcher","matchers","multipleContexts","contexts","condense","map","newUnmatched","mapped","setMatcher","preFilter","postFilter","postFinder","postSelector","temp","matcherOut","preMap","postMap","preexisting","matcherIn","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","until","truncate","siblings","rneedsContext","rsingleTag","winnow","qualifier","not","rootjQuery","root","rparentsprev","guaranteedUnique","selectors","cur","sibling","rnothtmlwhite","createOptions","flag","firing","memory","fired","queue","firingIndex","Identity","Thrower","ex","adoptValue","resolve","reject","noValue","tuples","promise","deferred","fns","newDefer","tuple","returned","onFulfilled","onRejected","onProgress","maxDepth","depth","special","mightThrow","then","process","stateString","singleValue","remaining","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","asyncError","readyList","wait","completed","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","camelCase","string","acceptData","owner","Data","dataPriv","dataUser","rbrace","rmultiDash","getData","startLength","hooks","setter","tmp","count","defer","pnum","rcssNum","cssExpand","isAttached","composed","isHiddenWithinTree","adjustCSS","valueParts","tween","adjusted","maxIterations","currentValue","unit","initialInUnit","defaultDisplayMap","getDefaultDisplay","display","showHide","show","values","rcheckableType","rtagName","rscriptType","fragment","div","wrapMap","getAll","setGlobalEval","refElements","rhtml","buildFragment","scripts","selection","ignored","attached","nodes","rtypenamespace","returnTrue","returnFalse","one","origFn","handleObjIn","handleObj","namespaces","origType","elemData","mappedTypes","origCount","nativeEvent","handlerQueue","matchedHandlers","matchedSelectors","delegateCount","hook","originalEvent","leverageNative","isSetup","saved","delegateType","focusMappedHandler","attaches","dataHolder","fix","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","keepData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","original","insert","rnumnonpx","rcustomProp","getStyles","swap","rboxStyle","computeStyleTests","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","measure","reliableTrDimensionsVal","table","tr","trChild","trStyle","curCSS","computed","isCustomProp","addGetHookIf","conditionFn","hookFn","cssPrefixes","emptyStyle","vendorProps","vendorPropName","capName","finalPropName","final","rdisplayswap","cssShow","cssNormalTransform","setPositiveNumber","subtract","boxModelAdjustment","isBorderBox","computedVal","extra","marginDelta","getWidthOrHeight","boxSizingNeeded","valueIsBorderBox","origName","scrollboxSizeBuggy","expanded","Tween","end","easing","percent","eased","fxNow","inProgress","rfxtypes","rrun","schedule","createFxNow","genFx","includeWidth","which","createTween","animation","Animation","defaultPrefilter","oldfire","propTween","restoreDisplay","isBox","anim","hidden","dataShow","propFilter","specialEasing","properties","stopped","tick","currentTime","gotoEnd","empty","optall","doAnimation","clearQueue","stopQueue","dequeue","timers","cssFn","timeout","boolHook","attrHandle","nType","attrNames","getter","isXML","lowercaseName","rfocusable","rclickable","tabindex","stripAndCollapse","getClass","classesToArray","curValue","finalValue","stateVal","isValidValue","rreturn","optionSet","location","nonce","rquery","parserErrorElem","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","valueOrFunction","r20","rhash","rantiCache","rheaders","rlocalProtocol","rnoContent","rprotocol","prefilters","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","originalOptions","inspected","seekingTransport","inspect","selected","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxHandleResponses","responses","ct","finalDataType","firstDataType","contents","ajaxConvert","isSuccess","conv2","conv","converters","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","statusText","finalText","nativeStatusText","headers","success","modified","htmlIsFunction","xhrSuccessStatus","xhrSupported","errorCallback","xhr","oldCallbacks","rjsonp","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","responseText","curPosition","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","rect","offsetParent","parentOffset","top","defaultExtra","funcName","fnOver","fnOut","rtrim","proxy","hold","_jQuery","_$","C001Accordion","$button","scrollToElement","accordionItem","anchorElement","$elem","$panelButton","ComponentPrivacy","allowed","permanent","C042ShortsSlider","sliderNodeId","C025Quicklinks","quickLinkTexts","filterButtonGroups","filterDropdowns","filterItems","filterItemsArray","currentFilters","applyFilter","groupId","dataIds","visible","currentFilter","buttons","btn","dropdown","U015Hotspots","loader","hotspot","tooltip","shift","right","left","hotspot_modal","audioPlayer","C044StorySlider","containerWidth","srInfo","slideId","hasShadow","otherVideos","spotId","contentId","posControl","spotGroup","contentGroup","contentGroupDesktop","C046CommentsRatings","comments","adminUrl","numbers","baseUrl","uid","iframeHeight","ids","socialBlock","votesCount","commentsCount","votesElement","commentsElement","U016SingleSocialMediaPostFacebook","scriptEl","post","editorPlaceholder","preferences","U016SingleSocialMediaPostInstagram","U016SingleSocialMediaPostX","U016SingleSocialMediaPostLinkedin","CookieBanner","__publicField","settingsButton","acceptButton","rejectButton","minimizeButton","setupYoutubeAndGoogleMapsContent","content_uid","content_category","initPlaceholders","privacy_content","isContentApproved","google_maps_url","Chatbot","youtubeLazyElements","generalVideoElements","vimeoLazyElements","tabsContainers","sliderContainer","listSliderConfig","carouselContainer","carouselConfig","coverflowSliderContainer","coverFlowCarouselConfig","scrollindicator","galleryElements","aSliderElements","highestBox","newHighestBox","anismaps","printButtons"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,29,33,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,118,119,120,124,126]}