{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/swiper/js/swiper.js","webpack:///./vendor/assets/libs/swiper/swiper.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","factory","_typeof","iterator","obj","constructor","doc","document","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","location","hash","win","window","navigator","userAgent","history","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","Dom7","arr","length","$","selector","context","els","tempParent","html","trim","indexOf","toCreate","innerHTML","push","match","split","nodeType","unique","uniqueArray","fn","Class","Methods","addClass","className","classes","j","classList","add","removeClass","remove","hasClass","contains","toggleClass","toggle","attr","attrs","arguments$1","arguments","getAttribute","attrName","removeAttr","removeAttribute","data","el","dom7ElementDataStorage","dataKey","transform","elStyle","webkitTransform","transition","duration","webkitTransitionDuration","transitionDuration","on","assign","args","len","eventType","targetSelector","listener","capture","handleLiveEvent","e","target","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","undefined","events","event$1","dom7LiveListeners","proxyListener","event","dom7Listeners","off","handlers","handler","dom7proxy","splice","trigger","evt","detail","bubbles","cancelable","filter","dataIndex","dispatchEvent","transitionEnd","callback","dom","fireCallBack","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","css","props","prop","each","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","index","child","previousSibling","eq","returnIndex","append","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parent","parentNode","closest","find","foundElements","found","matchedItems","removeChild","toAdd","keys","forEach","methodName","Utils","deleteProps","nextTick","delay","now","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","m42","parseUrlQuery","url","params","param","query","urlToParse","href","paramsPart","decodeURIComponent","isObject","extend","len$1","to","nextSource","keysArray","nextIndex","nextKey","desc","getOwnPropertyDescriptor","Support","touch","Modernizr","maxTouchPoints","DocumentTouch","pointerEvents","PointerEvent","observer","passiveListener","supportsPassive","opts","gestures","SwiperClass","self","eventsListeners","eventName","staticAccessors","components","configurable","priority","method","once","onceHandler","f7proxy","eventHandler","emit","Array","isArray","slice","eventsArray","useModulesParams","instanceParams","instance","moduleName","useModules","modulesParams","moduleParams","modulePropName","moduleProp","moduleEventName","set","use","installModule","proto","static","install","concat","defineProperties","platform","ua","device","screenWidth","screenHeight","android","ipad","ipod","iphone","ie","edge","firefox","windows","electron","macos","update","updateSize","width","height","$el","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","size","updateSlides","$wrapperEl","swiperSize","rtl","rtlTranslate","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","slidesForMargin","slideIndex","cssMode","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","slidesNumberEvenToRows","slideSize","virtualSize","marginLeft","marginTop","marginRight","marginBottom","slidesPerColumn","Math","floor","ceil","slidesPerView","slidesPerColumnFill","max","newSlidesGrid","slidesPerRow","numFullColumns","slide","newSlideOrderIndex","column","row","slidesPerGroup","groupIndex","slideIndexInGroup","columnsInGroup","min","order","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","paddingTop","paddingBottom","boxSizing$1","swiperSlideSize","centeredSlides","abs","slidesPerGroupSkip","effect","setWrapperSize","i$1","slidesGridItem","i$2","slidesGridItem$1","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesSize$1","allSlidesOffset","snapIndex","watchOverflow","checkOverflow","watchSlidesProgress","watchSlidesVisibility","updateSlidesOffset","updateAutoHeight","speed","activeSlides","newHeight","setTransition","visibleSlides","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","translate","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideProgress","minTranslate","autoHeight","slideBefore","slideAfter","progress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","updateSlidesClasses","activeSlide","realIndex","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","loop","slideDuplicateClass","nextSlide","prevSlide","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","wrapperEl","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","swiper","animating","preventInteractionOnTransition","newTranslate","isH","scrollTo","behavior","onTranslateToWrapperTransitionEnd","destroyed","transition$1","transitionStart","direction","dir","slideTo","initialSlide","allowSlideNext","allowSlidePrev","scrollWidth","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","increment","loopFix","_clientLeft","slidePrev","normalize","val","prevIndex","normalizedTranslate","normalizedSnapGrid","prevSnap","slideReset","slideToClosest","threshold","currentSnap","slidesPerViewDynamic","slideToIndex","loopCreate","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","diff","loopDestroy","grabCursor","setGrabCursor","moving","simulateTouch","isLocked","cursor","unsetGrabCursor","manipulation","appendSlide","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","Device","ios","androidChrome","desktop","cordova","phonegap","toLowerCase","os","osVersion","webView","standalone","matchMedia","webview","pixelRatio","devicePixelRatio","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","type","which","button","isTouched","isMoved","noSwiping","noSwipingSelector","noSwipingClass","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","preventDefault","formElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","touchAngle","diffX","diffY","sqrt","pow","atan2","PI","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","velocities","position","time","onTouchEnd","currentPos","touchEndTime","timeDiff","lastClickTime","freeModeMomentum","lastMoveEvent","pop","velocityEvent","distance","velocity","freeModeMinimumVelocity","freeModeMomentumVelocityRatio","momentumDuration","freeModeMomentumRatio","momentumDistance","newPosition","afterBouncePosition","needsLoopFix","doBounce","bounceAmount","freeModeMomentumBounceRatio","freeModeMomentumBounce","freeModeSticky","moveDistance","currentSlideSize","longSwipesMs","stopIndex","groupSize","increment$1","ratio","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","breakpoints","setBreakpoint","autoplay","running","paused","run","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","dummyEventAttached","dummyEventListener","defaults","init","updateOnWindowResize","uniqueNavElements","preloadImages","updateOnImagesReady","passiveListeners","containerModifierClass","wrapperClass","prototypes","attachEvents","touchEvents","start","move","end","passive","cancel","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointOnlyParams","paramValue","breakpointParams","originalParams","wasMultiRow","isMultiRow","directionChanged","needsReLoop","changeDirection","points","point","minRatio","substr","innerHeight","sort","b","ref","innerWidth","wasLocked","lastSlidePosition","addClasses","classNames","suffixes","suffix","removeClasses","images","loadImage","imageEl","src","srcset","sizes","checkForComplete","image","onReady","complete","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","Swiper","prototypeGroup","protoMethod","moduleParamName","swiperParams","passedParams","swipers","containerEl","newParams","shadowRoot","options","touchEventsTouch","touchEventsDesktop","clickTimeout","__proto__","spv","breakLoop","translateValue","newDirection","needUpdate","currentDirection","slideEl","destroy","deleteInstance","cleanStyles","extendDefaults","newDefaults","Device$1","Support$1","support","Browser","isEdge","isSafari","isUiWebView","test","Browser$1","browser","Resize","resize","resizeHandler","orientationChangeHandler","Observer","func","MutationObserver","WebkitMutationObserver","attach","ObserverFunc","mutations","observerUpdate","requestAnimationFrame","observe","attributes","childList","characterData","observers","observeParents","containerParents","observeSlideChildren","disconnect","Observer$1","Virtual","force","ref$1","addSlidesBefore","addSlidesAfter","ref$2","previousFrom","from","previousTo","previousSlidesGrid","renderSlide","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","lazy","load","renderExternal","slidesToRender","prependIndexes","appendIndexes","cache","$slideEl","numberOfNewSlides","newCache","cachedIndex","$cachedEl","cachedElIndex","Virtual$1","beforeInit","overwriteParams","Keyboard","handle","kc","keyCode","charCode","shiftKey","altKey","ctrlKey","metaKey","keyboard","onlyInViewport","inView","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","enable","disable","Keyboard$1","Mousewheel","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","isSupported","element","implementation","hasFeature","isEventSupported","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","handleMouseEnter","mouseEntered","handleMouseLeave","mousewheel","eventsTarged","releaseOnEdges","delta","rtlFactor","forceToAxis","invert","newEvent$1","sign","ignoreWheelEvents","sensitivity","timeout","recentWheelEvents$1","shift","prevEvent$1","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","newEvent","raw","prevEvent","animateSlider","releaseScroll","getTime","Navigation","$nextEl","$prevEl","disabledClass","lockClass","onPrevClick","onNextClick","Pagination","pagination","current","total","paginationType","bullets","firstIndex","lastIndex","midIndex","dynamicBullets","bulletSize","dynamicMainBullets","dynamicBulletIndex","bulletActiveClass","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","currentClass","formatFractionCurrent","totalClass","formatFractionTotal","progressbarDirection","progressbarOpposite","scale","scaleX","scaleY","progressbarFillClass","renderCustom","render","paginationHTML","numberOfBullets","renderBullet","bulletClass","bulletElement","renderFraction","renderProgressbar","clickable","clickableClass","modifierClass","progressbarOppositeClass","hiddenClass","Scrollbar","scrollbar","dragSize","trackSize","$dragEl","newSize","newPos","hide","opacity","divider","moveDivider","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","dragStartPos","onDragStart","dragTimeout","onDragMove","onDragEnd","snapOnRelease","enableDraggable","activeListener","disableDraggable","$swiperEl","dragClass","dragEl","draggable","Parallax","setTransform","currentOpacity","currentScale","parallax","parallaxEl","$parallaxEl","parallaxDuration","Zoom","getDistanceBetweenTouches","x1","y1","x2","y2","onGestureStart","zoom","gesture","fakeGestureTouched","fakeGestureMoved","scaleStart","$imageEl","$imageWrapEl","containerClass","maxRatio","isScaling","onGestureChange","scaleMove","onGestureEnd","touchesStart","slideWidth","slideHeight","scaledWidth","scaledHeight","minX","maxX","minY","maxY","touchesCurrent","prevPositionX","prevPositionY","prevTime","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","onTransitionEnd","out","in","touchX","touchY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","zoomedSlideClass","activeListenerWithCapture","slideSelector","Lazy","loadInSlide","loadInDuplicate","$images","elementClass","loadedClass","loadingClass","imageIndex","background","preloaderClass","slideOriginalIndex","originalSlide","duplicatedSlide","slideExist","initialImageLoaded","elIndex","loadPrevNext","loadPrevNextAmount","amount","maxIndex","minIndex","Controller","LinearSpline","guess","i1","i3","binarySearch","array","interpolate","getInterpolateFunction","controller","spline","setTranslate$1","controlledTranslate","controlled","control","setControlledTranslate","by","inverse","setControlledTransition","a11y","makeElFocusable","addElRole","role","addElLabel","label","disableEl","enableEl","onEnterKey","notify","lastSlideMessage","nextSlideMessage","firstSlideMessage","prevSlideMessage","click","message","notification","liveRegion","updateNavigation","updatePagination","bulletEl","$bulletEl","paginationBulletMessage","History","pushState","hashNavigation","paths","getPathValues","scrollToSlide","replaceState","setHistoryPopState","pathArray","pathname","part","setHistory","slugify","includes","currentState","state","HashNavigation","onHashCange","newHash","setHash","watchState","Autoplay","$activeSlideEl","reverseDirection","stopOnLastSlide","pause","waitForTransition","Fade","tx","ty","slideOpacity","fadeEffect","crossFade","eventTriggered","triggerEvents","Cube","$cubeShadowEl","swiperWidth","swiperHeight","cubeEffect","wrapperRotate","shadow","slideAngle","round","tz","slideShadows","shadowBefore","shadowAfter","shadowOffset","shadowScale","shadowAngle","sin","cos","scale1","scale2","zFactor","Flip","flipEffect","limitRotation","rotateY","rotateX","zIndex","Coverflow","coverflowEffect","center","rotate","depth","offsetMultiplier","modifier","translateZ","stretch","slideTransform","$shadowBeforeEl","$shadowAfterEl","prefixedPointerEvents","perspectiveOrigin","Thumbs","thumbsParams","thumbs","swiperCreated","thumbsContainerClass","onThumbClick","thumbsSwiper","slideThumbActiveClass","currentIndex","initial","autoScrollOffset","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","multipleActiveThumbs","hideOnClick","toEdge","fromEdge","isHidden","number","activeIndexChange","snapIndexChange","slidesLengthChange","snapGridLengthChange","touchStart","touchEnd","doubleTap","slideChange","loadOnTransitionStart","scroll","scrollbarDragMove","notificationClass","paginationUpdate","disableOnInteraction","onVisibilityChange","visibilityState","beforeTransitionStart","sliderFirstMove","beforeDestroy"],"mappings":"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","file":"js/vendor/libs/swiper/swiper-933a9df315b2e7b95218.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"https://optimal.seneris.com/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 930);\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * Swiper 5.3.8\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * http://swiperjs.com\n *\n * Copyright 2014-2020 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: April 24, 2020\n */\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = global || self, global.Swiper = factory());\n})(this, function () {\n 'use strict';\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: {\n hash: ''\n }\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; // Create array-like object\n\n for (var i = 0; i < arr.length; i += 1) {\n self[i] = arr[i];\n }\n\n self.length = arr.length; // Return collection with methods\n\n return this;\n };\n\n function $(selector, context) {\n var arr = [];\n var i = 0;\n\n if (selector && !context) {\n if (selector instanceof Dom7) {\n return selector;\n }\n }\n\n if (selector) {\n // String\n if (typeof selector === 'string') {\n var els;\n var tempParent;\n var html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n var toCreate = 'div';\n\n if (html.indexOf(':~]/)) {\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\n for (i = 0; i < els.length; i += 1) {\n if (els[i]) {\n arr.push(els[i]);\n }\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\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\n for (var i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) {\n uniqueArray.push(arr[i]);\n }\n }\n\n return uniqueArray;\n } // Classes and attributes\n\n\n function addClass(className) {\n if (typeof className === 'undefined') {\n return this;\n }\n\n var classes = className.split(' ');\n\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') {\n this[j].classList.add(classes[i]);\n }\n }\n }\n\n return this;\n }\n\n function removeClass(className) {\n var classes = className.split(' ');\n\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') {\n this[j].classList.remove(classes[i]);\n }\n }\n }\n\n return this;\n }\n\n function hasClass(className) {\n if (!this[0]) {\n return false;\n }\n\n return this[0].classList.contains(className);\n }\n\n function toggleClass(className) {\n var classes = className.split(' ');\n\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') {\n this[j].classList.toggle(classes[i]);\n }\n }\n }\n\n return this;\n }\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]) {\n return this[0].getAttribute(attrs);\n }\n\n return undefined;\n } // Set attrs\n\n\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\n return this;\n } // eslint-disable-next-line\n\n\n function removeAttr(attr) {\n for (var i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n }\n\n function data(key, value) {\n var el;\n\n if (typeof value === 'undefined') {\n el = this[0]; // Get value\n\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\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n }\n\n return undefined;\n } // Set value\n\n\n for (var i = 0; i < this.length; i += 1) {\n el = this[i];\n\n if (!el.dom7ElementDataStorage) {\n el.dom7ElementDataStorage = {};\n }\n\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n } // Transforms\n // eslint-disable-next-line\n\n\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\n return this;\n }\n\n function transition(duration) {\n if (typeof duration !== 'string') {\n duration = duration + \"ms\"; // eslint-disable-line\n }\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\n return this;\n } // Events\n\n\n function on() {\n var assign;\n var args = [],\n len = arguments.length;\n\n while (len--) {\n args[len] = arguments[len];\n }\n\n var eventType = args[0];\n var targetSelector = args[1];\n var listener = args[2];\n var capture = args[3];\n\n if (typeof args[1] === 'function') {\n assign = args, eventType = assign[0], listener = assign[1], capture = assign[2];\n targetSelector = undefined;\n }\n\n if (!capture) {\n capture = false;\n }\n\n function handleLiveEvent(e) {\n var target = e.target;\n\n if (!target) {\n return;\n }\n\n var eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) {\n listener.apply(target, eventData);\n } else {\n var parents = $(target).parents(); // eslint-disable-line\n\n for (var k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) {\n listener.apply(parents[k], eventData);\n }\n }\n }\n }\n\n function handleEvent(e) {\n var 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 var events = eventType.split(' ');\n var j;\n\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n var event = events[j];\n\n if (!el.dom7Listeners) {\n el.dom7Listeners = {};\n }\n\n if (!el.dom7Listeners[event]) {\n el.dom7Listeners[event] = [];\n }\n\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\n if (!el.dom7LiveListeners) {\n el.dom7LiveListeners = {};\n }\n\n if (!el.dom7LiveListeners[event$1]) {\n el.dom7LiveListeners[event$1] = [];\n }\n\n el.dom7LiveListeners[event$1].push({\n listener: listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event$1, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n }\n\n function off() {\n var assign;\n var args = [],\n len = arguments.length;\n\n while (len--) {\n args[len] = arguments[len];\n }\n\n var eventType = args[0];\n var targetSelector = args[1];\n var listener = args[2];\n var capture = args[3];\n\n if (typeof args[1] === 'function') {\n assign = args, eventType = assign[0], listener = assign[1], capture = assign[2];\n targetSelector = undefined;\n }\n\n if (!capture) {\n capture = false;\n }\n\n var events = eventType.split(' ');\n\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n var handlers = void 0;\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 (var k = handlers.length - 1; k >= 0; k -= 1) {\n var 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\n function trigger() {\n var args = [],\n len = arguments.length;\n\n while (len--) {\n args[len] = arguments[len];\n }\n\n var events = args[0].split(' ');\n var eventData = args[1];\n\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n var evt = void 0;\n\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 } // eslint-disable-next-line\n\n\n el.dom7EventData = args.filter(function (data, dataIndex) {\n return dataIndex > 0;\n });\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n\n return this;\n }\n\n function transitionEnd(callback) {\n var events = ['webkitTransitionEnd', 'transitionend'];\n var dom = this;\n var i;\n\n function fireCallBack(e) {\n /* jshint validthis:true */\n if (e.target !== this) {\n return;\n }\n\n callback.call(this, e);\n\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n\n return this;\n }\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\n return this[0].offsetWidth;\n }\n\n return null;\n }\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\n return this[0].offsetHeight;\n }\n\n return null;\n }\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\n function styles() {\n if (this[0]) {\n return win.getComputedStyle(this[0], null);\n }\n\n return {};\n }\n\n function css(props, value) {\n var i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n if (this[0]) {\n return win.getComputedStyle(this[0], null).getPropertyValue(props);\n }\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\n return this;\n }\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\n return this;\n }\n\n return this;\n } // Iterate over the collection passing elements to `callback`\n\n\n function each(callback) {\n // Don't bother continuing without a callback\n if (!callback) {\n return this;\n } // Iterate over the current collection\n\n\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 } // Return `this` to allow chained DOM operations\n\n\n return this;\n }\n\n function filter(callback) {\n var matchedItems = [];\n var dom = this;\n\n for (var i = 0; i < dom.length; i += 1) {\n if (callback.call(dom[i], i, dom[i])) {\n matchedItems.push(dom[i]);\n }\n }\n\n return new Dom7(matchedItems);\n } // eslint-disable-next-line\n\n\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\n return this;\n } // eslint-disable-next-line\n\n\n function text(text) {\n if (typeof text === 'undefined') {\n if (this[0]) {\n return this[0].textContent.trim();\n }\n\n return null;\n }\n\n for (var i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n }\n\n function is(selector) {\n var el = this[0];\n var compareWith;\n var i;\n\n if (!el || typeof selector === 'undefined') {\n return false;\n }\n\n if (typeof selector === 'string') {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n }\n\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) {\n return true;\n }\n }\n\n return false;\n } else if (selector === doc) {\n return el === doc;\n } else if (selector === win) {\n return el === win;\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) {\n return true;\n }\n }\n\n return false;\n }\n\n return false;\n }\n\n function index() {\n var child = this[0];\n var i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) {\n i += 1;\n }\n }\n\n return i;\n }\n\n return undefined;\n } // eslint-disable-next-line\n\n\n function eq(index) {\n if (typeof index === 'undefined') {\n return this;\n }\n\n var length = this.length;\n var returnIndex;\n\n if (index > length - 1) {\n return new Dom7([]);\n }\n\n if (index < 0) {\n returnIndex = length + index;\n\n if (returnIndex < 0) {\n return new Dom7([]);\n }\n\n return new Dom7([this[returnIndex]]);\n }\n\n return new Dom7([this[index]]);\n }\n\n function append() {\n var args = [],\n len = arguments.length;\n\n while (len--) {\n args[len] = arguments[len];\n }\n\n var newChild;\n\n for (var k = 0; k < args.length; k += 1) {\n newChild = args[k];\n\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\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\n function prepend(newChild) {\n var i;\n var j;\n\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\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\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\n return new Dom7([]);\n }\n\n if (this[0].nextElementSibling) {\n return new Dom7([this[0].nextElementSibling]);\n }\n\n return new Dom7([]);\n }\n\n return new Dom7([]);\n }\n\n function nextAll(selector) {\n var nextEls = [];\n var el = this[0];\n\n if (!el) {\n return new Dom7([]);\n }\n\n while (el.nextElementSibling) {\n var next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) {\n nextEls.push(next);\n }\n } else {\n nextEls.push(next);\n }\n\n el = next;\n }\n\n return new Dom7(nextEls);\n }\n\n function prev(selector) {\n if (this.length > 0) {\n var el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return new Dom7([el.previousElementSibling]);\n }\n\n return new Dom7([]);\n }\n\n if (el.previousElementSibling) {\n return new Dom7([el.previousElementSibling]);\n }\n\n return new Dom7([]);\n }\n\n return new Dom7([]);\n }\n\n function prevAll(selector) {\n var prevEls = [];\n var el = this[0];\n\n if (!el) {\n return new Dom7([]);\n }\n\n while (el.previousElementSibling) {\n var prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) {\n prevEls.push(prev);\n }\n } else {\n prevEls.push(prev);\n }\n\n el = prev;\n }\n\n return new Dom7(prevEls);\n }\n\n function parent(selector) {\n var parents = []; // eslint-disable-line\n\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)) {\n parents.push(this[i].parentNode);\n }\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(unique(parents));\n }\n\n function parents(selector) {\n var parents = []; // eslint-disable-line\n\n for (var i = 0; i < this.length; i += 1) {\n var parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) {\n parents.push(parent);\n }\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(unique(parents));\n }\n\n function closest(selector) {\n var closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return new Dom7([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n }\n\n function find(selector) {\n var foundElements = [];\n\n for (var i = 0; i < this.length; i += 1) {\n var found = this[i].querySelectorAll(selector);\n\n for (var j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return new Dom7(foundElements);\n }\n\n function children(selector) {\n var children = []; // eslint-disable-line\n\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) {\n children.push(childNodes[j]);\n }\n } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return new Dom7(unique(children));\n }\n\n function remove() {\n for (var i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) {\n this[i].parentNode.removeChild(this[i]);\n }\n }\n\n return this;\n }\n\n function add() {\n var args = [],\n len = arguments.length;\n\n while (len--) {\n args[len] = arguments[len];\n }\n\n var dom = this;\n var i;\n var j;\n\n for (i = 0; i < args.length; i += 1) {\n var toAdd = $(args[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom[dom.length] = toAdd[j];\n dom.length += 1;\n }\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 filter: filter,\n remove: remove,\n add: add,\n styles: styles\n };\n Object.keys(Methods).forEach(function (methodName) {\n $.fn[methodName] = $.fn[methodName] || Methods[methodName];\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) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n },\n nextTick: function nextTick(callback, delay) {\n if (delay === void 0) delay = 0;\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 var matrix;\n var curTransform;\n var transformMatrix;\n var curStyle = win.getComputedStyle(el, null);\n\n if (win.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(function (a) {\n return a.replace(',', '.');\n }).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 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) {\n curTransform = transformMatrix.m41;\n } // Crazy IE10 Matrix\n else if (matrix.length === 16) {\n curTransform = parseFloat(matrix[12]);\n } // Normal Browsers\n else {\n curTransform = parseFloat(matrix[4]);\n }\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (win.WebKitCSSMatrix) {\n curTransform = transformMatrix.m42;\n } // Crazy IE10 Matrix\n else if (matrix.length === 16) {\n curTransform = parseFloat(matrix[13]);\n } // Normal Browsers\n else {\n curTransform = parseFloat(matrix[5]);\n }\n }\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\n if (typeof urlToParse === 'string' && urlToParse.length) {\n urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n params = urlToParse.split('&').filter(function (paramsPart) {\n return paramsPart !== '';\n });\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\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 = [],\n len$1 = arguments.length;\n\n while (len$1--) {\n args[len$1] = arguments[len$1];\n }\n\n var to = Object(args[0]);\n\n for (var i = 1; i < args.length; i += 1) {\n var nextSource = args[i];\n\n if (nextSource !== undefined && nextSource !== null) {\n var keysArray = Object.keys(Object(nextSource));\n\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\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\n return to;\n }\n };\n\n var Support = function Support() {\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 pointerEvents: !!win.PointerEvent && 'maxTouchPoints' in win.navigator && win.navigator.maxTouchPoints > 0,\n observer: function checkObserver() {\n return 'MutationObserver' in win || 'WebkitMutationObserver' in win;\n }(),\n passiveListener: function checkPassiveListener() {\n var supportsPassive = false;\n\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) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in win;\n }()\n };\n }();\n\n var SwiperClass = function SwiperClass(params) {\n if (params === void 0) params = {};\n var self = this;\n self.params = params; // Events\n\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 = {\n components: {\n configurable: true\n }\n };\n\n SwiperClass.prototype.on = function on(events, handler, priority) {\n var self = this;\n\n if (typeof handler !== 'function') {\n return self;\n }\n\n var method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(function (event) {\n if (!self.eventsListeners[event]) {\n self.eventsListeners[event] = [];\n }\n\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\n if (typeof handler !== 'function') {\n return self;\n }\n\n function onceHandler() {\n var args = [],\n len = arguments.length;\n\n while (len--) {\n args[len] = arguments[len];\n }\n\n self.off(events, onceHandler);\n\n if (onceHandler.f7proxy) {\n delete onceHandler.f7proxy;\n }\n\n handler.apply(self, args);\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\n if (!self.eventsListeners) {\n return self;\n }\n\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 = [],\n len = arguments.length;\n\n while (len--) {\n args[len] = arguments[len];\n }\n\n var self = this;\n\n if (!self.eventsListeners) {\n return self;\n }\n\n var events;\n var data;\n var 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 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\n if (!instance.modules) {\n return;\n }\n\n Object.keys(instance.modules).forEach(function (moduleName) {\n var module = instance.modules[moduleName]; // Extend params\n\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 var instance = this;\n\n if (!instance.modules) {\n return;\n }\n\n Object.keys(instance.modules).forEach(function (moduleName) {\n var module = instance.modules[moduleName];\n var moduleParams = modulesParams[moduleName] || {}; // Extend instance methods and props\n\n if (module.instance) {\n Object.keys(module.instance).forEach(function (modulePropName) {\n var moduleProp = module.instance[modulePropName];\n\n if (typeof moduleProp === 'function') {\n instance[modulePropName] = moduleProp.bind(instance);\n } else {\n instance[modulePropName] = moduleProp;\n }\n });\n } // Add event listeners\n\n\n if (module.on && instance.on) {\n Object.keys(module.on).forEach(function (moduleEventName) {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n } // Module create callback\n\n\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\n if (!Class.use) {\n return;\n }\n\n Class.use(components);\n };\n\n SwiperClass.installModule = function installModule(module) {\n var params = [],\n len = arguments.length - 1;\n\n while (len-- > 0) {\n params[len] = arguments[len + 1];\n }\n\n var Class = this;\n\n if (!Class.prototype.modules) {\n Class.prototype.modules = {};\n }\n\n var name = module.name || Object.keys(Class.prototype.modules).length + \"_\" + Utils.now();\n Class.prototype.modules[name] = module; // Prototype\n\n if (module.proto) {\n Object.keys(module.proto).forEach(function (key) {\n Class.prototype[key] = module.proto[key];\n });\n } // Class\n\n\n if (module.static) {\n Object.keys(module.static).forEach(function (key) {\n Class[key] = module.static[key];\n });\n } // Callback\n\n\n if (module.install) {\n module.install.apply(Class, params);\n }\n\n return Class;\n };\n\n SwiperClass.use = function use(module) {\n var params = [],\n len = arguments.length - 1;\n\n while (len-- > 0) {\n params[len] = arguments[len + 1];\n }\n\n var Class = this;\n\n if (Array.isArray(module)) {\n module.forEach(function (m) {\n return Class.installModule(m);\n });\n return Class;\n }\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\n if (typeof swiper.params.width !== 'undefined') {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined') {\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'), 10) - parseInt($el.css('padding-right'), 10);\n height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);\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 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 function slidesForMargin(slideIndex) {\n if (!params.cssMode) {\n return true;\n }\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }\n\n var offsetBefore = params.slidesOffsetBefore;\n\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n var offsetAfter = params.slidesOffsetAfter;\n\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 var spaceBetween = params.spaceBetween;\n var slidePosition = -offsetBefore;\n var prevSlideSize = 0;\n var 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) {\n slides.css({\n marginLeft: '',\n marginTop: ''\n });\n } else {\n slides.css({\n marginRight: '',\n marginBottom: ''\n });\n }\n\n var slidesNumberEvenToRows;\n\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\n if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n }\n } // Calc slides\n\n\n var slideSize;\n var slidesPerColumn = params.slidesPerColumn;\n var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n var numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n\n for (var i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n var slide = slides.eq(i);\n\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\n if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {\n var groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));\n var slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;\n var columnsInGroup = groupIndex === 0 ? params.slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * params.slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / slidesPerColumn;\n slide.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 if (params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - column * slidesPerColumn;\n\n if (column > numFullColumns || column === numFullColumns && row === slidesPerColumn - 1) {\n row += 1;\n\n if (row >= slidesPerColumn) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n\n slide.css(\"margin-\" + (swiper.isHorizontal() ? 'top' : 'left'), row !== 0 && params.spaceBetween && params.spaceBetween + \"px\");\n }\n\n if (slide.css('display') === 'none') {\n continue;\n } // eslint-disable-line\n\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\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 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\n if (boxSizing && boxSizing === 'border-box') {\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\n if (boxSizing$1 && boxSizing$1 === 'border-box') {\n slideSize = height + marginTop + marginBottom;\n } else {\n slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;\n }\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) {\n slideSize = Math.floor(slideSize);\n }\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n\n if (params.roundLengths) {\n slideSize = Math.floor(slideSize);\n }\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\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\n if (prevSlideSize === 0 && i !== 0) {\n slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n }\n\n if (i === 0) {\n slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n }\n\n if (Math.abs(slidePosition) < 1 / 1000) {\n slidePosition = 0;\n }\n\n if (params.roundLengths) {\n slidePosition = Math.floor(slidePosition);\n }\n\n if (index % params.slidesPerGroup === 0) {\n snapGrid.push(slidePosition);\n }\n\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) {\n slidePosition = Math.floor(slidePosition);\n }\n\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) {\n snapGrid.push(slidePosition);\n }\n\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 var newSlidesGrid;\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 if (swiper.isHorizontal()) {\n $wrapperEl.css({\n width: swiper.virtualSize + params.spaceBetween + \"px\"\n });\n } else {\n $wrapperEl.css({\n height: swiper.virtualSize + params.spaceBetween + \"px\"\n });\n }\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\n if (swiper.isHorizontal()) {\n $wrapperEl.css({\n width: swiper.virtualSize + params.spaceBetween + \"px\"\n });\n } else {\n $wrapperEl.css({\n height: swiper.virtualSize + params.spaceBetween + \"px\"\n });\n }\n\n if (params.centeredSlides) {\n newSlidesGrid = [];\n\n for (var i$1 = 0; i$1 < snapGrid.length; i$1 += 1) {\n var slidesGridItem = snapGrid[i$1];\n\n if (params.roundLengths) {\n slidesGridItem = Math.floor(slidesGridItem);\n }\n\n if (snapGrid[i$1] < swiper.virtualSize + snapGrid[0]) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n }\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n newSlidesGrid = [];\n\n for (var i$2 = 0; i$2 < snapGrid.length; i$2 += 1) {\n var slidesGridItem$1 = snapGrid[i$2];\n\n if (params.roundLengths) {\n slidesGridItem$1 = Math.floor(slidesGridItem$1);\n }\n\n if (snapGrid[i$2] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem$1);\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) {\n snapGrid = [0];\n }\n\n if (params.spaceBetween !== 0) {\n if (swiper.isHorizontal()) {\n if (rtl) {\n slides.filter(slidesForMargin).css({\n marginLeft: spaceBetween + \"px\"\n });\n } else {\n slides.filter(slidesForMargin).css({\n marginRight: spaceBetween + \"px\"\n });\n }\n } else {\n slides.filter(slidesForMargin).css({\n marginBottom: spaceBetween + \"px\"\n });\n }\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n var allSlidesSize = 0;\n slidesSizesGrid.forEach(function (slideSizeValue) {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n var maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(function (snap) {\n if (snap < 0) {\n return -offsetBefore;\n }\n\n if (snap > maxSnap) {\n return maxSnap + offsetAfter;\n }\n\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n var allSlidesSize$1 = 0;\n slidesSizesGrid.forEach(function (slideSizeValue) {\n allSlidesSize$1 += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize$1 -= params.spaceBetween;\n\n if (allSlidesSize$1 < swiperSize) {\n var allSlidesOffset = (swiperSize - allSlidesSize$1) / 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\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n swiper.emit('snapGridLengthChange');\n }\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\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\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(function (index, slide) {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n var index = swiper.activeIndex + i;\n\n if (index > swiper.slides.length) {\n break;\n }\n\n activeSlides.push(swiper.slides.eq(index)[0]);\n }\n }\n } else {\n activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);\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 var height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n } // Update Height\n\n\n if (newHeight) {\n swiper.$wrapperEl.css('height', newHeight + \"px\");\n }\n }\n\n function updateSlidesOffset() {\n var swiper = this;\n var slides = swiper.slides;\n\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 var swiper = this;\n var params = swiper.params;\n var slides = swiper.slides;\n var rtl = swiper.rtlTranslate;\n\n if (slides.length === 0) {\n return;\n }\n\n if (typeof slides[0].swiperSlideOffset === 'undefined') {\n swiper.updateSlidesOffset();\n }\n\n var offsetCenter = -translate;\n\n if (rtl) {\n offsetCenter = translate;\n } // Visible Slides\n\n\n slides.removeClass(params.slideVisibleClass);\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 = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slide.swiperSlideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n\n if (params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) {\n var slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n var slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n var 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\n slide.progress = rtl ? -slideProgress : slideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n }\n\n function updateProgress(translate) {\n var swiper = this;\n\n if (typeof translate === 'undefined') {\n var multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n var params = swiper.params;\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\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 Utils.extend(swiper, {\n progress: progress,\n isBeginning: isBeginning,\n isEnd: isEnd\n });\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) {\n swiper.updateSlidesProgress(translate);\n }\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 }\n\n function updateSlidesClasses() {\n var swiper = this;\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 slides.removeClass(params.slideActiveClass + \" \" + params.slideNextClass + \" \" + params.slidePrevClass + \" \" + params.slideDuplicateActiveClass + \" \" + params.slideDuplicateNextClass + \" \" + params.slideDuplicatePrevClass);\n var 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 var 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 var 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\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\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 } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') {\n activeIndex = 0;\n }\n }\n }\n\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n var skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n\n if (snapIndex >= snapGrid.length) {\n snapIndex = snapGrid.length - 1;\n }\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 var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\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\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.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\n if (slide) {\n for (var i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\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 = $(slide).index();\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 }\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 var swiper = this;\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 if (params.cssMode) {\n return translate;\n }\n\n var currentTranslate = Utils.getTranslate($wrapperEl[0], axis);\n\n if (rtl) {\n currentTranslate = -currentTranslate;\n }\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 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.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 var newProgress;\n var 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 }\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 function translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n var obj;\n if (translate === void 0) translate = 0;\n if (speed === void 0) speed = this.params.speed;\n if (runCallbacks === void 0) runCallbacks = true;\n if (translateBounds === void 0) translateBounds = true;\n var swiper = this;\n var params = swiper.params;\n var wrapperEl = swiper.wrapperEl;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n var minTranslate = swiper.minTranslate();\n var maxTranslate = swiper.maxTranslate();\n var newTranslate;\n\n if (translateBounds && translate > minTranslate) {\n newTranslate = minTranslate;\n } else if (translateBounds && translate < maxTranslate) {\n newTranslate = maxTranslate;\n } else {\n newTranslate = translate;\n } // Update progress\n\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n var isH = swiper.isHorizontal();\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n wrapperEl.scrollTo((obj = {}, obj[isH ? 'left' : 'top'] = -newTranslate, obj.behavior = 'smooth', obj));\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\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) {\n return;\n }\n\n if (e.target !== this) {\n return;\n }\n\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 }\n\n var translate = {\n getTranslate: getTranslate,\n setTranslate: setTranslate,\n minTranslate: minTranslate,\n maxTranslate: maxTranslate,\n translateTo: translateTo\n };\n\n function setTransition(duration, byController) {\n var swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n }\n\n function transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) runCallbacks = true;\n var swiper = this;\n var activeIndex = swiper.activeIndex;\n var params = swiper.params;\n var previousIndex = swiper.previousIndex;\n\n if (params.cssMode) {\n return;\n }\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n var dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) {\n dir = 'next';\n } else if (activeIndex < previousIndex) {\n dir = 'prev';\n } else {\n dir = 'reset';\n }\n }\n\n swiper.emit('transitionStart');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionStart');\n return;\n }\n\n swiper.emit('slideChangeTransitionStart');\n\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 var swiper = this;\n var activeIndex = swiper.activeIndex;\n var previousIndex = swiper.previousIndex;\n var params = swiper.params;\n swiper.animating = false;\n\n if (params.cssMode) {\n return;\n }\n\n swiper.setTransition(0);\n var dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) {\n dir = 'next';\n } else if (activeIndex < previousIndex) {\n dir = 'prev';\n } else {\n dir = 'reset';\n }\n }\n\n swiper.emit('transitionEnd');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionEnd');\n return;\n }\n\n swiper.emit('slideChangeTransitionEnd');\n\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 var obj;\n if (index === void 0) index = 0;\n if (speed === void 0) speed = this.params.speed;\n if (runCallbacks === void 0) runCallbacks = true;\n var swiper = this;\n var slideIndex = index;\n\n if (slideIndex < 0) {\n slideIndex = 0;\n }\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 var wrapperEl = swiper.wrapperEl;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n var skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n var snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n\n if (snapIndex >= snapGrid.length) {\n snapIndex = snapGrid.length - 1;\n }\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n var translate = -snapGrid[snapIndex]; // Update progress\n\n swiper.updateProgress(translate); // Normalize slideIndex\n\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 } // 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) {\n return false;\n }\n }\n }\n\n var direction;\n\n if (slideIndex > activeIndex) {\n direction = 'next';\n } else if (slideIndex < activeIndex) {\n direction = 'prev';\n } else {\n direction = 'reset';\n } // Update Index\n\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 var isH = swiper.isHorizontal();\n var t = -translate;\n\n if (rtl) {\n t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;\n }\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n wrapperEl.scrollTo((obj = {}, obj[isH ? 'left' : 'top'] = t, obj.behavior = 'smooth', obj));\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n }\n\n return true;\n }\n\n if (speed === 0) {\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\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) {\n return;\n }\n\n if (e.target !== this) {\n return;\n }\n\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\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 var swiper = this;\n var newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n }\n /* eslint no-unused-vars: \"off\" */\n\n\n function slideNext(speed, runCallbacks, internal) {\n if (speed === void 0) speed = this.params.speed;\n if (runCallbacks === void 0) runCallbacks = true;\n var swiper = this;\n var params = swiper.params;\n var animating = swiper.animating;\n var increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;\n\n if (params.loop) {\n if (animating) {\n return false;\n }\n\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n }\n /* eslint no-unused-vars: \"off\" */\n\n\n function slidePrev(speed, runCallbacks, internal) {\n if (speed === void 0) speed = this.params.speed;\n if (runCallbacks === void 0) runCallbacks = true;\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) {\n return false;\n }\n\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n var translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) {\n return -Math.floor(Math.abs(val));\n }\n\n return Math.floor(val);\n }\n\n var normalizedTranslate = normalize(translate);\n var normalizedSnapGrid = snapGrid.map(function (val) {\n return normalize(val);\n });\n var normalizedSlidesGrid = slidesGrid.map(function (val) {\n return normalize(val);\n });\n var currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n snapGrid.forEach(function (snap) {\n if (!prevSnap && normalizedTranslate >= snap) {\n prevSnap = snap;\n }\n });\n }\n\n var prevIndex;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n\n if (prevIndex < 0) {\n prevIndex = swiper.activeIndex - 1;\n }\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n }\n /* eslint no-unused-vars: \"off\" */\n\n\n function slideReset(speed, runCallbacks, internal) {\n if (speed === void 0) speed = this.params.speed;\n if (runCallbacks === void 0) runCallbacks = true;\n var swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n }\n /* eslint no-unused-vars: \"off\" */\n\n\n function slideToClosest(speed, runCallbacks, internal, threshold) {\n if (speed === void 0) speed = this.params.speed;\n if (runCallbacks === void 0) runCallbacks = true;\n if (threshold === void 0) threshold = 0.5;\n var swiper = this;\n var index = swiper.activeIndex;\n var skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n var snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n var 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 var currentSnap = swiper.snapGrid[snapIndex];\n var 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 var prevSnap = swiper.snapGrid[snapIndex - 1];\n var currentSnap$1 = swiper.snapGrid[snapIndex];\n\n if (translate - prevSnap <= (currentSnap$1 - 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 }\n\n function slideToClickedSlide() {\n var swiper = this;\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl;\n var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n var slideToIndex = swiper.clickedIndex;\n var realIndex;\n\n if (params.loop) {\n if (swiper.animating) {\n return;\n }\n\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 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.children(\".\" + params.slideClass + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]:not(.\" + params.slideDuplicateClass + \")\").eq(0).index();\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; // Remove duplicated slides\n\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass).remove();\n var slides = $wrapperEl.children(\".\" + params.slideClass);\n\n if (params.loopFillGroupWithBlank) {\n var blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\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\n slides = $wrapperEl.children(\".\" + params.slideClass);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) {\n params.loopedSlides = slides.length;\n }\n\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\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\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n\n slide.attr('data-swiper-slide-index', index);\n });\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\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 swiper.emit('beforeLoopFix');\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 var snapTranslate = -snapGrid[activeIndex];\n var diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n var 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 var slideChanged$1 = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged$1 && 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 }\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\n if (Support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\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\n if (Support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\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\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n if (_typeof(slides) === 'object' && 'length' in slides) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i]) {\n $wrapperEl.append(slides[i]);\n }\n }\n } else {\n $wrapperEl.append(slides);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\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\n var newActiveIndex = activeIndex + 1;\n\n if (_typeof(slides) === 'object' && 'length' in slides) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i]) {\n $wrapperEl.prepend(slides[i]);\n }\n }\n\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\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\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(\".\" + params.slideClass);\n }\n\n var baseLength = swiper.slides.length;\n\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n\n var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n var slidesBuffer = [];\n\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]) {\n $wrapperEl.append(slides[i$1]);\n }\n }\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\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\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 var activeIndexBuffer = activeIndex;\n\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(\".\" + params.slideClass);\n }\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\n if (swiper.slides[indexToRemove]) {\n swiper.slides.eq(indexToRemove).remove();\n }\n\n if (indexToRemove < newActiveIndex) {\n newActiveIndex -= 1;\n }\n }\n\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n\n if (swiper.slides[indexToRemove]) {\n swiper.slides.eq(indexToRemove).remove();\n }\n\n if (indexToRemove < newActiveIndex) {\n newActiveIndex -= 1;\n }\n\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\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 var slidesIndexes = [];\n\n for (var i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\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 platform = win.navigator.platform;\n var ua = win.navigator.userAgent;\n var device = {\n ios: false,\n android: false,\n androidChrome: false,\n desktop: false,\n iphone: false,\n ipod: false,\n ipad: false,\n edge: false,\n ie: false,\n firefox: false,\n macos: false,\n windows: false,\n cordova: !!(win.cordova || win.phonegap),\n phonegap: !!(win.cordova || win.phonegap),\n electron: false\n };\n var screenWidth = win.screen.width;\n var screenHeight = win.screen.height;\n var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\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 var ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n var edge = ua.indexOf('Edge/') >= 0;\n var firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;\n var windows = platform === 'Win32';\n var electron = ua.toLowerCase().indexOf('electron') >= 0;\n var macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n if (!ipad && macos && Support.touch && (screenWidth === 1024 && screenHeight === 1366 || // Pro 12.9\n screenWidth === 834 && screenHeight === 1194 // Pro 11\n || screenWidth === 834 && screenHeight === 1112 // Pro 10.5\n || screenWidth === 768 && screenHeight === 1024 // other\n )) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n macos = false;\n }\n\n device.ie = ie;\n device.edge = edge;\n device.firefox = firefox; // Android\n\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\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // iOS\n\n\n if (iphone && !ipod) {\n device.osVersion = iphone[2].replace(/_/g, '.');\n device.iphone = true;\n }\n\n if (ipad) {\n device.osVersion = ipad[2].replace(/_/g, '.');\n device.ipad = true;\n }\n\n if (ipod) {\n device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n device.ipod = true;\n } // iOS 8+ changed UA\n\n\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 } // Webview\n\n\n device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || win.navigator.standalone)) || win.matchMedia && win.matchMedia('(display-mode: standalone)').matches;\n device.webview = device.webView;\n device.standalone = device.webView; // Desktop\n\n device.desktop = !(device.ios || device.android) || electron;\n\n if (device.desktop) {\n device.electron = electron;\n device.macos = macos;\n device.windows = windows;\n\n if (device.macos) {\n device.os = 'macos';\n }\n\n if (device.windows) {\n device.os = 'windows';\n }\n } // Pixel Ratio\n\n\n device.pixelRatio = win.devicePixelRatio || 1; // Export object\n\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\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n var e = event;\n\n if (e.originalEvent) {\n e = e.originalEvent;\n }\n\n var $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) {\n return;\n }\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n\n if (!data.isTouchEvent && 'which' in e && e.which === 3) {\n return;\n }\n\n if (!data.isTouchEvent && 'button' in e && e.button > 0) {\n return;\n }\n\n if (data.isTouched && data.isMoved) {\n return;\n }\n\n if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : \".\" + params.noSwipingClass)[0]) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) {\n return;\n }\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; // 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\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= win.screen.width - edgeSwipeThreshold)) {\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 touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = Utils.now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n\n if (params.threshold > 0) {\n data.allowThresholdMove = false;\n }\n\n if (e.type !== 'touchstart') {\n var preventDefault = true;\n\n if ($targetEl.is(data.formElements)) {\n preventDefault = false;\n }\n\n if (doc.activeElement && $(doc.activeElement).is(data.formElements) && doc.activeElement !== $targetEl[0]) {\n doc.activeElement.blur();\n }\n\n var shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if (params.touchStartForcePreventDefault || shouldPreventDefault) {\n e.preventDefault();\n }\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\n if (e.originalEvent) {\n e = e.originalEvent;\n }\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 === 'mousemove') {\n return;\n }\n\n var targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n var pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n var 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 // isMoved = true;\n swiper.allowClick = false;\n\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\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 && 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\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) {\n return;\n }\n\n touches.currentX = pageX;\n touches.currentY = pageY;\n var diffX = touches.currentX - touches.startX;\n var diffY = touches.currentY - touches.startY;\n\n if (swiper.params.threshold && Math.sqrt(Math.pow(diffX, 2) + Math.pow(diffY, 2)) < swiper.params.threshold) {\n return;\n }\n\n if (typeof data.isScrolling === 'undefined') {\n var 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) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop) {\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 var diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n\n if (rtl) {\n diff = -diff;\n }\n\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n var disableParentSwiper = true;\n var 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\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + Math.pow(-swiper.minTranslate() + data.startTranslate + diff, resistanceRatio);\n }\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - Math.pow(swiper.maxTranslate() - data.startTranslate - diff, resistanceRatio);\n }\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 } // 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) {\n return;\n } // Update active index in free mode\n\n\n if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\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\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: Utils.now()\n });\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n }\n\n function onTouchEnd(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 $wrapperEl = swiper.$wrapperEl;\n var slidesGrid = swiper.slidesGrid;\n var snapGrid = swiper.snapGrid;\n var e = event;\n\n if (e.originalEvent) {\n e = e.originalEvent;\n }\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 var touchEndTime = Utils.now();\n var timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\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 = Utils.now();\n Utils.nextTick(function () {\n if (!swiper.destroyed) {\n swiper.allowClick = true;\n }\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 var 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 (params.freeMode) {\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\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\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 var distance = lastMoveEvent.position - velocityEvent.position;\n var time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n\n if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n swiper.velocity = 0;\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\n\n if (time > 150 || Utils.now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n\n swiper.velocity *= params.freeModeMomentumVelocityRatio;\n data.velocities.length = 0;\n var momentumDuration = 1000 * params.freeModeMomentumRatio;\n var momentumDistance = swiper.velocity * momentumDuration;\n var newPosition = swiper.translate + momentumDistance;\n\n if (rtl) {\n newPosition = -newPosition;\n }\n\n var doBounce = false;\n var afterBouncePosition;\n var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n var needsLoopFix;\n\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n\n if (params.loop && params.centeredSlides) {\n needsLoopFix = true;\n }\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n\n if (params.loop && params.centeredSlides) {\n needsLoopFix = true;\n }\n } else if (params.freeModeSticky) {\n var nextSlide;\n\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\n newPosition = -newPosition;\n }\n\n if (needsLoopFix) {\n swiper.once('transitionEnd', function () {\n swiper.loopFix();\n });\n } // Fix duration\n\n\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\n if (params.freeModeSticky) {\n // If freeModeSticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n var moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n var currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\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) {\n return;\n }\n\n swiper.emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(function () {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed) {\n return;\n }\n\n swiper.transitionEnd();\n });\n }, 0);\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\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed) {\n return;\n }\n\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\n return;\n } // Find current slide\n\n\n var stopIndex = 0;\n var groupSize = swiper.slidesSizesGrid[0];\n\n for (var i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n var increment$1 = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (typeof slidesGrid[i + increment$1] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment$1]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment$1] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n } // Find current slide size\n\n\n var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n var 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) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\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 var 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(stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n }\n\n function onResize() {\n var swiper = this;\n var params = swiper.params;\n var el = swiper.el;\n\n if (el && el.offsetWidth === 0) {\n return;\n } // Breakpoints\n\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n var allowSlideNext = swiper.allowSlideNext;\n var allowSlidePrev = swiper.allowSlidePrev;\n var snapGrid = swiper.snapGrid; // 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.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 }\n\n function onClick(e) {\n var swiper = this;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) {\n e.preventDefault();\n }\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n }\n\n function onScroll() {\n var swiper = this;\n var wrapperEl = swiper.wrapperEl;\n var rtlTranslate = swiper.rtlTranslate;\n swiper.previousTranslate = swiper.translate;\n\n if (swiper.isHorizontal()) {\n if (rtlTranslate) {\n swiper.translate = wrapperEl.scrollWidth - wrapperEl.offsetWidth - wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollLeft;\n }\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\n if (swiper.translate === -0) {\n swiper.translate = 0;\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n var newProgress;\n var 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 }\n\n var dummyEventAttached = false;\n\n function dummyEventListener() {}\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 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 var capture = !!params.nested; // Touch Events\n\n if (!Support.touch && Support.pointerEvents) {\n el.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 ? {\n passive: true,\n capture: false\n } : false;\n el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? {\n passive: false,\n capture: capture\n } : capture);\n el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n\n if (!dummyEventAttached) {\n doc.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n }\n\n if (params.simulateTouch && !Device.ios && !Device.android || params.simulateTouch && !Support.touch && Device.ios) {\n el.addEventListener('mousedown', swiper.onTouchStart, false);\n doc.addEventListener('mousemove', swiper.onTouchMove, capture);\n doc.addEventListener('mouseup', swiper.onTouchEnd, false);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el.addEventListener('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl.addEventListener('scroll', swiper.onScroll);\n } // Resize handler\n\n\n if (params.updateOnWindowResize) {\n swiper.on(Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper.on('observerUpdate', onResize, true);\n }\n }\n\n function detachEvents() {\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 var capture = !!params.nested; // Touch Events\n\n if (!Support.touch && Support.pointerEvents) {\n el.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 ? {\n passive: true,\n capture: false\n } : false;\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n }\n\n if (params.simulateTouch && !Device.ios && !Device.android || params.simulateTouch && !Support.touch && Device.ios) {\n el.removeEventListener('mousedown', swiper.onTouchStart, false);\n doc.removeEventListener('mousemove', swiper.onTouchMove, capture);\n doc.removeEventListener('mouseup', swiper.onTouchEnd, false);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el.removeEventListener('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl.removeEventListener('scroll', swiper.onScroll);\n } // Resize handler\n\n\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;\n if (loopedSlides === void 0) loopedSlides = 0;\n var params = swiper.params;\n var $el = swiper.$el;\n var breakpoints = params.breakpoints;\n\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) {\n return;\n } // Get breakpoint for window width and update parameters\n\n\n var breakpoint = swiper.getBreakpoint(breakpoints);\n\n if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n var breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n\n if (breakpointOnlyParams) {\n ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach(function (param) {\n var paramValue = breakpointOnlyParams[param];\n\n if (typeof paramValue === 'undefined') {\n return;\n }\n\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 wasMultiRow = params.slidesPerColumn > 1;\n var isMultiRow = breakpointParams.slidesPerColumn > 1;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(params.containerModifierClass + \"multirow \" + params.containerModifierClass + \"multirow-column\");\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(params.containerModifierClass + \"multirow\");\n\n if (breakpointParams.slidesPerColumnFill === 'column') {\n $el.addClass(params.containerModifierClass + \"multirow-column\");\n }\n }\n\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 Utils.extend(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\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 // Get breakpoint for window width\n if (!breakpoints) {\n return undefined;\n }\n\n var breakpoint = false;\n var points = Object.keys(breakpoints).map(function (point) {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n var minRatio = parseFloat(point.substr(1));\n var value = win.innerHeight * minRatio;\n return {\n value: value,\n point: point\n };\n }\n\n return {\n value: point,\n point: point\n };\n });\n points.sort(function (a, b) {\n return parseInt(a.value, 10) - parseInt(b.value, 10);\n });\n\n for (var i = 0; i < points.length; i += 1) {\n var ref = points[i];\n var point = ref.point;\n var value = ref.value;\n\n if (value <= win.innerWidth) {\n breakpoint = point;\n }\n }\n\n return breakpoint || 'max';\n }\n\n var breakpoints = {\n setBreakpoint: setBreakpoint,\n getBreakpoint: getBreakpoint\n };\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 suffixes.push('initialized');\n suffixes.push(params.direction);\n\n if (params.freeMode) {\n suffixes.push('free-mode');\n }\n\n if (params.autoHeight) {\n suffixes.push('autoheight');\n }\n\n if (rtl) {\n suffixes.push('rtl');\n }\n\n if (params.slidesPerColumn > 1) {\n suffixes.push('multirow');\n\n if (params.slidesPerColumnFill === 'column') {\n suffixes.push('multirow-column');\n }\n }\n\n if (Device.android) {\n suffixes.push('android');\n }\n\n if (Device.ios) {\n suffixes.push('ios');\n }\n\n if (params.cssMode) {\n suffixes.push('css-mode');\n }\n\n suffixes.forEach(function (suffix) {\n classNames.push(params.containerModifierClass + suffix);\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 $el.removeClass(classNames.join(' '));\n }\n\n var classes = {\n addClasses: addClasses,\n removeClasses: removeClasses\n };\n\n function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n var image;\n\n function onReady() {\n if (callback) {\n callback();\n }\n }\n\n if (!imageEl.complete || !checkForComplete) {\n if (src) {\n image = new win.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 }\n\n function preloadImages() {\n var swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) {\n return;\n }\n\n if (swiper.imagesLoaded !== undefined) {\n swiper.imagesLoaded += 1;\n }\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) {\n swiper.update();\n }\n\n swiper.emit('imagesReady');\n }\n }\n\n for (var i = 0; i < swiper.imagesToLoad.length; i += 1) {\n var 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 }\n\n var images = {\n loadImage: loadImage,\n preloadImages: preloadImages\n };\n\n function checkOverflow() {\n var swiper = this;\n var params = swiper.params;\n var wasLocked = swiper.isLocked;\n var lastSlidePosition = swiper.slides.length > 0 && params.slidesOffsetBefore + params.spaceBetween * (swiper.slides.length - 1) + swiper.slides[0].offsetWidth * swiper.slides.length;\n\n if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {\n swiper.isLocked = lastSlidePosition <= swiper.size;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n swiper.allowSlideNext = !swiper.isLocked;\n swiper.allowSlidePrev = !swiper.isLocked; // events\n\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n swiper.navigation.update();\n }\n }\n\n var checkOverflow$1 = {\n checkOverflow: checkOverflow\n };\n var defaults = {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n //\n preventInteractionOnTransition: false,\n // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\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 // 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 // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\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: false,\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 watchSlidesVisibility: 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 loopFillGroupWithBlank: 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 // NS\n containerModifierClass: 'swiper-container-',\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 };\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 var extendedDefaults = {};\n\n var Swiper = /*@__PURE__*/function (SwiperClass) {\n function Swiper() {\n var assign;\n var args = [],\n len = arguments.length;\n\n while (len--) {\n args[len] = arguments[len];\n }\n\n var el;\n var params;\n\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\n if (!params) {\n params = {};\n }\n\n params = Utils.extend({}, params);\n\n if (el && !params.el) {\n params.el = el;\n }\n\n SwiperClass.call(this, params);\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 }); // Swiper Instance\n\n var swiper = this;\n\n if (typeof swiper.modules === 'undefined') {\n swiper.modules = {};\n }\n\n Object.keys(swiper.modules).forEach(function (moduleName) {\n var module = swiper.modules[moduleName];\n\n if (module.params) {\n var moduleParamName = Object.keys(module.params)[0];\n var moduleParams = module.params[moduleParamName];\n\n if (_typeof(moduleParams) !== 'object' || moduleParams === null) {\n return;\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\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]) {\n params[moduleParamName] = {\n enabled: false\n };\n }\n }\n }); // Extend defaults with modules params\n\n var swiperParams = Utils.extend({}, defaults);\n swiper.useModulesParams(swiperParams); // Extend defaults with passed params\n\n swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = Utils.extend({}, swiper.params);\n swiper.passedParams = Utils.extend({}, params); // Save Dom lib\n\n swiper.$ = $; // Find el\n\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, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n }\n\n el.swiper = swiper;\n $el.data('swiper', swiper); // Find Wrapper\n\n var $wrapperEl;\n\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n $wrapperEl = $(el.shadowRoot.querySelector(\".\" + swiper.params.wrapperClass)); // Children needs to return slot items\n\n $wrapperEl.children = function (options) {\n return $el.children(options);\n };\n } else {\n $wrapperEl = $el.children(\".\" + swiper.params.wrapperClass);\n } // Extend Swiper\n\n\n Utils.extend(swiper, {\n $el: $el,\n el: el,\n $wrapperEl: $wrapperEl,\n wrapperEl: $wrapperEl[0],\n // Classes\n classNames: [],\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\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 // 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 var touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n var desktop = ['mousedown', 'mousemove', 'mouseup'];\n\n if (Support.pointerEvents) {\n desktop = ['pointerdown', 'pointermove', 'pointerup'];\n }\n\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 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, label',\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 // 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 }); // Install Modules\n\n swiper.useModules(); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n\n\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 var staticAccessors = {\n extendedDefaults: {\n configurable: true\n },\n defaults: {\n configurable: true\n },\n Class: {\n configurable: true\n },\n $: {\n configurable: true\n }\n };\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\n if (params.centeredSlides) {\n var slideSize = slides[activeIndex].swiperSlideSize;\n var breakLoop;\n\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\n if (slideSize > swiperSize) {\n breakLoop = true;\n }\n }\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\n if (slideSize > swiperSize) {\n breakLoop = true;\n }\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\n return spv;\n };\n\n Swiper.prototype.update = function update() {\n var swiper = this;\n\n if (!swiper || swiper.destroyed) {\n return;\n }\n\n var snapGrid = swiper.snapGrid;\n var params = swiper.params; // 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 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\n var translated;\n\n if (swiper.params.freeMode) {\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 Swiper.prototype.changeDirection = function changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) needUpdate = true;\n var swiper = this;\n var 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.params.direction = newDirection;\n swiper.slides.each(function (slideIndex, slideEl) {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n\n if (needUpdate) {\n swiper.update();\n }\n\n return swiper;\n };\n\n Swiper.prototype.init = function init() {\n var swiper = this;\n\n if (swiper.initialized) {\n return;\n }\n\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) {\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);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\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 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'); // 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(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\n swiper.destroyed = true;\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 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 var Support$1 = {\n name: 'support',\n proto: {\n support: Support\n },\n static: {\n support: Support\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\n return {\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 Browser$1 = {\n name: 'browser',\n proto: {\n browser: Browser\n },\n static: {\n browser: Browser\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) {\n return;\n }\n\n swiper.emit('beforeResize');\n swiper.emit('resize');\n },\n orientationChangeHandler: function orientationChangeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) {\n return;\n }\n\n swiper.emit('orientationchange');\n }\n }\n });\n },\n on: {\n init: function init() {\n var swiper = this; // Emit resize\n\n win.addEventListener('resize', swiper.resize.resizeHandler); // Emit orientationchange\n\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 var Observer = {\n func: win.MutationObserver || win.WebkitMutationObserver,\n attach: function attach(target, options) {\n if (options === void 0) options = {};\n var swiper = this;\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\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 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 swiper.observer.observers.push(observer);\n },\n init: function init() {\n var swiper = this;\n\n if (!Support.observer || !swiper.params.observer) {\n return;\n }\n\n if (swiper.params.observeParents) {\n var containerParents = swiper.$el.parents();\n\n for (var i = 0; i < containerParents.length; i += 1) {\n swiper.observer.attach(containerParents[i]);\n }\n } // Observe container\n\n\n swiper.observer.attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n swiper.observer.attach(swiper.$wrapperEl[0], {\n attributes: false\n });\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 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 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 var offsetProp;\n\n if (swiper.rtlTranslate) {\n offsetProp = 'right';\n } else {\n offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n }\n\n var slidesAfter;\n var slidesBefore;\n\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\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 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\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\n swiper.updateProgress();\n return;\n }\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\n for (var i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n\n return slidesToRender;\n }()\n });\n onRendered();\n return;\n }\n\n var prependIndexes = [];\n var appendIndexes = [];\n\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\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) {\n appendIndexes.push(i$1);\n }\n\n if (i$1 < previousFrom) {\n prependIndexes.push(i$1);\n }\n }\n }\n }\n\n appendIndexes.forEach(function (index) {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes.sort(function (a, b) {\n return b - a;\n }).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\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n\n var $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $(\"
\" + slide + \"
\");\n\n if (!$slideEl.attr('data-swiper-slide-index')) {\n $slideEl.attr('data-swiper-slide-index', index);\n }\n\n if (params.cache) {\n swiper.virtual.cache[index] = $slideEl;\n }\n\n return $slideEl;\n },\n appendSlide: function appendSlide(slides) {\n var swiper = this;\n\n if (_typeof(slides) === 'object' && 'length' in slides) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i]) {\n swiper.virtual.slides.push(slides[i]);\n }\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\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]) {\n swiper.virtual.slides.unshift(slides[i]);\n }\n }\n\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n\n if (swiper.params.virtual.cache) {\n var cache = swiper.virtual.cache;\n var newCache = {};\n Object.keys(cache).forEach(function (cachedIndex) {\n var $cachedEl = cache[cachedIndex];\n var cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n\n if (cachedElIndex) {\n $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);\n }\n\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n\n swiper.virtual.update(true);\n swiper.slideTo(newActiveIndex, 0);\n },\n removeSlide: function removeSlide(slidesIndexes) {\n var swiper = this;\n\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) {\n return;\n }\n\n var activeIndex = swiper.activeIndex;\n\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\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n\n if (slidesIndexes[i] < activeIndex) {\n activeIndex -= 1;\n }\n\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n\n if (slidesIndexes < activeIndex) {\n activeIndex -= 1;\n }\n\n activeIndex = Math.max(activeIndex, 0);\n }\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\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n\n swiper.virtual.update(true);\n swiper.slideTo(0, 0);\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\n if (!swiper.params.virtual.enabled) {\n return;\n }\n\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\n if (!swiper.params.virtual.enabled) {\n return;\n }\n\n swiper.virtual.update();\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\n if (e.originalEvent) {\n e = e.originalEvent;\n } // jquery fix\n\n\n var kc = e.keyCode || e.charCode; // Directions locks\n\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && kc === 39 || swiper.isVertical() && kc === 40 || kc === 34)) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && kc === 37 || swiper.isVertical() && kc === 38 || kc === 33)) {\n return false;\n }\n\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n\n if (doc.activeElement && doc.activeElement.nodeName && (doc.activeElement.nodeName.toLowerCase() === 'input' || doc.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n\n if (swiper.params.keyboard.onlyInViewport && (kc === 33 || kc === 34 || kc === 37 || kc === 39 || kc === 38 || kc === 40)) {\n var 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 var windowWidth = win.innerWidth;\n var windowHeight = win.innerHeight;\n var swiperOffset = swiper.$el.offset();\n\n if (rtl) {\n swiperOffset.left -= swiper.$el[0].scrollLeft;\n }\n\n var swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]];\n\n for (var i = 0; i < swiperCoord.length; i += 1) {\n var point = swiperCoord[i];\n\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n inView = true;\n }\n }\n\n if (!inView) {\n return undefined;\n }\n }\n\n if (swiper.isHorizontal()) {\n if (kc === 33 || kc === 34 || kc === 37 || kc === 39) {\n if (e.preventDefault) {\n e.preventDefault();\n } else {\n e.returnValue = false;\n }\n }\n\n if ((kc === 34 || kc === 39) && !rtl || (kc === 33 || kc === 37) && rtl) {\n swiper.slideNext();\n }\n\n if ((kc === 33 || kc === 37) && !rtl || (kc === 34 || kc === 39) && rtl) {\n swiper.slidePrev();\n }\n } else {\n if (kc === 33 || kc === 34 || kc === 38 || kc === 40) {\n if (e.preventDefault) {\n e.preventDefault();\n } else {\n e.returnValue = false;\n }\n }\n\n if (kc === 34 || kc === 40) {\n swiper.slideNext();\n }\n\n if (kc === 33 || kc === 38) {\n swiper.slidePrev();\n }\n }\n\n swiper.emit('keyPress', kc);\n return undefined;\n },\n enable: function enable() {\n var swiper = this;\n\n if (swiper.keyboard.enabled) {\n return;\n }\n\n $(doc).on('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = true;\n },\n disable: function disable() {\n var swiper = this;\n\n if (!swiper.keyboard.enabled) {\n return;\n }\n\n $(doc).off('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = false;\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\n if (swiper.params.keyboard.enabled) {\n swiper.keyboard.enable();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n\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 && doc.implementation && doc.implementation.hasFeature // 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 // 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\n var Mousewheel = {\n lastScrollTime: Utils.now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n event: function event() {\n if (win.navigator.userAgent.indexOf('firefox') > -1) {\n return 'DOMMouseScroll';\n }\n\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 var sX = 0;\n var sY = 0; // spinX, spinY\n\n var pX = 0;\n var pY = 0; // pixelX, pixelY\n // Legacy\n\n if ('detail' in e) {\n sY = e.detail;\n }\n\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n } // side scrolling on FF with DOMMouseScroll\n\n\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\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n } // Fall-back if spin cannot be determined\n\n\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\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.params.cssMode) {\n e.preventDefault();\n }\n\n var target = swiper.$el;\n\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) {\n return true;\n }\n\n if (e.originalEvent) {\n e = e.originalEvent;\n } // jquery fix\n\n\n var delta = 0;\n var rtlFactor = swiper.rtlTranslate ? -1 : 1;\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)) {\n delta = data.pixelX * rtlFactor;\n } else {\n return true;\n }\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) {\n delta = data.pixelY;\n } else {\n return true;\n }\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) {\n return true;\n }\n\n if (params.invert) {\n delta = -delta;\n }\n\n if (!swiper.params.freeMode) {\n // Register the new event in a variable which stores the relevant data\n var newEvent = {\n time: Utils.now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event\n }; // Keep the most recent events\n\n var recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n var prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent); // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta) {\n swiper.mousewheel.animateSlider(newEvent);\n }\n } else {\n swiper.mousewheel.animateSlider(newEvent);\n } // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n\n\n if (swiper.mousewheel.releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n var newEvent$1 = {\n time: Utils.now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n var ref = swiper.mousewheel;\n var lastEventBeforeSnap = ref.lastEventBeforeSnap;\n var ignoreWheelEvents = lastEventBeforeSnap && newEvent$1.time < lastEventBeforeSnap.time + 500 && newEvent$1.delta <= lastEventBeforeSnap.delta && newEvent$1.direction === lastEventBeforeSnap.direction;\n\n if (!ignoreWheelEvents) {\n swiper.mousewheel.lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\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()) {\n position = swiper.minTranslate();\n }\n\n if (position <= swiper.maxTranslate()) {\n position = swiper.maxTranslate();\n }\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 // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momuntum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(swiper.mousewheel.timeout);\n swiper.mousewheel.timeout = undefined;\n var recentWheelEvents$1 = swiper.mousewheel.recentWheelEvents;\n\n if (recentWheelEvents$1.length >= 15) {\n recentWheelEvents$1.shift(); // only store the last N events\n }\n\n var prevEvent$1 = recentWheelEvents$1.length ? recentWheelEvents$1[recentWheelEvents$1.length - 1] : undefined;\n var firstEvent = recentWheelEvents$1[0];\n recentWheelEvents$1.push(newEvent$1);\n\n if (prevEvent$1 && (newEvent$1.delta > prevEvent$1.delta || newEvent$1.direction !== prevEvent$1.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents$1.splice(0);\n } else if (recentWheelEvents$1.length >= 15 && newEvent$1.time - firstEvent.time < 500 && firstEvent.delta - newEvent$1.delta >= 1 && newEvent$1.delta <= 6) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n var snapToThreshold = delta > 0 ? 0.8 : 0.2;\n swiper.mousewheel.lastEventBeforeSnap = newEvent$1;\n recentWheelEvents$1.splice(0);\n swiper.mousewheel.timeout = Utils.nextTick(function () {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n\n if (!swiper.mousewheel.timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n swiper.mousewheel.timeout = Utils.nextTick(function () {\n var snapToThreshold = 0.5;\n swiper.mousewheel.lastEventBeforeSnap = newEvent$1;\n recentWheelEvents$1.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n } // Emit event\n\n\n if (!ignoreWheelEvents) {\n swiper.emit('scroll', e);\n } // Stop autoplay\n\n\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) {\n swiper.autoplay.stop();\n } // Return page scroll on edge positions\n\n\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) {\n return true;\n }\n }\n }\n\n if (e.preventDefault) {\n e.preventDefault();\n } else {\n e.returnValue = false;\n }\n\n return false;\n },\n animateSlider: function animateSlider(newEvent) {\n var swiper = this; // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n\n if (newEvent.delta >= 6 && Utils.now() - swiper.mousewheel.lastScrollTime < 60) {\n // Return false as a default\n return true;\n } // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n\n\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n swiper.emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n swiper.emit('scroll', newEvent.raw);\n } // If you got here is because an animation has been triggered so store the current time\n\n\n swiper.mousewheel.lastScrollTime = new win.Date().getTime(); // Return false as a default\n\n return false;\n },\n releaseScroll: function releaseScroll(newEvent) {\n var swiper = this;\n var params = swiper.params.mousewheel;\n\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n\n return false;\n },\n enable: function enable() {\n var swiper = this;\n var event = Mousewheel.event();\n\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n\n if (!event) {\n return false;\n }\n\n if (swiper.mousewheel.enabled) {\n return false;\n }\n\n var target = swiper.$el;\n\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n\n target.on('mouseenter', swiper.mousewheel.handleMouseEnter);\n target.on('mouseleave', swiper.mousewheel.handleMouseLeave);\n target.on(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = true;\n return true;\n },\n disable: function disable() {\n var swiper = this;\n var event = Mousewheel.event();\n\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n\n if (!event) {\n return false;\n }\n\n if (!swiper.mousewheel.enabled) {\n return false;\n }\n\n var target = swiper.$el;\n\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n\n target.off(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = false;\n return true;\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 animateSlider: Mousewheel.animateSlider.bind(swiper),\n releaseScroll: Mousewheel.releaseScroll.bind(swiper),\n lastScrollTime: Utils.now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: []\n }\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n swiper.mousewheel.disable();\n }\n\n if (swiper.params.mousewheel.enabled) {\n swiper.mousewheel.enable();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n\n if (swiper.params.cssMode) {\n swiper.mousewheel.enable();\n }\n\n if (swiper.mousewheel.enabled) {\n 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) {\n return;\n }\n\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\n $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\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\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\n if (swiper.isBeginning && !swiper.params.loop) {\n return;\n }\n\n swiper.slidePrev();\n },\n onNextClick: function onNextClick(e) {\n var swiper = this;\n e.preventDefault();\n\n if (swiper.isEnd && !swiper.params.loop) {\n return;\n }\n\n swiper.slideNext();\n },\n init: function init() {\n var swiper = this;\n var params = swiper.params.navigation;\n\n if (!(params.nextEl || params.prevEl)) {\n return;\n }\n\n var $nextEl;\n var $prevEl;\n\n if (params.nextEl) {\n $nextEl = $(params.nextEl);\n\n if (swiper.params.uniqueNavElements && typeof params.nextEl === 'string' && $nextEl.length > 1 && swiper.$el.find(params.nextEl).length === 1) {\n $nextEl = swiper.$el.find(params.nextEl);\n }\n }\n\n if (params.prevEl) {\n $prevEl = $(params.prevEl);\n\n if (swiper.params.uniqueNavElements && typeof params.prevEl === 'string' && $prevEl.length > 1 && swiper.$el.find(params.prevEl).length === 1) {\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\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\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', swiper.navigation.onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', swiper.navigation.onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n };\n var Navigation$1 = {\n name: 'navigation',\n params: {\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 }\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\n if (swiper.params.navigation.hideOnClick && !$(e.target).is($prevEl) && !$(e.target).is($nextEl)) {\n var 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 swiper.emit('navigationShow', swiper);\n } else {\n swiper.emit('navigationHide', swiper);\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 };\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\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) {\n return;\n }\n\n var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n var $el = swiper.pagination.$el; // Current/Total\n\n var current;\n var 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) {\n current -= total;\n }\n\n if (current < 0 && swiper.params.paginationType !== 'bullets') {\n current = total + current;\n }\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 var bullets = swiper.pagination.bullets;\n var firstIndex;\n var lastIndex;\n var midIndex;\n\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\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n swiper.pagination.dynamicBulletIndex += current - swiper.previousIndex;\n\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\n firstIndex = current - swiper.pagination.dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n\n bullets.removeClass(params.bulletActiveClass + \" \" + params.bulletActiveClass + \"-next \" + params.bulletActiveClass + \"-next-next \" + params.bulletActiveClass + \"-prev \" + params.bulletActiveClass + \"-prev-prev \" + params.bulletActiveClass + \"-main\");\n\n if ($el.length > 1) {\n bullets.each(function (index, bullet) {\n var $bullet = $(bullet);\n var 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 $bullet.prev().addClass(params.bulletActiveClass + \"-prev\").prev().addClass(params.bulletActiveClass + \"-prev-prev\");\n }\n\n if (bulletIndex === lastIndex) {\n $bullet.next().addClass(params.bulletActiveClass + \"-next\").next().addClass(params.bulletActiveClass + \"-next-next\");\n }\n }\n });\n } else {\n var $bullet = bullets.eq(current);\n var bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n\n if (params.dynamicBullets) {\n var $firstDisplayedBullet = bullets.eq(firstIndex);\n var $lastDisplayedBullet = bullets.eq(lastIndex);\n\n for (var 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 - params.dynamicMainBullets) {\n for (var i$1 = params.dynamicMainBullets; i$1 >= 0; i$1 -= 1) {\n bullets.eq(bullets.length - i$1).addClass(params.bulletActiveClass + \"-main\");\n }\n\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(params.bulletActiveClass + \"-prev\");\n } else {\n $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + \"-prev\").prev().addClass(params.bulletActiveClass + \"-prev-prev\");\n $lastDisplayedBullet.next().addClass(params.bulletActiveClass + \"-next\").next().addClass(params.bulletActiveClass + \"-next-next\");\n }\n } else {\n $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + \"-prev\").prev().addClass(params.bulletActiveClass + \"-prev-prev\");\n $lastDisplayedBullet.next().addClass(params.bulletActiveClass + \"-next\").next().addClass(params.bulletActiveClass + \"-next-next\");\n }\n }\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\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\n if (params.type === 'progressbar') {\n var progressbarDirection;\n\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n\n var scale = (current + 1) / total;\n var scaleX = 1;\n var scaleY = 1;\n\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n\n $el.find(\".\" + 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 swiper.emit('paginationRender', swiper, $el[0]);\n } else {\n swiper.emit('paginationUpdate', swiper, $el[0]);\n }\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\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) {\n return;\n }\n\n var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n var $el = swiper.pagination.$el;\n var paginationHTML = '';\n\n if (params.type === 'bullets') {\n var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\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 + \"\\\">\";\n }\n }\n\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(\".\" + 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 = \"\" + ' / ' + \"\";\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 = \"\";\n }\n\n $el.html(paginationHTML);\n }\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\n if (!params.el) {\n return;\n }\n\n var $el = $(params.el);\n\n if ($el.length === 0) {\n return;\n }\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && swiper.$el.find(params.el).length === 1) {\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\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', \".\" + params.bulletClass, function onClick(e) {\n e.preventDefault();\n var index = $(this).index() * swiper.params.slidesPerGroup;\n\n if (swiper.params.loop) {\n index += swiper.loopedSlides;\n }\n\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\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) {\n return;\n }\n\n var $el = swiper.pagination.$el;\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n\n if (swiper.pagination.bullets) {\n swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n }\n\n if (params.clickable) {\n $el.off('click', \".\" + params.bulletClass);\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',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: function formatFractionCurrent(number) {\n return number;\n },\n formatFractionTotal: function formatFractionTotal(number) {\n return number;\n },\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n modifierClass: 'swiper-pagination-',\n // 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',\n // 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\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\n if (!swiper.params.loop) {\n swiper.pagination.update();\n }\n },\n slidesLengthChange: function slidesLengthChange() {\n var swiper = this;\n\n if (swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n snapGridLengthChange: function snapGridLengthChange() {\n var swiper = this;\n\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\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && swiper.pagination.$el.length > 0 && !$(e.target).hasClass(swiper.params.pagination.bulletClass)) {\n var isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n\n if (isHidden === true) {\n swiper.emit('paginationShow', swiper);\n } else {\n swiper.emit('paginationHide', swiper);\n }\n\n swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n }\n }\n };\n var Scrollbar = {\n setTranslate: function setTranslate() {\n var swiper = this;\n\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) {\n return;\n }\n\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 var newSize = dragSize;\n var newPos = (trackSize - dragSize) * progress;\n\n if (rtl) {\n newPos = -newPos;\n\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\n if (swiper.isHorizontal()) {\n $dragEl.transform(\"translate3d(\" + newPos + \"px, 0, 0)\");\n $dragEl[0].style.width = newSize + \"px\";\n } else {\n $dragEl.transform(\"translate3d(0px, \" + newPos + \"px, 0)\");\n $dragEl[0].style.height = newSize + \"px\";\n }\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\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) {\n return;\n }\n\n swiper.scrollbar.$dragEl.transition(duration);\n },\n updateSize: function updateSize() {\n var swiper = this;\n\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) {\n return;\n }\n\n var scrollbar = swiper.scrollbar;\n var $dragEl = scrollbar.$dragEl;\n var $el = scrollbar.$el;\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n var trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n var divider = swiper.size / swiper.virtualSize;\n var moveDivider = divider * (trackSize / swiper.size);\n var dragSize;\n\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\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\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\n if (swiper.isHorizontal()) {\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;\n }\n\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : 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 var positionRatio;\n positionRatio = (scrollbar.getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n var position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\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 ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n scrollbar.setDragPosition(e);\n clearTimeout(swiper.scrollbar.dragTimeout);\n $el.transition(0);\n\n if (params.hide) {\n $el.css('opacity', 1);\n }\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\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) {\n return;\n }\n\n if (e.preventDefault) {\n e.preventDefault();\n } else {\n e.returnValue = false;\n }\n\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 var params = swiper.params.scrollbar;\n var scrollbar = swiper.scrollbar;\n var $wrapperEl = swiper.$wrapperEl;\n var $el = scrollbar.$el;\n\n if (!swiper.scrollbar.isTouched) {\n return;\n }\n\n swiper.scrollbar.isTouched = false;\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n\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\n swiper.emit('scrollbarDragEnd', e);\n\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n },\n enableDraggable: function enableDraggable() {\n var swiper = this;\n\n if (!swiper.params.scrollbar.el) {\n return;\n }\n\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 ? {\n passive: false,\n capture: false\n } : false;\n var passiveListener = Support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n\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\n if (!swiper.params.scrollbar.el) {\n return;\n }\n\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 ? {\n passive: false,\n capture: false\n } : false;\n var passiveListener = Support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n\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\n if (!swiper.params.scrollbar.el) {\n return;\n }\n\n var scrollbar = swiper.scrollbar;\n var $swiperEl = swiper.$el;\n var params = swiper.params.scrollbar;\n var $el = $(params.el);\n\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\n if ($dragEl.length === 0) {\n $dragEl = $(\"
\");\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 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 var Parallax = {\n setTransform: function setTransform(el, progress) {\n var swiper = this;\n var rtl = swiper.rtl;\n var $el = $(el);\n var rtlFactor = rtl ? -1 : 1;\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\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\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]').each(function (index, el) {\n swiper.parallax.setTransform(el, progress);\n });\n slides.each(function (slideIndex, slideEl) {\n var slideProgress = slideEl.progress;\n\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\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]').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 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]').each(function (index, parallaxEl) {\n var $parallaxEl = $(parallaxEl);\n var parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n\n if (duration === 0) {\n parallaxDuration = 0;\n }\n\n $parallaxEl.transition(parallaxDuration);\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\n if (!swiper.params.parallax.enabled) {\n return;\n }\n\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n init: function init() {\n var swiper = this;\n\n if (!swiper.params.parallax.enabled) {\n return;\n }\n\n swiper.parallax.setTranslate();\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n\n if (!swiper.params.parallax.enabled) {\n return;\n }\n\n swiper.parallax.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n\n if (!swiper.params.parallax.enabled) {\n return;\n }\n\n swiper.parallax.setTransition(duration);\n }\n }\n };\n var Zoom = {\n // Calc Scale From Multi-touches\n getDistanceBetweenTouches: function getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) {\n return 1;\n }\n\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\n if (!Support.gestures) {\n if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {\n return;\n }\n\n zoom.fakeGestureTouched = true;\n gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest(\".\" + swiper.params.slideClass);\n\n if (gesture.$slideEl.length === 0) {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(\".\" + params.containerClass);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n\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\n if (!Support.gestures) {\n if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {\n return;\n }\n\n zoom.fakeGestureMoved = true;\n gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n return;\n }\n\n if (Support.gestures) {\n zoom.scale = e.scale * zoom.currentScale;\n } else {\n zoom.scale = gesture.scaleMove / gesture.scaleStart * zoom.currentScale;\n }\n\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + Math.pow(zoom.scale - gesture.maxRatio + 1, 0.5);\n }\n\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - Math.pow(params.minRatio - zoom.scale + 1, 0.5);\n }\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\n if (!Support.gestures) {\n if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\n return;\n }\n\n if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android) {\n return;\n }\n\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n return;\n }\n\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\n if (zoom.scale === 1) {\n gesture.$slideEl = undefined;\n }\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\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n return;\n }\n\n if (image.isTouched) {\n return;\n }\n\n if (Device.android) {\n e.preventDefault();\n }\n\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\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!image.isTouched || !gesture.$slideEl) {\n return;\n }\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\n if (swiper.rtl) {\n image.startX = -image.startX;\n image.startY = -image.startY;\n }\n } // Define if we need image drag\n\n\n var scaledWidth = image.width * zoom.scale;\n var scaledHeight = image.height * zoom.scale;\n\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) {\n return;\n }\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 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 (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n return;\n }\n\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n return;\n }\n }\n\n e.preventDefault();\n e.stopPropagation();\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\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\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + Math.pow(image.currentY - image.maxY + 1, 0.8);\n } // Velocity\n\n\n if (!velocity.prevPositionX) {\n velocity.prevPositionX = image.touchesCurrent.x;\n }\n\n if (!velocity.prevPositionY) {\n velocity.prevPositionY = image.touchesCurrent.y;\n }\n\n if (!velocity.prevTime) {\n velocity.prevTime = Date.now();\n }\n\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\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) {\n velocity.x = 0;\n }\n\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) {\n velocity.y = 0;\n }\n\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\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\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n return;\n }\n\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\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; // Fix duration\n\n if (velocity.x !== 0) {\n momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n }\n\n if (velocity.y !== 0) {\n momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n }\n\n var momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY; // Define if we need image drag\n\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 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\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n zoom.currentScale = 1;\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 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 if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(\".\" + swiper.params.slideActiveClass);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(\".\" + params.containerClass);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n return;\n }\n\n gesture.$slideEl.addClass(\"\" + params.zoomedSlideClass);\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\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 imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\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 translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\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 var zoom = swiper.zoom;\n var params = swiper.params.zoom;\n var gesture = zoom.gesture;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(\".\" + swiper.params.slideActiveClass);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(\".\" + params.containerClass);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n return;\n }\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\n if (zoom.enabled) {\n return;\n }\n\n zoom.enabled = true;\n var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n var activeListenerWithCapture = Support.passiveListener ? {\n passive: false,\n capture: true\n } : true;\n var slideSelector = \".\" + swiper.params.slideClass; // Scale image\n\n if (Support.gestures) {\n swiper.$wrapperEl.on('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.on('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n } // Move image\n\n\n swiper.$wrapperEl.on(swiper.touchEvents.move, \".\" + swiper.params.zoom.containerClass, zoom.onTouchMove, activeListenerWithCapture);\n },\n disable: function disable() {\n var swiper = this;\n var zoom = swiper.zoom;\n\n if (!zoom.enabled) {\n return;\n }\n\n swiper.zoom.enabled = false;\n var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n var activeListenerWithCapture = Support.passiveListener ? {\n passive: false,\n capture: true\n } : true;\n var slideSelector = \".\" + swiper.params.slideClass; // Scale image\n\n if (Support.gestures) {\n swiper.$wrapperEl.off('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.off('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n } // Move image\n\n\n swiper.$wrapperEl.off(swiper.touchEvents.move, \".\" + swiper.params.zoom.containerClass, zoom.onTouchMove, activeListenerWithCapture);\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 '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 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\n scale = value;\n }\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n\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\n if (!swiper.zoom.enabled) {\n return;\n }\n\n swiper.zoom.onTouchStart(e);\n },\n touchEnd: function touchEnd(e) {\n var swiper = this;\n\n if (!swiper.zoom.enabled) {\n return;\n }\n\n swiper.zoom.onTouchEnd(e);\n },\n doubleTap: function doubleTap(e) {\n var swiper = this;\n\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\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n swiper.zoom.onTransitionEnd();\n }\n },\n slideChange: function slideChange() {\n var swiper = this;\n\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n swiper.zoom.onTransitionEnd();\n }\n }\n }\n };\n var Lazy = {\n loadInSlide: function loadInSlide(index, loadInDuplicate) {\n if (loadInDuplicate === void 0) loadInDuplicate = true;\n var swiper = this;\n var params = swiper.params.lazy;\n\n if (typeof index === 'undefined') {\n return;\n }\n\n if (swiper.slides.length === 0) {\n return;\n }\n\n var isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n var $slideEl = isVirtual ? swiper.$wrapperEl.children(\".\" + swiper.params.slideClass + \"[data-swiper-slide-index=\\\"\" + index + \"\\\"]\") : swiper.slides.eq(index);\n var $images = $slideEl.find(\".\" + params.elementClass + \":not(.\" + params.loadedClass + \"):not(.\" + params.loadingClass + \")\");\n\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n $images = $images.add($slideEl[0]);\n }\n\n if ($images.length === 0) {\n return;\n }\n\n $images.each(function (imageIndex, imageEl) {\n var $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\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 swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, function () {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) {\n return;\n }\n\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\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\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\n if (swiper.params.loop && loadInDuplicate) {\n var slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n\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\n swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\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 var slidesPerView = swiperParams.slidesPerView;\n\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]) {\n return true;\n }\n\n return false;\n }\n\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n\n return $(slideEl).index();\n }\n\n if (!swiper.lazy.initialImageLoaded) {\n swiper.lazy.initialImageLoaded = true;\n }\n\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)) {\n swiper.lazy.loadInSlide(i);\n }\n }\n } else {\n swiper.lazy.loadInSlide(activeIndex);\n }\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); // Next Slides\n\n for (var i$1 = activeIndex + slidesPerView; i$1 < maxIndex; i$1 += 1) {\n if (slideExist(i$1)) {\n swiper.lazy.loadInSlide(i$1);\n }\n } // Prev Slides\n\n\n for (var i$2 = minIndex; i$2 < activeIndex; i$2 += 1) {\n if (slideExist(i$2)) {\n swiper.lazy.loadInSlide(i$2);\n }\n }\n } else {\n var nextSlide = $wrapperEl.children(\".\" + swiperParams.slideNextClass);\n\n if (nextSlide.length > 0) {\n swiper.lazy.loadInSlide(slideIndex(nextSlide));\n }\n\n var prevSlide = $wrapperEl.children(\".\" + swiperParams.slidePrevClass);\n\n if (prevSlide.length > 0) {\n 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 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\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\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\n if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n swiper.lazy.load();\n }\n },\n resize: function resize() {\n var swiper = this;\n\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n scrollbarDragMove: function scrollbarDragMove() {\n var swiper = this;\n\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n transitionStart: function transitionStart() {\n var swiper = this;\n\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\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n swiper.lazy.load();\n }\n },\n slideChange: function slideChange() {\n var swiper = this;\n\n if (swiper.params.lazy.enabled && swiper.params.cssMode) {\n swiper.lazy.load();\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\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n\n return maxIndex;\n };\n }();\n\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1; // 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\n var i1;\n var i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) {\n return 0;\n } // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n\n\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\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\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid) : 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\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\n if (swiper.params.controller.by === 'slide') {\n swiper.controller.getInterpolateFunction(c); // 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\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\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\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\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n\n if (duration !== 0) {\n c.transitionStart();\n\n if (c.params.autoHeight) {\n Utils.nextTick(function () {\n c.updateAutoHeight();\n });\n }\n\n c.$wrapperEl.transitionEnd(function () {\n if (!controlled) {\n return;\n }\n\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n\n c.transitionEnd();\n });\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 },\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\n if (!swiper.controller.control) {\n return;\n }\n\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\n if (!swiper.controller.control) {\n return;\n }\n\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\n if (!swiper.controller.control) {\n return;\n }\n\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\n if (!swiper.controller.control) {\n return;\n }\n\n swiper.controller.setTranslate(translate, byController);\n },\n setTransition: function setTransition(duration, byController) {\n var swiper = this;\n\n if (!swiper.controller.control) {\n return;\n }\n\n swiper.controller.setTransition(duration, byController);\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\n if (e.keyCode !== 13) {\n return;\n }\n\n var $targetEl = $(e.target);\n\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n\n if (swiper.isEnd) {\n swiper.a11y.notify(params.lastSlideMessage);\n } else {\n swiper.a11y.notify(params.nextSlideMessage);\n }\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\n if (swiper.isBeginning) {\n swiper.a11y.notify(params.firstSlideMessage);\n } else {\n swiper.a11y.notify(params.prevSlideMessage);\n }\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\n if (notification.length === 0) {\n return;\n }\n\n notification.html('');\n notification.html(message);\n },\n updateNavigation: function updateNavigation() {\n var swiper = this;\n\n if (swiper.params.loop || !swiper.navigation) {\n return;\n }\n\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\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\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 swiper.$el.append(swiper.a11y.liveRegion); // Navigation\n\n var params = swiper.params.a11y;\n var $nextEl;\n var $prevEl;\n\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\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\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 } // Pagination\n\n\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\n if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) {\n swiper.a11y.liveRegion.remove();\n }\n\n var $nextEl;\n var $prevEl;\n\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl) {\n $nextEl.off('keydown', swiper.a11y.onEnterKey);\n }\n\n if ($prevEl) {\n $prevEl.off('keydown', swiper.a11y.onEnterKey);\n } // Pagination\n\n\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: $(\"\")\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\n if (!swiper.params.a11y.enabled) {\n return;\n }\n\n swiper.a11y.init();\n swiper.a11y.updateNavigation();\n },\n toEdge: function toEdge() {\n var swiper = this;\n\n if (!swiper.params.a11y.enabled) {\n return;\n }\n\n swiper.a11y.updateNavigation();\n },\n fromEdge: function fromEdge() {\n var swiper = this;\n\n if (!swiper.params.a11y.enabled) {\n return;\n }\n\n swiper.a11y.updateNavigation();\n },\n paginationUpdate: function paginationUpdate() {\n var swiper = this;\n\n if (!swiper.params.a11y.enabled) {\n return;\n }\n\n swiper.a11y.updatePagination();\n },\n destroy: function destroy() {\n var swiper = this;\n\n if (!swiper.params.a11y.enabled) {\n return;\n }\n\n swiper.a11y.destroy();\n }\n }\n };\n var History = {\n init: function init() {\n var swiper = this;\n\n if (!swiper.params.history) {\n return;\n }\n\n if (!win.history || !win.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n\n var history = swiper.history;\n history.initialized = true;\n history.paths = History.getPathValues();\n\n if (!history.paths.key && !history.paths.value) {\n return;\n }\n\n history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);\n\n if (!swiper.params.history.replaceState) {\n win.addEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n\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) {\n return part !== '';\n });\n var total = pathArray.length;\n var key = pathArray[total - 2];\n var value = pathArray[total - 1];\n return {\n key: key,\n value: value\n };\n },\n setHistory: function setHistory(key, index) {\n var swiper = this;\n\n if (!swiper.history.initialized || !swiper.params.history.enabled) {\n return;\n }\n\n var slide = swiper.slides.eq(index);\n var value = History.slugify(slide.attr('data-history'));\n\n if (!win.location.pathname.includes(key)) {\n value = key + \"/\" + value;\n }\n\n var currentState = win.history.state;\n\n if (currentState && currentState.value === value) {\n return;\n }\n\n if (swiper.params.history.replaceState) {\n win.history.replaceState({\n value: value\n }, null, value);\n } else {\n win.history.pushState({\n value: value\n }, null, value);\n }\n },\n slugify: function slugify(text) {\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n },\n scrollToSlide: function scrollToSlide(speed, value, runCallbacks) {\n var swiper = this;\n\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\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 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\n if (swiper.params.history.enabled) {\n swiper.history.init();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n\n if (swiper.params.history.enabled) {\n swiper.history.destroy();\n }\n },\n transitionEnd: function transitionEnd() {\n var swiper = this;\n\n if (swiper.history.initialized) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n },\n slideChange: function slideChange() {\n var swiper = this;\n\n if (swiper.history.initialized && swiper.params.cssMode) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\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\n if (newHash !== activeSlideHash) {\n var newIndex = swiper.$wrapperEl.children(\".\" + swiper.params.slideClass + \"[data-hash=\\\"\" + newHash + \"\\\"]\").index();\n\n if (typeof newIndex === 'undefined') {\n return;\n }\n\n swiper.slideTo(newIndex);\n }\n },\n setHash: function setHash() {\n var swiper = this;\n\n if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) {\n return;\n }\n\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\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) {\n return;\n }\n\n swiper.hashNavigation.initialized = true;\n var hash = doc.location.hash.replace('#', '');\n\n if (hash) {\n var speed = 0;\n\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\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\n if (swiper.params.hashNavigation.watchState) {\n $(win).on('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n\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\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.init();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.destroy();\n }\n },\n transitionEnd: function transitionEnd() {\n var swiper = this;\n\n if (swiper.hashNavigation.initialized) {\n swiper.hashNavigation.setHash();\n }\n },\n slideChange: function slideChange() {\n var swiper = this;\n\n if (swiper.hashNavigation.initialized && swiper.params.cssMode) {\n swiper.hashNavigation.setHash();\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\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\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\n if (swiper.params.cssMode && swiper.autoplay.running) {\n swiper.autoplay.run();\n }\n }, delay);\n },\n start: function start() {\n var swiper = this;\n\n if (typeof swiper.autoplay.timeout !== 'undefined') {\n return false;\n }\n\n if (swiper.autoplay.running) {\n return false;\n }\n\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\n if (!swiper.autoplay.running) {\n return false;\n }\n\n if (typeof swiper.autoplay.timeout === 'undefined') {\n return false;\n }\n\n if (swiper.autoplay.timeout) {\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = undefined;\n }\n\n swiper.autoplay.running = false;\n swiper.emit('autoplayStop');\n return true;\n },\n pause: function pause(speed) {\n var swiper = this;\n\n if (!swiper.autoplay.running) {\n return;\n }\n\n if (swiper.autoplay.paused) {\n return;\n }\n\n if (swiper.autoplay.timeout) {\n clearTimeout(swiper.autoplay.timeout);\n }\n\n swiper.autoplay.paused = true;\n\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 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 onVisibilityChange: function onVisibilityChange() {\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n swiper.autoplay.pause();\n }\n\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n swiper.autoplay.run();\n swiper.autoplay.paused = false;\n }\n },\n onTransitionEnd: function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) {\n return;\n }\n\n if (e.target !== this) {\n return;\n }\n\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n swiper.autoplay.paused = false;\n\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\n if (swiper.params.autoplay.enabled) {\n swiper.autoplay.start();\n document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n }\n },\n beforeTransitionStart: function beforeTransitionStart(speed, internal) {\n var swiper = this;\n\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\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 touchEnd: function touchEnd() {\n var swiper = this;\n\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.run();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n\n if (swiper.autoplay.running) {\n swiper.autoplay.stop();\n }\n\n document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n }\n }\n };\n var Fade = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var slides = swiper.slides;\n\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\n if (!swiper.params.virtualTranslate) {\n tx -= swiper.translate;\n }\n\n var ty = 0;\n\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n\n var slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n $slideEl.css({\n opacity: slideOpacity\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\n if (swiper.params.virtualTranslate && duration !== 0) {\n var eventTriggered = false;\n slides.transitionEnd(function () {\n if (eventTriggered) {\n return;\n }\n\n if (!swiper || swiper.destroyed) {\n return;\n }\n\n eventTriggered = true;\n swiper.animating = false;\n var triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n\n for (var i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\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\n if (swiper.params.effect !== 'fade') {\n return;\n }\n\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\n if (swiper.params.effect !== 'fade') {\n return;\n }\n\n swiper.fadeEffect.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n\n if (swiper.params.effect !== 'fade') {\n return;\n }\n\n swiper.fadeEffect.setTransition(duration);\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\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $wrapperEl.append($cubeShadowEl);\n }\n\n $cubeShadowEl.css({\n height: swiperWidth + \"px\"\n });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $el.append($cubeShadowEl);\n }\n }\n }\n\n for (var i = 0; i < slides.length; i += 1) {\n var $slideEl = slides.eq(i);\n var slideIndex = i;\n\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n\n var slideAngle = slideIndex * 90;\n var round = Math.floor(slideAngle / 360);\n\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\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\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\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\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n\n if (rtl) {\n wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n }\n\n $slideEl.transform(transform);\n\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\n if (shadowBefore.length === 0) {\n shadowBefore = $(\"
\");\n $slideEl.append(shadowBefore);\n }\n\n if (shadowAfter.length === 0) {\n shadowAfter = $(\"
\");\n $slideEl.append(shadowAfter);\n }\n\n if (shadowBefore.length) {\n shadowBefore[0].style.opacity = Math.max(-progress, 0);\n }\n\n if (shadowAfter.length) {\n shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\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 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\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\n var zFactor = Browser.isSafari || Browser.isUiWebView ? -swiperSize / 2 : 0;\n $wrapperEl.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.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\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\n if (swiper.params.effect !== 'cube') {\n return;\n }\n\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\n if (swiper.params.effect !== 'cube') {\n return;\n }\n\n swiper.cubeEffect.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n\n if (swiper.params.effect !== 'cube') {\n return;\n }\n\n swiper.cubeEffect.setTransition(duration);\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\n for (var i = 0; i < slides.length; i += 1) {\n var $slideEl = slides.eq(i);\n var progress = $slideEl[0].progress;\n\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\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\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\n if (shadowBefore.length === 0) {\n shadowBefore = $(\"
\");\n $slideEl.append(shadowBefore);\n }\n\n if (shadowAfter.length === 0) {\n shadowAfter = $(\"
\");\n $slideEl.append(shadowAfter);\n }\n\n if (shadowBefore.length) {\n shadowBefore[0].style.opacity = Math.max(-progress, 0);\n }\n\n if (shadowAfter.length) {\n shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n\n $slideEl.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.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n\n if (swiper.params.virtualTranslate && duration !== 0) {\n var eventTriggered = false; // eslint-disable-next-line\n\n slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {\n if (eventTriggered) {\n return;\n }\n\n if (!swiper || swiper.destroyed) {\n return;\n } // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;\n\n\n eventTriggered = true;\n swiper.animating = false;\n var triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n\n for (var i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\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\n if (swiper.params.effect !== 'flip') {\n return;\n }\n\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\n if (swiper.params.effect !== 'flip') {\n return;\n }\n\n swiper.flipEffect.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n\n if (swiper.params.effect !== 'flip') {\n return;\n }\n\n swiper.flipEffect.setTransition(duration);\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; // Each slide offset from center\n\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 var rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n var rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0\n\n var translateZ = -translate * Math.abs(offsetMultiplier);\n var stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders\n\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n\n var translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n var translateX = isHorizontal ? stretch * offsetMultiplier : 0; // Fix for ultra small values\n\n if (Math.abs(translateX) < 0.001) {\n translateX = 0;\n }\n\n if (Math.abs(translateY) < 0.001) {\n translateY = 0;\n }\n\n if (Math.abs(translateZ) < 0.001) {\n translateZ = 0;\n }\n\n if (Math.abs(rotateY) < 0.001) {\n rotateY = 0;\n }\n\n if (Math.abs(rotateX) < 0.001) {\n rotateX = 0;\n }\n\n var slideTransform = \"translate3d(\" + translateX + \"px,\" + translateY + \"px,\" + translateZ + \"px) rotateX(\" + rotateX + \"deg) rotateY(\" + rotateY + \"deg)\";\n $slideEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n\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\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = $(\"
\");\n $slideEl.append($shadowBeforeEl);\n }\n\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = $(\"
\");\n $slideEl.append($shadowAfterEl);\n }\n\n if ($shadowBeforeEl.length) {\n $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n }\n\n if ($shadowAfterEl.length) {\n $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n } // Set correct perspective for IE10\n\n\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.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\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\n if (swiper.params.effect !== 'coverflow') {\n return;\n }\n\n swiper.classNames.push(swiper.params.containerModifierClass + \"coverflow\");\n swiper.classNames.push(swiper.params.containerModifierClass + \"3d\");\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n\n if (swiper.params.effect !== 'coverflow') {\n return;\n }\n\n swiper.coverflowEffect.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n\n if (swiper.params.effect !== 'coverflow') {\n return;\n }\n\n swiper.coverflowEffect.setTransition(duration);\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\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\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\n if (!thumbsSwiper) {\n return;\n }\n\n var clickedIndex = thumbsSwiper.clickedIndex;\n var clickedSlide = thumbsSwiper.clickedSlide;\n\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) {\n return;\n }\n\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) {\n return;\n }\n\n var slideToIndex;\n\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n\n if (swiper.params.loop) {\n var currentIndex = swiper.activeIndex;\n\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\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\n if (typeof prevIndex === 'undefined') {\n slideToIndex = nextIndex;\n } else if (typeof nextIndex === 'undefined') {\n slideToIndex = prevIndex;\n } else if (nextIndex - currentIndex < currentIndex - prevIndex) {\n slideToIndex = nextIndex;\n } else {\n slideToIndex = prevIndex;\n }\n }\n\n swiper.slideTo(slideToIndex);\n },\n update: function update(initial) {\n var swiper = this;\n var thumbsSwiper = swiper.thumbs.swiper;\n\n if (!thumbsSwiper) {\n return;\n }\n\n var slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n var autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n var useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n var currentThumbsIndex = thumbsSwiper.activeIndex;\n var newThumbsIndex;\n var direction;\n\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix(); // eslint-disable-next-line\n\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n } // Find actual thumbs index to slide to\n\n\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\n if (typeof prevThumbsIndex === 'undefined') {\n newThumbsIndex = nextThumbsIndex;\n } else if (typeof nextThumbsIndex === 'undefined') {\n newThumbsIndex = prevThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = currentThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = nextThumbsIndex;\n } else {\n newThumbsIndex = prevThumbsIndex;\n }\n\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\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\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n } // Activate thumbs\n\n\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 if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\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 multipleActiveThumbs: true,\n autoScrollOffset: 0,\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\n if (!thumbs || !thumbs.swiper) {\n return;\n }\n\n swiper.thumbs.init();\n swiper.thumbs.update(true);\n },\n slideChange: function slideChange() {\n var swiper = this;\n\n if (!swiper.thumbs.swiper) {\n return;\n }\n\n swiper.thumbs.update();\n },\n update: function update() {\n var swiper = this;\n\n if (!swiper.thumbs.swiper) {\n return;\n }\n\n swiper.thumbs.update();\n },\n resize: function resize() {\n var swiper = this;\n\n if (!swiper.thumbs.swiper) {\n return;\n }\n\n swiper.thumbs.update();\n },\n observerUpdate: function observerUpdate() {\n var swiper = this;\n\n if (!swiper.thumbs.swiper) {\n return;\n }\n\n swiper.thumbs.update();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n var thumbsSwiper = swiper.thumbs.swiper;\n\n if (!thumbsSwiper) {\n return;\n }\n\n thumbsSwiper.setTransition(duration);\n },\n beforeDestroy: function beforeDestroy() {\n var swiper = this;\n var thumbsSwiper = swiper.thumbs.swiper;\n\n if (!thumbsSwiper) {\n return;\n }\n\n if (swiper.thumbs.swiperCreated && thumbsSwiper) {\n thumbsSwiper.destroy();\n }\n }\n }\n }; // Swiper Class\n\n var components = [Device$1, Support$1, Browser$1, Resize, Observer$1, Virtual$1, Keyboard$1, Mousewheel$1, Navigation$1, Pagination$1, Scrollbar$1, Parallax$1, Zoom$1, Lazy$1, Controller$1, A11y, History$1, HashNavigation$1, Autoplay$1, EffectFade, EffectCube, EffectFlip, EffectCoverflow, Thumbs$1];\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 return Swiper;\n});","import * as Swiper from 'swiper/js/swiper.js'\n\nexport { Swiper }\n"],"sourceRoot":""}