{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/qrcode/lib/core/utils.js","webpack:///./node_modules/qrcode/lib/core/mode.js","webpack:///./src/js/utils/util-extent.js","webpack:///./node_modules/core-js/internals/an-instance.js","webpack:///./src/js/components/aos.js","webpack:///./node_modules/core-js/internals/get-iterator-method.js","webpack:///./node_modules/core-js/internals/redefine-all.js","webpack:///./node_modules/core-js/internals/iterate.js","webpack:///./node_modules/qrcode/lib/core/error-correction-level.js","webpack:///./node_modules/core-js/internals/is-array-iterator-method.js","webpack:///./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack:///./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack:///./node_modules/core-js/internals/task.js","webpack:///./node_modules/core-js/internals/engine-is-ios.js","webpack:///./node_modules/core-js/internals/new-promise-capability.js","webpack:///./node_modules/core-js/internals/internal-metadata.js","webpack:///./node_modules/core-js/internals/whitespaces.js","webpack:///./node_modules/core-js/internals/native-url.js","webpack:///./node_modules/qrcode/lib/core/error-correction-code.js","webpack:///./node_modules/qrcode/lib/core/version-check.js","webpack:///./node_modules/qrcode/lib/core/regex.js","webpack:///./node_modules/qrcode/lib/renderer/utils.js","webpack:///./node_modules/swiper/js/swiper.js","webpack:///./node_modules/qrcode/lib/browser.js","webpack:///./node_modules/core-js/modules/es.array.filter.js","webpack:///./node_modules/core-js/modules/es.array.find.js","webpack:///./node_modules/core-js/modules/es.object.get-own-property-descriptor.js","webpack:///./node_modules/core-js/modules/es.object.get-own-property-descriptors.js","webpack:///./node_modules/core-js/modules/es.promise.js","webpack:///./node_modules/core-js/internals/native-promise-constructor.js","webpack:///./node_modules/core-js/internals/microtask.js","webpack:///./node_modules/core-js/internals/promise-resolve.js","webpack:///./node_modules/core-js/internals/host-report-errors.js","webpack:///./node_modules/core-js/internals/perform.js","webpack:///./node_modules/core-js/modules/es.map.js","webpack:///./node_modules/core-js/internals/collection.js","webpack:///./node_modules/core-js/internals/freezing.js","webpack:///./node_modules/core-js/internals/collection-strong.js","webpack:///./node_modules/core-js/modules/es.string.trim.js","webpack:///./node_modules/core-js/internals/string-trim.js","webpack:///./node_modules/core-js/internals/string-trim-forced.js","webpack:///./node_modules/core-js/modules/web.url.js","webpack:///./node_modules/core-js/internals/object-assign.js","webpack:///./node_modules/core-js/internals/array-from.js","webpack:///./node_modules/core-js/internals/string-punycode-to-ascii.js","webpack:///./node_modules/core-js/modules/web.url-search-params.js","webpack:///./node_modules/core-js/internals/get-iterator.js","webpack:///./node_modules/qrcode/lib/can-promise.js","webpack:///./node_modules/qrcode/lib/core/qrcode.js","webpack:///./node_modules/qrcode/lib/core/bit-buffer.js","webpack:///./node_modules/qrcode/lib/core/bit-matrix.js","webpack:///./node_modules/qrcode/lib/core/alignment-pattern.js","webpack:///./node_modules/qrcode/lib/core/finder-pattern.js","webpack:///./node_modules/qrcode/lib/core/mask-pattern.js","webpack:///./node_modules/qrcode/lib/core/reed-solomon-encoder.js","webpack:///./node_modules/qrcode/lib/core/polynomial.js","webpack:///./node_modules/qrcode/lib/core/galois-field.js","webpack:///./node_modules/qrcode/lib/core/version.js","webpack:///./node_modules/qrcode/lib/core/format-info.js","webpack:///./node_modules/qrcode/lib/core/segments.js","webpack:///./node_modules/qrcode/lib/core/numeric-data.js","webpack:///./node_modules/qrcode/lib/core/alphanumeric-data.js","webpack:///./node_modules/qrcode/lib/core/byte-data.js","webpack:///./node_modules/encode-utf8/index.js","webpack:///./node_modules/qrcode/lib/core/kanji-data.js","webpack:///./node_modules/dijkstrajs/dijkstra.js","webpack:///./node_modules/qrcode/lib/renderer/canvas.js","webpack:///./node_modules/qrcode/lib/renderer/svg-tag.js","webpack:///./src/js/libs/youtube/lite-yt-embed.js","webpack:///./src/js/pages/car-msg-index.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","2","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","toSJISFunction","CODEWORDS_COUNT","getSymbolSize","version","Error","getSymbolTotalCodewords","getBCHDigit","digit","setToSJISFunction","f","isKanjiModeEnabled","toSJIS","kanji","VersionCheck","Regex","NUMERIC","id","bit","ccBits","ALPHANUMERIC","BYTE","KANJI","MIXED","getCharCountIndicator","isValid","getBestModeForData","dataStr","testNumeric","testAlphanumeric","testKanji","toString","from","defaultValue","string","toLowerCase","fromString","e","$","tmpl","pStr","pData","reg","str","keys","forEach","item","RegExp","replace","setGA","undefined","dataLayer","event","event_userID","it","Constructor","TypeError","init","aosSettings","AOSApi","AOS","AOSSettings","refresh","this","refreshHard","classof","Iterators","ITERATOR","wellKnownSymbol","redefine","target","src","options","anObject","isArrayIteratorMethod","toLength","getIteratorMethod","callWithSafeIterationClosing","Result","stopped","iterable","fn","that","AS_ENTRIES","IS_ITERATOR","iterator","iterFn","index","next","step","boundFunction","done","stop","L","M","Q","H","level","ArrayPrototype","Array","ENTRIES","error","returnMethod","SAFE_CLOSING","called","iteratorWithReturn","exec","SKIP_CLOSING","ITERATION_SUPPORT","defer","channel","port","global","fails","html","createElement","IS_IOS","location","set","setImmediate","clear","clearImmediate","process","MessageChannel","Dispatch","counter","queue","run","runner","listener","post","postMessage","protocol","host","args","arguments","Function","nextTick","now","port2","port1","onmessage","addEventListener","importScripts","appendChild","removeChild","setTimeout","userAgent","test","aFunction","PromiseCapability","C","resolve","reject","promise","$$resolve","$$reject","hiddenKeys","isObject","has","uid","FREEZING","METADATA","isExtensible","setMetadata","objectID","weakData","meta","REQUIRED","fastKey","getWeakData","onFreeze","IS_PURE","url","URL","searchParams","pathname","toJSON","sort","href","String","URLSearchParams","username","hash","ECLevel","EC_BLOCKS_TABLE","EC_CODEWORDS_TABLE","getBlocksCount","errorCorrectionLevel","getTotalCodewordsCount","isNaN","byte","BYTE_KANJI","TEST_KANJI","TEST_NUMERIC","TEST_ALPHANUMERIC","hex2rgba","hex","hexCode","split","concat","map","hexValue","parseInt","join","g","b","a","getOptions","color","margin","width","scale","dark","light","type","rendererOpts","getScale","qrSize","opts","getImageWidth","Math","floor","qrToImageData","imgData","qr","size","symbolSize","scaledMargin","palette","posDst","pxColor","obj","constructor","extend","doc","document","ssrDocument","body","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","hostname","origin","search","win","navigator","history","replaceState","pushState","go","back","CustomEvent","getComputedStyle","getPropertyValue","Image","Date","screen","clearTimeout","matchMedia","Dom7","arr","selector","context","els","tempParent","trim","indexOf","toCreate","innerHTML","match","nodeType","unique","uniqueArray","Class","Methods","addClass","className","classes","classList","add","removeClass","remove","hasClass","contains","toggleClass","toggle","attr","attrs","arguments$1","getAttribute","attrName","removeAttr","removeAttribute","el","dom7ElementDataStorage","dataKey","transform","elStyle","webkitTransform","transition","duration","webkitTransitionDuration","transitionDuration","on","assign","len","eventType","targetSelector","capture","handleLiveEvent","eventData","dom7EventData","unshift","is","parents","k","handleEvent","events","event$1","dom7LiveListeners","proxyListener","dom7Listeners","off","handlers","handler","dom7proxy","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","child","previousSibling","eq","returnIndex","append","newChild","tempDiv","firstChild","prepend","insertBefore","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parent","parentNode","closest","find","foundElements","found","matchedItems","toAdd","methodName","Utils","deleteProps","delay","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","MozTransform","OTransform","MsTransform","msTransform","m41","m42","parseUrlQuery","params","param","query","urlToParse","paramsPart","decodeURIComponent","len$1","to","nextSource","keysArray","nextIndex","nextKey","desc","getOwnPropertyDescriptor","Support","touch","DocumentTouch","pointerEvents","PointerEvent","maxTouchPoints","observer","passiveListener","supportsPassive","gestures","SwiperClass","self","eventsListeners","eventName","staticAccessors","components","configurable","priority","method","once","onceHandler","f7proxy","eventHandler","emit","isArray","eventsArray","useModulesParams","instanceParams","instance","moduleName","useModules","modulesParams","moduleParams","modulePropName","moduleProp","moduleEventName","use","installModule","proto","static","install","defineProperties","platform","ua","device","screenWidth","screenHeight","android","ipad","ipod","iphone","ie","edge","firefox","windows","electron","macos","update","updateSize","height","$el","clientWidth","clientHeight","isHorizontal","isVertical","updateSlides","$wrapperEl","swiperSize","rtl","rtlTranslate","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","slidesForMargin","slideIndex","cssMode","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","slidesNumberEvenToRows","slideSize","virtualSize","marginLeft","marginTop","marginRight","marginBottom","slidesPerColumn","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","loop","slideDuplicateClass","slideDuplicateActiveClass","nextSlide","slideNextClass","prevSlide","slidePrevClass","slideDuplicateNextClass","slideDuplicatePrevClass","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","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","os","osVersion","webView","standalone","webview","pixelRatio","devicePixelRatio","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","which","button","isTouched","isMoved","noSwiping","noSwipingSelector","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","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","dummyEventAttached","dummyEventListener","defaults","updateOnWindowResize","uniqueNavElements","preloadImages","updateOnImagesReady","noSwipingClass","passiveListeners","containerModifierClass","slideClass","slideBlankClass","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","ref","innerWidth","wasLocked","lastSlidePosition","addClasses","classNames","suffixes","suffix","removeClasses","images","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","Swiper","prototypeGroup","protoMethod","moduleParamName","swiperParams","passedParams","swipers","containerEl","newParams","shadowRoot","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","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","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","prevEvent$1","firstEvent","snapToThreshold","autoplayDisableOnInteraction","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","bullet","$bullet","bulletIndex","bulletActiveClass","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","formatFractionCurrent","formatFractionTotal","progressbarDirection","progressbarOpposite","scaleX","scaleY","renderCustom","render","paginationHTML","numberOfBullets","renderBullet","bulletClass","renderFraction","currentClass","totalClass","renderProgressbar","progressbarFillClass","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","dragEl","draggable","Parallax","setTransform","currentOpacity","currentScale","parallax","parallaxEl","$parallaxEl","parallaxDuration","Zoom","getDistanceBetweenTouches","x1","y1","x2","y2","onGestureStart","zoom","gesture","fakeGestureTouched","fakeGestureMoved","scaleStart","$imageEl","$imageWrapEl","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","activeListenerWithCapture","slideSelector","Lazy","loadInSlide","loadInDuplicate","$images","elementClass","loadedClass","loadingClass","imageIndex","background","$pictureEl","sourceIndex","sourceEl","$source","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","Controller$1","a11y","makeElFocusable","makeElNotFocusable","addElRole","role","addElLabel","label","disableEl","enableEl","onEnterKey","notify","lastSlideMessage","nextSlideMessage","firstSlideMessage","prevSlideMessage","click","message","notification","liveRegion","updateNavigation","updatePagination","bulletEl","$bulletEl","paginationBulletMessage","History","hashNavigation","paths","getPathValues","scrollToSlide","setHistoryPopState","pathArray","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","shadowAngle","sin","cos","scale1","shadowScale","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","bulletElement","number","activeIndexChange","snapIndexChange","slidesLengthChange","snapGridLengthChange","dragClass","containerClass","zoomedSlideClass","touchStart","touchEnd","doubleTap","slideChange","loadOnTransitionStart","preloaderClass","scroll","scrollbarDragMove","notificationClass","paginationUpdate","disableOnInteraction","onVisibilityChange","visibilityState","beforeTransitionStart","sliderFirstMove","beforeDestroy","factory","canPromise","QRCode","CanvasRenderer","SvgRenderer","renderCanvas","renderFunc","canvas","cb","argsNum","isLastArgCb","getContext","Promise","toCanvas","toDataURL","renderToDataURL","_","$filter","arrayMethodHasSpeciesSupport","arrayMethodUsesToLength","HAS_SPECIES_SUPPORT","USES_TO_LENGTH","forced","callbackfn","$find","addToUnscopables","SKIPS_HOLES","toIndexedObject","nativeGetOwnPropertyDescriptor","DESCRIPTORS","FAILS_ON_PRIMITIVES","stat","sham","ownKeys","getOwnPropertyDescriptorModule","createProperty","getOwnPropertyDescriptors","descriptor","O","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","getBuiltIn","NativePromise","redefineAll","setToStringTag","setSpecies","anInstance","inspectSource","iterate","checkCorrectnessOfIteration","speciesConstructor","task","microtask","promiseResolve","hostReportErrors","newPromiseCapabilityModule","perform","InternalStateModule","isForced","V8_VERSION","SPECIES","PROMISE","getInternalState","setInternalState","getInternalPromiseState","getterFor","PromiseConstructor","$fetch","newPromiseCapability","newGenericPromiseCapability","IS_NODE","DISPATCH_EVENT","FORCED","PromiseRejectionEvent","FakePromise","then","INCORRECT_ITERATION","all","isThenable","isReject","notified","chain","reactions","ok","exited","reaction","fail","domain","rejection","onHandleUnhandled","enter","exit","onUnhandled","reason","isUnhandled","unwrap","internalReject","internalResolve","wrapper","executor","onFulfilled","onRejected","unsafe","fetch","input","wrap","capability","$promiseResolve","values","remaining","alreadyCalled","race","flush","head","last","node","macrotask","WebKitMutationObserver","queueMicrotaskDescriptor","queueMicrotask","createTextNode","promiseCapability","console","collection","collectionStrong","InternalMetadataModule","inheritIfRequired","CONSTRUCTOR_NAME","common","IS_MAP","IS_WEAK","ADDER","NativeConstructor","NativePrototype","exported","fixMethod","KEY","nativeMethod","entries","getConstructor","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","dummy","setStrong","preventExtensions","defineIterator","internalStateGetterFor","first","define","previous","entry","getEntry","removed","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","iterated","kind","$trim","forcedStringTrimMethod","requireObjectCoercible","whitespace","ltrim","rtrim","createMethod","TYPE","$this","whitespaces","METHOD_NAME","EOF","USE_NATIVE_URL","arrayFrom","codeAt","toASCII","URLSearchParamsModule","NativeURL","getInternalSearchParamsState","getState","getInternalURLState","ALPHA","DIGIT","HEX_START","OCT","DEC","HEX","FORBIDDEN_HOST_CODE_POINT","FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT","LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE","TAB_AND_NEW_LINE","parseHost","codePoints","charAt","parseIPv6","isSpecial","parseIPv4","percentEncode","C0ControlPercentEncodeSet","partsLength","numbers","radix","ipv4","parts","numbersSeen","ipv4Piece","swaps","swap","address","pieceIndex","compress","pointer","char","serializeHost","ignore0","ipv6","maxLength","currStart","currLength","findLongestZeroSequence","fragmentPercentEncodeSet","pathPercentEncodeSet","userinfoPercentEncodeSet","code","encodeURIComponent","specialSchemes","ftp","file","http","https","ws","wss","scheme","includesCredentials","password","cannotHaveUsernamePasswordPort","cannotBeABaseURL","isWindowsDriveLetter","normalized","second","startsWithWindowsDriveLetter","third","shortenURLsPath","path","pathSize","isSingleDot","segment","SCHEME_START","SCHEME","NO_SCHEME","SPECIAL_RELATIVE_OR_AUTHORITY","PATH_OR_AUTHORITY","RELATIVE","RELATIVE_SLASH","SPECIAL_AUTHORITY_SLASHES","SPECIAL_AUTHORITY_IGNORE_SLASHES","AUTHORITY","HOST","HOSTNAME","PORT","FILE","FILE_SLASH","FILE_HOST","PATH_START","PATH","CANNOT_BE_A_BASE_URL_PATH","QUERY","FRAGMENT","parseURL","stateOverride","base","bufferCodePoints","failure","buffer","seenAt","seenBracket","seenPasswordToken","fragment","codePoint","encodedCodePoints","URLConstructor","baseState","urlString","searchParamsState","updateSearchParams","updateURL","serializeURL","getOrigin","getProtocol","getUsername","getPassword","getHost","getHostname","getPort","getPathname","getSearch","getSearchParams","getHash","URLPrototype","output","accessorDescriptor","setter","nativeCreateObjectURL","createObjectURL","nativeRevokeObjectURL","revokeObjectURL","blob","objectKeys","getOwnPropertySymbolsModule","propertyIsEnumerableModule","toObject","IndexedObject","nativeAssign","A","B","symbol","chr","source","T","argumentsLength","getOwnPropertySymbols","propertyIsEnumerable","S","arrayLike","mapfn","mapping","iteratorMethod","regexNonASCII","regexSeparators","OVERFLOW_ERROR","stringFromCharCode","fromCharCode","digitToBasic","adapt","numPoints","firstTime","baseMinusTMin","encode","currentValue","inputLength","charCodeAt","extra","ucs2decode","bias","basicLength","handledCPCount","handledCPCountPlusOne","RangeError","q","qMinusT","baseMinusT","encoded","labels","createIteratorConstructor","hasOwn","createPropertyDescriptor","getIterator","Headers","getInternalParamsState","URL_SEARCH_PARAMS","plus","sequences","percentSequence","bytes","percentDecode","sequence","deserialize","replacer","serialize","parseSearchParams","attribute","validateArgumentsLength","passed","required","URLSearchParamsIterator","URLSearchParamsConstructor","entryIterator","entryNext","URLSearchParamsPrototype","getAll","entriesIndex","sliceIndex","headers","BitBuffer","BitMatrix","AlignmentPattern","FinderPattern","MaskPattern","ECCode","ReedSolomonEncoder","Version","FormatInfo","Mode","Segments","setupFormatInfo","maskPattern","bits","getEncodedBits","mod","createData","segments","put","getLength","write","dataTotalCodewordsBits","getLengthInBits","putBit","remainingByte","bitBuffer","totalCodewords","ecTotalCodewords","dataTotalCodewords","ecTotalBlocks","blocksInGroup1","totalCodewordsInGroup1","dataCodewordsInGroup1","dataCodewordsInGroup2","ecCount","rs","dcData","ecData","maxDataSize","Uint8Array","dataSize","createCodewords","createSymbol","fromArray","estimatedVersion","rawSegments","rawSplit","getBestVersionForData","bestVersion","dataBits","moduleCount","pos","getPositions","col","setupFinderPattern","setupTimingPattern","setupAlignmentPattern","setupVersionInfo","inc","bitIndex","byteIndex","isReserved","setupData","getBestMask","applyMask","mask","toSJISFunc","bufIndex","num","reservedBit","reserved","xor","getRowColCoords","posCount","intervals","positions","reverse","coords","posLength","Patterns","PATTERN000","PATTERN001","PATTERN010","PATTERN011","PATTERN100","PATTERN101","PATTERN110","PATTERN111","PenaltyScores","getMaskAt","getPenaltyN1","sameCountCol","sameCountRow","lastCol","lastRow","getPenaltyN2","getPenaltyN3","bitsCol","bitsRow","getPenaltyN4","darkCount","modulesCount","pattern","setupFormatFunc","numPatterns","bestPattern","lowerPenalty","Infinity","penalty","Polynomial","degree","genPoly","initialize","generateECPolynomial","paddedData","remainder","buff","GF","mul","p1","p2","coeff","divident","divisor","poly","exp","EXP_TABLE","LOG_TABLE","log","G18_BCH","getReservedBitsCount","getTotalBitsFromDataArray","totalBits","reservedBits","getBitsLength","getCapacity","usableBits","seg","ecl","currentVersion","getBestVersionForMixedData","getBestVersionForDataLength","G15_BCH","NumericData","AlphanumericData","ByteData","KanjiData","dijkstra","getStringByteLength","unescape","getSegments","regex","getSegmentsFromString","numSegs","alphaNumSegs","byteSegs","kanjiSegs","s1","s2","getSegmentBitsLength","buildSingleSegment","modesHint","bestMode","reduce","acc","graph","nodes","table","prevNodeIds","nodeGroup","currentNodeIds","lastCount","prevNodeId","buildGraph","segs","buildNodes","find_path","optimizedSegs","curr","prevSeg","mergeSegments","group","remainingNum","ALPHA_NUM_CHARS","encodeUtf8","single_source_shortest_paths","predecessors","costs","u","v","cost_of_s_to_u","adjacent_nodes","cost_of_s_to_u_plus_cost_of_e","cost_of_s_to_v","open","PriorityQueue","make","empty","cost","msg","extract_shortest_path_from_predecessor_list","sorter","default_sorter","qrData","canvasEl","getCanvasElement","ctx","createImageData","clearRect","clearCanvas","putImageData","quality","getColorAttrib","attrib","alpha","toFixed","svgCmd","cmd","qrcodesize","bg","moveBy","newRow","lineLength","qrToPath","viewBox","svgTag","LiteYTEmbed","as","linkEl","rel","preconnected","addPrefetch","w3","attachEvent","detachEvent","iframe","frameId","domReady","readyState","clearInterval","poller","contentWindow","newfunc","JSON","stringify","ready","checkcount","loopStatus","setInterval","messageEvent","runPlayerState","parse","info","playerState","playbackRate","callPlayer","runOnceReady","tmp","videoId","urlPaths","getLast","playBtnEl","playLabel","backgroundImage","posterUrl","playBtnLabelEl","warmConnections","addIframe","iframeEl","allowKey","title","allow","allowFullscreen","requestFullScreen","mozRequestFullScreen","webkitRequestFullScreen","focus","HTMLElement","customElements","preview","queryName","selectDatas","showCount","gps","shareTitle","fancyboxSaleData","fancybox","fancyboxDefaults","buttons","mobile","vertical","momentum","toolbar","backFocus","baseClass","infobar","animationEffect","transitionEffect","caption","btnTpl","close","arrowLeft","arrowRight","onInit","isMobile","afterClose","setHtml","datas","isAppend","isShowAll","dataitem","tempCount","videoid","mara","IMAGEVIDEO","googleMapNav","latitude","longitude","CITY","DISTIRCT","ADDR","urlcarmsg","STORE","LINESHARE","salesData","getData","inputData","isInit","ajax","dataType","success","returnCode","INDUSTRY","TRUCKBEDTYPE","ZONES","GetURLParameter","sParam","getParaFromUrl","parameter","decodeURI","sURLVariables","substring","sParameterName","kvImageSwiper","kvBtnGroup","geolocation","getCurrentPosition","truckbedTypeList","zoneList","industryList","CLS","show","animate","qName","qrcode","urlorgin","urlCould","err","textToCopy","clipboard","isSecureContext","writeText","alert","textArea","select","setSelectionRange","execCommand","copyToClipboard"],"mappings":"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","file":"js/carmsgindex.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t2: 0\n \t};\n\n \tvar deferredModules = [];\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 = \"/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([217,0]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","let toSJISFunction\nconst CODEWORDS_COUNT = [\n 0, // Not used\n 26, 44, 70, 100, 134, 172, 196, 242, 292, 346,\n 404, 466, 532, 581, 655, 733, 815, 901, 991, 1085,\n 1156, 1258, 1364, 1474, 1588, 1706, 1828, 1921, 2051, 2185,\n 2323, 2465, 2611, 2761, 2876, 3034, 3196, 3362, 3532, 3706\n]\n\n/**\n * Returns the QR Code size for the specified version\n *\n * @param {Number} version QR Code version\n * @return {Number} size of QR code\n */\nexports.getSymbolSize = function getSymbolSize (version) {\n if (!version) throw new Error('\"version\" cannot be null or undefined')\n if (version < 1 || version > 40) throw new Error('\"version\" should be in range from 1 to 40')\n return version * 4 + 17\n}\n\n/**\n * Returns the total number of codewords used to store data and EC information.\n *\n * @param {Number} version QR Code version\n * @return {Number} Data length in bits\n */\nexports.getSymbolTotalCodewords = function getSymbolTotalCodewords (version) {\n return CODEWORDS_COUNT[version]\n}\n\n/**\n * Encode data with Bose-Chaudhuri-Hocquenghem\n *\n * @param {Number} data Value to encode\n * @return {Number} Encoded value\n */\nexports.getBCHDigit = function (data) {\n let digit = 0\n\n while (data !== 0) {\n digit++\n data >>>= 1\n }\n\n return digit\n}\n\nexports.setToSJISFunction = function setToSJISFunction (f) {\n if (typeof f !== 'function') {\n throw new Error('\"toSJISFunc\" is not a valid function.')\n }\n\n toSJISFunction = f\n}\n\nexports.isKanjiModeEnabled = function () {\n return typeof toSJISFunction !== 'undefined'\n}\n\nexports.toSJIS = function toSJIS (kanji) {\n return toSJISFunction(kanji)\n}\n","const VersionCheck = require('./version-check')\nconst Regex = require('./regex')\n\n/**\n * Numeric mode encodes data from the decimal digit set (0 - 9)\n * (byte values 30HEX to 39HEX).\n * Normally, 3 data characters are represented by 10 bits.\n *\n * @type {Object}\n */\nexports.NUMERIC = {\n id: 'Numeric',\n bit: 1 << 0,\n ccBits: [10, 12, 14]\n}\n\n/**\n * Alphanumeric mode encodes data from a set of 45 characters,\n * i.e. 10 numeric digits (0 - 9),\n * 26 alphabetic characters (A - Z),\n * and 9 symbols (SP, $, %, *, +, -, ., /, :).\n * Normally, two input characters are represented by 11 bits.\n *\n * @type {Object}\n */\nexports.ALPHANUMERIC = {\n id: 'Alphanumeric',\n bit: 1 << 1,\n ccBits: [9, 11, 13]\n}\n\n/**\n * In byte mode, data is encoded at 8 bits per character.\n *\n * @type {Object}\n */\nexports.BYTE = {\n id: 'Byte',\n bit: 1 << 2,\n ccBits: [8, 16, 16]\n}\n\n/**\n * The Kanji mode efficiently encodes Kanji characters in accordance with\n * the Shift JIS system based on JIS X 0208.\n * The Shift JIS values are shifted from the JIS X 0208 values.\n * JIS X 0208 gives details of the shift coded representation.\n * Each two-byte character value is compacted to a 13-bit binary codeword.\n *\n * @type {Object}\n */\nexports.KANJI = {\n id: 'Kanji',\n bit: 1 << 3,\n ccBits: [8, 10, 12]\n}\n\n/**\n * Mixed mode will contain a sequences of data in a combination of any of\n * the modes described above\n *\n * @type {Object}\n */\nexports.MIXED = {\n bit: -1\n}\n\n/**\n * Returns the number of bits needed to store the data length\n * according to QR Code specifications.\n *\n * @param {Mode} mode Data mode\n * @param {Number} version QR Code version\n * @return {Number} Number of bits\n */\nexports.getCharCountIndicator = function getCharCountIndicator (mode, version) {\n if (!mode.ccBits) throw new Error('Invalid mode: ' + mode)\n\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid version: ' + version)\n }\n\n if (version >= 1 && version < 10) return mode.ccBits[0]\n else if (version < 27) return mode.ccBits[1]\n return mode.ccBits[2]\n}\n\n/**\n * Returns the most efficient mode to store the specified data\n *\n * @param {String} dataStr Input data string\n * @return {Mode} Best mode\n */\nexports.getBestModeForData = function getBestModeForData (dataStr) {\n if (Regex.testNumeric(dataStr)) return exports.NUMERIC\n else if (Regex.testAlphanumeric(dataStr)) return exports.ALPHANUMERIC\n else if (Regex.testKanji(dataStr)) return exports.KANJI\n else return exports.BYTE\n}\n\n/**\n * Return mode name as string\n *\n * @param {Mode} mode Mode object\n * @returns {String} Mode name\n */\nexports.toString = function toString (mode) {\n if (mode && mode.id) return mode.id\n throw new Error('Invalid mode')\n}\n\n/**\n * Check if input param is a valid mode object\n *\n * @param {Mode} mode Mode object\n * @returns {Boolean} True if valid mode, false otherwise\n */\nexports.isValid = function isValid (mode) {\n return mode && mode.bit && mode.ccBits\n}\n\n/**\n * Get mode object from its name\n *\n * @param {String} string Mode name\n * @returns {Mode} Mode object\n */\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n const lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'numeric':\n return exports.NUMERIC\n case 'alphanumeric':\n return exports.ALPHANUMERIC\n case 'kanji':\n return exports.KANJI\n case 'byte':\n return exports.BYTE\n default:\n throw new Error('Unknown mode: ' + string)\n }\n}\n\n/**\n * Returns mode from a value.\n * If value is not a valid mode, returns defaultValue\n *\n * @param {Mode|String} value Encoding mode\n * @param {Mode} defaultValue Fallback value\n * @return {Mode} Encoding mode\n */\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","const { $ } = window;\r\n\r\n/**\r\n * @usage tmpl(\r\n * 'hello {{ name }}!',\r\n * { name: 'ash' }\r\n * );\r\n * => hello ash!\r\n *\r\n * @param {any} str\r\n * @param {any} data\r\n * @returns\r\n */\r\nexport function tmpl(pStr, pData) {\r\n let reg;\r\n let str = pStr;\r\n Object.keys(pData).forEach((item) => {\r\n reg = new RegExp(`{{ ${item} }}`, 'g');\r\n str = str.replace(reg, pData[item]);\r\n });\r\n return str;\r\n}\r\nexport function getQueryString(pKey) {\r\n const a = window.location.search.substr(1).split('&');\r\n const b = {};\r\n for (let i = 0; i < a.length; i += 1) {\r\n const p = a[i].split('=');\r\n if (p.length === 2) {\r\n b[p[0]] = decodeURIComponent(p[1].replace(/\\+/g, ' '));\r\n }\r\n }\r\n return b[pKey];\r\n}\r\n\r\nfunction initSetVCode($img) {\r\n $img.attr('src', `api/vcode.ashx?rnd=${Math.round(Math.random() * 999999)}`);\r\n}\r\n\r\nexport function setVCode($img) {\r\n initSetVCode($img);\r\n $img.on('click', function click() {\r\n initSetVCode($(this));\r\n });\r\n}\r\n\r\nexport function padLeft(str, lenght) {\r\n if (str.toString().length >= lenght) {\r\n return str;\r\n }\r\n return padLeft(`0${str}`, lenght);\r\n}\r\n\r\n// loading樣式\r\nexport function loadingView() {\r\n return '
'\r\n + '
Loading...
'\r\n + '
';\r\n}\r\n\r\nexport function setGA(id) {\r\n if (window.dataLayer !== undefined) {\r\n window.dataLayer.push({\r\n event: 'userID',\r\n event_userID: id,\r\n });\r\n }\r\n}\r\n\r\nexport default {\r\n tmpl,\r\n getQueryString,\r\n setVCode,\r\n padLeft,\r\n loadingView,\r\n setGA,\r\n};\r\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","import AOS from 'aos';\r\n\r\nexport default {\r\n init(aosSettings) {\r\n if (window.AOSApi === undefined) {\r\n window.AOSApi = AOS;\r\n }\r\n\r\n window.AOSSettings = aosSettings;\r\n\r\n window.AOSApi.init(window.AOSSettings);\r\n },\r\n\r\n refresh() {\r\n if (window.AOSApi === undefined) {\r\n this.init();\r\n }\r\n\r\n window.AOSApi.refresh();\r\n },\r\n refreshHard() {\r\n if (window.AOSApi === undefined) {\r\n this.init();\r\n }\r\n\r\n window.AOSApi.refreshHard();\r\n },\r\n};\r\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) {\n var boundFunction = bind(fn, that, AS_ENTRIES ? 2 : 1);\n var iterator, iterFn, index, length, result, next, step;\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = AS_ENTRIES\n ? boundFunction(anObject(step = iterable[index])[0], step[1])\n : boundFunction(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = iterFn.call(iterable);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES);\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\n};\n\niterate.stop = function (result) {\n return new Result(true, result);\n};\n","exports.L = { bit: 1 }\nexports.M = { bit: 0 }\nexports.Q = { bit: 3 }\nexports.H = { bit: 2 }\n\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n const lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'l':\n case 'low':\n return exports.L\n\n case 'm':\n case 'medium':\n return exports.M\n\n case 'q':\n case 'quartile':\n return exports.Q\n\n case 'h':\n case 'high':\n return exports.H\n\n default:\n throw new Error('Unknown EC Level: ' + string)\n }\n}\n\nexports.isValid = function isValid (level) {\n return level && typeof level.bit !== 'undefined' &&\n level.bit >= 0 && level.bit < 4\n}\n\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var anObject = require('../internals/an-object');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (error) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) anObject(returnMethod.call(iterator));\n throw error;\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\nvar bind = require('../internals/function-bind-context');\nvar html = require('../internals/html');\nvar createElement = require('../internals/document-create-element');\nvar IS_IOS = require('../internals/engine-is-ios');\n\nvar location = global.location;\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\n\nvar run = function (id) {\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(id + '', location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (classof(process) == 'process') {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n typeof postMessage == 'function' &&\n !global.importScripts &&\n !fails(post) &&\n location.protocol !== 'file:'\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(iphone|ipod|ipad).*applewebkit/i.test(userAgent);\n","'use strict';\nvar aFunction = require('../internals/a-function');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n};\n\n// 25.4.1.5 NewPromiseCapability(C)\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar defineProperty = require('../internals/object-define-property').f;\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + ++id, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && meta.REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar meta = module.exports = {\n REQUIRED: false,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n","// a string of all valid unicode whitespaces\n// eslint-disable-next-line max-len\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n var url = new URL('b?a=1&b=2&c=3', 'http://a');\n var searchParams = url.searchParams;\n var result = '';\n url.pathname = 'c%20d';\n searchParams.forEach(function (value, key) {\n searchParams['delete']('b');\n result += key + value;\n });\n return (IS_PURE && !url.toJSON)\n || !searchParams.sort\n || url.href !== 'http://a/c%20d?a=1&c=3'\n || searchParams.get('c') !== '3'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !searchParams[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('http://тест').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('http://a#б').hash !== '#%D0%B1'\n // fails in Chrome 66-\n || result !== 'a1c3'\n // throws in Safari\n || new URL('http://x', undefined).host !== 'x';\n});\n","const ECLevel = require('./error-correction-level')\r\n\r\nconst EC_BLOCKS_TABLE = [\r\n// L M Q H\r\n 1, 1, 1, 1,\r\n 1, 1, 1, 1,\r\n 1, 1, 2, 2,\r\n 1, 2, 2, 4,\r\n 1, 2, 4, 4,\r\n 2, 4, 4, 4,\r\n 2, 4, 6, 5,\r\n 2, 4, 6, 6,\r\n 2, 5, 8, 8,\r\n 4, 5, 8, 8,\r\n 4, 5, 8, 11,\r\n 4, 8, 10, 11,\r\n 4, 9, 12, 16,\r\n 4, 9, 16, 16,\r\n 6, 10, 12, 18,\r\n 6, 10, 17, 16,\r\n 6, 11, 16, 19,\r\n 6, 13, 18, 21,\r\n 7, 14, 21, 25,\r\n 8, 16, 20, 25,\r\n 8, 17, 23, 25,\r\n 9, 17, 23, 34,\r\n 9, 18, 25, 30,\r\n 10, 20, 27, 32,\r\n 12, 21, 29, 35,\r\n 12, 23, 34, 37,\r\n 12, 25, 34, 40,\r\n 13, 26, 35, 42,\r\n 14, 28, 38, 45,\r\n 15, 29, 40, 48,\r\n 16, 31, 43, 51,\r\n 17, 33, 45, 54,\r\n 18, 35, 48, 57,\r\n 19, 37, 51, 60,\r\n 19, 38, 53, 63,\r\n 20, 40, 56, 66,\r\n 21, 43, 59, 70,\r\n 22, 45, 62, 74,\r\n 24, 47, 65, 77,\r\n 25, 49, 68, 81\r\n]\r\n\r\nconst EC_CODEWORDS_TABLE = [\r\n// L M Q H\r\n 7, 10, 13, 17,\r\n 10, 16, 22, 28,\r\n 15, 26, 36, 44,\r\n 20, 36, 52, 64,\r\n 26, 48, 72, 88,\r\n 36, 64, 96, 112,\r\n 40, 72, 108, 130,\r\n 48, 88, 132, 156,\r\n 60, 110, 160, 192,\r\n 72, 130, 192, 224,\r\n 80, 150, 224, 264,\r\n 96, 176, 260, 308,\r\n 104, 198, 288, 352,\r\n 120, 216, 320, 384,\r\n 132, 240, 360, 432,\r\n 144, 280, 408, 480,\r\n 168, 308, 448, 532,\r\n 180, 338, 504, 588,\r\n 196, 364, 546, 650,\r\n 224, 416, 600, 700,\r\n 224, 442, 644, 750,\r\n 252, 476, 690, 816,\r\n 270, 504, 750, 900,\r\n 300, 560, 810, 960,\r\n 312, 588, 870, 1050,\r\n 336, 644, 952, 1110,\r\n 360, 700, 1020, 1200,\r\n 390, 728, 1050, 1260,\r\n 420, 784, 1140, 1350,\r\n 450, 812, 1200, 1440,\r\n 480, 868, 1290, 1530,\r\n 510, 924, 1350, 1620,\r\n 540, 980, 1440, 1710,\r\n 570, 1036, 1530, 1800,\r\n 570, 1064, 1590, 1890,\r\n 600, 1120, 1680, 1980,\r\n 630, 1204, 1770, 2100,\r\n 660, 1260, 1860, 2220,\r\n 720, 1316, 1950, 2310,\r\n 750, 1372, 2040, 2430\r\n]\r\n\r\n/**\r\n * Returns the number of error correction block that the QR Code should contain\r\n * for the specified version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction blocks\r\n */\r\nexports.getBlocksCount = function getBlocksCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n\r\n/**\r\n * Returns the number of error correction codewords to use for the specified\r\n * version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction codewords\r\n */\r\nexports.getTotalCodewordsCount = function getTotalCodewordsCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n","/**\n * Check if QR Code version is valid\n *\n * @param {Number} version QR Code version\n * @return {Boolean} true if valid version, false otherwise\n */\nexports.isValid = function isValid (version) {\n return !isNaN(version) && version >= 1 && version <= 40\n}\n","const numeric = '[0-9]+'\nconst alphanumeric = '[A-Z $%*+\\\\-./:]+'\nlet kanji = '(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|' +\n '[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|' +\n '[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|' +\n '[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+'\nkanji = kanji.replace(/u/g, '\\\\u')\n\nconst byte = '(?:(?![A-Z0-9 $%*+\\\\-./:]|' + kanji + ')(?:.|[\\r\\n]))+'\n\nexports.KANJI = new RegExp(kanji, 'g')\nexports.BYTE_KANJI = new RegExp('[^A-Z0-9 $%*+\\\\-./:]+', 'g')\nexports.BYTE = new RegExp(byte, 'g')\nexports.NUMERIC = new RegExp(numeric, 'g')\nexports.ALPHANUMERIC = new RegExp(alphanumeric, 'g')\n\nconst TEST_KANJI = new RegExp('^' + kanji + '$')\nconst TEST_NUMERIC = new RegExp('^' + numeric + '$')\nconst TEST_ALPHANUMERIC = new RegExp('^[A-Z0-9 $%*+\\\\-./:]+$')\n\nexports.testKanji = function testKanji (str) {\n return TEST_KANJI.test(str)\n}\n\nexports.testNumeric = function testNumeric (str) {\n return TEST_NUMERIC.test(str)\n}\n\nexports.testAlphanumeric = function testAlphanumeric (str) {\n return TEST_ALPHANUMERIC.test(str)\n}\n","function hex2rgba (hex) {\n if (typeof hex === 'number') {\n hex = hex.toString()\n }\n\n if (typeof hex !== 'string') {\n throw new Error('Color should be defined as hex string')\n }\n\n let hexCode = hex.slice().replace('#', '').split('')\n if (hexCode.length < 3 || hexCode.length === 5 || hexCode.length > 8) {\n throw new Error('Invalid hex color: ' + hex)\n }\n\n // Convert from short to long form (fff -> ffffff)\n if (hexCode.length === 3 || hexCode.length === 4) {\n hexCode = Array.prototype.concat.apply([], hexCode.map(function (c) {\n return [c, c]\n }))\n }\n\n // Add default alpha value\n if (hexCode.length === 6) hexCode.push('F', 'F')\n\n const hexValue = parseInt(hexCode.join(''), 16)\n\n return {\n r: (hexValue >> 24) & 255,\n g: (hexValue >> 16) & 255,\n b: (hexValue >> 8) & 255,\n a: hexValue & 255,\n hex: '#' + hexCode.slice(0, 6).join('')\n }\n}\n\nexports.getOptions = function getOptions (options) {\n if (!options) options = {}\n if (!options.color) options.color = {}\n\n const margin = typeof options.margin === 'undefined' ||\n options.margin === null ||\n options.margin < 0\n ? 4\n : options.margin\n\n const width = options.width && options.width >= 21 ? options.width : undefined\n const scale = options.scale || 4\n\n return {\n width: width,\n scale: width ? 4 : scale,\n margin: margin,\n color: {\n dark: hex2rgba(options.color.dark || '#000000ff'),\n light: hex2rgba(options.color.light || '#ffffffff')\n },\n type: options.type,\n rendererOpts: options.rendererOpts || {}\n }\n}\n\nexports.getScale = function getScale (qrSize, opts) {\n return opts.width && opts.width >= qrSize + opts.margin * 2\n ? opts.width / (qrSize + opts.margin * 2)\n : opts.scale\n}\n\nexports.getImageWidth = function getImageWidth (qrSize, opts) {\n const scale = exports.getScale(qrSize, opts)\n return Math.floor((qrSize + opts.margin * 2) * scale)\n}\n\nexports.qrToImageData = function qrToImageData (imgData, qr, opts) {\n const size = qr.modules.size\n const data = qr.modules.data\n const scale = exports.getScale(size, opts)\n const symbolSize = Math.floor((size + opts.margin * 2) * scale)\n const scaledMargin = opts.margin * scale\n const palette = [opts.color.light, opts.color.dark]\n\n for (let i = 0; i < symbolSize; i++) {\n for (let j = 0; j < symbolSize; j++) {\n let posDst = (i * symbolSize + j) * 4\n let pxColor = opts.color.light\n\n if (i >= scaledMargin && j >= scaledMargin &&\n i < symbolSize - scaledMargin && j < symbolSize - scaledMargin) {\n const iSrc = Math.floor((i - scaledMargin) / scale)\n const jSrc = Math.floor((j - scaledMargin) / scale)\n pxColor = palette[data[iSrc * size + jSrc] ? 1 : 0]\n }\n\n imgData[posDst++] = pxColor.r\n imgData[posDst++] = pxColor.g\n imgData[posDst++] = pxColor.b\n imgData[posDst] = pxColor.a\n }\n }\n}\n","/**\n * Swiper 5.4.2\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: June 3, 2020\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.Swiper = factory());\n}(this, (function () { 'use strict';\n\n /**\n * SSR Window 2.0.0\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2020, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: May 12, 2020\n */\n /* eslint-disable no-param-reassign */\n function isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n }\n function extend(target, src) {\n if (target === void 0) { target = {}; }\n if (src === void 0) { src = {}; }\n Object.keys(src).forEach(function (key) {\n if (typeof target[key] === 'undefined')\n { target[key] = src[key]; }\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n }\n\n var doc = typeof document !== 'undefined' ? document : {};\n var ssrDocument = {\n body: {},\n addEventListener: function () { },\n removeEventListener: function () { },\n activeElement: {\n blur: function () { },\n nodeName: '',\n },\n querySelector: function () {\n return null;\n },\n querySelectorAll: function () {\n return [];\n },\n getElementById: function () {\n return null;\n },\n createEvent: function () {\n return {\n initEvent: function () { },\n };\n },\n createElement: function () {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute: function () { },\n getElementsByTagName: function () {\n return [];\n },\n };\n },\n createElementNS: function () {\n return {};\n },\n importNode: function () {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n };\n extend(doc, ssrDocument);\n\n var win = typeof window !== 'undefined' ? window : {};\n var ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState: function () { },\n pushState: function () { },\n go: function () { },\n back: function () { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener: function () { },\n removeEventListener: function () { },\n getComputedStyle: function () {\n return {\n getPropertyValue: function () {\n return '';\n },\n };\n },\n Image: function () { },\n Date: function () { },\n screen: {},\n setTimeout: function () { },\n clearTimeout: function () { },\n matchMedia: function () {\n return {};\n },\n };\n extend(win, ssrWindow);\n\n /**\n * Dom7 2.1.5\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * http://framework7.io/docs/dom.html\n *\n * Copyright 2020, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n *\n * Licensed under MIT\n *\n * Released on: May 15, 2020\n */\n\n var Dom7 = function Dom7(arr) {\n var self = this;\n // Create array-like object\n for (var i = 0; i < arr.length; i += 1) {\n self[i] = arr[i];\n }\n self.length = arr.length;\n // Return collection with methods\n return this;\n };\n\n function $(selector, context) {\n var arr = [];\n var i = 0;\n if (selector && !context) {\n if (selector instanceof Dom7) {\n return selector;\n }\n }\n if (selector) {\n // String\n if (typeof selector === 'string') {\n var els;\n var tempParent;\n var html = selector.trim();\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n var toCreate = 'div';\n if (html.indexOf(':~]/)) {\n // Pure ID selector\n els = [doc.getElementById(selector.trim().split('#')[1])];\n } else {\n // Other selectors\n els = (context || doc).querySelectorAll(selector.trim());\n }\n for (i = 0; i < els.length; i += 1) {\n if (els[i]) { arr.push(els[i]); }\n }\n }\n } else if (selector.nodeType || selector === win || selector === doc) {\n // Node/element\n arr.push(selector);\n } else if (selector.length > 0 && selector[0].nodeType) {\n // Array of elements or instance of Dom\n for (i = 0; i < selector.length; i += 1) {\n arr.push(selector[i]);\n }\n }\n }\n return new Dom7(arr);\n }\n\n $.fn = Dom7.prototype;\n $.Class = Dom7;\n $.Dom7 = Dom7;\n\n function unique(arr) {\n var uniqueArray = [];\n for (var i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) { uniqueArray.push(arr[i]); }\n }\n return uniqueArray;\n }\n\n // Classes and attributes\n function addClass(className) {\n if (typeof className === 'undefined') {\n return this;\n }\n var classes = className.split(' ');\n for (var i = 0; i < classes.length; i += 1) {\n for (var j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') { this[j].classList.add(classes[i]); }\n }\n }\n return this;\n }\n function removeClass(className) {\n var classes = className.split(' ');\n for (var i = 0; i < classes.length; i += 1) {\n for (var j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') { this[j].classList.remove(classes[i]); }\n }\n }\n return this;\n }\n function hasClass(className) {\n if (!this[0]) { return false; }\n return this[0].classList.contains(className);\n }\n function toggleClass(className) {\n var classes = className.split(' ');\n for (var i = 0; i < classes.length; i += 1) {\n for (var j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') { this[j].classList.toggle(classes[i]); }\n }\n }\n return this;\n }\n function attr(attrs, value) {\n var arguments$1 = arguments;\n\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) { return this[0].getAttribute(attrs); }\n return undefined;\n }\n\n // Set attrs\n for (var i = 0; i < this.length; i += 1) {\n if (arguments$1.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n // eslint-disable-next-line\n for (var attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n return this;\n }\n // eslint-disable-next-line\n function removeAttr(attr) {\n for (var i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n return this;\n }\n function data(key, value) {\n var el;\n if (typeof value === 'undefined') {\n el = this[0];\n // Get value\n if (el) {\n if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) {\n return el.dom7ElementDataStorage[key];\n }\n\n var dataKey = el.getAttribute((\"data-\" + key));\n if (dataKey) {\n return dataKey;\n }\n return undefined;\n }\n return undefined;\n }\n\n // Set value\n for (var i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) { el.dom7ElementDataStorage = {}; }\n el.dom7ElementDataStorage[key] = value;\n }\n return this;\n }\n // Transforms\n // eslint-disable-next-line\n function transform(transform) {\n for (var i = 0; i < this.length; i += 1) {\n var elStyle = this[i].style;\n elStyle.webkitTransform = transform;\n elStyle.transform = transform;\n }\n return this;\n }\n function transition(duration) {\n if (typeof duration !== 'string') {\n duration = duration + \"ms\"; // eslint-disable-line\n }\n for (var i = 0; i < this.length; i += 1) {\n var elStyle = this[i].style;\n elStyle.webkitTransitionDuration = duration;\n elStyle.transitionDuration = duration;\n }\n return this;\n }\n // Events\n function on() {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var eventType = args[0];\n var targetSelector = args[1];\n var listener = args[2];\n var capture = args[3];\n if (typeof args[1] === 'function') {\n (assign = args, eventType = assign[0], listener = assign[1], capture = assign[2]);\n targetSelector = undefined;\n }\n if (!capture) { capture = false; }\n\n function handleLiveEvent(e) {\n var target = e.target;\n if (!target) { return; }\n var eventData = e.target.dom7EventData || [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n if ($(target).is(targetSelector)) { listener.apply(target, eventData); }\n else {\n var parents = $(target).parents(); // eslint-disable-line\n for (var k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) { listener.apply(parents[k], eventData); }\n }\n }\n }\n function handleEvent(e) {\n var eventData = e && e.target ? e.target.dom7EventData || [] : [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n listener.apply(this, eventData);\n }\n var events = eventType.split(' ');\n var j;\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n var event = events[j];\n if (!el.dom7Listeners) { el.dom7Listeners = {}; }\n if (!el.dom7Listeners[event]) { el.dom7Listeners[event] = []; }\n el.dom7Listeners[event].push({\n listener: listener,\n proxyListener: handleEvent,\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n var event$1 = events[j];\n if (!el.dom7LiveListeners) { el.dom7LiveListeners = {}; }\n if (!el.dom7LiveListeners[event$1]) { el.dom7LiveListeners[event$1] = []; }\n el.dom7LiveListeners[event$1].push({\n listener: listener,\n proxyListener: handleLiveEvent,\n });\n el.addEventListener(event$1, handleLiveEvent, capture);\n }\n }\n }\n return this;\n }\n function off() {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var eventType = args[0];\n var targetSelector = args[1];\n var listener = args[2];\n var capture = args[3];\n if (typeof args[1] === 'function') {\n (assign = args, eventType = assign[0], listener = assign[1], capture = assign[2]);\n targetSelector = undefined;\n }\n if (!capture) { capture = false; }\n\n var events = eventType.split(' ');\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n var handlers = (void 0);\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n if (handlers && handlers.length) {\n for (var k = handlers.length - 1; k >= 0; k -= 1) {\n var handler = handlers[k];\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n return this;\n }\n function trigger() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var events = args[0].split(' ');\n var eventData = args[1];\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n var evt = (void 0);\n try {\n evt = new win.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true,\n });\n } catch (e) {\n evt = doc.createEvent('Event');\n evt.initEvent(event, true, true);\n evt.detail = eventData;\n }\n // eslint-disable-next-line\n el.dom7EventData = args.filter(function (data, dataIndex) { return dataIndex > 0; });\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n return this;\n }\n function transitionEnd(callback) {\n var events = ['webkitTransitionEnd', 'transitionend'];\n var dom = this;\n var i;\n function fireCallBack(e) {\n /* jshint validthis:true */\n if (e.target !== this) { return; }\n callback.call(this, e);\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n }\n function outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n var styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n return this[0].offsetWidth;\n }\n return null;\n }\n function outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n var styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n return this[0].offsetHeight;\n }\n return null;\n }\n function offset() {\n if (this.length > 0) {\n var el = this[0];\n var box = el.getBoundingClientRect();\n var body = doc.body;\n var clientTop = el.clientTop || body.clientTop || 0;\n var clientLeft = el.clientLeft || body.clientLeft || 0;\n var scrollTop = el === win ? win.scrollY : el.scrollTop;\n var scrollLeft = el === win ? win.scrollX : el.scrollLeft;\n return {\n top: (box.top + scrollTop) - clientTop,\n left: (box.left + scrollLeft) - clientLeft,\n };\n }\n\n return null;\n }\n function styles() {\n if (this[0]) { return win.getComputedStyle(this[0], null); }\n return {};\n }\n function css(props, value) {\n var i;\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n if (this[0]) { return win.getComputedStyle(this[0], null).getPropertyValue(props); }\n } else {\n for (i = 0; i < this.length; i += 1) {\n // eslint-disable-next-line\n for (var prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n return this;\n }\n }\n if (arguments.length === 2 && typeof props === 'string') {\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n return this;\n }\n return this;\n }\n // Iterate over the collection passing elements to `callback`\n function each(callback) {\n // Don't bother continuing without a callback\n if (!callback) { return this; }\n // Iterate over the current collection\n for (var i = 0; i < this.length; i += 1) {\n // If the callback returns false\n if (callback.call(this[i], i, this[i]) === false) {\n // End the loop early\n return this;\n }\n }\n // Return `this` to allow chained DOM operations\n return this;\n }\n function filter(callback) {\n var matchedItems = [];\n var dom = this;\n for (var i = 0; i < dom.length; i += 1) {\n if (callback.call(dom[i], i, dom[i])) { matchedItems.push(dom[i]); }\n }\n return new Dom7(matchedItems);\n }\n // eslint-disable-next-line\n function html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : undefined;\n }\n\n for (var i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n return this;\n }\n // eslint-disable-next-line\n function text(text) {\n if (typeof text === 'undefined') {\n if (this[0]) {\n return this[0].textContent.trim();\n }\n return null;\n }\n\n for (var i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n return this;\n }\n function is(selector) {\n var el = this[0];\n var compareWith;\n var i;\n if (!el || typeof selector === 'undefined') { return false; }\n if (typeof selector === 'string') {\n if (el.matches) { return el.matches(selector); }\n else if (el.webkitMatchesSelector) { return el.webkitMatchesSelector(selector); }\n else if (el.msMatchesSelector) { return el.msMatchesSelector(selector); }\n\n compareWith = $(selector);\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) { return true; }\n }\n return false;\n } else if (selector === doc) { return el === doc; }\n else if (selector === win) { return el === win; }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) { return true; }\n }\n return false;\n }\n return false;\n }\n function index() {\n var child = this[0];\n var i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) { i += 1; }\n }\n return i;\n }\n return undefined;\n }\n // eslint-disable-next-line\n function eq(index) {\n if (typeof index === 'undefined') { return this; }\n var length = this.length;\n var returnIndex;\n if (index > length - 1) {\n return new Dom7([]);\n }\n if (index < 0) {\n returnIndex = length + index;\n if (returnIndex < 0) { return new Dom7([]); }\n return new Dom7([this[returnIndex]]);\n }\n return new Dom7([this[index]]);\n }\n function append() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var newChild;\n\n for (var k = 0; k < args.length; k += 1) {\n newChild = args[k];\n for (var i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var tempDiv = doc.createElement('div');\n tempDiv.innerHTML = newChild;\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (var j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n }\n function prepend(newChild) {\n var i;\n var j;\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var tempDiv = doc.createElement('div');\n tempDiv.innerHTML = newChild;\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n return this;\n }\n function next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return new Dom7([this[0].nextElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (this[0].nextElementSibling) { return new Dom7([this[0].nextElementSibling]); }\n return new Dom7([]);\n }\n return new Dom7([]);\n }\n function nextAll(selector) {\n var nextEls = [];\n var el = this[0];\n if (!el) { return new Dom7([]); }\n while (el.nextElementSibling) {\n var next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if ($(next).is(selector)) { nextEls.push(next); }\n } else { nextEls.push(next); }\n el = next;\n }\n return new Dom7(nextEls);\n }\n function prev(selector) {\n if (this.length > 0) {\n var el = this[0];\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return new Dom7([el.previousElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (el.previousElementSibling) { return new Dom7([el.previousElementSibling]); }\n return new Dom7([]);\n }\n return new Dom7([]);\n }\n function prevAll(selector) {\n var prevEls = [];\n var el = this[0];\n if (!el) { return new Dom7([]); }\n while (el.previousElementSibling) {\n var prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if ($(prev).is(selector)) { prevEls.push(prev); }\n } else { prevEls.push(prev); }\n el = prev;\n }\n return new Dom7(prevEls);\n }\n function parent(selector) {\n var parents = []; // eslint-disable-line\n for (var i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) { parents.push(this[i].parentNode); }\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n return $(unique(parents));\n }\n function parents(selector) {\n var parents = []; // eslint-disable-line\n for (var i = 0; i < this.length; i += 1) {\n var parent = this[i].parentNode; // eslint-disable-line\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) { parents.push(parent); }\n } else {\n parents.push(parent);\n }\n parent = parent.parentNode;\n }\n }\n return $(unique(parents));\n }\n function closest(selector) {\n var closest = this; // eslint-disable-line\n if (typeof selector === 'undefined') {\n return new Dom7([]);\n }\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n return closest;\n }\n function find(selector) {\n var foundElements = [];\n for (var i = 0; i < this.length; i += 1) {\n var found = this[i].querySelectorAll(selector);\n for (var j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n return new Dom7(foundElements);\n }\n function children(selector) {\n var children = []; // eslint-disable-line\n for (var i = 0; i < this.length; i += 1) {\n var childNodes = this[i].childNodes;\n\n for (var j = 0; j < childNodes.length; j += 1) {\n if (!selector) {\n if (childNodes[j].nodeType === 1) { children.push(childNodes[j]); }\n } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n return new Dom7(unique(children));\n }\n function remove() {\n for (var i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) { this[i].parentNode.removeChild(this[i]); }\n }\n return this;\n }\n function add() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var dom = this;\n var i;\n var j;\n for (i = 0; i < args.length; i += 1) {\n var toAdd = $(args[i]);\n for (j = 0; j < toAdd.length; j += 1) {\n dom[dom.length] = toAdd[j];\n dom.length += 1;\n }\n }\n return dom;\n }\n\n var Methods = {\n addClass: addClass,\n removeClass: removeClass,\n hasClass: hasClass,\n toggleClass: toggleClass,\n attr: attr,\n removeAttr: removeAttr,\n data: data,\n transform: transform,\n transition: transition,\n on: on,\n off: off,\n trigger: trigger,\n transitionEnd: transitionEnd,\n outerWidth: outerWidth,\n outerHeight: outerHeight,\n offset: offset,\n css: css,\n each: each,\n html: html,\n text: text,\n is: is,\n index: index,\n eq: eq,\n append: append,\n prepend: prepend,\n next: next,\n nextAll: nextAll,\n prev: prev,\n prevAll: prevAll,\n parent: parent,\n parents: parents,\n closest: closest,\n find: find,\n children: children,\n filter: filter,\n remove: remove,\n add: add,\n styles: styles,\n };\n\n Object.keys(Methods).forEach(function (methodName) {\n $.fn[methodName] = $.fn[methodName] || Methods[methodName];\n });\n\n var Utils = {\n deleteProps: function deleteProps(obj) {\n var object = obj;\n Object.keys(object).forEach(function (key) {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n },\n nextTick: function nextTick(callback, delay) {\n if ( delay === void 0 ) delay = 0;\n\n return setTimeout(callback, delay);\n },\n now: function now() {\n return Date.now();\n },\n getTranslate: function getTranslate(el, axis) {\n if ( axis === void 0 ) axis = 'x';\n\n var matrix;\n var curTransform;\n var transformMatrix;\n\n var curStyle = win.getComputedStyle(el, null);\n\n if (win.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(function (a) { return a.replace(',', '.'); }).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new win.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (win.WebKitCSSMatrix) { curTransform = transformMatrix.m41; }\n // Crazy IE10 Matrix\n else if (matrix.length === 16) { curTransform = parseFloat(matrix[12]); }\n // Normal Browsers\n else { curTransform = parseFloat(matrix[4]); }\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (win.WebKitCSSMatrix) { curTransform = transformMatrix.m42; }\n // Crazy IE10 Matrix\n else if (matrix.length === 16) { curTransform = parseFloat(matrix[13]); }\n // Normal Browsers\n else { curTransform = parseFloat(matrix[5]); }\n }\n return curTransform || 0;\n },\n parseUrlQuery: function parseUrlQuery(url) {\n var query = {};\n var urlToParse = url || win.location.href;\n var i;\n var params;\n var param;\n var length;\n if (typeof urlToParse === 'string' && urlToParse.length) {\n urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n params = urlToParse.split('&').filter(function (paramsPart) { return paramsPart !== ''; });\n length = params.length;\n\n for (i = 0; i < length; i += 1) {\n param = params[i].replace(/#\\S+/g, '').split('=');\n query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';\n }\n }\n return query;\n },\n isObject: function isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n },\n extend: function extend() {\n var args = [], len$1 = arguments.length;\n while ( len$1-- ) args[ len$1 ] = arguments[ len$1 ];\n\n var to = Object(args[0]);\n for (var i = 1; i < args.length; i += 1) {\n var nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n var keysArray = Object.keys(Object(nextSource));\n for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n var nextKey = keysArray[nextIndex];\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n },\n };\n\n var Support = (function Support() {\n return {\n touch: !!(('ontouchstart' in win) || (win.DocumentTouch && doc instanceof win.DocumentTouch)),\n\n pointerEvents: !!win.PointerEvent && ('maxTouchPoints' in win.navigator) && win.navigator.maxTouchPoints >= 0,\n\n observer: (function checkObserver() {\n return ('MutationObserver' in win || 'WebkitMutationObserver' in win);\n }()),\n\n passiveListener: (function checkPassiveListener() {\n var supportsPassive = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get: function get() {\n supportsPassive = true;\n },\n });\n win.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n }()),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in win;\n }()),\n };\n }());\n\n var SwiperClass = function SwiperClass(params) {\n if ( params === void 0 ) params = {};\n\n var self = this;\n self.params = params;\n\n // Events\n self.eventsListeners = {};\n\n if (self.params && self.params.on) {\n Object.keys(self.params.on).forEach(function (eventName) {\n self.on(eventName, self.params.on[eventName]);\n });\n }\n };\n\n var staticAccessors = { components: { configurable: true } };\n\n SwiperClass.prototype.on = function on (events, handler, priority) {\n var self = this;\n if (typeof handler !== 'function') { return self; }\n var method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(function (event) {\n if (!self.eventsListeners[event]) { self.eventsListeners[event] = []; }\n self.eventsListeners[event][method](handler);\n });\n return self;\n };\n\n SwiperClass.prototype.once = function once (events, handler, priority) {\n var self = this;\n if (typeof handler !== 'function') { return self; }\n function onceHandler() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n self.off(events, onceHandler);\n if (onceHandler.f7proxy) {\n delete onceHandler.f7proxy;\n }\n handler.apply(self, args);\n }\n onceHandler.f7proxy = handler;\n return self.on(events, onceHandler, priority);\n };\n\n SwiperClass.prototype.off = function off (events, handler) {\n var self = this;\n if (!self.eventsListeners) { return self; }\n events.split(' ').forEach(function (event) {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event] && self.eventsListeners[event].length) {\n self.eventsListeners[event].forEach(function (eventHandler, index) {\n if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n };\n\n SwiperClass.prototype.emit = function emit () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var self = this;\n if (!self.eventsListeners) { return self; }\n var events;\n var data;\n var context;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n var eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(function (event) {\n if (self.eventsListeners && self.eventsListeners[event]) {\n var handlers = [];\n self.eventsListeners[event].forEach(function (eventHandler) {\n handlers.push(eventHandler);\n });\n handlers.forEach(function (eventHandler) {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n };\n\n SwiperClass.prototype.useModulesParams = function useModulesParams (instanceParams) {\n var instance = this;\n if (!instance.modules) { return; }\n Object.keys(instance.modules).forEach(function (moduleName) {\n var module = instance.modules[moduleName];\n // Extend params\n if (module.params) {\n Utils.extend(instanceParams, module.params);\n }\n });\n };\n\n SwiperClass.prototype.useModules = function useModules (modulesParams) {\n if ( modulesParams === void 0 ) modulesParams = {};\n\n var instance = this;\n if (!instance.modules) { return; }\n Object.keys(instance.modules).forEach(function (moduleName) {\n var module = instance.modules[moduleName];\n var moduleParams = modulesParams[moduleName] || {};\n // Extend instance methods and props\n if (module.instance) {\n Object.keys(module.instance).forEach(function (modulePropName) {\n var moduleProp = module.instance[modulePropName];\n if (typeof moduleProp === 'function') {\n instance[modulePropName] = moduleProp.bind(instance);\n } else {\n instance[modulePropName] = moduleProp;\n }\n });\n }\n // Add event listeners\n if (module.on && instance.on) {\n Object.keys(module.on).forEach(function (moduleEventName) {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n }\n\n // Module create callback\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n });\n };\n\n staticAccessors.components.set = function (components) {\n var Class = this;\n if (!Class.use) { return; }\n Class.use(components);\n };\n\n SwiperClass.installModule = function installModule (module) {\n var params = [], len = arguments.length - 1;\n while ( len-- > 0 ) params[ len ] = arguments[ len + 1 ];\n\n var Class = this;\n if (!Class.prototype.modules) { Class.prototype.modules = {}; }\n var name = module.name || (((Object.keys(Class.prototype.modules).length) + \"_\" + (Utils.now())));\n Class.prototype.modules[name] = module;\n // Prototype\n if (module.proto) {\n Object.keys(module.proto).forEach(function (key) {\n Class.prototype[key] = module.proto[key];\n });\n }\n // Class\n if (module.static) {\n Object.keys(module.static).forEach(function (key) {\n Class[key] = module.static[key];\n });\n }\n // Callback\n if (module.install) {\n module.install.apply(Class, params);\n }\n return Class;\n };\n\n SwiperClass.use = function use (module) {\n var params = [], len = arguments.length - 1;\n while ( len-- > 0 ) params[ len ] = arguments[ len + 1 ];\n\n var Class = this;\n if (Array.isArray(module)) {\n module.forEach(function (m) { return Class.installModule(m); });\n return Class;\n }\n return Class.installModule.apply(Class, [ module ].concat( params ));\n };\n\n Object.defineProperties( SwiperClass, staticAccessors );\n\n function updateSize () {\n var swiper = this;\n var width;\n var height;\n var $el = swiper.$el;\n if (typeof swiper.params.width !== 'undefined') {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined') {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);\n height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);\n\n Utils.extend(swiper, {\n width: width,\n height: height,\n size: swiper.isHorizontal() ? width : height,\n });\n }\n\n function updateSlides () {\n var swiper = this;\n var params = swiper.params;\n\n var $wrapperEl = swiper.$wrapperEl;\n var swiperSize = swiper.size;\n var rtl = swiper.rtlTranslate;\n var wrongRTL = swiper.wrongRTL;\n var isVirtual = swiper.virtual && params.virtual.enabled;\n var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n var slides = $wrapperEl.children((\".\" + (swiper.params.slideClass)));\n var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n var snapGrid = [];\n var slidesGrid = [];\n var slidesSizesGrid = [];\n\n function slidesForMargin(slideIndex) {\n if (!params.cssMode) { return true; }\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }\n\n var offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n var offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n var previousSnapGridLength = swiper.snapGrid.length;\n var previousSlidesGridLength = swiper.snapGrid.length;\n\n var spaceBetween = params.spaceBetween;\n var slidePosition = -offsetBefore;\n var prevSlideSize = 0;\n var index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n if (rtl) { slides.css({ marginLeft: '', marginTop: '' }); }\n else { slides.css({ marginRight: '', marginBottom: '' }); }\n\n var slidesNumberEvenToRows;\n if (params.slidesPerColumn > 1) {\n if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n }\n if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n }\n }\n\n // Calc slides\n var slideSize;\n var slidesPerColumn = params.slidesPerColumn;\n var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n var numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n for (var i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n var slide = slides.eq(i);\n if (params.slidesPerColumn > 1) {\n // Set slides order\n var newSlideOrderIndex = (void 0);\n var column = (void 0);\n var row = (void 0);\n if (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\n ? params.slidesPerGroup\n : 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\n newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);\n slide\n .css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex,\n });\n } else if (params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - (column * slidesPerColumn);\n if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {\n row += 1;\n if (row >= slidesPerColumn) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - (row * slidesPerRow);\n }\n slide.css(\n (\"margin-\" + (swiper.isHorizontal() ? 'top' : 'left')),\n (row !== 0 && params.spaceBetween) && (((params.spaceBetween) + \"px\"))\n );\n }\n if (slide.css('display') === 'none') { continue; } // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n var slideStyles = win.getComputedStyle(slide[0], null);\n var currentTransform = slide[0].style.transform;\n var currentWebKitTransform = slide[0].style.webkitTransform;\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal()\n ? slide.outerWidth(true)\n : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n if (swiper.isHorizontal()) {\n var width = parseFloat(slideStyles.getPropertyValue('width'));\n var paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));\n var paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));\n var marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));\n var marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));\n var boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;\n }\n } else {\n var height = parseFloat(slideStyles.getPropertyValue('height'));\n var paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));\n var paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));\n var marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));\n var marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));\n var boxSizing$1 = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing$1 && boxSizing$1 === 'border-box') {\n slideSize = height + marginTop + marginBottom;\n } else {\n slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;\n }\n }\n }\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) { slideSize = Math.floor(slideSize); }\n } else {\n slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView;\n if (params.roundLengths) { slideSize = Math.floor(slideSize); }\n\n if (slides[i]) {\n if (swiper.isHorizontal()) {\n slides[i].style.width = slideSize + \"px\";\n } else {\n slides[i].style.height = slideSize + \"px\";\n }\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) { slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; }\n if (i === 0) { slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; }\n if (Math.abs(slidePosition) < 1 / 1000) { slidePosition = 0; }\n if (params.roundLengths) { slidePosition = Math.floor(slidePosition); }\n if ((index) % params.slidesPerGroup === 0) { snapGrid.push(slidePosition); }\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) { slidePosition = Math.floor(slidePosition); }\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) { snapGrid.push(slidePosition); }\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n\n prevSlideSize = slideSize;\n\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n var newSlidesGrid;\n\n if (\n rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + \"px\") });\n }\n if (params.setWrapperSize) {\n if (swiper.isHorizontal()) { $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + \"px\") }); }\n else { $wrapperEl.css({ height: ((swiper.virtualSize + params.spaceBetween) + \"px\") }); }\n }\n\n if (params.slidesPerColumn > 1) {\n swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n if (swiper.isHorizontal()) { $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + \"px\") }); }\n else { $wrapperEl.css({ height: ((swiper.virtualSize + params.spaceBetween) + \"px\") }); }\n if (params.centeredSlides) {\n newSlidesGrid = [];\n for (var i$1 = 0; i$1 < snapGrid.length; i$1 += 1) {\n var slidesGridItem = snapGrid[i$1];\n if (params.roundLengths) { slidesGridItem = Math.floor(slidesGridItem); }\n if (snapGrid[i$1] < swiper.virtualSize + snapGrid[0]) { newSlidesGrid.push(slidesGridItem); }\n }\n snapGrid = newSlidesGrid;\n }\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n newSlidesGrid = [];\n for (var i$2 = 0; i$2 < snapGrid.length; i$2 += 1) {\n var slidesGridItem$1 = snapGrid[i$2];\n if (params.roundLengths) { slidesGridItem$1 = Math.floor(slidesGridItem$1); }\n if (snapGrid[i$2] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem$1);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (snapGrid.length === 0) { snapGrid = [0]; }\n\n if (params.spaceBetween !== 0) {\n if (swiper.isHorizontal()) {\n if (rtl) { slides.filter(slidesForMargin).css({ marginLeft: (spaceBetween + \"px\") }); }\n else { slides.filter(slidesForMargin).css({ marginRight: (spaceBetween + \"px\") }); }\n } else { slides.filter(slidesForMargin).css({ marginBottom: (spaceBetween + \"px\") }); }\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) { return -offsetBefore; }\n if (snap > maxSnap) { return maxSnap + offsetAfter; }\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 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 if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) { swiper.checkOverflow(); }\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateSlidesOffset();\n }\n }\n\n function updateAutoHeight (speed) {\n var swiper = this;\n var activeSlides = [];\n var newHeight = 0;\n var i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n 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 if (index > swiper.slides.length) { break; }\n activeSlides.push(swiper.slides.eq(index)[0]);\n }\n }\n } else {\n activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n var height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight) { swiper.$wrapperEl.css('height', (newHeight + \"px\")); }\n }\n\n function updateSlidesOffset () {\n var swiper = this;\n var slides = swiper.slides;\n for (var i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n }\n\n function updateSlidesProgress (translate) {\n if ( translate === void 0 ) translate = (this && this.translate) || 0;\n\n var swiper = this;\n var params = swiper.params;\n\n var slides = swiper.slides;\n var rtl = swiper.rtlTranslate;\n\n if (slides.length === 0) { return; }\n if (typeof slides[0].swiperSlideOffset === 'undefined') { swiper.updateSlidesOffset(); }\n\n var offsetCenter = -translate;\n if (rtl) { offsetCenter = translate; }\n\n // Visible Slides\n slides.removeClass(params.slideVisibleClass);\n\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (var i = 0; i < slides.length; i += 1) {\n var slide = slides[i];\n var slideProgress = (\n (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset\n ) / (slide.swiperSlideSize + params.spaceBetween);\n if (params.watchSlidesVisibility || (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)\n || (slideAfter > 1 && slideAfter <= swiper.size)\n || (slideBefore <= 0 && slideAfter >= swiper.size);\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n }\n swiper.visibleSlides = $(swiper.visibleSlides);\n }\n\n function updateProgress (translate) {\n var swiper = this;\n if (typeof translate === 'undefined') {\n var multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = (swiper && swiper.translate && (swiper.translate * multiplier)) || 0;\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 if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / (translatesDiff);\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n Utils.extend(swiper, {\n progress: progress,\n isBeginning: isBeginning,\n isEnd: isEnd,\n });\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) { swiper.updateSlidesProgress(translate); }\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n }\n\n function updateSlidesClasses () {\n var swiper = this;\n\n var slides = swiper.slides;\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl;\n var activeIndex = swiper.activeIndex;\n var realIndex = swiper.realIndex;\n var isVirtual = swiper.virtual && params.virtual.enabled;\n\n slides.removeClass(((params.slideActiveClass) + \" \" + (params.slideNextClass) + \" \" + (params.slidePrevClass) + \" \" + (params.slideDuplicateActiveClass) + \" \" + (params.slideDuplicateNextClass) + \" \" + (params.slideDuplicatePrevClass)));\n\n var activeSlide;\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find((\".\" + (params.slideClass) + \"[data-swiper-slide-index=\\\"\" + activeIndex + \"\\\"]\"));\n } else {\n activeSlide = slides.eq(activeIndex);\n }\n\n // Active classes\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children((\".\" + (params.slideClass) + \":not(.\" + (params.slideDuplicateClass) + \")[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]\"))\n .addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl\n .children((\".\" + (params.slideClass) + \".\" + (params.slideDuplicateClass) + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]\"))\n .addClass(params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n var nextSlide = activeSlide.nextAll((\".\" + (params.slideClass))).eq(0).addClass(params.slideNextClass);\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n }\n // Prev Slide\n var prevSlide = activeSlide.prevAll((\".\" + (params.slideClass))).eq(0).addClass(params.slidePrevClass);\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children((\".\" + (params.slideClass) + \":not(.\" + (params.slideDuplicateClass) + \")[data-swiper-slide-index=\\\"\" + (nextSlide.attr('data-swiper-slide-index')) + \"\\\"]\"))\n .addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl\n .children((\".\" + (params.slideClass) + \".\" + (params.slideDuplicateClass) + \"[data-swiper-slide-index=\\\"\" + (nextSlide.attr('data-swiper-slide-index')) + \"\\\"]\"))\n .addClass(params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children((\".\" + (params.slideClass) + \":not(.\" + (params.slideDuplicateClass) + \")[data-swiper-slide-index=\\\"\" + (prevSlide.attr('data-swiper-slide-index')) + \"\\\"]\"))\n .addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl\n .children((\".\" + (params.slideClass) + \".\" + (params.slideDuplicateClass) + \"[data-swiper-slide-index=\\\"\" + (prevSlide.attr('data-swiper-slide-index')) + \"\\\"]\"))\n .addClass(params.slideDuplicatePrevClass);\n }\n }\n }\n\n function updateActiveIndex (newActiveIndex) {\n var swiper = this;\n var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n var slidesGrid = swiper.slidesGrid;\n var snapGrid = swiper.snapGrid;\n var params = swiper.params;\n var previousIndex = swiper.activeIndex;\n var previousRealIndex = swiper.realIndex;\n var previousSnapIndex = swiper.snapIndex;\n var activeIndex = newActiveIndex;\n var snapIndex;\n if (typeof activeIndex === 'undefined') {\n for (var i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') { activeIndex = 0; }\n }\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n var skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) { snapIndex = snapGrid.length - 1; }\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n\n // Get real index\n var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n\n Utils.extend(swiper, {\n snapIndex: snapIndex,\n realIndex: realIndex,\n previousIndex: previousIndex,\n activeIndex: activeIndex,\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.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 if (slide) {\n for (var i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) { slideFound = true; }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = $(slide).index();\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n }\n\n var update = {\n updateSize: updateSize,\n updateSlides: updateSlides,\n updateAutoHeight: updateAutoHeight,\n updateSlidesOffset: updateSlidesOffset,\n updateSlidesProgress: updateSlidesProgress,\n updateProgress: updateProgress,\n updateSlidesClasses: updateSlidesClasses,\n updateActiveIndex: updateActiveIndex,\n updateClickedSlide: updateClickedSlide,\n };\n\n function getTranslate (axis) {\n if ( axis === void 0 ) axis = this.isHorizontal() ? 'x' : 'y';\n\n var swiper = this;\n\n var params = swiper.params;\n var rtl = swiper.rtlTranslate;\n var translate = swiper.translate;\n var $wrapperEl = swiper.$wrapperEl;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n\n var currentTranslate = Utils.getTranslate($wrapperEl[0], axis);\n if (rtl) { currentTranslate = -currentTranslate; }\n\n return currentTranslate || 0;\n }\n\n function setTranslate (translate, byController) {\n var swiper = this;\n var rtl = swiper.rtlTranslate;\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl;\n var 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 swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n\n // Check if we need to update progress\n var newProgress;\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / (translatesDiff);\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n }\n\n function minTranslate () {\n return (-this.snapGrid[0]);\n }\n\n function maxTranslate () {\n return (-this.snapGrid[this.snapGrid.length - 1]);\n }\n\n function translateTo (translate, speed, runCallbacks, translateBounds, internal) {\n var obj;\n\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\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 if (translateBounds && translate > minTranslate) { newTranslate = minTranslate; }\n else if (translateBounds && translate < maxTranslate) { newTranslate = maxTranslate; }\n else { newTranslate = translate; }\n\n // Update progress\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n var isH = swiper.isHorizontal();\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 return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\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 if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) { return; }\n if (e.target !== this) { return; }\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\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\n var swiper = this;\n var activeIndex = swiper.activeIndex;\n var params = swiper.params;\n var previousIndex = swiper.previousIndex;\n if (params.cssMode) { return; }\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n var dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) { dir = 'next'; }\n else if (activeIndex < previousIndex) { dir = 'prev'; }\n else { dir = 'reset'; }\n }\n\n swiper.emit('transitionStart');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionStart');\n return;\n }\n swiper.emit('slideChangeTransitionStart');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionStart');\n } else {\n swiper.emit('slidePrevTransitionStart');\n }\n }\n }\n\n function transitionEnd$1 (runCallbacks, direction) {\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n var activeIndex = swiper.activeIndex;\n var previousIndex = swiper.previousIndex;\n var params = swiper.params;\n swiper.animating = false;\n if (params.cssMode) { return; }\n swiper.setTransition(0);\n\n var dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) { dir = 'next'; }\n else if (activeIndex < previousIndex) { dir = 'prev'; }\n else { dir = 'reset'; }\n }\n\n swiper.emit('transitionEnd');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionEnd');\n return;\n }\n swiper.emit('slideChangeTransitionEnd');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionEnd');\n } else {\n swiper.emit('slidePrevTransitionEnd');\n }\n }\n }\n\n var transition$1 = {\n setTransition: setTransition,\n transitionStart: transitionStart,\n transitionEnd: transitionEnd$1,\n };\n\n function slideTo (index, speed, runCallbacks, internal) {\n var obj;\n\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 if (slideIndex < 0) { slideIndex = 0; }\n\n var params = swiper.params;\n var snapGrid = swiper.snapGrid;\n var slidesGrid = swiper.slidesGrid;\n var previousIndex = swiper.previousIndex;\n var activeIndex = swiper.activeIndex;\n var rtl = swiper.rtlTranslate;\n var wrapperEl = swiper.wrapperEl;\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 if (snapIndex >= snapGrid.length) { snapIndex = snapGrid.length - 1; }\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n var translate = -snapGrid[snapIndex];\n\n // Update progress\n swiper.updateProgress(translate);\n\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (var i = 0; i < slidesGrid.length; i += 1) {\n if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) { return false; }\n }\n }\n\n var direction;\n if (slideIndex > activeIndex) { direction = 'next'; }\n else if (slideIndex < activeIndex) { direction = 'prev'; }\n else { direction = 'reset'; }\n\n\n // Update Index\n if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n var isH = swiper.isHorizontal();\n var t = -translate;\n if (rtl) {\n t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;\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 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 if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) { return; }\n if (e.target !== this) { return; }\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n }\n\n return true;\n }\n\n function slideToLoop (index, speed, runCallbacks, internal) {\n if ( index === void 0 ) index = 0;\n if ( speed === void 0 ) speed = this.params.speed;\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n var newIndex = index;\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n }\n\n /* eslint no-unused-vars: \"off\" */\n function slideNext (speed, runCallbacks, internal) {\n if ( speed === void 0 ) speed = this.params.speed;\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n var params = swiper.params;\n var animating = swiper.animating;\n var increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;\n if (params.loop) {\n if (animating) { return false; }\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n }\n\n /* eslint no-unused-vars: \"off\" */\n function slidePrev (speed, runCallbacks, internal) {\n if ( speed === void 0 ) speed = this.params.speed;\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n var params = swiper.params;\n var animating = swiper.animating;\n var snapGrid = swiper.snapGrid;\n var slidesGrid = swiper.slidesGrid;\n var rtlTranslate = swiper.rtlTranslate;\n\n if (params.loop) {\n if (animating) { return false; }\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n var translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) { return -Math.floor(Math.abs(val)); }\n return Math.floor(val);\n }\n var normalizedTranslate = normalize(translate);\n var normalizedSnapGrid = snapGrid.map(function (val) { return normalize(val); });\n var normalizedSlidesGrid = slidesGrid.map(function (val) { return normalize(val); });\n\n var currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n snapGrid.forEach(function (snap) {\n if (!prevSnap && normalizedTranslate >= snap) { prevSnap = snap; }\n });\n }\n var prevIndex;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) { prevIndex = swiper.activeIndex - 1; }\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n }\n\n /* eslint no-unused-vars: \"off\" */\n function slideReset (speed, runCallbacks, internal) {\n if ( speed === void 0 ) speed = this.params.speed;\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n }\n\n /* eslint no-unused-vars: \"off\" */\n function slideToClosest (speed, runCallbacks, internal, 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\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\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 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 if ((translate - prevSnap) <= (currentSnap$1 - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n\n return swiper.slideTo(index, speed, runCallbacks, internal);\n }\n\n function slideToClickedSlide () {\n var swiper = this;\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl;\n\n var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n var slideToIndex = swiper.clickedIndex;\n var realIndex;\n if (params.loop) {\n if (swiper.animating) { return; }\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (\n (slideToIndex < swiper.loopedSlides - (slidesPerView / 2))\n || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))\n ) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children((\".\" + (params.slideClass) + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]:not(.\" + (params.slideDuplicateClass) + \")\"))\n .eq(0)\n .index();\n\n Utils.nextTick(function () {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children((\".\" + (params.slideClass) + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]:not(.\" + (params.slideDuplicateClass) + \")\"))\n .eq(0)\n .index();\n\n Utils.nextTick(function () {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n }\n\n var slide = {\n slideTo: slideTo,\n slideToLoop: slideToLoop,\n slideNext: slideNext,\n slidePrev: slidePrev,\n slideReset: slideReset,\n slideToClosest: slideToClosest,\n slideToClickedSlide: slideToClickedSlide,\n };\n\n function loopCreate () {\n var swiper = this;\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl;\n // Remove duplicated slides\n $wrapperEl.children((\".\" + (params.slideClass) + \".\" + (params.slideDuplicateClass))).remove();\n\n var slides = $wrapperEl.children((\".\" + (params.slideClass)));\n\n if (params.loopFillGroupWithBlank) {\n var blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (var i = 0; i < blankSlidesNum; i += 1) {\n var blankNode = $(doc.createElement('div')).addClass(((params.slideClass) + \" \" + (params.slideBlankClass)));\n $wrapperEl.append(blankNode);\n }\n slides = $wrapperEl.children((\".\" + (params.slideClass)));\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) { params.loopedSlides = slides.length; }\n\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n var prependSlides = [];\n var appendSlides = [];\n slides.each(function (index, el) {\n var slide = $(el);\n if (index < swiper.loopedSlides) { appendSlides.push(el); }\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) { prependSlides.push(el); }\n slide.attr('data-swiper-slide-index', index);\n });\n for (var i$1 = 0; i$1 < appendSlides.length; i$1 += 1) {\n $wrapperEl.append($(appendSlides[i$1].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (var i$2 = prependSlides.length - 1; i$2 >= 0; i$2 -= 1) {\n $wrapperEl.prepend($(prependSlides[i$2].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n }\n\n function loopFix () {\n var swiper = this;\n\n swiper.emit('beforeLoopFix');\n\n var activeIndex = swiper.activeIndex;\n var slides = swiper.slides;\n var loopedSlides = swiper.loopedSlides;\n var allowSlidePrev = swiper.allowSlidePrev;\n var allowSlideNext = swiper.allowSlideNext;\n var snapGrid = swiper.snapGrid;\n var rtl = swiper.rtlTranslate;\n var newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\n var snapTranslate = -snapGrid[activeIndex];\n var diff = snapTranslate - swiper.getTranslate();\n\n // Fix For Negative Oversliding\n if (activeIndex < loopedSlides) {\n newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;\n newIndex += loopedSlides;\n var slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n var slideChanged$1 = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged$1 && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n 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 if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) { return; }\n var el = swiper.el;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n }\n\n function unsetGrabCursor () {\n var swiper = this;\n if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) { return; }\n swiper.el.style.cursor = '';\n }\n\n var grabCursor = {\n setGrabCursor: setGrabCursor,\n unsetGrabCursor: unsetGrabCursor,\n };\n\n function appendSlide (slides) {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl;\n var params = swiper.params;\n if (params.loop) {\n swiper.loopDestroy();\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i]) { $wrapperEl.append(slides[i]); }\n }\n } else {\n $wrapperEl.append(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n }\n\n function prependSlide (slides) {\n var swiper = this;\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl;\n var activeIndex = swiper.activeIndex;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n var newActiveIndex = activeIndex + 1;\n if (typeof slides === 'object' && 'length' in slides) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i]) { $wrapperEl.prepend(slides[i]); }\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n }\n\n function addSlide (index, slides) {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl;\n var params = swiper.params;\n var activeIndex = swiper.activeIndex;\n var activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children((\".\" + (params.slideClass)));\n }\n var baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n var slidesBuffer = [];\n for (var i = baseLength - 1; i >= index; i -= 1) {\n var currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (var i$1 = 0; i$1 < slides.length; i$1 += 1) {\n if (slides[i$1]) { $wrapperEl.append(slides[i$1]); }\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (var i$2 = 0; i$2 < slidesBuffer.length; i$2 += 1) {\n $wrapperEl.append(slidesBuffer[i$2]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n }\n\n function removeSlide (slidesIndexes) {\n var swiper = this;\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl;\n var activeIndex = swiper.activeIndex;\n\n var activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children((\".\" + (params.slideClass)));\n }\n var newActiveIndex = activeIndexBuffer;\n var indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (var i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) { swiper.slides.eq(indexToRemove).remove(); }\n if (indexToRemove < newActiveIndex) { newActiveIndex -= 1; }\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) { swiper.slides.eq(indexToRemove).remove(); }\n if (indexToRemove < newActiveIndex) { newActiveIndex -= 1; }\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n }\n\n function removeAllSlides () {\n var swiper = this;\n\n var slidesIndexes = [];\n for (var i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n }\n\n var manipulation = {\n appendSlide: appendSlide,\n prependSlide: prependSlide,\n addSlide: addSlide,\n removeSlide: removeSlide,\n removeAllSlides: removeAllSlides,\n };\n\n var Device = (function Device() {\n var platform = win.navigator.platform;\n var ua = win.navigator.userAgent;\n\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\n var screenWidth = win.screen.width;\n var screenHeight = win.screen.height;\n\n var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n var ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n var ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n var iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n 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';\n\n // iPadOs 13 fix\n if (!ipad\n && macos\n && Support.touch\n && (\n (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 ) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n macos = false;\n }\n\n device.ie = ie;\n device.edge = edge;\n device.firefox = firefox;\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.osVersion = android[2];\n device.android = true;\n device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n // iOS\n if (iphone && !ipod) {\n device.osVersion = iphone[2].replace(/_/g, '.');\n device.iphone = true;\n }\n if (ipad) {\n device.osVersion = ipad[2].replace(/_/g, '.');\n device.ipad = true;\n }\n if (ipod) {\n device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n device.ipod = true;\n }\n // iOS 8+ changed UA\n if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n if (device.osVersion.split('.')[0] === '10') {\n device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n }\n }\n\n // Webview\n device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || win.navigator.standalone))\n || (win.matchMedia && win.matchMedia('(display-mode: standalone)').matches);\n device.webview = device.webView;\n device.standalone = device.webView;\n\n // Desktop\n device.desktop = !(device.ios || device.android) || electron;\n if (device.desktop) {\n device.electron = electron;\n device.macos = macos;\n device.windows = windows;\n if (device.macos) {\n device.os = 'macos';\n }\n if (device.windows) {\n device.os = 'windows';\n }\n }\n\n // Pixel Ratio\n device.pixelRatio = win.devicePixelRatio || 1;\n\n // Export object\n return device;\n }());\n\n function onTouchStart (event) {\n var swiper = this;\n var data = swiper.touchEventsData;\n var params = swiper.params;\n var touches = swiper.touches;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n var e = event;\n if (e.originalEvent) { e = e.originalEvent; }\n var $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) { return; }\n }\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) { return; }\n if (!data.isTouchEvent && 'button' in e && e.button > 0) { return; }\n if (data.isTouched && data.isMoved) { return; }\n if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : (\".\" + (params.noSwipingClass)))[0]) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) { return; }\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n var startX = touches.currentX;\n var startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (\n edgeSwipeDetection\n && ((startX <= edgeSwipeThreshold)\n || (startX >= win.screen.width - edgeSwipeThreshold))\n ) {\n return;\n }\n\n Utils.extend(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined,\n });\n\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = Utils.now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) { data.allowThresholdMove = false; }\n if (e.type !== 'touchstart') {\n var preventDefault = true;\n if ($targetEl.is(data.formElements)) { preventDefault = false; }\n if (\n doc.activeElement\n && $(doc.activeElement).is(data.formElements)\n && doc.activeElement !== $targetEl[0]\n ) {\n doc.activeElement.blur();\n }\n\n var shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if (params.touchStartForcePreventDefault || shouldPreventDefault) {\n e.preventDefault();\n }\n }\n swiper.emit('touchStart', e);\n }\n\n function onTouchMove (event) {\n var swiper = this;\n var data = swiper.touchEventsData;\n var params = swiper.params;\n var touches = swiper.touches;\n var rtl = swiper.rtlTranslate;\n var e = event;\n if (e.originalEvent) { e = e.originalEvent; }\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n if (data.isTouchEvent && e.type !== 'touchmove') { return; }\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 if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n if (data.isTouched) {\n Utils.extend(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n });\n data.touchStartTime = Utils.now();\n }\n return;\n }\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (\n (pageY < touches.startY && swiper.translate <= swiper.maxTranslate())\n || (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n ) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (\n (pageX < touches.startX && swiper.translate <= swiper.maxTranslate())\n || (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n ) {\n return;\n }\n }\n if (data.isTouchEvent && doc.activeElement) {\n if (e.target === doc.activeElement && $(e.target).is(data.formElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) { return; }\n\n touches.currentX = pageX;\n touches.currentY = pageY;\n\n var diffX = touches.currentX - touches.startX;\n var diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt((Math.pow( diffX, 2 )) + (Math.pow( diffY, 2 ))) < swiper.params.threshold) { return; }\n\n if (typeof data.isScrolling === 'undefined') {\n var touchAngle;\n if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if ((diffX * diffX) + (diffY * diffY) >= 25) {\n touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle);\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\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 data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n\n var diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n\n diff *= params.touchRatio;\n if (rtl) { diff = -diff; }\n\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n\n var disableParentSwiper = true;\n var resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) {\n disableParentSwiper = false;\n if (params.resistance) { data.currentTranslate = (swiper.minTranslate() - 1) + (Math.pow( (-swiper.minTranslate() + data.startTranslate + diff), resistanceRatio )); }\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) { data.currentTranslate = (swiper.maxTranslate() + 1) - (Math.pow( (swiper.maxTranslate() - data.startTranslate - diff), resistanceRatio )); }\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) { return; }\n\n // Update active index in free mode\n if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode) {\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime,\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: Utils.now(),\n });\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n }\n\n function onTouchEnd (event) {\n var swiper = this;\n var data = swiper.touchEventsData;\n\n var params = swiper.params;\n var touches = swiper.touches;\n var rtl = swiper.rtlTranslate;\n var $wrapperEl = swiper.$wrapperEl;\n var slidesGrid = swiper.slidesGrid;\n var snapGrid = swiper.snapGrid;\n var e = event;\n if (e.originalEvent) { e = e.originalEvent; }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n var touchEndTime = Utils.now();\n var timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap click', e);\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) { swiper.allowClick = true; }\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n\n var currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (params.freeMode) {\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n\n if (params.freeModeMomentum) {\n if (data.velocities.length > 1) {\n var lastMoveEvent = data.velocities.pop();\n var velocityEvent = data.velocities.pop();\n\n var distance = lastMoveEvent.position - velocityEvent.position;\n var time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeModeMomentumVelocityRatio;\n\n data.velocities.length = 0;\n var momentumDuration = 1000 * params.freeModeMomentumRatio;\n var momentumDistance = swiper.velocity * momentumDuration;\n\n var newPosition = swiper.translate + momentumDistance;\n if (rtl) { newPosition = -newPosition; }\n\n var doBounce = false;\n var afterBouncePosition;\n var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n var needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) { needsLoopFix = true; }\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) { needsLoopFix = true; }\n } else if (params.freeModeSticky) {\n var nextSlide;\n for (var j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n swiper.once('transitionEnd', function () {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n 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 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) { return; }\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) { return; }\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 if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed) { return; }\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n return;\n }\n\n // Find current slide\n var stopIndex = 0;\n var groupSize = swiper.slidesSizesGrid[0];\n for (var i = 0; i < slidesGrid.length; i += (i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup)) {\n var increment$1 = (i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);\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 }\n\n // Find current slide size\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 if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) { swiper.slideTo(stopIndex + increment); }\n else { swiper.slideTo(stopIndex); }\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > (1 - params.longSwipesRatio)) { swiper.slideTo(stopIndex + increment); }\n else { swiper.slideTo(stopIndex); }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n var isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\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\n var params = swiper.params;\n var el = swiper.el;\n\n if (el && el.offsetWidth === 0) { return; }\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n var allowSlideNext = swiper.allowSlideNext;\n var allowSlidePrev = swiper.allowSlidePrev;\n var snapGrid = swiper.snapGrid;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n\n swiper.updateSize();\n swiper.updateSlides();\n\n swiper.updateSlidesClasses();\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n }\n\n function onClick (e) {\n var swiper = this;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) { e.preventDefault(); }\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n }\n\n function onScroll () {\n var swiper = this;\n var wrapperEl = swiper.wrapperEl;\n var rtlTranslate = swiper.rtlTranslate;\n swiper.previousTranslate = swiper.translate;\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 }\n // eslint-disable-next-line\n if (swiper.translate === -0) { swiper.translate = 0; }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n var newProgress;\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / (translatesDiff);\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 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\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n var capture = !!params.nested;\n\n // Touch Events\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 ? { passive: true, capture: false } : false;\n el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture: capture } : capture);\n el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n if (!dummyEventAttached) {\n doc.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\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 }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el.addEventListener('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl.addEventListener('scroll', swiper.onScroll);\n }\n\n // Resize handler\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\n var params = swiper.params;\n var touchEvents = swiper.touchEvents;\n var el = swiper.el;\n var wrapperEl = swiper.wrapperEl;\n\n var capture = !!params.nested;\n\n // Touch Events\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 ? { passive: true, capture: false } : 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 if (touchEvents.cancel) {\n el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\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 }\n // Prevent Links Clicks\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 }\n\n // Resize handler\n swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);\n }\n\n var events = {\n attachEvents: attachEvents,\n detachEvents: detachEvents,\n };\n\n function setBreakpoint () {\n var swiper = this;\n var activeIndex = swiper.activeIndex;\n var initialized = swiper.initialized;\n var loopedSlides = swiper.loopedSlides; if ( loopedSlides === void 0 ) loopedSlides = 0;\n var params = swiper.params;\n var $el = swiper.$el;\n var breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) { return; }\n\n // Get breakpoint for window width and update parameters\n var breakpoint = swiper.getBreakpoint(breakpoints);\n\n if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n var breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n if (breakpointOnlyParams) {\n ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach(function (param) {\n var paramValue = breakpointOnlyParams[param];\n if (typeof paramValue === 'undefined') { return; }\n if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {\n breakpointOnlyParams[param] = 'auto';\n } else if (param === 'slidesPerView') {\n breakpointOnlyParams[param] = parseFloat(paramValue);\n } else {\n breakpointOnlyParams[param] = parseInt(paramValue, 10);\n }\n });\n }\n\n var breakpointParams = breakpointOnlyParams || swiper.originalParams;\n var wasMultiRow = params.slidesPerColumn > 1;\n var isMultiRow = breakpointParams.slidesPerColumn > 1;\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 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\n Utils.extend(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n });\n\n swiper.currentBreakpoint = breakpoint;\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n }\n }\n\n function getBreakpoint (breakpoints) {\n // Get breakpoint for window width\n if (!breakpoints) { return undefined; }\n var breakpoint = false;\n\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 { value: value, point: point };\n }\n return { value: point, point: point };\n });\n\n points.sort(function (a, b) { return parseInt(a.value, 10) - parseInt(b.value, 10); });\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 if (value <= win.innerWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n }\n\n var breakpoints = { setBreakpoint: setBreakpoint, getBreakpoint: getBreakpoint };\n\n function addClasses () {\n var swiper = this;\n var classNames = swiper.classNames;\n var params = swiper.params;\n var rtl = swiper.rtl;\n var $el = swiper.$el;\n var suffixes = [];\n\n suffixes.push('initialized');\n suffixes.push(params.direction);\n\n if (params.freeMode) {\n suffixes.push('free-mode');\n }\n if (params.autoHeight) {\n suffixes.push('autoheight');\n }\n if (rtl) {\n suffixes.push('rtl');\n }\n if (params.slidesPerColumn > 1) {\n suffixes.push('multirow');\n if (params.slidesPerColumnFill === 'column') {\n suffixes.push('multirow-column');\n }\n }\n if (Device.android) {\n suffixes.push('android');\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\n $el.addClass(classNames.join(' '));\n }\n\n function removeClasses () {\n var swiper = this;\n var $el = swiper.$el;\n var classNames = swiper.classNames;\n\n $el.removeClass(classNames.join(' '));\n }\n\n var classes = { addClasses: addClasses, removeClasses: removeClasses };\n\n function loadImage (imageEl, src, srcset, sizes, checkForComplete, callback) {\n var image;\n function onReady() {\n if (callback) { callback(); }\n }\n var isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new win.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n }\n\n function preloadImages () {\n var swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) { return; }\n if (swiper.imagesLoaded !== undefined) { swiper.imagesLoaded += 1; }\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) { swiper.update(); }\n swiper.emit('imagesReady');\n }\n }\n for (var i = 0; i < swiper.imagesToLoad.length; i += 1) {\n var imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(\n imageEl,\n imageEl.currentSrc || imageEl.getAttribute('src'),\n imageEl.srcset || imageEl.getAttribute('srcset'),\n imageEl.sizes || imageEl.getAttribute('sizes'),\n true,\n onReady\n );\n }\n }\n\n var images = {\n loadImage: loadImage,\n preloadImages: preloadImages,\n };\n\n function checkOverflow() {\n var swiper = this;\n var 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;\n\n // events\n if (wasLocked !== swiper.isLocked) { swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n swiper.navigation.update();\n }\n }\n\n var checkOverflow$1 = { checkOverflow: checkOverflow };\n\n var defaults = {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n //\n preventInteractionOnTransition: false,\n\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeMomentumVelocityRatio: 1,\n freeModeSticky: false,\n freeModeMinimumVelocity: 0.02,\n\n // Autoheight\n autoHeight: false,\n\n // Set wrapper width\n setWrapperSize: false,\n\n // Virtual Translate\n virtualTranslate: false,\n\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n\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, // in px\n slidesOffsetAfter: 0, // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: false,\n\n // Round length\n roundLengths: false,\n\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n\n // Unique Navigation Elements\n uniqueNavElements: true,\n\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n\n // Cursor\n grabCursor: false,\n\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null, // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n\n // Passive Listeners\n passiveListeners: true,\n\n // NS\n containerModifierClass: 'swiper-container-', // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n\n // Callbacks\n runCallbacksOnInit: true,\n };\n\n /* eslint no-param-reassign: \"off\" */\n\n var prototypes = {\n update: update,\n translate: translate,\n transition: transition$1,\n slide: slide,\n loop: loop,\n grabCursor: grabCursor,\n manipulation: manipulation,\n events: events,\n breakpoints: breakpoints,\n checkOverflow: checkOverflow$1,\n classes: classes,\n images: images,\n };\n\n var extendedDefaults = {};\n\n var Swiper = /*@__PURE__*/(function (SwiperClass) {\n function Swiper() {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var el;\n var params;\n if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {\n params = args[0];\n } else {\n (assign = args, el = assign[0], params = assign[1]);\n }\n if (!params) { params = {}; }\n\n params = Utils.extend({}, params);\n if (el && !params.el) { params.el = el; }\n\n SwiperClass.call(this, params);\n\n Object.keys(prototypes).forEach(function (prototypeGroup) {\n Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) {\n if (!Swiper.prototype[protoMethod]) {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n }\n });\n });\n\n // Swiper Instance\n var swiper = this;\n if (typeof swiper.modules === 'undefined') {\n swiper.modules = {};\n }\n Object.keys(swiper.modules).forEach(function (moduleName) {\n var module = swiper.modules[moduleName];\n if (module.params) {\n var moduleParamName = Object.keys(module.params)[0];\n var moduleParams = module.params[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) { return; }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) { return; }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (\n typeof params[moduleParamName] === 'object'\n && !('enabled' in params[moduleParamName])\n ) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) { params[moduleParamName] = { enabled: false }; }\n }\n });\n\n // Extend defaults with modules params\n var swiperParams = Utils.extend({}, defaults);\n swiper.useModulesParams(swiperParams);\n\n // Extend defaults with passed params\n swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = Utils.extend({}, swiper.params);\n swiper.passedParams = Utils.extend({}, params);\n\n // Save Dom lib\n swiper.$ = $;\n\n // Find el\n var $el = $(swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return undefined;\n }\n\n if ($el.length > 1) {\n var swipers = [];\n $el.each(function (index, containerEl) {\n var newParams = Utils.extend({}, params, { el: containerEl });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n }\n\n el.swiper = swiper;\n $el.data('swiper', swiper);\n\n // Find Wrapper\n var $wrapperEl;\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n $wrapperEl = $(el.shadowRoot.querySelector((\".\" + (swiper.params.wrapperClass))));\n // Children needs to return slot items\n $wrapperEl.children = function (options) { return $el.children(options); };\n } else {\n $wrapperEl = $el.children((\".\" + (swiper.params.wrapperClass)));\n }\n // Extend Swiper\n Utils.extend(swiper, {\n $el: $el,\n el: el,\n $wrapperEl: $wrapperEl,\n wrapperEl: $wrapperEl[0],\n\n // Classes\n classNames: [],\n\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal: function isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical: function isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // RTL\n rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n\n //\n isBeginning: true,\n isEnd: false,\n\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n\n // Touch Events\n touchEvents: (function touchEvents() {\n var touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n var desktop = ['mousedown', 'mousemove', 'mouseup'];\n if (Support.pointerEvents) {\n desktop = ['pointerdown', 'pointermove', 'pointerup'];\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\n // Clicks\n allowClick: true,\n\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0,\n },\n\n // Images\n imagesToLoad: [],\n imagesLoaded: 0,\n\n });\n\n // Install Modules\n swiper.useModules();\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n return swiper;\n }\n\n if ( SwiperClass ) Swiper.__proto__ = SwiperClass;\n Swiper.prototype = Object.create( SwiperClass && SwiperClass.prototype );\n Swiper.prototype.constructor = Swiper;\n\n var staticAccessors = { extendedDefaults: { configurable: true },defaults: { configurable: true },Class: { configurable: true },$: { configurable: true } };\n\n Swiper.prototype.slidesPerViewDynamic = function slidesPerViewDynamic () {\n var swiper = this;\n var params = swiper.params;\n var slides = swiper.slides;\n var slidesGrid = swiper.slidesGrid;\n var swiperSize = swiper.size;\n var activeIndex = swiper.activeIndex;\n var spv = 1;\n if (params.centeredSlides) {\n var slideSize = slides[activeIndex].swiperSlideSize;\n var breakLoop;\n for (var i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) { breakLoop = true; }\n }\n }\n for (var i$1 = activeIndex - 1; i$1 >= 0; i$1 -= 1) {\n if (slides[i$1] && !breakLoop) {\n slideSize += slides[i$1].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) { breakLoop = true; }\n }\n }\n } else {\n for (var i$2 = activeIndex + 1; i$2 < slides.length; i$2 += 1) {\n if (slidesGrid[i$2] - slidesGrid[activeIndex] < swiperSize) {\n spv += 1;\n }\n }\n }\n return spv;\n };\n\n Swiper.prototype.update = function update () {\n var swiper = this;\n if (!swiper || swiper.destroyed) { return; }\n var snapGrid = swiper.snapGrid;\n var params = swiper.params;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n var translated;\n if (swiper.params.freeMode) {\n setTranslate();\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n };\n\n Swiper.prototype.changeDirection = function changeDirection (newDirection, needUpdate) {\n if ( needUpdate === void 0 ) needUpdate = true;\n\n var swiper = this;\n var currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) {\n return swiper;\n }\n\n swiper.$el\n .removeClass((\"\" + (swiper.params.containerModifierClass) + currentDirection))\n .addClass((\"\" + (swiper.params.containerModifierClass) + newDirection));\n\n swiper.params.direction = newDirection;\n\n swiper.slides.each(function (slideIndex, slideEl) {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n\n swiper.emit('changeDirection');\n if (needUpdate) { swiper.update(); }\n\n return swiper;\n };\n\n Swiper.prototype.init = function init () {\n var swiper = this;\n if (swiper.initialized) { return; }\n\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);\n }\n\n // Attach events\n swiper.attachEvents();\n\n // Init Flag\n swiper.initialized = true;\n\n // Emit\n swiper.emit('init');\n };\n\n Swiper.prototype.destroy = function destroy (deleteInstance, cleanStyles) {\n if ( deleteInstance === void 0 ) deleteInstance = true;\n if ( cleanStyles === void 0 ) cleanStyles = true;\n\n var swiper = this;\n var params = swiper.params;\n var $el = swiper.$el;\n var $wrapperEl = swiper.$wrapperEl;\n var slides = swiper.slides;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n if (slides && slides.length) {\n slides\n .removeClass([\n params.slideVisibleClass,\n params.slideActiveClass,\n params.slideNextClass,\n params.slidePrevClass ].join(' '))\n .removeAttr('style')\n .removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(function (eventName) {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n swiper.$el.data('swiper', null);\n Utils.deleteProps(swiper);\n }\n swiper.destroyed = true;\n\n return null;\n };\n\n Swiper.extendDefaults = function extendDefaults (newDefaults) {\n Utils.extend(extendedDefaults, newDefaults);\n };\n\n staticAccessors.extendedDefaults.get = function () {\n return extendedDefaults;\n };\n\n staticAccessors.defaults.get = function () {\n return defaults;\n };\n\n staticAccessors.Class.get = function () {\n return SwiperClass;\n };\n\n staticAccessors.$.get = function () {\n return $;\n };\n\n Object.defineProperties( Swiper, staticAccessors );\n\n return Swiper;\n }(SwiperClass));\n\n var Device$1 = {\n name: 'device',\n proto: {\n device: Device,\n },\n static: {\n device: Device,\n },\n };\n\n var Support$1 = {\n name: 'support',\n proto: {\n support: Support,\n },\n static: {\n support: Support,\n },\n };\n\n var Browser = (function Browser() {\n function isSafari() {\n var ua = win.navigator.userAgent.toLowerCase();\n return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n }\n return {\n 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\n var Resize = {\n name: 'resize',\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n resize: {\n resizeHandler: function resizeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) { return; }\n swiper.emit('beforeResize');\n swiper.emit('resize');\n },\n orientationChangeHandler: function orientationChangeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) { return; }\n swiper.emit('orientationchange');\n },\n },\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n // Emit resize\n win.addEventListener('resize', swiper.resize.resizeHandler);\n\n // Emit orientationchange\n win.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n destroy: function destroy() {\n var swiper = this;\n win.removeEventListener('resize', swiper.resize.resizeHandler);\n win.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n },\n };\n\n var Observer = {\n func: win.MutationObserver || win.WebkitMutationObserver,\n attach: function attach(target, options) {\n if ( options === void 0 ) options = {};\n\n var swiper = this;\n\n var ObserverFunc = Observer.func;\n var observer = new ObserverFunc(function (mutations) {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n swiper.emit('observerUpdate', mutations[0]);\n return;\n }\n var observerUpdate = function observerUpdate() {\n swiper.emit('observerUpdate', mutations[0]);\n };\n\n if (win.requestAnimationFrame) {\n win.requestAnimationFrame(observerUpdate);\n } else {\n win.setTimeout(observerUpdate, 0);\n }\n });\n\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n });\n\n swiper.observer.observers.push(observer);\n },\n init: function init() {\n var swiper = this;\n if (!Support.observer || !swiper.params.observer) { return; }\n if (swiper.params.observeParents) {\n var containerParents = swiper.$el.parents();\n for (var i = 0; i < containerParents.length; i += 1) {\n swiper.observer.attach(containerParents[i]);\n }\n }\n // Observe container\n swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren });\n\n // Observe wrapper\n swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.observer.observers.forEach(function (observer) {\n observer.disconnect();\n });\n swiper.observer.observers = [];\n },\n };\n\n var Observer$1 = {\n name: 'observer',\n params: {\n observer: false,\n observeParents: false,\n observeSlideChildren: false,\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n observer: {\n init: Observer.init.bind(swiper),\n attach: Observer.attach.bind(swiper),\n destroy: Observer.destroy.bind(swiper),\n observers: [],\n },\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n swiper.observer.init();\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.observer.destroy();\n },\n },\n };\n\n var Virtual = {\n update: function update(force) {\n var swiper = this;\n var ref = swiper.params;\n var slidesPerView = ref.slidesPerView;\n var slidesPerGroup = ref.slidesPerGroup;\n var centeredSlides = ref.centeredSlides;\n var ref$1 = swiper.params.virtual;\n var addSlidesBefore = ref$1.addSlidesBefore;\n var addSlidesAfter = ref$1.addSlidesAfter;\n var ref$2 = swiper.virtual;\n var previousFrom = ref$2.from;\n var previousTo = ref$2.to;\n var slides = ref$2.slides;\n var previousSlidesGrid = ref$2.slidesGrid;\n var renderSlide = ref$2.renderSlide;\n var previousOffset = ref$2.offset;\n swiper.updateActiveIndex();\n var activeIndex = swiper.activeIndex || 0;\n\n var offsetProp;\n if (swiper.rtlTranslate) { offsetProp = 'right'; }\n else { offsetProp = swiper.isHorizontal() ? 'left' : 'top'; }\n\n var slidesAfter;\n var slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;\n slidesBefore = slidesPerGroup + addSlidesAfter;\n }\n var from = Math.max((activeIndex || 0) - slidesBefore, 0);\n var to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n var offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n Utils.extend(swiper.virtual, {\n from: from,\n to: to,\n offset: offset,\n slidesGrid: swiper.slidesGrid,\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, (offset + \"px\"));\n }\n swiper.updateProgress();\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset: offset,\n from: from,\n to: to,\n slides: (function getSlides() {\n var slidesToRender = [];\n for (var i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()),\n });\n onRendered();\n return;\n }\n var prependIndexes = [];\n var appendIndexes = [];\n if (force) {\n swiper.$wrapperEl.find((\".\" + (swiper.params.slideClass))).remove();\n } else {\n for (var i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl.find((\".\" + (swiper.params.slideClass) + \"[data-swiper-slide-index=\\\"\" + i + \"\\\"]\")).remove();\n }\n }\n }\n for (var i$1 = 0; i$1 < slides.length; i$1 += 1) {\n if (i$1 >= from && i$1 <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i$1);\n } else {\n if (i$1 > previousTo) { appendIndexes.push(i$1); }\n if (i$1 < previousFrom) { prependIndexes.push(i$1); }\n }\n }\n }\n appendIndexes.forEach(function (index) {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes.sort(function (a, b) { return b - a; }).forEach(function (index) {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, (offset + \"px\"));\n onRendered();\n },\n renderSlide: function renderSlide(slide, index) {\n var swiper = this;\n var params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n var $slideEl = params.renderSlide\n ? $(params.renderSlide.call(swiper, slide, index))\n : $((\"
\" + slide + \"
\"));\n if (!$slideEl.attr('data-swiper-slide-index')) { $slideEl.attr('data-swiper-slide-index', index); }\n if (params.cache) { swiper.virtual.cache[index] = $slideEl; }\n return $slideEl;\n },\n appendSlide: function appendSlide(slides) {\n var swiper = this;\n if (typeof slides === 'object' && 'length' in slides) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i]) { swiper.virtual.slides.push(slides[i]); }\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n swiper.virtual.update(true);\n },\n prependSlide: function prependSlide(slides) {\n var swiper = this;\n var activeIndex = swiper.activeIndex;\n var newActiveIndex = activeIndex + 1;\n var numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i]) { swiper.virtual.slides.unshift(slides[i]); }\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n var cache = swiper.virtual.cache;\n var newCache = {};\n Object.keys(cache).forEach(function (cachedIndex) {\n var $cachedEl = cache[cachedIndex];\n var cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n if (cachedElIndex) {\n $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n swiper.virtual.update(true);\n swiper.slideTo(newActiveIndex, 0);\n },\n removeSlide: function removeSlide(slidesIndexes) {\n var swiper = this;\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) { return; }\n var activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (var i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n if (slidesIndexes[i] < activeIndex) { activeIndex -= 1; }\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n if (slidesIndexes < activeIndex) { activeIndex -= 1; }\n activeIndex = Math.max(activeIndex, 0);\n }\n swiper.virtual.update(true);\n swiper.slideTo(activeIndex, 0);\n },\n removeAllSlides: function removeAllSlides() {\n var swiper = this;\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n swiper.virtual.update(true);\n swiper.slideTo(0, 0);\n },\n };\n\n var Virtual$1 = {\n name: 'virtual',\n params: {\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n addSlidesBefore: 0,\n addSlidesAfter: 0,\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n virtual: {\n update: Virtual.update.bind(swiper),\n appendSlide: Virtual.appendSlide.bind(swiper),\n prependSlide: Virtual.prependSlide.bind(swiper),\n removeSlide: Virtual.removeSlide.bind(swiper),\n removeAllSlides: Virtual.removeAllSlides.bind(swiper),\n renderSlide: Virtual.renderSlide.bind(swiper),\n slides: swiper.params.virtual.slides,\n cache: {},\n },\n });\n },\n on: {\n beforeInit: function beforeInit() {\n var swiper = this;\n if (!swiper.params.virtual.enabled) { return; }\n swiper.classNames.push(((swiper.params.containerModifierClass) + \"virtual\"));\n var overwriteParams = {\n watchSlidesProgress: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n\n if (!swiper.params.initialSlide) {\n swiper.virtual.update();\n }\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n if (!swiper.params.virtual.enabled) { return; }\n swiper.virtual.update();\n },\n },\n };\n\n var Keyboard = {\n handle: function handle(event) {\n var swiper = this;\n var rtl = swiper.rtlTranslate;\n var e = event;\n if (e.originalEvent) { e = e.originalEvent; } // jquery fix\n var kc = e.keyCode || e.charCode;\n // Directions locks\n if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40) || kc === 34)) {\n return false;\n }\n if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38) || kc === 33)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (doc.activeElement && doc.activeElement.nodeName && (doc.activeElement.nodeName.toLowerCase() === 'input' || doc.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (kc === 33 || kc === 34 || kc === 37 || kc === 39 || kc === 38 || kc === 40)) {\n var inView = false;\n // Check that swiper should be inside of visible area of window\n if (swiper.$el.parents((\".\" + (swiper.params.slideClass))).length > 0 && swiper.$el.parents((\".\" + (swiper.params.slideActiveClass))).length === 0) {\n return undefined;\n }\n var windowWidth = win.innerWidth;\n var windowHeight = win.innerHeight;\n var swiperOffset = swiper.$el.offset();\n if (rtl) { swiperOffset.left -= swiper.$el[0].scrollLeft; }\n var swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiper.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiper.height],\n [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height] ];\n for (var i = 0; i < swiperCoord.length; i += 1) {\n var point = swiperCoord[i];\n if (\n point[0] >= 0 && point[0] <= windowWidth\n && point[1] >= 0 && point[1] <= windowHeight\n ) {\n inView = true;\n }\n }\n if (!inView) { return undefined; }\n }\n if (swiper.isHorizontal()) {\n if (kc === 33 || kc === 34 || kc === 37 || kc === 39) {\n if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n }\n if (((kc === 34 || kc === 39) && !rtl) || ((kc === 33 || kc === 37) && rtl)) { swiper.slideNext(); }\n if (((kc === 33 || kc === 37) && !rtl) || ((kc === 34 || kc === 39) && rtl)) { swiper.slidePrev(); }\n } else {\n if (kc === 33 || kc === 34 || kc === 38 || kc === 40) {\n if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n }\n if (kc === 34 || kc === 40) { swiper.slideNext(); }\n if (kc === 33 || kc === 38) { swiper.slidePrev(); }\n }\n swiper.emit('keyPress', kc);\n return undefined;\n },\n enable: function enable() {\n var swiper = this;\n if (swiper.keyboard.enabled) { return; }\n $(doc).on('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = true;\n },\n disable: function disable() {\n var swiper = this;\n if (!swiper.keyboard.enabled) { return; }\n $(doc).off('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = false;\n },\n };\n\n var Keyboard$1 = {\n name: 'keyboard',\n params: {\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n keyboard: {\n enabled: false,\n enable: Keyboard.enable.bind(swiper),\n disable: Keyboard.disable.bind(swiper),\n handle: Keyboard.handle.bind(swiper),\n },\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n if (swiper.params.keyboard.enabled) {\n swiper.keyboard.enable();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n if (swiper.keyboard.enabled) {\n swiper.keyboard.disable();\n }\n },\n },\n };\n\n function isEventSupported() {\n var eventName = 'onwheel';\n var isSupported = eventName in doc;\n\n if (!isSupported) {\n var element = doc.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported\n && doc.implementation\n && doc.implementation.hasFeature\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n && doc.implementation.hasFeature('', '') !== true\n ) {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = doc.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n }\n var Mousewheel = {\n lastScrollTime: Utils.now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n event: function event() {\n if (win.navigator.userAgent.indexOf('firefox') > -1) { return 'DOMMouseScroll'; }\n return isEventSupported() ? 'wheel' : 'mousewheel';\n },\n normalize: function normalize(e) {\n // Reasonable defaults\n var PIXEL_STEP = 10;\n var LINE_HEIGHT = 40;\n var PAGE_HEIGHT = 800;\n\n var sX = 0;\n var sY = 0; // spinX, spinY\n var pX = 0;\n var pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) { // 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) { // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else { // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = (pX < 1) ? -1 : 1;\n }\n if (pY && !sY) {\n sY = (pY < 1) ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY,\n };\n },\n handleMouseEnter: function handleMouseEnter() {\n var swiper = this;\n swiper.mouseEntered = true;\n },\n handleMouseLeave: function handleMouseLeave() {\n var swiper = this;\n swiper.mouseEntered = false;\n },\n handle: function handle(event) {\n var e = event;\n var swiper = this;\n var params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n var target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) { return true; }\n\n if (e.originalEvent) { e = e.originalEvent; } // jquery fix\n var delta = 0;\n var rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n var data = Mousewheel.normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) { delta = -data.pixelX * rtlFactor; }\n else { return true; }\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) { delta = -data.pixelY; }\n else { return true; }\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) { return true; }\n\n if (params.invert) { delta = -delta; }\n\n if (!swiper.params.freeMode) {\n // 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 };\n\n // Keep the most recent events\n var recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n var prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\n\n // 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 if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n swiper.mousewheel.animateSlider(newEvent);\n }\n } else {\n swiper.mousewheel.animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (swiper.mousewheel.releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\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 = { time: Utils.now(), delta: Math.abs(delta), direction: Math.sign(delta) };\n var ref = swiper.mousewheel;\n var lastEventBeforeSnap = ref.lastEventBeforeSnap;\n var ignoreWheelEvents = lastEventBeforeSnap\n && newEvent$1.time < lastEventBeforeSnap.time + 500\n && newEvent$1.delta <= lastEventBeforeSnap.delta\n && newEvent$1.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n swiper.mousewheel.lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n var position = swiper.getTranslate() + (delta * params.sensitivity);\n var wasBeginning = swiper.isBeginning;\n var wasEnd = swiper.isEnd;\n\n if (position >= swiper.minTranslate()) { position = swiper.minTranslate(); }\n if (position <= swiper.maxTranslate()) { position = swiper.maxTranslate(); }\n\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeModeSticky) {\n // 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 if (recentWheelEvents$1.length >= 15) {\n recentWheelEvents$1.shift(); // only store the last N events\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 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\n && newEvent$1.time - firstEvent.time < 500\n && firstEvent.delta - newEvent$1.delta >= 1\n && newEvent$1.delta <= 6\n ) {\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 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 }\n\n // Emit event\n if (!ignoreWheelEvents) { swiper.emit('scroll', e); }\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) { swiper.autoplay.stop(); }\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) { return true; }\n }\n }\n\n if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n return false;\n },\n animateSlider: function animateSlider(newEvent) {\n var swiper = this;\n // 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 if (newEvent.delta >= 6 && Utils.now() - swiper.mousewheel.lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\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 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 }\n // If you got here is because an animation has been triggered so store the current time\n swiper.mousewheel.lastScrollTime = (new win.Date()).getTime();\n // Return false as a default\n return false;\n },\n releaseScroll: function releaseScroll(newEvent) {\n var swiper = this;\n var params = swiper.params.mousewheel;\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 return false;\n },\n enable: function enable() {\n var swiper = this;\n var event = Mousewheel.event();\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n if (!event) { return false; }\n if (swiper.mousewheel.enabled) { return false; }\n var target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.on('mouseenter', swiper.mousewheel.handleMouseEnter);\n target.on('mouseleave', swiper.mousewheel.handleMouseLeave);\n target.on(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 if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n if (!event) { return false; }\n if (!swiper.mousewheel.enabled) { return false; }\n var target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.off(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = false;\n return true;\n },\n };\n\n var Mousewheel$1 = {\n name: 'mousewheel',\n params: {\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarged: 'container',\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n mousewheel: {\n enabled: false,\n enable: Mousewheel.enable.bind(swiper),\n disable: Mousewheel.disable.bind(swiper),\n handle: Mousewheel.handle.bind(swiper),\n handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),\n handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),\n 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 if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n swiper.mousewheel.disable();\n }\n if (swiper.params.mousewheel.enabled) { swiper.mousewheel.enable(); }\n },\n destroy: function destroy() {\n var swiper = this;\n if (swiper.params.cssMode) {\n swiper.mousewheel.enable();\n }\n if (swiper.mousewheel.enabled) { swiper.mousewheel.disable(); }\n },\n },\n };\n\n var Navigation = {\n update: function update() {\n // Update Navigation Buttons\n var swiper = this;\n var params = swiper.params.navigation;\n\n if (swiper.params.loop) { return; }\n var ref = swiper.navigation;\n var $nextEl = ref.$nextEl;\n var $prevEl = ref.$prevEl;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n $prevEl.addClass(params.disabledClass);\n } else {\n $prevEl.removeClass(params.disabledClass);\n }\n $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n $nextEl.addClass(params.disabledClass);\n } else {\n $nextEl.removeClass(params.disabledClass);\n }\n $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n },\n onPrevClick: function onPrevClick(e) {\n var swiper = this;\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) { return; }\n swiper.slidePrev();\n },\n onNextClick: function onNextClick(e) {\n var swiper = this;\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) { return; }\n swiper.slideNext();\n },\n init: function init() {\n var swiper = this;\n var params = swiper.params.navigation;\n if (!(params.nextEl || params.prevEl)) { return; }\n\n var $nextEl;\n var $prevEl;\n if (params.nextEl) {\n $nextEl = $(params.nextEl);\n if (\n swiper.params.uniqueNavElements\n && typeof params.nextEl === 'string'\n && $nextEl.length > 1\n && swiper.$el.find(params.nextEl).length === 1\n ) {\n $nextEl = swiper.$el.find(params.nextEl);\n }\n }\n if (params.prevEl) {\n $prevEl = $(params.prevEl);\n if (\n swiper.params.uniqueNavElements\n && typeof params.prevEl === 'string'\n && $prevEl.length > 1\n && swiper.$el.find(params.prevEl).length === 1\n ) {\n $prevEl = swiper.$el.find(params.prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', swiper.navigation.onNextClick);\n }\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', swiper.navigation.onPrevClick);\n }\n\n Utils.extend(swiper.navigation, {\n $nextEl: $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl: $prevEl,\n prevEl: $prevEl && $prevEl[0],\n });\n },\n destroy: function destroy() {\n var swiper = this;\n var ref = swiper.navigation;\n var $nextEl = ref.$nextEl;\n var $prevEl = ref.$prevEl;\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', swiper.navigation.onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', swiper.navigation.onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n },\n };\n\n var Navigation$1 = {\n name: 'navigation',\n params: {\n navigation: {\n nextEl: null,\n prevEl: null,\n\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n navigation: {\n init: Navigation.init.bind(swiper),\n update: Navigation.update.bind(swiper),\n destroy: Navigation.destroy.bind(swiper),\n onNextClick: Navigation.onNextClick.bind(swiper),\n onPrevClick: Navigation.onPrevClick.bind(swiper),\n },\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n swiper.navigation.init();\n swiper.navigation.update();\n },\n toEdge: function toEdge() {\n var swiper = this;\n swiper.navigation.update();\n },\n fromEdge: function fromEdge() {\n var swiper = this;\n swiper.navigation.update();\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.navigation.destroy();\n },\n click: function click(e) {\n var swiper = this;\n var ref = swiper.navigation;\n var $nextEl = ref.$nextEl;\n var $prevEl = ref.$prevEl;\n if (\n swiper.params.navigation.hideOnClick\n && !$(e.target).is($prevEl)\n && !$(e.target).is($nextEl)\n ) {\n var isHidden;\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n swiper.emit('navigationShow', swiper);\n } else {\n swiper.emit('navigationHide', swiper);\n }\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n },\n },\n };\n\n var Pagination = {\n update: function update() {\n // Render || Update Pagination bullets/items\n var swiper = this;\n var rtl = swiper.rtl;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }\n var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n var $el = swiper.pagination.$el;\n // Current/Total\n var current;\n var total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {\n current -= (slidesLength - (swiper.loopedSlides * 2));\n }\n if (current > total - 1) { current -= total; }\n if (current < 0 && swiper.params.paginationType !== 'bullets') { current = total + current; }\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n var bullets = swiper.pagination.bullets;\n var firstIndex;\n var lastIndex;\n var midIndex;\n if (params.dynamicBullets) {\n swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', ((swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)) + \"px\"));\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);\n if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) {\n swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (swiper.pagination.dynamicBulletIndex < 0) {\n swiper.pagination.dynamicBulletIndex = 0;\n }\n }\n firstIndex = current - swiper.pagination.dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.removeClass(((params.bulletActiveClass) + \" \" + (params.bulletActiveClass) + \"-next \" + (params.bulletActiveClass) + \"-next-next \" + (params.bulletActiveClass) + \"-prev \" + (params.bulletActiveClass) + \"-prev-prev \" + (params.bulletActiveClass) + \"-main\"));\n if ($el.length > 1) {\n bullets.each(function (index, bullet) {\n var $bullet = $(bullet);\n var bulletIndex = $bullet.index();\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(((params.bulletActiveClass) + \"-main\"));\n }\n if (bulletIndex === firstIndex) {\n $bullet\n .prev()\n .addClass(((params.bulletActiveClass) + \"-prev\"))\n .prev()\n .addClass(((params.bulletActiveClass) + \"-prev-prev\"));\n }\n if (bulletIndex === lastIndex) {\n $bullet\n .next()\n .addClass(((params.bulletActiveClass) + \"-next\"))\n .next()\n .addClass(((params.bulletActiveClass) + \"-next-next\"));\n }\n }\n });\n } else {\n var $bullet = bullets.eq(current);\n var bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n var $firstDisplayedBullet = bullets.eq(firstIndex);\n var $lastDisplayedBullet = bullets.eq(lastIndex);\n for (var i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(((params.bulletActiveClass) + \"-main\"));\n }\n 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 bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(((params.bulletActiveClass) + \"-prev\"));\n } else {\n $firstDisplayedBullet\n .prev()\n .addClass(((params.bulletActiveClass) + \"-prev\"))\n .prev()\n .addClass(((params.bulletActiveClass) + \"-prev-prev\"));\n $lastDisplayedBullet\n .next()\n .addClass(((params.bulletActiveClass) + \"-next\"))\n .next()\n .addClass(((params.bulletActiveClass) + \"-next-next\"));\n }\n } else {\n $firstDisplayedBullet\n .prev()\n .addClass(((params.bulletActiveClass) + \"-prev\"))\n .prev()\n .addClass(((params.bulletActiveClass) + \"-prev-prev\"));\n $lastDisplayedBullet\n .next()\n .addClass(((params.bulletActiveClass) + \"-next\"))\n .next()\n .addClass(((params.bulletActiveClass) + \"-next-next\"));\n }\n }\n }\n if (params.dynamicBullets) {\n var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n var bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);\n var offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', (bulletsOffset + \"px\"));\n }\n }\n if (params.type === 'fraction') {\n $el.find((\".\" + (params.currentClass))).text(params.formatFractionCurrent(current + 1));\n $el.find((\".\" + (params.totalClass))).text(params.formatFractionTotal(total));\n }\n if (params.type === 'progressbar') {\n var progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n var scale = (current + 1) / total;\n var scaleX = 1;\n var scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n $el.find((\".\" + (params.progressbarFillClass))).transform((\"translate3d(0,0,0) scaleX(\" + scaleX + \") scaleY(\" + scaleY + \")\")).transition(swiper.params.speed);\n }\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n swiper.emit('paginationRender', swiper, $el[0]);\n } else {\n swiper.emit('paginationUpdate', swiper, $el[0]);\n }\n $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n },\n render: function render() {\n // Render Container\n var swiper = this;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }\n var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n\n var $el = swiper.pagination.$el;\n var paginationHTML = '';\n if (params.type === 'bullets') {\n var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n for (var i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += \"<\" + (params.bulletElement) + \" class=\\\"\" + (params.bulletClass) + \"\\\">\";\n }\n }\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find((\".\" + (params.bulletClass)));\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = \"\"\n + ' / '\n + \"\";\n }\n $el.html(paginationHTML);\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = \"\";\n }\n $el.html(paginationHTML);\n }\n if (params.type !== 'custom') {\n swiper.emit('paginationRender', swiper.pagination.$el[0]);\n }\n },\n init: function init() {\n var swiper = this;\n var params = swiper.params.pagination;\n if (!params.el) { return; }\n\n var $el = $(params.el);\n if ($el.length === 0) { return; }\n\n if (\n swiper.params.uniqueNavElements\n && typeof params.el === 'string'\n && $el.length > 1\n ) {\n $el = swiper.$el.find(params.el);\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass((\"\" + (params.modifierClass) + (params.type) + \"-dynamic\"));\n swiper.pagination.dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', (\".\" + (params.bulletClass)), function onClick(e) {\n e.preventDefault();\n var index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) { index += swiper.loopedSlides; }\n swiper.slideTo(index);\n });\n }\n\n Utils.extend(swiper.pagination, {\n $el: $el,\n el: $el[0],\n });\n },\n destroy: function destroy() {\n var swiper = this;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }\n var $el = swiper.pagination.$el;\n\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n if (swiper.pagination.bullets) { swiper.pagination.bullets.removeClass(params.bulletActiveClass); }\n if (params.clickable) {\n $el.off('click', (\".\" + (params.bulletClass)));\n }\n },\n };\n\n var Pagination$1 = {\n name: 'pagination',\n params: {\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: function (number) { return number; },\n formatFractionTotal: function (number) { return number; },\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n modifierClass: 'swiper-pagination-', // NEW\n currentClass: 'swiper-pagination-current',\n totalClass: 'swiper-pagination-total',\n hiddenClass: 'swiper-pagination-hidden',\n progressbarFillClass: 'swiper-pagination-progressbar-fill',\n progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\n clickableClass: 'swiper-pagination-clickable', // NEW\n lockClass: 'swiper-pagination-lock',\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n pagination: {\n init: Pagination.init.bind(swiper),\n render: Pagination.render.bind(swiper),\n update: Pagination.update.bind(swiper),\n destroy: Pagination.destroy.bind(swiper),\n dynamicBulletIndex: 0,\n },\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n swiper.pagination.init();\n swiper.pagination.render();\n swiper.pagination.update();\n },\n activeIndexChange: function activeIndexChange() {\n var swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n swiper.pagination.update();\n }\n },\n snapIndexChange: function snapIndexChange() {\n var swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.update();\n }\n },\n slidesLengthChange: function slidesLengthChange() {\n var swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n snapGridLengthChange: function snapGridLengthChange() {\n var swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.pagination.destroy();\n },\n click: function click(e) {\n var swiper = this;\n if (\n swiper.params.pagination.el\n && swiper.params.pagination.hideOnClick\n && swiper.pagination.$el.length > 0\n && !$(e.target).hasClass(swiper.params.pagination.bulletClass)\n ) {\n var isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n swiper.emit('paginationShow', swiper);\n } else {\n swiper.emit('paginationHide', swiper);\n }\n swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n },\n },\n };\n\n var Scrollbar = {\n setTranslate: function setTranslate() {\n var swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }\n var scrollbar = swiper.scrollbar;\n var rtl = swiper.rtlTranslate;\n var progress = swiper.progress;\n var dragSize = scrollbar.dragSize;\n var trackSize = scrollbar.trackSize;\n var $dragEl = scrollbar.$dragEl;\n var $el = scrollbar.$el;\n var params = swiper.params.scrollbar;\n\n var newSize = dragSize;\n var newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n $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 if (params.hide) {\n clearTimeout(swiper.scrollbar.timeout);\n $el[0].style.opacity = 1;\n swiper.scrollbar.timeout = setTimeout(function () {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }\n swiper.scrollbar.$dragEl.transition(duration);\n },\n updateSize: function updateSize() {\n var swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }\n\n var scrollbar = swiper.scrollbar;\n var $dragEl = scrollbar.$dragEl;\n var $el = scrollbar.$el;\n\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n var trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n var divider = swiper.size / swiper.virtualSize;\n var moveDivider = divider * (trackSize / swiper.size);\n var dragSize;\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = dragSize + \"px\";\n } else {\n $dragEl[0].style.height = dragSize + \"px\";\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n Utils.extend(scrollbar, {\n trackSize: trackSize,\n divider: divider,\n moveDivider: moveDivider,\n dragSize: dragSize,\n });\n scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n },\n getPointerPosition: function getPointerPosition(e) {\n var swiper = this;\n if (swiper.isHorizontal()) {\n return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientX : e.clientX);\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\n var positionRatio;\n positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top']\n - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n var position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);\n\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n },\n onDragStart: function onDragStart(e) {\n var swiper = this;\n var params = swiper.params.scrollbar;\n var scrollbar = swiper.scrollbar;\n var $wrapperEl = swiper.$wrapperEl;\n var $el = scrollbar.$el;\n var $dragEl = scrollbar.$dragEl;\n swiper.scrollbar.isTouched = true;\n swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl)\n ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n scrollbar.setDragPosition(e);\n\n clearTimeout(swiper.scrollbar.dragTimeout);\n\n $el.transition(0);\n if (params.hide) {\n $el.css('opacity', 1);\n }\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n swiper.emit('scrollbarDragStart', e);\n },\n onDragMove: function onDragMove(e) {\n var swiper = this;\n var scrollbar = swiper.scrollbar;\n var $wrapperEl = swiper.$wrapperEl;\n var $el = scrollbar.$el;\n var $dragEl = scrollbar.$dragEl;\n\n if (!swiper.scrollbar.isTouched) { return; }\n if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n scrollbar.setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n swiper.emit('scrollbarDragMove', e);\n },\n onDragEnd: function onDragEnd(e) {\n var swiper = this;\n\n var params = swiper.params.scrollbar;\n var scrollbar = swiper.scrollbar;\n var $wrapperEl = swiper.$wrapperEl;\n var $el = scrollbar.$el;\n\n if (!swiper.scrollbar.isTouched) { return; }\n swiper.scrollbar.isTouched = false;\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\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 swiper.emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n },\n enableDraggable: function enableDraggable() {\n var swiper = this;\n if (!swiper.params.scrollbar.el) { return; }\n var scrollbar = swiper.scrollbar;\n var touchEventsTouch = swiper.touchEventsTouch;\n var touchEventsDesktop = swiper.touchEventsDesktop;\n var params = swiper.params;\n var $el = scrollbar.$el;\n var target = $el[0];\n var activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n var passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch) {\n target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n doc.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n doc.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n disableDraggable: function disableDraggable() {\n var swiper = this;\n if (!swiper.params.scrollbar.el) { return; }\n var scrollbar = swiper.scrollbar;\n var touchEventsTouch = swiper.touchEventsTouch;\n var touchEventsDesktop = swiper.touchEventsDesktop;\n var params = swiper.params;\n var $el = scrollbar.$el;\n var target = $el[0];\n var activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n var passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch) {\n target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n doc.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n doc.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n init: function init() {\n var swiper = this;\n if (!swiper.params.scrollbar.el) { return; }\n var scrollbar = swiper.scrollbar;\n var $swiperEl = swiper.$el;\n var params = swiper.params.scrollbar;\n\n var $el = $(params.el);\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n $el = $swiperEl.find(params.el);\n }\n\n var $dragEl = $el.find((\".\" + (swiper.params.scrollbar.dragClass)));\n if ($dragEl.length === 0) {\n $dragEl = $((\"
\"));\n $el.append($dragEl);\n }\n\n Utils.extend(scrollbar, {\n $el: $el,\n el: $el[0],\n $dragEl: $dragEl,\n dragEl: $dragEl[0],\n });\n\n if (params.draggable) {\n scrollbar.enableDraggable();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.scrollbar.disableDraggable();\n },\n };\n\n var Scrollbar$1 = {\n name: 'scrollbar',\n params: {\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n scrollbar: {\n init: Scrollbar.init.bind(swiper),\n destroy: Scrollbar.destroy.bind(swiper),\n updateSize: Scrollbar.updateSize.bind(swiper),\n setTranslate: Scrollbar.setTranslate.bind(swiper),\n setTransition: Scrollbar.setTransition.bind(swiper),\n enableDraggable: Scrollbar.enableDraggable.bind(swiper),\n disableDraggable: Scrollbar.disableDraggable.bind(swiper),\n setDragPosition: Scrollbar.setDragPosition.bind(swiper),\n getPointerPosition: Scrollbar.getPointerPosition.bind(swiper),\n onDragStart: Scrollbar.onDragStart.bind(swiper),\n onDragMove: Scrollbar.onDragMove.bind(swiper),\n onDragEnd: Scrollbar.onDragEnd.bind(swiper),\n isTouched: false,\n timeout: null,\n dragTimeout: null,\n },\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n swiper.scrollbar.init();\n swiper.scrollbar.updateSize();\n swiper.scrollbar.setTranslate();\n },\n update: function update() {\n var swiper = this;\n swiper.scrollbar.updateSize();\n },\n resize: function resize() {\n var swiper = this;\n swiper.scrollbar.updateSize();\n },\n observerUpdate: function observerUpdate() {\n var swiper = this;\n swiper.scrollbar.updateSize();\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n swiper.scrollbar.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n swiper.scrollbar.setTransition(duration);\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.scrollbar.destroy();\n },\n },\n };\n\n var Parallax = {\n setTransform: function setTransform(el, progress) {\n var swiper = this;\n var rtl = swiper.rtl;\n\n var $el = $(el);\n var rtlFactor = rtl ? -1 : 1;\n\n var p = $el.attr('data-swiper-parallax') || '0';\n var x = $el.attr('data-swiper-parallax-x');\n var y = $el.attr('data-swiper-parallax-y');\n var scale = $el.attr('data-swiper-parallax-scale');\n var opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if ((x).indexOf('%') >= 0) {\n x = (parseInt(x, 10) * progress * rtlFactor) + \"%\";\n } else {\n x = (x * progress * rtlFactor) + \"px\";\n }\n if ((y).indexOf('%') >= 0) {\n y = (parseInt(y, 10) * progress) + \"%\";\n } else {\n y = (y * progress) + \"px\";\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n var currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress)));\n $el[0].style.opacity = currentOpacity;\n }\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform((\"translate3d(\" + x + \", \" + y + \", 0px)\"));\n } else {\n var currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));\n $el.transform((\"translate3d(\" + x + \", \" + y + \", 0px) scale(\" + currentScale + \")\"));\n }\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n var $el = swiper.$el;\n var slides = swiper.slides;\n var progress = swiper.progress;\n var snapGrid = swiper.snapGrid;\n $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each(function (index, el) {\n swiper.parallax.setTransform(el, progress);\n });\n slides.each(function (slideIndex, slideEl) {\n var slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each(function (index, el) {\n swiper.parallax.setTransform(el, slideProgress);\n });\n });\n },\n setTransition: function setTransition(duration) {\n if ( duration === void 0 ) duration = this.params.speed;\n\n var swiper = this;\n var $el = swiper.$el;\n $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each(function (index, parallaxEl) {\n var $parallaxEl = $(parallaxEl);\n var parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) { parallaxDuration = 0; }\n $parallaxEl.transition(parallaxDuration);\n });\n },\n };\n\n var Parallax$1 = {\n name: 'parallax',\n params: {\n parallax: {\n enabled: false,\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n parallax: {\n setTransform: Parallax.setTransform.bind(swiper),\n setTranslate: Parallax.setTranslate.bind(swiper),\n setTransition: Parallax.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit: function beforeInit() {\n var swiper = this;\n if (!swiper.params.parallax.enabled) { return; }\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n init: function init() {\n var swiper = this;\n if (!swiper.params.parallax.enabled) { return; }\n swiper.parallax.setTranslate();\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n if (!swiper.params.parallax.enabled) { return; }\n swiper.parallax.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (!swiper.params.parallax.enabled) { return; }\n swiper.parallax.setTransition(duration);\n },\n },\n };\n\n var Zoom = {\n // Calc Scale From Multi-touches\n getDistanceBetweenTouches: function getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) { return 1; }\n var x1 = e.targetTouches[0].pageX;\n var y1 = e.targetTouches[0].pageY;\n var x2 = e.targetTouches[1].pageX;\n var y2 = e.targetTouches[1].pageY;\n var distance = Math.sqrt((Math.pow( (x2 - x1), 2 )) + (Math.pow( (y2 - y1), 2 )));\n return distance;\n },\n // Events\n onGestureStart: function onGestureStart(e) {\n var swiper = this;\n var params = swiper.params.zoom;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n if (!Support.gestures) {\n if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureTouched = true;\n gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest((\".\" + (swiper.params.slideClass)));\n if (gesture.$slideEl.length === 0) { gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); }\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 if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\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 if (!Support.gestures) {\n if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureMoved = true;\n gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }\n if (Support.gestures) {\n zoom.scale = e.scale * zoom.currentScale;\n } else {\n zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;\n }\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = (gesture.maxRatio - 1) + (Math.pow( ((zoom.scale - gesture.maxRatio) + 1), 0.5 ));\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = (params.minRatio + 1) - (Math.pow( ((params.minRatio - zoom.scale) + 1), 0.5 ));\n }\n gesture.$imageEl.transform((\"translate3d(0,0,0) scale(\" + (zoom.scale) + \")\"));\n },\n onGestureEnd: function onGestureEnd(e) {\n var swiper = this;\n var params = swiper.params.zoom;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n if (!Support.gestures) {\n if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\n return;\n }\n if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {\n return;\n }\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl.transition(swiper.params.speed).transform((\"translate3d(0,0,0) scale(\" + (zoom.scale) + \")\"));\n zoom.currentScale = zoom.scale;\n zoom.isScaling = false;\n if (zoom.scale === 1) { gesture.$slideEl = undefined; }\n },\n onTouchStart: function onTouchStart(e) {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n var image = zoom.image;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }\n if (image.isTouched) { return; }\n if (Device.android && e.cancelable) { e.preventDefault(); }\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n },\n onTouchMove: function onTouchMove(e) {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n var image = zoom.image;\n var velocity = zoom.velocity;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) { return; }\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n if (swiper.rtl) {\n image.startX = -image.startX;\n image.startY = -image.startY;\n }\n }\n // Define if we need image drag\n var scaledWidth = image.width * zoom.scale;\n var scaledHeight = image.height * zoom.scale;\n\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) { return; }\n\n image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n image.maxX = -image.minX;\n image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n image.maxY = -image.minY;\n\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !zoom.isScaling) {\n if (\n swiper.isHorizontal()\n && (\n (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x)\n || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)\n )\n ) {\n image.isTouched = false;\n return;\n } if (\n !swiper.isHorizontal()\n && (\n (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y)\n || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)\n )\n ) {\n image.isTouched = false;\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n\n image.isMoved = true;\n image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX;\n image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = (image.minX + 1) - (Math.pow( ((image.minX - image.currentX) + 1), 0.8 ));\n }\n if (image.currentX > image.maxX) {\n image.currentX = (image.maxX - 1) + (Math.pow( ((image.currentX - image.maxX) + 1), 0.8 ));\n }\n\n if (image.currentY < image.minY) {\n image.currentY = (image.minY + 1) - (Math.pow( ((image.minY - image.currentY) + 1), 0.8 ));\n }\n if (image.currentY > image.maxY) {\n image.currentY = (image.maxY - 1) + (Math.pow( ((image.currentY - image.maxY) + 1), 0.8 ));\n }\n\n // Velocity\n if (!velocity.prevPositionX) { velocity.prevPositionX = image.touchesCurrent.x; }\n if (!velocity.prevPositionY) { velocity.prevPositionY = image.touchesCurrent.y; }\n if (!velocity.prevTime) { velocity.prevTime = Date.now(); }\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) { velocity.x = 0; }\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) { velocity.y = 0; }\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n\n gesture.$imageWrapEl.transform((\"translate3d(\" + (image.currentX) + \"px, \" + (image.currentY) + \"px,0)\"));\n },\n onTouchEnd: function onTouchEnd() {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n var image = zoom.image;\n var velocity = zoom.velocity;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n var momentumDurationX = 300;\n var momentumDurationY = 300;\n var momentumDistanceX = velocity.x * momentumDurationX;\n var newPositionX = image.currentX + momentumDistanceX;\n var momentumDistanceY = velocity.y * momentumDurationY;\n var newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) { momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); }\n if (velocity.y !== 0) { momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); }\n var momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n\n // Define if we need image drag\n var scaledWidth = image.width * zoom.scale;\n var scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n image.maxX = -image.minX;\n image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n gesture.$imageWrapEl.transition(momentumDuration).transform((\"translate3d(\" + (image.currentX) + \"px, \" + (image.currentY) + \"px,0)\"));\n },\n onTransitionEnd: function onTransitionEnd() {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n },\n // Toggle Zoom\n toggle: function toggle(e) {\n var swiper = this;\n var zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoom.out();\n } else {\n // Zoom In\n zoom.in(e);\n }\n },\n in: function in$1(e) {\n var swiper = this;\n\n var zoom = swiper.zoom;\n var params = swiper.params.zoom;\n var gesture = zoom.gesture;\n var image = zoom.image;\n\n if (!gesture.$slideEl) {\n 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 gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent((\".\" + (params.containerClass)));\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }\n\n gesture.$slideEl.addClass((\"\" + (params.zoomedSlideClass)));\n\n var touchX;\n var touchY;\n var offsetX;\n var offsetY;\n var diffX;\n var diffY;\n var translateX;\n var translateY;\n var imageWidth;\n var imageHeight;\n var scaledWidth;\n var scaledHeight;\n var translateMinX;\n var translateMinY;\n var translateMaxX;\n var translateMaxY;\n var slideWidth;\n var slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left;\n offsetY = gesture.$slideEl.offset().top;\n diffX = (offsetX + (slideWidth / 2)) - touchX;\n diffY = (offsetY + (slideHeight / 2)) - touchY;\n\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n\n translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0);\n translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n gesture.$imageWrapEl.transition(300).transform((\"translate3d(\" + translateX + \"px, \" + translateY + \"px,0)\"));\n gesture.$imageEl.transition(300).transform((\"translate3d(0,0,0) scale(\" + (zoom.scale) + \")\"));\n },\n out: function out() {\n var swiper = this;\n\n var zoom = swiper.zoom;\n var params = swiper.params.zoom;\n var gesture = zoom.gesture;\n\n if (!gesture.$slideEl) {\n 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 gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent((\".\" + (params.containerClass)));\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass((\"\" + (params.zoomedSlideClass)));\n gesture.$slideEl = undefined;\n },\n // Attach/Detach Events\n enable: function enable() {\n var swiper = this;\n var zoom = swiper.zoom;\n if (zoom.enabled) { return; }\n zoom.enabled = true;\n\n var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n var activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n var slideSelector = \".\" + (swiper.params.slideClass);\n\n // Scale image\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 if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n }\n\n // Move image\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 if (!zoom.enabled) { return; }\n\n swiper.zoom.enabled = false;\n\n var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n var activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n var slideSelector = \".\" + (swiper.params.slideClass);\n\n // Scale image\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 if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n }\n\n // Move image\n swiper.$wrapperEl.off(swiper.touchEvents.move, (\".\" + (swiper.params.zoom.containerClass)), zoom.onTouchMove, activeListenerWithCapture);\n },\n };\n\n var Zoom$1 = {\n name: 'zoom',\n params: {\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed',\n },\n },\n create: function create() {\n var swiper = this;\n var zoom = {\n enabled: false,\n scale: 1,\n currentScale: 1,\n isScaling: false,\n gesture: {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3,\n },\n image: {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {},\n },\n velocity: {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined,\n },\n };\n\n ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach(function (methodName) {\n zoom[methodName] = Zoom[methodName].bind(swiper);\n });\n Utils.extend(swiper, {\n zoom: zoom,\n });\n\n var scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get: function get() {\n return scale;\n },\n set: function set(value) {\n if (scale !== value) {\n var imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;\n var slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;\n swiper.emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n },\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n if (swiper.params.zoom.enabled) {\n swiper.zoom.enable();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.zoom.disable();\n },\n touchStart: function touchStart(e) {\n var swiper = this;\n if (!swiper.zoom.enabled) { return; }\n swiper.zoom.onTouchStart(e);\n },\n touchEnd: function touchEnd(e) {\n var swiper = this;\n if (!swiper.zoom.enabled) { return; }\n swiper.zoom.onTouchEnd(e);\n },\n doubleTap: function doubleTap(e) {\n var swiper = this;\n if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n swiper.zoom.toggle(e);\n }\n },\n transitionEnd: function transitionEnd() {\n var swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n swiper.zoom.onTransitionEnd();\n }\n },\n slideChange: function slideChange() {\n var swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n swiper.zoom.onTransitionEnd();\n }\n },\n },\n };\n\n var Lazy = {\n loadInSlide: function loadInSlide(index, loadInDuplicate) {\n if ( loadInDuplicate === void 0 ) loadInDuplicate = true;\n\n var swiper = this;\n var params = swiper.params.lazy;\n if (typeof index === 'undefined') { return; }\n if (swiper.slides.length === 0) { return; }\n var isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n var $slideEl = isVirtual\n ? swiper.$wrapperEl.children((\".\" + (swiper.params.slideClass) + \"[data-swiper-slide-index=\\\"\" + index + \"\\\"]\"))\n : swiper.slides.eq(index);\n\n var $images = $slideEl.find((\".\" + (params.elementClass) + \":not(.\" + (params.loadedClass) + \"):not(.\" + (params.loadingClass) + \")\"));\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n $images = $images.add($slideEl[0]);\n }\n if ($images.length === 0) { return; }\n\n $images.each(function (imageIndex, imageEl) {\n var $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n\n var background = $imageEl.attr('data-background');\n var src = $imageEl.attr('data-src');\n var srcset = $imageEl.attr('data-srcset');\n var sizes = $imageEl.attr('data-sizes');\n var $pictureEl = $imageEl.parent('picture');\n\n swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, function () {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) { return; }\n if (background) {\n $imageEl.css('background-image', (\"url(\\\"\" + background + \"\\\")\"));\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n if ($pictureEl.length) {\n $pictureEl.children('source').each(function (sourceIndex, sourceEl) {\n var $source = $(sourceEl);\n\n if ($source.attr('data-srcset')) {\n $source.attr('srcset', $source.attr('data-srcset'));\n $source.removeAttr('data-srcset');\n }\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 if (swiper.params.loop && loadInDuplicate) {\n var slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n var originalSlide = swiper.$wrapperEl.children((\"[data-swiper-slide-index=\\\"\" + slideOriginalIndex + \"\\\"]:not(.\" + (swiper.params.slideDuplicateClass) + \")\"));\n swiper.lazy.loadInSlide(originalSlide.index(), false);\n } else {\n var duplicatedSlide = swiper.$wrapperEl.children((\".\" + (swiper.params.slideDuplicateClass) + \"[data-swiper-slide-index=\\\"\" + slideOriginalIndex + \"\\\"]\"));\n swiper.lazy.loadInSlide(duplicatedSlide.index(), false);\n }\n }\n swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n\n swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n },\n load: function load() {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl;\n var swiperParams = swiper.params;\n var slides = swiper.slides;\n var activeIndex = swiper.activeIndex;\n var isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n var params = swiperParams.lazy;\n\n var slidesPerView = swiperParams.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if ($wrapperEl.children((\".\" + (swiperParams.slideClass) + \"[data-swiper-slide-index=\\\"\" + index + \"\\\"]\")).length) {\n return true;\n }\n } else if (slides[index]) { return true; }\n return false;\n }\n\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n return $(slideEl).index();\n }\n\n if (!swiper.lazy.initialImageLoaded) { swiper.lazy.initialImageLoaded = true; }\n if (swiper.params.watchSlidesVisibility) {\n $wrapperEl.children((\".\" + (swiperParams.slideVisibleClass))).each(function (elIndex, slideEl) {\n var index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n swiper.lazy.loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (var i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) { swiper.lazy.loadInSlide(i); }\n }\n } else {\n swiper.lazy.loadInSlide(activeIndex);\n }\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n var amount = params.loadPrevNextAmount;\n var spv = slidesPerView;\n var maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n var minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (var i$1 = activeIndex + slidesPerView; i$1 < maxIndex; i$1 += 1) {\n if (slideExist(i$1)) { swiper.lazy.loadInSlide(i$1); }\n }\n // Prev Slides\n for (var i$2 = minIndex; i$2 < activeIndex; i$2 += 1) {\n if (slideExist(i$2)) { swiper.lazy.loadInSlide(i$2); }\n }\n } else {\n var nextSlide = $wrapperEl.children((\".\" + (swiperParams.slideNextClass)));\n if (nextSlide.length > 0) { swiper.lazy.loadInSlide(slideIndex(nextSlide)); }\n\n var prevSlide = $wrapperEl.children((\".\" + (swiperParams.slidePrevClass)));\n if (prevSlide.length > 0) { swiper.lazy.loadInSlide(slideIndex(prevSlide)); }\n }\n }\n },\n };\n\n var Lazy$1 = {\n name: 'lazy',\n params: {\n lazy: {\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader',\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n lazy: {\n initialImageLoaded: false,\n load: Lazy.load.bind(swiper),\n loadInSlide: Lazy.loadInSlide.bind(swiper),\n },\n });\n },\n on: {\n beforeInit: function beforeInit() {\n var swiper = this;\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n },\n init: function init() {\n var swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\n swiper.lazy.load();\n }\n },\n scroll: function scroll() {\n var swiper = this;\n if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n swiper.lazy.load();\n }\n },\n resize: function resize() {\n var swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n scrollbarDragMove: function scrollbarDragMove() {\n var swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n transitionStart: function transitionStart() {\n var swiper = this;\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) {\n swiper.lazy.load();\n }\n }\n },\n transitionEnd: function transitionEnd() {\n var swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n swiper.lazy.load();\n }\n },\n slideChange: function slideChange() {\n var swiper = this;\n if (swiper.params.lazy.enabled && swiper.params.cssMode) {\n swiper.lazy.load();\n }\n },\n },\n };\n\n /* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\n\n var Controller = {\n LinearSpline: function LinearSpline(x, y) {\n var binarySearch = (function search() {\n var maxIndex;\n var minIndex;\n var guess;\n return function (array, val) {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }());\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n var i1;\n var i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) { return 0; }\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];\n };\n return this;\n },\n // xxx: for now i will just save one spline function to to\n getInterpolateFunction: function getInterpolateFunction(c) {\n var swiper = this;\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop\n ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid)\n : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n },\n setTranslate: function setTranslate(setTranslate$1, byController) {\n var swiper = this;\n var controlled = swiper.controller.control;\n var multiplier;\n var controlledTranslate;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n var translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n swiper.controller.getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (var i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n },\n setTransition: function setTransition(duration, byController) {\n var swiper = this;\n var controlled = swiper.controller.control;\n var i;\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n Utils.nextTick(function () {\n c.updateAutoHeight();\n });\n }\n c.$wrapperEl.transitionEnd(function () {\n if (!controlled) { return; }\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n },\n };\n var Controller$1 = {\n name: 'controller',\n params: {\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide', // or 'container'\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n controller: {\n control: swiper.params.controller.control,\n getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),\n setTranslate: Controller.setTranslate.bind(swiper),\n setTransition: Controller.setTransition.bind(swiper),\n },\n });\n },\n on: {\n update: function update() {\n var swiper = this;\n if (!swiper.controller.control) { return; }\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n resize: function resize() {\n var swiper = this;\n if (!swiper.controller.control) { return; }\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n observerUpdate: function observerUpdate() {\n var swiper = this;\n if (!swiper.controller.control) { return; }\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n setTranslate: function setTranslate(translate, byController) {\n var swiper = this;\n if (!swiper.controller.control) { return; }\n swiper.controller.setTranslate(translate, byController);\n },\n setTransition: function setTransition(duration, byController) {\n var swiper = this;\n if (!swiper.controller.control) { return; }\n swiper.controller.setTransition(duration, byController);\n },\n },\n };\n\n var a11y = {\n makeElFocusable: function makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n return $el;\n },\n makeElNotFocusable: function makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n return $el;\n },\n addElRole: function addElRole($el, role) {\n $el.attr('role', role);\n return $el;\n },\n addElLabel: function addElLabel($el, label) {\n $el.attr('aria-label', label);\n return $el;\n },\n disableEl: function disableEl($el) {\n $el.attr('aria-disabled', true);\n return $el;\n },\n enableEl: function enableEl($el) {\n $el.attr('aria-disabled', false);\n return $el;\n },\n onEnterKey: function onEnterKey(e) {\n var swiper = this;\n var params = swiper.params.a11y;\n if (e.keyCode !== 13) { return; }\n var $targetEl = $(e.target);\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n swiper.a11y.notify(params.lastSlideMessage);\n } else {\n swiper.a11y.notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n swiper.a11y.notify(params.firstSlideMessage);\n } else {\n swiper.a11y.notify(params.prevSlideMessage);\n }\n }\n if (swiper.pagination && $targetEl.is((\".\" + (swiper.params.pagination.bulletClass)))) {\n $targetEl[0].click();\n }\n },\n notify: function notify(message) {\n var swiper = this;\n var notification = swiper.a11y.liveRegion;\n if (notification.length === 0) { return; }\n notification.html('');\n notification.html(message);\n },\n updateNavigation: function updateNavigation() {\n var swiper = this;\n\n if (swiper.params.loop || !swiper.navigation) { return; }\n var ref = swiper.navigation;\n var $nextEl = ref.$nextEl;\n var $prevEl = ref.$prevEl;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n swiper.a11y.disableEl($prevEl);\n swiper.a11y.makeElNotFocusable($prevEl);\n } else {\n swiper.a11y.enableEl($prevEl);\n swiper.a11y.makeElFocusable($prevEl);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n swiper.a11y.disableEl($nextEl);\n swiper.a11y.makeElNotFocusable($nextEl);\n } else {\n swiper.a11y.enableEl($nextEl);\n swiper.a11y.makeElFocusable($nextEl);\n }\n }\n },\n updatePagination: function updatePagination() {\n var swiper = this;\n var params = swiper.params.a11y;\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.bullets.each(function (bulletIndex, bulletEl) {\n var $bulletEl = $(bulletEl);\n swiper.a11y.makeElFocusable($bulletEl);\n swiper.a11y.addElRole($bulletEl, 'button');\n swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n });\n }\n },\n init: function init() {\n var swiper = this;\n\n swiper.$el.append(swiper.a11y.liveRegion);\n\n // Navigation\n var params = swiper.params.a11y;\n var $nextEl;\n var $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n swiper.a11y.makeElFocusable($nextEl);\n swiper.a11y.addElRole($nextEl, 'button');\n swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);\n $nextEl.on('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n swiper.a11y.makeElFocusable($prevEl);\n swiper.a11y.addElRole($prevEl, 'button');\n swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);\n $prevEl.on('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.on('keydown', (\".\" + (swiper.params.pagination.bulletClass)), swiper.a11y.onEnterKey);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) { swiper.a11y.liveRegion.remove(); }\n\n var $nextEl;\n var $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n $nextEl.off('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n $prevEl.off('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.off('keydown', (\".\" + (swiper.params.pagination.bulletClass)), swiper.a11y.onEnterKey);\n }\n },\n };\n var A11y = {\n name: 'a11y',\n params: {\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n a11y: {\n liveRegion: $((\"\")),\n },\n });\n Object.keys(a11y).forEach(function (methodName) {\n swiper.a11y[methodName] = a11y[methodName].bind(swiper);\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n if (!swiper.params.a11y.enabled) { return; }\n swiper.a11y.init();\n swiper.a11y.updateNavigation();\n },\n toEdge: function toEdge() {\n var swiper = this;\n if (!swiper.params.a11y.enabled) { return; }\n swiper.a11y.updateNavigation();\n },\n fromEdge: function fromEdge() {\n var swiper = this;\n if (!swiper.params.a11y.enabled) { return; }\n swiper.a11y.updateNavigation();\n },\n paginationUpdate: function paginationUpdate() {\n var swiper = this;\n if (!swiper.params.a11y.enabled) { return; }\n swiper.a11y.updatePagination();\n },\n destroy: function destroy() {\n var swiper = this;\n if (!swiper.params.a11y.enabled) { return; }\n swiper.a11y.destroy();\n },\n },\n };\n\n var History = {\n init: function init() {\n var swiper = this;\n if (!swiper.params.history) { return; }\n if (!win.history || !win.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n var history = swiper.history;\n history.initialized = true;\n history.paths = History.getPathValues();\n if (!history.paths.key && !history.paths.value) { return; }\n history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n win.addEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n if (!swiper.params.history.replaceState) {\n win.removeEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n setHistoryPopState: function setHistoryPopState() {\n var swiper = this;\n swiper.history.paths = History.getPathValues();\n swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);\n },\n getPathValues: function getPathValues() {\n var pathArray = win.location.pathname.slice(1).split('/').filter(function (part) { return part !== ''; });\n var total = pathArray.length;\n var key = pathArray[total - 2];\n var value = pathArray[total - 1];\n return { key: key, value: value };\n },\n setHistory: function setHistory(key, index) {\n var swiper = this;\n if (!swiper.history.initialized || !swiper.params.history.enabled) { return; }\n var slide = swiper.slides.eq(index);\n var value = History.slugify(slide.attr('data-history'));\n if (!win.location.pathname.includes(key)) {\n value = key + \"/\" + value;\n }\n var currentState = win.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n win.history.replaceState({ value: value }, null, value);\n } else {\n win.history.pushState({ value: value }, null, value);\n }\n },\n slugify: function slugify(text) {\n return text.toString()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w-]+/g, '')\n .replace(/--+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n },\n scrollToSlide: function scrollToSlide(speed, value, runCallbacks) {\n var swiper = this;\n if (value) {\n for (var i = 0, length = swiper.slides.length; i < length; i += 1) {\n var slide = swiper.slides.eq(i);\n var slideHistory = History.slugify(slide.attr('data-history'));\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n var index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n },\n };\n\n var History$1 = {\n name: 'history',\n params: {\n history: {\n enabled: false,\n replaceState: false,\n key: 'slides',\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n history: {\n init: History.init.bind(swiper),\n setHistory: History.setHistory.bind(swiper),\n setHistoryPopState: History.setHistoryPopState.bind(swiper),\n scrollToSlide: History.scrollToSlide.bind(swiper),\n destroy: History.destroy.bind(swiper),\n },\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.init();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.destroy();\n }\n },\n transitionEnd: function transitionEnd() {\n var swiper = this;\n if (swiper.history.initialized) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n },\n slideChange: function slideChange() {\n var swiper = this;\n if (swiper.history.initialized && swiper.params.cssMode) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n },\n },\n };\n\n var HashNavigation = {\n onHashCange: function onHashCange() {\n var swiper = this;\n swiper.emit('hashChange');\n var newHash = doc.location.hash.replace('#', '');\n var activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n if (newHash !== activeSlideHash) {\n var newIndex = swiper.$wrapperEl.children((\".\" + (swiper.params.slideClass) + \"[data-hash=\\\"\" + newHash + \"\\\"]\")).index();\n if (typeof newIndex === 'undefined') { return; }\n swiper.slideTo(newIndex);\n }\n },\n setHash: function setHash() {\n var swiper = this;\n if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) { return; }\n if (swiper.params.hashNavigation.replaceState && win.history && win.history.replaceState) {\n win.history.replaceState(null, null, ((\"#\" + (swiper.slides.eq(swiper.activeIndex).attr('data-hash'))) || ''));\n swiper.emit('hashSet');\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 swiper.emit('hashSet');\n }\n },\n init: function init() {\n var swiper = this;\n if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) { return; }\n swiper.hashNavigation.initialized = true;\n var hash = doc.location.hash.replace('#', '');\n if (hash) {\n var speed = 0;\n for (var i = 0, length = swiper.slides.length; i < length; i += 1) {\n var slide = swiper.slides.eq(i);\n var slideHash = slide.attr('data-hash') || slide.attr('data-history');\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n var index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n if (swiper.params.hashNavigation.watchState) {\n $(win).on('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n if (swiper.params.hashNavigation.watchState) {\n $(win).off('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n };\n var HashNavigation$1 = {\n name: 'hash-navigation',\n params: {\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n hashNavigation: {\n initialized: false,\n init: HashNavigation.init.bind(swiper),\n destroy: HashNavigation.destroy.bind(swiper),\n setHash: HashNavigation.setHash.bind(swiper),\n onHashCange: HashNavigation.onHashCange.bind(swiper),\n },\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.init();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.destroy();\n }\n },\n transitionEnd: function transitionEnd() {\n var swiper = this;\n if (swiper.hashNavigation.initialized) {\n swiper.hashNavigation.setHash();\n }\n },\n slideChange: function slideChange() {\n var swiper = this;\n if (swiper.hashNavigation.initialized && swiper.params.cssMode) {\n swiper.hashNavigation.setHash();\n }\n },\n },\n };\n\n /* eslint no-underscore-dangle: \"off\" */\n\n var Autoplay = {\n run: function run() {\n var swiper = this;\n var $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n var delay = swiper.params.autoplay.delay;\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = Utils.nextTick(function () {\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isBeginning) {\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isEnd) {\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n if (swiper.params.cssMode && swiper.autoplay.running) { swiper.autoplay.run(); }\n }, delay);\n },\n start: function start() {\n var swiper = this;\n if (typeof swiper.autoplay.timeout !== 'undefined') { return false; }\n if (swiper.autoplay.running) { return false; }\n swiper.autoplay.running = true;\n swiper.emit('autoplayStart');\n swiper.autoplay.run();\n return true;\n },\n stop: function stop() {\n var swiper = this;\n if (!swiper.autoplay.running) { return false; }\n if (typeof swiper.autoplay.timeout === 'undefined') { return false; }\n\n if (swiper.autoplay.timeout) {\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = undefined;\n }\n swiper.autoplay.running = false;\n swiper.emit('autoplayStop');\n return true;\n },\n pause: function pause(speed) {\n var swiper = this;\n if (!swiper.autoplay.running) { return; }\n if (swiper.autoplay.paused) { return; }\n if (swiper.autoplay.timeout) { clearTimeout(swiper.autoplay.timeout); }\n swiper.autoplay.paused = true;\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n swiper.autoplay.run();\n } else {\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n }\n },\n };\n\n var Autoplay$1 = {\n name: 'autoplay',\n params: {\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n autoplay: {\n running: false,\n paused: false,\n run: Autoplay.run.bind(swiper),\n start: Autoplay.start.bind(swiper),\n stop: Autoplay.stop.bind(swiper),\n pause: Autoplay.pause.bind(swiper),\n onVisibilityChange: function onVisibilityChange() {\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n swiper.autoplay.pause();\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) { return; }\n if (e.target !== this) { return; }\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n swiper.autoplay.paused = false;\n if (!swiper.autoplay.running) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.run();\n }\n },\n },\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n if (swiper.params.autoplay.enabled) {\n swiper.autoplay.start();\n document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n }\n },\n beforeTransitionStart: function beforeTransitionStart(speed, internal) {\n var swiper = this;\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n swiper.autoplay.stop();\n }\n }\n },\n sliderFirstMove: function sliderFirstMove() {\n var swiper = this;\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.pause();\n }\n }\n },\n touchEnd: function touchEnd() {\n var swiper = this;\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 if (swiper.autoplay.running) {\n swiper.autoplay.stop();\n }\n document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n },\n },\n };\n\n var Fade = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var slides = swiper.slides;\n for (var i = 0; i < slides.length; i += 1) {\n var $slideEl = swiper.slides.eq(i);\n var offset = $slideEl[0].swiperSlideOffset;\n var tx = -offset;\n if (!swiper.params.virtualTranslate) { tx -= swiper.translate; }\n var ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n var slideOpacity = swiper.params.fadeEffect.crossFade\n ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n $slideEl\n .css({\n opacity: slideOpacity,\n })\n .transform((\"translate3d(\" + tx + \"px, \" + ty + \"px, 0px)\"));\n }\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n var slides = swiper.slides;\n var $wrapperEl = swiper.$wrapperEl;\n slides.transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n var eventTriggered = false;\n slides.transitionEnd(function () {\n if (eventTriggered) { return; }\n if (!swiper || swiper.destroyed) { return; }\n eventTriggered = true;\n swiper.animating = false;\n var triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (var i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n };\n\n var EffectFade = {\n name: 'effect-fade',\n params: {\n fadeEffect: {\n crossFade: false,\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n fadeEffect: {\n setTranslate: Fade.setTranslate.bind(swiper),\n setTransition: Fade.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit: function beforeInit() {\n var swiper = this;\n if (swiper.params.effect !== 'fade') { return; }\n swiper.classNames.push(((swiper.params.containerModifierClass) + \"fade\"));\n var overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n if (swiper.params.effect !== 'fade') { return; }\n swiper.fadeEffect.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (swiper.params.effect !== 'fade') { return; }\n swiper.fadeEffect.setTransition(duration);\n },\n },\n };\n\n var Cube = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var $el = swiper.$el;\n var $wrapperEl = swiper.$wrapperEl;\n var slides = swiper.slides;\n var swiperWidth = swiper.width;\n var swiperHeight = swiper.height;\n var rtl = swiper.rtlTranslate;\n var swiperSize = swiper.size;\n var params = swiper.params.cubeEffect;\n var isHorizontal = swiper.isHorizontal();\n var isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n var wrapperRotate = 0;\n var $cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $wrapperEl.append($cubeShadowEl);\n }\n $cubeShadowEl.css({ height: (swiperWidth + \"px\") });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $el.append($cubeShadowEl);\n }\n }\n }\n for (var i = 0; i < slides.length; i += 1) {\n var $slideEl = slides.eq(i);\n var slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n var slideAngle = slideIndex * 90;\n var round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n var progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n var tx = 0;\n var ty = 0;\n var tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + (round * 4 * swiperSize);\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = (3 * swiperSize) + (swiperSize * 4 * round);\n }\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n var transform = \"rotateX(\" + (isHorizontal ? 0 : -slideAngle) + \"deg) rotateY(\" + (isHorizontal ? slideAngle : 0) + \"deg) translate3d(\" + tx + \"px, \" + ty + \"px, \" + tz + \"px)\";\n if (progress <= 1 && progress > -1) {\n wrapperRotate = (slideIndex * 90) + (progress * 90);\n if (rtl) { wrapperRotate = (-slideIndex * 90) - (progress * 90); }\n }\n $slideEl.transform(transform);\n if (params.slideShadows) {\n // Set shadows\n var shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n var shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $((\"
\"));\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $((\"
\"));\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) { shadowBefore[0].style.opacity = Math.max(-progress, 0); }\n if (shadowAfter.length) { shadowAfter[0].style.opacity = Math.max(progress, 0); }\n }\n }\n $wrapperEl.css({\n '-webkit-transform-origin': (\"50% 50% -\" + (swiperSize / 2) + \"px\"),\n '-moz-transform-origin': (\"50% 50% -\" + (swiperSize / 2) + \"px\"),\n '-ms-transform-origin': (\"50% 50% -\" + (swiperSize / 2) + \"px\"),\n 'transform-origin': (\"50% 50% -\" + (swiperSize / 2) + \"px\"),\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform((\"translate3d(0px, \" + ((swiperWidth / 2) + params.shadowOffset) + \"px, \" + (-swiperWidth / 2) + \"px) rotateX(90deg) rotateZ(0deg) scale(\" + (params.shadowScale) + \")\"));\n } else {\n var shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);\n var multiplier = 1.5 - (\n (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2)\n + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)\n );\n var scale1 = params.shadowScale;\n var scale2 = params.shadowScale / multiplier;\n var offset = params.shadowOffset;\n $cubeShadowEl.transform((\"scale3d(\" + scale1 + \", 1, \" + scale2 + \") translate3d(0px, \" + ((swiperHeight / 2) + offset) + \"px, \" + (-swiperHeight / 2 / scale2) + \"px) rotateX(-90deg)\"));\n }\n }\n var zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0;\n $wrapperEl\n .transform((\"translate3d(0px,0,\" + zFactor + \"px) rotateX(\" + (swiper.isHorizontal() ? 0 : wrapperRotate) + \"deg) rotateY(\" + (swiper.isHorizontal() ? -wrapperRotate : 0) + \"deg)\"));\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n var $el = swiper.$el;\n var slides = swiper.slides;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n },\n };\n\n var EffectCube = {\n name: 'effect-cube',\n params: {\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94,\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n cubeEffect: {\n setTranslate: Cube.setTranslate.bind(swiper),\n setTransition: Cube.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit: function beforeInit() {\n var swiper = this;\n if (swiper.params.effect !== 'cube') { return; }\n swiper.classNames.push(((swiper.params.containerModifierClass) + \"cube\"));\n swiper.classNames.push(((swiper.params.containerModifierClass) + \"3d\"));\n var overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n if (swiper.params.effect !== 'cube') { return; }\n swiper.cubeEffect.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (swiper.params.effect !== 'cube') { return; }\n swiper.cubeEffect.setTransition(duration);\n },\n },\n };\n\n var Flip = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var slides = swiper.slides;\n var rtl = swiper.rtlTranslate;\n for (var i = 0; i < slides.length; i += 1) {\n var $slideEl = slides.eq(i);\n var progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n var offset = $slideEl[0].swiperSlideOffset;\n var rotate = -180 * progress;\n var rotateY = rotate;\n var rotateX = 0;\n var tx = -offset;\n var ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (swiper.params.flipEffect.slideShadows) {\n // Set shadows\n var shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n var shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $((\"
\"));\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $((\"
\"));\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) { shadowBefore[0].style.opacity = Math.max(-progress, 0); }\n if (shadowAfter.length) { shadowAfter[0].style.opacity = Math.max(progress, 0); }\n }\n $slideEl\n .transform((\"translate3d(\" + tx + \"px, \" + ty + \"px, 0px) rotateX(\" + rotateX + \"deg) rotateY(\" + rotateY + \"deg)\"));\n }\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n var slides = swiper.slides;\n var activeIndex = swiper.activeIndex;\n var $wrapperEl = swiper.$wrapperEl;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n var eventTriggered = false;\n // eslint-disable-next-line\n slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {\n if (eventTriggered) { return; }\n if (!swiper || swiper.destroyed) { return; }\n // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;\n eventTriggered = true;\n swiper.animating = false;\n var triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (var i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n };\n\n var EffectFlip = {\n name: 'effect-flip',\n params: {\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n flipEffect: {\n setTranslate: Flip.setTranslate.bind(swiper),\n setTransition: Flip.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit: function beforeInit() {\n var swiper = this;\n if (swiper.params.effect !== 'flip') { return; }\n swiper.classNames.push(((swiper.params.containerModifierClass) + \"flip\"));\n swiper.classNames.push(((swiper.params.containerModifierClass) + \"3d\"));\n var overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n if (swiper.params.effect !== 'flip') { return; }\n swiper.flipEffect.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (swiper.params.effect !== 'flip') { return; }\n swiper.flipEffect.setTransition(duration);\n },\n },\n };\n\n var Coverflow = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var swiperWidth = swiper.width;\n var swiperHeight = swiper.height;\n var slides = swiper.slides;\n var $wrapperEl = swiper.$wrapperEl;\n var slidesSizesGrid = swiper.slidesSizesGrid;\n var params = swiper.params.coverflowEffect;\n var isHorizontal = swiper.isHorizontal();\n var transform = swiper.translate;\n var center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2);\n var rotate = isHorizontal ? params.rotate : -params.rotate;\n var translate = params.depth;\n // Each slide offset from center\n for (var i = 0, length = slides.length; i < length; i += 1) {\n var $slideEl = slides.eq(i);\n var slideSize = slidesSizesGrid[i];\n var slideOffset = $slideEl[0].swiperSlideOffset;\n var offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;\n\n var rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n var rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n var translateZ = -translate * Math.abs(offsetMultiplier);\n\n var stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = ((parseFloat(params.stretch) / 100) * slideSize);\n }\n var translateY = isHorizontal ? 0 : stretch * (offsetMultiplier);\n var translateX = isHorizontal ? stretch * (offsetMultiplier) : 0;\n\n var scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) { translateX = 0; }\n if (Math.abs(translateY) < 0.001) { translateY = 0; }\n if (Math.abs(translateZ) < 0.001) { translateZ = 0; }\n if (Math.abs(rotateY) < 0.001) { rotateY = 0; }\n if (Math.abs(rotateX) < 0.001) { rotateX = 0; }\n if (Math.abs(scale) < 0.001) { scale = 0; }\n\n var slideTransform = \"translate3d(\" + translateX + \"px,\" + translateY + \"px,\" + translateZ + \"px) rotateX(\" + rotateX + \"deg) rotateY(\" + rotateY + \"deg) scale(\" + scale + \")\";\n\n $slideEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n var $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n var $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = $((\"
\"));\n $slideEl.append($shadowBeforeEl);\n }\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = $((\"
\"));\n $slideEl.append($shadowAfterEl);\n }\n if ($shadowBeforeEl.length) { $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; }\n if ($shadowAfterEl.length) { $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0; }\n }\n }\n\n // Set correct perspective for IE10\n if (Support.pointerEvents || Support.prefixedPointerEvents) {\n var ws = $wrapperEl[0].style;\n ws.perspectiveOrigin = center + \"px 50%\";\n }\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n swiper.slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n },\n };\n\n var EffectCoverflow = {\n name: 'effect-coverflow',\n params: {\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true,\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n coverflowEffect: {\n setTranslate: Coverflow.setTranslate.bind(swiper),\n setTransition: Coverflow.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit: function beforeInit() {\n var swiper = this;\n if (swiper.params.effect !== 'coverflow') { return; }\n\n swiper.classNames.push(((swiper.params.containerModifierClass) + \"coverflow\"));\n swiper.classNames.push(((swiper.params.containerModifierClass) + \"3d\"));\n\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n if (swiper.params.effect !== 'coverflow') { return; }\n swiper.coverflowEffect.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (swiper.params.effect !== 'coverflow') { return; }\n swiper.coverflowEffect.setTransition(duration);\n },\n },\n };\n\n var Thumbs = {\n init: function init() {\n var swiper = this;\n var ref = swiper.params;\n var thumbsParams = ref.thumbs;\n var SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Utils.extend(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n Utils.extend(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n } else if (Utils.isObject(thumbsParams.swiper)) {\n swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, {\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n }));\n swiper.thumbs.swiperCreated = true;\n }\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);\n },\n onThumbClick: function onThumbClick() {\n var swiper = this;\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) { return; }\n var clickedIndex = thumbsSwiper.clickedIndex;\n var clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) { return; }\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) { return; }\n var slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n var currentIndex = swiper.activeIndex;\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n var prevIndex = swiper.slides.eq(currentIndex).prevAll((\"[data-swiper-slide-index=\\\"\" + slideToIndex + \"\\\"]\")).eq(0).index();\n var nextIndex = swiper.slides.eq(currentIndex).nextAll((\"[data-swiper-slide-index=\\\"\" + slideToIndex + \"\\\"]\")).eq(0).index();\n if (typeof prevIndex === 'undefined') { slideToIndex = nextIndex; }\n else if (typeof nextIndex === 'undefined') { slideToIndex = prevIndex; }\n else if (nextIndex - currentIndex < currentIndex - prevIndex) { slideToIndex = nextIndex; }\n else { slideToIndex = prevIndex; }\n }\n swiper.slideTo(slideToIndex);\n },\n update: function update(initial) {\n var swiper = this;\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) { return; }\n\n var slidesPerView = thumbsSwiper.params.slidesPerView === 'auto'\n ? thumbsSwiper.slidesPerViewDynamic()\n : thumbsSwiper.params.slidesPerView;\n\n var autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n var useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n var currentThumbsIndex = thumbsSwiper.activeIndex;\n var newThumbsIndex;\n var direction;\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix();\n // eslint-disable-next-line\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n }\n // Find actual thumbs index to slide to\n var prevThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .prevAll((\"[data-swiper-slide-index=\\\"\" + (swiper.realIndex) + \"\\\"]\")).eq(0)\n .index();\n var nextThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .nextAll((\"[data-swiper-slide-index=\\\"\" + (swiper.realIndex) + \"\\\"]\")).eq(0)\n .index();\n if (typeof prevThumbsIndex === 'undefined') { newThumbsIndex = nextThumbsIndex; }\n else if (typeof nextThumbsIndex === 'undefined') { newThumbsIndex = prevThumbsIndex; }\n else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) { newThumbsIndex = currentThumbsIndex; }\n else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) { newThumbsIndex = nextThumbsIndex; }\n else { newThumbsIndex = prevThumbsIndex; }\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\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 thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n\n // Activate thumbs\n var thumbsToActivate = 1;\n var thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n\n thumbsSwiper.slides.removeClass(thumbActiveClass);\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 if (!thumbs || !thumbs.swiper) { return; }\n swiper.thumbs.init();\n swiper.thumbs.update(true);\n },\n slideChange: function slideChange() {\n var swiper = this;\n if (!swiper.thumbs.swiper) { return; }\n swiper.thumbs.update();\n },\n update: function update() {\n var swiper = this;\n if (!swiper.thumbs.swiper) { return; }\n swiper.thumbs.update();\n },\n resize: function resize() {\n var swiper = this;\n if (!swiper.thumbs.swiper) { return; }\n swiper.thumbs.update();\n },\n observerUpdate: function observerUpdate() {\n var swiper = this;\n if (!swiper.thumbs.swiper) { return; }\n swiper.thumbs.update();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) { return; }\n thumbsSwiper.setTransition(duration);\n },\n beforeDestroy: function beforeDestroy() {\n var swiper = this;\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) { return; }\n if (swiper.thumbs.swiperCreated && thumbsSwiper) {\n thumbsSwiper.destroy();\n }\n },\n },\n };\n\n // Swiper Class\n\n var components = [\n Device$1,\n Support$1,\n Browser$1,\n Resize,\n Observer$1,\n Virtual$1,\n Keyboard$1,\n Mousewheel$1,\n Navigation$1,\n Pagination$1,\n Scrollbar$1,\n Parallax$1,\n Zoom$1,\n Lazy$1,\n Controller$1,\n A11y,\n History$1,\n HashNavigation$1,\n Autoplay$1,\n EffectFade,\n EffectCube,\n EffectFlip,\n EffectCoverflow,\n Thumbs$1\n ];\n\n if (typeof Swiper.use === 'undefined') {\n Swiper.use = Swiper.Class.use;\n Swiper.installModule = Swiper.Class.installModule;\n }\n\n Swiper.use(components);\n\n return Swiper;\n\n})));\n//# sourceMappingURL=swiper.js.map\n","\nconst canPromise = require('./can-promise')\n\nconst QRCode = require('./core/qrcode')\nconst CanvasRenderer = require('./renderer/canvas')\nconst SvgRenderer = require('./renderer/svg-tag.js')\n\nfunction renderCanvas (renderFunc, canvas, text, opts, cb) {\n const args = [].slice.call(arguments, 1)\n const argsNum = args.length\n const isLastArgCb = typeof args[argsNum - 1] === 'function'\n\n if (!isLastArgCb && !canPromise()) {\n throw new Error('Callback required as last argument')\n }\n\n if (isLastArgCb) {\n if (argsNum < 2) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 2) {\n cb = text\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 3) {\n if (canvas.getContext && typeof cb === 'undefined') {\n cb = opts\n opts = undefined\n } else {\n cb = opts\n opts = text\n text = canvas\n canvas = undefined\n }\n }\n } else {\n if (argsNum < 1) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 1) {\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 2 && !canvas.getContext) {\n opts = text\n text = canvas\n canvas = undefined\n }\n\n return new Promise(function (resolve, reject) {\n try {\n const data = QRCode.create(text, opts)\n resolve(renderFunc(data, canvas, opts))\n } catch (e) {\n reject(e)\n }\n })\n }\n\n try {\n const data = QRCode.create(text, opts)\n cb(null, renderFunc(data, canvas, opts))\n } catch (e) {\n cb(e)\n }\n}\n\nexports.create = QRCode.create\nexports.toCanvas = renderCanvas.bind(null, CanvasRenderer.render)\nexports.toDataURL = renderCanvas.bind(null, CanvasRenderer.renderToDataURL)\n\n// only svg for now.\nexports.toString = renderCanvas.bind(null, function (data, _, opts) {\n return SvgRenderer.render(data, opts)\n})\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n// Edge 14- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength(FIND);\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIndexedObject(object);\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n var keys = ownKeys(O);\n var result = {};\n var index = 0;\n var key, descriptor;\n while (keys.length > index) {\n descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n if (descriptor !== undefined) createProperty(result, key, descriptor);\n }\n return result;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar isObject = require('../internals/is-object');\nvar aFunction = require('../internals/a-function');\nvar anInstance = require('../internals/an-instance');\nvar classof = require('../internals/classof-raw');\nvar inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar PromiseConstructor = NativePromise;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar $fetch = getBuiltIn('fetch');\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\nvar IS_NODE = classof(process) == 'process';\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor);\n if (!GLOBAL_CORE_JS_PROMISE) {\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (V8_VERSION === 66) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n if (!IS_NODE && typeof PromiseRejectionEvent != 'function') return true;\n }\n // We need Promise#finally in the pure version for preventing prototype pollution\n if (IS_PURE && !PromiseConstructor.prototype['finally']) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PromiseConstructor)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = PromiseConstructor.resolve(1);\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n return !(promise.then(function () { /* empty */ }) instanceof FakePromise);\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\n\nvar notify = function (promise, state, isReject) {\n if (state.notified) return;\n state.notified = true;\n var chain = state.reactions;\n microtask(function () {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var index = 0;\n // variable length - can't use forEach\n while (chain.length > index) {\n var reaction = chain[index++];\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(promise, state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n }\n state.reactions = [];\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(promise, state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (handler = global['on' + name]) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (promise, state) {\n task.call(global, function () {\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (promise, state) {\n task.call(global, function () {\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, promise, state, unwrap) {\n return function (value) {\n fn(promise, state, value, unwrap);\n };\n};\n\nvar internalReject = function (promise, state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(promise, state, true);\n};\n\nvar internalResolve = function (promise, state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n then.call(value,\n bind(internalResolve, promise, wrapper, state),\n bind(internalReject, promise, wrapper, state)\n );\n } catch (error) {\n internalReject(promise, wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(promise, state, false);\n }\n } catch (error) {\n internalReject(promise, { done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromiseConstructor, PROMISE);\n aFunction(executor);\n Internal.call(this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, this, state), bind(internalReject, this, state));\n } catch (error) {\n internalReject(this, state, error);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: [],\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromiseConstructor.prototype, {\n // `Promise.prototype.then` method\n // https://tc39.github.io/ecma262/#sec-promise.prototype.then\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n state.parent = true;\n state.reactions.push(reaction);\n if (state.state != PENDING) notify(this, state, false);\n return reaction.promise;\n },\n // `Promise.prototype.catch` method\n // https://tc39.github.io/ecma262/#sec-promise.prototype.catch\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, promise, state);\n this.reject = bind(internalReject, promise, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && typeof NativePromise == 'function') {\n nativeThen = NativePromise.prototype.then;\n\n // wrap native Promise#then for native async functions\n redefine(NativePromise.prototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n nativeThen.call(that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n\n // wrap fetch result\n if (typeof $fetch == 'function') $({ global: true, enumerable: true, forced: true }, {\n // eslint-disable-next-line no-unused-vars\n fetch: function fetch(input /* , init */) {\n return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments));\n }\n });\n }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n // `Promise.reject` method\n // https://tc39.github.io/ecma262/#sec-promise.reject\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n capability.reject.call(undefined, r);\n return capability.promise;\n }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n // `Promise.resolve` method\n // https://tc39.github.io/ecma262/#sec-promise.resolve\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n // `Promise.all` method\n // https://tc39.github.io/ecma262/#sec-promise.all\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n $promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n },\n // `Promise.race` method\n // https://tc39.github.io/ecma262/#sec-promise.race\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n iterate(iterable, function (promise) {\n $promiseResolve.call(C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar classof = require('../internals/classof-raw');\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar IS_NODE = classof(process) == 'process';\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n } else if (MutationObserver && !IS_IOS) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n then = promise.then;\n notify = function () {\n then.call(promise, flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length === 1 ? console.error(a) : console.error(a, b);\n }\n};\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.github.io/ecma262/#sec-map-objects\nmodule.exports = collection('Map', function (init) {\n return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n\n var fixMethod = function (KEY) {\n var nativeMethod = NativePrototype[KEY];\n redefine(NativePrototype, KEY,\n KEY == 'add' ? function add(value) {\n nativeMethod.call(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n nativeMethod.call(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n // eslint-disable-next-line max-len\n if (isForced(CONSTRUCTOR_NAME, typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n })))) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.REQUIRED = true;\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, Constructor, CONSTRUCTOR_NAME);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP);\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, forced: Constructor != NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n return Object.isExtensible(Object.preventExtensions({}));\n});\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar redefineAll = require('../internals/redefine-all');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS) that.size = 0;\n if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP);\n });\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n // change existing entry\n if (entry) {\n entry.value = value;\n // create new entry\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first) state.first = entry;\n if (previous) previous.next = entry;\n if (DESCRIPTORS) state.size++;\n else that.size++;\n // add to index\n if (index !== 'F') state.index[index] = entry;\n } return that;\n };\n\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return state.index[index];\n // frozen object case\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key) return entry;\n }\n };\n\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous) entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS) state.size = 0;\n else that.size = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev) prev.next = next;\n if (next) next.previous = prev;\n if (state.first == entry) state.first = next;\n if (state.last == entry) state.last = prev;\n if (DESCRIPTORS) state.size--;\n else that.size--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n redefineAll(C.prototype, IS_MAP ? {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS) defineProperty(C.prototype, 'size', {\n get: function () {\n return getInternalState(this).size;\n }\n });\n return C;\n },\n setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n // get next entry\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n // or finish the iteration\n state.target = undefined;\n return { value: undefined, done: true };\n }\n // return step by kind\n if (kind == 'keys') return { value: entry.key, done: false };\n if (kind == 'values') return { value: entry.value, done: false };\n return { value: [entry.key, entry.value], done: false };\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","var fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n });\n};\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.string.iterator');\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar global = require('../internals/global');\nvar defineProperties = require('../internals/object-define-properties');\nvar redefine = require('../internals/redefine');\nvar anInstance = require('../internals/an-instance');\nvar has = require('../internals/has');\nvar assign = require('../internals/object-assign');\nvar arrayFrom = require('../internals/array-from');\nvar codeAt = require('../internals/string-multibyte').codeAt;\nvar toASCII = require('../internals/string-punycode-to-ascii');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar URLSearchParamsModule = require('../modules/web.url-search-params');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar NativeURL = global.URL;\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar floor = Math.floor;\nvar pow = Math.pow;\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[A-Za-z]/;\nvar ALPHANUMERIC = /[\\d+-.A-Za-z]/;\nvar DIGIT = /\\d/;\nvar HEX_START = /^(0x|0X)/;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\dA-Fa-f]+$/;\n// eslint-disable-next-line no-control-regex\nvar FORBIDDEN_HOST_CODE_POINT = /[\\u0000\\u0009\\u000A\\u000D #%/:?@[\\\\]]/;\n// eslint-disable-next-line no-control-regex\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\u0000\\u0009\\u000A\\u000D #/:?@[\\\\]]/;\n// eslint-disable-next-line no-control-regex\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u001F ]+|[\\u0000-\\u001F ]+$/g;\n// eslint-disable-next-line no-control-regex\nvar TAB_AND_NEW_LINE = /[\\u0009\\u000A\\u000D]/g;\nvar EOF;\n\nvar parseHost = function (url, input) {\n var result, codePoints, index;\n if (input.charAt(0) == '[') {\n if (input.charAt(input.length - 1) != ']') return INVALID_HOST;\n result = parseIPv6(input.slice(1, -1));\n if (!result) return INVALID_HOST;\n url.host = result;\n // opaque host\n } else if (!isSpecial(url)) {\n if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n url.host = result;\n } else {\n input = toASCII(input);\n if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null) return INVALID_HOST;\n url.host = result;\n }\n};\n\nvar parseIPv4 = function (input) {\n var parts = input.split('.');\n var partsLength, numbers, index, part, radix, number, ipv4;\n if (parts.length && parts[parts.length - 1] == '') {\n parts.pop();\n }\n partsLength = parts.length;\n if (partsLength > 4) return input;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part == '') return input;\n radix = 10;\n if (part.length > 1 && part.charAt(0) == '0') {\n radix = HEX_START.test(part) ? 16 : 8;\n part = part.slice(radix == 8 ? 1 : 2);\n }\n if (part === '') {\n number = 0;\n } else {\n if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part)) return input;\n number = parseInt(part, radix);\n }\n numbers.push(number);\n }\n for (index = 0; index < partsLength; index++) {\n number = numbers[index];\n if (index == partsLength - 1) {\n if (number >= pow(256, 5 - partsLength)) return null;\n } else if (number > 255) return null;\n }\n ipv4 = numbers.pop();\n for (index = 0; index < numbers.length; index++) {\n ipv4 += numbers[index] * pow(256, 3 - index);\n }\n return ipv4;\n};\n\n// eslint-disable-next-line max-statements\nvar parseIPv6 = function (input) {\n var address = [0, 0, 0, 0, 0, 0, 0, 0];\n var pieceIndex = 0;\n var compress = null;\n var pointer = 0;\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n var char = function () {\n return input.charAt(pointer);\n };\n\n if (char() == ':') {\n if (input.charAt(1) != ':') return;\n pointer += 2;\n pieceIndex++;\n compress = pieceIndex;\n }\n while (char()) {\n if (pieceIndex == 8) return;\n if (char() == ':') {\n if (compress !== null) return;\n pointer++;\n pieceIndex++;\n compress = pieceIndex;\n continue;\n }\n value = length = 0;\n while (length < 4 && HEX.test(char())) {\n value = value * 16 + parseInt(char(), 16);\n pointer++;\n length++;\n }\n if (char() == '.') {\n if (length == 0) return;\n pointer -= length;\n if (pieceIndex > 6) return;\n numbersSeen = 0;\n while (char()) {\n ipv4Piece = null;\n if (numbersSeen > 0) {\n if (char() == '.' && numbersSeen < 4) pointer++;\n else return;\n }\n if (!DIGIT.test(char())) return;\n while (DIGIT.test(char())) {\n number = parseInt(char(), 10);\n if (ipv4Piece === null) ipv4Piece = number;\n else if (ipv4Piece == 0) return;\n else ipv4Piece = ipv4Piece * 10 + number;\n if (ipv4Piece > 255) return;\n pointer++;\n }\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n numbersSeen++;\n if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n }\n if (numbersSeen != 4) return;\n break;\n } else if (char() == ':') {\n pointer++;\n if (!char()) return;\n } else if (char()) return;\n address[pieceIndex++] = value;\n }\n if (compress !== null) {\n swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex != 0 && swaps > 0) {\n swap = address[pieceIndex];\n address[pieceIndex--] = address[compress + swaps - 1];\n address[compress + --swaps] = swap;\n }\n } else if (pieceIndex != 8) return;\n return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n var maxIndex = null;\n var maxLength = 1;\n var currStart = null;\n var currLength = 0;\n var index = 0;\n for (; index < 8; index++) {\n if (ipv6[index] !== 0) {\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n currStart = null;\n currLength = 0;\n } else {\n if (currStart === null) currStart = index;\n ++currLength;\n }\n }\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n return maxIndex;\n};\n\nvar serializeHost = function (host) {\n var result, index, compress, ignore0;\n // ipv4\n if (typeof host == 'number') {\n result = [];\n for (index = 0; index < 4; index++) {\n result.unshift(host % 256);\n host = floor(host / 256);\n } return result.join('.');\n // ipv6\n } else if (typeof host == 'object') {\n result = '';\n compress = findLongestZeroSequence(host);\n for (index = 0; index < 8; index++) {\n if (ignore0 && host[index] === 0) continue;\n if (ignore0) ignore0 = false;\n if (compress === index) {\n result += index ? ':' : '::';\n ignore0 = true;\n } else {\n result += host[index].toString(16);\n if (index < 7) result += ':';\n }\n }\n return '[' + result + ']';\n } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (char, set) {\n var code = codeAt(char, 0);\n return code > 0x20 && code < 0x7F && !has(set, char) ? char : encodeURIComponent(char);\n};\n\nvar specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\nvar isSpecial = function (url) {\n return has(specialSchemes, url.scheme);\n};\n\nvar includesCredentials = function (url) {\n return url.username != '' || url.password != '';\n};\n\nvar cannotHaveUsernamePasswordPort = function (url) {\n return !url.host || url.cannotBeABaseURL || url.scheme == 'file';\n};\n\nvar isWindowsDriveLetter = function (string, normalized) {\n var second;\n return string.length == 2 && ALPHA.test(string.charAt(0))\n && ((second = string.charAt(1)) == ':' || (!normalized && second == '|'));\n};\n\nvar startsWithWindowsDriveLetter = function (string) {\n var third;\n return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && (\n string.length == 2 ||\n ((third = string.charAt(2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n );\n};\n\nvar shortenURLsPath = function (url) {\n var path = url.path;\n var pathSize = path.length;\n if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n path.pop();\n }\n};\n\nvar isSingleDot = function (segment) {\n return segment === '.' || segment.toLowerCase() === '%2e';\n};\n\nvar isDoubleDot = function (segment) {\n segment = segment.toLowerCase();\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\n// eslint-disable-next-line max-statements\nvar parseURL = function (url, input, stateOverride, base) {\n var state = stateOverride || SCHEME_START;\n var pointer = 0;\n var buffer = '';\n var seenAt = false;\n var seenBracket = false;\n var seenPasswordToken = false;\n var codePoints, char, bufferCodePoints, failure;\n\n if (!stateOverride) {\n url.scheme = '';\n url.username = '';\n url.password = '';\n url.host = null;\n url.port = null;\n url.path = [];\n url.query = null;\n url.fragment = null;\n url.cannotBeABaseURL = false;\n input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n }\n\n input = input.replace(TAB_AND_NEW_LINE, '');\n\n codePoints = arrayFrom(input);\n\n while (pointer <= codePoints.length) {\n char = codePoints[pointer];\n switch (state) {\n case SCHEME_START:\n if (char && ALPHA.test(char)) {\n buffer += char.toLowerCase();\n state = SCHEME;\n } else if (!stateOverride) {\n state = NO_SCHEME;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case SCHEME:\n if (char && (ALPHANUMERIC.test(char) || char == '+' || char == '-' || char == '.')) {\n buffer += char.toLowerCase();\n } else if (char == ':') {\n if (stateOverride && (\n (isSpecial(url) != has(specialSchemes, buffer)) ||\n (buffer == 'file' && (includesCredentials(url) || url.port !== null)) ||\n (url.scheme == 'file' && !url.host)\n )) return;\n url.scheme = buffer;\n if (stateOverride) {\n if (isSpecial(url) && specialSchemes[url.scheme] == url.port) url.port = null;\n return;\n }\n buffer = '';\n if (url.scheme == 'file') {\n state = FILE;\n } else if (isSpecial(url) && base && base.scheme == url.scheme) {\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\n } else if (isSpecial(url)) {\n state = SPECIAL_AUTHORITY_SLASHES;\n } else if (codePoints[pointer + 1] == '/') {\n state = PATH_OR_AUTHORITY;\n pointer++;\n } else {\n url.cannotBeABaseURL = true;\n url.path.push('');\n state = CANNOT_BE_A_BASE_URL_PATH;\n }\n } else if (!stateOverride) {\n buffer = '';\n state = NO_SCHEME;\n pointer = 0;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case NO_SCHEME:\n if (!base || (base.cannotBeABaseURL && char != '#')) return INVALID_SCHEME;\n if (base.cannotBeABaseURL && char == '#') {\n url.scheme = base.scheme;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n url.cannotBeABaseURL = true;\n state = FRAGMENT;\n break;\n }\n state = base.scheme == 'file' ? FILE : RELATIVE;\n continue;\n\n case SPECIAL_RELATIVE_OR_AUTHORITY:\n if (char == '/' && codePoints[pointer + 1] == '/') {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n pointer++;\n } else {\n state = RELATIVE;\n continue;\n } break;\n\n case PATH_OR_AUTHORITY:\n if (char == '/') {\n state = AUTHORITY;\n break;\n } else {\n state = PATH;\n continue;\n }\n\n case RELATIVE:\n url.scheme = base.scheme;\n if (char == EOF) {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '/' || (char == '\\\\' && isSpecial(url))) {\n state = RELATIVE_SLASH;\n } else if (char == '?') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.path.pop();\n state = PATH;\n continue;\n } break;\n\n case RELATIVE_SLASH:\n if (isSpecial(url) && (char == '/' || char == '\\\\')) {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n } else if (char == '/') {\n state = AUTHORITY;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n state = PATH;\n continue;\n } break;\n\n case SPECIAL_AUTHORITY_SLASHES:\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n if (char != '/' || buffer.charAt(pointer + 1) != '/') continue;\n pointer++;\n break;\n\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n if (char != '/' && char != '\\\\') {\n state = AUTHORITY;\n continue;\n } break;\n\n case AUTHORITY:\n if (char == '@') {\n if (seenAt) buffer = '%40' + buffer;\n seenAt = true;\n bufferCodePoints = arrayFrom(buffer);\n for (var i = 0; i < bufferCodePoints.length; i++) {\n var codePoint = bufferCodePoints[i];\n if (codePoint == ':' && !seenPasswordToken) {\n seenPasswordToken = true;\n continue;\n }\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n if (seenPasswordToken) url.password += encodedCodePoints;\n else url.username += encodedCodePoints;\n }\n buffer = '';\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (seenAt && buffer == '') return INVALID_AUTHORITY;\n pointer -= arrayFrom(buffer).length + 1;\n buffer = '';\n state = HOST;\n } else buffer += char;\n break;\n\n case HOST:\n case HOSTNAME:\n if (stateOverride && url.scheme == 'file') {\n state = FILE_HOST;\n continue;\n } else if (char == ':' && !seenBracket) {\n if (buffer == '') return INVALID_HOST;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PORT;\n if (stateOverride == HOSTNAME) return;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (isSpecial(url) && buffer == '') return INVALID_HOST;\n if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) return;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PATH_START;\n if (stateOverride) return;\n continue;\n } else {\n if (char == '[') seenBracket = true;\n else if (char == ']') seenBracket = false;\n buffer += char;\n } break;\n\n case PORT:\n if (DIGIT.test(char)) {\n buffer += char;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url)) ||\n stateOverride\n ) {\n if (buffer != '') {\n var port = parseInt(buffer, 10);\n if (port > 0xFFFF) return INVALID_PORT;\n url.port = (isSpecial(url) && port === specialSchemes[url.scheme]) ? null : port;\n buffer = '';\n }\n if (stateOverride) return;\n state = PATH_START;\n continue;\n } else return INVALID_PORT;\n break;\n\n case FILE:\n url.scheme = 'file';\n if (char == '/' || char == '\\\\') state = FILE_SLASH;\n else if (base && base.scheme == 'file') {\n if (char == EOF) {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '?') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n url.host = base.host;\n url.path = base.path.slice();\n shortenURLsPath(url);\n }\n state = PATH;\n continue;\n }\n } else {\n state = PATH;\n continue;\n } break;\n\n case FILE_SLASH:\n if (char == '/' || char == '\\\\') {\n state = FILE_HOST;\n break;\n }\n if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n if (isWindowsDriveLetter(base.path[0], true)) url.path.push(base.path[0]);\n else url.host = base.host;\n }\n state = PATH;\n continue;\n\n case FILE_HOST:\n if (char == EOF || char == '/' || char == '\\\\' || char == '?' || char == '#') {\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\n state = PATH;\n } else if (buffer == '') {\n url.host = '';\n if (stateOverride) return;\n state = PATH_START;\n } else {\n failure = parseHost(url, buffer);\n if (failure) return failure;\n if (url.host == 'localhost') url.host = '';\n if (stateOverride) return;\n buffer = '';\n state = PATH_START;\n } continue;\n } else buffer += char;\n break;\n\n case PATH_START:\n if (isSpecial(url)) {\n state = PATH;\n if (char != '/' && char != '\\\\') continue;\n } else if (!stateOverride && char == '?') {\n url.query = '';\n state = QUERY;\n } else if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n state = PATH;\n if (char != '/') continue;\n } break;\n\n case PATH:\n if (\n char == EOF || char == '/' ||\n (char == '\\\\' && isSpecial(url)) ||\n (!stateOverride && (char == '?' || char == '#'))\n ) {\n if (isDoubleDot(buffer)) {\n shortenURLsPath(url);\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else if (isSingleDot(buffer)) {\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else {\n if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n if (url.host) url.host = '';\n buffer = buffer.charAt(0) + ':'; // normalize windows drive letter\n }\n url.path.push(buffer);\n }\n buffer = '';\n if (url.scheme == 'file' && (char == EOF || char == '?' || char == '#')) {\n while (url.path.length > 1 && url.path[0] === '') {\n url.path.shift();\n }\n }\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n }\n } else {\n buffer += percentEncode(char, pathPercentEncodeSet);\n } break;\n\n case CANNOT_BE_A_BASE_URL_PATH:\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n url.path[0] += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case QUERY:\n if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n if (char == \"'\" && isSpecial(url)) url.query += '%27';\n else if (char == '#') url.query += '%23';\n else url.query += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case FRAGMENT:\n if (char != EOF) url.fragment += percentEncode(char, fragmentPercentEncodeSet);\n break;\n }\n\n pointer++;\n }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n var that = anInstance(this, URLConstructor, 'URL');\n var base = arguments.length > 1 ? arguments[1] : undefined;\n var urlString = String(url);\n var state = setInternalState(that, { type: 'URL' });\n var baseState, failure;\n if (base !== undefined) {\n if (base instanceof URLConstructor) baseState = getInternalURLState(base);\n else {\n failure = parseURL(baseState = {}, String(base));\n if (failure) throw TypeError(failure);\n }\n }\n failure = parseURL(state, urlString, null, baseState);\n if (failure) throw TypeError(failure);\n var searchParams = state.searchParams = new URLSearchParams();\n var searchParamsState = getInternalSearchParamsState(searchParams);\n searchParamsState.updateSearchParams(state.query);\n searchParamsState.updateURL = function () {\n state.query = String(searchParams) || null;\n };\n if (!DESCRIPTORS) {\n that.href = serializeURL.call(that);\n that.origin = getOrigin.call(that);\n that.protocol = getProtocol.call(that);\n that.username = getUsername.call(that);\n that.password = getPassword.call(that);\n that.host = getHost.call(that);\n that.hostname = getHostname.call(that);\n that.port = getPort.call(that);\n that.pathname = getPathname.call(that);\n that.search = getSearch.call(that);\n that.searchParams = getSearchParams.call(that);\n that.hash = getHash.call(that);\n }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar serializeURL = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var username = url.username;\n var password = url.password;\n var host = url.host;\n var port = url.port;\n var path = url.path;\n var query = url.query;\n var fragment = url.fragment;\n var output = scheme + ':';\n if (host !== null) {\n output += '//';\n if (includesCredentials(url)) {\n output += username + (password ? ':' + password : '') + '@';\n }\n output += serializeHost(host);\n if (port !== null) output += ':' + port;\n } else if (scheme == 'file') output += '//';\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n if (query !== null) output += '?' + query;\n if (fragment !== null) output += '#' + fragment;\n return output;\n};\n\nvar getOrigin = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var port = url.port;\n if (scheme == 'blob') try {\n return new URL(scheme.path[0]).origin;\n } catch (error) {\n return 'null';\n }\n if (scheme == 'file' || !isSpecial(url)) return 'null';\n return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : '');\n};\n\nvar getProtocol = function () {\n return getInternalURLState(this).scheme + ':';\n};\n\nvar getUsername = function () {\n return getInternalURLState(this).username;\n};\n\nvar getPassword = function () {\n return getInternalURLState(this).password;\n};\n\nvar getHost = function () {\n var url = getInternalURLState(this);\n var host = url.host;\n var port = url.port;\n return host === null ? ''\n : port === null ? serializeHost(host)\n : serializeHost(host) + ':' + port;\n};\n\nvar getHostname = function () {\n var host = getInternalURLState(this).host;\n return host === null ? '' : serializeHost(host);\n};\n\nvar getPort = function () {\n var port = getInternalURLState(this).port;\n return port === null ? '' : String(port);\n};\n\nvar getPathname = function () {\n var url = getInternalURLState(this);\n var path = url.path;\n return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n};\n\nvar getSearch = function () {\n var query = getInternalURLState(this).query;\n return query ? '?' + query : '';\n};\n\nvar getSearchParams = function () {\n return getInternalURLState(this).searchParams;\n};\n\nvar getHash = function () {\n var fragment = getInternalURLState(this).fragment;\n return fragment ? '#' + fragment : '';\n};\n\nvar accessorDescriptor = function (getter, setter) {\n return { get: getter, set: setter, configurable: true, enumerable: true };\n};\n\nif (DESCRIPTORS) {\n defineProperties(URLPrototype, {\n // `URL.prototype.href` accessors pair\n // https://url.spec.whatwg.org/#dom-url-href\n href: accessorDescriptor(serializeURL, function (href) {\n var url = getInternalURLState(this);\n var urlString = String(href);\n var failure = parseURL(url, urlString);\n if (failure) throw TypeError(failure);\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.origin` getter\n // https://url.spec.whatwg.org/#dom-url-origin\n origin: accessorDescriptor(getOrigin),\n // `URL.prototype.protocol` accessors pair\n // https://url.spec.whatwg.org/#dom-url-protocol\n protocol: accessorDescriptor(getProtocol, function (protocol) {\n var url = getInternalURLState(this);\n parseURL(url, String(protocol) + ':', SCHEME_START);\n }),\n // `URL.prototype.username` accessors pair\n // https://url.spec.whatwg.org/#dom-url-username\n username: accessorDescriptor(getUsername, function (username) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(username));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.username = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.password` accessors pair\n // https://url.spec.whatwg.org/#dom-url-password\n password: accessorDescriptor(getPassword, function (password) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(password));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.password = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.host` accessors pair\n // https://url.spec.whatwg.org/#dom-url-host\n host: accessorDescriptor(getHost, function (host) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(host), HOST);\n }),\n // `URL.prototype.hostname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hostname\n hostname: accessorDescriptor(getHostname, function (hostname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(hostname), HOSTNAME);\n }),\n // `URL.prototype.port` accessors pair\n // https://url.spec.whatwg.org/#dom-url-port\n port: accessorDescriptor(getPort, function (port) {\n var url = getInternalURLState(this);\n if (cannotHaveUsernamePasswordPort(url)) return;\n port = String(port);\n if (port == '') url.port = null;\n else parseURL(url, port, PORT);\n }),\n // `URL.prototype.pathname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-pathname\n pathname: accessorDescriptor(getPathname, function (pathname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n url.path = [];\n parseURL(url, pathname + '', PATH_START);\n }),\n // `URL.prototype.search` accessors pair\n // https://url.spec.whatwg.org/#dom-url-search\n search: accessorDescriptor(getSearch, function (search) {\n var url = getInternalURLState(this);\n search = String(search);\n if (search == '') {\n url.query = null;\n } else {\n if ('?' == search.charAt(0)) search = search.slice(1);\n url.query = '';\n parseURL(url, search, QUERY);\n }\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.searchParams` getter\n // https://url.spec.whatwg.org/#dom-url-searchparams\n searchParams: accessorDescriptor(getSearchParams),\n // `URL.prototype.hash` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hash\n hash: accessorDescriptor(getHash, function (hash) {\n var url = getInternalURLState(this);\n hash = String(hash);\n if (hash == '') {\n url.fragment = null;\n return;\n }\n if ('#' == hash.charAt(0)) hash = hash.slice(1);\n url.fragment = '';\n parseURL(url, hash, FRAGMENT);\n })\n });\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\nredefine(URLPrototype, 'toJSON', function toJSON() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\nredefine(URLPrototype, 'toString', function toString() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\nif (NativeURL) {\n var nativeCreateObjectURL = NativeURL.createObjectURL;\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n // `URL.createObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n // eslint-disable-next-line no-unused-vars\n if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) {\n return nativeCreateObjectURL.apply(NativeURL, arguments);\n });\n // `URL.revokeObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n // eslint-disable-next-line no-unused-vars\n if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) {\n return nativeRevokeObjectURL.apply(NativeURL, arguments);\n });\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n URL: URLConstructor\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\nvar nativeAssign = Object.assign;\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\nmodule.exports = !nativeAssign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && nativeAssign({ b: 1 }, nativeAssign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : nativeAssign;\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\n// `Array.from` method implementation\n// https://tc39.github.io/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n result = new C();\n for (;!(step = next.call(iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","'use strict';\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\nvar floor = Math.floor;\nvar stringFromCharCode = String.fromCharCode;\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n var extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n for (; delta > baseMinusTMin * tMax >> 1; k += base) {\n delta = floor(delta / baseMinusTMin);\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\n// eslint-disable-next-line max-statements\nvar encode = function (input) {\n var output = [];\n\n // Convert the input in UCS-2 to an array of Unicode code points.\n input = ucs2decode(input);\n\n // Cache the length.\n var inputLength = input.length;\n\n // Initialize the state.\n var n = initialN;\n var delta = 0;\n var bias = initialBias;\n var i, currentValue;\n\n // Handle the basic code points.\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < 0x80) {\n output.push(stringFromCharCode(currentValue));\n }\n }\n\n var basicLength = output.length; // number of basic code points.\n var handledCPCount = basicLength; // number of code points that have been handled;\n\n // Finish the basic string with a delimiter unless it's empty.\n if (basicLength) {\n output.push(delimiter);\n }\n\n // Main encoding loop:\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next larger one:\n var m = maxInt;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n\n // Increase `delta` enough to advance the decoder's state to , but guard against overflow.\n var handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n throw RangeError(OVERFLOW_ERROR);\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n throw RangeError(OVERFLOW_ERROR);\n }\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer.\n var q = delta;\n for (var k = base; /* no condition */; k += base) {\n var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n if (q < t) break;\n var qMinusT = q - t;\n var baseMinusT = base - t;\n output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n q = floor(qMinusT / baseMinusT);\n }\n\n output.push(stringFromCharCode(digitToBasic(q)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n\n ++delta;\n ++n;\n }\n return output.join('');\n};\n\nmodule.exports = function (input) {\n var encoded = [];\n var labels = input.toLowerCase().replace(regexSeparators, '\\u002E').split('.');\n var i, label;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label);\n }\n return encoded.join('.');\n};\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.array.iterator');\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar InternalStateModule = require('../internals/internal-state');\nvar anInstance = require('../internals/an-instance');\nvar hasOwn = require('../internals/has');\nvar bind = require('../internals/function-bind-context');\nvar classof = require('../internals/classof');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $fetch = getBuiltIn('fetch');\nvar Headers = getBuiltIn('Headers');\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n try {\n return decodeURIComponent(sequence);\n } catch (error) {\n return sequence;\n }\n};\n\nvar deserialize = function (it) {\n var result = it.replace(plus, ' ');\n var bytes = 4;\n try {\n return decodeURIComponent(result);\n } catch (error) {\n while (bytes) {\n result = result.replace(percentSequence(bytes--), percentDecode);\n }\n return result;\n }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replace = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\n\nvar replacer = function (match) {\n return replace[match];\n};\n\nvar serialize = function (it) {\n return encodeURIComponent(it).replace(find, replacer);\n};\n\nvar parseSearchParams = function (result, query) {\n if (query) {\n var attributes = query.split('&');\n var index = 0;\n var attribute, entry;\n while (index < attributes.length) {\n attribute = attributes[index++];\n if (attribute.length) {\n entry = attribute.split('=');\n result.push({\n key: deserialize(entry.shift()),\n value: deserialize(entry.join('='))\n });\n }\n }\n }\n};\n\nvar updateSearchParams = function (query) {\n this.entries.length = 0;\n parseSearchParams(this.entries, query);\n};\n\nvar validateArgumentsLength = function (passed, required) {\n if (passed < required) throw TypeError('Not enough arguments');\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n setInternalState(this, {\n type: URL_SEARCH_PARAMS_ITERATOR,\n iterator: getIterator(getInternalParamsState(params).entries),\n kind: kind\n });\n}, 'Iterator', function next() {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var step = state.iterator.next();\n var entry = step.value;\n if (!step.done) {\n step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n } return step;\n});\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n var that = this;\n var entries = [];\n var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key;\n\n setInternalState(that, {\n type: URL_SEARCH_PARAMS,\n entries: entries,\n updateURL: function () { /* empty */ },\n updateSearchParams: updateSearchParams\n });\n\n if (init !== undefined) {\n if (isObject(init)) {\n iteratorMethod = getIteratorMethod(init);\n if (typeof iteratorMethod === 'function') {\n iterator = iteratorMethod.call(init);\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n entryIterator = getIterator(anObject(step.value));\n entryNext = entryIterator.next;\n if (\n (first = entryNext.call(entryIterator)).done ||\n (second = entryNext.call(entryIterator)).done ||\n !entryNext.call(entryIterator).done\n ) throw TypeError('Expected sequence with length 2');\n entries.push({ key: first.value + '', value: second.value + '' });\n }\n } else for (key in init) if (hasOwn(init, key)) entries.push({ key: key, value: init[key] + '' });\n } else {\n parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + '');\n }\n }\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\nredefineAll(URLSearchParamsPrototype, {\n // `URLSearchParams.prototype.appent` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n append: function append(name, value) {\n validateArgumentsLength(arguments.length, 2);\n var state = getInternalParamsState(this);\n state.entries.push({ key: name + '', value: value + '' });\n state.updateURL();\n },\n // `URLSearchParams.prototype.delete` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n 'delete': function (name) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index].key === key) entries.splice(index, 1);\n else index++;\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.get` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n get: function get(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) return entries[index].value;\n }\n return null;\n },\n // `URLSearchParams.prototype.getAll` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n getAll: function getAll(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var result = [];\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) result.push(entries[index].value);\n }\n return result;\n },\n // `URLSearchParams.prototype.has` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n has: function has(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index++].key === key) return true;\n }\n return false;\n },\n // `URLSearchParams.prototype.set` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n set: function set(name, value) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var found = false;\n var key = name + '';\n var val = value + '';\n var index = 0;\n var entry;\n for (; index < entries.length; index++) {\n entry = entries[index];\n if (entry.key === key) {\n if (found) entries.splice(index--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found) entries.push({ key: key, value: val });\n state.updateURL();\n },\n // `URLSearchParams.prototype.sort` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n sort: function sort() {\n var state = getInternalParamsState(this);\n var entries = state.entries;\n // Array#sort is not stable in some engines\n var slice = entries.slice();\n var entry, entriesIndex, sliceIndex;\n entries.length = 0;\n for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) {\n entry = slice[sliceIndex];\n for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) {\n if (entries[entriesIndex].key > entry.key) {\n entries.splice(entriesIndex, 0, entry);\n break;\n }\n }\n if (entriesIndex === sliceIndex) entries.push(entry);\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.forEach` method\n forEach: function forEach(callback /* , thisArg */) {\n var entries = getInternalParamsState(this).entries;\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined, 3);\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n boundFunction(entry.value, entry.key, this);\n }\n },\n // `URLSearchParams.prototype.keys` method\n keys: function keys() {\n return new URLSearchParamsIterator(this, 'keys');\n },\n // `URLSearchParams.prototype.values` method\n values: function values() {\n return new URLSearchParamsIterator(this, 'values');\n },\n // `URLSearchParams.prototype.entries` method\n entries: function entries() {\n return new URLSearchParamsIterator(this, 'entries');\n }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\nredefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries);\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\nredefine(URLSearchParamsPrototype, 'toString', function toString() {\n var entries = getInternalParamsState(this).entries;\n var result = [];\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n result.push(serialize(entry.key) + '=' + serialize(entry.value));\n } return result.join('&');\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, forced: !USE_NATIVE_URL }, {\n URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` for correct work with polyfilled `URLSearchParams`\n// https://github.com/zloirock/core-js/issues/674\nif (!USE_NATIVE_URL && typeof $fetch == 'function' && typeof Headers == 'function') {\n $({ global: true, enumerable: true, forced: true }, {\n fetch: function fetch(input /* , init */) {\n var args = [input];\n var init, body, headers;\n if (arguments.length > 1) {\n init = arguments[1];\n if (isObject(init)) {\n body = init.body;\n if (classof(body) === URL_SEARCH_PARAMS) {\n headers = init.headers ? new Headers(init.headers) : new Headers();\n if (!headers.has('content-type')) {\n headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n init = create(init, {\n body: createPropertyDescriptor(0, String(body)),\n headers: createPropertyDescriptor(0, headers)\n });\n }\n }\n args.push(init);\n } return $fetch.apply(this, args);\n }\n });\n}\n\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n","var anObject = require('../internals/an-object');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = function (it) {\n var iteratorMethod = getIteratorMethod(it);\n if (typeof iteratorMethod != 'function') {\n throw TypeError(String(it) + ' is not iterable');\n } return anObject(iteratorMethod.call(it));\n};\n","// can-promise has a crash in some versions of react native that dont have\n// standard global objects\n// https://github.com/soldair/node-qrcode/issues/157\n\nmodule.exports = function () {\n return typeof Promise === 'function' && Promise.prototype && Promise.prototype.then\n}\n","const Utils = require('./utils')\nconst ECLevel = require('./error-correction-level')\nconst BitBuffer = require('./bit-buffer')\nconst BitMatrix = require('./bit-matrix')\nconst AlignmentPattern = require('./alignment-pattern')\nconst FinderPattern = require('./finder-pattern')\nconst MaskPattern = require('./mask-pattern')\nconst ECCode = require('./error-correction-code')\nconst ReedSolomonEncoder = require('./reed-solomon-encoder')\nconst Version = require('./version')\nconst FormatInfo = require('./format-info')\nconst Mode = require('./mode')\nconst Segments = require('./segments')\n\n/**\n * QRCode for JavaScript\n *\n * modified by Ryan Day for nodejs support\n * Copyright (c) 2011 Ryan Day\n *\n * Licensed under the MIT license:\n * http://www.opensource.org/licenses/mit-license.php\n *\n//---------------------------------------------------------------------\n// QRCode for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word \"QR Code\" is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n*/\n\n/**\n * Add finder patterns bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupFinderPattern (matrix, version) {\n const size = matrix.size\n const pos = FinderPattern.getPositions(version)\n\n for (let i = 0; i < pos.length; i++) {\n const row = pos[i][0]\n const col = pos[i][1]\n\n for (let r = -1; r <= 7; r++) {\n if (row + r <= -1 || size <= row + r) continue\n\n for (let c = -1; c <= 7; c++) {\n if (col + c <= -1 || size <= col + c) continue\n\n if ((r >= 0 && r <= 6 && (c === 0 || c === 6)) ||\n (c >= 0 && c <= 6 && (r === 0 || r === 6)) ||\n (r >= 2 && r <= 4 && c >= 2 && c <= 4)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add timing pattern bits to matrix\n *\n * Note: this function must be called before {@link setupAlignmentPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n */\nfunction setupTimingPattern (matrix) {\n const size = matrix.size\n\n for (let r = 8; r < size - 8; r++) {\n const value = r % 2 === 0\n matrix.set(r, 6, value, true)\n matrix.set(6, r, value, true)\n }\n}\n\n/**\n * Add alignment patterns bits to matrix\n *\n * Note: this function must be called after {@link setupTimingPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupAlignmentPattern (matrix, version) {\n const pos = AlignmentPattern.getPositions(version)\n\n for (let i = 0; i < pos.length; i++) {\n const row = pos[i][0]\n const col = pos[i][1]\n\n for (let r = -2; r <= 2; r++) {\n for (let c = -2; c <= 2; c++) {\n if (r === -2 || r === 2 || c === -2 || c === 2 ||\n (r === 0 && c === 0)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add version info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupVersionInfo (matrix, version) {\n const size = matrix.size\n const bits = Version.getEncodedBits(version)\n let row, col, mod\n\n for (let i = 0; i < 18; i++) {\n row = Math.floor(i / 3)\n col = i % 3 + size - 8 - 3\n mod = ((bits >> i) & 1) === 1\n\n matrix.set(row, col, mod, true)\n matrix.set(col, row, mod, true)\n }\n}\n\n/**\n * Add format info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {Number} maskPattern Mask pattern reference value\n */\nfunction setupFormatInfo (matrix, errorCorrectionLevel, maskPattern) {\n const size = matrix.size\n const bits = FormatInfo.getEncodedBits(errorCorrectionLevel, maskPattern)\n let i, mod\n\n for (i = 0; i < 15; i++) {\n mod = ((bits >> i) & 1) === 1\n\n // vertical\n if (i < 6) {\n matrix.set(i, 8, mod, true)\n } else if (i < 8) {\n matrix.set(i + 1, 8, mod, true)\n } else {\n matrix.set(size - 15 + i, 8, mod, true)\n }\n\n // horizontal\n if (i < 8) {\n matrix.set(8, size - i - 1, mod, true)\n } else if (i < 9) {\n matrix.set(8, 15 - i - 1 + 1, mod, true)\n } else {\n matrix.set(8, 15 - i - 1, mod, true)\n }\n }\n\n // fixed module\n matrix.set(size - 8, 8, 1, true)\n}\n\n/**\n * Add encoded data bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Uint8Array} data Data codewords\n */\nfunction setupData (matrix, data) {\n const size = matrix.size\n let inc = -1\n let row = size - 1\n let bitIndex = 7\n let byteIndex = 0\n\n for (let col = size - 1; col > 0; col -= 2) {\n if (col === 6) col--\n\n while (true) {\n for (let c = 0; c < 2; c++) {\n if (!matrix.isReserved(row, col - c)) {\n let dark = false\n\n if (byteIndex < data.length) {\n dark = (((data[byteIndex] >>> bitIndex) & 1) === 1)\n }\n\n matrix.set(row, col - c, dark)\n bitIndex--\n\n if (bitIndex === -1) {\n byteIndex++\n bitIndex = 7\n }\n }\n }\n\n row += inc\n\n if (row < 0 || size <= row) {\n row -= inc\n inc = -inc\n break\n }\n }\n }\n}\n\n/**\n * Create encoded codewords from data input\n *\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {ByteData} data Data input\n * @return {Uint8Array} Buffer containing encoded codewords\n */\nfunction createData (version, errorCorrectionLevel, segments) {\n // Prepare data buffer\n const buffer = new BitBuffer()\n\n segments.forEach(function (data) {\n // prefix data with mode indicator (4 bits)\n buffer.put(data.mode.bit, 4)\n\n // Prefix data with character count indicator.\n // The character count indicator is a string of bits that represents the\n // number of characters that are being encoded.\n // The character count indicator must be placed after the mode indicator\n // and must be a certain number of bits long, depending on the QR version\n // and data mode\n // @see {@link Mode.getCharCountIndicator}.\n buffer.put(data.getLength(), Mode.getCharCountIndicator(data.mode, version))\n\n // add binary data sequence to buffer\n data.write(buffer)\n })\n\n // Calculate required number of bits\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n const dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n // Add a terminator.\n // If the bit string is shorter than the total number of required bits,\n // a terminator of up to four 0s must be added to the right side of the string.\n // If the bit string is more than four bits shorter than the required number of bits,\n // add four 0s to the end.\n if (buffer.getLengthInBits() + 4 <= dataTotalCodewordsBits) {\n buffer.put(0, 4)\n }\n\n // If the bit string is fewer than four bits shorter, add only the number of 0s that\n // are needed to reach the required number of bits.\n\n // After adding the terminator, if the number of bits in the string is not a multiple of 8,\n // pad the string on the right with 0s to make the string's length a multiple of 8.\n while (buffer.getLengthInBits() % 8 !== 0) {\n buffer.putBit(0)\n }\n\n // Add pad bytes if the string is still shorter than the total number of required bits.\n // Extend the buffer to fill the data capacity of the symbol corresponding to\n // the Version and Error Correction Level by adding the Pad Codewords 11101100 (0xEC)\n // and 00010001 (0x11) alternately.\n const remainingByte = (dataTotalCodewordsBits - buffer.getLengthInBits()) / 8\n for (let i = 0; i < remainingByte; i++) {\n buffer.put(i % 2 ? 0x11 : 0xEC, 8)\n }\n\n return createCodewords(buffer, version, errorCorrectionLevel)\n}\n\n/**\n * Encode input data with Reed-Solomon and return codewords with\n * relative error correction bits\n *\n * @param {BitBuffer} bitBuffer Data to encode\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @return {Uint8Array} Buffer containing encoded codewords\n */\nfunction createCodewords (bitBuffer, version, errorCorrectionLevel) {\n // Total codewords for this QR code version (Data + Error correction)\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n const dataTotalCodewords = totalCodewords - ecTotalCodewords\n\n // Total number of blocks\n const ecTotalBlocks = ECCode.getBlocksCount(version, errorCorrectionLevel)\n\n // Calculate how many blocks each group should contain\n const blocksInGroup2 = totalCodewords % ecTotalBlocks\n const blocksInGroup1 = ecTotalBlocks - blocksInGroup2\n\n const totalCodewordsInGroup1 = Math.floor(totalCodewords / ecTotalBlocks)\n\n const dataCodewordsInGroup1 = Math.floor(dataTotalCodewords / ecTotalBlocks)\n const dataCodewordsInGroup2 = dataCodewordsInGroup1 + 1\n\n // Number of EC codewords is the same for both groups\n const ecCount = totalCodewordsInGroup1 - dataCodewordsInGroup1\n\n // Initialize a Reed-Solomon encoder with a generator polynomial of degree ecCount\n const rs = new ReedSolomonEncoder(ecCount)\n\n let offset = 0\n const dcData = new Array(ecTotalBlocks)\n const ecData = new Array(ecTotalBlocks)\n let maxDataSize = 0\n const buffer = new Uint8Array(bitBuffer.buffer)\n\n // Divide the buffer into the required number of blocks\n for (let b = 0; b < ecTotalBlocks; b++) {\n const dataSize = b < blocksInGroup1 ? dataCodewordsInGroup1 : dataCodewordsInGroup2\n\n // extract a block of data from buffer\n dcData[b] = buffer.slice(offset, offset + dataSize)\n\n // Calculate EC codewords for this data block\n ecData[b] = rs.encode(dcData[b])\n\n offset += dataSize\n maxDataSize = Math.max(maxDataSize, dataSize)\n }\n\n // Create final data\n // Interleave the data and error correction codewords from each block\n const data = new Uint8Array(totalCodewords)\n let index = 0\n let i, r\n\n // Add data codewords\n for (i = 0; i < maxDataSize; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n if (i < dcData[r].length) {\n data[index++] = dcData[r][i]\n }\n }\n }\n\n // Apped EC codewords\n for (i = 0; i < ecCount; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n data[index++] = ecData[r][i]\n }\n }\n\n return data\n}\n\n/**\n * Build QR Code symbol\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @param {ErrorCorretionLevel} errorCorrectionLevel Error level\n * @param {MaskPattern} maskPattern Mask pattern\n * @return {Object} Object containing symbol data\n */\nfunction createSymbol (data, version, errorCorrectionLevel, maskPattern) {\n let segments\n\n if (Array.isArray(data)) {\n segments = Segments.fromArray(data)\n } else if (typeof data === 'string') {\n let estimatedVersion = version\n\n if (!estimatedVersion) {\n const rawSegments = Segments.rawSplit(data)\n\n // Estimate best version that can contain raw splitted segments\n estimatedVersion = Version.getBestVersionForData(rawSegments, errorCorrectionLevel)\n }\n\n // Build optimized segments\n // If estimated version is undefined, try with the highest version\n segments = Segments.fromString(data, estimatedVersion || 40)\n } else {\n throw new Error('Invalid data')\n }\n\n // Get the min version that can contain data\n const bestVersion = Version.getBestVersionForData(segments, errorCorrectionLevel)\n\n // If no version is found, data cannot be stored\n if (!bestVersion) {\n throw new Error('The amount of data is too big to be stored in a QR Code')\n }\n\n // If not specified, use min version as default\n if (!version) {\n version = bestVersion\n\n // Check if the specified version can contain the data\n } else if (version < bestVersion) {\n throw new Error('\\n' +\n 'The chosen QR Code version cannot contain this amount of data.\\n' +\n 'Minimum version required to store current data is: ' + bestVersion + '.\\n'\n )\n }\n\n const dataBits = createData(version, errorCorrectionLevel, segments)\n\n // Allocate matrix buffer\n const moduleCount = Utils.getSymbolSize(version)\n const modules = new BitMatrix(moduleCount)\n\n // Add function modules\n setupFinderPattern(modules, version)\n setupTimingPattern(modules)\n setupAlignmentPattern(modules, version)\n\n // Add temporary dummy bits for format info just to set them as reserved.\n // This is needed to prevent these bits from being masked by {@link MaskPattern.applyMask}\n // since the masking operation must be performed only on the encoding region.\n // These blocks will be replaced with correct values later in code.\n setupFormatInfo(modules, errorCorrectionLevel, 0)\n\n if (version >= 7) {\n setupVersionInfo(modules, version)\n }\n\n // Add data codewords\n setupData(modules, dataBits)\n\n if (isNaN(maskPattern)) {\n // Find best mask pattern\n maskPattern = MaskPattern.getBestMask(modules,\n setupFormatInfo.bind(null, modules, errorCorrectionLevel))\n }\n\n // Apply mask pattern\n MaskPattern.applyMask(maskPattern, modules)\n\n // Replace format info bits with correct values\n setupFormatInfo(modules, errorCorrectionLevel, maskPattern)\n\n return {\n modules: modules,\n version: version,\n errorCorrectionLevel: errorCorrectionLevel,\n maskPattern: maskPattern,\n segments: segments\n }\n}\n\n/**\n * QR Code\n *\n * @param {String | Array} data Input data\n * @param {Object} options Optional configurations\n * @param {Number} options.version QR Code version\n * @param {String} options.errorCorrectionLevel Error correction level\n * @param {Function} options.toSJISFunc Helper func to convert utf8 to sjis\n */\nexports.create = function create (data, options) {\n if (typeof data === 'undefined' || data === '') {\n throw new Error('No input text')\n }\n\n let errorCorrectionLevel = ECLevel.M\n let version\n let mask\n\n if (typeof options !== 'undefined') {\n // Use higher error correction level as default\n errorCorrectionLevel = ECLevel.from(options.errorCorrectionLevel, ECLevel.M)\n version = Version.from(options.version)\n mask = MaskPattern.from(options.maskPattern)\n\n if (options.toSJISFunc) {\n Utils.setToSJISFunction(options.toSJISFunc)\n }\n }\n\n return createSymbol(data, version, errorCorrectionLevel, mask)\n}\n","function BitBuffer () {\n this.buffer = []\n this.length = 0\n}\n\nBitBuffer.prototype = {\n\n get: function (index) {\n const bufIndex = Math.floor(index / 8)\n return ((this.buffer[bufIndex] >>> (7 - index % 8)) & 1) === 1\n },\n\n put: function (num, length) {\n for (let i = 0; i < length; i++) {\n this.putBit(((num >>> (length - i - 1)) & 1) === 1)\n }\n },\n\n getLengthInBits: function () {\n return this.length\n },\n\n putBit: function (bit) {\n const bufIndex = Math.floor(this.length / 8)\n if (this.buffer.length <= bufIndex) {\n this.buffer.push(0)\n }\n\n if (bit) {\n this.buffer[bufIndex] |= (0x80 >>> (this.length % 8))\n }\n\n this.length++\n }\n}\n\nmodule.exports = BitBuffer\n","/**\n * Helper class to handle QR Code symbol modules\n *\n * @param {Number} size Symbol size\n */\nfunction BitMatrix (size) {\n if (!size || size < 1) {\n throw new Error('BitMatrix size must be defined and greater than 0')\n }\n\n this.size = size\n this.data = new Uint8Array(size * size)\n this.reservedBit = new Uint8Array(size * size)\n}\n\n/**\n * Set bit value at specified location\n * If reserved flag is set, this bit will be ignored during masking process\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n * @param {Boolean} reserved\n */\nBitMatrix.prototype.set = function (row, col, value, reserved) {\n const index = row * this.size + col\n this.data[index] = value\n if (reserved) this.reservedBit[index] = true\n}\n\n/**\n * Returns bit value at specified location\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.get = function (row, col) {\n return this.data[row * this.size + col]\n}\n\n/**\n * Applies xor operator at specified location\n * (used during masking process)\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n */\nBitMatrix.prototype.xor = function (row, col, value) {\n this.data[row * this.size + col] ^= value\n}\n\n/**\n * Check if bit at specified location is reserved\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.isReserved = function (row, col) {\n return this.reservedBit[row * this.size + col]\n}\n\nmodule.exports = BitMatrix\n","/**\n * Alignment pattern are fixed reference pattern in defined positions\n * in a matrix symbology, which enables the decode software to re-synchronise\n * the coordinate mapping of the image modules in the event of moderate amounts\n * of distortion of the image.\n *\n * Alignment patterns are present only in QR Code symbols of version 2 or larger\n * and their number depends on the symbol version.\n */\n\nconst getSymbolSize = require('./utils').getSymbolSize\n\n/**\n * Calculate the row/column coordinates of the center module of each alignment pattern\n * for the specified QR Code version.\n *\n * The alignment patterns are positioned symmetrically on either side of the diagonal\n * running from the top left corner of the symbol to the bottom right corner.\n *\n * Since positions are simmetrical only half of the coordinates are returned.\n * Each item of the array will represent in turn the x and y coordinate.\n * @see {@link getPositions}\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinate\n */\nexports.getRowColCoords = function getRowColCoords (version) {\n if (version === 1) return []\n\n const posCount = Math.floor(version / 7) + 2\n const size = getSymbolSize(version)\n const intervals = size === 145 ? 26 : Math.ceil((size - 13) / (2 * posCount - 2)) * 2\n const positions = [size - 7] // Last coord is always (size - 7)\n\n for (let i = 1; i < posCount - 1; i++) {\n positions[i] = positions[i - 1] - intervals\n }\n\n positions.push(6) // First coord is always 6\n\n return positions.reverse()\n}\n\n/**\n * Returns an array containing the positions of each alignment pattern.\n * Each array's element represent the center point of the pattern as (x, y) coordinates\n *\n * Coordinates are calculated expanding the row/column coordinates returned by {@link getRowColCoords}\n * and filtering out the items that overlaps with finder pattern\n *\n * @example\n * For a Version 7 symbol {@link getRowColCoords} returns values 6, 22 and 38.\n * The alignment patterns, therefore, are to be centered on (row, column)\n * positions (6,22), (22,6), (22,22), (22,38), (38,22), (38,38).\n * Note that the coordinates (6,6), (6,38), (38,6) are occupied by finder patterns\n * and are not therefore used for alignment patterns.\n *\n * let pos = getPositions(7)\n * // [[6,22], [22,6], [22,22], [22,38], [38,22], [38,38]]\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n const coords = []\n const pos = exports.getRowColCoords(version)\n const posLength = pos.length\n\n for (let i = 0; i < posLength; i++) {\n for (let j = 0; j < posLength; j++) {\n // Skip if position is occupied by finder patterns\n if ((i === 0 && j === 0) || // top-left\n (i === 0 && j === posLength - 1) || // bottom-left\n (i === posLength - 1 && j === 0)) { // top-right\n continue\n }\n\n coords.push([pos[i], pos[j]])\n }\n }\n\n return coords\n}\n","const getSymbolSize = require('./utils').getSymbolSize\nconst FINDER_PATTERN_SIZE = 7\n\n/**\n * Returns an array containing the positions of each finder pattern.\n * Each array's element represent the top-left point of the pattern as (x, y) coordinates\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n const size = getSymbolSize(version)\n\n return [\n // top-left\n [0, 0],\n // top-right\n [size - FINDER_PATTERN_SIZE, 0],\n // bottom-left\n [0, size - FINDER_PATTERN_SIZE]\n ]\n}\n","/**\n * Data mask pattern reference\n * @type {Object}\n */\nexports.Patterns = {\n PATTERN000: 0,\n PATTERN001: 1,\n PATTERN010: 2,\n PATTERN011: 3,\n PATTERN100: 4,\n PATTERN101: 5,\n PATTERN110: 6,\n PATTERN111: 7\n}\n\n/**\n * Weighted penalty scores for the undesirable features\n * @type {Object}\n */\nconst PenaltyScores = {\n N1: 3,\n N2: 3,\n N3: 40,\n N4: 10\n}\n\n/**\n * Check if mask pattern value is valid\n *\n * @param {Number} mask Mask pattern\n * @return {Boolean} true if valid, false otherwise\n */\nexports.isValid = function isValid (mask) {\n return mask != null && mask !== '' && !isNaN(mask) && mask >= 0 && mask <= 7\n}\n\n/**\n * Returns mask pattern from a value.\n * If value is not valid, returns undefined\n *\n * @param {Number|String} value Mask pattern value\n * @return {Number} Valid mask pattern or undefined\n */\nexports.from = function from (value) {\n return exports.isValid(value) ? parseInt(value, 10) : undefined\n}\n\n/**\n* Find adjacent modules in row/column with the same color\n* and assign a penalty value.\n*\n* Points: N1 + i\n* i is the amount by which the number of adjacent modules of the same color exceeds 5\n*/\nexports.getPenaltyN1 = function getPenaltyN1 (data) {\n const size = data.size\n let points = 0\n let sameCountCol = 0\n let sameCountRow = 0\n let lastCol = null\n let lastRow = null\n\n for (let row = 0; row < size; row++) {\n sameCountCol = sameCountRow = 0\n lastCol = lastRow = null\n\n for (let col = 0; col < size; col++) {\n let module = data.get(row, col)\n if (module === lastCol) {\n sameCountCol++\n } else {\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n lastCol = module\n sameCountCol = 1\n }\n\n module = data.get(col, row)\n if (module === lastRow) {\n sameCountRow++\n } else {\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n lastRow = module\n sameCountRow = 1\n }\n }\n\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n }\n\n return points\n}\n\n/**\n * Find 2x2 blocks with the same color and assign a penalty value\n *\n * Points: N2 * (m - 1) * (n - 1)\n */\nexports.getPenaltyN2 = function getPenaltyN2 (data) {\n const size = data.size\n let points = 0\n\n for (let row = 0; row < size - 1; row++) {\n for (let col = 0; col < size - 1; col++) {\n const last = data.get(row, col) +\n data.get(row, col + 1) +\n data.get(row + 1, col) +\n data.get(row + 1, col + 1)\n\n if (last === 4 || last === 0) points++\n }\n }\n\n return points * PenaltyScores.N2\n}\n\n/**\n * Find 1:1:3:1:1 ratio (dark:light:dark:light:dark) pattern in row/column,\n * preceded or followed by light area 4 modules wide\n *\n * Points: N3 * number of pattern found\n */\nexports.getPenaltyN3 = function getPenaltyN3 (data) {\n const size = data.size\n let points = 0\n let bitsCol = 0\n let bitsRow = 0\n\n for (let row = 0; row < size; row++) {\n bitsCol = bitsRow = 0\n for (let col = 0; col < size; col++) {\n bitsCol = ((bitsCol << 1) & 0x7FF) | data.get(row, col)\n if (col >= 10 && (bitsCol === 0x5D0 || bitsCol === 0x05D)) points++\n\n bitsRow = ((bitsRow << 1) & 0x7FF) | data.get(col, row)\n if (col >= 10 && (bitsRow === 0x5D0 || bitsRow === 0x05D)) points++\n }\n }\n\n return points * PenaltyScores.N3\n}\n\n/**\n * Calculate proportion of dark modules in entire symbol\n *\n * Points: N4 * k\n *\n * k is the rating of the deviation of the proportion of dark modules\n * in the symbol from 50% in steps of 5%\n */\nexports.getPenaltyN4 = function getPenaltyN4 (data) {\n let darkCount = 0\n const modulesCount = data.data.length\n\n for (let i = 0; i < modulesCount; i++) darkCount += data.data[i]\n\n const k = Math.abs(Math.ceil((darkCount * 100 / modulesCount) / 5) - 10)\n\n return k * PenaltyScores.N4\n}\n\n/**\n * Return mask value at given position\n *\n * @param {Number} maskPattern Pattern reference value\n * @param {Number} i Row\n * @param {Number} j Column\n * @return {Boolean} Mask value\n */\nfunction getMaskAt (maskPattern, i, j) {\n switch (maskPattern) {\n case exports.Patterns.PATTERN000: return (i + j) % 2 === 0\n case exports.Patterns.PATTERN001: return i % 2 === 0\n case exports.Patterns.PATTERN010: return j % 3 === 0\n case exports.Patterns.PATTERN011: return (i + j) % 3 === 0\n case exports.Patterns.PATTERN100: return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 === 0\n case exports.Patterns.PATTERN101: return (i * j) % 2 + (i * j) % 3 === 0\n case exports.Patterns.PATTERN110: return ((i * j) % 2 + (i * j) % 3) % 2 === 0\n case exports.Patterns.PATTERN111: return ((i * j) % 3 + (i + j) % 2) % 2 === 0\n\n default: throw new Error('bad maskPattern:' + maskPattern)\n }\n}\n\n/**\n * Apply a mask pattern to a BitMatrix\n *\n * @param {Number} pattern Pattern reference number\n * @param {BitMatrix} data BitMatrix data\n */\nexports.applyMask = function applyMask (pattern, data) {\n const size = data.size\n\n for (let col = 0; col < size; col++) {\n for (let row = 0; row < size; row++) {\n if (data.isReserved(row, col)) continue\n data.xor(row, col, getMaskAt(pattern, row, col))\n }\n }\n}\n\n/**\n * Returns the best mask pattern for data\n *\n * @param {BitMatrix} data\n * @return {Number} Mask pattern reference number\n */\nexports.getBestMask = function getBestMask (data, setupFormatFunc) {\n const numPatterns = Object.keys(exports.Patterns).length\n let bestPattern = 0\n let lowerPenalty = Infinity\n\n for (let p = 0; p < numPatterns; p++) {\n setupFormatFunc(p)\n exports.applyMask(p, data)\n\n // Calculate penalty\n const penalty =\n exports.getPenaltyN1(data) +\n exports.getPenaltyN2(data) +\n exports.getPenaltyN3(data) +\n exports.getPenaltyN4(data)\n\n // Undo previously applied mask\n exports.applyMask(p, data)\n\n if (penalty < lowerPenalty) {\n lowerPenalty = penalty\n bestPattern = p\n }\n }\n\n return bestPattern\n}\n","const Polynomial = require('./polynomial')\n\nfunction ReedSolomonEncoder (degree) {\n this.genPoly = undefined\n this.degree = degree\n\n if (this.degree) this.initialize(this.degree)\n}\n\n/**\n * Initialize the encoder.\n * The input param should correspond to the number of error correction codewords.\n *\n * @param {Number} degree\n */\nReedSolomonEncoder.prototype.initialize = function initialize (degree) {\n // create an irreducible generator polynomial\n this.degree = degree\n this.genPoly = Polynomial.generateECPolynomial(this.degree)\n}\n\n/**\n * Encodes a chunk of data\n *\n * @param {Uint8Array} data Buffer containing input data\n * @return {Uint8Array} Buffer containing encoded data\n */\nReedSolomonEncoder.prototype.encode = function encode (data) {\n if (!this.genPoly) {\n throw new Error('Encoder not initialized')\n }\n\n // Calculate EC for this data block\n // extends data size to data+genPoly size\n const paddedData = new Uint8Array(data.length + this.degree)\n paddedData.set(data)\n\n // The error correction codewords are the remainder after dividing the data codewords\n // by a generator polynomial\n const remainder = Polynomial.mod(paddedData, this.genPoly)\n\n // return EC data blocks (last n byte, where n is the degree of genPoly)\n // If coefficients number in remainder are less than genPoly degree,\n // pad with 0s to the left to reach the needed number of coefficients\n const start = this.degree - remainder.length\n if (start > 0) {\n const buff = new Uint8Array(this.degree)\n buff.set(remainder, start)\n\n return buff\n }\n\n return remainder\n}\n\nmodule.exports = ReedSolomonEncoder\n","const GF = require('./galois-field')\n\n/**\n * Multiplies two polynomials inside Galois Field\n *\n * @param {Uint8Array} p1 Polynomial\n * @param {Uint8Array} p2 Polynomial\n * @return {Uint8Array} Product of p1 and p2\n */\nexports.mul = function mul (p1, p2) {\n const coeff = new Uint8Array(p1.length + p2.length - 1)\n\n for (let i = 0; i < p1.length; i++) {\n for (let j = 0; j < p2.length; j++) {\n coeff[i + j] ^= GF.mul(p1[i], p2[j])\n }\n }\n\n return coeff\n}\n\n/**\n * Calculate the remainder of polynomials division\n *\n * @param {Uint8Array} divident Polynomial\n * @param {Uint8Array} divisor Polynomial\n * @return {Uint8Array} Remainder\n */\nexports.mod = function mod (divident, divisor) {\n let result = new Uint8Array(divident)\n\n while ((result.length - divisor.length) >= 0) {\n const coeff = result[0]\n\n for (let i = 0; i < divisor.length; i++) {\n result[i] ^= GF.mul(divisor[i], coeff)\n }\n\n // remove all zeros from buffer head\n let offset = 0\n while (offset < result.length && result[offset] === 0) offset++\n result = result.slice(offset)\n }\n\n return result\n}\n\n/**\n * Generate an irreducible generator polynomial of specified degree\n * (used by Reed-Solomon encoder)\n *\n * @param {Number} degree Degree of the generator polynomial\n * @return {Uint8Array} Buffer containing polynomial coefficients\n */\nexports.generateECPolynomial = function generateECPolynomial (degree) {\n let poly = new Uint8Array([1])\n for (let i = 0; i < degree; i++) {\n poly = exports.mul(poly, new Uint8Array([1, GF.exp(i)]))\n }\n\n return poly\n}\n","const EXP_TABLE = new Uint8Array(512)\nconst LOG_TABLE = new Uint8Array(256)\n/**\n * Precompute the log and anti-log tables for faster computation later\n *\n * For each possible value in the galois field 2^8, we will pre-compute\n * the logarithm and anti-logarithm (exponential) of this value\n *\n * ref {@link https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders#Introduction_to_mathematical_fields}\n */\n;(function initTables () {\n let x = 1\n for (let i = 0; i < 255; i++) {\n EXP_TABLE[i] = x\n LOG_TABLE[x] = i\n\n x <<= 1 // multiply by 2\n\n // The QR code specification says to use byte-wise modulo 100011101 arithmetic.\n // This means that when a number is 256 or larger, it should be XORed with 0x11D.\n if (x & 0x100) { // similar to x >= 256, but a lot faster (because 0x100 == 256)\n x ^= 0x11D\n }\n }\n\n // Optimization: double the size of the anti-log table so that we don't need to mod 255 to\n // stay inside the bounds (because we will mainly use this table for the multiplication of\n // two GF numbers, no more).\n // @see {@link mul}\n for (let i = 255; i < 512; i++) {\n EXP_TABLE[i] = EXP_TABLE[i - 255]\n }\n}())\n\n/**\n * Returns log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.log = function log (n) {\n if (n < 1) throw new Error('log(' + n + ')')\n return LOG_TABLE[n]\n}\n\n/**\n * Returns anti-log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.exp = function exp (n) {\n return EXP_TABLE[n]\n}\n\n/**\n * Multiplies two number inside Galois Field\n *\n * @param {Number} x\n * @param {Number} y\n * @return {Number}\n */\nexports.mul = function mul (x, y) {\n if (x === 0 || y === 0) return 0\n\n // should be EXP_TABLE[(LOG_TABLE[x] + LOG_TABLE[y]) % 255] if EXP_TABLE wasn't oversized\n // @see {@link initTables}\n return EXP_TABLE[LOG_TABLE[x] + LOG_TABLE[y]]\n}\n","const Utils = require('./utils')\nconst ECCode = require('./error-correction-code')\nconst ECLevel = require('./error-correction-level')\nconst Mode = require('./mode')\nconst VersionCheck = require('./version-check')\n\n// Generator polynomial used to encode version information\nconst G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0)\nconst G18_BCH = Utils.getBCHDigit(G18)\n\nfunction getBestVersionForDataLength (mode, length, errorCorrectionLevel) {\n for (let currentVersion = 1; currentVersion <= 40; currentVersion++) {\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, mode)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\nfunction getReservedBitsCount (mode, version) {\n // Character count indicator + mode indicator bits\n return Mode.getCharCountIndicator(mode, version) + 4\n}\n\nfunction getTotalBitsFromDataArray (segments, version) {\n let totalBits = 0\n\n segments.forEach(function (data) {\n const reservedBits = getReservedBitsCount(data.mode, version)\n totalBits += reservedBits + data.getBitsLength()\n })\n\n return totalBits\n}\n\nfunction getBestVersionForMixedData (segments, errorCorrectionLevel) {\n for (let currentVersion = 1; currentVersion <= 40; currentVersion++) {\n const length = getTotalBitsFromDataArray(segments, currentVersion)\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, Mode.MIXED)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\n/**\n * Returns version number from a value.\n * If value is not a valid version, returns defaultValue\n *\n * @param {Number|String} value QR Code version\n * @param {Number} defaultValue Fallback value\n * @return {Number} QR Code version number\n */\nexports.from = function from (value, defaultValue) {\n if (VersionCheck.isValid(value)) {\n return parseInt(value, 10)\n }\n\n return defaultValue\n}\n\n/**\n * Returns how much data can be stored with the specified QR code version\n * and error correction level\n *\n * @param {Number} version QR Code version (1-40)\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} Quantity of storable data\n */\nexports.getCapacity = function getCapacity (version, errorCorrectionLevel, mode) {\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid QR Code version')\n }\n\n // Use Byte mode as default\n if (typeof mode === 'undefined') mode = Mode.BYTE\n\n // Total codewords for this QR code version (Data + Error correction)\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n const dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n if (mode === Mode.MIXED) return dataTotalCodewordsBits\n\n const usableBits = dataTotalCodewordsBits - getReservedBitsCount(mode, version)\n\n // Return max number of storable codewords\n switch (mode) {\n case Mode.NUMERIC:\n return Math.floor((usableBits / 10) * 3)\n\n case Mode.ALPHANUMERIC:\n return Math.floor((usableBits / 11) * 2)\n\n case Mode.KANJI:\n return Math.floor(usableBits / 13)\n\n case Mode.BYTE:\n default:\n return Math.floor(usableBits / 8)\n }\n}\n\n/**\n * Returns the minimum version needed to contain the amount of data\n *\n * @param {Segment} data Segment of data\n * @param {Number} [errorCorrectionLevel=H] Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} QR Code version\n */\nexports.getBestVersionForData = function getBestVersionForData (data, errorCorrectionLevel) {\n let seg\n\n const ecl = ECLevel.from(errorCorrectionLevel, ECLevel.M)\n\n if (Array.isArray(data)) {\n if (data.length > 1) {\n return getBestVersionForMixedData(data, ecl)\n }\n\n if (data.length === 0) {\n return 1\n }\n\n seg = data[0]\n } else {\n seg = data\n }\n\n return getBestVersionForDataLength(seg.mode, seg.getLength(), ecl)\n}\n\n/**\n * Returns version information with relative error correction bits\n *\n * The version information is included in QR Code symbols of version 7 or larger.\n * It consists of an 18-bit sequence containing 6 data bits,\n * with 12 error correction bits calculated using the (18, 6) Golay code.\n *\n * @param {Number} version QR Code version\n * @return {Number} Encoded version info bits\n */\nexports.getEncodedBits = function getEncodedBits (version) {\n if (!VersionCheck.isValid(version) || version < 7) {\n throw new Error('Invalid QR Code version')\n }\n\n let d = version << 12\n\n while (Utils.getBCHDigit(d) - G18_BCH >= 0) {\n d ^= (G18 << (Utils.getBCHDigit(d) - G18_BCH))\n }\n\n return (version << 12) | d\n}\n","const Utils = require('./utils')\n\nconst G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0)\nconst G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1)\nconst G15_BCH = Utils.getBCHDigit(G15)\n\n/**\n * Returns format information with relative error correction bits\n *\n * The format information is a 15-bit sequence containing 5 data bits,\n * with 10 error correction bits calculated using the (15, 5) BCH code.\n *\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Number} mask Mask pattern\n * @return {Number} Encoded format information bits\n */\nexports.getEncodedBits = function getEncodedBits (errorCorrectionLevel, mask) {\n const data = ((errorCorrectionLevel.bit << 3) | mask)\n let d = data << 10\n\n while (Utils.getBCHDigit(d) - G15_BCH >= 0) {\n d ^= (G15 << (Utils.getBCHDigit(d) - G15_BCH))\n }\n\n // xor final data with mask pattern in order to ensure that\n // no combination of Error Correction Level and data mask pattern\n // will result in an all-zero data string\n return ((data << 10) | d) ^ G15_MASK\n}\n","const Mode = require('./mode')\nconst NumericData = require('./numeric-data')\nconst AlphanumericData = require('./alphanumeric-data')\nconst ByteData = require('./byte-data')\nconst KanjiData = require('./kanji-data')\nconst Regex = require('./regex')\nconst Utils = require('./utils')\nconst dijkstra = require('dijkstrajs')\n\n/**\n * Returns UTF8 byte length\n *\n * @param {String} str Input string\n * @return {Number} Number of byte\n */\nfunction getStringByteLength (str) {\n return unescape(encodeURIComponent(str)).length\n}\n\n/**\n * Get a list of segments of the specified mode\n * from a string\n *\n * @param {Mode} mode Segment mode\n * @param {String} str String to process\n * @return {Array} Array of object with segments data\n */\nfunction getSegments (regex, mode, str) {\n const segments = []\n let result\n\n while ((result = regex.exec(str)) !== null) {\n segments.push({\n data: result[0],\n index: result.index,\n mode: mode,\n length: result[0].length\n })\n }\n\n return segments\n}\n\n/**\n * Extracts a series of segments with the appropriate\n * modes from a string\n *\n * @param {String} dataStr Input string\n * @return {Array} Array of object with segments data\n */\nfunction getSegmentsFromString (dataStr) {\n const numSegs = getSegments(Regex.NUMERIC, Mode.NUMERIC, dataStr)\n const alphaNumSegs = getSegments(Regex.ALPHANUMERIC, Mode.ALPHANUMERIC, dataStr)\n let byteSegs\n let kanjiSegs\n\n if (Utils.isKanjiModeEnabled()) {\n byteSegs = getSegments(Regex.BYTE, Mode.BYTE, dataStr)\n kanjiSegs = getSegments(Regex.KANJI, Mode.KANJI, dataStr)\n } else {\n byteSegs = getSegments(Regex.BYTE_KANJI, Mode.BYTE, dataStr)\n kanjiSegs = []\n }\n\n const segs = numSegs.concat(alphaNumSegs, byteSegs, kanjiSegs)\n\n return segs\n .sort(function (s1, s2) {\n return s1.index - s2.index\n })\n .map(function (obj) {\n return {\n data: obj.data,\n mode: obj.mode,\n length: obj.length\n }\n })\n}\n\n/**\n * Returns how many bits are needed to encode a string of\n * specified length with the specified mode\n *\n * @param {Number} length String length\n * @param {Mode} mode Segment mode\n * @return {Number} Bit length\n */\nfunction getSegmentBitsLength (length, mode) {\n switch (mode) {\n case Mode.NUMERIC:\n return NumericData.getBitsLength(length)\n case Mode.ALPHANUMERIC:\n return AlphanumericData.getBitsLength(length)\n case Mode.KANJI:\n return KanjiData.getBitsLength(length)\n case Mode.BYTE:\n return ByteData.getBitsLength(length)\n }\n}\n\n/**\n * Merges adjacent segments which have the same mode\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction mergeSegments (segs) {\n return segs.reduce(function (acc, curr) {\n const prevSeg = acc.length - 1 >= 0 ? acc[acc.length - 1] : null\n if (prevSeg && prevSeg.mode === curr.mode) {\n acc[acc.length - 1].data += curr.data\n return acc\n }\n\n acc.push(curr)\n return acc\n }, [])\n}\n\n/**\n * Generates a list of all possible nodes combination which\n * will be used to build a segments graph.\n *\n * Nodes are divided by groups. Each group will contain a list of all the modes\n * in which is possible to encode the given text.\n *\n * For example the text '12345' can be encoded as Numeric, Alphanumeric or Byte.\n * The group for '12345' will contain then 3 objects, one for each\n * possible encoding mode.\n *\n * Each node represents a possible segment.\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction buildNodes (segs) {\n const nodes = []\n for (let i = 0; i < segs.length; i++) {\n const seg = segs[i]\n\n switch (seg.mode) {\n case Mode.NUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.ALPHANUMERIC, length: seg.length },\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.ALPHANUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.KANJI:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n break\n case Mode.BYTE:\n nodes.push([\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n }\n }\n\n return nodes\n}\n\n/**\n * Builds a graph from a list of nodes.\n * All segments in each node group will be connected with all the segments of\n * the next group and so on.\n *\n * At each connection will be assigned a weight depending on the\n * segment's byte length.\n *\n * @param {Array} nodes Array of object with segments data\n * @param {Number} version QR Code version\n * @return {Object} Graph of all possible segments\n */\nfunction buildGraph (nodes, version) {\n const table = {}\n const graph = { start: {} }\n let prevNodeIds = ['start']\n\n for (let i = 0; i < nodes.length; i++) {\n const nodeGroup = nodes[i]\n const currentNodeIds = []\n\n for (let j = 0; j < nodeGroup.length; j++) {\n const node = nodeGroup[j]\n const key = '' + i + j\n\n currentNodeIds.push(key)\n table[key] = { node: node, lastCount: 0 }\n graph[key] = {}\n\n for (let n = 0; n < prevNodeIds.length; n++) {\n const prevNodeId = prevNodeIds[n]\n\n if (table[prevNodeId] && table[prevNodeId].node.mode === node.mode) {\n graph[prevNodeId][key] =\n getSegmentBitsLength(table[prevNodeId].lastCount + node.length, node.mode) -\n getSegmentBitsLength(table[prevNodeId].lastCount, node.mode)\n\n table[prevNodeId].lastCount += node.length\n } else {\n if (table[prevNodeId]) table[prevNodeId].lastCount = node.length\n\n graph[prevNodeId][key] = getSegmentBitsLength(node.length, node.mode) +\n 4 + Mode.getCharCountIndicator(node.mode, version) // switch cost\n }\n }\n }\n\n prevNodeIds = currentNodeIds\n }\n\n for (let n = 0; n < prevNodeIds.length; n++) {\n graph[prevNodeIds[n]].end = 0\n }\n\n return { map: graph, table: table }\n}\n\n/**\n * Builds a segment from a specified data and mode.\n * If a mode is not specified, the more suitable will be used.\n *\n * @param {String} data Input data\n * @param {Mode | String} modesHint Data mode\n * @return {Segment} Segment\n */\nfunction buildSingleSegment (data, modesHint) {\n let mode\n const bestMode = Mode.getBestModeForData(data)\n\n mode = Mode.from(modesHint, bestMode)\n\n // Make sure data can be encoded\n if (mode !== Mode.BYTE && mode.bit < bestMode.bit) {\n throw new Error('\"' + data + '\"' +\n ' cannot be encoded with mode ' + Mode.toString(mode) +\n '.\\n Suggested mode is: ' + Mode.toString(bestMode))\n }\n\n // Use Mode.BYTE if Kanji support is disabled\n if (mode === Mode.KANJI && !Utils.isKanjiModeEnabled()) {\n mode = Mode.BYTE\n }\n\n switch (mode) {\n case Mode.NUMERIC:\n return new NumericData(data)\n\n case Mode.ALPHANUMERIC:\n return new AlphanumericData(data)\n\n case Mode.KANJI:\n return new KanjiData(data)\n\n case Mode.BYTE:\n return new ByteData(data)\n }\n}\n\n/**\n * Builds a list of segments from an array.\n * Array can contain Strings or Objects with segment's info.\n *\n * For each item which is a string, will be generated a segment with the given\n * string and the more appropriate encoding mode.\n *\n * For each item which is an object, will be generated a segment with the given\n * data and mode.\n * Objects must contain at least the property \"data\".\n * If property \"mode\" is not present, the more suitable mode will be used.\n *\n * @param {Array} array Array of objects with segments data\n * @return {Array} Array of Segments\n */\nexports.fromArray = function fromArray (array) {\n return array.reduce(function (acc, seg) {\n if (typeof seg === 'string') {\n acc.push(buildSingleSegment(seg, null))\n } else if (seg.data) {\n acc.push(buildSingleSegment(seg.data, seg.mode))\n }\n\n return acc\n }, [])\n}\n\n/**\n * Builds an optimized sequence of segments from a string,\n * which will produce the shortest possible bitstream.\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @return {Array} Array of segments\n */\nexports.fromString = function fromString (data, version) {\n const segs = getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n\n const nodes = buildNodes(segs)\n const graph = buildGraph(nodes, version)\n const path = dijkstra.find_path(graph.map, 'start', 'end')\n\n const optimizedSegs = []\n for (let i = 1; i < path.length - 1; i++) {\n optimizedSegs.push(graph.table[path[i]].node)\n }\n\n return exports.fromArray(mergeSegments(optimizedSegs))\n}\n\n/**\n * Splits a string in various segments with the modes which\n * best represent their content.\n * The produced segments are far from being optimized.\n * The output of this function is only used to estimate a QR Code version\n * which may contain the data.\n *\n * @param {string} data Input string\n * @return {Array} Array of segments\n */\nexports.rawSplit = function rawSplit (data) {\n return exports.fromArray(\n getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n )\n}\n","const Mode = require('./mode')\n\nfunction NumericData (data) {\n this.mode = Mode.NUMERIC\n this.data = data.toString()\n}\n\nNumericData.getBitsLength = function getBitsLength (length) {\n return 10 * Math.floor(length / 3) + ((length % 3) ? ((length % 3) * 3 + 1) : 0)\n}\n\nNumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nNumericData.prototype.getBitsLength = function getBitsLength () {\n return NumericData.getBitsLength(this.data.length)\n}\n\nNumericData.prototype.write = function write (bitBuffer) {\n let i, group, value\n\n // The input data string is divided into groups of three digits,\n // and each group is converted to its 10-bit binary equivalent.\n for (i = 0; i + 3 <= this.data.length; i += 3) {\n group = this.data.substr(i, 3)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, 10)\n }\n\n // If the number of input digits is not an exact multiple of three,\n // the final one or two digits are converted to 4 or 7 bits respectively.\n const remainingNum = this.data.length - i\n if (remainingNum > 0) {\n group = this.data.substr(i)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, remainingNum * 3 + 1)\n }\n}\n\nmodule.exports = NumericData\n","const Mode = require('./mode')\n\n/**\n * Array of characters available in alphanumeric mode\n *\n * As per QR Code specification, to each character\n * is assigned a value from 0 to 44 which in this case coincides\n * with the array index\n *\n * @type {Array}\n */\nconst ALPHA_NUM_CHARS = [\n '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',\n ' ', '$', '%', '*', '+', '-', '.', '/', ':'\n]\n\nfunction AlphanumericData (data) {\n this.mode = Mode.ALPHANUMERIC\n this.data = data\n}\n\nAlphanumericData.getBitsLength = function getBitsLength (length) {\n return 11 * Math.floor(length / 2) + 6 * (length % 2)\n}\n\nAlphanumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nAlphanumericData.prototype.getBitsLength = function getBitsLength () {\n return AlphanumericData.getBitsLength(this.data.length)\n}\n\nAlphanumericData.prototype.write = function write (bitBuffer) {\n let i\n\n // Input data characters are divided into groups of two characters\n // and encoded as 11-bit binary codes.\n for (i = 0; i + 2 <= this.data.length; i += 2) {\n // The character value of the first character is multiplied by 45\n let value = ALPHA_NUM_CHARS.indexOf(this.data[i]) * 45\n\n // The character value of the second digit is added to the product\n value += ALPHA_NUM_CHARS.indexOf(this.data[i + 1])\n\n // The sum is then stored as 11-bit binary number\n bitBuffer.put(value, 11)\n }\n\n // If the number of input data characters is not a multiple of two,\n // the character value of the final character is encoded as a 6-bit binary number.\n if (this.data.length % 2) {\n bitBuffer.put(ALPHA_NUM_CHARS.indexOf(this.data[i]), 6)\n }\n}\n\nmodule.exports = AlphanumericData\n","const encodeUtf8 = require('encode-utf8')\nconst Mode = require('./mode')\n\nfunction ByteData (data) {\n this.mode = Mode.BYTE\n this.data = new Uint8Array(encodeUtf8(data))\n}\n\nByteData.getBitsLength = function getBitsLength (length) {\n return length * 8\n}\n\nByteData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nByteData.prototype.getBitsLength = function getBitsLength () {\n return ByteData.getBitsLength(this.data.length)\n}\n\nByteData.prototype.write = function (bitBuffer) {\n for (let i = 0, l = this.data.length; i < l; i++) {\n bitBuffer.put(this.data[i], 8)\n }\n}\n\nmodule.exports = ByteData\n","'use strict'\n\nmodule.exports = function encodeUtf8 (input) {\n var result = []\n var size = input.length\n\n for (var index = 0; index < size; index++) {\n var point = input.charCodeAt(index)\n\n if (point >= 0xD800 && point <= 0xDBFF && size > index + 1) {\n var second = input.charCodeAt(index + 1)\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n point = (point - 0xD800) * 0x400 + second - 0xDC00 + 0x10000\n index += 1\n }\n }\n\n // US-ASCII\n if (point < 0x80) {\n result.push(point)\n continue\n }\n\n // 2-byte UTF-8\n if (point < 0x800) {\n result.push((point >> 6) | 192)\n result.push((point & 63) | 128)\n continue\n }\n\n // 3-byte UTF-8\n if (point < 0xD800 || (point >= 0xE000 && point < 0x10000)) {\n result.push((point >> 12) | 224)\n result.push(((point >> 6) & 63) | 128)\n result.push((point & 63) | 128)\n continue\n }\n\n // 4-byte UTF-8\n if (point >= 0x10000 && point <= 0x10FFFF) {\n result.push((point >> 18) | 240)\n result.push(((point >> 12) & 63) | 128)\n result.push(((point >> 6) & 63) | 128)\n result.push((point & 63) | 128)\n continue\n }\n\n // Invalid character\n result.push(0xEF, 0xBF, 0xBD)\n }\n\n return new Uint8Array(result).buffer\n}\n","const Mode = require('./mode')\nconst Utils = require('./utils')\n\nfunction KanjiData (data) {\n this.mode = Mode.KANJI\n this.data = data\n}\n\nKanjiData.getBitsLength = function getBitsLength (length) {\n return length * 13\n}\n\nKanjiData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nKanjiData.prototype.getBitsLength = function getBitsLength () {\n return KanjiData.getBitsLength(this.data.length)\n}\n\nKanjiData.prototype.write = function (bitBuffer) {\n let i\n\n // In the Shift JIS system, Kanji characters are represented by a two byte combination.\n // These byte values are shifted from the JIS X 0208 values.\n // JIS X 0208 gives details of the shift coded representation.\n for (i = 0; i < this.data.length; i++) {\n let value = Utils.toSJIS(this.data[i])\n\n // For characters with Shift JIS values from 0x8140 to 0x9FFC:\n if (value >= 0x8140 && value <= 0x9FFC) {\n // Subtract 0x8140 from Shift JIS value\n value -= 0x8140\n\n // For characters with Shift JIS values from 0xE040 to 0xEBBF\n } else if (value >= 0xE040 && value <= 0xEBBF) {\n // Subtract 0xC140 from Shift JIS value\n value -= 0xC140\n } else {\n throw new Error(\n 'Invalid SJIS character: ' + this.data[i] + '\\n' +\n 'Make sure your charset is UTF-8')\n }\n\n // Multiply most significant byte of result by 0xC0\n // and add least significant byte to product\n value = (((value >>> 8) & 0xff) * 0xC0) + (value & 0xff)\n\n // Convert result to a 13-bit binary string\n bitBuffer.put(value, 13)\n }\n}\n\nmodule.exports = KanjiData\n","'use strict';\n\n/******************************************************************************\n * Created 2008-08-19.\n *\n * Dijkstra path-finding functions. Adapted from the Dijkstar Python project.\n *\n * Copyright (C) 2008\n * Wyatt Baldwin \n * All rights reserved\n *\n * Licensed under the MIT license.\n *\n * http://www.opensource.org/licenses/mit-license.php\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *****************************************************************************/\nvar dijkstra = {\n single_source_shortest_paths: function(graph, s, d) {\n // Predecessor map for each node that has been encountered.\n // node ID => predecessor node ID\n var predecessors = {};\n\n // Costs of shortest paths from s to all nodes encountered.\n // node ID => cost\n var costs = {};\n costs[s] = 0;\n\n // Costs of shortest paths from s to all nodes encountered; differs from\n // `costs` in that it provides easy access to the node that currently has\n // the known shortest path from s.\n // XXX: Do we actually need both `costs` and `open`?\n var open = dijkstra.PriorityQueue.make();\n open.push(s, 0);\n\n var closest,\n u, v,\n cost_of_s_to_u,\n adjacent_nodes,\n cost_of_e,\n cost_of_s_to_u_plus_cost_of_e,\n cost_of_s_to_v,\n first_visit;\n while (!open.empty()) {\n // In the nodes remaining in graph that have a known cost from s,\n // find the node, u, that currently has the shortest path from s.\n closest = open.pop();\n u = closest.value;\n cost_of_s_to_u = closest.cost;\n\n // Get nodes adjacent to u...\n adjacent_nodes = graph[u] || {};\n\n // ...and explore the edges that connect u to those nodes, updating\n // the cost of the shortest paths to any or all of those nodes as\n // necessary. v is the node across the current edge from u.\n for (v in adjacent_nodes) {\n if (adjacent_nodes.hasOwnProperty(v)) {\n // Get the cost of the edge running from u to v.\n cost_of_e = adjacent_nodes[v];\n\n // Cost of s to u plus the cost of u to v across e--this is *a*\n // cost from s to v that may or may not be less than the current\n // known cost to v.\n cost_of_s_to_u_plus_cost_of_e = cost_of_s_to_u + cost_of_e;\n\n // If we haven't visited v yet OR if the current known cost from s to\n // v is greater than the new cost we just found (cost of s to u plus\n // cost of u to v across e), update v's cost in the cost list and\n // update v's predecessor in the predecessor list (it's now u).\n cost_of_s_to_v = costs[v];\n first_visit = (typeof costs[v] === 'undefined');\n if (first_visit || cost_of_s_to_v > cost_of_s_to_u_plus_cost_of_e) {\n costs[v] = cost_of_s_to_u_plus_cost_of_e;\n open.push(v, cost_of_s_to_u_plus_cost_of_e);\n predecessors[v] = u;\n }\n }\n }\n }\n\n if (typeof d !== 'undefined' && typeof costs[d] === 'undefined') {\n var msg = ['Could not find a path from ', s, ' to ', d, '.'].join('');\n throw new Error(msg);\n }\n\n return predecessors;\n },\n\n extract_shortest_path_from_predecessor_list: function(predecessors, d) {\n var nodes = [];\n var u = d;\n var predecessor;\n while (u) {\n nodes.push(u);\n predecessor = predecessors[u];\n u = predecessors[u];\n }\n nodes.reverse();\n return nodes;\n },\n\n find_path: function(graph, s, d) {\n var predecessors = dijkstra.single_source_shortest_paths(graph, s, d);\n return dijkstra.extract_shortest_path_from_predecessor_list(\n predecessors, d);\n },\n\n /**\n * A very naive priority queue implementation.\n */\n PriorityQueue: {\n make: function (opts) {\n var T = dijkstra.PriorityQueue,\n t = {},\n key;\n opts = opts || {};\n for (key in T) {\n if (T.hasOwnProperty(key)) {\n t[key] = T[key];\n }\n }\n t.queue = [];\n t.sorter = opts.sorter || T.default_sorter;\n return t;\n },\n\n default_sorter: function (a, b) {\n return a.cost - b.cost;\n },\n\n /**\n * Add a new item to the queue and ensure the highest priority element\n * is at the front of the queue.\n */\n push: function (value, cost) {\n var item = {value: value, cost: cost};\n this.queue.push(item);\n this.queue.sort(this.sorter);\n },\n\n /**\n * Return the highest priority element in the queue.\n */\n pop: function () {\n return this.queue.shift();\n },\n\n empty: function () {\n return this.queue.length === 0;\n }\n }\n};\n\n\n// node.js module exports\nif (typeof module !== 'undefined') {\n module.exports = dijkstra;\n}\n","const Utils = require('./utils')\n\nfunction clearCanvas (ctx, canvas, size) {\n ctx.clearRect(0, 0, canvas.width, canvas.height)\n\n if (!canvas.style) canvas.style = {}\n canvas.height = size\n canvas.width = size\n canvas.style.height = size + 'px'\n canvas.style.width = size + 'px'\n}\n\nfunction getCanvasElement () {\n try {\n return document.createElement('canvas')\n } catch (e) {\n throw new Error('You need to specify a canvas element')\n }\n}\n\nexports.render = function render (qrData, canvas, options) {\n let opts = options\n let canvasEl = canvas\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!canvas) {\n canvasEl = getCanvasElement()\n }\n\n opts = Utils.getOptions(opts)\n const size = Utils.getImageWidth(qrData.modules.size, opts)\n\n const ctx = canvasEl.getContext('2d')\n const image = ctx.createImageData(size, size)\n Utils.qrToImageData(image.data, qrData, opts)\n\n clearCanvas(ctx, canvasEl, size)\n ctx.putImageData(image, 0, 0)\n\n return canvasEl\n}\n\nexports.renderToDataURL = function renderToDataURL (qrData, canvas, options) {\n let opts = options\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!opts) opts = {}\n\n const canvasEl = exports.render(qrData, canvas, opts)\n\n const type = opts.type || 'image/png'\n const rendererOpts = opts.rendererOpts || {}\n\n return canvasEl.toDataURL(type, rendererOpts.quality)\n}\n","const Utils = require('./utils')\n\nfunction getColorAttrib (color, attrib) {\n const alpha = color.a / 255\n const str = attrib + '=\"' + color.hex + '\"'\n\n return alpha < 1\n ? str + ' ' + attrib + '-opacity=\"' + alpha.toFixed(2).slice(1) + '\"'\n : str\n}\n\nfunction svgCmd (cmd, x, y) {\n let str = cmd + x\n if (typeof y !== 'undefined') str += ' ' + y\n\n return str\n}\n\nfunction qrToPath (data, size, margin) {\n let path = ''\n let moveBy = 0\n let newRow = false\n let lineLength = 0\n\n for (let i = 0; i < data.length; i++) {\n const col = Math.floor(i % size)\n const row = Math.floor(i / size)\n\n if (!col && !newRow) newRow = true\n\n if (data[i]) {\n lineLength++\n\n if (!(i > 0 && col > 0 && data[i - 1])) {\n path += newRow\n ? svgCmd('M', col + margin, 0.5 + row + margin)\n : svgCmd('m', moveBy, 0)\n\n moveBy = 0\n newRow = false\n }\n\n if (!(col + 1 < size && data[i + 1])) {\n path += svgCmd('h', lineLength)\n lineLength = 0\n }\n } else {\n moveBy++\n }\n }\n\n return path\n}\n\nexports.render = function render (qrData, options, cb) {\n const opts = Utils.getOptions(options)\n const size = qrData.modules.size\n const data = qrData.modules.data\n const qrcodesize = size + opts.margin * 2\n\n const bg = !opts.color.light.a\n ? ''\n : ''\n\n const path =\n ''\n\n const viewBox = 'viewBox=\"' + '0 0 ' + qrcodesize + ' ' + qrcodesize + '\"'\n\n const width = !opts.width ? '' : 'width=\"' + opts.width + '\" height=\"' + opts.width + '\" '\n\n const svgTag = '' + bg + path + '\\n'\n\n if (typeof cb === 'function') {\n cb(null, svgTag)\n }\n\n return svgTag\n}\n","/**\r\n * A lightweight youtube embed. Still should feel the same to the user, just MUCH faster to initialize and paint.\r\n *\r\n * Thx to these as the inspiration\r\n * https://storage.googleapis.com/amp-vs-non-amp/youtube-lazy.html\r\n * https://autoplay-youtube-player.glitch.me/\r\n *\r\n * Once built it, I also found these:\r\n * https://github.com/ampproject/amphtml/blob/master/extensions/amp-youtube (👍👍)\r\n * https://github.com/Daugilas/lazyYT\r\n * https://github.com/vb/lazyframe\r\n */\r\nclass LiteYTEmbed extends HTMLElement {\r\n connectedCallback() {\r\n this.videoId = this.getAttribute('videoid');\r\n this.src = this.getAttribute('src');\r\n if (this.src) {\r\n const urlPaths = this.src.split('/');\r\n const getLast = urlPaths[urlPaths.length - 1];\r\n // https://www.youtube.com/watch?v=9wSBXkQSLUI or https://www.youtube.com/embed/QIy5Aw_VPK8\r\n this.videoId = getLast.replace('watch?v=', '');\r\n } else if (this.videoId) {\r\n this.videoId = this.getAttribute('videoid');\r\n } else {\r\n console.error('Attribute src or videoId');\r\n return;\r\n }\r\n let playBtnEl = this.querySelector('.lty-playbtn');\r\n // A label for the button takes priority over a [playlabel] attribute on the custom-element\r\n this.playLabel = (playBtnEl && playBtnEl.textContent.trim()) || this.getAttribute('playlabel') || 'Play';\r\n\r\n /**\r\n * Lo, the youtube placeholder image! (aka the thumbnail, poster image, etc)\r\n *\r\n * See https://github.com/paulirish/lite-youtube-embed/blob/master/youtube-thumbnail-urls.md\r\n *\r\n * TODO: Do the sddefault->hqdefault fallback\r\n * - When doing this, apply referrerpolicy (https://github.com/ampproject/amphtml/pull/3940)\r\n * TODO: Consider using webp if supported, falling back to jpg\r\n */\r\n if (!this.style.backgroundImage) {\r\n this.posterUrl = `https://i.ytimg.com/vi/${this.videoId}/hqdefault.jpg`;\r\n // Warm the connection for the poster image\r\n LiteYTEmbed.addPrefetch('preload', this.posterUrl, 'image');\r\n\r\n this.style.backgroundImage = `url(\"${this.posterUrl}\")`;\r\n }\r\n\r\n // Set up play button, and its visually hidden label\r\n if (!playBtnEl) {\r\n playBtnEl = document.createElement('button');\r\n playBtnEl.type = 'button';\r\n playBtnEl.classList.add('lty-playbtn');\r\n this.append(playBtnEl);\r\n }\r\n if (!playBtnEl.textContent) {\r\n const playBtnLabelEl = document.createElement('span');\r\n playBtnLabelEl.className = 'lyt-visually-hidden';\r\n playBtnLabelEl.textContent = this.playLabel;\r\n playBtnEl.append(playBtnLabelEl);\r\n }\r\n\r\n // On hover (or tap), warm up the TCP connections we're (likely) about to use.\r\n this.addEventListener('pointerover', LiteYTEmbed.warmConnections, { once: true });\r\n\r\n // Once the user clicks, add the real iframe and drop our play button\r\n // TODO: In the future we could be like amp-youtube and silently swap in the iframe during idle time\r\n // We'd want to only do this for in-viewport or near-viewport ones: https://github.com/ampproject/amphtml/pull/5003\r\n this.addEventListener('click', e => this.addIframe());\r\n }\r\n\r\n // // TODO: Support the the user changing the [videoid] attribute\r\n // attributeChangedCallback() {\r\n // }\r\n\r\n /**\r\n * Add a to the head\r\n */\r\n static addPrefetch(kind, url, as) {\r\n const linkEl = document.createElement('link');\r\n linkEl.rel = kind;\r\n linkEl.href = url;\r\n if (as) {\r\n linkEl.as = as;\r\n }\r\n document.head.append(linkEl);\r\n }\r\n\r\n /**\r\n * Begin pre-connecting to warm up the iframe load\r\n * Since the embed's network requests load within its iframe,\r\n * preload/prefetch'ing them outside the iframe will only cause double-downloads.\r\n * So, the best we can do is warm up a few connections to origins that are in the critical path.\r\n *\r\n * Maybe `` would work, but it's unsupported: http://crbug.com/593267\r\n * But TBH, I don't think it'll happen soon with Site Isolation and split caches adding serious complexity.\r\n */\r\n static warmConnections() {\r\n if (LiteYTEmbed.preconnected) return;\r\n\r\n // The iframe document and most of its subresources come right off youtube.com\r\n LiteYTEmbed.addPrefetch('preconnect', 'https://www.youtube-nocookie.com');\r\n // The botguard script is fetched off from google.com\r\n LiteYTEmbed.addPrefetch('preconnect', 'https://www.google.com');\r\n\r\n // Not certain if these ad related domains are in the critical path. Could verify with domain-specific throttling.\r\n LiteYTEmbed.addPrefetch('preconnect', 'https://googleads.g.doubleclick.net');\r\n LiteYTEmbed.addPrefetch('preconnect', 'https://static.doubleclick.net');\r\n\r\n LiteYTEmbed.preconnected = true;\r\n }\r\n\r\n static messageEvent(add, listener) {\r\n const w3 = add ? window.addEventListener : window.removeEventListener;\r\n if (w3) {\r\n w3('message', listener, !1);\r\n } else if (add) {\r\n window.attachEvent('onmessage', listener);\r\n } else {\r\n window.detachEvent('onmessage', listener);\r\n }\r\n }\r\n\r\n static callPlayer(iframe, $this, frameId, func, args) {\r\n if (!$this.queue) $this.queue = {};\r\n let queue = $this.queue[frameId];\r\n const domReady = document.readyState === 'complete';\r\n if (domReady && !iframe) {\r\n // DOM is ready and iframe does not exist. Log a message\r\n console.log(`callPlayer: Frame not found; id=${frameId}`);\r\n if (queue) {\r\n clearInterval(queue.poller);\r\n }\r\n } else if (func === 'listening') {\r\n // Sending the \"listener\" message to the frame, to request status updates\r\n if (iframe && iframe.contentWindow) {\r\n const newfunc = `{\"event\":\"listening\",\"id\": ${JSON.stringify(frameId)}}`;\r\n iframe.contentWindow.postMessage(newfunc, '*');\r\n }\r\n } else if ((!queue || !queue.ready) && (\r\n !domReady || (iframe && !iframe.contentWindow) || typeof func === 'function')) {\r\n if (!queue) {\r\n queue = [];\r\n $this.queue[frameId] = [];\r\n }\r\n queue.push([func, args]);\r\n if (!('poller' in queue)) {\r\n // keep polling until the document and frame is ready\r\n queue.poller = setInterval(() => {\r\n LiteYTEmbed.callPlayer(iframe, $this, frameId, 'listening');\r\n }, 250);\r\n // Add a global \"message\" event listener, to catch status updates:\r\n LiteYTEmbed.messageEvent(1, function runOnceReady(e) {\r\n if (e.source === iframe.contentWindow) {\r\n // Assume that the player is ready if we receive a\r\n // message from the iframe\r\n clearInterval(queue.poller);\r\n queue.ready = true;\r\n LiteYTEmbed.messageEvent(0, runOnceReady);\r\n console.log(queue);\r\n\r\n const tmp = queue.shift();\r\n LiteYTEmbed.callPlayer(iframe, $this, frameId, tmp[0], tmp[1]);\r\n }\r\n }, false);\r\n }\r\n } else if (iframe && iframe.contentWindow) {\r\n // When a function is supplied, just call it (like \"onYouTubePlayerReady\")\r\n console.log(`func:${func}`);\r\n if (func.call) {\r\n func();\r\n return;\r\n }\r\n iframe.contentWindow.postMessage(JSON.stringify({\r\n event: 'command',\r\n func,\r\n args: args || [],\r\n id: frameId,\r\n }), '*');\r\n // 利用檢查撥放狀態來播放影片\r\n if (func !== 'playVideo') {\r\n return;\r\n }\r\n LiteYTEmbed.checkcount = 0;\r\n const loopStatus = setInterval(() => {\r\n iframe.contentWindow.postMessage(JSON.stringify({\r\n event: 'command',\r\n func: 'getPlayerState',\r\n }), '*');\r\n iframe.contentWindow.postMessage(JSON.stringify({\r\n event: 'command',\r\n func: 'playVideo',\r\n }), '*');\r\n }, 250);\r\n LiteYTEmbed.messageEvent(1, function runPlayerState(e) {\r\n const data = JSON.parse(e.data);\r\n console.log(data);\r\n if (data.info !== undefined && data.info !== null && (data.info.playerState === 1 || data.info.playbackRate === 1)) {\r\n LiteYTEmbed.checkcount += 1;\r\n if (LiteYTEmbed.checkcount > 2) {\r\n clearInterval(loopStatus);\r\n LiteYTEmbed.messageEvent(0, runPlayerState);\r\n }\r\n }\r\n }, false);\r\n }\r\n }\r\n\r\n addIframe() {\r\n if (this.querySelector('iframe') !== null) {\r\n return;\r\n }\r\n const params = new URLSearchParams(this.getAttribute('params') || []);\r\n if (!params.has('autoplay')) {\r\n params.append('autoplay', '1');\r\n }\r\n\r\n const iframeEl = document.createElement('iframe');\r\n let id = this.getAttribute('iframeId');\r\n if (!id) {\r\n id = this.videoId;\r\n }\r\n iframeEl.id = id;\r\n //\r\n let allowKey = 'accelerometer; encrypted-media; gyroscope; picture-in-picture; autoplay;';\r\n // iframeEl.width = 560;\r\n // iframeEl.height = 315;\r\n // No encoding necessary as [title] is safe. https://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html#:~:text=Safe%20HTML%20Attributes%20include\r\n iframeEl.title = this.playLabel;\r\n iframeEl.allow = allowKey;\r\n iframeEl.allowFullscreen = true;\r\n // mobile autoplay not work\r\n const self = this;\r\n if (/Android|webOS|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)\r\n || params.get('autoplay').toString() === '0') {\r\n iframeEl.onload = () => {\r\n iframeEl.contentWindow.postMessage(JSON.stringify({\r\n event: 'command',\r\n func: 'playVideo',\r\n }), '*');\r\n setTimeout(() => {\r\n iframeEl.allow = allowKey.replace('autoplay;', '');\r\n }, 1000);\r\n };\r\n }\r\n\r\n if (/iPhone|iPad|iPod/i.test(navigator.userAgent)) {\r\n LiteYTEmbed.callPlayer(iframeEl, self, self.videoId, 'playVideo');\r\n } else if (params.get('playsinline').toString() === '0') {\r\n if (!params.has('fs')) {\r\n params.append('fs', '1');\r\n } else {\r\n params.set('fs', '1');\r\n }\r\n iframeEl.onload = () => {\r\n iframeEl.contentWindow.postMessage(JSON.stringify({\r\n event: 'command',\r\n func: 'playVideo',\r\n }), '*');\r\n setTimeout(() => {\r\n const requestFullScreen = iframeEl.requestFullScreen || iframeEl.mozRequestFullScreen || iframeEl.webkitRequestFullScreen;\r\n if (requestFullScreen) {\r\n requestFullScreen.bind(iframeEl)();\r\n }\r\n }, 1000);\r\n };\r\n }\r\n\r\n // AFAIK, the encoding here isn't necessary for XSS, but we'll do it only because this is a URL\r\n // https://stackoverflow.com/q/64959723/89484\r\n iframeEl.src = `https://www.youtube.com/embed/${encodeURIComponent(this.videoId)}?${params.toString()}`;\r\n this.append(iframeEl);\r\n\r\n this.classList.add('lyt-activated');\r\n\r\n // Set focus for a11y\r\n this.querySelector('iframe').focus();\r\n }\r\n}\r\n// Register custom element\r\ncustomElements.define('lite-youtube', LiteYTEmbed);\r\n","import Swiper from 'swiper/js/swiper';\r\nimport '~/sass/pages/homepage.scss';\r\nimport AOS from '@/components/aos';\r\nimport '~/sass/pages/car-msg-index-cloud.scss';\r\nimport '~/sass/pages/register.scss';\r\nimport '~/js/libs/youtube/lite-yt-embed.css';\r\nimport '@/libs/youtube/lite-yt-embed';\r\nimport '~/sass/pages/location.scss';\r\nimport { tmpl } from '@/utils/util-extent';\r\nimport QRCode from 'qrcode';\r\n\r\nconst { $ } = window;\r\n\r\nlet selectDatas = [];// 選單項目 區域 型式 產業\r\nlet showCount = 30; // pc 30 mobile 10 暫時全部開啟 isShowAll true\r\nlet preview;\r\nlet queryName;\r\nlet gps = null;\r\nconst lineShareUrl = 'line://msg/text/';\r\nconst shareTitle = '推薦給您TOWN ACE 百車百業頭家真心話,點入可了解更多喔!';\r\nconst queryEmpty = '影片募集中,敬請期待!';\r\n\r\n// banner\r\nfunction initialKvSwipers() {\r\n const commonOptions = {\r\n allowSlideNext: false,\r\n allowSlidePrev: false,\r\n allowTouchMove: false,\r\n slidesPerView: 1,\r\n centeredSlides: true,\r\n speed: 600,\r\n loop: true,\r\n };\r\n\r\n const kvImageSwiper = new Swiper('#swiper-kv-image', {\r\n ...commonOptions,\r\n navigation: {\r\n prevEl: '#kv-nav-button-prev',\r\n nextEl: '#kv-nav-button-next',\r\n },\r\n pagination: {\r\n el: '#kv-pagination',\r\n clickable: true,\r\n },\r\n // autoplay: {\r\n // delay: 5000,\r\n // stopOnLastSlide: false,\r\n // disableOnInteraction: false,\r\n // },\r\n longSwipesRatio: 0.1,\r\n });\r\n\r\n\r\n const kvBtnGroup = kvImageSwiper.$wrapperEl[0].querySelectorAll('.btn-group');\r\n $(kvBtnGroup).on('mouseenter', () => {\r\n kvImageSwiper.autoplay.stop();\r\n });\r\n $(kvBtnGroup).on('mouseleave', () => {\r\n kvImageSwiper.autoplay.start();\r\n });\r\n}\r\n\r\n// 查詢及地圖box poup物件\r\nfunction fancyboxSaleData(fancybox) {\r\n const fancyboxDefaults = {\r\n buttons: [\r\n 'close',\r\n ],\r\n mobile: {\r\n touch: true,\r\n },\r\n touch: {\r\n vertical: false,\r\n momentum: true,\r\n },\r\n toolbar: true,\r\n backFocus: false,\r\n baseClass: 'figure-slide',\r\n infobar: false,\r\n animationEffect: 'fade',\r\n transitionEffect: 'slide',\r\n // clickContent(current) {\r\n // if (current.type === 'image') {\r\n // return false;\r\n // }\r\n // },\r\n caption() {\r\n return $(this).find('figcaption').html();\r\n },\r\n btnTpl: {\r\n close:\r\n '',\r\n arrowLeft:\r\n '',\r\n arrowRight:\r\n '',\r\n },\r\n onInit() {\r\n // console.log(instance);\r\n if ($.fancybox.isMobile) {\r\n const a = $('body,html').scrollTop() * -1;\r\n $('body,html').css('top', a).addClass('fancybox-iosfix');\r\n // console.log(a)\r\n }\r\n },\r\n afterClose() {\r\n let offset;\r\n if ($('body,html').hasClass('fancybox-iosfix')) {\r\n offset = parseInt(document.body.style.top, 10);\r\n $('body,html').removeClass('fancybox-iosfix').css('top', '').scrollTop(offset * -1);\r\n }\r\n },\r\n };\r\n $(fancybox).fancybox(fancyboxDefaults);\r\n}\r\n\r\nfunction getCurrentPosition() {\r\n return new Promise((resolve) => {\r\n if ('geolocation' in navigator) {\r\n setTimeout(() => {\r\n resolve(null);\r\n }, 1000); // 1秒後取不到定位,回傳null\r\n navigator.geolocation.getCurrentPosition((position) => {\r\n gps = position; // 取得定位\r\n console.log(gps);\r\n resolve(position);\r\n });\r\n } else {\r\n resolve(null);\r\n }\r\n });\r\n}\r\n\r\nfunction setHtml(datas, isAppend, isShowAll) {\r\n if (!isAppend) {\r\n $('#salesContents').empty();\r\n }\r\n let dataitem = null;\r\n let tempCount = 0;\r\n\r\n datas.forEach((item) => {\r\n dataitem = item;\r\n if (tempCount <= showCount || isShowAll) {\r\n // 取得video id\r\n let mara = dataitem.IMAGEVIDEO.split('=');\r\n let videoid;\r\n if (mara.length > 1) {\r\n videoid = mara[mara.length - 1];\r\n } else {\r\n mara = dataitem.IMAGEVIDEO.split('/');\r\n videoid = mara[mara.length - 1];\r\n }\r\n dataitem.videoid = videoid;\r\n // 取得路線\r\n if (gps !== null) {\r\n dataitem.googleMapNav = `https://www.google.com/maps/dir/${gps.coords.latitude},${gps.coords.longitude}/${dataitem.CITY}${dataitem.DISTIRCT}${dataitem.ADDR}`;\r\n } else {\r\n dataitem.googleMapNav = `https://www.google.com/maps/dir//${dataitem.CITY}${dataitem.DISTIRCT}${dataitem.ADDR}`;\r\n }\r\n const urlcarmsg = `${lineShareUrl}${shareTitle}${window.location.origin}/carmsg/index.aspx?query=${encodeURIComponent(item.STORE)}`;\r\n dataitem.LINESHARE = urlcarmsg;\r\n const salesData = $(tmpl($('#template-Data-info').html(), dataitem));\r\n $('#salesContents').append(salesData);\r\n tempCount += 1;\r\n }\r\n });\r\n\r\n fancyboxSaleData('[data-fancybox=\"sale-data1\"]'); // 動態物件需fancybox 動態更新\r\n if (datas.length === 0) {\r\n $('#salesContents').append(`
${queryEmpty}
`);\r\n }\r\n}\r\n\r\n// 取得資料\r\nfunction getData(inputData, isInit = false) {\r\n // eslint-disable-next-line no-param-reassign\r\n inputData.preview = preview;\r\n $.ajax({\r\n url: '/api/carmsg/car-msg.ashx',\r\n type: 'POST',\r\n dataType: 'json',\r\n data: inputData,\r\n success: (result) => {\r\n if (result.returnCode === '0000') {\r\n // 正式顯示 回傳0且剛進入頁面時\r\n if (preview !== 'Y' && result.datas.length === 0\r\n && !(inputData.INDUSTRY || inputData.TRUCKBEDTYPE || inputData.ZONES)) {\r\n window.location = '/index.aspx';\r\n return;\r\n }\r\n setHtml(result.datas, false, inputData.isShowAll);\r\n if (isInit) {\r\n // 尋找queryName\r\n if (queryName !== '' && queryName !== null && queryName !== undefined) {\r\n $(`span.car-msg-front:contains(\"${queryName}\")`).closest('a').trigger('click');\r\n }\r\n }\r\n }\r\n },\r\n }).fail((e) => {\r\n console.log('error', e);\r\n });\r\n}\r\n\r\nfunction getTruckbedType() {\r\n $.ajax({\r\n url: '/api/carmsg/car-msg-init.ashx',\r\n type: 'POST',\r\n dataType: 'json',\r\n data: {},\r\n success: (result) => {\r\n if (result.returnCode === '0000') {\r\n selectDatas = result.datas;\r\n const option = '';\r\n let truckbedTypeList = '';\r\n let zoneList = '';\r\n let industryList = '';\r\n selectDatas.forEach((item) => {\r\n const tmp = tmpl(option, item);\r\n switch (item.CLS) {\r\n case 1:\r\n industryList += tmp;\r\n break;\r\n case 2:\r\n truckbedTypeList += tmp;\r\n break;\r\n case 3:\r\n zoneList += tmp;\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n $('#truckbedType').html(truckbedTypeList);\r\n $('#industry').html(industryList);\r\n $('#zones').html(zoneList);\r\n\r\n getData({ isShowAll: true }, true);\r\n }\r\n },\r\n }).fail((e) => {\r\n console.log('error', e);\r\n });\r\n}\r\n\r\nfunction GetURLParameter(sParam) {\r\n const getParaFromUrl = $.address.parameter(sParam);\r\n if (getParaFromUrl !== '' && getParaFromUrl !== undefined) {\r\n return decodeURI(getParaFromUrl);\r\n }\r\n const sPageURL = window.location.search.substring(1);\r\n const sURLVariables = sPageURL.split('&');\r\n for (let i = 0; i < sURLVariables.length; i += 1) {\r\n const sParameterName = sURLVariables[i].split('=');\r\n if (sParameterName[0] === sParam) {\r\n return decodeURI(sParameterName[1]);\r\n }\r\n }\r\n}\r\n\r\nfunction copyToClipboard(textToCopy) {\r\n // navigator clipboard 需要https\r\n if (navigator.clipboard && window.isSecureContext) {\r\n navigator.clipboard.writeText(textToCopy);\r\n alert('連結已複製!');\r\n return;\r\n }\r\n // http 適用\r\n const textArea = document.createElement('textarea');\r\n textArea.value = textToCopy;\r\n // 建置暫存容器\r\n textArea.style.position = 'absolute';\r\n textArea.style.opacity = 0;\r\n textArea.style.left = '-999999px';\r\n textArea.style.top = '-999999px';\r\n document.body.appendChild(textArea);\r\n textArea.focus();\r\n textArea.select();\r\n textArea.setSelectionRange(0, textArea.value.length);\r\n document.execCommand('copy');\r\n alert('連結已複製!');\r\n}\r\n\r\n$(document).ready(() => {\r\n preview = GetURLParameter('preview');\r\n queryName = GetURLParameter('query');\r\n if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {\r\n showCount = 10;\r\n }\r\n getCurrentPosition();\r\n initialKvSwipers();\r\n // 查詢\r\n fancyboxSaleData('[data-fancybox=\"sale-data1\"], [data-fancybox=\"sale-data2\"]');\r\n\r\n $('#industry').on('change', function change() {\r\n getData({\r\n INDUSTRY: this.value, TRUCKBEDTYPE: $('#truckbedType').val(), ZONES: $('#zones').val(), isShowAll: true,\r\n });\r\n });\r\n\r\n $('#truckbedType').on('change', function change() {\r\n getData({\r\n INDUSTRY: $('#industry').val(), TRUCKBEDTYPE: this.value, ZONES: $('#zones').val(), isShowAll: true,\r\n });\r\n });\r\n\r\n $('#zones').on('change', function change() {\r\n getData({\r\n ZONES: this.value, INDUSTRY: $('#industry').val(), TRUCKBEDTYPE: $('#truckbedType').val(), isShowAll: true,\r\n });\r\n });\r\n\r\n getTruckbedType();\r\n\r\n $('body').on('click', '.sale-share-p, .sale-share-m', function click() {\r\n const $this = $(this);\r\n $this.closest('.sale-modal').find('.sale-share-code , .qrcode-image').show();\r\n $('.sale-modal-scroll').animate({ scrollTop: 0 }, 100);\r\n if (/Android|webOS|BlackBerry|IEMobile|Opera Mini|iPhone|iPad|iPod/i.test(navigator.userAgent)) {\r\n return;\r\n }\r\n const qName = $this.closest('article').find('span.name').text();\r\n const qrcode = $this.closest('.sale-modal').find('.qrcode-image');\r\n const opts = {\r\n errorCorrectionLevel: 'H',\r\n type: 'image/jpeg',\r\n quality: 0.3,\r\n margin: 1,\r\n };\r\n const urlorgin = `${shareTitle}${window.location.origin}/carmsg/index.aspx?query=${qName}`;\r\n const urlCould = `${lineShareUrl}${encodeURIComponent(urlorgin)}`;\r\n QRCode.toDataURL(urlCould, opts, (err, url) => {\r\n qrcode.attr('src', url);\r\n });\r\n });\r\n\r\n $('body').on('click', '.sale-share-code .close-button', () => {\r\n $('.sale-share-code').hide();\r\n });\r\n\r\n $('body').on('click', '.icon-item-link', function click() {\r\n const $this = $(this);\r\n const qName = $this.closest('article').find('span.name').text();\r\n const url = `${window.location.origin}/carmsg/index.aspx?query=${qName}`;\r\n copyToClipboard(url);\r\n });\r\n\r\n AOS.refresh();\r\n});\r\n"],"sourceRoot":""}