{"version":3,"sources":["main.js"],"names":["jQuery","easing","jswing","swing","extend","def","n","e","t","u","a","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","Math","cos","PI","easeOutSine","sin","easeInOutSine","easeInExpo","pow","easeOutExpo","easeInOutExpo","easeInCirc","sqrt","easeOutCirc","easeInOutCirc","easeInElastic","r","i","s","abs","asin","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","$","document","ready","responsiveActive","responsiveWidth","updateNavState","window","width","addClass","removeClass","css","display","parentLinks","find","length","hasClass","top","on","ev","preventDefault","$this","this","fadeOut","next","show","togglePrimaryNav","toggleClass","each","index","item","self","_item","hoverIntent","delayIn","delayOut","handlerIn","dropdown","outerHeight","eq","handlerOut","hide","resize","animate","click","parent","siblings","is","slideToggle","fadeToggle","zIndex","focus","link","stop","dblclick","location","href","factory","define","amd","module","exports","require","_previousResizeWidth","_updateTimeout","_parse","value","parseFloat","_rows","elements","$elements","lastTop","rows","$that","offset","lastRow","push","floor","add","_parseOptions","options","opts","byRow","property","target","remove","matchHeight","fn","that","_groups","key","group","not","_apply","version","_throttle","_maintainScroll","_beforeUpdate","_afterUpdate","scrollTop","htmlHeight","$hiddenParents","parents","filter","data","attr","padding-top","padding-bottom","margin-top","margin-bottom","border-top-width","border-bottom-width","height","overflow","row","$row","targetHeight","style","verticalPadding","_applyDataApi","groups","groupId","_update","event","throttle","type","windowWidth","setTimeout","addEventListener","requestAnimationFrame","getElementsByClassName","pCount","timer","pItem","scroller","MutationObserver","inView","observe","body","subtree","childList","attributes","characterData","cRect","pT","wT","pageYOffset","wB","innerHeight","p","getBoundingClientRect","loadFullImage","classList","getAttribute","img","Image","dataset","srcset","sizes","src","className","complete","addImg","onload","cursor","pImg","querySelector","insertBefore","nextSibling","alt","removeChild","timeoutIn","timeoutOut","$element","hover","clearTimeout","Constructor","element","out","arguments","hasOwnProperty","defaultTriggerClass","title","animationLength","id","getRandomInt","init","el","createToast","message","prepend","opacity","delay","min","max","ceil","random","call","prototype","EvEmitter","_events","indexOf","once","_onceEvents","off","splice","emitEvent","slice","o","apply","allOff","imagesLoaded","querySelectorAll","Array","isArray","d","getImages","h","jqDeferred","Deferred","check","bind","error","url","console","Object","create","images","forEach","addElementImages","nodeName","addImage","background","addElementBackgroundImages","nodeType","1","9","11","getComputedStyle","exec","backgroundImage","addBackground","progress","progressedCount","hasAnyBroken","isLoaded","notify","debug","log","isComplete","getIsImageComplete","confirm","naturalWidth","proxyImage","handleEvent","unbindEvents","onerror","removeEventListener","makeJQueryPlugin","promise","jQueryBridget","option","isPlainObject","l","c","charAt","_init","bridget","getSize","isNaN","createElement","padding","borderStyle","borderWidth","boxSizing","documentElement","appendChild","isBoxSizeOuter","innerWidth","outerWidth","offsetWidth","offsetHeight","isBorderBox","f","g","paddingLeft","paddingRight","v","paddingTop","paddingBottom","m","marginLeft","marginRight","y","marginTop","marginBottom","b","borderLeftWidth","borderRightWidth","E","borderTopWidth","borderBottomWidth","S","C","x","matchesSelector","Element","matches","fizzyUIUtils","modulo","makeArray","removeFrom","getParent","parentNode","getQueryElement","filterFindElements","HTMLElement","debounceMethod","docReady","readyState","toDashed","replace","toLowerCase","htmlInit","concat","JSON","parse","Flickity","Cell","position","setAttribute","shift","destroy","originSide","removeAttribute","size","setPosition","updateTarget","renderPosition","setDefaultTarget","cellAlign","getPositionValue","wrapShift","slideableWidth","Slide","isOriginLeft","cells","addCell","firstMargin","getLastCell","select","changeSelected","unselect","toString","getCellElements","map","animatePrototype","startAnimation","isAnimating","restingFrames","applyDragForce","applySelectedAttraction","integratePhysics","positionSlider","settle","wrapAround","shiftWrapCells","cursorPosition","rightToLeft","slider","transform","slides","slidesWidth","dispatchEvent","positionSliderAtSelected","selectedSlide","velocity","percentPosition","round","isPointerDown","isFreeScrolling","selectedIndex","_shiftCells","beforeShiftCells","afterShiftCells","_unshiftCells","getFrictionFactor","applyForce","getRestingPosition","isDraggable","dragX","selectedAttraction","flickityGUID","constructor","defaults","_create","accessibility","freeScrollFriction","friction","namespaceJQueryEvents","setGallerySize","createMethods","guid","viewport","_createSlider","watchCSS","activate","isActive","_filterFindCellElements","children","reloadCells","tabIndex","initialIndex","isInitActivated","cellSelector","_makeCells","positionCells","_getWrapShiftCells","getLastSlide","_sizeCells","_positionCells","maxCellHeight","updateSlides","_containSlides","_getCanCellFit","updateSelectedSlide","groupCells","parseInt","match","reposition","setCellAlign","center","left","right","adaptiveHeight","_getGapCells","contain","Event","trigger","_wrapSelect","isDragSelect","previous","unselectSelectedSlide","selectedCells","selectedElements","selectedCell","selectedElement","selectCell","queryCell","getCellSlideIndex","getCell","getCells","getParentCell","getAdjacentCellElements","uiChange","childUIPointerDown","onresize","content","deactivate","onkeydown","activeElement","keyboardHandlers","keyCode","37","39","scrollTo","pageXOffset","removeData","setJQuery","Unipointer","bindStartEvent","_bindStartEvent","unbindStartEvent","PointerEvent","getTouch","identifier","pointerIdentifier","onmousedown","button","_pointerDown","ontouchstart","changedTouches","onpointerdown","pointerId","pointerDown","_bindPostStartEvents","mousedown","touchstart","pointerdown","_boundPointerEvents","_unbindPostStartEvents","onmousemove","_pointerMove","onpointermove","ontouchmove","pointerMove","onmouseup","_pointerUp","onpointerup","ontouchend","_pointerDone","pointerUp","_pointerReset","pointerDone","onpointercancel","_pointerCancel","ontouchcancel","pointerCancel","getPointerPoint","pageX","pageY","Unidragger","bindHandles","_bindHandles","unbindHandles","_touchActionValue","handles","touchAction","okayPointerDown","pointerDownPointer","pointerDownBlur","TEXTAREA","INPUT","SELECT","OPTION","radio","checkbox","submit","image","file","blur","_dragPointerMove","_dragMove","isDragging","hasDragStarted","_dragStart","_dragPointerUp","_dragEnd","_staticClick","isPreventingClicks","dragStart","dragMove","dragEnd","onclick","isIgnoringMouseUp","staticClick","draggable","dragThreshold","_createDrag","onActivateDrag","_uiChangeDrag","_childUIPointerDownDrag","unbindDrag","updateDraggable","onDeactivateDrag","bindDrag","pointerDownFocus","_pointerDownPreventDefault","pointerDownScroll","_pointerDownDefault","pointerType","isTouchScrolling","dragStartPosition","previousDragX","dragMoveTime","Date","freeScroll","dragEndRestingSelect","dragEndBoostSelect","getSlideDistance","_getClosestResting","distance","onscroll","TapListener","bindTap","unbindTap","tapElement","bottom","direction","isEnabled","isPrevious","isLeft","disable","createSVG","onTap","update","createElementNS","x0","x1","y1","x2","y2","x3","arrowShape","enable","disabled","prevNextButtons","_createPrevNextButtons","prevButton","nextButton","activatePrevNextButtons","deactivatePrevNextButtons","PrevNextButton","holder","dots","setDots","addDots","removeDots","createDocumentFragment","updateSelected","selectedDot","PageDots","pageDots","_createPageDots","activatePageDots","updateSelectedPageDots","updatePageDots","deactivatePageDots","state","onVisibilityChange","visibilityChange","onVisibilityPlay","visibilityPlay","play","hidden","tick","autoPlay","clear","timeout","pause","unpause","pauseAutoPlayOnHover","_createPlayer","player","activatePlayer","stopPlayer","deactivatePlayer","playPlayer","pausePlayer","unpausePlayer","onmouseenter","onmouseleave","Player","insert","cellChange","append","cellSizeChange","flickity","load","_createLazyload","lazyLoad","LazyLoader","_createAsNavFor","activateAsNavFor","deactivateAsNavFor","destroyAsNavFor","asNavFor","setNavCompanion","navCompanion","onNavCompanionSelect","navCompanionSelect","onNavStaticClick","removeNavSelectedElements","navSelectedElements","changeNavSelectedClass","_createImagesLoaded","accordion","triggers","toggleTab","tab","items","slideUp","noUiSlider","VERSION","removeElement","parentElement","isSet","isNumeric","isFinite","addClassFor","duration","limit","asArray","countDecimals","numStr","pieces","String","split","RegExp","join","getPageOffset","doc","supportPageOffset","undefined","isCSS1Compat","compatMode","scrollLeft","subRangeRatio","pa","pb","fromPercentage","range","getJ","arr","j","toStepping","xVal","xPct","va","vb","toPercentage","getStep","xSteps","snap","to","closest","handleEntryPoint","percentage","Error","xHighestCompleteStep","handleStepPoint","totalSteps","xNumSteps","highestStep","Number","toFixed","step","Spectrum","entry","singleStep","ordered","sort","getMargin","fromStepping","isPercentage","getDefaultStep","isDown","getNearbySteps","stepBefore","startValue","thisStep","stepAfter","countStepDecimals","stepDecimals","convert","defaultFormatter","from","validateFormat","isValidFormatter","testStep","parsed","testRange","spectrum","testStart","start","testSnap","testAnimate","testAnimationDuration","animationDuration","testConnect","connect","testOrientation","ort","testMargin","margin","testLimit","testPadding","testDirection","dir","testBehaviour","tap","drag","fixed","unconstrained","events","testTooltips","tooltips","formatter","testAriaFormat","ariaFormat","testFormat","format","testKeyboardSupport","keyboardSupport","testDocumentElement","testCssPrefix","cssPrefix","testCssClasses","cssClasses","testOptions","tests","orientation","behaviour","base","origin","handle","handleLower","handleUpper","touchArea","horizontal","vertical","connects","ltr","rtl","active","tooltip","pips","pipsHorizontal","pipsVertical","marker","markerHorizontal","markerVertical","markerNormal","markerLarge","markerSub","valueHorizontal","valueVertical","valueNormal","valueLarge","valueSub","keys","name","msPrefix","msTransform","noPrefix","transformRule","scope","originalOptions","scope_Base","scope_Handles","scope_Connects","scope_Pips","scope_Tooltips","scope_Self","addTarget","actions","navigator","pointerEnabled","move","end","msPointerEnabled","supportsPassive","CSS","supports","defineProperty","get","getSupportsPassive","scope_Target","scope_Spectrum","scope_Values","scope_Locations","scope_HandleNumbers","scope_ActiveHandlesCount","scope_Events","scope_Document","ownerDocument","scope_DocumentElement","scope_Body","PIPS_NONE","PIPS_NO_VALUE","PIPS_LARGE_VALUE","PIPS_SMALL_VALUE","scope_DirOffset","addNodeTo","div","addOrigin","handleNumber","isSliderDisabled","isHandleDisabled","horizontalKeys","verticalKeys","reverse","isUp","getNextStepsForHandle","setHandle","fireEvent","eventKeydown","addConnect","addTooltip","firstChild","hasAttribute","removeTooltips","removeEvent","bindEvent","values","unencoded","formattedValue","innerHTML","addMarking","spread","filterFunc","valueSizeClasses","markerSizeClasses","valueOrientationClasses","markerOrientationClasses","getClasses","source","sizeClasses","node","addSpread","removePips","grid","mode","density","stepped","interval","getGroup","array","indexes","firstInRange","lastInRange","ignoreFirst","ignoreLast","prevPct","unshift","current","q","newPct","pctDifference","pctPos","steps","realSteps","stepSize","low","high","isSteps","generateSpread","baseSize","rect","attachEvent","callback","method","pageOffset","eventTarget","touch","mouse","pointer","isTouchOnTarget","checkTouch","contains","targetTouches","touches","targetTouch","clientX","clientY","points","fixEvent","doNotReject","test","buttons","calcPoint","methods","eventName","passive","calcPointToPercentage","elem","docElem","proposal","userAgent","clientTop","clientLeft","documentLeave","relatedTarget","eventEnd","eventMove","appVersion","buttonsProperty","movement","startCalcPoint","moveHandles","locations","handleNumbers","listeners","setZindex","eventStart","some","stopPropagation","moveEvent","endEvent","outEvent","eventTap","clickedPosition","smallestDifference","handlePosition","differenceWithThisHandle","getClosestHandle","eventHover","targetEvent","namespacedEvent","namespace","substring","tEvent","tNamespace","eventType","checkHandlePosition","reference","lookBackward","lookForward","getValue","inRuleOrder","upward","proposals","transformDirection","translateRule","updateConnect","updateHandlePosition","connectWidth","scaleRule","resolveToValue","valueSet","input","fireSetEvent","isInit","valueGet","nearbySteps","increment","decrement","connectOptions","connectBase","addElements","handleBefore","handleAfter","eventHolders","eventHolder","positions","now","text","set","reset","__moveHandles","updateOptions","optionsToUpdate","updateAble","newOptions","__spectrum","api","SelectNumber","wrapper","addButton","minusButton","numberDisplay","currentValue","fadeIn","updateVal","number","prop","_classCallCheck","instance","TypeError","Sticky","selector","vp","getViewportSize","wrap","stickyFor","stickyClass","stickyContainer","updateScrollTopPosition","run","_this","pageLoaded","setInterval","clearInterval","renderElement","_this2","sticky","container","getStickyContainer","getRectangle","tagName","wrapElement","insertAdjacentHTML","previousSibling","resizeEvent","initResizeEvents","scrollEvent","initScrollEvents","_this3","resizeListener","onResizeEvents","destroyResizeEvents","_this4","scrollListener","onScrollEvents","destroyScrollEvents","_this5","_this6","clientWidth","scrollWidth","clientHeight","scrollHeight","offsetTop","offsetLeft","offsetParent","len","properties","root","scrollPosition","_self","setupEvents","closeBg","open","closeButton","mobileCloseHelper","closeTriggers","close","updateTitle","maxWidth","keyup","Modal","global","ProgressBar","code","enumerable","Symbol","toStringTag","__esModule","default","_","w","configurable","writable","iterator","getOwnPropertySymbols","getOwnPropertyDescriptor","webkitRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","mozCancelRequestAnimationFrame","mozRequestAnimationFrame","_attachment","_currentState","_delay","_easing","_originalState","_duration","_step","_targetState","_timestamp","_applyFilter","_next","_previous","_configured","_filters","setConfig","done","return","_pausedAtTime","_start","resume","attachment","Promise","_isPlaying","_scheduleId","filters","doesApply","_promise","_resolve","_reject","catch","tween","setScheduleFunction","tweenable","formulas","O","M","k","P","T","F","A","I","Q","D","Function","substr","formatString","chunkNames","_tokenData","B","has","N","R","tweenables","isPlaying","WeakMap","L","z","displayName","V","token","shifty","2","Shape","utils","Circle","_pathTemplate","containerAspectRatio","_pathString","widthOfWider","strokeWidth","trailWidth","render","radius","2radius","_trailString","./shape","./utils","3","Line","_initializeSvg","svg","4","SemiCircle","Square","Path","./circle","./line","./path","./semicircle","./square","5","Tweenable","EASING_ALIASES","easeIn","easeOut","easeInOut","path","isString","_opts","_tweenable","getTotalLength","strokeDasharray","_getComputedDashOffset","strokeDashoffset","_progressToOffset","isFunction","_calculateTo","shape","_stopTween","cb","passedOpts","defaultOpts","shiftyEasing","_resolveFromAndTo","newOffset","then","computedStyle","getPropertyValue","_calculateFrom","interpolate","6","_initializeTextContainer","textContainer","alignToBottom","setStyle","7","DESTROYED_ERROR","color","trailColor","fill","prefix","autoStyleContainer","svgStyle","warnings","isObject","svgView","_createSvgView","_container","_warnContainerAspectRatio","setStyles","trail","newOpts","_progressPath","setText","newText","_createTextContainer","removeChildren","trailPath","_createTrail","_createPath","pathString","_createPathElement","textStyle","floatEquals","warn","8","_trailTemplate","halfOfStrokeWidth","startMargin","PREFIXES","FLOAT_COMPARISON_EPSILON","elStyle","capitalize","toUpperCase","obj","forEachObject","object","destination","recursive","attrName","destVal","sourceVal","template","vars","rendered","val","regExp","styles","styleValue","styleName","AR","sitePromo","bagAddedStick","sizeButtons","productAddToBag","addToBagButton","optionChosen","imgSrc","secondImage","toggleHeaderAndFilters","didScroll","lastScrollTop","delta","navbarHeight","totalHeight","scroll","st","hasScrolled","evt","empty","last","cache","onhashchange","hash","tablist","tabs","getElementById"],"mappings":"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","sourcesContent":["jQuery.easing.jswing = jQuery.easing.swing, jQuery.extend(jQuery.easing, {\r\n\tdef: \"easeOutQuad\",\r\n\tswing: function (n, e, t, u, a) {\r\n\t\treturn jQuery.easing[jQuery.easing.def](n, e, t, u, a)\r\n\t},\r\n\teaseInQuad: function (n, e, t, u, a) {\r\n\t\treturn u * (e /= a) * e + t\r\n\t},\r\n\teaseOutQuad: function (n, e, t, u, a) {\r\n\t\treturn -u * (e /= a) * (e - 2) + t\r\n\t},\r\n\teaseInOutQuad: function (n, e, t, u, a) {\r\n\t\treturn (e /= a / 2) < 1 ? u / 2 * e * e + t : -u / 2 * (--e * (e - 2) - 1) + t\r\n\t},\r\n\teaseInCubic: function (n, e, t, u, a) {\r\n\t\treturn u * (e /= a) * e * e + t\r\n\t},\r\n\teaseOutCubic: function (n, e, t, u, a) {\r\n\t\treturn u * ((e = e / a - 1) * e * e + 1) + t\r\n\t},\r\n\teaseInOutCubic: function (n, e, t, u, a) {\r\n\t\treturn (e /= a / 2) < 1 ? u / 2 * e * e * e + t : u / 2 * ((e -= 2) * e * e + 2) + t\r\n\t},\r\n\teaseInQuart: function (n, e, t, u, a) {\r\n\t\treturn u * (e /= a) * e * e * e + t\r\n\t},\r\n\teaseOutQuart: function (n, e, t, u, a) {\r\n\t\treturn -u * ((e = e / a - 1) * e * e * e - 1) + t\r\n\t},\r\n\teaseInOutQuart: function (n, e, t, u, a) {\r\n\t\treturn (e /= a / 2) < 1 ? u / 2 * e * e * e * e + t : -u / 2 * ((e -= 2) * e * e * e - 2) + t\r\n\t},\r\n\teaseInQuint: function (n, e, t, u, a) {\r\n\t\treturn u * (e /= a) * e * e * e * e + t\r\n\t},\r\n\teaseOutQuint: function (n, e, t, u, a) {\r\n\t\treturn u * ((e = e / a - 1) * e * e * e * e + 1) + t\r\n\t},\r\n\teaseInOutQuint: function (n, e, t, u, a) {\r\n\t\treturn (e /= a / 2) < 1 ? u / 2 * e * e * e * e * e + t : u / 2 * ((e -= 2) * e * e * e * e + 2) + t\r\n\t},\r\n\teaseInSine: function (n, e, t, u, a) {\r\n\t\treturn -u * Math.cos(e / a * (Math.PI / 2)) + u + t\r\n\t},\r\n\teaseOutSine: function (n, e, t, u, a) {\r\n\t\treturn u * Math.sin(e / a * (Math.PI / 2)) + t\r\n\t},\r\n\teaseInOutSine: function (n, e, t, u, a) {\r\n\t\treturn -u / 2 * (Math.cos(Math.PI * e / a) - 1) + t\r\n\t},\r\n\teaseInExpo: function (n, e, t, u, a) {\r\n\t\treturn 0 == e ? t : u * Math.pow(2, 10 * (e / a - 1)) + t\r\n\t},\r\n\teaseOutExpo: function (n, e, t, u, a) {\r\n\t\treturn e == a ? t + u : u * (1 - Math.pow(2, -10 * e / a)) + t\r\n\t},\r\n\teaseInOutExpo: function (n, e, t, u, a) {\r\n\t\treturn 0 == e ? t : e == a ? t + u : (e /= a / 2) < 1 ? u / 2 * Math.pow(2, 10 * (e - 1)) + t : u / 2 * (2 - Math.pow(2, -10 * --e)) + t\r\n\t},\r\n\teaseInCirc: function (n, e, t, u, a) {\r\n\t\treturn -u * (Math.sqrt(1 - (e /= a) * e) - 1) + t\r\n\t},\r\n\teaseOutCirc: function (n, e, t, u, a) {\r\n\t\treturn u * Math.sqrt(1 - (e = e / a - 1) * e) + t\r\n\t},\r\n\teaseInOutCirc: function (n, e, t, u, a) {\r\n\t\treturn (e /= a / 2) < 1 ? -u / 2 * (Math.sqrt(1 - e * e) - 1) + t : u / 2 * (Math.sqrt(1 - (e -= 2) * e) + 1) + t\r\n\t},\r\n\teaseInElastic: function (n, e, t, u, a) {\r\n\t\tvar r = 1.70158,\r\n\t\t\ti = 0,\r\n\t\t\ts = u;\r\n\t\tif (0 == e) return t;\r\n\t\tif (1 == (e /= a)) return t + u;\r\n\t\tif (i || (i = .3 * a), s < Math.abs(u)) {\r\n\t\t\ts = u;\r\n\t\t\tr = i / 4\r\n\t\t} else r = i / (2 * Math.PI) * Math.asin(u / s);\r\n\t\treturn -s * Math.pow(2, 10 * (e -= 1)) * Math.sin((e * a - r) * (2 * Math.PI) / i) + t\r\n\t},\r\n\teaseOutElastic: function (n, e, t, u, a) {\r\n\t\tvar r = 1.70158,\r\n\t\t\ti = 0,\r\n\t\t\ts = u;\r\n\t\tif (0 == e) return t;\r\n\t\tif (1 == (e /= a)) return t + u;\r\n\t\tif (i || (i = .3 * a), s < Math.abs(u)) {\r\n\t\t\ts = u;\r\n\t\t\tr = i / 4\r\n\t\t} else r = i / (2 * Math.PI) * Math.asin(u / s);\r\n\t\treturn s * Math.pow(2, -10 * e) * Math.sin((e * a - r) * (2 * Math.PI) / i) + u + t\r\n\t},\r\n\teaseInOutElastic: function (n, e, t, u, a) {\r\n\t\tvar r = 1.70158,\r\n\t\t\ti = 0,\r\n\t\t\ts = u;\r\n\t\tif (0 == e) return t;\r\n\t\tif (2 == (e /= a / 2)) return t + u;\r\n\t\tif (i || (i = a * (.3 * 1.5)), s < Math.abs(u)) {\r\n\t\t\ts = u;\r\n\t\t\tr = i / 4\r\n\t\t} else r = i / (2 * Math.PI) * Math.asin(u / s);\r\n\t\treturn e < 1 ? s * Math.pow(2, 10 * (e -= 1)) * Math.sin((e * a - r) * (2 * Math.PI) / i) * -.5 + t : s * Math.pow(2, -10 * (e -= 1)) * Math.sin((e * a - r) * (2 * Math.PI) / i) * .5 + u + t\r\n\t},\r\n\teaseInBack: function (n, e, t, u, a, r) {\r\n\t\treturn void 0 == r && (r = 1.70158), u * (e /= a) * e * ((r + 1) * e - r) + t\r\n\t},\r\n\teaseOutBack: function (n, e, t, u, a, r) {\r\n\t\treturn void 0 == r && (r = 1.70158), u * ((e = e / a - 1) * e * ((r + 1) * e + r) + 1) + t\r\n\t},\r\n\teaseInOutBack: function (n, e, t, u, a, r) {\r\n\t\treturn void 0 == r && (r = 1.70158), (e /= a / 2) < 1 ? u / 2 * (e * e * ((1 + (r *= 1.525)) * e - r)) + t : u / 2 * ((e -= 2) * e * ((1 + (r *= 1.525)) * e + r) + 2) + t\r\n\t},\r\n\teaseInBounce: function (n, e, t, u, a) {\r\n\t\treturn u - jQuery.easing.easeOutBounce(n, a - e, 0, u, a) + t\r\n\t},\r\n\teaseOutBounce: function (n, e, t, u, a) {\r\n\t\treturn (e /= a) < 1 / 2.75 ? u * (7.5625 * e * e) + t : e < 2 / 2.75 ? u * (7.5625 * (e -= 1.5 / 2.75) * e + .75) + t : e < 2.5 / 2.75 ? u * (7.5625 * (e -= 2.25 / 2.75) * e + .9375) + t : u * (7.5625 * (e -= 2.625 / 2.75) * e + .984375) + t\r\n\t},\r\n\teaseInOutBounce: function (n, e, t, u, a) {\r\n\t\treturn e < a / 2 ? .5 * jQuery.easing.easeInBounce(n, 2 * e, 0, u, a) + t : .5 * jQuery.easing.easeOutBounce(n, 2 * e - a, 0, u, a) + .5 * u + t\r\n\t}\r\n});\r\n\n$(document).ready(function() {\n\n\tvar hasTouch = 'ontouchstart' in window;\n\n\tvar responsiveWidth = 972;\n\n\t/**\n\t * Setup Responsive Nav\n\t */\n\tvar primaryNav = $('.c-nav-primary'),\n\t\tprimaryNavItems = $('.c-nav-primary__item');\n\n\tvar getDirection = function (ev, obj) {\n\t\tvar w = obj.offsetWidth,\n\t\t\th = obj.offsetHeight,\n\t\t\tx = (ev.pageX - obj.offsetLeft - (w / 2) * (w > h ? (h / w) : 1)),\n\t\t\ty = (ev.pageY - obj.offsetTop - (h / 2) * (h > w ? (w / h) : 1)),\n\t\t\td = Math.round( Math.atan2(y, x) / 1.57079633 + 5 ) % 4;\n\n\t\treturn d;\n\t};\n\n\t$('.c-nav-primary__item--parent').each(function(index, item) {\n\n\t\tvar self = this;\n\t\tvar _item = item;\n\n\t\t$(item).hoverIntent({\n\t\t\tdelayIn: 200,\n\t\t\tdelayOut: 200,\n\t\t\thandlerIn: function () {\n\n\t\t\t\tif ($(window).width() >= responsiveWidth) {\n\t\t\t\t\t$('.c-nav-overlay').show();\n\t\t\t\t\tvar dropdown = $(_item).find('.c-nav-primary__dropdown');\n\t\t\t\t\t$('.c-header').addClass('c-header--active');\n\t\t\t\t\tif ($(dropdown).length) {\n\t\t\t\t\t\t$(dropdown).css({ top: $('.c-header').outerHeight() });\n\t\t\t\t\t\t$(dropdown).show();\n\t\t\t\t\t\t$(self).find('.c-nav-primary__link').eq(0).addClass('c-nav-primary__link--active');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\thandlerOut: function () {\n\t\t\t\tif ($(window).width() >= responsiveWidth) {\n\t\t\t\t\t$('.c-nav-overlay').hide();\n\t\t\t\t\tvar dropdown = $(_item).find('.c-nav-primary__dropdown');\n\t\t\t\t\t$(dropdown).hide();\n\t\t\t\t\t$('.c-header').removeClass('c-header--active');\n\t\t\t\t\t$(self).find('.c-nav-primary__link').eq(0).removeClass('c-nav-primary__link--active');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\n\n\tvar responsiveActive;\n\tvar timer;\n\n\tfunction updateNavState() {\n\n\t\tif ($(window).width() <= responsiveWidth) {\n\t\t\t$('.c-navigation').addClass('c-navigation--responsive');\n\t\t\tresponsiveActive = true;\n\t\t} else {\n\t\t\t$('.c-navigation').removeClass('c-navigation--responsive');\n\t\t\t$('.c-nav-primary__dropdown').css({display: 'none'});\n\t\t\tresponsiveActive = true;\n\t\t}\n\n\t\tvar parentLinks = $('.c-navigation--responsive').find('.c-nav-primary__link--parent');\n\n\t\tif ($(parentLinks).length < 1) {\n\t\t\treturn;\n\t\t}\n\n\n\t\tif (responsiveActive) {\n\n\t\t\tif (!$('.c-nav-primary__dropdown').hasClass('c-nav-primary__dropdown--active')) {\n\t\t\t\t$('.c-nav-primary__dropdown').addClass('c-nav-primary__dropdown--closed');\n\t\t\t\t$('.c-nav-primary__dropdown').css({display: 'block', top: 0});\n\t\t\t}\n\n\t\t\t$(parentLinks).on('click', function(ev) {\n\t\t\t\tev.preventDefault();\n\n\t\t\t\tvar $this = $(this);\n\n\n\t\t\t\t$(parentLinks).fadeOut('fast', function() {\n\t\t\t\t\t$('.c-nav-primary__dropdown').removeClass('c-nav-primary__dropdown--active');\n\t\t\t\t\t$('.c-nav-primary__dropdown').addClass('c-nav-primary__dropdown--closed');\n\t\t\t\t\t$this.next('.c-nav-primary__dropdown').addClass('c-nav-primary__dropdown--active');\n\t\t\t\t\t$this.next('.c-nav-primary__dropdown').removeClass('c-nav-primary__dropdown--closed');\n\t\t\t\t\t$('.c-nav-primary').addClass('c-nav-primary--offset');\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t$('.js-nav-close-dropdown').on('click', function(ev) {\n\t\t\t\tev.preventDefault();\n\t\t\t\t$('.c-nav-primary__dropdown').removeClass('c-nav-primary__dropdown--active');\n\t\t\t\t$('.c-nav-primary__dropdown').addClass('c-nav-primary__dropdown--closed');\n\t\t\t\t$(parentLinks).show();\n\t\t\t})\n\t\t}\n\t}\n\n\t$(window).resize(function() {\n\t\tif ($(window).width() <= responsiveWidth) {\n\t\t\t$('.c-navigation').addClass('c-navigation--responsive');\n\t\t\tresponsiveActive = true;\n\t\t} else {\n\t\t\tresponsiveActive = false;\n\t\t\t$('.c-navigation').removeClass('c-navigation--responsive');\n\t\t\t// $('.c-nav-primary__item--parent').unbind();\n\t\t}\n\n\t\tupdateNavState();\n\t});\n\n\tupdateNavState();\n\n\t$('.c-header__search-input').on('focus', function() {\n\t\t$(this).animate({ width: 340 }, 350, 'easeInOutQuint');\n\t});\n\n\t$('.c-header__search-input').on('blur', function() {\n\t\t$(this).animate({ width: 220 }, 350, 'easeInOutQuint');\n\t});\n\n\t/**\n\t * Setup Responsive Footer Tabs\n\t */\n\t$(\"footer\").find(\".links ul li:first-child\").click(function () {\n\t\t$(this).parent(\"ul\").toggleClass(\"on\");\n\n\t\t$(this).parent(\"ul\").siblings(\"ul\").each(function () {\n\t\t\tif ($(this).is(\".on\")) {\n\t\t\t\t$(this).removeClass(\"on\");\n\t\t\t}\n\t\t});\n\t});\n\n\tfunction togglePrimaryNav(ev) {\n\t\tev.preventDefault();\n\t\t$('.c-nav-primary').toggleClass('c-nav-primary--open');\n\t\t$('html').toggleClass('js-fixed-scroll');\n\t\t$('.c-header').toggleClass('c-header--active');\n\t}\n\n\t$('.js-site-search__trigger').on('click', function (ev) {\n\t\tev.preventDefault();\n\t\t$('.js-site-search').slideToggle();\n\t\t$('.c-search-overlay').fadeToggle();\n\t\t$('.c-header').css({ zIndex: 9999 });\n\t\t$('html').toggleClass('js-fixed-scroll');\n\t\t$('.c-site-search__input').focus();\n\t});\n\n\t$('.js-primary-nav__trigger').on('click', function (ev) {\n\t\ttogglePrimaryNav(ev);\n\t});\n\n\t$('.js-nav-close-menu').on('click', function (ev) {\n\t\ttogglePrimaryNav(ev);\n\t});\n\n\t$('.c-nav-overlay').on('click', function (ev) {\n\t\ttogglePrimaryNav(ev);\n\t});\n\n\t$('.c-search-overlay').on('click', function (ev) {\n\t\t$('.c-search-overlay').fadeToggle();\n\t\t$('.js-site-search').slideToggle();\n\t\t$('html').toggleClass('js-fixed-scroll');\n\t});\n\n\t$('.c-nav-primary-responsive__item').each(function(index, item) {\n\t\tvar link = $(item).find('.c-nav-primary-responsive__link');\n\n\t\t$(link).on('click', function(ev) {\n\t\t\tev.preventDefault();\n\n\t\t\t$(this).toggleClass('c-nav-primary-responsive__link--active');\n\n\t\t\t$(item).find('.c-nav-primary-responsive__dropdown').stop().slideToggle();\n\t\t}).dblclick(function () {\n\t\t\twindow.location = this.href;\n\t\t\treturn false;\n\t\t});\n\t});\n});\n\n/**\r\n * jquery-match-height 0.7.2 by @liabru\r\n * http://brm.io/jquery-match-height/\r\n * License: MIT\r\n */\r\n\r\n;\r\n(function (factory) { // eslint-disable-line no-extra-semi\r\n\t'use strict';\r\n\tif (typeof define === 'function' && define.amd) {\r\n\t\t// AMD\r\n\t\tdefine(['jquery'], factory);\r\n\t} else if (typeof module !== 'undefined' && module.exports) {\r\n\t\t// CommonJS\r\n\t\tmodule.exports = factory(require('jquery'));\r\n\t} else {\r\n\t\t// Global\r\n\t\tfactory(jQuery);\r\n\t}\r\n})(function ($) {\r\n\t/*\r\n\t * internal\r\n\t */\r\n\r\n\tvar _previousResizeWidth = -1,\r\n\t\t_updateTimeout = -1;\r\n\r\n\t/*\r\n\t * _parse\r\n\t * value parse utility function\r\n\t */\r\n\r\n\tvar _parse = function (value) {\r\n\t\t// parse value and convert NaN to 0\r\n\t\treturn parseFloat(value) || 0;\r\n\t};\r\n\r\n\t/*\r\n\t * _rows\r\n\t * utility function returns array of jQuery selections representing each row\r\n\t * (as displayed after float wrapping applied by browser)\r\n\t */\r\n\r\n\tvar _rows = function (elements) {\r\n\t\tvar tolerance = 1,\r\n\t\t\t$elements = $(elements),\r\n\t\t\tlastTop = null,\r\n\t\t\trows = [];\r\n\r\n\t\t// group elements by their top position\r\n\t\t$elements.each(function () {\r\n\t\t\tvar $that = $(this),\r\n\t\t\t\ttop = $that.offset().top - _parse($that.css('margin-top')),\r\n\t\t\t\tlastRow = rows.length > 0 ? rows[rows.length - 1] : null;\r\n\r\n\t\t\tif (lastRow === null) {\r\n\t\t\t\t// first item on the row, so just push it\r\n\t\t\t\trows.push($that);\r\n\t\t\t} else {\r\n\t\t\t\t// if the row top is the same, add to the row group\r\n\t\t\t\tif (Math.floor(Math.abs(lastTop - top)) <= tolerance) {\r\n\t\t\t\t\trows[rows.length - 1] = lastRow.add($that);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// otherwise start a new row group\r\n\t\t\t\t\trows.push($that);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// keep track of the last row top\r\n\t\t\tlastTop = top;\r\n\t\t});\r\n\r\n\t\treturn rows;\r\n\t};\r\n\r\n\t/*\r\n\t * _parseOptions\r\n\t * handle plugin options\r\n\t */\r\n\r\n\tvar _parseOptions = function (options) {\r\n\t\tvar opts = {\r\n\t\t\tbyRow: true,\r\n\t\t\tproperty: 'height',\r\n\t\t\ttarget: null,\r\n\t\t\tremove: false\r\n\t\t};\r\n\r\n\t\tif (typeof options === 'object') {\r\n\t\t\treturn $.extend(opts, options);\r\n\t\t}\r\n\r\n\t\tif (typeof options === 'boolean') {\r\n\t\t\topts.byRow = options;\r\n\t\t} else if (options === 'remove') {\r\n\t\t\topts.remove = true;\r\n\t\t}\r\n\r\n\t\treturn opts;\r\n\t};\r\n\r\n\t/*\r\n\t * matchHeight\r\n\t * plugin definition\r\n\t */\r\n\r\n\tvar matchHeight = $.fn.matchHeight = function (options) {\r\n\t\tvar opts = _parseOptions(options);\r\n\r\n\t\t// handle remove\r\n\t\tif (opts.remove) {\r\n\t\t\tvar that = this;\r\n\r\n\t\t\t// remove fixed height from all selected elements\r\n\t\t\tthis.css(opts.property, '');\r\n\r\n\t\t\t// remove selected elements from all groups\r\n\t\t\t$.each(matchHeight._groups, function (key, group) {\r\n\t\t\t\tgroup.elements = group.elements.not(that);\r\n\t\t\t});\r\n\r\n\t\t\t// TODO: cleanup empty groups\r\n\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tif (this.length <= 1 && !opts.target) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\t// keep track of this group so we can re-apply later on load and resize events\r\n\t\tmatchHeight._groups.push({\r\n\t\t\telements: this,\r\n\t\t\toptions: opts\r\n\t\t});\r\n\r\n\t\t// match each element's height to the tallest element in the selection\r\n\t\tmatchHeight._apply(this, opts);\r\n\r\n\t\treturn this;\r\n\t};\r\n\r\n\t/*\r\n\t * plugin global options\r\n\t */\r\n\r\n\tmatchHeight.version = '0.7.2';\r\n\tmatchHeight._groups = [];\r\n\tmatchHeight._throttle = 80;\r\n\tmatchHeight._maintainScroll = false;\r\n\tmatchHeight._beforeUpdate = null;\r\n\tmatchHeight._afterUpdate = null;\r\n\tmatchHeight._rows = _rows;\r\n\tmatchHeight._parse = _parse;\r\n\tmatchHeight._parseOptions = _parseOptions;\r\n\r\n\t/*\r\n\t * matchHeight._apply\r\n\t * apply matchHeight to given elements\r\n\t */\r\n\r\n\tmatchHeight._apply = function (elements, options) {\r\n\t\tvar opts = _parseOptions(options),\r\n\t\t\t$elements = $(elements),\r\n\t\t\trows = [$elements];\r\n\r\n\t\t// take note of scroll position\r\n\t\tvar scrollTop = $(window).scrollTop(),\r\n\t\t\thtmlHeight = $('html').outerHeight(true);\r\n\r\n\t\t// get hidden parents\r\n\t\tvar $hiddenParents = $elements.parents().filter(':hidden');\r\n\r\n\t\t// cache the original inline style\r\n\t\t$hiddenParents.each(function () {\r\n\t\t\tvar $that = $(this);\r\n\t\t\t$that.data('style-cache', $that.attr('style'));\r\n\t\t});\r\n\r\n\t\t// temporarily must force hidden parents visible\r\n\t\t$hiddenParents.css('display', 'block');\r\n\r\n\t\t// get rows if using byRow, otherwise assume one row\r\n\t\tif (opts.byRow && !opts.target) {\r\n\r\n\t\t\t// must first force an arbitrary equal height so floating elements break evenly\r\n\t\t\t$elements.each(function () {\r\n\t\t\t\tvar $that = $(this),\r\n\t\t\t\t\tdisplay = $that.css('display');\r\n\r\n\t\t\t\t// temporarily force a usable display value\r\n\t\t\t\tif (display !== 'inline-block' && display !== 'flex' && display !== 'inline-flex') {\r\n\t\t\t\t\tdisplay = 'block';\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// cache the original inline style\r\n\t\t\t\t$that.data('style-cache', $that.attr('style'));\r\n\r\n\t\t\t\t$that.css({\r\n\t\t\t\t\t'display': display,\r\n\t\t\t\t\t'padding-top': '0',\r\n\t\t\t\t\t'padding-bottom': '0',\r\n\t\t\t\t\t'margin-top': '0',\r\n\t\t\t\t\t'margin-bottom': '0',\r\n\t\t\t\t\t'border-top-width': '0',\r\n\t\t\t\t\t'border-bottom-width': '0',\r\n\t\t\t\t\t'height': '100px',\r\n\t\t\t\t\t'overflow': 'hidden'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\t// get the array of rows (based on element top position)\r\n\t\t\trows = _rows($elements);\r\n\r\n\t\t\t// revert original inline styles\r\n\t\t\t$elements.each(function () {\r\n\t\t\t\tvar $that = $(this);\r\n\t\t\t\t$that.attr('style', $that.data('style-cache') || '');\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t$.each(rows, function (key, row) {\r\n\t\t\tvar $row = $(row),\r\n\t\t\t\ttargetHeight = 0;\r\n\r\n\t\t\tif (!opts.target) {\r\n\t\t\t\t// skip apply to rows with only one item\r\n\t\t\t\tif (opts.byRow && $row.length <= 1) {\r\n\t\t\t\t\t$row.css(opts.property, '');\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// iterate the row and find the max height\r\n\t\t\t\t$row.each(function () {\r\n\t\t\t\t\tvar $that = $(this),\r\n\t\t\t\t\t\tstyle = $that.attr('style'),\r\n\t\t\t\t\t\tdisplay = $that.css('display');\r\n\r\n\t\t\t\t\t// temporarily force a usable display value\r\n\t\t\t\t\tif (display !== 'inline-block' && display !== 'flex' && display !== 'inline-flex') {\r\n\t\t\t\t\t\tdisplay = 'block';\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// ensure we get the correct actual height (and not a previously set height value)\r\n\t\t\t\t\tvar css = {\r\n\t\t\t\t\t\t'display': display\r\n\t\t\t\t\t};\r\n\t\t\t\t\tcss[opts.property] = '';\r\n\t\t\t\t\t$that.css(css);\r\n\r\n\t\t\t\t\t// find the max height (including padding, but not margin)\r\n\t\t\t\t\tif ($that.outerHeight(false) > targetHeight) {\r\n\t\t\t\t\t\ttargetHeight = $that.outerHeight(false);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// revert styles\r\n\t\t\t\t\tif (style) {\r\n\t\t\t\t\t\t$that.attr('style', style);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t$that.css('display', '');\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\t// if target set, use the height of the target element\r\n\t\t\t\ttargetHeight = opts.target.outerHeight(false);\r\n\t\t\t}\r\n\r\n\t\t\t// iterate the row and apply the height to all elements\r\n\t\t\t$row.each(function () {\r\n\t\t\t\tvar $that = $(this),\r\n\t\t\t\t\tverticalPadding = 0;\r\n\r\n\t\t\t\t// don't apply to a target\r\n\t\t\t\tif (opts.target && $that.is(opts.target)) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// handle padding and border correctly (required when not using border-box)\r\n\t\t\t\tif ($that.css('box-sizing') !== 'border-box') {\r\n\t\t\t\t\tverticalPadding += _parse($that.css('border-top-width')) + _parse($that.css('border-bottom-width'));\r\n\t\t\t\t\tverticalPadding += _parse($that.css('padding-top')) + _parse($that.css('padding-bottom'));\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// set the height (accounting for padding and border)\r\n\t\t\t\t$that.css(opts.property, (targetHeight - verticalPadding) + 'px');\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t// revert hidden parents\r\n\t\t$hiddenParents.each(function () {\r\n\t\t\tvar $that = $(this);\r\n\t\t\t$that.attr('style', $that.data('style-cache') || null);\r\n\t\t});\r\n\r\n\t\t// restore scroll position if enabled\r\n\t\tif (matchHeight._maintainScroll) {\r\n\t\t\t$(window).scrollTop((scrollTop / htmlHeight) * $('html').outerHeight(true));\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t};\r\n\r\n\t/*\r\n\t * matchHeight._applyDataApi\r\n\t * applies matchHeight to all elements with a data-match-height attribute\r\n\t */\r\n\r\n\tmatchHeight._applyDataApi = function () {\r\n\t\tvar groups = {};\r\n\r\n\t\t// generate groups by their groupId set by elements using data-match-height\r\n\t\t$('[data-match-height], [data-mh]').each(function () {\r\n\t\t\tvar $this = $(this),\r\n\t\t\t\tgroupId = $this.attr('data-mh') || $this.attr('data-match-height');\r\n\r\n\t\t\tif (groupId in groups) {\r\n\t\t\t\tgroups[groupId] = groups[groupId].add($this);\r\n\t\t\t} else {\r\n\t\t\t\tgroups[groupId] = $this;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// apply matchHeight to each group\r\n\t\t$.each(groups, function () {\r\n\t\t\tthis.matchHeight(true);\r\n\t\t});\r\n\t};\r\n\r\n\t/*\r\n\t * matchHeight._update\r\n\t * updates matchHeight on all current groups with their correct options\r\n\t */\r\n\r\n\tvar _update = function (event) {\r\n\t\tif (matchHeight._beforeUpdate) {\r\n\t\t\tmatchHeight._beforeUpdate(event, matchHeight._groups);\r\n\t\t}\r\n\r\n\t\t$.each(matchHeight._groups, function () {\r\n\t\t\tmatchHeight._apply(this.elements, this.options);\r\n\t\t});\r\n\r\n\t\tif (matchHeight._afterUpdate) {\r\n\t\t\tmatchHeight._afterUpdate(event, matchHeight._groups);\r\n\t\t}\r\n\t};\r\n\r\n\tmatchHeight._update = function (throttle, event) {\r\n\t\t// prevent update if fired from a resize event\r\n\t\t// where the viewport width hasn't actually changed\r\n\t\t// fixes an event looping bug in IE8\r\n\t\tif (event && event.type === 'resize') {\r\n\t\t\tvar windowWidth = $(window).width();\r\n\t\t\tif (windowWidth === _previousResizeWidth) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t_previousResizeWidth = windowWidth;\r\n\t\t}\r\n\r\n\t\t// throttle updates\r\n\t\tif (!throttle) {\r\n\t\t\t_update(event);\r\n\t\t} else if (_updateTimeout === -1) {\r\n\t\t\t_updateTimeout = setTimeout(function () {\r\n\t\t\t\t_update(event);\r\n\t\t\t\t_updateTimeout = -1;\r\n\t\t\t}, matchHeight._throttle);\r\n\t\t}\r\n\t};\r\n\r\n\t/*\r\n\t * bind events\r\n\t */\r\n\r\n\t// apply on DOM ready event\r\n\t$(matchHeight._applyDataApi);\r\n\r\n\t// use on or bind where supported\r\n\tvar on = $.fn.on ? 'on' : 'bind';\r\n\r\n\t// update heights on load and resize events\r\n\t$(window)[on]('load', function (event) {\r\n\t\tmatchHeight._update(false, event);\r\n\t});\r\n\r\n\t// throttled update heights on resize events\r\n\t$(window)[on]('resize orientationchange', function (event) {\r\n\t\tmatchHeight._update(true, event);\r\n\t});\r\n\r\n});\r\n\nif (window.addEventListener && window.requestAnimationFrame && document.getElementsByClassName) window.addEventListener('load', function () {\r\n\r\n\t// start\r\n\tvar pItem = document.getElementsByClassName('c-lazy-image replace'),\r\n\t\tpCount, timer;\r\n\r\n\t// scroll and resize events\r\n\twindow.addEventListener('scroll', scroller, false);\r\n\twindow.addEventListener('resize', scroller, false);\r\n\r\n\t// DOM mutation observer\r\n\tif (MutationObserver) {\r\n\r\n\t\tvar observer = new MutationObserver(function () {\r\n\t\t\tif (pItem.length !== pCount) inView();\r\n\t\t});\r\n\r\n\t\tobserver.observe(document.body, {\r\n\t\t\tsubtree: true,\r\n\t\t\tchildList: true,\r\n\t\t\tattributes: true,\r\n\t\t\tcharacterData: true\r\n\t\t});\r\n\r\n\t}\r\n\r\n\t// initial check\r\n\tinView();\r\n\r\n\t// throttled scroll/resize\r\n\tfunction scroller() {\r\n\r\n\t\ttimer = timer || setTimeout(function () {\r\n\t\t\ttimer = null;\r\n\t\t\tinView();\r\n\t\t}, 300);\r\n\r\n\t}\r\n\r\n\t// image in view?\r\n\tfunction inView() {\r\n\r\n\t\tif (pItem.length) requestAnimationFrame(function () {\r\n\r\n\t\t\tvar wT = window.pageYOffset,\r\n\t\t\t\twB = wT + window.innerHeight,\r\n\t\t\t\tcRect, pT, pB, p = 0;\r\n\r\n\t\t\twhile (p < pItem.length) {\r\n\r\n\t\t\t\tcRect = pItem[p].getBoundingClientRect();\r\n\t\t\t\tpT = wT + cRect.top;\r\n\t\t\t\tpB = pT + cRect.height;\r\n\r\n\t\t\t\tif (wT < pB && wB > pT) {\r\n\t\t\t\t\tloadFullImage(pItem[p]);\r\n\t\t\t\t\tpItem[p].classList.remove('replace');\r\n\t\t\t\t} else p++;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tpCount = pItem.length;\r\n\r\n\t\t});\r\n\t}\r\n\r\n\t// replace with full image\r\n\tfunction loadFullImage(item) {\r\n\r\n\t\tvar href = item && (item.getAttribute('data-href') || item.href);\r\n\t\tif (!href) return;\r\n\r\n\t\t// load image\r\n\t\tvar img = new Image();\r\n\r\n\t\tif (item.dataset) {\r\n\t\t\timg.srcset = item.dataset.srcset || '';\r\n\t\t\timg.sizes = item.dataset.sizes || '';\r\n\t\t}\r\n\r\n\t\timg.src = href;\r\n\t\timg.className = 'reveal';\r\n\r\n\t\tif (img.complete) addImg();\r\n\t\telse img.onload = addImg;\r\n\r\n\t\t// replace image\r\n\t\tfunction addImg() {\r\n\r\n\t\t\trequestAnimationFrame(function () {\r\n\r\n\t\t\t\t// disable click\r\n\t\t\t\tif (href === item.href) {\r\n\t\t\t\t\titem.style.cursor = 'default';\r\n\t\t\t\t\titem.addEventListener('click', function (e) {\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t}, false);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// preview image\r\n\t\t\t\tvar pImg = item.querySelector && item.querySelector('img.preview');\r\n\r\n\t\t\t\t// add full image\r\n\t\t\t\titem.insertBefore(img, pImg && pImg.nextSibling).addEventListener('animationend', function () {\r\n\r\n\t\t\t\t\t// remove preview image\r\n\t\t\t\t\tif (pImg) {\r\n\t\t\t\t\t\timg.alt = pImg.alt || '';\r\n\t\t\t\t\t\titem.removeChild(pImg);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\timg.classList.remove('reveal');\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}, false);\r\n\n$.fn.hoverIntent = function(options) {\r\n\r\n\tvar defaultOptions = {\r\n\t\tdelayIn: 300,\r\n\t\tdelayOut: 300,\r\n\t\thandlerIn: function(){},\r\n\t\thandlerOut: function(){}\r\n\t};\r\n\r\n\toptions = $.extend(defaultOptions, options);\r\n\r\n\treturn this.each(function() {\r\n\r\n\t\tvar timeoutIn, timeoutOut;\r\n\t\tvar $element = $(this);\r\n\r\n\t\t$element.hover(\r\n\t\t\tfunction() {\r\n\t\t\t\tif (timeoutOut) {\r\n\t\t\t\t\tclearTimeout(timeoutOut);\r\n\t\t\t\t}\r\n\t\t\t\ttimeoutIn = setTimeout(function(){options.handlerIn($element);}, options.delayIn);\r\n\t\t\t},\r\n\r\n\t\tfunction() {\r\n\r\n\t\t\tif (timeoutIn) {\r\n\t\t\t\tclearTimeout(timeoutIn);\r\n\t\t\t}\r\n\r\n\t\t\ttimeoutOut = setTimeout(function(){options.handlerOut($element);}, options.delayOut);\r\n\t\t});\r\n\t});\r\n};\r\n\n;(function () {\r\n\r\n\t'use strict';\r\n\r\n\tvar PLUGIN_NAME = 'ToastNotification';\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tfunction Constructor(element, options) {\r\n\t\t/**\r\n\t\t * Define any plugin globals here using `this` keyword.\r\n\t\t * They can then be referenced anywhere in the prototype\r\n\t\t * scope below.\r\n\t\t */\r\n\r\n\t\t// Define default values.\r\n\t\tvar defaults = {\r\n\t\t\tdefaultTriggerClass: '.js-modal-trigger',\r\n\t\t\ttitle: ''\r\n\t\t};\r\n\r\n\t\t// Put elements in to the scope.\r\n\r\n\t\t// Merge defaults with options pragmatically.\r\n\t\tthis.options = extend(defaults, options);\r\n\t\tthis.element = $(element);\r\n\r\n\t\tthis.easing = 'easeInOutCirc';\r\n\t\tthis.animationLength = 233;\r\n\t\tthis.id = this.getRandomInt(1, 3000);\r\n\r\n\t\tthis.init(this.id);\r\n\t}\r\n\r\n\t/**\r\n\t * Prototype\r\n\t */\r\n\t(function () {\r\n\t\t/**\r\n\t\t * Handle `this` references here.\r\n\t\t *\r\n\t\t * For example:\r\n\t\t * this.exampleFunction = function() {\r\n\t\t * \t\t// doSomething\r\n\t\t * };\r\n\t\t *\r\n\t\t * This can now be called as `new MyPlugin().exampleFunction()`.\r\n\t\t *\r\n\t\t * Assigning the Constructor to a variable makes sense,\r\n\t\t * so `var myNewPlugin = new MyPlugin()` changes the above to\r\n\t\t * `myNewPlugin.exampleFunction()`.\r\n\t\t */\r\n\r\n\t\tthis.init = function (id) {\r\n\t\t\tvar el = this.createToast({ message: this.options.message });\r\n\r\n\t\t\t$('body').prepend(el);\r\n\r\n\t\t\t$('.js-toast-' + id).animate({ width: 300 }, function() {\r\n\t\t\t\t$('.js-toast-' + id).find('.c-toast__body > p').animate({ opacity: 1 })\r\n\t\t\t\t$('.js-toast-' + id).delay(1500).fadeOut();\r\n\t\t\t})\r\n\r\n\t\t};\r\n\r\n\t\tthis.createToast = function (opts) {\r\n\r\n\t\t\tvar toast = '
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'

' + opts.message + '

' +\r\n\t\t\t\t'
' +\r\n\t\t\t'
'\r\n\r\n\t\t\treturn toast;\r\n\t\t};\r\n\r\n\t\tthis.getRandomInt = function(min, max) {\r\n\t\t\tmin = Math.ceil(min);\r\n\t\t\tmax = Math.floor(max);\r\n\t\t\treturn Math.floor(Math.random() * (max - min + 1)) + min;\r\n\t\t}\r\n\r\n\t}).call(Constructor.prototype);\r\n\r\n\t/**\r\n\t * Private helper functions\r\n\t */\r\n\tfunction extend(out) {\r\n\t\tout = out || {};\r\n\r\n\t\tfor (var i = 1; i < arguments.length; i++) {\r\n\t\t\tif (!arguments[i]) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tfor (var key in arguments[i]) {\r\n\t\t\t\tif (arguments[i].hasOwnProperty(key)) {\r\n\t\t\t\t\tout[key] = arguments[i][key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn out;\r\n\t}\r\n\r\n\twindow[PLUGIN_NAME] = Constructor;\r\n})();\r\n\n/*!\r\n * imagesLoaded PACKAGED v4.1.4\r\n * JavaScript is all like \"You images are done yet or what?\"\r\n * MIT License\r\n */\r\n\r\n! function (e, t) {\r\n\t\"function\" == typeof define && define.amd ? define(\"ev-emitter/ev-emitter\", t) : \"object\" == typeof module && module.exports ? module.exports = t() : e.EvEmitter = t()\r\n}(\"undefined\" != typeof window ? window : this, function () {\r\n\tfunction e() {}\r\n\tvar t = e.prototype;\r\n\treturn t.on = function (e, t) {\r\n\t\tif (e && t) {\r\n\t\t\tvar i = this._events = this._events || {},\r\n\t\t\t\tn = i[e] = i[e] || [];\r\n\t\t\treturn n.indexOf(t) == -1 && n.push(t), this\r\n\t\t}\r\n\t}, t.once = function (e, t) {\r\n\t\tif (e && t) {\r\n\t\t\tthis.on(e, t);\r\n\t\t\tvar i = this._onceEvents = this._onceEvents || {},\r\n\t\t\t\tn = i[e] = i[e] || {};\r\n\t\t\treturn n[t] = !0, this\r\n\t\t}\r\n\t}, t.off = function (e, t) {\r\n\t\tvar i = this._events && this._events[e];\r\n\t\tif (i && i.length) {\r\n\t\t\tvar n = i.indexOf(t);\r\n\t\t\treturn n != -1 && i.splice(n, 1), this\r\n\t\t}\r\n\t}, t.emitEvent = function (e, t) {\r\n\t\tvar i = this._events && this._events[e];\r\n\t\tif (i && i.length) {\r\n\t\t\ti = i.slice(0), t = t || [];\r\n\t\t\tfor (var n = this._onceEvents && this._onceEvents[e], o = 0; o < i.length; o++) {\r\n\t\t\t\tvar r = i[o],\r\n\t\t\t\t\ts = n && n[r];\r\n\t\t\t\ts && (this.off(e, r), delete n[r]), r.apply(this, t)\r\n\t\t\t}\r\n\t\t\treturn this\r\n\t\t}\r\n\t}, t.allOff = function () {\r\n\t\tdelete this._events, delete this._onceEvents\r\n\t}, e\r\n}),\r\nfunction (e, t) {\r\n\t\"use strict\";\r\n\t\"function\" == typeof define && define.amd ? define([\"ev-emitter/ev-emitter\"], function (i) {\r\n\t\treturn t(e, i)\r\n\t}) : \"object\" == typeof module && module.exports ? module.exports = t(e, require(\"ev-emitter\")) : e.imagesLoaded = t(e, e.EvEmitter)\r\n}(\"undefined\" != typeof window ? window : this, function (e, t) {\r\n\tfunction i(e, t) {\r\n\t\tfor (var i in t) e[i] = t[i];\r\n\t\treturn e\r\n\t}\r\n\r\n\tfunction n(e) {\r\n\t\tif (Array.isArray(e)) return e;\r\n\t\tvar t = \"object\" == typeof e && \"number\" == typeof e.length;\r\n\t\treturn t ? d.call(e) : [e]\r\n\t}\r\n\r\n\tfunction o(e, t, r) {\r\n\t\tif (!(this instanceof o)) return new o(e, t, r);\r\n\t\tvar s = e;\r\n\t\treturn \"string\" == typeof e && (s = document.querySelectorAll(e)), s ? (this.elements = n(s), this.options = i({}, this.options), \"function\" == typeof t ? r = t : i(this.options, t), r && this.on(\"always\", r), this.getImages(), h && (this.jqDeferred = new h.Deferred), void setTimeout(this.check.bind(this))) : void a.error(\"Bad element for imagesLoaded \" + (s || e))\r\n\t}\r\n\r\n\tfunction r(e) {\r\n\t\tthis.img = e\r\n\t}\r\n\r\n\tfunction s(e, t) {\r\n\t\tthis.url = e, this.element = t, this.img = new Image\r\n\t}\r\n\tvar h = e.jQuery,\r\n\t\ta = e.console,\r\n\t\td = Array.prototype.slice;\r\n\to.prototype = Object.create(t.prototype), o.prototype.options = {}, o.prototype.getImages = function () {\r\n\t\tthis.images = [], this.elements.forEach(this.addElementImages, this)\r\n\t}, o.prototype.addElementImages = function (e) {\r\n\t\t\"IMG\" == e.nodeName && this.addImage(e), this.options.background === !0 && this.addElementBackgroundImages(e);\r\n\t\tvar t = e.nodeType;\r\n\t\tif (t && u[t]) {\r\n\t\t\tfor (var i = e.querySelectorAll(\"img\"), n = 0; n < i.length; n++) {\r\n\t\t\t\tvar o = i[n];\r\n\t\t\t\tthis.addImage(o)\r\n\t\t\t}\r\n\t\t\tif (\"string\" == typeof this.options.background) {\r\n\t\t\t\tvar r = e.querySelectorAll(this.options.background);\r\n\t\t\t\tfor (n = 0; n < r.length; n++) {\r\n\t\t\t\t\tvar s = r[n];\r\n\t\t\t\t\tthis.addElementBackgroundImages(s)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tvar u = {\r\n\t\t1: !0,\r\n\t\t9: !0,\r\n\t\t11: !0\r\n\t};\r\n\treturn o.prototype.addElementBackgroundImages = function (e) {\r\n\t\tvar t = getComputedStyle(e);\r\n\t\tif (t)\r\n\t\t\tfor (var i = /url\\((['\"])?(.*?)\\1\\)/gi, n = i.exec(t.backgroundImage); null !== n;) {\r\n\t\t\t\tvar o = n && n[2];\r\n\t\t\t\to && this.addBackground(o, e), n = i.exec(t.backgroundImage)\r\n\t\t\t}\r\n\t}, o.prototype.addImage = function (e) {\r\n\t\tvar t = new r(e);\r\n\t\tthis.images.push(t)\r\n\t}, o.prototype.addBackground = function (e, t) {\r\n\t\tvar i = new s(e, t);\r\n\t\tthis.images.push(i)\r\n\t}, o.prototype.check = function () {\r\n\t\tfunction e(e, i, n) {\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\tt.progress(e, i, n)\r\n\t\t\t})\r\n\t\t}\r\n\t\tvar t = this;\r\n\t\treturn this.progressedCount = 0, this.hasAnyBroken = !1, this.images.length ? void this.images.forEach(function (t) {\r\n\t\t\tt.once(\"progress\", e), t.check()\r\n\t\t}) : void this.complete()\r\n\t}, o.prototype.progress = function (e, t, i) {\r\n\t\tthis.progressedCount++, this.hasAnyBroken = this.hasAnyBroken || !e.isLoaded, this.emitEvent(\"progress\", [this, e, t]), this.jqDeferred && this.jqDeferred.notify && this.jqDeferred.notify(this, e), this.progressedCount == this.images.length && this.complete(), this.options.debug && a && a.log(\"progress: \" + i, e, t)\r\n\t}, o.prototype.complete = function () {\r\n\t\tvar e = this.hasAnyBroken ? \"fail\" : \"done\";\r\n\t\tif (this.isComplete = !0, this.emitEvent(e, [this]), this.emitEvent(\"always\", [this]), this.jqDeferred) {\r\n\t\t\tvar t = this.hasAnyBroken ? \"reject\" : \"resolve\";\r\n\t\t\tthis.jqDeferred[t](this)\r\n\t\t}\r\n\t}, r.prototype = Object.create(t.prototype), r.prototype.check = function () {\r\n\t\tvar e = this.getIsImageComplete();\r\n\t\treturn e ? void this.confirm(0 !== this.img.naturalWidth, \"naturalWidth\") : (this.proxyImage = new Image, this.proxyImage.addEventListener(\"load\", this), this.proxyImage.addEventListener(\"error\", this), this.img.addEventListener(\"load\", this), this.img.addEventListener(\"error\", this), void(this.proxyImage.src = this.img.src))\r\n\t}, r.prototype.getIsImageComplete = function () {\r\n\t\treturn this.img.complete && this.img.naturalWidth\r\n\t}, r.prototype.confirm = function (e, t) {\r\n\t\tthis.isLoaded = e, this.emitEvent(\"progress\", [this, this.img, t])\r\n\t}, r.prototype.handleEvent = function (e) {\r\n\t\tvar t = \"on\" + e.type;\r\n\t\tthis[t] && this[t](e)\r\n\t}, r.prototype.onload = function () {\r\n\t\tthis.confirm(!0, \"onload\"), this.unbindEvents()\r\n\t}, r.prototype.onerror = function () {\r\n\t\tthis.confirm(!1, \"onerror\"), this.unbindEvents()\r\n\t}, r.prototype.unbindEvents = function () {\r\n\t\tthis.proxyImage.removeEventListener(\"load\", this), this.proxyImage.removeEventListener(\"error\", this), this.img.removeEventListener(\"load\", this), this.img.removeEventListener(\"error\", this)\r\n\t}, s.prototype = Object.create(r.prototype), s.prototype.check = function () {\r\n\t\tthis.img.addEventListener(\"load\", this), this.img.addEventListener(\"error\", this), this.img.src = this.url;\r\n\t\tvar e = this.getIsImageComplete();\r\n\t\te && (this.confirm(0 !== this.img.naturalWidth, \"naturalWidth\"), this.unbindEvents())\r\n\t}, s.prototype.unbindEvents = function () {\r\n\t\tthis.img.removeEventListener(\"load\", this), this.img.removeEventListener(\"error\", this)\r\n\t}, s.prototype.confirm = function (e, t) {\r\n\t\tthis.isLoaded = e, this.emitEvent(\"progress\", [this, this.element, t])\r\n\t}, o.makeJQueryPlugin = function (t) {\r\n\t\tt = t || e.jQuery, t && (h = t, h.fn.imagesLoaded = function (e, t) {\r\n\t\t\tvar i = new o(this, e, t);\r\n\t\t\treturn i.jqDeferred.promise(h(this))\r\n\t\t})\r\n\t}, o.makeJQueryPlugin(), o\r\n});\r\n\n/*!\r\n * Flickity PACKAGED v2.1.1\r\n * Touch, responsive, flickable carousels\r\n *\r\n * Licensed GPLv3 for open source use\r\n * or Flickity Commercial License for commercial use\r\n *\r\n * https://flickity.metafizzy.co\r\n * Copyright 2015-2018 Metafizzy\r\n */\r\n\r\n! function (t, e) {\r\n\t\"function\" == typeof define && define.amd ? define(\"jquery-bridget/jquery-bridget\", [\"jquery\"], function (i) {\r\n\t\treturn e(t, i)\r\n\t}) : \"object\" == typeof module && module.exports ? module.exports = e(t, require(\"jquery\")) : t.jQueryBridget = e(t, t.jQuery)\r\n}(window, function (t, e) {\r\n\t\"use strict\";\r\n\r\n\tfunction i(i, o, a) {\r\n\t\tfunction l(t, e, n) {\r\n\t\t\tvar s, o = \"$().\" + i + '(\"' + e + '\")';\r\n\t\t\treturn t.each(function (t, l) {\r\n\t\t\t\tvar h = a.data(l, i);\r\n\t\t\t\tif (!h) return void r(i + \" not initialized. Cannot call methods, i.e. \" + o);\r\n\t\t\t\tvar c = h[e];\r\n\t\t\t\tif (!c || \"_\" == e.charAt(0)) return void r(o + \" is not a valid method\");\r\n\t\t\t\tvar d = c.apply(h, n);\r\n\t\t\t\ts = void 0 === s ? d : s\r\n\t\t\t}), void 0 !== s ? s : t\r\n\t\t}\r\n\r\n\t\tfunction h(t, e) {\r\n\t\t\tt.each(function (t, n) {\r\n\t\t\t\tvar s = a.data(n, i);\r\n\t\t\t\ts ? (s.option(e), s._init()) : (s = new o(n, e), a.data(n, i, s))\r\n\t\t\t})\r\n\t\t}\r\n\t\ta = a || e || t.jQuery, a && (o.prototype.option || (o.prototype.option = function (t) {\r\n\t\t\ta.isPlainObject(t) && (this.options = a.extend(!0, this.options, t))\r\n\t\t}), a.fn[i] = function (t) {\r\n\t\t\tif (\"string\" == typeof t) {\r\n\t\t\t\tvar e = s.call(arguments, 1);\r\n\t\t\t\treturn l(this, t, e)\r\n\t\t\t}\r\n\t\t\treturn h(this, t), this\r\n\t\t}, n(a))\r\n\t}\r\n\r\n\tfunction n(t) {\r\n\t\t!t || t && t.bridget || (t.bridget = i)\r\n\t}\r\n\tvar s = Array.prototype.slice,\r\n\t\to = t.console,\r\n\t\tr = \"undefined\" == typeof o ? function () {} : function (t) {\r\n\t\t\to.error(t)\r\n\t\t};\r\n\treturn n(e || t.jQuery), i\r\n}),\r\nfunction (t, e) {\r\n\t\"function\" == typeof define && define.amd ? define(\"ev-emitter/ev-emitter\", e) : \"object\" == typeof module && module.exports ? module.exports = e() : t.EvEmitter = e()\r\n}(\"undefined\" != typeof window ? window : this, function () {\r\n\tfunction t() {}\r\n\tvar e = t.prototype;\r\n\treturn e.on = function (t, e) {\r\n\t\tif (t && e) {\r\n\t\t\tvar i = this._events = this._events || {},\r\n\t\t\t\tn = i[t] = i[t] || [];\r\n\t\t\treturn n.indexOf(e) == -1 && n.push(e), this\r\n\t\t}\r\n\t}, e.once = function (t, e) {\r\n\t\tif (t && e) {\r\n\t\t\tthis.on(t, e);\r\n\t\t\tvar i = this._onceEvents = this._onceEvents || {},\r\n\t\t\t\tn = i[t] = i[t] || {};\r\n\t\t\treturn n[e] = !0, this\r\n\t\t}\r\n\t}, e.off = function (t, e) {\r\n\t\tvar i = this._events && this._events[t];\r\n\t\tif (i && i.length) {\r\n\t\t\tvar n = i.indexOf(e);\r\n\t\t\treturn n != -1 && i.splice(n, 1), this\r\n\t\t}\r\n\t}, e.emitEvent = function (t, e) {\r\n\t\tvar i = this._events && this._events[t];\r\n\t\tif (i && i.length) {\r\n\t\t\ti = i.slice(0), e = e || [];\r\n\t\t\tfor (var n = this._onceEvents && this._onceEvents[t], s = 0; s < i.length; s++) {\r\n\t\t\t\tvar o = i[s],\r\n\t\t\t\t\tr = n && n[o];\r\n\t\t\t\tr && (this.off(t, o), delete n[o]), o.apply(this, e)\r\n\t\t\t}\r\n\t\t\treturn this\r\n\t\t}\r\n\t}, e.allOff = function () {\r\n\t\tdelete this._events, delete this._onceEvents\r\n\t}, t\r\n}),\r\nfunction (t, e) {\r\n\t\"use strict\";\r\n\t\"function\" == typeof define && define.amd ? define(\"get-size/get-size\", [], function () {\r\n\t\treturn e()\r\n\t}) : \"object\" == typeof module && module.exports ? module.exports = e() : t.getSize = e()\r\n}(window, function () {\r\n\t\"use strict\";\r\n\r\n\tfunction t(t) {\r\n\t\tvar e = parseFloat(t),\r\n\t\t\ti = t.indexOf(\"%\") == -1 && !isNaN(e);\r\n\t\treturn i && e\r\n\t}\r\n\r\n\tfunction e() {}\r\n\r\n\tfunction i() {\r\n\t\tfor (var t = {\r\n\t\t\t\twidth: 0,\r\n\t\t\t\theight: 0,\r\n\t\t\t\tinnerWidth: 0,\r\n\t\t\t\tinnerHeight: 0,\r\n\t\t\t\touterWidth: 0,\r\n\t\t\t\touterHeight: 0\r\n\t\t\t}, e = 0; e < h; e++) {\r\n\t\t\tvar i = l[e];\r\n\t\t\tt[i] = 0\r\n\t\t}\r\n\t\treturn t\r\n\t}\r\n\r\n\tfunction n(t) {\r\n\t\tvar e = getComputedStyle(t);\r\n\t\treturn e || a(\"Style returned \" + e + \". Are you running this code in a hidden iframe on Firefox? See http://bit.ly/getsizebug1\"), e\r\n\t}\r\n\r\n\tfunction s() {\r\n\t\tif (!c) {\r\n\t\t\tc = !0;\r\n\t\t\tvar e = document.createElement(\"div\");\r\n\t\t\te.style.width = \"200px\", e.style.padding = \"1px 2px 3px 4px\", e.style.borderStyle = \"solid\", e.style.borderWidth = \"1px 2px 3px 4px\", e.style.boxSizing = \"border-box\";\r\n\t\t\tvar i = document.body || document.documentElement;\r\n\t\t\ti.appendChild(e);\r\n\t\t\tvar s = n(e);\r\n\t\t\to.isBoxSizeOuter = r = 200 == t(s.width), i.removeChild(e)\r\n\t\t}\r\n\t}\r\n\r\n\tfunction o(e) {\r\n\t\tif (s(), \"string\" == typeof e && (e = document.querySelector(e)), e && \"object\" == typeof e && e.nodeType) {\r\n\t\t\tvar o = n(e);\r\n\t\t\tif (\"none\" == o.display) return i();\r\n\t\t\tvar a = {};\r\n\t\t\ta.width = e.offsetWidth, a.height = e.offsetHeight;\r\n\t\t\tfor (var c = a.isBorderBox = \"border-box\" == o.boxSizing, d = 0; d < h; d++) {\r\n\t\t\t\tvar u = l[d],\r\n\t\t\t\t\tf = o[u],\r\n\t\t\t\t\tp = parseFloat(f);\r\n\t\t\t\ta[u] = isNaN(p) ? 0 : p\r\n\t\t\t}\r\n\t\t\tvar g = a.paddingLeft + a.paddingRight,\r\n\t\t\t\tv = a.paddingTop + a.paddingBottom,\r\n\t\t\t\tm = a.marginLeft + a.marginRight,\r\n\t\t\t\ty = a.marginTop + a.marginBottom,\r\n\t\t\t\tb = a.borderLeftWidth + a.borderRightWidth,\r\n\t\t\t\tE = a.borderTopWidth + a.borderBottomWidth,\r\n\t\t\t\tS = c && r,\r\n\t\t\t\tC = t(o.width);\r\n\t\t\tC !== !1 && (a.width = C + (S ? 0 : g + b));\r\n\t\t\tvar x = t(o.height);\r\n\t\t\treturn x !== !1 && (a.height = x + (S ? 0 : v + E)), a.innerWidth = a.width - (g + b), a.innerHeight = a.height - (v + E), a.outerWidth = a.width + m, a.outerHeight = a.height + y, a\r\n\t\t}\r\n\t}\r\n\tvar r, a = \"undefined\" == typeof console ? e : function (t) {\r\n\t\t\tconsole.error(t)\r\n\t\t},\r\n\t\tl = [\"paddingLeft\", \"paddingRight\", \"paddingTop\", \"paddingBottom\", \"marginLeft\", \"marginRight\", \"marginTop\", \"marginBottom\", \"borderLeftWidth\", \"borderRightWidth\", \"borderTopWidth\", \"borderBottomWidth\"],\r\n\t\th = l.length,\r\n\t\tc = !1;\r\n\treturn o\r\n}),\r\nfunction (t, e) {\r\n\t\"use strict\";\r\n\t\"function\" == typeof define && define.amd ? define(\"desandro-matches-selector/matches-selector\", e) : \"object\" == typeof module && module.exports ? module.exports = e() : t.matchesSelector = e()\r\n}(window, function () {\r\n\t\"use strict\";\r\n\tvar t = function () {\r\n\t\tvar t = window.Element.prototype;\r\n\t\tif (t.matches) return \"matches\";\r\n\t\tif (t.matchesSelector) return \"matchesSelector\";\r\n\t\tfor (var e = [\"webkit\", \"moz\", \"ms\", \"o\"], i = 0; i < e.length; i++) {\r\n\t\t\tvar n = e[i],\r\n\t\t\t\ts = n + \"MatchesSelector\";\r\n\t\t\tif (t[s]) return s\r\n\t\t}\r\n\t}();\r\n\treturn function (e, i) {\r\n\t\treturn e[t](i)\r\n\t}\r\n}),\r\nfunction (t, e) {\r\n\t\"function\" == typeof define && define.amd ? define(\"fizzy-ui-utils/utils\", [\"desandro-matches-selector/matches-selector\"], function (i) {\r\n\t\treturn e(t, i)\r\n\t}) : \"object\" == typeof module && module.exports ? module.exports = e(t, require(\"desandro-matches-selector\")) : t.fizzyUIUtils = e(t, t.matchesSelector)\r\n}(window, function (t, e) {\r\n\tvar i = {};\r\n\ti.extend = function (t, e) {\r\n\t\tfor (var i in e) t[i] = e[i];\r\n\t\treturn t\r\n\t}, i.modulo = function (t, e) {\r\n\t\treturn (t % e + e) % e\r\n\t};\r\n\tvar n = Array.prototype.slice;\r\n\ti.makeArray = function (t) {\r\n\t\tif (Array.isArray(t)) return t;\r\n\t\tif (null === t || void 0 === t) return [];\r\n\t\tvar e = \"object\" == typeof t && \"number\" == typeof t.length;\r\n\t\treturn e ? n.call(t) : [t]\r\n\t}, i.removeFrom = function (t, e) {\r\n\t\tvar i = t.indexOf(e);\r\n\t\ti != -1 && t.splice(i, 1)\r\n\t}, i.getParent = function (t, i) {\r\n\t\tfor (; t.parentNode && t != document.body;)\r\n\t\t\tif (t = t.parentNode, e(t, i)) return t\r\n\t}, i.getQueryElement = function (t) {\r\n\t\treturn \"string\" == typeof t ? document.querySelector(t) : t\r\n\t}, i.handleEvent = function (t) {\r\n\t\tvar e = \"on\" + t.type;\r\n\t\tthis[e] && this[e](t)\r\n\t}, i.filterFindElements = function (t, n) {\r\n\t\tt = i.makeArray(t);\r\n\t\tvar s = [];\r\n\t\treturn t.forEach(function (t) {\r\n\t\t\tif (t instanceof HTMLElement) {\r\n\t\t\t\tif (!n) return void s.push(t);\r\n\t\t\t\te(t, n) && s.push(t);\r\n\t\t\t\tfor (var i = t.querySelectorAll(n), o = 0; o < i.length; o++) s.push(i[o])\r\n\t\t\t}\r\n\t\t}), s\r\n\t}, i.debounceMethod = function (t, e, i) {\r\n\t\ti = i || 100;\r\n\t\tvar n = t.prototype[e],\r\n\t\t\ts = e + \"Timeout\";\r\n\t\tt.prototype[e] = function () {\r\n\t\t\tvar t = this[s];\r\n\t\t\tclearTimeout(t);\r\n\t\t\tvar e = arguments,\r\n\t\t\t\to = this;\r\n\t\t\tthis[s] = setTimeout(function () {\r\n\t\t\t\tn.apply(o, e), delete o[s]\r\n\t\t\t}, i)\r\n\t\t}\r\n\t}, i.docReady = function (t) {\r\n\t\tvar e = document.readyState;\r\n\t\t\"complete\" == e || \"interactive\" == e ? setTimeout(t) : document.addEventListener(\"DOMContentLoaded\", t)\r\n\t}, i.toDashed = function (t) {\r\n\t\treturn t.replace(/(.)([A-Z])/g, function (t, e, i) {\r\n\t\t\treturn e + \"-\" + i\r\n\t\t}).toLowerCase()\r\n\t};\r\n\tvar s = t.console;\r\n\treturn i.htmlInit = function (e, n) {\r\n\t\ti.docReady(function () {\r\n\t\t\tvar o = i.toDashed(n),\r\n\t\t\t\tr = \"data-\" + o,\r\n\t\t\t\ta = document.querySelectorAll(\"[\" + r + \"]\"),\r\n\t\t\t\tl = document.querySelectorAll(\".js-\" + o),\r\n\t\t\t\th = i.makeArray(a).concat(i.makeArray(l)),\r\n\t\t\t\tc = r + \"-options\",\r\n\t\t\t\td = t.jQuery;\r\n\t\t\th.forEach(function (t) {\r\n\t\t\t\tvar i, o = t.getAttribute(r) || t.getAttribute(c);\r\n\t\t\t\ttry {\r\n\t\t\t\t\ti = o && JSON.parse(o)\r\n\t\t\t\t} catch (a) {\r\n\t\t\t\t\treturn void(s && s.error(\"Error parsing \" + r + \" on \" + t.className + \": \" + a))\r\n\t\t\t\t}\r\n\t\t\t\tvar l = new e(t, i);\r\n\t\t\t\td && d.data(t, n, l)\r\n\t\t\t})\r\n\t\t})\r\n\t}, i\r\n}),\r\nfunction (t, e) {\r\n\t\"function\" == typeof define && define.amd ? define(\"flickity/js/cell\", [\"get-size/get-size\"], function (i) {\r\n\t\treturn e(t, i)\r\n\t}) : \"object\" == typeof module && module.exports ? module.exports = e(t, require(\"get-size\")) : (t.Flickity = t.Flickity || {}, t.Flickity.Cell = e(t, t.getSize))\r\n}(window, function (t, e) {\r\n\tfunction i(t, e) {\r\n\t\tthis.element = t, this.parent = e, this.create()\r\n\t}\r\n\tvar n = i.prototype;\r\n\treturn n.create = function () {\r\n\t\tthis.element.style.position = \"absolute\", this.element.setAttribute(\"aria-selected\", \"false\"), this.x = 0, this.shift = 0\r\n\t}, n.destroy = function () {\r\n\t\tthis.element.style.position = \"\";\r\n\t\tvar t = this.parent.originSide;\r\n\t\tthis.element.removeAttribute(\"aria-selected\"), this.element.style[t] = \"\"\r\n\t}, n.getSize = function () {\r\n\t\tthis.size = e(this.element)\r\n\t}, n.setPosition = function (t) {\r\n\t\tthis.x = t, this.updateTarget(), this.renderPosition(t)\r\n\t}, n.updateTarget = n.setDefaultTarget = function () {\r\n\t\tvar t = \"left\" == this.parent.originSide ? \"marginLeft\" : \"marginRight\";\r\n\t\tthis.target = this.x + this.size[t] + this.size.width * this.parent.cellAlign\r\n\t}, n.renderPosition = function (t) {\r\n\t\tvar e = this.parent.originSide;\r\n\t\tthis.element.style[e] = this.parent.getPositionValue(t)\r\n\t}, n.wrapShift = function (t) {\r\n\t\tthis.shift = t, this.renderPosition(this.x + this.parent.slideableWidth * t)\r\n\t}, n.remove = function () {\r\n\t\tthis.element.parentNode.removeChild(this.element)\r\n\t}, i\r\n}),\r\nfunction (t, e) {\r\n\t\"function\" == typeof define && define.amd ? define(\"flickity/js/slide\", e) : \"object\" == typeof module && module.exports ? module.exports = e() : (t.Flickity = t.Flickity || {}, t.Flickity.Slide = e())\r\n}(window, function () {\r\n\t\"use strict\";\r\n\r\n\tfunction t(t) {\r\n\t\tthis.parent = t, this.isOriginLeft = \"left\" == t.originSide, this.cells = [], this.outerWidth = 0, this.height = 0\r\n\t}\r\n\tvar e = t.prototype;\r\n\treturn e.addCell = function (t) {\r\n\t\tif (this.cells.push(t), this.outerWidth += t.size.outerWidth, this.height = Math.max(t.size.outerHeight, this.height), 1 == this.cells.length) {\r\n\t\t\tthis.x = t.x;\r\n\t\t\tvar e = this.isOriginLeft ? \"marginLeft\" : \"marginRight\";\r\n\t\t\tthis.firstMargin = t.size[e]\r\n\t\t}\r\n\t}, e.updateTarget = function () {\r\n\t\tvar t = this.isOriginLeft ? \"marginRight\" : \"marginLeft\",\r\n\t\t\te = this.getLastCell(),\r\n\t\t\ti = e ? e.size[t] : 0,\r\n\t\t\tn = this.outerWidth - (this.firstMargin + i);\r\n\t\tthis.target = this.x + this.firstMargin + n * this.parent.cellAlign\r\n\t}, e.getLastCell = function () {\r\n\t\treturn this.cells[this.cells.length - 1]\r\n\t}, e.select = function () {\r\n\t\tthis.changeSelected(!0)\r\n\t}, e.unselect = function () {\r\n\t\tthis.changeSelected(!1)\r\n\t}, e.changeSelected = function (t) {\r\n\t\tvar e = t ? \"add\" : \"remove\";\r\n\t\tthis.cells.forEach(function (i) {\r\n\t\t\ti.element.classList[e](\"is-selected\"), i.element.setAttribute(\"aria-selected\", t.toString())\r\n\t\t})\r\n\t}, e.getCellElements = function () {\r\n\t\treturn this.cells.map(function (t) {\r\n\t\t\treturn t.element\r\n\t\t})\r\n\t}, t\r\n}),\r\nfunction (t, e) {\r\n\t\"function\" == typeof define && define.amd ? define(\"flickity/js/animate\", [\"fizzy-ui-utils/utils\"], function (i) {\r\n\t\treturn e(t, i)\r\n\t}) : \"object\" == typeof module && module.exports ? module.exports = e(t, require(\"fizzy-ui-utils\")) : (t.Flickity = t.Flickity || {}, t.Flickity.animatePrototype = e(t, t.fizzyUIUtils))\r\n}(window, function (t, e) {\r\n\tvar i = {};\r\n\treturn i.startAnimation = function () {\r\n\t\tthis.isAnimating || (this.isAnimating = !0, this.restingFrames = 0, this.animate())\r\n\t}, i.animate = function () {\r\n\t\tthis.applyDragForce(), this.applySelectedAttraction();\r\n\t\tvar t = this.x;\r\n\t\tif (this.integratePhysics(), this.positionSlider(), this.settle(t), this.isAnimating) {\r\n\t\t\tvar e = this;\r\n\t\t\trequestAnimationFrame(function () {\r\n\t\t\t\te.animate()\r\n\t\t\t})\r\n\t\t}\r\n\t}, i.positionSlider = function () {\r\n\t\tvar t = this.x;\r\n\t\tthis.options.wrapAround && this.cells.length > 1 && (t = e.modulo(t, this.slideableWidth), t -= this.slideableWidth, this.shiftWrapCells(t)), t += this.cursorPosition, t = this.options.rightToLeft ? -t : t;\r\n\t\tvar i = this.getPositionValue(t);\r\n\t\tthis.slider.style.transform = this.isAnimating ? \"translate3d(\" + i + \",0,0)\" : \"translateX(\" + i + \")\";\r\n\t\tvar n = this.slides[0];\r\n\t\tif (n) {\r\n\t\t\tvar s = -this.x - n.target,\r\n\t\t\t\to = s / this.slidesWidth;\r\n\t\t\tthis.dispatchEvent(\"scroll\", null, [o, s])\r\n\t\t}\r\n\t}, i.positionSliderAtSelected = function () {\r\n\t\tthis.cells.length && (this.x = -this.selectedSlide.target, this.velocity = 0, this.positionSlider())\r\n\t}, i.getPositionValue = function (t) {\r\n\t\treturn this.options.percentPosition ? .01 * Math.round(t / this.size.innerWidth * 1e4) + \"%\" : Math.round(t) + \"px\"\r\n\t}, i.settle = function (t) {\r\n\t\tthis.isPointerDown || Math.round(100 * this.x) != Math.round(100 * t) || this.restingFrames++, this.restingFrames > 2 && (this.isAnimating = !1, delete this.isFreeScrolling, this.positionSlider(), this.dispatchEvent(\"settle\", null, [this.selectedIndex]))\r\n\t}, i.shiftWrapCells = function (t) {\r\n\t\tvar e = this.cursorPosition + t;\r\n\t\tthis._shiftCells(this.beforeShiftCells, e, -1);\r\n\t\tvar i = this.size.innerWidth - (t + this.slideableWidth + this.cursorPosition);\r\n\t\tthis._shiftCells(this.afterShiftCells, i, 1)\r\n\t}, i._shiftCells = function (t, e, i) {\r\n\t\tfor (var n = 0; n < t.length; n++) {\r\n\t\t\tvar s = t[n],\r\n\t\t\t\to = e > 0 ? i : 0;\r\n\t\t\ts.wrapShift(o), e -= s.size.outerWidth\r\n\t\t}\r\n\t}, i._unshiftCells = function (t) {\r\n\t\tif (t && t.length)\r\n\t\t\tfor (var e = 0; e < t.length; e++) t[e].wrapShift(0)\r\n\t}, i.integratePhysics = function () {\r\n\t\tthis.x += this.velocity, this.velocity *= this.getFrictionFactor()\r\n\t}, i.applyForce = function (t) {\r\n\t\tthis.velocity += t\r\n\t}, i.getFrictionFactor = function () {\r\n\t\treturn 1 - this.options[this.isFreeScrolling ? \"freeScrollFriction\" : \"friction\"]\r\n\t}, i.getRestingPosition = function () {\r\n\t\treturn this.x + this.velocity / (1 - this.getFrictionFactor())\r\n\t}, i.applyDragForce = function () {\r\n\t\tif (this.isDraggable && this.isPointerDown) {\r\n\t\t\tvar t = this.dragX - this.x,\r\n\t\t\t\te = t - this.velocity;\r\n\t\t\tthis.applyForce(e)\r\n\t\t}\r\n\t}, i.applySelectedAttraction = function () {\r\n\t\tvar t = this.isDraggable && this.isPointerDown;\r\n\t\tif (!t && !this.isFreeScrolling && this.slides.length) {\r\n\t\t\tvar e = this.selectedSlide.target * -1 - this.x,\r\n\t\t\t\ti = e * this.options.selectedAttraction;\r\n\t\t\tthis.applyForce(i)\r\n\t\t}\r\n\t}, i\r\n}),\r\nfunction (t, e) {\r\n\tif (\"function\" == typeof define && define.amd) define(\"flickity/js/flickity\", [\"ev-emitter/ev-emitter\", \"get-size/get-size\", \"fizzy-ui-utils/utils\", \"./cell\", \"./slide\", \"./animate\"], function (i, n, s, o, r, a) {\r\n\t\treturn e(t, i, n, s, o, r, a)\r\n\t});\r\n\telse if (\"object\" == typeof module && module.exports) module.exports = e(t, require(\"ev-emitter\"), require(\"get-size\"), require(\"fizzy-ui-utils\"), require(\"./cell\"), require(\"./slide\"), require(\"./animate\"));\r\n\telse {\r\n\t\tvar i = t.Flickity;\r\n\t\tt.Flickity = e(t, t.EvEmitter, t.getSize, t.fizzyUIUtils, i.Cell, i.Slide, i.animatePrototype)\r\n\t}\r\n}(window, function (t, e, i, n, s, o, r) {\r\n\tfunction a(t, e) {\r\n\t\tfor (t = n.makeArray(t); t.length;) e.appendChild(t.shift())\r\n\t}\r\n\r\n\tfunction l(t, e) {\r\n\t\tvar i = n.getQueryElement(t);\r\n\t\tif (!i) return void(d && d.error(\"Bad element for Flickity: \" + (i || t)));\r\n\t\tif (this.element = i, this.element.flickityGUID) {\r\n\t\t\tvar s = f[this.element.flickityGUID];\r\n\t\t\treturn s.option(e), s\r\n\t\t}\r\n\t\th && (this.$element = h(this.element)), this.options = n.extend({}, this.constructor.defaults), this.option(e), this._create()\r\n\t}\r\n\tvar h = t.jQuery,\r\n\t\tc = t.getComputedStyle,\r\n\t\td = t.console,\r\n\t\tu = 0,\r\n\t\tf = {};\r\n\tl.defaults = {\r\n\t\taccessibility: !0,\r\n\t\tcellAlign: \"center\",\r\n\t\tfreeScrollFriction: .075,\r\n\t\tfriction: .28,\r\n\t\tnamespaceJQueryEvents: !0,\r\n\t\tpercentPosition: !0,\r\n\t\tresize: !0,\r\n\t\tselectedAttraction: .025,\r\n\t\tsetGallerySize: !0\r\n\t}, l.createMethods = [];\r\n\tvar p = l.prototype;\r\n\tn.extend(p, e.prototype), p._create = function () {\r\n\t\tvar e = this.guid = ++u;\r\n\t\tthis.element.flickityGUID = e, f[e] = this, this.selectedIndex = 0, this.restingFrames = 0, this.x = 0, this.velocity = 0, this.originSide = this.options.rightToLeft ? \"right\" : \"left\", this.viewport = document.createElement(\"div\"), this.viewport.className = \"flickity-viewport\", this._createSlider(), (this.options.resize || this.options.watchCSS) && t.addEventListener(\"resize\", this);\r\n\t\tfor (var i in this.options.on) {\r\n\t\t\tvar n = this.options.on[i];\r\n\t\t\tthis.on(i, n)\r\n\t\t}\r\n\t\tl.createMethods.forEach(function (t) {\r\n\t\t\tthis[t]()\r\n\t\t}, this), this.options.watchCSS ? this.watchCSS() : this.activate()\r\n\t}, p.option = function (t) {\r\n\t\tn.extend(this.options, t)\r\n\t}, p.activate = function () {\r\n\t\tif (!this.isActive) {\r\n\t\t\tthis.isActive = !0, this.element.classList.add(\"flickity-enabled\"), this.options.rightToLeft && this.element.classList.add(\"flickity-rtl\"), this.getSize();\r\n\t\t\tvar t = this._filterFindCellElements(this.element.children);\r\n\t\t\ta(t, this.slider), this.viewport.appendChild(this.slider), this.element.appendChild(this.viewport), this.reloadCells(), this.options.accessibility && (this.element.tabIndex = 0, this.element.addEventListener(\"keydown\", this)), this.emitEvent(\"activate\");\r\n\t\t\tvar e, i = this.options.initialIndex;\r\n\t\t\te = this.isInitActivated ? this.selectedIndex : void 0 !== i && this.cells[i] ? i : 0, this.select(e, !1, !0), this.isInitActivated = !0, this.dispatchEvent(\"ready\")\r\n\t\t}\r\n\t}, p._createSlider = function () {\r\n\t\tvar t = document.createElement(\"div\");\r\n\t\tt.className = \"flickity-slider\", t.style[this.originSide] = 0, this.slider = t\r\n\t}, p._filterFindCellElements = function (t) {\r\n\t\treturn n.filterFindElements(t, this.options.cellSelector)\r\n\t}, p.reloadCells = function () {\r\n\t\tthis.cells = this._makeCells(this.slider.children), this.positionCells(), this._getWrapShiftCells(), this.setGallerySize()\r\n\t}, p._makeCells = function (t) {\r\n\t\tvar e = this._filterFindCellElements(t),\r\n\t\t\ti = e.map(function (t) {\r\n\t\t\t\treturn new s(t, this)\r\n\t\t\t}, this);\r\n\t\treturn i\r\n\t}, p.getLastCell = function () {\r\n\t\treturn this.cells[this.cells.length - 1]\r\n\t}, p.getLastSlide = function () {\r\n\t\treturn this.slides[this.slides.length - 1]\r\n\t}, p.positionCells = function () {\r\n\t\tthis._sizeCells(this.cells), this._positionCells(0)\r\n\t}, p._positionCells = function (t) {\r\n\t\tt = t || 0, this.maxCellHeight = t ? this.maxCellHeight || 0 : 0;\r\n\t\tvar e = 0;\r\n\t\tif (t > 0) {\r\n\t\t\tvar i = this.cells[t - 1];\r\n\t\t\te = i.x + i.size.outerWidth\r\n\t\t}\r\n\t\tfor (var n = this.cells.length, s = t; s < n; s++) {\r\n\t\t\tvar o = this.cells[s];\r\n\t\t\to.setPosition(e), e += o.size.outerWidth, this.maxCellHeight = Math.max(o.size.outerHeight, this.maxCellHeight)\r\n\t\t}\r\n\t\tthis.slideableWidth = e, this.updateSlides(), this._containSlides(), this.slidesWidth = n ? this.getLastSlide().target - this.slides[0].target : 0\r\n\t}, p._sizeCells = function (t) {\r\n\t\tt.forEach(function (t) {\r\n\t\t\tt.getSize()\r\n\t\t})\r\n\t}, p.updateSlides = function () {\r\n\t\tif (this.slides = [], this.cells.length) {\r\n\t\t\tvar t = new o(this);\r\n\t\t\tthis.slides.push(t);\r\n\t\t\tvar e = \"left\" == this.originSide,\r\n\t\t\t\ti = e ? \"marginRight\" : \"marginLeft\",\r\n\t\t\t\tn = this._getCanCellFit();\r\n\t\t\tthis.cells.forEach(function (e, s) {\r\n\t\t\t\tif (!t.cells.length) return void t.addCell(e);\r\n\t\t\t\tvar r = t.outerWidth - t.firstMargin + (e.size.outerWidth - e.size[i]);\r\n\t\t\t\tn.call(this, s, r) ? t.addCell(e) : (t.updateTarget(), t = new o(this), this.slides.push(t), t.addCell(e))\r\n\t\t\t}, this), t.updateTarget(), this.updateSelectedSlide()\r\n\t\t}\r\n\t}, p._getCanCellFit = function () {\r\n\t\tvar t = this.options.groupCells;\r\n\t\tif (!t) return function () {\r\n\t\t\treturn !1\r\n\t\t};\r\n\t\tif (\"number\" == typeof t) {\r\n\t\t\tvar e = parseInt(t, 10);\r\n\t\t\treturn function (t) {\r\n\t\t\t\treturn t % e !== 0\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar i = \"string\" == typeof t && t.match(/^(\\d+)%$/),\r\n\t\t\tn = i ? parseInt(i[1], 10) / 100 : 1;\r\n\t\treturn function (t, e) {\r\n\t\t\treturn e <= (this.size.innerWidth + 1) * n\r\n\t\t}\r\n\t}, p._init = p.reposition = function () {\r\n\t\tthis.positionCells(), this.positionSliderAtSelected()\r\n\t}, p.getSize = function () {\r\n\t\tthis.size = i(this.element), this.setCellAlign(), this.cursorPosition = this.size.innerWidth * this.cellAlign\r\n\t};\r\n\tvar g = {\r\n\t\tcenter: {\r\n\t\t\tleft: .5,\r\n\t\t\tright: .5\r\n\t\t},\r\n\t\tleft: {\r\n\t\t\tleft: 0,\r\n\t\t\tright: 1\r\n\t\t},\r\n\t\tright: {\r\n\t\t\tright: 0,\r\n\t\t\tleft: 1\r\n\t\t}\r\n\t};\r\n\treturn p.setCellAlign = function () {\r\n\t\tvar t = g[this.options.cellAlign];\r\n\t\tthis.cellAlign = t ? t[this.originSide] : this.options.cellAlign\r\n\t}, p.setGallerySize = function () {\r\n\t\tif (this.options.setGallerySize) {\r\n\t\t\tvar t = this.options.adaptiveHeight && this.selectedSlide ? this.selectedSlide.height : this.maxCellHeight;\r\n\t\t\tthis.viewport.style.height = t + \"px\"\r\n\t\t}\r\n\t}, p._getWrapShiftCells = function () {\r\n\t\tif (this.options.wrapAround) {\r\n\t\t\tthis._unshiftCells(this.beforeShiftCells), this._unshiftCells(this.afterShiftCells);\r\n\t\t\tvar t = this.cursorPosition,\r\n\t\t\t\te = this.cells.length - 1;\r\n\t\t\tthis.beforeShiftCells = this._getGapCells(t, e, -1), t = this.size.innerWidth - this.cursorPosition, this.afterShiftCells = this._getGapCells(t, 0, 1)\r\n\t\t}\r\n\t}, p._getGapCells = function (t, e, i) {\r\n\t\tfor (var n = []; t > 0;) {\r\n\t\t\tvar s = this.cells[e];\r\n\t\t\tif (!s) break;\r\n\t\t\tn.push(s), e += i, t -= s.size.outerWidth\r\n\t\t}\r\n\t\treturn n\r\n\t}, p._containSlides = function () {\r\n\t\tif (this.options.contain && !this.options.wrapAround && this.cells.length) {\r\n\t\t\tvar t = this.options.rightToLeft,\r\n\t\t\t\te = t ? \"marginRight\" : \"marginLeft\",\r\n\t\t\t\ti = t ? \"marginLeft\" : \"marginRight\",\r\n\t\t\t\tn = this.slideableWidth - this.getLastCell().size[i],\r\n\t\t\t\ts = n < this.size.innerWidth,\r\n\t\t\t\to = this.cursorPosition + this.cells[0].size[e],\r\n\t\t\t\tr = n - this.size.innerWidth * (1 - this.cellAlign);\r\n\t\t\tthis.slides.forEach(function (t) {\r\n\t\t\t\ts ? t.target = n * this.cellAlign : (t.target = Math.max(t.target, o), t.target = Math.min(t.target, r))\r\n\t\t\t}, this)\r\n\t\t}\r\n\t}, p.dispatchEvent = function (t, e, i) {\r\n\t\tvar n = e ? [e].concat(i) : i;\r\n\t\tif (this.emitEvent(t, n), h && this.$element) {\r\n\t\t\tt += this.options.namespaceJQueryEvents ? \".flickity\" : \"\";\r\n\t\t\tvar s = t;\r\n\t\t\tif (e) {\r\n\t\t\t\tvar o = h.Event(e);\r\n\t\t\t\to.type = t, s = o\r\n\t\t\t}\r\n\t\t\tthis.$element.trigger(s, i)\r\n\t\t}\r\n\t}, p.select = function (t, e, i) {\r\n\t\tif (this.isActive && (t = parseInt(t, 10), this._wrapSelect(t), (this.options.wrapAround || e) && (t = n.modulo(t, this.slides.length)), this.slides[t])) {\r\n\t\t\tvar s = this.selectedIndex;\r\n\t\t\tthis.selectedIndex = t, this.updateSelectedSlide(), i ? this.positionSliderAtSelected() : this.startAnimation(), this.options.adaptiveHeight && this.setGallerySize(), this.dispatchEvent(\"select\", null, [t]), t != s && this.dispatchEvent(\"change\", null, [t]), this.dispatchEvent(\"cellSelect\")\r\n\t\t}\r\n\t}, p._wrapSelect = function (t) {\r\n\t\tvar e = this.slides.length,\r\n\t\t\ti = this.options.wrapAround && e > 1;\r\n\t\tif (!i) return t;\r\n\t\tvar s = n.modulo(t, e),\r\n\t\t\to = Math.abs(s - this.selectedIndex),\r\n\t\t\tr = Math.abs(s + e - this.selectedIndex),\r\n\t\t\ta = Math.abs(s - e - this.selectedIndex);\r\n\t\t!this.isDragSelect && r < o ? t += e : !this.isDragSelect && a < o && (t -= e), t < 0 ? this.x -= this.slideableWidth : t >= e && (this.x += this.slideableWidth)\r\n\t}, p.previous = function (t, e) {\r\n\t\tthis.select(this.selectedIndex - 1, t, e)\r\n\t}, p.next = function (t, e) {\r\n\t\tthis.select(this.selectedIndex + 1, t, e)\r\n\t}, p.updateSelectedSlide = function () {\r\n\t\tvar t = this.slides[this.selectedIndex];\r\n\t\tt && (this.unselectSelectedSlide(), this.selectedSlide = t, t.select(), this.selectedCells = t.cells, this.selectedElements = t.getCellElements(), this.selectedCell = t.cells[0], this.selectedElement = this.selectedElements[0])\r\n\t}, p.unselectSelectedSlide = function () {\r\n\t\tthis.selectedSlide && this.selectedSlide.unselect()\r\n\t}, p.selectCell = function (t, e, i) {\r\n\t\tvar n = this.queryCell(t);\r\n\t\tif (n) {\r\n\t\t\tvar s = this.getCellSlideIndex(n);\r\n\t\t\tthis.select(s, e, i)\r\n\t\t}\r\n\t}, p.getCellSlideIndex = function (t) {\r\n\t\tfor (var e = 0; e < this.slides.length; e++) {\r\n\t\t\tvar i = this.slides[e],\r\n\t\t\t\tn = i.cells.indexOf(t);\r\n\t\t\tif (n != -1) return e\r\n\t\t}\r\n\t}, p.getCell = function (t) {\r\n\t\tfor (var e = 0; e < this.cells.length; e++) {\r\n\t\t\tvar i = this.cells[e];\r\n\t\t\tif (i.element == t) return i\r\n\t\t}\r\n\t}, p.getCells = function (t) {\r\n\t\tt = n.makeArray(t);\r\n\t\tvar e = [];\r\n\t\treturn t.forEach(function (t) {\r\n\t\t\tvar i = this.getCell(t);\r\n\t\t\ti && e.push(i)\r\n\t\t}, this), e\r\n\t}, p.getCellElements = function () {\r\n\t\treturn this.cells.map(function (t) {\r\n\t\t\treturn t.element\r\n\t\t})\r\n\t}, p.getParentCell = function (t) {\r\n\t\tvar e = this.getCell(t);\r\n\t\treturn e ? e : (t = n.getParent(t, \".flickity-slider > *\"), this.getCell(t))\r\n\t}, p.getAdjacentCellElements = function (t, e) {\r\n\t\tif (!t) return this.selectedSlide.getCellElements();\r\n\t\te = void 0 === e ? this.selectedIndex : e;\r\n\t\tvar i = this.slides.length;\r\n\t\tif (1 + 2 * t >= i) return this.getCellElements();\r\n\t\tfor (var s = [], o = e - t; o <= e + t; o++) {\r\n\t\t\tvar r = this.options.wrapAround ? n.modulo(o, i) : o,\r\n\t\t\t\ta = this.slides[r];\r\n\t\t\ta && (s = s.concat(a.getCellElements()))\r\n\t\t}\r\n\t\treturn s\r\n\t}, p.queryCell = function (t) {\r\n\t\treturn \"number\" == typeof t ? this.cells[t] : (\"string\" == typeof t && (t = this.element.querySelector(t)), this.getCell(t))\r\n\t}, p.uiChange = function () {\r\n\t\tthis.emitEvent(\"uiChange\")\r\n\t}, p.childUIPointerDown = function (t) {\r\n\t\tthis.emitEvent(\"childUIPointerDown\", [t])\r\n\t}, p.onresize = function () {\r\n\t\tthis.watchCSS(), this.resize()\r\n\t}, n.debounceMethod(l, \"onresize\", 150), p.resize = function () {\r\n\t\tif (this.isActive) {\r\n\t\t\tthis.getSize(), this.options.wrapAround && (this.x = n.modulo(this.x, this.slideableWidth)), this.positionCells(), this._getWrapShiftCells(), this.setGallerySize(), this.emitEvent(\"resize\");\r\n\t\t\tvar t = this.selectedElements && this.selectedElements[0];\r\n\t\t\tthis.selectCell(t, !1, !0)\r\n\t\t}\r\n\t}, p.watchCSS = function () {\r\n\t\tvar t = this.options.watchCSS;\r\n\t\tif (t) {\r\n\t\t\tvar e = c(this.element, \":after\").content;\r\n\t\t\te.indexOf(\"flickity\") != -1 ? this.activate() : this.deactivate()\r\n\t\t}\r\n\t}, p.onkeydown = function (t) {\r\n\t\tvar e = document.activeElement && document.activeElement != this.element;\r\n\t\tif (this.options.accessibility && !e) {\r\n\t\t\tvar i = l.keyboardHandlers[t.keyCode];\r\n\t\t\ti && i.call(this)\r\n\t\t}\r\n\t}, l.keyboardHandlers = {\r\n\t\t37: function () {\r\n\t\t\tvar t = this.options.rightToLeft ? \"next\" : \"previous\";\r\n\t\t\tthis.uiChange(), this[t]()\r\n\t\t},\r\n\t\t39: function () {\r\n\t\t\tvar t = this.options.rightToLeft ? \"previous\" : \"next\";\r\n\t\t\tthis.uiChange(), this[t]()\r\n\t\t}\r\n\t}, p.focus = function () {\r\n\t\tvar e = t.pageYOffset;\r\n\t\tthis.element.focus(), t.pageYOffset != e && t.scrollTo(t.pageXOffset, e)\r\n\t}, p.deactivate = function () {\r\n\t\tthis.isActive && (this.element.classList.remove(\"flickity-enabled\"), this.element.classList.remove(\"flickity-rtl\"), this.unselectSelectedSlide(), this.cells.forEach(function (t) {\r\n\t\t\tt.destroy()\r\n\t\t}), this.element.removeChild(this.viewport), a(this.slider.children, this.element), this.options.accessibility && (this.element.removeAttribute(\"tabIndex\"), this.element.removeEventListener(\"keydown\", this)), this.isActive = !1, this.emitEvent(\"deactivate\"))\r\n\t}, p.destroy = function () {\r\n\t\tthis.deactivate(), t.removeEventListener(\"resize\", this), this.emitEvent(\"destroy\"), h && this.$element && h.removeData(this.element, \"flickity\"), delete this.element.flickityGUID, delete f[this.guid]\r\n\t}, n.extend(p, r), l.data = function (t) {\r\n\t\tt = n.getQueryElement(t);\r\n\t\tvar e = t && t.flickityGUID;\r\n\t\treturn e && f[e]\r\n\t}, n.htmlInit(l, \"flickity\"), h && h.bridget && h.bridget(\"flickity\", l), l.setJQuery = function (t) {\r\n\t\th = t\r\n\t}, l.Cell = s, l\r\n}),\r\nfunction (t, e) {\r\n\t\"function\" == typeof define && define.amd ? define(\"unipointer/unipointer\", [\"ev-emitter/ev-emitter\"], function (i) {\r\n\t\treturn e(t, i)\r\n\t}) : \"object\" == typeof module && module.exports ? module.exports = e(t, require(\"ev-emitter\")) : t.Unipointer = e(t, t.EvEmitter)\r\n}(window, function (t, e) {\r\n\tfunction i() {}\r\n\r\n\tfunction n() {}\r\n\tvar s = n.prototype = Object.create(e.prototype);\r\n\ts.bindStartEvent = function (t) {\r\n\t\tthis._bindStartEvent(t, !0)\r\n\t}, s.unbindStartEvent = function (t) {\r\n\t\tthis._bindStartEvent(t, !1)\r\n\t}, s._bindStartEvent = function (e, i) {\r\n\t\ti = void 0 === i || i;\r\n\t\tvar n = i ? \"addEventListener\" : \"removeEventListener\",\r\n\t\t\ts = \"mousedown\";\r\n\t\tt.PointerEvent ? s = \"pointerdown\" : \"ontouchstart\" in t && (s = \"touchstart\"), e[n](s, this)\r\n\t}, s.handleEvent = function (t) {\r\n\t\tvar e = \"on\" + t.type;\r\n\t\tthis[e] && this[e](t)\r\n\t}, s.getTouch = function (t) {\r\n\t\tfor (var e = 0; e < t.length; e++) {\r\n\t\t\tvar i = t[e];\r\n\t\t\tif (i.identifier == this.pointerIdentifier) return i\r\n\t\t}\r\n\t}, s.onmousedown = function (t) {\r\n\t\tvar e = t.button;\r\n\t\te && 0 !== e && 1 !== e || this._pointerDown(t, t)\r\n\t}, s.ontouchstart = function (t) {\r\n\t\tthis._pointerDown(t, t.changedTouches[0])\r\n\t}, s.onpointerdown = function (t) {\r\n\t\tthis._pointerDown(t, t)\r\n\t}, s._pointerDown = function (t, e) {\r\n\t\tt.button || this.isPointerDown || (this.isPointerDown = !0, this.pointerIdentifier = void 0 !== e.pointerId ? e.pointerId : e.identifier, this.pointerDown(t, e))\r\n\t}, s.pointerDown = function (t, e) {\r\n\t\tthis._bindPostStartEvents(t), this.emitEvent(\"pointerDown\", [t, e])\r\n\t};\r\n\tvar o = {\r\n\t\tmousedown: [\"mousemove\", \"mouseup\"],\r\n\t\ttouchstart: [\"touchmove\", \"touchend\", \"touchcancel\"],\r\n\t\tpointerdown: [\"pointermove\", \"pointerup\", \"pointercancel\"]\r\n\t};\r\n\treturn s._bindPostStartEvents = function (e) {\r\n\t\tif (e) {\r\n\t\t\tvar i = o[e.type];\r\n\t\t\ti.forEach(function (e) {\r\n\t\t\t\tt.addEventListener(e, this)\r\n\t\t\t}, this), this._boundPointerEvents = i\r\n\t\t}\r\n\t}, s._unbindPostStartEvents = function () {\r\n\t\tthis._boundPointerEvents && (this._boundPointerEvents.forEach(function (e) {\r\n\t\t\tt.removeEventListener(e, this)\r\n\t\t}, this), delete this._boundPointerEvents)\r\n\t}, s.onmousemove = function (t) {\r\n\t\tthis._pointerMove(t, t)\r\n\t}, s.onpointermove = function (t) {\r\n\t\tt.pointerId == this.pointerIdentifier && this._pointerMove(t, t)\r\n\t}, s.ontouchmove = function (t) {\r\n\t\tvar e = this.getTouch(t.changedTouches);\r\n\t\te && this._pointerMove(t, e)\r\n\t}, s._pointerMove = function (t, e) {\r\n\t\tthis.pointerMove(t, e)\r\n\t}, s.pointerMove = function (t, e) {\r\n\t\tthis.emitEvent(\"pointerMove\", [t, e])\r\n\t}, s.onmouseup = function (t) {\r\n\t\tthis._pointerUp(t, t)\r\n\t}, s.onpointerup = function (t) {\r\n\t\tt.pointerId == this.pointerIdentifier && this._pointerUp(t, t)\r\n\t}, s.ontouchend = function (t) {\r\n\t\tvar e = this.getTouch(t.changedTouches);\r\n\t\te && this._pointerUp(t, e)\r\n\t}, s._pointerUp = function (t, e) {\r\n\t\tthis._pointerDone(), this.pointerUp(t, e)\r\n\t}, s.pointerUp = function (t, e) {\r\n\t\tthis.emitEvent(\"pointerUp\", [t, e])\r\n\t}, s._pointerDone = function () {\r\n\t\tthis._pointerReset(), this._unbindPostStartEvents(), this.pointerDone()\r\n\t}, s._pointerReset = function () {\r\n\t\tthis.isPointerDown = !1, delete this.pointerIdentifier\r\n\t}, s.pointerDone = i, s.onpointercancel = function (t) {\r\n\t\tt.pointerId == this.pointerIdentifier && this._pointerCancel(t, t)\r\n\t}, s.ontouchcancel = function (t) {\r\n\t\tvar e = this.getTouch(t.changedTouches);\r\n\t\te && this._pointerCancel(t, e)\r\n\t}, s._pointerCancel = function (t, e) {\r\n\t\tthis._pointerDone(), this.pointerCancel(t, e)\r\n\t}, s.pointerCancel = function (t, e) {\r\n\t\tthis.emitEvent(\"pointerCancel\", [t, e])\r\n\t}, n.getPointerPoint = function (t) {\r\n\t\treturn {\r\n\t\t\tx: t.pageX,\r\n\t\t\ty: t.pageY\r\n\t\t}\r\n\t}, n\r\n}),\r\nfunction (t, e) {\r\n\t\"function\" == typeof define && define.amd ? define(\"unidragger/unidragger\", [\"unipointer/unipointer\"], function (i) {\r\n\t\treturn e(t, i)\r\n\t}) : \"object\" == typeof module && module.exports ? module.exports = e(t, require(\"unipointer\")) : t.Unidragger = e(t, t.Unipointer)\r\n}(window, function (t, e) {\r\n\tfunction i() {}\r\n\tvar n = i.prototype = Object.create(e.prototype);\r\n\tn.bindHandles = function () {\r\n\t\tthis._bindHandles(!0)\r\n\t}, n.unbindHandles = function () {\r\n\t\tthis._bindHandles(!1)\r\n\t}, n._bindHandles = function (e) {\r\n\t\te = void 0 === e || e;\r\n\t\tfor (var i = e ? \"addEventListener\" : \"removeEventListener\", n = e ? this._touchActionValue : \"\", s = 0; s < this.handles.length; s++) {\r\n\t\t\tvar o = this.handles[s];\r\n\t\t\tthis._bindStartEvent(o, e), o[i](\"click\", this), t.PointerEvent && (o.style.touchAction = n)\r\n\t\t}\r\n\t}, n._touchActionValue = \"none\", n.pointerDown = function (t, e) {\r\n\t\tvar i = this.okayPointerDown(t);\r\n\t\ti && (this.pointerDownPointer = e, t.preventDefault(), this.pointerDownBlur(), this._bindPostStartEvents(t), this.emitEvent(\"pointerDown\", [t, e]))\r\n\t};\r\n\tvar s = {\r\n\t\t\tTEXTAREA: !0,\r\n\t\t\tINPUT: !0,\r\n\t\t\tSELECT: !0,\r\n\t\t\tOPTION: !0\r\n\t\t},\r\n\t\to = {\r\n\t\t\tradio: !0,\r\n\t\t\tcheckbox: !0,\r\n\t\t\tbutton: !0,\r\n\t\t\tsubmit: !0,\r\n\t\t\timage: !0,\r\n\t\t\tfile: !0\r\n\t\t};\r\n\treturn n.okayPointerDown = function (t) {\r\n\t\tvar e = s[t.target.nodeName],\r\n\t\t\ti = o[t.target.type],\r\n\t\t\tn = !e || i;\r\n\t\treturn n || this._pointerReset(), n\r\n\t}, n.pointerDownBlur = function () {\r\n\t\tvar t = document.activeElement,\r\n\t\t\te = t && t.blur && t != document.body;\r\n\t\te && t.blur()\r\n\t}, n.pointerMove = function (t, e) {\r\n\t\tvar i = this._dragPointerMove(t, e);\r\n\t\tthis.emitEvent(\"pointerMove\", [t, e, i]), this._dragMove(t, e, i)\r\n\t}, n._dragPointerMove = function (t, e) {\r\n\t\tvar i = {\r\n\t\t\tx: e.pageX - this.pointerDownPointer.pageX,\r\n\t\t\ty: e.pageY - this.pointerDownPointer.pageY\r\n\t\t};\r\n\t\treturn !this.isDragging && this.hasDragStarted(i) && this._dragStart(t, e), i\r\n\t}, n.hasDragStarted = function (t) {\r\n\t\treturn Math.abs(t.x) > 3 || Math.abs(t.y) > 3\r\n\t}, n.pointerUp = function (t, e) {\r\n\t\tthis.emitEvent(\"pointerUp\", [t, e]), this._dragPointerUp(t, e)\r\n\t}, n._dragPointerUp = function (t, e) {\r\n\t\tthis.isDragging ? this._dragEnd(t, e) : this._staticClick(t, e)\r\n\t}, n._dragStart = function (t, e) {\r\n\t\tthis.isDragging = !0, this.isPreventingClicks = !0, this.dragStart(t, e)\r\n\t}, n.dragStart = function (t, e) {\r\n\t\tthis.emitEvent(\"dragStart\", [t, e])\r\n\t}, n._dragMove = function (t, e, i) {\r\n\t\tthis.isDragging && this.dragMove(t, e, i)\r\n\t}, n.dragMove = function (t, e, i) {\r\n\t\tt.preventDefault(), this.emitEvent(\"dragMove\", [t, e, i])\r\n\t}, n._dragEnd = function (t, e) {\r\n\t\tthis.isDragging = !1, setTimeout(function () {\r\n\t\t\tdelete this.isPreventingClicks\r\n\t\t}.bind(this)), this.dragEnd(t, e)\r\n\t}, n.dragEnd = function (t, e) {\r\n\t\tthis.emitEvent(\"dragEnd\", [t, e])\r\n\t}, n.onclick = function (t) {\r\n\t\tthis.isPreventingClicks && t.preventDefault()\r\n\t}, n._staticClick = function (t, e) {\r\n\t\tthis.isIgnoringMouseUp && \"mouseup\" == t.type || (this.staticClick(t, e), \"mouseup\" != t.type && (this.isIgnoringMouseUp = !0, setTimeout(function () {\r\n\t\t\tdelete this.isIgnoringMouseUp\r\n\t\t}.bind(this), 400)))\r\n\t}, n.staticClick = function (t, e) {\r\n\t\tthis.emitEvent(\"staticClick\", [t, e])\r\n\t}, i.getPointerPoint = e.getPointerPoint, i\r\n}),\r\nfunction (t, e) {\r\n\t\"function\" == typeof define && define.amd ? define(\"flickity/js/drag\", [\"./flickity\", \"unidragger/unidragger\", \"fizzy-ui-utils/utils\"], function (i, n, s) {\r\n\t\treturn e(t, i, n, s)\r\n\t}) : \"object\" == typeof module && module.exports ? module.exports = e(t, require(\"./flickity\"), require(\"unidragger\"), require(\"fizzy-ui-utils\")) : t.Flickity = e(t, t.Flickity, t.Unidragger, t.fizzyUIUtils)\r\n}(window, function (t, e, i, n) {\r\n\tfunction s() {\r\n\t\treturn {\r\n\t\t\tx: t.pageXOffset,\r\n\t\t\ty: t.pageYOffset\r\n\t\t}\r\n\t}\r\n\tn.extend(e.defaults, {\r\n\t\tdraggable: \">1\",\r\n\t\tdragThreshold: 3\r\n\t}), e.createMethods.push(\"_createDrag\");\r\n\tvar o = e.prototype;\r\n\tn.extend(o, i.prototype), o._touchActionValue = \"pan-y\";\r\n\tvar r = \"createTouch\" in document,\r\n\t\ta = !1;\r\n\to._createDrag = function () {\r\n\t\tthis.on(\"activate\", this.onActivateDrag), this.on(\"uiChange\", this._uiChangeDrag), this.on(\"childUIPointerDown\", this._childUIPointerDownDrag), this.on(\"deactivate\", this.unbindDrag), this.on(\"cellChange\", this.updateDraggable), r && !a && (t.addEventListener(\"touchmove\", function () {}), a = !0)\r\n\t}, o.onActivateDrag = function () {\r\n\t\tthis.handles = [this.viewport], this.bindHandles(), this.updateDraggable()\r\n\t}, o.onDeactivateDrag = function () {\r\n\t\tthis.unbindHandles(), this.element.classList.remove(\"is-draggable\")\r\n\t}, o.updateDraggable = function () {\r\n\t\t\">1\" == this.options.draggable ? this.isDraggable = this.slides.length > 1 : this.isDraggable = this.options.draggable, this.isDraggable ? this.element.classList.add(\"is-draggable\") : this.element.classList.remove(\"is-draggable\")\r\n\t}, o.bindDrag = function () {\r\n\t\tthis.options.draggable = !0, this.updateDraggable()\r\n\t}, o.unbindDrag = function () {\r\n\t\tthis.options.draggable = !1, this.updateDraggable()\r\n\t}, o._uiChangeDrag = function () {\r\n\t\tdelete this.isFreeScrolling\r\n\t}, o._childUIPointerDownDrag = function (t) {\r\n\t\tt.preventDefault(), this.pointerDownFocus(t)\r\n\t}, o.pointerDown = function (e, i) {\r\n\t\tif (!this.isDraggable) return void this._pointerDownDefault(e, i);\r\n\t\tvar n = this.okayPointerDown(e);\r\n\t\tn && (this._pointerDownPreventDefault(e), this.pointerDownFocus(e), document.activeElement != this.element && this.pointerDownBlur(), this.dragX = this.x, this.viewport.classList.add(\"is-pointer-down\"), this.pointerDownScroll = s(), t.addEventListener(\"scroll\", this), this._pointerDownDefault(e, i))\r\n\t}, o._pointerDownDefault = function (t, e) {\r\n\t\tthis.pointerDownPointer = e, this._bindPostStartEvents(t), this.dispatchEvent(\"pointerDown\", t, [e])\r\n\t};\r\n\tvar l = {\r\n\t\tINPUT: !0,\r\n\t\tTEXTAREA: !0,\r\n\t\tSELECT: !0\r\n\t};\r\n\treturn o.pointerDownFocus = function (t) {\r\n\t\tvar e = l[t.target.nodeName];\r\n\t\te || this.focus()\r\n\t}, o._pointerDownPreventDefault = function (t) {\r\n\t\tvar e = \"touchstart\" == t.type,\r\n\t\t\ti = \"touch\" == t.pointerType,\r\n\t\t\tn = l[t.target.nodeName];\r\n\t\te || i || n || t.preventDefault()\r\n\t}, o.hasDragStarted = function (t) {\r\n\t\treturn Math.abs(t.x) > this.options.dragThreshold\r\n\t}, o.pointerUp = function (t, e) {\r\n\t\tdelete this.isTouchScrolling, this.viewport.classList.remove(\"is-pointer-down\"), this.dispatchEvent(\"pointerUp\", t, [e]), this._dragPointerUp(t, e)\r\n\t}, o.pointerDone = function () {\r\n\t\tt.removeEventListener(\"scroll\", this), delete this.pointerDownScroll\r\n\t}, o.dragStart = function (e, i) {\r\n\t\tthis.isDraggable && (this.dragStartPosition = this.x, this.startAnimation(), t.removeEventListener(\"scroll\", this), this.dispatchEvent(\"dragStart\", e, [i]))\r\n\t}, o.pointerMove = function (t, e) {\r\n\t\tvar i = this._dragPointerMove(t, e);\r\n\t\tthis.dispatchEvent(\"pointerMove\", t, [e, i]), this._dragMove(t, e, i)\r\n\t}, o.dragMove = function (t, e, i) {\r\n\t\tif (this.isDraggable) {\r\n\t\t\tt.preventDefault(), this.previousDragX = this.dragX;\r\n\t\t\tvar n = this.options.rightToLeft ? -1 : 1;\r\n\t\t\tthis.options.wrapAround && (i.x = i.x % this.slideableWidth);\r\n\t\t\tvar s = this.dragStartPosition + i.x * n;\r\n\t\t\tif (!this.options.wrapAround && this.slides.length) {\r\n\t\t\t\tvar o = Math.max(-this.slides[0].target, this.dragStartPosition);\r\n\t\t\t\ts = s > o ? .5 * (s + o) : s;\r\n\t\t\t\tvar r = Math.min(-this.getLastSlide().target, this.dragStartPosition);\r\n\t\t\t\ts = s < r ? .5 * (s + r) : s\r\n\t\t\t}\r\n\t\t\tthis.dragX = s, this.dragMoveTime = new Date,\r\n\t\t\t\tthis.dispatchEvent(\"dragMove\", t, [e, i])\r\n\t\t}\r\n\t}, o.dragEnd = function (t, e) {\r\n\t\tif (this.isDraggable) {\r\n\t\t\tthis.options.freeScroll && (this.isFreeScrolling = !0);\r\n\t\t\tvar i = this.dragEndRestingSelect();\r\n\t\t\tif (this.options.freeScroll && !this.options.wrapAround) {\r\n\t\t\t\tvar n = this.getRestingPosition();\r\n\t\t\t\tthis.isFreeScrolling = -n > this.slides[0].target && -n < this.getLastSlide().target\r\n\t\t\t} else this.options.freeScroll || i != this.selectedIndex || (i += this.dragEndBoostSelect());\r\n\t\t\tdelete this.previousDragX, this.isDragSelect = this.options.wrapAround, this.select(i), delete this.isDragSelect, this.dispatchEvent(\"dragEnd\", t, [e])\r\n\t\t}\r\n\t}, o.dragEndRestingSelect = function () {\r\n\t\tvar t = this.getRestingPosition(),\r\n\t\t\te = Math.abs(this.getSlideDistance(-t, this.selectedIndex)),\r\n\t\t\ti = this._getClosestResting(t, e, 1),\r\n\t\t\tn = this._getClosestResting(t, e, -1),\r\n\t\t\ts = i.distance < n.distance ? i.index : n.index;\r\n\t\treturn s\r\n\t}, o._getClosestResting = function (t, e, i) {\r\n\t\tfor (var n = this.selectedIndex, s = 1 / 0, o = this.options.contain && !this.options.wrapAround ? function (t, e) {\r\n\t\t\t\treturn t <= e\r\n\t\t\t} : function (t, e) {\r\n\t\t\t\treturn t < e\r\n\t\t\t}; o(e, s) && (n += i, s = e, e = this.getSlideDistance(-t, n), null !== e);) e = Math.abs(e);\r\n\t\treturn {\r\n\t\t\tdistance: s,\r\n\t\t\tindex: n - i\r\n\t\t}\r\n\t}, o.getSlideDistance = function (t, e) {\r\n\t\tvar i = this.slides.length,\r\n\t\t\ts = this.options.wrapAround && i > 1,\r\n\t\t\to = s ? n.modulo(e, i) : e,\r\n\t\t\tr = this.slides[o];\r\n\t\tif (!r) return null;\r\n\t\tvar a = s ? this.slideableWidth * Math.floor(e / i) : 0;\r\n\t\treturn t - (r.target + a)\r\n\t}, o.dragEndBoostSelect = function () {\r\n\t\tif (void 0 === this.previousDragX || !this.dragMoveTime || new Date - this.dragMoveTime > 100) return 0;\r\n\t\tvar t = this.getSlideDistance(-this.dragX, this.selectedIndex),\r\n\t\t\te = this.previousDragX - this.dragX;\r\n\t\treturn t > 0 && e > 0 ? 1 : t < 0 && e < 0 ? -1 : 0\r\n\t}, o.staticClick = function (t, e) {\r\n\t\tvar i = this.getParentCell(t.target),\r\n\t\t\tn = i && i.element,\r\n\t\t\ts = i && this.cells.indexOf(i);\r\n\t\tthis.dispatchEvent(\"staticClick\", t, [e, n, s])\r\n\t}, o.onscroll = function () {\r\n\t\tvar t = s(),\r\n\t\t\te = this.pointerDownScroll.x - t.x,\r\n\t\t\ti = this.pointerDownScroll.y - t.y;\r\n\t\t(Math.abs(e) > 3 || Math.abs(i) > 3) && this._pointerDone()\r\n\t}, e\r\n}),\r\nfunction (t, e) {\r\n\t\"function\" == typeof define && define.amd ? define(\"tap-listener/tap-listener\", [\"unipointer/unipointer\"], function (i) {\r\n\t\treturn e(t, i)\r\n\t}) : \"object\" == typeof module && module.exports ? module.exports = e(t, require(\"unipointer\")) : t.TapListener = e(t, t.Unipointer)\r\n}(window, function (t, e) {\r\n\tfunction i(t) {\r\n\t\tthis.bindTap(t)\r\n\t}\r\n\tvar n = i.prototype = Object.create(e.prototype);\r\n\treturn n.bindTap = function (t) {\r\n\t\tt && (this.unbindTap(), this.tapElement = t, this._bindStartEvent(t, !0))\r\n\t}, n.unbindTap = function () {\r\n\t\tthis.tapElement && (this._bindStartEvent(this.tapElement, !0), delete this.tapElement)\r\n\t}, n.pointerUp = function (i, n) {\r\n\t\tif (!this.isIgnoringMouseUp || \"mouseup\" != i.type) {\r\n\t\t\tvar s = e.getPointerPoint(n),\r\n\t\t\t\to = this.tapElement.getBoundingClientRect(),\r\n\t\t\t\tr = t.pageXOffset,\r\n\t\t\t\ta = t.pageYOffset,\r\n\t\t\t\tl = s.x >= o.left + r && s.x <= o.right + r && s.y >= o.top + a && s.y <= o.bottom + a;\r\n\t\t\tif (l && this.emitEvent(\"tap\", [i, n]), \"mouseup\" != i.type) {\r\n\t\t\t\tthis.isIgnoringMouseUp = !0;\r\n\t\t\t\tvar h = this;\r\n\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\tdelete h.isIgnoringMouseUp\r\n\t\t\t\t}, 400)\r\n\t\t\t}\r\n\t\t}\r\n\t}, n.destroy = function () {\r\n\t\tthis.pointerDone(), this.unbindTap()\r\n\t}, i\r\n}),\r\nfunction (t, e) {\r\n\t\"function\" == typeof define && define.amd ? define(\"flickity/js/prev-next-button\", [\"./flickity\", \"tap-listener/tap-listener\", \"fizzy-ui-utils/utils\"], function (i, n, s) {\r\n\t\treturn e(t, i, n, s)\r\n\t}) : \"object\" == typeof module && module.exports ? module.exports = e(t, require(\"./flickity\"), require(\"tap-listener\"), require(\"fizzy-ui-utils\")) : e(t, t.Flickity, t.TapListener, t.fizzyUIUtils)\r\n}(window, function (t, e, i, n) {\r\n\t\"use strict\";\r\n\r\n\tfunction s(t, e) {\r\n\t\tthis.direction = t, this.parent = e, this._create()\r\n\t}\r\n\r\n\tfunction o(t) {\r\n\t\treturn \"string\" == typeof t ? t : \"M \" + t.x0 + \",50 L \" + t.x1 + \",\" + (t.y1 + 50) + \" L \" + t.x2 + \",\" + (t.y2 + 50) + \" L \" + t.x3 + \",50 L \" + t.x2 + \",\" + (50 - t.y2) + \" L \" + t.x1 + \",\" + (50 - t.y1) + \" Z\"\r\n\t}\r\n\tvar r = \"http://www.w3.org/2000/svg\";\r\n\ts.prototype = Object.create(i.prototype), s.prototype._create = function () {\r\n\t\tthis.isEnabled = !0, this.isPrevious = this.direction == -1;\r\n\t\tvar t = this.parent.options.rightToLeft ? 1 : -1;\r\n\t\tthis.isLeft = this.direction == t;\r\n\t\tvar e = this.element = document.createElement(\"button\");\r\n\t\te.className = \"flickity-button flickity-prev-next-button\", e.className += this.isPrevious ? \" previous\" : \" next\", e.setAttribute(\"type\", \"button\"), this.disable(), e.setAttribute(\"aria-label\", this.isPrevious ? \"Previous\" : \"Next\");\r\n\t\tvar i = this.createSVG();\r\n\t\te.appendChild(i), this.on(\"tap\", this.onTap), this.parent.on(\"select\", this.update.bind(this)), this.on(\"pointerDown\", this.parent.childUIPointerDown.bind(this.parent))\r\n\t}, s.prototype.activate = function () {\r\n\t\tthis.bindTap(this.element), this.element.addEventListener(\"click\", this), this.parent.element.appendChild(this.element)\r\n\t}, s.prototype.deactivate = function () {\r\n\t\tthis.parent.element.removeChild(this.element), i.prototype.destroy.call(this), this.element.removeEventListener(\"click\", this)\r\n\t}, s.prototype.createSVG = function () {\r\n\t\tvar t = document.createElementNS(r, \"svg\");\r\n\t\tt.setAttribute(\"class\", \"flickity-button-icon\"), t.setAttribute(\"viewBox\", \"0 0 100 100\");\r\n\t\tvar e = document.createElementNS(r, \"path\"),\r\n\t\t\ti = o(this.parent.options.arrowShape);\r\n\t\treturn e.setAttribute(\"d\", i), e.setAttribute(\"class\", \"arrow\"), this.isLeft || e.setAttribute(\"transform\", \"translate(100, 100) rotate(180) \"), t.appendChild(e), t\r\n\t}, s.prototype.onTap = function () {\r\n\t\tif (this.isEnabled) {\r\n\t\t\tthis.parent.uiChange();\r\n\t\t\tvar t = this.isPrevious ? \"previous\" : \"next\";\r\n\t\t\tthis.parent[t]()\r\n\t\t}\r\n\t}, s.prototype.handleEvent = n.handleEvent, s.prototype.onclick = function (t) {\r\n\t\tvar e = document.activeElement;\r\n\t\te && e == this.element && this.onTap(t, t)\r\n\t}, s.prototype.enable = function () {\r\n\t\tthis.isEnabled || (this.element.disabled = !1, this.isEnabled = !0)\r\n\t}, s.prototype.disable = function () {\r\n\t\tthis.isEnabled && (this.element.disabled = !0, this.isEnabled = !1)\r\n\t}, s.prototype.update = function () {\r\n\t\tvar t = this.parent.slides;\r\n\t\tif (this.parent.options.wrapAround && t.length > 1) return void this.enable();\r\n\t\tvar e = t.length ? t.length - 1 : 0,\r\n\t\t\ti = this.isPrevious ? 0 : e,\r\n\t\t\tn = this.parent.selectedIndex == i ? \"disable\" : \"enable\";\r\n\t\tthis[n]()\r\n\t}, s.prototype.destroy = function () {\r\n\t\tthis.deactivate()\r\n\t}, n.extend(e.defaults, {\r\n\t\tprevNextButtons: !0,\r\n\t\tarrowShape: {\r\n\t\t\tx0: 10,\r\n\t\t\tx1: 60,\r\n\t\t\ty1: 50,\r\n\t\t\tx2: 70,\r\n\t\t\ty2: 40,\r\n\t\t\tx3: 30\r\n\t\t}\r\n\t}), e.createMethods.push(\"_createPrevNextButtons\");\r\n\tvar a = e.prototype;\r\n\treturn a._createPrevNextButtons = function () {\r\n\t\tthis.options.prevNextButtons && (this.prevButton = new s((-1), this), this.nextButton = new s(1, this), this.on(\"activate\", this.activatePrevNextButtons))\r\n\t}, a.activatePrevNextButtons = function () {\r\n\t\tthis.prevButton.activate(), this.nextButton.activate(), this.on(\"deactivate\", this.deactivatePrevNextButtons)\r\n\t}, a.deactivatePrevNextButtons = function () {\r\n\t\tthis.prevButton.deactivate(), this.nextButton.deactivate(), this.off(\"deactivate\", this.deactivatePrevNextButtons)\r\n\t}, e.PrevNextButton = s, e\r\n}),\r\nfunction (t, e) {\r\n\t\"function\" == typeof define && define.amd ? define(\"flickity/js/page-dots\", [\"./flickity\", \"tap-listener/tap-listener\", \"fizzy-ui-utils/utils\"], function (i, n, s) {\r\n\t\treturn e(t, i, n, s)\r\n\t}) : \"object\" == typeof module && module.exports ? module.exports = e(t, require(\"./flickity\"), require(\"tap-listener\"), require(\"fizzy-ui-utils\")) : e(t, t.Flickity, t.TapListener, t.fizzyUIUtils)\r\n}(window, function (t, e, i, n) {\r\n\tfunction s(t) {\r\n\t\tthis.parent = t, this._create()\r\n\t}\r\n\ts.prototype = new i, s.prototype._create = function () {\r\n\t\tthis.holder = document.createElement(\"ol\"), this.holder.className = \"flickity-page-dots\", this.dots = [], this.on(\"tap\", this.onTap), this.on(\"pointerDown\", this.parent.childUIPointerDown.bind(this.parent))\r\n\t}, s.prototype.activate = function () {\r\n\t\tthis.setDots(), this.bindTap(this.holder), this.parent.element.appendChild(this.holder)\r\n\t}, s.prototype.deactivate = function () {\r\n\t\tthis.parent.element.removeChild(this.holder), i.prototype.destroy.call(this)\r\n\t}, s.prototype.setDots = function () {\r\n\t\tvar t = this.parent.slides.length - this.dots.length;\r\n\t\tt > 0 ? this.addDots(t) : t < 0 && this.removeDots(-t)\r\n\t}, s.prototype.addDots = function (t) {\r\n\t\tfor (var e = document.createDocumentFragment(), i = [], n = this.dots.length, s = n + t, o = n; o < s; o++) {\r\n\t\t\tvar r = document.createElement(\"li\");\r\n\t\t\tr.className = \"dot\", r.setAttribute(\"aria-label\", \"Page dot \" + (o + 1)), e.appendChild(r), i.push(r)\r\n\t\t}\r\n\t\tthis.holder.appendChild(e), this.dots = this.dots.concat(i)\r\n\t}, s.prototype.removeDots = function (t) {\r\n\t\tvar e = this.dots.splice(this.dots.length - t, t);\r\n\t\te.forEach(function (t) {\r\n\t\t\tthis.holder.removeChild(t)\r\n\t\t}, this)\r\n\t}, s.prototype.updateSelected = function () {\r\n\t\tthis.selectedDot && (this.selectedDot.className = \"dot\", this.selectedDot.removeAttribute(\"aria-current\")), this.dots.length && (this.selectedDot = this.dots[this.parent.selectedIndex], this.selectedDot.className = \"dot is-selected\", this.selectedDot.setAttribute(\"aria-current\", \"step\"))\r\n\t}, s.prototype.onTap = function (t) {\r\n\t\tvar e = t.target;\r\n\t\tif (\"LI\" == e.nodeName) {\r\n\t\t\tthis.parent.uiChange();\r\n\t\t\tvar i = this.dots.indexOf(e);\r\n\t\t\tthis.parent.select(i)\r\n\t\t}\r\n\t}, s.prototype.destroy = function () {\r\n\t\tthis.deactivate()\r\n\t}, e.PageDots = s, n.extend(e.defaults, {\r\n\t\tpageDots: !0\r\n\t}), e.createMethods.push(\"_createPageDots\");\r\n\tvar o = e.prototype;\r\n\treturn o._createPageDots = function () {\r\n\t\tthis.options.pageDots && (this.pageDots = new s(this), this.on(\"activate\", this.activatePageDots), this.on(\"select\", this.updateSelectedPageDots), this.on(\"cellChange\", this.updatePageDots), this.on(\"resize\", this.updatePageDots), this.on(\"deactivate\", this.deactivatePageDots))\r\n\t}, o.activatePageDots = function () {\r\n\t\tthis.pageDots.activate()\r\n\t}, o.updateSelectedPageDots = function () {\r\n\t\tthis.pageDots.updateSelected()\r\n\t}, o.updatePageDots = function () {\r\n\t\tthis.pageDots.setDots()\r\n\t}, o.deactivatePageDots = function () {\r\n\t\tthis.pageDots.deactivate()\r\n\t}, e.PageDots = s, e\r\n}),\r\nfunction (t, e) {\r\n\t\"function\" == typeof define && define.amd ? define(\"flickity/js/player\", [\"ev-emitter/ev-emitter\", \"fizzy-ui-utils/utils\", \"./flickity\"], function (t, i, n) {\r\n\t\treturn e(t, i, n)\r\n\t}) : \"object\" == typeof module && module.exports ? module.exports = e(require(\"ev-emitter\"), require(\"fizzy-ui-utils\"), require(\"./flickity\")) : e(t.EvEmitter, t.fizzyUIUtils, t.Flickity)\r\n}(window, function (t, e, i) {\r\n\tfunction n(t) {\r\n\t\tthis.parent = t, this.state = \"stopped\", this.onVisibilityChange = this.visibilityChange.bind(this), this.onVisibilityPlay = this.visibilityPlay.bind(this)\r\n\t}\r\n\tn.prototype = Object.create(t.prototype), n.prototype.play = function () {\r\n\t\tif (\"playing\" != this.state) {\r\n\t\t\tvar t = document.hidden;\r\n\t\t\tif (t) return void document.addEventListener(\"visibilitychange\", this.onVisibilityPlay);\r\n\t\t\tthis.state = \"playing\", document.addEventListener(\"visibilitychange\", this.onVisibilityChange), this.tick()\r\n\t\t}\r\n\t}, n.prototype.tick = function () {\r\n\t\tif (\"playing\" == this.state) {\r\n\t\t\tvar t = this.parent.options.autoPlay;\r\n\t\t\tt = \"number\" == typeof t ? t : 3e3;\r\n\t\t\tvar e = this;\r\n\t\t\tthis.clear(), this.timeout = setTimeout(function () {\r\n\t\t\t\te.parent.next(!0), e.tick()\r\n\t\t\t}, t)\r\n\t\t}\r\n\t}, n.prototype.stop = function () {\r\n\t\tthis.state = \"stopped\", this.clear(), document.removeEventListener(\"visibilitychange\", this.onVisibilityChange)\r\n\t}, n.prototype.clear = function () {\r\n\t\tclearTimeout(this.timeout)\r\n\t}, n.prototype.pause = function () {\r\n\t\t\"playing\" == this.state && (this.state = \"paused\", this.clear())\r\n\t}, n.prototype.unpause = function () {\r\n\t\t\"paused\" == this.state && this.play()\r\n\t}, n.prototype.visibilityChange = function () {\r\n\t\tvar t = document.hidden;\r\n\t\tthis[t ? \"pause\" : \"unpause\"]()\r\n\t}, n.prototype.visibilityPlay = function () {\r\n\t\tthis.play(), document.removeEventListener(\"visibilitychange\", this.onVisibilityPlay)\r\n\t}, e.extend(i.defaults, {\r\n\t\tpauseAutoPlayOnHover: !0\r\n\t}), i.createMethods.push(\"_createPlayer\");\r\n\tvar s = i.prototype;\r\n\treturn s._createPlayer = function () {\r\n\t\tthis.player = new n(this), this.on(\"activate\", this.activatePlayer), this.on(\"uiChange\", this.stopPlayer), this.on(\"pointerDown\", this.stopPlayer), this.on(\"deactivate\", this.deactivatePlayer)\r\n\t}, s.activatePlayer = function () {\r\n\t\tthis.options.autoPlay && (this.player.play(), this.element.addEventListener(\"mouseenter\", this))\r\n\t}, s.playPlayer = function () {\r\n\t\tthis.player.play()\r\n\t}, s.stopPlayer = function () {\r\n\t\tthis.player.stop()\r\n\t}, s.pausePlayer = function () {\r\n\t\tthis.player.pause()\r\n\t}, s.unpausePlayer = function () {\r\n\t\tthis.player.unpause()\r\n\t}, s.deactivatePlayer = function () {\r\n\t\tthis.player.stop(), this.element.removeEventListener(\"mouseenter\", this)\r\n\t}, s.onmouseenter = function () {\r\n\t\tthis.options.pauseAutoPlayOnHover && (this.player.pause(), this.element.addEventListener(\"mouseleave\", this))\r\n\t}, s.onmouseleave = function () {\r\n\t\tthis.player.unpause(), this.element.removeEventListener(\"mouseleave\", this)\r\n\t}, i.Player = n, i\r\n}),\r\nfunction (t, e) {\r\n\t\"function\" == typeof define && define.amd ? define(\"flickity/js/add-remove-cell\", [\"./flickity\", \"fizzy-ui-utils/utils\"], function (i, n) {\r\n\t\treturn e(t, i, n)\r\n\t}) : \"object\" == typeof module && module.exports ? module.exports = e(t, require(\"./flickity\"), require(\"fizzy-ui-utils\")) : e(t, t.Flickity, t.fizzyUIUtils)\r\n}(window, function (t, e, i) {\r\n\tfunction n(t) {\r\n\t\tvar e = document.createDocumentFragment();\r\n\t\treturn t.forEach(function (t) {\r\n\t\t\te.appendChild(t.element)\r\n\t\t}), e\r\n\t}\r\n\tvar s = e.prototype;\r\n\treturn s.insert = function (t, e) {\r\n\t\tvar i = this._makeCells(t);\r\n\t\tif (i && i.length) {\r\n\t\t\tvar s = this.cells.length;\r\n\t\t\te = void 0 === e ? s : e;\r\n\t\t\tvar o = n(i),\r\n\t\t\t\tr = e == s;\r\n\t\t\tif (r) this.slider.appendChild(o);\r\n\t\t\telse {\r\n\t\t\t\tvar a = this.cells[e].element;\r\n\t\t\t\tthis.slider.insertBefore(o, a)\r\n\t\t\t}\r\n\t\t\tif (0 === e) this.cells = i.concat(this.cells);\r\n\t\t\telse if (r) this.cells = this.cells.concat(i);\r\n\t\t\telse {\r\n\t\t\t\tvar l = this.cells.splice(e, s - e);\r\n\t\t\t\tthis.cells = this.cells.concat(i).concat(l)\r\n\t\t\t}\r\n\t\t\tthis._sizeCells(i), this.cellChange(e, !0)\r\n\t\t}\r\n\t}, s.append = function (t) {\r\n\t\tthis.insert(t, this.cells.length)\r\n\t}, s.prepend = function (t) {\r\n\t\tthis.insert(t, 0)\r\n\t}, s.remove = function (t) {\r\n\t\tvar e = this.getCells(t);\r\n\t\tif (e && e.length) {\r\n\t\t\tvar n = this.cells.length - 1;\r\n\t\t\te.forEach(function (t) {\r\n\t\t\t\tt.remove();\r\n\t\t\t\tvar e = this.cells.indexOf(t);\r\n\t\t\t\tn = Math.min(e, n), i.removeFrom(this.cells, t)\r\n\t\t\t}, this), this.cellChange(n, !0)\r\n\t\t}\r\n\t}, s.cellSizeChange = function (t) {\r\n\t\tvar e = this.getCell(t);\r\n\t\tif (e) {\r\n\t\t\te.getSize();\r\n\t\t\tvar i = this.cells.indexOf(e);\r\n\t\t\tthis.cellChange(i)\r\n\t\t}\r\n\t}, s.cellChange = function (t, e) {\r\n\t\tvar i = this.selectedElement;\r\n\t\tthis._positionCells(t), this._getWrapShiftCells(), this.setGallerySize();\r\n\t\tvar n = this.getCell(i);\r\n\t\tn && (this.selectedIndex = this.getCellSlideIndex(n)), this.selectedIndex = Math.min(this.slides.length - 1, this.selectedIndex), this.emitEvent(\"cellChange\", [t]), this.select(this.selectedIndex), e && this.positionSliderAtSelected()\r\n\t}, e\r\n}),\r\nfunction (t, e) {\r\n\t\"function\" == typeof define && define.amd ? define(\"flickity/js/lazyload\", [\"./flickity\", \"fizzy-ui-utils/utils\"], function (i, n) {\r\n\t\treturn e(t, i, n)\r\n\t}) : \"object\" == typeof module && module.exports ? module.exports = e(t, require(\"./flickity\"), require(\"fizzy-ui-utils\")) : e(t, t.Flickity, t.fizzyUIUtils)\r\n}(window, function (t, e, i) {\r\n\t\"use strict\";\r\n\r\n\tfunction n(t) {\r\n\t\tif (\"IMG\" == t.nodeName) {\r\n\t\t\tvar e = t.getAttribute(\"data-flickity-lazyload\"),\r\n\t\t\t\tn = t.getAttribute(\"data-flickity-lazyload-src\"),\r\n\t\t\t\ts = t.getAttribute(\"data-flickity-lazyload-srcset\");\r\n\t\t\tif (e || n || s) return [t]\r\n\t\t}\r\n\t\tvar o = \"img[data-flickity-lazyload], img[data-flickity-lazyload-src], img[data-flickity-lazyload-srcset]\",\r\n\t\t\tr = t.querySelectorAll(o);\r\n\t\treturn i.makeArray(r)\r\n\t}\r\n\r\n\tfunction s(t, e) {\r\n\t\tthis.img = t, this.flickity = e, this.load()\r\n\t}\r\n\te.createMethods.push(\"_createLazyload\");\r\n\tvar o = e.prototype;\r\n\treturn o._createLazyload = function () {\r\n\t\tthis.on(\"select\", this.lazyLoad)\r\n\t}, o.lazyLoad = function () {\r\n\t\tvar t = this.options.lazyLoad;\r\n\t\tif (t) {\r\n\t\t\tvar e = \"number\" == typeof t ? t : 0,\r\n\t\t\t\ti = this.getAdjacentCellElements(e),\r\n\t\t\t\to = [];\r\n\t\t\ti.forEach(function (t) {\r\n\t\t\t\tvar e = n(t);\r\n\t\t\t\to = o.concat(e)\r\n\t\t\t}), o.forEach(function (t) {\r\n\t\t\t\tnew s(t, this)\r\n\t\t\t}, this)\r\n\t\t}\r\n\t}, s.prototype.handleEvent = i.handleEvent, s.prototype.load = function () {\r\n\t\tthis.img.addEventListener(\"load\", this), this.img.addEventListener(\"error\", this);\r\n\t\tvar t = this.img.getAttribute(\"data-flickity-lazyload\") || this.img.getAttribute(\"data-flickity-lazyload-src\"),\r\n\t\t\te = this.img.getAttribute(\"data-flickity-lazyload-srcset\");\r\n\t\tthis.img.src = t, e && this.img.setAttribute(\"srcset\", e), this.img.removeAttribute(\"data-flickity-lazyload\"), this.img.removeAttribute(\"data-flickity-lazyload-src\"), this.img.removeAttribute(\"data-flickity-lazyload-srcset\")\r\n\t}, s.prototype.onload = function (t) {\r\n\t\tthis.complete(t, \"flickity-lazyloaded\")\r\n\t}, s.prototype.onerror = function (t) {\r\n\t\tthis.complete(t, \"flickity-lazyerror\")\r\n\t}, s.prototype.complete = function (t, e) {\r\n\t\tthis.img.removeEventListener(\"load\", this), this.img.removeEventListener(\"error\", this);\r\n\t\tvar i = this.flickity.getParentCell(this.img),\r\n\t\t\tn = i && i.element;\r\n\t\tthis.flickity.cellSizeChange(n), this.img.classList.add(e), this.flickity.dispatchEvent(\"lazyLoad\", t, n)\r\n\t}, e.LazyLoader = s, e\r\n}),\r\nfunction (t, e) {\r\n\t\"function\" == typeof define && define.amd ? define(\"flickity/js/index\", [\"./flickity\", \"./drag\", \"./prev-next-button\", \"./page-dots\", \"./player\", \"./add-remove-cell\", \"./lazyload\"], e) : \"object\" == typeof module && module.exports && (module.exports = e(require(\"./flickity\"), require(\"./drag\"), require(\"./prev-next-button\"), require(\"./page-dots\"), require(\"./player\"), require(\"./add-remove-cell\"), require(\"./lazyload\")))\r\n}(window, function (t) {\r\n\treturn t\r\n}),\r\nfunction (t, e) {\r\n\t\"function\" == typeof define && define.amd ? define(\"flickity-as-nav-for/as-nav-for\", [\"flickity/js/index\", \"fizzy-ui-utils/utils\"], e) : \"object\" == typeof module && module.exports ? module.exports = e(require(\"flickity\"), require(\"fizzy-ui-utils\")) : t.Flickity = e(t.Flickity, t.fizzyUIUtils)\r\n}(window, function (t, e) {\r\n\tfunction i(t, e, i) {\r\n\t\treturn (e - t) * i + t\r\n\t}\r\n\tt.createMethods.push(\"_createAsNavFor\");\r\n\tvar n = t.prototype;\r\n\treturn n._createAsNavFor = function () {\r\n\t\tthis.on(\"activate\", this.activateAsNavFor), this.on(\"deactivate\", this.deactivateAsNavFor), this.on(\"destroy\", this.destroyAsNavFor);\r\n\t\tvar t = this.options.asNavFor;\r\n\t\tif (t) {\r\n\t\t\tvar e = this;\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\te.setNavCompanion(t)\r\n\t\t\t})\r\n\t\t}\r\n\t}, n.setNavCompanion = function (i) {\r\n\t\ti = e.getQueryElement(i);\r\n\t\tvar n = t.data(i);\r\n\t\tif (n && n != this) {\r\n\t\t\tthis.navCompanion = n;\r\n\t\t\tvar s = this;\r\n\t\t\tthis.onNavCompanionSelect = function () {\r\n\t\t\t\ts.navCompanionSelect()\r\n\t\t\t}, n.on(\"select\", this.onNavCompanionSelect), this.on(\"staticClick\", this.onNavStaticClick), this.navCompanionSelect(!0)\r\n\t\t}\r\n\t}, n.navCompanionSelect = function (t) {\r\n\t\tif (this.navCompanion) {\r\n\t\t\tvar e = this.navCompanion.selectedCells[0],\r\n\t\t\t\tn = this.navCompanion.cells.indexOf(e),\r\n\t\t\t\ts = n + this.navCompanion.selectedCells.length - 1,\r\n\t\t\t\to = Math.floor(i(n, s, this.navCompanion.cellAlign));\r\n\t\t\tif (this.selectCell(o, !1, t), this.removeNavSelectedElements(), !(o >= this.cells.length)) {\r\n\t\t\t\tvar r = this.cells.slice(n, s + 1);\r\n\t\t\t\tthis.navSelectedElements = r.map(function (t) {\r\n\t\t\t\t\treturn t.element\r\n\t\t\t\t}), this.changeNavSelectedClass(\"add\")\r\n\t\t\t}\r\n\t\t}\r\n\t}, n.changeNavSelectedClass = function (t) {\r\n\t\tthis.navSelectedElements.forEach(function (e) {\r\n\t\t\te.classList[t](\"is-nav-selected\")\r\n\t\t})\r\n\t}, n.activateAsNavFor = function () {\r\n\t\tthis.navCompanionSelect(!0)\r\n\t}, n.removeNavSelectedElements = function () {\r\n\t\tthis.navSelectedElements && (this.changeNavSelectedClass(\"remove\"), delete this.navSelectedElements)\r\n\t}, n.onNavStaticClick = function (t, e, i, n) {\r\n\t\t\"number\" == typeof n && this.navCompanion.selectCell(n)\r\n\t}, n.deactivateAsNavFor = function () {\r\n\t\tthis.removeNavSelectedElements()\r\n\t}, n.destroyAsNavFor = function () {\r\n\t\tthis.navCompanion && (this.navCompanion.off(\"select\", this.onNavCompanionSelect), this.off(\"staticClick\", this.onNavStaticClick), delete this.navCompanion)\r\n\t}, t\r\n}),\r\nfunction (t, e) {\r\n\t\"use strict\";\r\n\t\"function\" == typeof define && define.amd ? define(\"imagesloaded/imagesloaded\", [\"ev-emitter/ev-emitter\"], function (i) {\r\n\t\treturn e(t, i)\r\n\t}) : \"object\" == typeof module && module.exports ? module.exports = e(t, require(\"ev-emitter\")) : t.imagesLoaded = e(t, t.EvEmitter)\r\n}(\"undefined\" != typeof window ? window : this, function (t, e) {\r\n\tfunction i(t, e) {\r\n\t\tfor (var i in e) t[i] = e[i];\r\n\t\treturn t\r\n\t}\r\n\r\n\tfunction n(t) {\r\n\t\tif (Array.isArray(t)) return t;\r\n\t\tvar e = \"object\" == typeof t && \"number\" == typeof t.length;\r\n\t\treturn e ? h.call(t) : [t]\r\n\t}\r\n\r\n\tfunction s(t, e, o) {\r\n\t\tif (!(this instanceof s)) return new s(t, e, o);\r\n\t\tvar r = t;\r\n\t\treturn \"string\" == typeof t && (r = document.querySelectorAll(t)), r ? (this.elements = n(r), this.options = i({}, this.options), \"function\" == typeof e ? o = e : i(this.options, e), o && this.on(\"always\", o), this.getImages(), a && (this.jqDeferred = new a.Deferred), void setTimeout(this.check.bind(this))) : void l.error(\"Bad element for imagesLoaded \" + (r || t))\r\n\t}\r\n\r\n\tfunction o(t) {\r\n\t\tthis.img = t\r\n\t}\r\n\r\n\tfunction r(t, e) {\r\n\t\tthis.url = t, this.element = e, this.img = new Image\r\n\t}\r\n\tvar a = t.jQuery,\r\n\t\tl = t.console,\r\n\t\th = Array.prototype.slice;\r\n\ts.prototype = Object.create(e.prototype), s.prototype.options = {}, s.prototype.getImages = function () {\r\n\t\tthis.images = [], this.elements.forEach(this.addElementImages, this)\r\n\t}, s.prototype.addElementImages = function (t) {\r\n\t\t\"IMG\" == t.nodeName && this.addImage(t), this.options.background === !0 && this.addElementBackgroundImages(t);\r\n\t\tvar e = t.nodeType;\r\n\t\tif (e && c[e]) {\r\n\t\t\tfor (var i = t.querySelectorAll(\"img\"), n = 0; n < i.length; n++) {\r\n\t\t\t\tvar s = i[n];\r\n\t\t\t\tthis.addImage(s)\r\n\t\t\t}\r\n\t\t\tif (\"string\" == typeof this.options.background) {\r\n\t\t\t\tvar o = t.querySelectorAll(this.options.background);\r\n\t\t\t\tfor (n = 0; n < o.length; n++) {\r\n\t\t\t\t\tvar r = o[n];\r\n\t\t\t\t\tthis.addElementBackgroundImages(r)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tvar c = {\r\n\t\t1: !0,\r\n\t\t9: !0,\r\n\t\t11: !0\r\n\t};\r\n\treturn s.prototype.addElementBackgroundImages = function (t) {\r\n\t\tvar e = getComputedStyle(t);\r\n\t\tif (e)\r\n\t\t\tfor (var i = /url\\((['\"])?(.*?)\\1\\)/gi, n = i.exec(e.backgroundImage); null !== n;) {\r\n\t\t\t\tvar s = n && n[2];\r\n\t\t\t\ts && this.addBackground(s, t), n = i.exec(e.backgroundImage)\r\n\t\t\t}\r\n\t}, s.prototype.addImage = function (t) {\r\n\t\tvar e = new o(t);\r\n\t\tthis.images.push(e)\r\n\t}, s.prototype.addBackground = function (t, e) {\r\n\t\tvar i = new r(t, e);\r\n\t\tthis.images.push(i)\r\n\t}, s.prototype.check = function () {\r\n\t\tfunction t(t, i, n) {\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\te.progress(t, i, n)\r\n\t\t\t})\r\n\t\t}\r\n\t\tvar e = this;\r\n\t\treturn this.progressedCount = 0, this.hasAnyBroken = !1, this.images.length ? void this.images.forEach(function (e) {\r\n\t\t\te.once(\"progress\", t), e.check()\r\n\t\t}) : void this.complete()\r\n\t}, s.prototype.progress = function (t, e, i) {\r\n\t\tthis.progressedCount++, this.hasAnyBroken = this.hasAnyBroken || !t.isLoaded, this.emitEvent(\"progress\", [this, t, e]), this.jqDeferred && this.jqDeferred.notify && this.jqDeferred.notify(this, t), this.progressedCount == this.images.length && this.complete(), this.options.debug && l && l.log(\"progress: \" + i, t, e)\r\n\t}, s.prototype.complete = function () {\r\n\t\tvar t = this.hasAnyBroken ? \"fail\" : \"done\";\r\n\t\tif (this.isComplete = !0, this.emitEvent(t, [this]), this.emitEvent(\"always\", [this]), this.jqDeferred) {\r\n\t\t\tvar e = this.hasAnyBroken ? \"reject\" : \"resolve\";\r\n\t\t\tthis.jqDeferred[e](this)\r\n\t\t}\r\n\t}, o.prototype = Object.create(e.prototype), o.prototype.check = function () {\r\n\t\tvar t = this.getIsImageComplete();\r\n\t\treturn t ? void this.confirm(0 !== this.img.naturalWidth, \"naturalWidth\") : (this.proxyImage = new Image, this.proxyImage.addEventListener(\"load\", this), this.proxyImage.addEventListener(\"error\", this), this.img.addEventListener(\"load\", this), this.img.addEventListener(\"error\", this), void(this.proxyImage.src = this.img.src))\r\n\t}, o.prototype.getIsImageComplete = function () {\r\n\t\treturn this.img.complete && this.img.naturalWidth\r\n\t}, o.prototype.confirm = function (t, e) {\r\n\t\tthis.isLoaded = t, this.emitEvent(\"progress\", [this, this.img, e])\r\n\t}, o.prototype.handleEvent = function (t) {\r\n\t\tvar e = \"on\" + t.type;\r\n\t\tthis[e] && this[e](t)\r\n\t}, o.prototype.onload = function () {\r\n\t\tthis.confirm(!0, \"onload\"), this.unbindEvents()\r\n\t}, o.prototype.onerror = function () {\r\n\t\tthis.confirm(!1, \"onerror\"), this.unbindEvents()\r\n\t}, o.prototype.unbindEvents = function () {\r\n\t\tthis.proxyImage.removeEventListener(\"load\", this), this.proxyImage.removeEventListener(\"error\", this), this.img.removeEventListener(\"load\", this), this.img.removeEventListener(\"error\", this)\r\n\t}, r.prototype = Object.create(o.prototype), r.prototype.check = function () {\r\n\t\tthis.img.addEventListener(\"load\", this), this.img.addEventListener(\"error\", this), this.img.src = this.url;\r\n\t\tvar t = this.getIsImageComplete();\r\n\t\tt && (this.confirm(0 !== this.img.naturalWidth, \"naturalWidth\"), this.unbindEvents())\r\n\t}, r.prototype.unbindEvents = function () {\r\n\t\tthis.img.removeEventListener(\"load\", this), this.img.removeEventListener(\"error\", this)\r\n\t}, r.prototype.confirm = function (t, e) {\r\n\t\tthis.isLoaded = t, this.emitEvent(\"progress\", [this, this.element, e])\r\n\t}, s.makeJQueryPlugin = function (e) {\r\n\t\te = e || t.jQuery, e && (a = e, a.fn.imagesLoaded = function (t, e) {\r\n\t\t\tvar i = new s(this, t, e);\r\n\t\t\treturn i.jqDeferred.promise(a(this))\r\n\t\t})\r\n\t}, s.makeJQueryPlugin(), s\r\n}),\r\nfunction (t, e) {\r\n\t\"function\" == typeof define && define.amd ? define([\"flickity/js/index\", \"imagesloaded/imagesloaded\"], function (i, n) {\r\n\t\treturn e(t, i, n)\r\n\t}) : \"object\" == typeof module && module.exports ? module.exports = e(t, require(\"flickity\"), require(\"imagesloaded\")) : t.Flickity = e(t, t.Flickity, t.imagesLoaded)\r\n}(window, function (t, e, i) {\r\n\t\"use strict\";\r\n\te.createMethods.push(\"_createImagesLoaded\");\r\n\tvar n = e.prototype;\r\n\treturn n._createImagesLoaded = function () {\r\n\t\tthis.on(\"activate\", this.imagesLoaded)\r\n\t}, n.imagesLoaded = function () {\r\n\t\tfunction t(t, i) {\r\n\t\t\tvar n = e.getParentCell(i.img);\r\n\t\t\te.cellSizeChange(n && n.element), e.options.freeScroll || e.positionSliderAtSelected()\r\n\t\t}\r\n\t\tif (this.options.imagesLoaded) {\r\n\t\t\tvar e = this;\r\n\t\t\ti(this.slider).on(\"progress\", t)\r\n\t\t}\r\n\t}, e\r\n});\r\n\nvar accordion = $('.js-accordion'),\r\n\ttriggers = $(accordion).find('.js-accordion__trigger');\r\n\titems = $(accordion).find('.js-accordion__item');\r\n\r\n\t$(items[0]).find('.js-accordion__body').show();\r\n\t$(triggers[0]).addClass('c-accordion__trigger--active');\r\n\t\r\nfunction toggleTab(tab, trigger, ev) {\r\n\r\n\tev.preventDefault();\r\n\t\r\n\tvar activeClass = 'c-accordion__trigger--active';\r\n\tvar animTime = 100;\r\n\r\n\tif (!$(trigger).hasClass(activeClass)) {\r\n\r\n\t\t$(triggers).removeClass('c-accordion__trigger--active');\r\n\r\n\t\t$(items).find('.js-accordion__body').slideUp(animTime);\r\n\t\t$(trigger).toggleClass('c-accordion__trigger--active');\r\n\t\t$(tab).find('.js-accordion__body').slideToggle(animTime);\r\n\t}\r\n}\r\n\r\n$(items).each(function(i, tab) {\r\n\tvar trigger = $(tab).find('.js-accordion__trigger'),\r\n\t\tbody = $(tab).find('.js-accordion__body');\r\n\t\t\r\n\t$(trigger).on('click', toggleTab.bind(this, tab, trigger));\r\n});\r\n\r\n\n/*! nouislider - 14.0.3 - 10/10/2019 */\r\n(function(factory) {\r\n if (typeof define === \"function\" && define.amd) {\r\n // AMD. Register as an anonymous module.\r\n define([], factory);\r\n } else if (typeof exports === \"object\") {\r\n // Node/CommonJS\r\n module.exports = factory();\r\n } else {\r\n // Browser globals\r\n window.noUiSlider = factory();\r\n }\r\n})(function() {\r\n \"use strict\";\r\n\r\n var VERSION = \"14.0.3\";\r\n\r\n //region Helper Methods\r\n\r\n function isValidFormatter(entry) {\r\n return typeof entry === \"object\" && typeof entry.to === \"function\" && typeof entry.from === \"function\";\r\n }\r\n\r\n function removeElement(el) {\r\n el.parentElement.removeChild(el);\r\n }\r\n\r\n function isSet(value) {\r\n return value !== null && value !== undefined;\r\n }\r\n\r\n // Bindable version\r\n function preventDefault(e) {\r\n e.preventDefault();\r\n }\r\n\r\n // Removes duplicates from an array.\r\n function unique(array) {\r\n return array.filter(function(a) {\r\n return !this[a] ? (this[a] = true) : false;\r\n }, {});\r\n }\r\n\r\n // Round a value to the closest 'to'.\r\n function closest(value, to) {\r\n return Math.round(value / to) * to;\r\n }\r\n\r\n // Current position of an element relative to the document.\r\n function offset(elem, orientation) {\r\n var rect = elem.getBoundingClientRect();\r\n var doc = elem.ownerDocument;\r\n var docElem = doc.documentElement;\r\n var pageOffset = getPageOffset(doc);\r\n\r\n // getBoundingClientRect contains left scroll in Chrome on Android.\r\n // I haven't found a feature detection that proves this. Worst case\r\n // scenario on mis-match: the 'tap' feature on horizontal sliders breaks.\r\n if (/webkit.*Chrome.*Mobile/i.test(navigator.userAgent)) {\r\n pageOffset.x = 0;\r\n }\r\n\r\n return orientation\r\n ? rect.top + pageOffset.y - docElem.clientTop\r\n : rect.left + pageOffset.x - docElem.clientLeft;\r\n }\r\n\r\n // Checks whether a value is numerical.\r\n function isNumeric(a) {\r\n return typeof a === \"number\" && !isNaN(a) && isFinite(a);\r\n }\r\n\r\n // Sets a class and removes it after [duration] ms.\r\n function addClassFor(element, className, duration) {\r\n if (duration > 0) {\r\n addClass(element, className);\r\n setTimeout(function() {\r\n removeClass(element, className);\r\n }, duration);\r\n }\r\n }\r\n\r\n // Limits a value to 0 - 100\r\n function limit(a) {\r\n return Math.max(Math.min(a, 100), 0);\r\n }\r\n\r\n // Wraps a variable as an array, if it isn't one yet.\r\n // Note that an input array is returned by reference!\r\n function asArray(a) {\r\n return Array.isArray(a) ? a : [a];\r\n }\r\n\r\n // Counts decimals\r\n function countDecimals(numStr) {\r\n numStr = String(numStr);\r\n var pieces = numStr.split(\".\");\r\n return pieces.length > 1 ? pieces[1].length : 0;\r\n }\r\n\r\n // http://youmightnotneedjquery.com/#add_class\r\n function addClass(el, className) {\r\n if (el.classList) {\r\n el.classList.add(className);\r\n } else {\r\n el.className += \" \" + className;\r\n }\r\n }\r\n\r\n // http://youmightnotneedjquery.com/#remove_class\r\n function removeClass(el, className) {\r\n if (el.classList) {\r\n el.classList.remove(className);\r\n } else {\r\n el.className = el.className.replace(\r\n new RegExp(\"(^|\\\\b)\" + className.split(\" \").join(\"|\") + \"(\\\\b|$)\", \"gi\"),\r\n \" \"\r\n );\r\n }\r\n }\r\n\r\n // https://plainjs.com/javascript/attributes/adding-removing-and-testing-for-classes-9/\r\n function hasClass(el, className) {\r\n return el.classList\r\n ? el.classList.contains(className)\r\n : new RegExp(\"\\\\b\" + className + \"\\\\b\").test(el.className);\r\n }\r\n\r\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollY#Notes\r\n function getPageOffset(doc) {\r\n var supportPageOffset = window.pageXOffset !== undefined;\r\n var isCSS1Compat = (doc.compatMode || \"\") === \"CSS1Compat\";\r\n var x = supportPageOffset\r\n ? window.pageXOffset\r\n : isCSS1Compat\r\n ? doc.documentElement.scrollLeft\r\n : doc.body.scrollLeft;\r\n var y = supportPageOffset\r\n ? window.pageYOffset\r\n : isCSS1Compat\r\n ? doc.documentElement.scrollTop\r\n : doc.body.scrollTop;\r\n\r\n return {\r\n x: x,\r\n y: y\r\n };\r\n }\r\n\r\n // we provide a function to compute constants instead\r\n // of accessing window.* as soon as the module needs it\r\n // so that we do not compute anything if not needed\r\n function getActions() {\r\n // Determine the events to bind. IE11 implements pointerEvents without\r\n // a prefix, which breaks compatibility with the IE10 implementation.\r\n return window.navigator.pointerEnabled\r\n ? {\r\n start: \"pointerdown\",\r\n move: \"pointermove\",\r\n end: \"pointerup\"\r\n }\r\n : window.navigator.msPointerEnabled\r\n ? {\r\n start: \"MSPointerDown\",\r\n move: \"MSPointerMove\",\r\n end: \"MSPointerUp\"\r\n }\r\n : {\r\n start: \"mousedown touchstart\",\r\n move: \"mousemove touchmove\",\r\n end: \"mouseup touchend\"\r\n };\r\n }\r\n\r\n // https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\r\n // Issue #785\r\n function getSupportsPassive() {\r\n var supportsPassive = false;\r\n\r\n /* eslint-disable */\r\n try {\r\n var opts = Object.defineProperty({}, \"passive\", {\r\n get: function() {\r\n supportsPassive = true;\r\n }\r\n });\r\n\r\n window.addEventListener(\"test\", null, opts);\r\n } catch (e) {}\r\n /* eslint-enable */\r\n\r\n return supportsPassive;\r\n }\r\n\r\n function getSupportsTouchActionNone() {\r\n return window.CSS && CSS.supports && CSS.supports(\"touch-action\", \"none\");\r\n }\r\n\r\n //endregion\r\n\r\n //region Range Calculation\r\n\r\n // Determine the size of a sub-range in relation to a full range.\r\n function subRangeRatio(pa, pb) {\r\n return 100 / (pb - pa);\r\n }\r\n\r\n // (percentage) How many percent is this value of this range?\r\n function fromPercentage(range, value) {\r\n return (value * 100) / (range[1] - range[0]);\r\n }\r\n\r\n // (percentage) Where is this value on this range?\r\n function toPercentage(range, value) {\r\n return fromPercentage(range, range[0] < 0 ? value + Math.abs(range[0]) : value - range[0]);\r\n }\r\n\r\n // (value) How much is this percentage on this range?\r\n function isPercentage(range, value) {\r\n return (value * (range[1] - range[0])) / 100 + range[0];\r\n }\r\n\r\n function getJ(value, arr) {\r\n var j = 1;\r\n\r\n while (value >= arr[j]) {\r\n j += 1;\r\n }\r\n\r\n return j;\r\n }\r\n\r\n // (percentage) Input a value, find where, on a scale of 0-100, it applies.\r\n function toStepping(xVal, xPct, value) {\r\n if (value >= xVal.slice(-1)[0]) {\r\n return 100;\r\n }\r\n\r\n var j = getJ(value, xVal);\r\n var va = xVal[j - 1];\r\n var vb = xVal[j];\r\n var pa = xPct[j - 1];\r\n var pb = xPct[j];\r\n\r\n return pa + toPercentage([va, vb], value) / subRangeRatio(pa, pb);\r\n }\r\n\r\n // (value) Input a percentage, find where it is on the specified range.\r\n function fromStepping(xVal, xPct, value) {\r\n // There is no range group that fits 100\r\n if (value >= 100) {\r\n return xVal.slice(-1)[0];\r\n }\r\n\r\n var j = getJ(value, xPct);\r\n var va = xVal[j - 1];\r\n var vb = xVal[j];\r\n var pa = xPct[j - 1];\r\n var pb = xPct[j];\r\n\r\n return isPercentage([va, vb], (value - pa) * subRangeRatio(pa, pb));\r\n }\r\n\r\n // (percentage) Get the step that applies at a certain value.\r\n function getStep(xPct, xSteps, snap, value) {\r\n if (value === 100) {\r\n return value;\r\n }\r\n\r\n var j = getJ(value, xPct);\r\n var a = xPct[j - 1];\r\n var b = xPct[j];\r\n\r\n // If 'snap' is set, steps are used as fixed points on the slider.\r\n if (snap) {\r\n // Find the closest position, a or b.\r\n if (value - a > (b - a) / 2) {\r\n return b;\r\n }\r\n\r\n return a;\r\n }\r\n\r\n if (!xSteps[j - 1]) {\r\n return value;\r\n }\r\n\r\n return xPct[j - 1] + closest(value - xPct[j - 1], xSteps[j - 1]);\r\n }\r\n\r\n function handleEntryPoint(index, value, that) {\r\n var percentage;\r\n\r\n // Wrap numerical input in an array.\r\n if (typeof value === \"number\") {\r\n value = [value];\r\n }\r\n\r\n // Reject any invalid input, by testing whether value is an array.\r\n if (!Array.isArray(value)) {\r\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'range' contains invalid value.\");\r\n }\r\n\r\n // Covert min/max syntax to 0 and 100.\r\n if (index === \"min\") {\r\n percentage = 0;\r\n } else if (index === \"max\") {\r\n percentage = 100;\r\n } else {\r\n percentage = parseFloat(index);\r\n }\r\n\r\n // Check for correct input.\r\n if (!isNumeric(percentage) || !isNumeric(value[0])) {\r\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'range' value isn't numeric.\");\r\n }\r\n\r\n // Store values.\r\n that.xPct.push(percentage);\r\n that.xVal.push(value[0]);\r\n\r\n // NaN will evaluate to false too, but to keep\r\n // logging clear, set step explicitly. Make sure\r\n // not to override the 'step' setting with false.\r\n if (!percentage) {\r\n if (!isNaN(value[1])) {\r\n that.xSteps[0] = value[1];\r\n }\r\n } else {\r\n that.xSteps.push(isNaN(value[1]) ? false : value[1]);\r\n }\r\n\r\n that.xHighestCompleteStep.push(0);\r\n }\r\n\r\n function handleStepPoint(i, n, that) {\r\n // Ignore 'false' stepping.\r\n if (!n) {\r\n return;\r\n }\r\n\r\n // Step over zero-length ranges (#948);\r\n if (that.xVal[i] === that.xVal[i + 1]) {\r\n that.xSteps[i] = that.xHighestCompleteStep[i] = that.xVal[i];\r\n\r\n return;\r\n }\r\n\r\n // Factor to range ratio\r\n that.xSteps[i] =\r\n fromPercentage([that.xVal[i], that.xVal[i + 1]], n) / subRangeRatio(that.xPct[i], that.xPct[i + 1]);\r\n\r\n var totalSteps = (that.xVal[i + 1] - that.xVal[i]) / that.xNumSteps[i];\r\n var highestStep = Math.ceil(Number(totalSteps.toFixed(3)) - 1);\r\n var step = that.xVal[i] + that.xNumSteps[i] * highestStep;\r\n\r\n that.xHighestCompleteStep[i] = step;\r\n }\r\n\r\n //endregion\r\n\r\n //region Spectrum\r\n\r\n function Spectrum(entry, snap, singleStep) {\r\n this.xPct = [];\r\n this.xVal = [];\r\n this.xSteps = [singleStep || false];\r\n this.xNumSteps = [false];\r\n this.xHighestCompleteStep = [];\r\n\r\n this.snap = snap;\r\n\r\n var index;\r\n var ordered = []; // [0, 'min'], [1, '50%'], [2, 'max']\r\n\r\n // Map the object keys to an array.\r\n for (index in entry) {\r\n if (entry.hasOwnProperty(index)) {\r\n ordered.push([entry[index], index]);\r\n }\r\n }\r\n\r\n // Sort all entries by value (numeric sort).\r\n if (ordered.length && typeof ordered[0][0] === \"object\") {\r\n ordered.sort(function(a, b) {\r\n return a[0][0] - b[0][0];\r\n });\r\n } else {\r\n ordered.sort(function(a, b) {\r\n return a[0] - b[0];\r\n });\r\n }\r\n\r\n // Convert all entries to subranges.\r\n for (index = 0; index < ordered.length; index++) {\r\n handleEntryPoint(ordered[index][1], ordered[index][0], this);\r\n }\r\n\r\n // Store the actual step values.\r\n // xSteps is sorted in the same order as xPct and xVal.\r\n this.xNumSteps = this.xSteps.slice(0);\r\n\r\n // Convert all numeric steps to the percentage of the subrange they represent.\r\n for (index = 0; index < this.xNumSteps.length; index++) {\r\n handleStepPoint(index, this.xNumSteps[index], this);\r\n }\r\n }\r\n\r\n Spectrum.prototype.getMargin = function(value) {\r\n var step = this.xNumSteps[0];\r\n\r\n if (step && (value / step) % 1 !== 0) {\r\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'limit', 'margin' and 'padding' must be divisible by step.\");\r\n }\r\n\r\n return this.xPct.length === 2 ? fromPercentage(this.xVal, value) : false;\r\n };\r\n\r\n Spectrum.prototype.toStepping = function(value) {\r\n value = toStepping(this.xVal, this.xPct, value);\r\n\r\n return value;\r\n };\r\n\r\n Spectrum.prototype.fromStepping = function(value) {\r\n return fromStepping(this.xVal, this.xPct, value);\r\n };\r\n\r\n Spectrum.prototype.getStep = function(value) {\r\n value = getStep(this.xPct, this.xSteps, this.snap, value);\r\n\r\n return value;\r\n };\r\n\r\n Spectrum.prototype.getDefaultStep = function(value, isDown, size) {\r\n var j = getJ(value, this.xPct);\r\n\r\n // When at the top or stepping down, look at the previous sub-range\r\n if (value === 100 || (isDown && value === this.xPct[j - 1])) {\r\n j = Math.max(j - 1, 1);\r\n }\r\n\r\n return (this.xVal[j] - this.xVal[j - 1]) / size;\r\n };\r\n\r\n Spectrum.prototype.getNearbySteps = function(value) {\r\n var j = getJ(value, this.xPct);\r\n\r\n return {\r\n stepBefore: {\r\n startValue: this.xVal[j - 2],\r\n step: this.xNumSteps[j - 2],\r\n highestStep: this.xHighestCompleteStep[j - 2]\r\n },\r\n thisStep: {\r\n startValue: this.xVal[j - 1],\r\n step: this.xNumSteps[j - 1],\r\n highestStep: this.xHighestCompleteStep[j - 1]\r\n },\r\n stepAfter: {\r\n startValue: this.xVal[j],\r\n step: this.xNumSteps[j],\r\n highestStep: this.xHighestCompleteStep[j]\r\n }\r\n };\r\n };\r\n\r\n Spectrum.prototype.countStepDecimals = function() {\r\n var stepDecimals = this.xNumSteps.map(countDecimals);\r\n return Math.max.apply(null, stepDecimals);\r\n };\r\n\r\n // Outside testing\r\n Spectrum.prototype.convert = function(value) {\r\n return this.getStep(this.toStepping(value));\r\n };\r\n\r\n //endregion\r\n\r\n //region Options\r\n\r\n /*\tEvery input option is tested and parsed. This'll prevent\r\n endless validation in internal methods. These tests are\r\n structured with an item for every option available. An\r\n option can be marked as required by setting the 'r' flag.\r\n The testing function is provided with three arguments:\r\n - The provided value for the option;\r\n - A reference to the options object;\r\n - The name for the option;\r\n\r\n The testing function returns false when an error is detected,\r\n or true when everything is OK. It can also modify the option\r\n object, to make sure all values can be correctly looped elsewhere. */\r\n\r\n var defaultFormatter = {\r\n to: function(value) {\r\n return value !== undefined && value.toFixed(2);\r\n },\r\n from: Number\r\n };\r\n\r\n function validateFormat(entry) {\r\n // Any object with a to and from method is supported.\r\n if (isValidFormatter(entry)) {\r\n return true;\r\n }\r\n\r\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'format' requires 'to' and 'from' methods.\");\r\n }\r\n\r\n function testStep(parsed, entry) {\r\n if (!isNumeric(entry)) {\r\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'step' is not numeric.\");\r\n }\r\n\r\n // The step option can still be used to set stepping\r\n // for linear sliders. Overwritten if set in 'range'.\r\n parsed.singleStep = entry;\r\n }\r\n\r\n function testRange(parsed, entry) {\r\n // Filter incorrect input.\r\n if (typeof entry !== \"object\" || Array.isArray(entry)) {\r\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'range' is not an object.\");\r\n }\r\n\r\n // Catch missing start or end.\r\n if (entry.min === undefined || entry.max === undefined) {\r\n throw new Error(\"noUiSlider (\" + VERSION + \"): Missing 'min' or 'max' in 'range'.\");\r\n }\r\n\r\n // Catch equal start or end.\r\n if (entry.min === entry.max) {\r\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'range' 'min' and 'max' cannot be equal.\");\r\n }\r\n\r\n parsed.spectrum = new Spectrum(entry, parsed.snap, parsed.singleStep);\r\n }\r\n\r\n function testStart(parsed, entry) {\r\n entry = asArray(entry);\r\n\r\n // Validate input. Values aren't tested, as the public .val method\r\n // will always provide a valid location.\r\n if (!Array.isArray(entry) || !entry.length) {\r\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'start' option is incorrect.\");\r\n }\r\n\r\n // Store the number of handles.\r\n parsed.handles = entry.length;\r\n\r\n // When the slider is initialized, the .val method will\r\n // be called with the start options.\r\n parsed.start = entry;\r\n }\r\n\r\n function testSnap(parsed, entry) {\r\n // Enforce 100% stepping within subranges.\r\n parsed.snap = entry;\r\n\r\n if (typeof entry !== \"boolean\") {\r\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'snap' option must be a boolean.\");\r\n }\r\n }\r\n\r\n function testAnimate(parsed, entry) {\r\n // Enforce 100% stepping within subranges.\r\n parsed.animate = entry;\r\n\r\n if (typeof entry !== \"boolean\") {\r\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'animate' option must be a boolean.\");\r\n }\r\n }\r\n\r\n function testAnimationDuration(parsed, entry) {\r\n parsed.animationDuration = entry;\r\n\r\n if (typeof entry !== \"number\") {\r\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'animationDuration' option must be a number.\");\r\n }\r\n }\r\n\r\n function testConnect(parsed, entry) {\r\n var connect = [false];\r\n var i;\r\n\r\n // Map legacy options\r\n if (entry === \"lower\") {\r\n entry = [true, false];\r\n } else if (entry === \"upper\") {\r\n entry = [false, true];\r\n }\r\n\r\n // Handle boolean options\r\n if (entry === true || entry === false) {\r\n for (i = 1; i < parsed.handles; i++) {\r\n connect.push(entry);\r\n }\r\n\r\n connect.push(false);\r\n }\r\n\r\n // Reject invalid input\r\n else if (!Array.isArray(entry) || !entry.length || entry.length !== parsed.handles + 1) {\r\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'connect' option doesn't match handle count.\");\r\n } else {\r\n connect = entry;\r\n }\r\n\r\n parsed.connect = connect;\r\n }\r\n\r\n function testOrientation(parsed, entry) {\r\n // Set orientation to an a numerical value for easy\r\n // array selection.\r\n switch (entry) {\r\n case \"horizontal\":\r\n parsed.ort = 0;\r\n break;\r\n case \"vertical\":\r\n parsed.ort = 1;\r\n break;\r\n default:\r\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'orientation' option is invalid.\");\r\n }\r\n }\r\n\r\n function testMargin(parsed, entry) {\r\n if (!isNumeric(entry)) {\r\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'margin' option must be numeric.\");\r\n }\r\n\r\n // Issue #582\r\n if (entry === 0) {\r\n return;\r\n }\r\n\r\n parsed.margin = parsed.spectrum.getMargin(entry);\r\n\r\n if (!parsed.margin) {\r\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'margin' option is only supported on linear sliders.\");\r\n }\r\n }\r\n\r\n function testLimit(parsed, entry) {\r\n if (!isNumeric(entry)) {\r\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'limit' option must be numeric.\");\r\n }\r\n\r\n parsed.limit = parsed.spectrum.getMargin(entry);\r\n\r\n if (!parsed.limit || parsed.handles < 2) {\r\n throw new Error(\r\n \"noUiSlider (\" +\r\n VERSION +\r\n \"): 'limit' option is only supported on linear sliders with 2 or more handles.\"\r\n );\r\n }\r\n }\r\n\r\n function testPadding(parsed, entry) {\r\n if (!isNumeric(entry) && !Array.isArray(entry)) {\r\n throw new Error(\r\n \"noUiSlider (\" + VERSION + \"): 'padding' option must be numeric or array of exactly 2 numbers.\"\r\n );\r\n }\r\n\r\n if (Array.isArray(entry) && !(entry.length === 2 || isNumeric(entry[0]) || isNumeric(entry[1]))) {\r\n throw new Error(\r\n \"noUiSlider (\" + VERSION + \"): 'padding' option must be numeric or array of exactly 2 numbers.\"\r\n );\r\n }\r\n\r\n if (entry === 0) {\r\n return;\r\n }\r\n\r\n if (!Array.isArray(entry)) {\r\n entry = [entry, entry];\r\n }\r\n\r\n // 'getMargin' returns false for invalid values.\r\n parsed.padding = [parsed.spectrum.getMargin(entry[0]), parsed.spectrum.getMargin(entry[1])];\r\n\r\n if (parsed.padding[0] === false || parsed.padding[1] === false) {\r\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'padding' option is only supported on linear sliders.\");\r\n }\r\n\r\n if (parsed.padding[0] < 0 || parsed.padding[1] < 0) {\r\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'padding' option must be a positive number(s).\");\r\n }\r\n\r\n if (parsed.padding[0] + parsed.padding[1] > 100) {\r\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'padding' option must not exceed 100% of the range.\");\r\n }\r\n }\r\n\r\n function testDirection(parsed, entry) {\r\n // Set direction as a numerical value for easy parsing.\r\n // Invert connection for RTL sliders, so that the proper\r\n // handles get the connect/background classes.\r\n switch (entry) {\r\n case \"ltr\":\r\n parsed.dir = 0;\r\n break;\r\n case \"rtl\":\r\n parsed.dir = 1;\r\n break;\r\n default:\r\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'direction' option was not recognized.\");\r\n }\r\n }\r\n\r\n function testBehaviour(parsed, entry) {\r\n // Make sure the input is a string.\r\n if (typeof entry !== \"string\") {\r\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'behaviour' must be a string containing options.\");\r\n }\r\n\r\n // Check if the string contains any keywords.\r\n // None are required.\r\n var tap = entry.indexOf(\"tap\") >= 0;\r\n var drag = entry.indexOf(\"drag\") >= 0;\r\n var fixed = entry.indexOf(\"fixed\") >= 0;\r\n var snap = entry.indexOf(\"snap\") >= 0;\r\n var hover = entry.indexOf(\"hover\") >= 0;\r\n var unconstrained = entry.indexOf(\"unconstrained\") >= 0;\r\n\r\n if (fixed) {\r\n if (parsed.handles !== 2) {\r\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'fixed' behaviour must be used with 2 handles\");\r\n }\r\n\r\n // Use margin to enforce fixed state\r\n testMargin(parsed, parsed.start[1] - parsed.start[0]);\r\n }\r\n\r\n if (unconstrained && (parsed.margin || parsed.limit)) {\r\n throw new Error(\r\n \"noUiSlider (\" + VERSION + \"): 'unconstrained' behaviour cannot be used with margin or limit\"\r\n );\r\n }\r\n\r\n parsed.events = {\r\n tap: tap || snap,\r\n drag: drag,\r\n fixed: fixed,\r\n snap: snap,\r\n hover: hover,\r\n unconstrained: unconstrained\r\n };\r\n }\r\n\r\n function testTooltips(parsed, entry) {\r\n if (entry === false) {\r\n return;\r\n }\r\n\r\n if (entry === true) {\r\n parsed.tooltips = [];\r\n\r\n for (var i = 0; i < parsed.handles; i++) {\r\n parsed.tooltips.push(true);\r\n }\r\n } else {\r\n parsed.tooltips = asArray(entry);\r\n\r\n if (parsed.tooltips.length !== parsed.handles) {\r\n throw new Error(\"noUiSlider (\" + VERSION + \"): must pass a formatter for all handles.\");\r\n }\r\n\r\n parsed.tooltips.forEach(function(formatter) {\r\n if (\r\n typeof formatter !== \"boolean\" &&\r\n (typeof formatter !== \"object\" || typeof formatter.to !== \"function\")\r\n ) {\r\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'tooltips' must be passed a formatter or 'false'.\");\r\n }\r\n });\r\n }\r\n }\r\n\r\n function testAriaFormat(parsed, entry) {\r\n parsed.ariaFormat = entry;\r\n validateFormat(entry);\r\n }\r\n\r\n function testFormat(parsed, entry) {\r\n parsed.format = entry;\r\n validateFormat(entry);\r\n }\r\n\r\n function testKeyboardSupport(parsed, entry) {\r\n parsed.keyboardSupport = entry;\r\n\r\n if (typeof entry !== \"boolean\") {\r\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'keyboardSupport' option must be a boolean.\");\r\n }\r\n }\r\n\r\n function testDocumentElement(parsed, entry) {\r\n // This is an advanced option. Passed values are used without validation.\r\n parsed.documentElement = entry;\r\n }\r\n\r\n function testCssPrefix(parsed, entry) {\r\n if (typeof entry !== \"string\" && entry !== false) {\r\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'cssPrefix' must be a string or `false`.\");\r\n }\r\n\r\n parsed.cssPrefix = entry;\r\n }\r\n\r\n function testCssClasses(parsed, entry) {\r\n if (typeof entry !== \"object\") {\r\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'cssClasses' must be an object.\");\r\n }\r\n\r\n if (typeof parsed.cssPrefix === \"string\") {\r\n parsed.cssClasses = {};\r\n\r\n for (var key in entry) {\r\n if (!entry.hasOwnProperty(key)) {\r\n continue;\r\n }\r\n\r\n parsed.cssClasses[key] = parsed.cssPrefix + entry[key];\r\n }\r\n } else {\r\n parsed.cssClasses = entry;\r\n }\r\n }\r\n\r\n // Test all developer settings and parse to assumption-safe values.\r\n function testOptions(options) {\r\n // To prove a fix for #537, freeze options here.\r\n // If the object is modified, an error will be thrown.\r\n // Object.freeze(options);\r\n\r\n var parsed = {\r\n margin: 0,\r\n limit: 0,\r\n padding: 0,\r\n animate: true,\r\n animationDuration: 300,\r\n ariaFormat: defaultFormatter,\r\n format: defaultFormatter\r\n };\r\n\r\n // Tests are executed in the order they are presented here.\r\n var tests = {\r\n step: { r: false, t: testStep },\r\n start: { r: true, t: testStart },\r\n connect: { r: true, t: testConnect },\r\n direction: { r: true, t: testDirection },\r\n snap: { r: false, t: testSnap },\r\n animate: { r: false, t: testAnimate },\r\n animationDuration: { r: false, t: testAnimationDuration },\r\n range: { r: true, t: testRange },\r\n orientation: { r: false, t: testOrientation },\r\n margin: { r: false, t: testMargin },\r\n limit: { r: false, t: testLimit },\r\n padding: { r: false, t: testPadding },\r\n behaviour: { r: true, t: testBehaviour },\r\n ariaFormat: { r: false, t: testAriaFormat },\r\n format: { r: false, t: testFormat },\r\n tooltips: { r: false, t: testTooltips },\r\n keyboardSupport: { r: true, t: testKeyboardSupport },\r\n documentElement: { r: false, t: testDocumentElement },\r\n cssPrefix: { r: true, t: testCssPrefix },\r\n cssClasses: { r: true, t: testCssClasses }\r\n };\r\n\r\n var defaults = {\r\n connect: false,\r\n direction: \"ltr\",\r\n behaviour: \"tap\",\r\n orientation: \"horizontal\",\r\n keyboardSupport: true,\r\n cssPrefix: \"noUi-\",\r\n cssClasses: {\r\n target: \"target\",\r\n base: \"base\",\r\n origin: \"origin\",\r\n handle: \"handle\",\r\n handleLower: \"handle-lower\",\r\n handleUpper: \"handle-upper\",\r\n touchArea: \"touch-area\",\r\n horizontal: \"horizontal\",\r\n vertical: \"vertical\",\r\n background: \"background\",\r\n connect: \"connect\",\r\n connects: \"connects\",\r\n ltr: \"ltr\",\r\n rtl: \"rtl\",\r\n draggable: \"draggable\",\r\n drag: \"state-drag\",\r\n tap: \"state-tap\",\r\n active: \"active\",\r\n tooltip: \"tooltip\",\r\n pips: \"pips\",\r\n pipsHorizontal: \"pips-horizontal\",\r\n pipsVertical: \"pips-vertical\",\r\n marker: \"marker\",\r\n markerHorizontal: \"marker-horizontal\",\r\n markerVertical: \"marker-vertical\",\r\n markerNormal: \"marker-normal\",\r\n markerLarge: \"marker-large\",\r\n markerSub: \"marker-sub\",\r\n value: \"value\",\r\n valueHorizontal: \"value-horizontal\",\r\n valueVertical: \"value-vertical\",\r\n valueNormal: \"value-normal\",\r\n valueLarge: \"value-large\",\r\n valueSub: \"value-sub\"\r\n }\r\n };\r\n\r\n // AriaFormat defaults to regular format, if any.\r\n if (options.format && !options.ariaFormat) {\r\n options.ariaFormat = options.format;\r\n }\r\n\r\n // Run all options through a testing mechanism to ensure correct\r\n // input. It should be noted that options might get modified to\r\n // be handled properly. E.g. wrapping integers in arrays.\r\n Object.keys(tests).forEach(function(name) {\r\n // If the option isn't set, but it is required, throw an error.\r\n if (!isSet(options[name]) && defaults[name] === undefined) {\r\n if (tests[name].r) {\r\n throw new Error(\"noUiSlider (\" + VERSION + \"): '\" + name + \"' is required.\");\r\n }\r\n\r\n return true;\r\n }\r\n\r\n tests[name].t(parsed, !isSet(options[name]) ? defaults[name] : options[name]);\r\n });\r\n\r\n // Forward pips options\r\n parsed.pips = options.pips;\r\n\r\n // All recent browsers accept unprefixed transform.\r\n // We need -ms- for IE9 and -webkit- for older Android;\r\n // Assume use of -webkit- if unprefixed and -ms- are not supported.\r\n // https://caniuse.com/#feat=transforms2d\r\n var d = document.createElement(\"div\");\r\n var msPrefix = d.style.msTransform !== undefined;\r\n var noPrefix = d.style.transform !== undefined;\r\n\r\n parsed.transformRule = noPrefix ? \"transform\" : msPrefix ? \"msTransform\" : \"webkitTransform\";\r\n\r\n // Pips don't move, so we can place them using left/top.\r\n var styles = [[\"left\", \"top\"], [\"right\", \"bottom\"]];\r\n\r\n parsed.style = styles[parsed.dir][parsed.ort];\r\n\r\n return parsed;\r\n }\r\n\r\n //endregion\r\n\r\n function scope(target, options, originalOptions) {\r\n var actions = getActions();\r\n var supportsTouchActionNone = getSupportsTouchActionNone();\r\n var supportsPassive = supportsTouchActionNone && getSupportsPassive();\r\n\r\n // All variables local to 'scope' are prefixed with 'scope_'\r\n\r\n // Slider DOM Nodes\r\n var scope_Target = target;\r\n var scope_Base;\r\n var scope_Handles;\r\n var scope_Connects;\r\n var scope_Pips;\r\n var scope_Tooltips;\r\n\r\n // Slider state values\r\n var scope_Spectrum = options.spectrum;\r\n var scope_Values = [];\r\n var scope_Locations = [];\r\n var scope_HandleNumbers = [];\r\n var scope_ActiveHandlesCount = 0;\r\n var scope_Events = {};\r\n\r\n // Exposed API\r\n var scope_Self;\r\n\r\n // Document Nodes\r\n var scope_Document = target.ownerDocument;\r\n var scope_DocumentElement = options.documentElement || scope_Document.documentElement;\r\n var scope_Body = scope_Document.body;\r\n\r\n // Pips constants\r\n var PIPS_NONE = -1;\r\n var PIPS_NO_VALUE = 0;\r\n var PIPS_LARGE_VALUE = 1;\r\n var PIPS_SMALL_VALUE = 2;\r\n\r\n // For horizontal sliders in standard ltr documents,\r\n // make .noUi-origin overflow to the left so the document doesn't scroll.\r\n var scope_DirOffset = scope_Document.dir === \"rtl\" || options.ort === 1 ? 0 : 100;\r\n\r\n // Creates a node, adds it to target, returns the new node.\r\n function addNodeTo(addTarget, className) {\r\n var div = scope_Document.createElement(\"div\");\r\n\r\n if (className) {\r\n addClass(div, className);\r\n }\r\n\r\n addTarget.appendChild(div);\r\n\r\n return div;\r\n }\r\n\r\n // Append a origin to the base\r\n function addOrigin(base, handleNumber) {\r\n var origin = addNodeTo(base, options.cssClasses.origin);\r\n var handle = addNodeTo(origin, options.cssClasses.handle);\r\n\r\n addNodeTo(handle, options.cssClasses.touchArea);\r\n\r\n handle.setAttribute(\"data-handle\", handleNumber);\r\n\r\n if (options.keyboardSupport) {\r\n // https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex\r\n // 0 = focusable and reachable\r\n handle.setAttribute(\"tabindex\", \"0\");\r\n handle.addEventListener(\"keydown\", function(event) {\r\n return eventKeydown(event, handleNumber);\r\n });\r\n }\r\n\r\n handle.setAttribute(\"role\", \"slider\");\r\n handle.setAttribute(\"aria-orientation\", options.ort ? \"vertical\" : \"horizontal\");\r\n\r\n if (handleNumber === 0) {\r\n addClass(handle, options.cssClasses.handleLower);\r\n } else if (handleNumber === options.handles - 1) {\r\n addClass(handle, options.cssClasses.handleUpper);\r\n }\r\n\r\n return origin;\r\n }\r\n\r\n // Insert nodes for connect elements\r\n function addConnect(base, add) {\r\n if (!add) {\r\n return false;\r\n }\r\n\r\n return addNodeTo(base, options.cssClasses.connect);\r\n }\r\n\r\n // Add handles to the slider base.\r\n function addElements(connectOptions, base) {\r\n var connectBase = addNodeTo(base, options.cssClasses.connects);\r\n\r\n scope_Handles = [];\r\n scope_Connects = [];\r\n\r\n scope_Connects.push(addConnect(connectBase, connectOptions[0]));\r\n\r\n // [::::O====O====O====]\r\n // connectOptions = [0, 1, 1, 1]\r\n\r\n for (var i = 0; i < options.handles; i++) {\r\n // Keep a list of all added handles.\r\n scope_Handles.push(addOrigin(base, i));\r\n scope_HandleNumbers[i] = i;\r\n scope_Connects.push(addConnect(connectBase, connectOptions[i + 1]));\r\n }\r\n }\r\n\r\n // Initialize a single slider.\r\n function addSlider(addTarget) {\r\n // Apply classes and data to the target.\r\n addClass(addTarget, options.cssClasses.target);\r\n\r\n if (options.dir === 0) {\r\n addClass(addTarget, options.cssClasses.ltr);\r\n } else {\r\n addClass(addTarget, options.cssClasses.rtl);\r\n }\r\n\r\n if (options.ort === 0) {\r\n addClass(addTarget, options.cssClasses.horizontal);\r\n } else {\r\n addClass(addTarget, options.cssClasses.vertical);\r\n }\r\n\r\n return addNodeTo(addTarget, options.cssClasses.base);\r\n }\r\n\r\n function addTooltip(handle, handleNumber) {\r\n if (!options.tooltips[handleNumber]) {\r\n return false;\r\n }\r\n\r\n return addNodeTo(handle.firstChild, options.cssClasses.tooltip);\r\n }\r\n\r\n function isSliderDisabled() {\r\n return scope_Target.hasAttribute(\"disabled\");\r\n }\r\n\r\n // Disable the slider dragging if any handle is disabled\r\n function isHandleDisabled(handleNumber) {\r\n var handleOrigin = scope_Handles[handleNumber];\r\n return handleOrigin.hasAttribute(\"disabled\");\r\n }\r\n\r\n function removeTooltips() {\r\n if (scope_Tooltips) {\r\n removeEvent(\"update.tooltips\");\r\n scope_Tooltips.forEach(function(tooltip) {\r\n if (tooltip) {\r\n removeElement(tooltip);\r\n }\r\n });\r\n scope_Tooltips = null;\r\n }\r\n }\r\n\r\n // The tooltips option is a shorthand for using the 'update' event.\r\n function tooltips() {\r\n removeTooltips();\r\n\r\n // Tooltips are added with options.tooltips in original order.\r\n scope_Tooltips = scope_Handles.map(addTooltip);\r\n\r\n bindEvent(\"update.tooltips\", function(values, handleNumber, unencoded) {\r\n if (!scope_Tooltips[handleNumber]) {\r\n return;\r\n }\r\n\r\n var formattedValue = values[handleNumber];\r\n\r\n if (options.tooltips[handleNumber] !== true) {\r\n formattedValue = options.tooltips[handleNumber].to(unencoded[handleNumber]);\r\n }\r\n\r\n scope_Tooltips[handleNumber].innerHTML = formattedValue;\r\n });\r\n }\r\n\r\n function aria() {\r\n bindEvent(\"update\", function(values, handleNumber, unencoded, tap, positions) {\r\n // Update Aria Values for all handles, as a change in one changes min and max values for the next.\r\n scope_HandleNumbers.forEach(function(index) {\r\n var handle = scope_Handles[index];\r\n\r\n var min = checkHandlePosition(scope_Locations, index, 0, true, true, true);\r\n var max = checkHandlePosition(scope_Locations, index, 100, true, true, true);\r\n\r\n var now = positions[index];\r\n\r\n // Formatted value for display\r\n var text = options.ariaFormat.to(unencoded[index]);\r\n\r\n // Map to slider range values\r\n min = scope_Spectrum.fromStepping(min).toFixed(1);\r\n max = scope_Spectrum.fromStepping(max).toFixed(1);\r\n now = scope_Spectrum.fromStepping(now).toFixed(1);\r\n\r\n handle.children[0].setAttribute(\"aria-valuemin\", min);\r\n handle.children[0].setAttribute(\"aria-valuemax\", max);\r\n handle.children[0].setAttribute(\"aria-valuenow\", now);\r\n handle.children[0].setAttribute(\"aria-valuetext\", text);\r\n });\r\n });\r\n }\r\n\r\n function getGroup(mode, values, stepped) {\r\n // Use the range.\r\n if (mode === \"range\" || mode === \"steps\") {\r\n return scope_Spectrum.xVal;\r\n }\r\n\r\n if (mode === \"count\") {\r\n if (values < 2) {\r\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'values' (>= 2) required for mode 'count'.\");\r\n }\r\n\r\n // Divide 0 - 100 in 'count' parts.\r\n var interval = values - 1;\r\n var spread = 100 / interval;\r\n\r\n values = [];\r\n\r\n // List these parts and have them handled as 'positions'.\r\n while (interval--) {\r\n values[interval] = interval * spread;\r\n }\r\n\r\n values.push(100);\r\n\r\n mode = \"positions\";\r\n }\r\n\r\n if (mode === \"positions\") {\r\n // Map all percentages to on-range values.\r\n return values.map(function(value) {\r\n return scope_Spectrum.fromStepping(stepped ? scope_Spectrum.getStep(value) : value);\r\n });\r\n }\r\n\r\n if (mode === \"values\") {\r\n // If the value must be stepped, it needs to be converted to a percentage first.\r\n if (stepped) {\r\n return values.map(function(value) {\r\n // Convert to percentage, apply step, return to value.\r\n return scope_Spectrum.fromStepping(scope_Spectrum.getStep(scope_Spectrum.toStepping(value)));\r\n });\r\n }\r\n\r\n // Otherwise, we can simply use the values.\r\n return values;\r\n }\r\n }\r\n\r\n function generateSpread(density, mode, group) {\r\n function safeIncrement(value, increment) {\r\n // Avoid floating point variance by dropping the smallest decimal places.\r\n return (value + increment).toFixed(7) / 1;\r\n }\r\n\r\n var indexes = {};\r\n var firstInRange = scope_Spectrum.xVal[0];\r\n var lastInRange = scope_Spectrum.xVal[scope_Spectrum.xVal.length - 1];\r\n var ignoreFirst = false;\r\n var ignoreLast = false;\r\n var prevPct = 0;\r\n\r\n // Create a copy of the group, sort it and filter away all duplicates.\r\n group = unique(\r\n group.slice().sort(function(a, b) {\r\n return a - b;\r\n })\r\n );\r\n\r\n // Make sure the range starts with the first element.\r\n if (group[0] !== firstInRange) {\r\n group.unshift(firstInRange);\r\n ignoreFirst = true;\r\n }\r\n\r\n // Likewise for the last one.\r\n if (group[group.length - 1] !== lastInRange) {\r\n group.push(lastInRange);\r\n ignoreLast = true;\r\n }\r\n\r\n group.forEach(function(current, index) {\r\n // Get the current step and the lower + upper positions.\r\n var step;\r\n var i;\r\n var q;\r\n var low = current;\r\n var high = group[index + 1];\r\n var newPct;\r\n var pctDifference;\r\n var pctPos;\r\n var type;\r\n var steps;\r\n var realSteps;\r\n var stepSize;\r\n var isSteps = mode === \"steps\";\r\n\r\n // When using 'steps' mode, use the provided steps.\r\n // Otherwise, we'll step on to the next subrange.\r\n if (isSteps) {\r\n step = scope_Spectrum.xNumSteps[index];\r\n }\r\n\r\n // Default to a 'full' step.\r\n if (!step) {\r\n step = high - low;\r\n }\r\n\r\n // Low can be 0, so test for false. If high is undefined,\r\n // we are at the last subrange. Index 0 is already handled.\r\n if (low === false || high === undefined) {\r\n return;\r\n }\r\n\r\n // Make sure step isn't 0, which would cause an infinite loop (#654)\r\n step = Math.max(step, 0.0000001);\r\n\r\n // Find all steps in the subrange.\r\n for (i = low; i <= high; i = safeIncrement(i, step)) {\r\n // Get the percentage value for the current step,\r\n // calculate the size for the subrange.\r\n newPct = scope_Spectrum.toStepping(i);\r\n pctDifference = newPct - prevPct;\r\n\r\n steps = pctDifference / density;\r\n realSteps = Math.round(steps);\r\n\r\n // This ratio represents the amount of percentage-space a point indicates.\r\n // For a density 1 the points/percentage = 1. For density 2, that percentage needs to be re-divided.\r\n // Round the percentage offset to an even number, then divide by two\r\n // to spread the offset on both sides of the range.\r\n stepSize = pctDifference / realSteps;\r\n\r\n // Divide all points evenly, adding the correct number to this subrange.\r\n // Run up to <= so that 100% gets a point, event if ignoreLast is set.\r\n for (q = 1; q <= realSteps; q += 1) {\r\n // The ratio between the rounded value and the actual size might be ~1% off.\r\n // Correct the percentage offset by the number of points\r\n // per subrange. density = 1 will result in 100 points on the\r\n // full range, 2 for 50, 4 for 25, etc.\r\n pctPos = prevPct + q * stepSize;\r\n indexes[pctPos.toFixed(5)] = [scope_Spectrum.fromStepping(pctPos), 0];\r\n }\r\n\r\n // Determine the point type.\r\n type = group.indexOf(i) > -1 ? PIPS_LARGE_VALUE : isSteps ? PIPS_SMALL_VALUE : PIPS_NO_VALUE;\r\n\r\n // Enforce the 'ignoreFirst' option by overwriting the type for 0.\r\n if (!index && ignoreFirst) {\r\n type = 0;\r\n }\r\n\r\n if (!(i === high && ignoreLast)) {\r\n // Mark the 'type' of this point. 0 = plain, 1 = real value, 2 = step value.\r\n indexes[newPct.toFixed(5)] = [i, type];\r\n }\r\n\r\n // Update the percentage count.\r\n prevPct = newPct;\r\n }\r\n });\r\n\r\n return indexes;\r\n }\r\n\r\n function addMarking(spread, filterFunc, formatter) {\r\n var element = scope_Document.createElement(\"div\");\r\n\r\n var valueSizeClasses = [];\r\n valueSizeClasses[PIPS_NO_VALUE] = options.cssClasses.valueNormal;\r\n valueSizeClasses[PIPS_LARGE_VALUE] = options.cssClasses.valueLarge;\r\n valueSizeClasses[PIPS_SMALL_VALUE] = options.cssClasses.valueSub;\r\n\r\n var markerSizeClasses = [];\r\n markerSizeClasses[PIPS_NO_VALUE] = options.cssClasses.markerNormal;\r\n markerSizeClasses[PIPS_LARGE_VALUE] = options.cssClasses.markerLarge;\r\n markerSizeClasses[PIPS_SMALL_VALUE] = options.cssClasses.markerSub;\r\n\r\n var valueOrientationClasses = [options.cssClasses.valueHorizontal, options.cssClasses.valueVertical];\r\n var markerOrientationClasses = [options.cssClasses.markerHorizontal, options.cssClasses.markerVertical];\r\n\r\n addClass(element, options.cssClasses.pips);\r\n addClass(element, options.ort === 0 ? options.cssClasses.pipsHorizontal : options.cssClasses.pipsVertical);\r\n\r\n function getClasses(type, source) {\r\n var a = source === options.cssClasses.value;\r\n var orientationClasses = a ? valueOrientationClasses : markerOrientationClasses;\r\n var sizeClasses = a ? valueSizeClasses : markerSizeClasses;\r\n\r\n return source + \" \" + orientationClasses[options.ort] + \" \" + sizeClasses[type];\r\n }\r\n\r\n function addSpread(offset, value, type) {\r\n // Apply the filter function, if it is set.\r\n type = filterFunc ? filterFunc(value, type) : type;\r\n\r\n if (type === PIPS_NONE) {\r\n return;\r\n }\r\n\r\n // Add a marker for every point\r\n var node = addNodeTo(element, false);\r\n node.className = getClasses(type, options.cssClasses.marker);\r\n node.style[options.style] = offset + \"%\";\r\n\r\n // Values are only appended for points marked '1' or '2'.\r\n if (type > PIPS_NO_VALUE) {\r\n node = addNodeTo(element, false);\r\n node.className = getClasses(type, options.cssClasses.value);\r\n node.setAttribute(\"data-value\", value);\r\n node.style[options.style] = offset + \"%\";\r\n node.innerHTML = formatter.to(value);\r\n }\r\n }\r\n\r\n // Append all points.\r\n Object.keys(spread).forEach(function(offset) {\r\n addSpread(offset, spread[offset][0], spread[offset][1]);\r\n });\r\n\r\n return element;\r\n }\r\n\r\n function removePips() {\r\n if (scope_Pips) {\r\n removeElement(scope_Pips);\r\n scope_Pips = null;\r\n }\r\n }\r\n\r\n function pips(grid) {\r\n // Fix #669\r\n removePips();\r\n\r\n var mode = grid.mode;\r\n var density = grid.density || 1;\r\n var filter = grid.filter || false;\r\n var values = grid.values || false;\r\n var stepped = grid.stepped || false;\r\n var group = getGroup(mode, values, stepped);\r\n var spread = generateSpread(density, mode, group);\r\n var format = grid.format || {\r\n to: Math.round\r\n };\r\n\r\n scope_Pips = scope_Target.appendChild(addMarking(spread, filter, format));\r\n\r\n return scope_Pips;\r\n }\r\n\r\n // Shorthand for base dimensions.\r\n function baseSize() {\r\n var rect = scope_Base.getBoundingClientRect();\r\n var alt = \"offset\" + [\"Width\", \"Height\"][options.ort];\r\n return options.ort === 0 ? rect.width || scope_Base[alt] : rect.height || scope_Base[alt];\r\n }\r\n\r\n // Handler for attaching events trough a proxy.\r\n function attachEvent(events, element, callback, data) {\r\n // This function can be used to 'filter' events to the slider.\r\n // element is a node, not a nodeList\r\n\r\n var method = function(e) {\r\n e = fixEvent(e, data.pageOffset, data.target || element);\r\n\r\n // fixEvent returns false if this event has a different target\r\n // when handling (multi-) touch events;\r\n if (!e) {\r\n return false;\r\n }\r\n\r\n // doNotReject is passed by all end events to make sure released touches\r\n // are not rejected, leaving the slider \"stuck\" to the cursor;\r\n if (isSliderDisabled() && !data.doNotReject) {\r\n return false;\r\n }\r\n\r\n // Stop if an active 'tap' transition is taking place.\r\n if (hasClass(scope_Target, options.cssClasses.tap) && !data.doNotReject) {\r\n return false;\r\n }\r\n\r\n // Ignore right or middle clicks on start #454\r\n if (events === actions.start && e.buttons !== undefined && e.buttons > 1) {\r\n return false;\r\n }\r\n\r\n // Ignore right or middle clicks on start #454\r\n if (data.hover && e.buttons) {\r\n return false;\r\n }\r\n\r\n // 'supportsPassive' is only true if a browser also supports touch-action: none in CSS.\r\n // iOS safari does not, so it doesn't get to benefit from passive scrolling. iOS does support\r\n // touch-action: manipulation, but that allows panning, which breaks\r\n // sliders after zooming/on non-responsive pages.\r\n // See: https://bugs.webkit.org/show_bug.cgi?id=133112\r\n if (!supportsPassive) {\r\n e.preventDefault();\r\n }\r\n\r\n e.calcPoint = e.points[options.ort];\r\n\r\n // Call the event handler with the event [ and additional data ].\r\n callback(e, data);\r\n };\r\n\r\n var methods = [];\r\n\r\n // Bind a closure on the target for every event type.\r\n events.split(\" \").forEach(function(eventName) {\r\n element.addEventListener(eventName, method, supportsPassive ? { passive: true } : false);\r\n methods.push([eventName, method]);\r\n });\r\n\r\n return methods;\r\n }\r\n\r\n // Provide a clean event with standardized offset values.\r\n function fixEvent(e, pageOffset, eventTarget) {\r\n // Filter the event to register the type, which can be\r\n // touch, mouse or pointer. Offset changes need to be\r\n // made on an event specific basis.\r\n var touch = e.type.indexOf(\"touch\") === 0;\r\n var mouse = e.type.indexOf(\"mouse\") === 0;\r\n var pointer = e.type.indexOf(\"pointer\") === 0;\r\n\r\n var x;\r\n var y;\r\n\r\n // IE10 implemented pointer events with a prefix;\r\n if (e.type.indexOf(\"MSPointer\") === 0) {\r\n pointer = true;\r\n }\r\n\r\n // The only thing one handle should be concerned about is the touches that originated on top of it.\r\n if (touch) {\r\n // Returns true if a touch originated on the target.\r\n var isTouchOnTarget = function(checkTouch) {\r\n return checkTouch.target === eventTarget || eventTarget.contains(checkTouch.target);\r\n };\r\n\r\n // In the case of touchstart events, we need to make sure there is still no more than one\r\n // touch on the target so we look amongst all touches.\r\n if (e.type === \"touchstart\") {\r\n var targetTouches = Array.prototype.filter.call(e.touches, isTouchOnTarget);\r\n\r\n // Do not support more than one touch per handle.\r\n if (targetTouches.length > 1) {\r\n return false;\r\n }\r\n\r\n x = targetTouches[0].pageX;\r\n y = targetTouches[0].pageY;\r\n } else {\r\n // In the other cases, find on changedTouches is enough.\r\n var targetTouch = Array.prototype.find.call(e.changedTouches, isTouchOnTarget);\r\n\r\n // Cancel if the target touch has not moved.\r\n if (!targetTouch) {\r\n return false;\r\n }\r\n\r\n x = targetTouch.pageX;\r\n y = targetTouch.pageY;\r\n }\r\n }\r\n\r\n pageOffset = pageOffset || getPageOffset(scope_Document);\r\n\r\n if (mouse || pointer) {\r\n x = e.clientX + pageOffset.x;\r\n y = e.clientY + pageOffset.y;\r\n }\r\n\r\n e.pageOffset = pageOffset;\r\n e.points = [x, y];\r\n e.cursor = mouse || pointer; // Fix #435\r\n\r\n return e;\r\n }\r\n\r\n // Translate a coordinate in the document to a percentage on the slider\r\n function calcPointToPercentage(calcPoint) {\r\n var location = calcPoint - offset(scope_Base, options.ort);\r\n var proposal = (location * 100) / baseSize();\r\n\r\n // Clamp proposal between 0% and 100%\r\n // Out-of-bound coordinates may occur when .noUi-base pseudo-elements\r\n // are used (e.g. contained handles feature)\r\n proposal = limit(proposal);\r\n\r\n return options.dir ? 100 - proposal : proposal;\r\n }\r\n\r\n // Find handle closest to a certain percentage on the slider\r\n function getClosestHandle(clickedPosition) {\r\n var smallestDifference = 100;\r\n var handleNumber = false;\r\n\r\n scope_Handles.forEach(function(handle, index) {\r\n // Disabled handles are ignored\r\n if (isHandleDisabled(index)) {\r\n return;\r\n }\r\n\r\n var handlePosition = scope_Locations[index];\r\n var differenceWithThisHandle = Math.abs(handlePosition - clickedPosition);\r\n\r\n // Initial state\r\n var clickAtEdge = differenceWithThisHandle === 100 && smallestDifference === 100;\r\n\r\n // Difference with this handle is smaller than the previously checked handle\r\n var isCloser = differenceWithThisHandle < smallestDifference;\r\n var isCloserAfter = differenceWithThisHandle <= smallestDifference && clickedPosition > handlePosition;\r\n\r\n if (isCloser || isCloserAfter || clickAtEdge) {\r\n handleNumber = index;\r\n smallestDifference = differenceWithThisHandle;\r\n }\r\n });\r\n\r\n return handleNumber;\r\n }\r\n\r\n // Fire 'end' when a mouse or pen leaves the document.\r\n function documentLeave(event, data) {\r\n if (event.type === \"mouseout\" && event.target.nodeName === \"HTML\" && event.relatedTarget === null) {\r\n eventEnd(event, data);\r\n }\r\n }\r\n\r\n // Handle movement on document for handle and range drag.\r\n function eventMove(event, data) {\r\n // Fix #498\r\n // Check value of .buttons in 'start' to work around a bug in IE10 mobile (data.buttonsProperty).\r\n // https://connect.microsoft.com/IE/feedback/details/927005/mobile-ie10-windows-phone-buttons-property-of-pointermove-event-always-zero\r\n // IE9 has .buttons and .which zero on mousemove.\r\n // Firefox breaks the spec MDN defines.\r\n if (navigator.appVersion.indexOf(\"MSIE 9\") === -1 && event.buttons === 0 && data.buttonsProperty !== 0) {\r\n return eventEnd(event, data);\r\n }\r\n\r\n // Check if we are moving up or down\r\n var movement = (options.dir ? -1 : 1) * (event.calcPoint - data.startCalcPoint);\r\n\r\n // Convert the movement into a percentage of the slider width/height\r\n var proposal = (movement * 100) / data.baseSize;\r\n\r\n moveHandles(movement > 0, proposal, data.locations, data.handleNumbers);\r\n }\r\n\r\n // Unbind move events on document, call callbacks.\r\n function eventEnd(event, data) {\r\n // The handle is no longer active, so remove the class.\r\n if (data.handle) {\r\n removeClass(data.handle, options.cssClasses.active);\r\n scope_ActiveHandlesCount -= 1;\r\n }\r\n\r\n // Unbind the move and end events, which are added on 'start'.\r\n data.listeners.forEach(function(c) {\r\n scope_DocumentElement.removeEventListener(c[0], c[1]);\r\n });\r\n\r\n if (scope_ActiveHandlesCount === 0) {\r\n // Remove dragging class.\r\n removeClass(scope_Target, options.cssClasses.drag);\r\n setZindex();\r\n\r\n // Remove cursor styles and text-selection events bound to the body.\r\n if (event.cursor) {\r\n scope_Body.style.cursor = \"\";\r\n scope_Body.removeEventListener(\"selectstart\", preventDefault);\r\n }\r\n }\r\n\r\n data.handleNumbers.forEach(function(handleNumber) {\r\n fireEvent(\"change\", handleNumber);\r\n fireEvent(\"set\", handleNumber);\r\n fireEvent(\"end\", handleNumber);\r\n });\r\n }\r\n\r\n // Bind move events on document.\r\n function eventStart(event, data) {\r\n // Ignore event if any handle is disabled\r\n if (data.handleNumbers.some(isHandleDisabled)) {\r\n return false;\r\n }\r\n\r\n var handle;\r\n\r\n if (data.handleNumbers.length === 1) {\r\n var handleOrigin = scope_Handles[data.handleNumbers[0]];\r\n\r\n handle = handleOrigin.children[0];\r\n scope_ActiveHandlesCount += 1;\r\n\r\n // Mark the handle as 'active' so it can be styled.\r\n addClass(handle, options.cssClasses.active);\r\n }\r\n\r\n // A drag should never propagate up to the 'tap' event.\r\n event.stopPropagation();\r\n\r\n // Record the event listeners.\r\n var listeners = [];\r\n\r\n // Attach the move and end events.\r\n var moveEvent = attachEvent(actions.move, scope_DocumentElement, eventMove, {\r\n // The event target has changed so we need to propagate the original one so that we keep\r\n // relying on it to extract target touches.\r\n target: event.target,\r\n handle: handle,\r\n listeners: listeners,\r\n startCalcPoint: event.calcPoint,\r\n baseSize: baseSize(),\r\n pageOffset: event.pageOffset,\r\n handleNumbers: data.handleNumbers,\r\n buttonsProperty: event.buttons,\r\n locations: scope_Locations.slice()\r\n });\r\n\r\n var endEvent = attachEvent(actions.end, scope_DocumentElement, eventEnd, {\r\n target: event.target,\r\n handle: handle,\r\n listeners: listeners,\r\n doNotReject: true,\r\n handleNumbers: data.handleNumbers\r\n });\r\n\r\n var outEvent = attachEvent(\"mouseout\", scope_DocumentElement, documentLeave, {\r\n target: event.target,\r\n handle: handle,\r\n listeners: listeners,\r\n doNotReject: true,\r\n handleNumbers: data.handleNumbers\r\n });\r\n\r\n // We want to make sure we pushed the listeners in the listener list rather than creating\r\n // a new one as it has already been passed to the event handlers.\r\n listeners.push.apply(listeners, moveEvent.concat(endEvent, outEvent));\r\n\r\n // Text selection isn't an issue on touch devices,\r\n // so adding cursor styles can be skipped.\r\n if (event.cursor) {\r\n // Prevent the 'I' cursor and extend the range-drag cursor.\r\n scope_Body.style.cursor = getComputedStyle(event.target).cursor;\r\n\r\n // Mark the target with a dragging state.\r\n if (scope_Handles.length > 1) {\r\n addClass(scope_Target, options.cssClasses.drag);\r\n }\r\n\r\n // Prevent text selection when dragging the handles.\r\n // In noUiSlider <= 9.2.0, this was handled by calling preventDefault on mouse/touch start/move,\r\n // which is scroll blocking. The selectstart event is supported by FireFox starting from version 52,\r\n // meaning the only holdout is iOS Safari. This doesn't matter: text selection isn't triggered there.\r\n // The 'cursor' flag is false.\r\n // See: http://caniuse.com/#search=selectstart\r\n scope_Body.addEventListener(\"selectstart\", preventDefault, false);\r\n }\r\n\r\n data.handleNumbers.forEach(function(handleNumber) {\r\n fireEvent(\"start\", handleNumber);\r\n });\r\n }\r\n\r\n // Move closest handle to tapped location.\r\n function eventTap(event) {\r\n // The tap event shouldn't propagate up\r\n event.stopPropagation();\r\n\r\n var proposal = calcPointToPercentage(event.calcPoint);\r\n var handleNumber = getClosestHandle(proposal);\r\n\r\n // Tackle the case that all handles are 'disabled'.\r\n if (handleNumber === false) {\r\n return false;\r\n }\r\n\r\n // Flag the slider as it is now in a transitional state.\r\n // Transition takes a configurable amount of ms (default 300). Re-enable the slider after that.\r\n if (!options.events.snap) {\r\n addClassFor(scope_Target, options.cssClasses.tap, options.animationDuration);\r\n }\r\n\r\n setHandle(handleNumber, proposal, true, true);\r\n\r\n setZindex();\r\n\r\n fireEvent(\"slide\", handleNumber, true);\r\n fireEvent(\"update\", handleNumber, true);\r\n fireEvent(\"change\", handleNumber, true);\r\n fireEvent(\"set\", handleNumber, true);\r\n\r\n if (options.events.snap) {\r\n eventStart(event, { handleNumbers: [handleNumber] });\r\n }\r\n }\r\n\r\n // Fires a 'hover' event for a hovered mouse/pen position.\r\n function eventHover(event) {\r\n var proposal = calcPointToPercentage(event.calcPoint);\r\n\r\n var to = scope_Spectrum.getStep(proposal);\r\n var value = scope_Spectrum.fromStepping(to);\r\n\r\n Object.keys(scope_Events).forEach(function(targetEvent) {\r\n if (\"hover\" === targetEvent.split(\".\")[0]) {\r\n scope_Events[targetEvent].forEach(function(callback) {\r\n callback.call(scope_Self, value);\r\n });\r\n }\r\n });\r\n }\r\n\r\n // Handles keydown on focused handles\r\n // Don't move the document when pressing arrow keys on focused handles\r\n function eventKeydown(event, handleNumber) {\r\n if (isSliderDisabled() || isHandleDisabled(handleNumber)) {\r\n return false;\r\n }\r\n\r\n var horizontalKeys = [\"Left\", \"Right\"];\r\n var verticalKeys = [\"Down\", \"Up\"];\r\n\r\n if (options.dir && !options.ort) {\r\n // On an right-to-left slider, the left and right keys act inverted\r\n horizontalKeys.reverse();\r\n } else if (options.ort && !options.dir) {\r\n // On a top-to-bottom slider, the up and down keys act inverted\r\n verticalKeys.reverse();\r\n }\r\n\r\n // Strip \"Arrow\" for IE compatibility. https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key\r\n var key = event.key.replace(\"Arrow\", \"\");\r\n var isDown = key === verticalKeys[0] || key === horizontalKeys[0];\r\n var isUp = key === verticalKeys[1] || key === horizontalKeys[1];\r\n\r\n if (!isDown && !isUp) {\r\n return true;\r\n }\r\n\r\n event.preventDefault();\r\n\r\n var direction = isDown ? 0 : 1;\r\n var steps = getNextStepsForHandle(handleNumber);\r\n var step = steps[direction];\r\n\r\n // At the edge of a slider, do nothing\r\n if (step === null) {\r\n return false;\r\n }\r\n\r\n // No step set, use the default of 10% of the sub-range\r\n if (step === false) {\r\n step = scope_Spectrum.getDefaultStep(scope_Locations[handleNumber], isDown, 10);\r\n }\r\n\r\n // Step over zero-length ranges (#948);\r\n step = Math.max(step, 0.0000001);\r\n\r\n // Decrement for down steps\r\n step = (isDown ? -1 : 1) * step;\r\n\r\n setHandle(handleNumber, scope_Spectrum.toStepping(scope_Values[handleNumber] + step), true, true);\r\n\r\n fireEvent(\"slide\", handleNumber);\r\n fireEvent(\"update\", handleNumber);\r\n fireEvent(\"change\", handleNumber);\r\n fireEvent(\"set\", handleNumber);\r\n\r\n return false;\r\n }\r\n\r\n // Attach events to several slider parts.\r\n function bindSliderEvents(behaviour) {\r\n // Attach the standard drag event to the handles.\r\n if (!behaviour.fixed) {\r\n scope_Handles.forEach(function(handle, index) {\r\n // These events are only bound to the visual handle\r\n // element, not the 'real' origin element.\r\n attachEvent(actions.start, handle.children[0], eventStart, {\r\n handleNumbers: [index]\r\n });\r\n });\r\n }\r\n\r\n // Attach the tap event to the slider base.\r\n if (behaviour.tap) {\r\n attachEvent(actions.start, scope_Base, eventTap, {});\r\n }\r\n\r\n // Fire hover events\r\n if (behaviour.hover) {\r\n attachEvent(actions.move, scope_Base, eventHover, {\r\n hover: true\r\n });\r\n }\r\n\r\n // Make the range draggable.\r\n if (behaviour.drag) {\r\n scope_Connects.forEach(function(connect, index) {\r\n if (connect === false || index === 0 || index === scope_Connects.length - 1) {\r\n return;\r\n }\r\n\r\n var handleBefore = scope_Handles[index - 1];\r\n var handleAfter = scope_Handles[index];\r\n var eventHolders = [connect];\r\n\r\n addClass(connect, options.cssClasses.draggable);\r\n\r\n // When the range is fixed, the entire range can\r\n // be dragged by the handles. The handle in the first\r\n // origin will propagate the start event upward,\r\n // but it needs to be bound manually on the other.\r\n if (behaviour.fixed) {\r\n eventHolders.push(handleBefore.children[0]);\r\n eventHolders.push(handleAfter.children[0]);\r\n }\r\n\r\n eventHolders.forEach(function(eventHolder) {\r\n attachEvent(actions.start, eventHolder, eventStart, {\r\n handles: [handleBefore, handleAfter],\r\n handleNumbers: [index - 1, index]\r\n });\r\n });\r\n });\r\n }\r\n }\r\n\r\n // Attach an event to this slider, possibly including a namespace\r\n function bindEvent(namespacedEvent, callback) {\r\n scope_Events[namespacedEvent] = scope_Events[namespacedEvent] || [];\r\n scope_Events[namespacedEvent].push(callback);\r\n\r\n // If the event bound is 'update,' fire it immediately for all handles.\r\n if (namespacedEvent.split(\".\")[0] === \"update\") {\r\n scope_Handles.forEach(function(a, index) {\r\n fireEvent(\"update\", index);\r\n });\r\n }\r\n }\r\n\r\n // Undo attachment of event\r\n function removeEvent(namespacedEvent) {\r\n var event = namespacedEvent && namespacedEvent.split(\".\")[0];\r\n var namespace = event && namespacedEvent.substring(event.length);\r\n\r\n Object.keys(scope_Events).forEach(function(bind) {\r\n var tEvent = bind.split(\".\")[0];\r\n var tNamespace = bind.substring(tEvent.length);\r\n\r\n if ((!event || event === tEvent) && (!namespace || namespace === tNamespace)) {\r\n delete scope_Events[bind];\r\n }\r\n });\r\n }\r\n\r\n // External event handling\r\n function fireEvent(eventName, handleNumber, tap) {\r\n Object.keys(scope_Events).forEach(function(targetEvent) {\r\n var eventType = targetEvent.split(\".\")[0];\r\n\r\n if (eventName === eventType) {\r\n scope_Events[targetEvent].forEach(function(callback) {\r\n callback.call(\r\n // Use the slider public API as the scope ('this')\r\n scope_Self,\r\n // Return values as array, so arg_1[arg_2] is always valid.\r\n scope_Values.map(options.format.to),\r\n // Handle index, 0 or 1\r\n handleNumber,\r\n // Un-formatted slider values\r\n scope_Values.slice(),\r\n // Event is fired by tap, true or false\r\n tap || false,\r\n // Left offset of the handle, in relation to the slider\r\n scope_Locations.slice()\r\n );\r\n });\r\n }\r\n });\r\n }\r\n\r\n // Split out the handle positioning logic so the Move event can use it, too\r\n function checkHandlePosition(reference, handleNumber, to, lookBackward, lookForward, getValue) {\r\n // For sliders with multiple handles, limit movement to the other handle.\r\n // Apply the margin option by adding it to the handle positions.\r\n if (scope_Handles.length > 1 && !options.events.unconstrained) {\r\n if (lookBackward && handleNumber > 0) {\r\n to = Math.max(to, reference[handleNumber - 1] + options.margin);\r\n }\r\n\r\n if (lookForward && handleNumber < scope_Handles.length - 1) {\r\n to = Math.min(to, reference[handleNumber + 1] - options.margin);\r\n }\r\n }\r\n\r\n // The limit option has the opposite effect, limiting handles to a\r\n // maximum distance from another. Limit must be > 0, as otherwise\r\n // handles would be unmovable.\r\n if (scope_Handles.length > 1 && options.limit) {\r\n if (lookBackward && handleNumber > 0) {\r\n to = Math.min(to, reference[handleNumber - 1] + options.limit);\r\n }\r\n\r\n if (lookForward && handleNumber < scope_Handles.length - 1) {\r\n to = Math.max(to, reference[handleNumber + 1] - options.limit);\r\n }\r\n }\r\n\r\n // The padding option keeps the handles a certain distance from the\r\n // edges of the slider. Padding must be > 0.\r\n if (options.padding) {\r\n if (handleNumber === 0) {\r\n to = Math.max(to, options.padding[0]);\r\n }\r\n\r\n if (handleNumber === scope_Handles.length - 1) {\r\n to = Math.min(to, 100 - options.padding[1]);\r\n }\r\n }\r\n\r\n to = scope_Spectrum.getStep(to);\r\n\r\n // Limit percentage to the 0 - 100 range\r\n to = limit(to);\r\n\r\n // Return false if handle can't move\r\n if (to === reference[handleNumber] && !getValue) {\r\n return false;\r\n }\r\n\r\n return to;\r\n }\r\n\r\n // Uses slider orientation to create CSS rules. a = base value;\r\n function inRuleOrder(v, a) {\r\n var o = options.ort;\r\n return (o ? a : v) + \", \" + (o ? v : a);\r\n }\r\n\r\n // Moves handle(s) by a percentage\r\n // (bool, % to move, [% where handle started, ...], [index in scope_Handles, ...])\r\n function moveHandles(upward, proposal, locations, handleNumbers) {\r\n var proposals = locations.slice();\r\n\r\n var b = [!upward, upward];\r\n var f = [upward, !upward];\r\n\r\n // Copy handleNumbers so we don't change the dataset\r\n handleNumbers = handleNumbers.slice();\r\n\r\n // Check to see which handle is 'leading'.\r\n // If that one can't move the second can't either.\r\n if (upward) {\r\n handleNumbers.reverse();\r\n }\r\n\r\n // Step 1: get the maximum percentage that any of the handles can move\r\n if (handleNumbers.length > 1) {\r\n handleNumbers.forEach(function(handleNumber, o) {\r\n var to = checkHandlePosition(\r\n proposals,\r\n handleNumber,\r\n proposals[handleNumber] + proposal,\r\n b[o],\r\n f[o],\r\n false\r\n );\r\n\r\n // Stop if one of the handles can't move.\r\n if (to === false) {\r\n proposal = 0;\r\n } else {\r\n proposal = to - proposals[handleNumber];\r\n proposals[handleNumber] = to;\r\n }\r\n });\r\n }\r\n\r\n // If using one handle, check backward AND forward\r\n else {\r\n b = f = [true];\r\n }\r\n\r\n var state = false;\r\n\r\n // Step 2: Try to set the handles with the found percentage\r\n handleNumbers.forEach(function(handleNumber, o) {\r\n state = setHandle(handleNumber, locations[handleNumber] + proposal, b[o], f[o]) || state;\r\n });\r\n\r\n // Step 3: If a handle moved, fire events\r\n if (state) {\r\n handleNumbers.forEach(function(handleNumber) {\r\n fireEvent(\"update\", handleNumber);\r\n fireEvent(\"slide\", handleNumber);\r\n });\r\n }\r\n }\r\n\r\n // Takes a base value and an offset. This offset is used for the connect bar size.\r\n // In the initial design for this feature, the origin element was 1% wide.\r\n // Unfortunately, a rounding bug in Chrome makes it impossible to implement this feature\r\n // in this manner: https://bugs.chromium.org/p/chromium/issues/detail?id=798223\r\n function transformDirection(a, b) {\r\n return options.dir ? 100 - a - b : a;\r\n }\r\n\r\n // Updates scope_Locations and scope_Values, updates visual state\r\n function updateHandlePosition(handleNumber, to) {\r\n // Update locations.\r\n scope_Locations[handleNumber] = to;\r\n\r\n // Convert the value to the slider stepping/range.\r\n scope_Values[handleNumber] = scope_Spectrum.fromStepping(to);\r\n\r\n var translation = 10 * (transformDirection(to, 0) - scope_DirOffset);\r\n var translateRule = \"translate(\" + inRuleOrder(translation + \"%\", \"0\") + \")\";\r\n\r\n scope_Handles[handleNumber].style[options.transformRule] = translateRule;\r\n\r\n updateConnect(handleNumber);\r\n updateConnect(handleNumber + 1);\r\n }\r\n\r\n // Handles before the slider middle are stacked later = higher,\r\n // Handles after the middle later is lower\r\n // [[7] [8] .......... | .......... [5] [4]\r\n function setZindex() {\r\n scope_HandleNumbers.forEach(function(handleNumber) {\r\n var dir = scope_Locations[handleNumber] > 50 ? -1 : 1;\r\n var zIndex = 3 + (scope_Handles.length + dir * handleNumber);\r\n scope_Handles[handleNumber].style.zIndex = zIndex;\r\n });\r\n }\r\n\r\n // Test suggested values and apply margin, step.\r\n function setHandle(handleNumber, to, lookBackward, lookForward) {\r\n to = checkHandlePosition(scope_Locations, handleNumber, to, lookBackward, lookForward, false);\r\n\r\n if (to === false) {\r\n return false;\r\n }\r\n\r\n updateHandlePosition(handleNumber, to);\r\n\r\n return true;\r\n }\r\n\r\n // Updates style attribute for connect nodes\r\n function updateConnect(index) {\r\n // Skip connects set to false\r\n if (!scope_Connects[index]) {\r\n return;\r\n }\r\n\r\n var l = 0;\r\n var h = 100;\r\n\r\n if (index !== 0) {\r\n l = scope_Locations[index - 1];\r\n }\r\n\r\n if (index !== scope_Connects.length - 1) {\r\n h = scope_Locations[index];\r\n }\r\n\r\n // We use two rules:\r\n // 'translate' to change the left/top offset;\r\n // 'scale' to change the width of the element;\r\n // As the element has a width of 100%, a translation of 100% is equal to 100% of the parent (.noUi-base)\r\n var connectWidth = h - l;\r\n var translateRule = \"translate(\" + inRuleOrder(transformDirection(l, connectWidth) + \"%\", \"0\") + \")\";\r\n var scaleRule = \"scale(\" + inRuleOrder(connectWidth / 100, \"1\") + \")\";\r\n\r\n scope_Connects[index].style[options.transformRule] = translateRule + \" \" + scaleRule;\r\n }\r\n\r\n // Parses value passed to .set method. Returns current value if not parse-able.\r\n function resolveToValue(to, handleNumber) {\r\n // Setting with null indicates an 'ignore'.\r\n // Inputting 'false' is invalid.\r\n if (to === null || to === false || to === undefined) {\r\n return scope_Locations[handleNumber];\r\n }\r\n\r\n // If a formatted number was passed, attempt to decode it.\r\n if (typeof to === \"number\") {\r\n to = String(to);\r\n }\r\n\r\n to = options.format.from(to);\r\n to = scope_Spectrum.toStepping(to);\r\n\r\n // If parsing the number failed, use the current value.\r\n if (to === false || isNaN(to)) {\r\n return scope_Locations[handleNumber];\r\n }\r\n\r\n return to;\r\n }\r\n\r\n // Set the slider value.\r\n function valueSet(input, fireSetEvent) {\r\n var values = asArray(input);\r\n var isInit = scope_Locations[0] === undefined;\r\n\r\n // Event fires by default\r\n fireSetEvent = fireSetEvent === undefined ? true : !!fireSetEvent;\r\n\r\n // Animation is optional.\r\n // Make sure the initial values were set before using animated placement.\r\n if (options.animate && !isInit) {\r\n addClassFor(scope_Target, options.cssClasses.tap, options.animationDuration);\r\n }\r\n\r\n // First pass, without lookAhead but with lookBackward. Values are set from left to right.\r\n scope_HandleNumbers.forEach(function(handleNumber) {\r\n setHandle(handleNumber, resolveToValue(values[handleNumber], handleNumber), true, false);\r\n });\r\n\r\n var i = scope_HandleNumbers.length === 1 ? 0 : 1;\r\n\r\n // Secondary passes. Now that all base values are set, apply constraints.\r\n // Iterate all handles to ensure constraints are applied for the entire slider (Issue #1009)\r\n for (; i < scope_HandleNumbers.length; ++i) {\r\n scope_HandleNumbers.forEach(function(handleNumber) {\r\n setHandle(handleNumber, scope_Locations[handleNumber], true, true);\r\n });\r\n }\r\n\r\n setZindex();\r\n\r\n scope_HandleNumbers.forEach(function(handleNumber) {\r\n fireEvent(\"update\", handleNumber);\r\n\r\n // Fire the event only for handles that received a new value, as per #579\r\n if (values[handleNumber] !== null && fireSetEvent) {\r\n fireEvent(\"set\", handleNumber);\r\n }\r\n });\r\n }\r\n\r\n // Reset slider to initial values\r\n function valueReset(fireSetEvent) {\r\n valueSet(options.start, fireSetEvent);\r\n }\r\n\r\n // Set value for a single handle\r\n function valueSetHandle(handleNumber, value, fireSetEvent) {\r\n // Ensure numeric input\r\n handleNumber = Number(handleNumber);\r\n\r\n if (!(handleNumber >= 0 && handleNumber < scope_HandleNumbers.length)) {\r\n throw new Error(\"noUiSlider (\" + VERSION + \"): invalid handle number, got: \" + handleNumber);\r\n }\r\n\r\n // Look both backward and forward, since we don't want this handle to \"push\" other handles (#960);\r\n setHandle(handleNumber, resolveToValue(value, handleNumber), true, true);\r\n\r\n fireEvent(\"update\", handleNumber);\r\n\r\n if (fireSetEvent) {\r\n fireEvent(\"set\", handleNumber);\r\n }\r\n }\r\n\r\n // Get the slider value.\r\n function valueGet() {\r\n var values = scope_Values.map(options.format.to);\r\n\r\n // If only one handle is used, return a single value.\r\n if (values.length === 1) {\r\n return values[0];\r\n }\r\n\r\n return values;\r\n }\r\n\r\n // Removes classes from the root and empties it.\r\n function destroy() {\r\n for (var key in options.cssClasses) {\r\n if (!options.cssClasses.hasOwnProperty(key)) {\r\n continue;\r\n }\r\n removeClass(scope_Target, options.cssClasses[key]);\r\n }\r\n\r\n while (scope_Target.firstChild) {\r\n scope_Target.removeChild(scope_Target.firstChild);\r\n }\r\n\r\n delete scope_Target.noUiSlider;\r\n }\r\n\r\n function getNextStepsForHandle(handleNumber) {\r\n var location = scope_Locations[handleNumber];\r\n var nearbySteps = scope_Spectrum.getNearbySteps(location);\r\n var value = scope_Values[handleNumber];\r\n var increment = nearbySteps.thisStep.step;\r\n var decrement = null;\r\n\r\n // If snapped, directly use defined step value\r\n if (options.snap) {\r\n return [\r\n value - nearbySteps.stepBefore.startValue || null,\r\n nearbySteps.stepAfter.startValue - value || null\r\n ];\r\n }\r\n\r\n // If the next value in this step moves into the next step,\r\n // the increment is the start of the next step - the current value\r\n if (increment !== false) {\r\n if (value + increment > nearbySteps.stepAfter.startValue) {\r\n increment = nearbySteps.stepAfter.startValue - value;\r\n }\r\n }\r\n\r\n // If the value is beyond the starting point\r\n if (value > nearbySteps.thisStep.startValue) {\r\n decrement = nearbySteps.thisStep.step;\r\n } else if (nearbySteps.stepBefore.step === false) {\r\n decrement = false;\r\n }\r\n\r\n // If a handle is at the start of a step, it always steps back into the previous step first\r\n else {\r\n decrement = value - nearbySteps.stepBefore.highestStep;\r\n }\r\n\r\n // Now, if at the slider edges, there is no in/decrement\r\n if (location === 100) {\r\n increment = null;\r\n } else if (location === 0) {\r\n decrement = null;\r\n }\r\n\r\n // As per #391, the comparison for the decrement step can have some rounding issues.\r\n var stepDecimals = scope_Spectrum.countStepDecimals();\r\n\r\n // Round per #391\r\n if (increment !== null && increment !== false) {\r\n increment = Number(increment.toFixed(stepDecimals));\r\n }\r\n\r\n if (decrement !== null && decrement !== false) {\r\n decrement = Number(decrement.toFixed(stepDecimals));\r\n }\r\n\r\n return [decrement, increment];\r\n }\r\n\r\n // Get the current step size for the slider.\r\n function getNextSteps() {\r\n return scope_HandleNumbers.map(getNextStepsForHandle);\r\n }\r\n\r\n // Updateable: margin, limit, padding, step, range, animate, snap\r\n function updateOptions(optionsToUpdate, fireSetEvent) {\r\n // Spectrum is created using the range, snap, direction and step options.\r\n // 'snap' and 'step' can be updated.\r\n // If 'snap' and 'step' are not passed, they should remain unchanged.\r\n var v = valueGet();\r\n\r\n var updateAble = [\r\n \"margin\",\r\n \"limit\",\r\n \"padding\",\r\n \"range\",\r\n \"animate\",\r\n \"snap\",\r\n \"step\",\r\n \"format\",\r\n \"pips\",\r\n \"tooltips\"\r\n ];\r\n\r\n // Only change options that we're actually passed to update.\r\n updateAble.forEach(function(name) {\r\n // Check for undefined. null removes the value.\r\n if (optionsToUpdate[name] !== undefined) {\r\n originalOptions[name] = optionsToUpdate[name];\r\n }\r\n });\r\n\r\n var newOptions = testOptions(originalOptions);\r\n\r\n // Load new options into the slider state\r\n updateAble.forEach(function(name) {\r\n if (optionsToUpdate[name] !== undefined) {\r\n options[name] = newOptions[name];\r\n }\r\n });\r\n\r\n scope_Spectrum = newOptions.spectrum;\r\n\r\n // Limit, margin and padding depend on the spectrum but are stored outside of it. (#677)\r\n options.margin = newOptions.margin;\r\n options.limit = newOptions.limit;\r\n options.padding = newOptions.padding;\r\n\r\n // Update pips, removes existing.\r\n if (options.pips) {\r\n pips(options.pips);\r\n } else {\r\n removePips();\r\n }\r\n\r\n // Update tooltips, removes existing.\r\n if (options.tooltips) {\r\n tooltips();\r\n } else {\r\n removeTooltips();\r\n }\r\n\r\n // Invalidate the current positioning so valueSet forces an update.\r\n scope_Locations = [];\r\n valueSet(optionsToUpdate.start || v, fireSetEvent);\r\n }\r\n\r\n // Initialization steps\r\n function setupSlider() {\r\n // Create the base element, initialize HTML and set classes.\r\n // Add handles and connect elements.\r\n scope_Base = addSlider(scope_Target);\r\n\r\n addElements(options.connect, scope_Base);\r\n\r\n // Attach user events.\r\n bindSliderEvents(options.events);\r\n\r\n // Use the public value method to set the start values.\r\n valueSet(options.start);\r\n\r\n if (options.pips) {\r\n pips(options.pips);\r\n }\r\n\r\n if (options.tooltips) {\r\n tooltips();\r\n }\r\n\r\n aria();\r\n }\r\n\r\n setupSlider();\r\n\r\n // noinspection JSUnusedGlobalSymbols\r\n scope_Self = {\r\n destroy: destroy,\r\n steps: getNextSteps,\r\n on: bindEvent,\r\n off: removeEvent,\r\n get: valueGet,\r\n set: valueSet,\r\n setHandle: valueSetHandle,\r\n reset: valueReset,\r\n // Exposed for unit testing, don't use this in your application.\r\n __moveHandles: function(a, b, c) {\r\n moveHandles(a, b, scope_Locations, c);\r\n },\r\n options: originalOptions, // Issue #600, #678\r\n updateOptions: updateOptions,\r\n target: scope_Target, // Issue #597\r\n removePips: removePips,\r\n removeTooltips: removeTooltips,\r\n pips: pips // Issue #594\r\n };\r\n\r\n return scope_Self;\r\n }\r\n\r\n // Run the standard initializer\r\n function initialize(target, originalOptions) {\r\n if (!target || !target.nodeName) {\r\n throw new Error(\"noUiSlider (\" + VERSION + \"): create requires a single element, got: \" + target);\r\n }\r\n\r\n // Throw an error if the slider was already initialized.\r\n if (target.noUiSlider) {\r\n throw new Error(\"noUiSlider (\" + VERSION + \"): Slider was already initialized.\");\r\n }\r\n\r\n // Test the options and create the slider environment;\r\n var options = testOptions(originalOptions, target);\r\n var api = scope(target, options, originalOptions);\r\n\r\n target.noUiSlider = api;\r\n\r\n return api;\r\n }\r\n\r\n // Use an object instead of a function for future expandability;\r\n return {\r\n // Exposed for unit testing, don't use this in your application.\r\n __spectrum: Spectrum,\r\n version: VERSION,\r\n create: initialize\r\n };\r\n});\r\n\n\r\nvar SelectNumber = (function(el, options) {\r\n\r\n\tthis.wrapper = $(el);\r\n\tthis.select = $(el).find('select');\r\n\tthis.options = $(this.select).find('option');\r\n\tthis.addButton = $(el).find('.js-select-number-add');\r\n\tthis.minusButton = $(el).find('.js-select-number-minus');\r\n\tthis.numberDisplay = $(el).find('.js-select-display');\r\n\r\n\tthis.opts = {\r\n\t\tmax: 10,\r\n\t\tmin: 1,\r\n\t\tincrement: 1,\r\n\t\tstartValue: 1\r\n\t};\r\n\r\n\tthis.opts = $.extend(this.opts, options);\r\n\r\n\tthis.currentValue = this.opts.startValue;\r\n\r\n\tvar self = this;\r\n\r\n\t$(this.wrapper).fadeIn();\r\n\r\n\tthis.updateVal = function(number) {\r\n\t\t$(self.numberDisplay).text(number);\r\n\t\t$(self.options).eq(number - 1).prop('selected', true);\r\n\t};\r\n\r\n\t$(this.minusButton).on('click', function(ev) {\r\n\t\tev.preventDefault();\r\n\t\tif (self.currentValue > self.opts.min) {\r\n\t\t\tself.currentValue--;\r\n\t\t}\r\n\r\n\t\tself.updateVal(self.currentValue);\r\n\r\n\t\tconsole.log(self.currentValue);\r\n\t});\r\n\t\r\n\t$(this.addButton).on('click', function (ev) {\r\n\t\tev.preventDefault();\r\n\t\tif (self.currentValue < self.opts.max) {\r\n\t\t\tself.currentValue++;\r\n\t\t}\r\n\r\n\t\tself.updateVal(self.currentValue);\r\n\r\n\t\tconsole.log(self.currentValue);\r\n\t});\r\n\r\n\tthis.updateVal(this.currentValue);\r\n\r\n\t$(this.select).hide();\r\n});\r\n\r\n$(document).ready(function() {\r\n\t$('.js-quantity').each(function(i, el) {\r\n\t\tnew SelectNumber(el);\r\n\t})\r\n});\r\n\nfunction _classCallCheck(instance, Constructor) {\r\n\tif (!(instance instanceof Constructor)) {\r\n\t\tthrow new TypeError(\"Cannot call a class as a function\");\r\n\t}\r\n}\r\n\r\n/**\r\n * Sticky.js\r\n * Library for sticky elements written in vanilla javascript. With this library you can easily set sticky elements on your website. It's also responsive.\r\n *\r\n * @version 1.2.0\r\n * @author Rafal Galus \r\n * @website https://rgalus.github.io/sticky-js/\r\n * @repo https://github.com/rgalus/sticky-js\r\n * @license https://github.com/rgalus/sticky-js/blob/master/LICENSE\r\n */\r\n\r\nvar Sticky = function () {\r\n\t/**\r\n\t * Sticky instance constructor\r\n\t * @constructor\r\n\t * @param {string} selector - Selector which we can find elements\r\n\t * @param {string} options - Global options for sticky elements (could be overwritten by data-{option}=\"\" attributes)\r\n\t */\r\n\tfunction Sticky() {\r\n\t\tvar selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\r\n\t\tvar options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\r\n\r\n\t\t_classCallCheck(this, Sticky);\r\n\r\n\t\tthis.selector = selector;\r\n\t\tthis.elements = [];\r\n\r\n\t\tthis.version = '1.2.0';\r\n\r\n\t\tthis.vp = this.getViewportSize();\r\n\t\tthis.body = document.querySelector('body');\r\n\r\n\t\tthis.options = {\r\n\t\t\twrap: options.wrap || false,\r\n\t\t\tmarginTop: options.marginTop || 0,\r\n\t\t\tstickyFor: options.stickyFor || 0,\r\n\t\t\tstickyClass: options.stickyClass || null,\r\n\t\t\tstickyContainer: options.stickyContainer || 'body'\r\n\t\t};\r\n\r\n\t\tthis.updateScrollTopPosition = this.updateScrollTopPosition.bind(this);\r\n\r\n\t\tthis.updateScrollTopPosition();\r\n\t\twindow.addEventListener('load', this.updateScrollTopPosition);\r\n\t\twindow.addEventListener('scroll', this.updateScrollTopPosition);\r\n\r\n\t\tthis.run();\r\n\t}\r\n\r\n\t/**\r\n\t * Function that waits for page to be fully loaded and then renders & activates every sticky element found with specified selector\r\n\t * @function\r\n\t */\r\n\r\n\r\n\tSticky.prototype.run = function run() {\r\n\t\tvar _this = this;\r\n\r\n\t\t// wait for page to be fully loaded\r\n\t\tvar pageLoaded = setInterval(function () {\r\n\t\t\tif (document.readyState === 'complete') {\r\n\t\t\t\tclearInterval(pageLoaded);\r\n\r\n\t\t\t\tvar elements = document.querySelectorAll(_this.selector);\r\n\t\t\t\t_this.forEach(elements, function (element) {\r\n\t\t\t\t\treturn _this.renderElement(element);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}, 10);\r\n\t};\r\n\r\n\t/**\r\n\t * Function that assign needed variables for sticky element, that are used in future for calculations and other\r\n\t * @function\r\n\t * @param {node} element - Element to be rendered\r\n\t */\r\n\r\n\r\n\tSticky.prototype.renderElement = function renderElement(element) {\r\n\t\tvar _this2 = this;\r\n\r\n\t\t// create container for variables needed in future\r\n\t\telement.sticky = {};\r\n\r\n\t\t// set default variables\r\n\t\telement.sticky.active = false;\r\n\r\n\t\telement.sticky.marginTop = parseInt(element.getAttribute('data-margin-top')) || this.options.marginTop;\r\n\t\telement.sticky.stickyFor = parseInt(element.getAttribute('data-sticky-for')) || this.options.stickyFor;\r\n\t\telement.sticky.stickyClass = element.getAttribute('data-sticky-class') || this.options.stickyClass;\r\n\t\telement.sticky.wrap = element.hasAttribute('data-sticky-wrap') ? true : this.options.wrap;\r\n\t\t// @todo attribute for stickyContainer\r\n\t\t// element.sticky.stickyContainer = element.getAttribute('data-sticky-container') || this.options.stickyContainer;\r\n\t\telement.sticky.stickyContainer = this.options.stickyContainer;\r\n\r\n\t\telement.sticky.container = this.getStickyContainer(element);\r\n\t\telement.sticky.container.rect = this.getRectangle(element.sticky.container);\r\n\r\n\t\telement.sticky.rect = this.getRectangle(element);\r\n\r\n\t\t// fix when element is image that has not yet loaded and width, height = 0\r\n\t\tif (element.tagName.toLowerCase() === 'img') {\r\n\t\t\telement.onload = function () {\r\n\t\t\t\treturn element.sticky.rect = _this2.getRectangle(element);\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tif (element.sticky.wrap) {\r\n\t\t\tthis.wrapElement(element);\r\n\t\t}\r\n\r\n\t\t// activate rendered element\r\n\t\tthis.activate(element);\r\n\t};\r\n\r\n\t/**\r\n\t * Wraps element into placeholder element\r\n\t * @function\r\n\t * @param {node} element - Element to be wrapped\r\n\t */\r\n\r\n\r\n\tSticky.prototype.wrapElement = function wrapElement(element) {\r\n\t\telement.insertAdjacentHTML('beforebegin', '');\r\n\t\telement.previousSibling.appendChild(element);\r\n\t};\r\n\r\n\t/**\r\n\t * Function that activates element when specified conditions are met and then initalise events\r\n\t * @function\r\n\t * @param {node} element - Element to be activated\r\n\t */\r\n\r\n\r\n\tSticky.prototype.activate = function activate(element) {\r\n\t\tif (element.sticky.rect.top + element.sticky.rect.height < element.sticky.container.rect.top + element.sticky.container.rect.height && element.sticky.stickyFor < this.vp.width && !element.sticky.active) {\r\n\t\t\telement.sticky.active = true;\r\n\t\t}\r\n\r\n\t\tif (this.elements.indexOf(element) < 0) {\r\n\t\t\tthis.elements.push(element);\r\n\t\t}\r\n\r\n\t\tif (!element.sticky.resizeEvent) {\r\n\t\t\tthis.initResizeEvents(element);\r\n\t\t\telement.sticky.resizeEvent = true;\r\n\t\t}\r\n\r\n\t\tif (!element.sticky.scrollEvent) {\r\n\t\t\tthis.initScrollEvents(element);\r\n\t\t\telement.sticky.scrollEvent = true;\r\n\t\t}\r\n\r\n\t\tthis.setPosition(element);\r\n\t};\r\n\r\n\t/**\r\n\t * Function which is adding onResizeEvents to window listener and assigns function to element as resizeListener\r\n\t * @function\r\n\t * @param {node} element - Element for which resize events are initialised\r\n\t */\r\n\r\n\r\n\tSticky.prototype.initResizeEvents = function initResizeEvents(element) {\r\n\t\tvar _this3 = this;\r\n\r\n\t\telement.sticky.resizeListener = function () {\r\n\t\t\treturn _this3.onResizeEvents(element);\r\n\t\t};\r\n\t\twindow.addEventListener('resize', element.sticky.resizeListener);\r\n\t};\r\n\r\n\t/**\r\n\t * Removes element listener from resize event\r\n\t * @function\r\n\t * @param {node} element - Element from which listener is deleted\r\n\t */\r\n\r\n\r\n\tSticky.prototype.destroyResizeEvents = function destroyResizeEvents(element) {\r\n\t\twindow.removeEventListener('resize', element.sticky.resizeListener);\r\n\t};\r\n\r\n\t/**\r\n\t * Function which is fired when user resize window. It checks if element should be activated or deactivated and then run setPosition function\r\n\t * @function\r\n\t * @param {node} element - Element for which event function is fired\r\n\t */\r\n\r\n\r\n\tSticky.prototype.onResizeEvents = function onResizeEvents(element) {\r\n\t\tthis.vp = this.getViewportSize();\r\n\r\n\t\telement.sticky.rect = this.getRectangle(element);\r\n\t\telement.sticky.container.rect = this.getRectangle(element.sticky.container);\r\n\r\n\t\tif (element.sticky.rect.top + element.sticky.rect.height < element.sticky.container.rect.top + element.sticky.container.rect.height && element.sticky.stickyFor < this.vp.width && !element.sticky.active) {\r\n\t\t\telement.sticky.active = true;\r\n\t\t} else if (element.sticky.rect.top + element.sticky.rect.height >= element.sticky.container.rect.top + element.sticky.container.rect.height || element.sticky.stickyFor >= this.vp.width && element.sticky.active) {\r\n\t\t\telement.sticky.active = false;\r\n\t\t}\r\n\r\n\t\tthis.setPosition(element);\r\n\t};\r\n\r\n\t/**\r\n\t * Function which is adding onScrollEvents to window listener and assigns function to element as scrollListener\r\n\t * @function\r\n\t * @param {node} element - Element for which scroll events are initialised\r\n\t */\r\n\r\n\r\n\tSticky.prototype.initScrollEvents = function initScrollEvents(element) {\r\n\t\tvar _this4 = this;\r\n\r\n\t\telement.sticky.scrollListener = function () {\r\n\t\t\treturn _this4.onScrollEvents(element);\r\n\t\t};\r\n\t\twindow.addEventListener('scroll', element.sticky.scrollListener);\r\n\t};\r\n\r\n\t/**\r\n\t * Removes element listener from scroll event\r\n\t * @function\r\n\t * @param {node} element - Element from which listener is deleted\r\n\t */\r\n\r\n\r\n\tSticky.prototype.destroyScrollEvents = function destroyScrollEvents(element) {\r\n\t\twindow.removeEventListener('scroll', element.sticky.scrollListener);\r\n\t};\r\n\r\n\t/**\r\n\t * Function which is fired when user scroll window. If element is active, function is invoking setPosition function\r\n\t * @function\r\n\t * @param {node} element - Element for which event function is fired\r\n\t */\r\n\r\n\r\n\tSticky.prototype.onScrollEvents = function onScrollEvents(element) {\r\n\t\tif (element.sticky.active) {\r\n\t\t\tthis.setPosition(element);\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Main function for the library. Here are some condition calculations and css appending for sticky element when user scroll window\r\n\t * @function\r\n\t * @param {node} element - Element that will be positioned if it's active\r\n\t */\r\n\r\n\r\n\tSticky.prototype.setPosition = function setPosition(element) {\r\n\t\tthis.css(element, {\r\n\t\t\tposition: '',\r\n\t\t\twidth: '',\r\n\t\t\ttop: '',\r\n\t\t\tleft: ''\r\n\t\t});\r\n\r\n\t\tif (this.vp.height < element.sticky.rect.height || !element.sticky.active) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!element.sticky.rect.width) {\r\n\t\t\telement.sticky.rect = this.getRectangle(element);\r\n\t\t}\r\n\r\n\t\tif (element.sticky.wrap) {\r\n\t\t\tthis.css(element.parentNode, {\r\n\t\t\t\tdisplay: 'block',\r\n\t\t\t\twidth: element.sticky.rect.width + 24 + 'px',\r\n\t\t\t\theight: element.sticky.rect.height + 'px'\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (element.sticky.rect.top === 0 && element.sticky.container === this.body) {\r\n\t\t\tthis.css(element, {\r\n\t\t\t\tposition: 'fixed',\r\n\t\t\t\ttop: element.sticky.rect.top + 'px',\r\n\t\t\t\tleft: element.sticky.rect.left + 'px',\r\n\t\t\t\twidth: element.sticky.rect.width + 'px'\r\n\t\t\t});\r\n\t\t} else if (this.scrollTop > element.sticky.rect.top - element.sticky.marginTop) {\r\n\t\t\tthis.css(element, {\r\n\t\t\t\tposition: 'fixed',\r\n\t\t\t\twidth: element.sticky.rect.width + 24 + 'px',\r\n\t\t\t\tleft: element.sticky.rect.left + 'px',\r\n\t\t\t});\r\n\r\n\t\t\tif (this.scrollTop + element.sticky.rect.height + element.sticky.marginTop > element.sticky.container.rect.top + element.sticky.container.offsetHeight) {\r\n\r\n\t\t\t\tif (element.sticky.stickyClass) {\r\n\t\t\t\t\telement.classList.remove(element.sticky.stickyClass);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.css(element, {\r\n\t\t\t\t\ttop: element.sticky.container.rect.top + element.sticky.container.offsetHeight - (this.scrollTop + element.sticky.rect.height) + 'px'\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tif (element.sticky.stickyClass) {\r\n\t\t\t\t\telement.classList.add(element.sticky.stickyClass);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.css(element, {\r\n\t\t\t\t\ttop: element.sticky.marginTop + 'px'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (element.sticky.stickyClass) {\r\n\t\t\t\telement.classList.remove(element.sticky.stickyClass);\r\n\t\t\t}\r\n\r\n\t\t\tthis.css(element, {\r\n\t\t\t\tposition: '',\r\n\t\t\t\twidth: '',\r\n\t\t\t\ttop: '',\r\n\t\t\t\tleft: ''\r\n\t\t\t});\r\n\r\n\t\t\tif (element.sticky.wrap) {\r\n\t\t\t\tthis.css(element.parentNode, {\r\n\t\t\t\t\tdisplay: '',\r\n\t\t\t\t\twidth: '',\r\n\t\t\t\t\theight: ''\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Function that updates element sticky rectangle (with sticky container), then activate or deactivate element, then update position if it's active\r\n\t * @function\r\n\t */\r\n\r\n\r\n\tSticky.prototype.update = function update() {\r\n\t\tvar _this5 = this;\r\n\r\n\t\tthis.forEach(this.elements, function (element) {\r\n\t\t\telement.sticky.rect = _this5.getRectangle(element);\r\n\t\t\telement.sticky.container.rect = _this5.getRectangle(element.sticky.container);\r\n\r\n\t\t\t_this5.activate(element);\r\n\t\t\t_this5.setPosition(element);\r\n\t\t});\r\n\t};\r\n\r\n\t/**\r\n\t * Destroys sticky element, remove listeners\r\n\t * @function\r\n\t */\r\n\r\n\r\n\tSticky.prototype.destroy = function destroy() {\r\n\t\tvar _this6 = this;\r\n\r\n\t\tthis.forEach(this.elements, function (element) {\r\n\t\t\t_this6.destroyResizeEvents(element);\r\n\t\t\t_this6.destroyScrollEvents(element);\r\n\t\t\tdelete element.sticky;\r\n\t\t});\r\n\t};\r\n\r\n\t/**\r\n\t * Function that returns container element in which sticky element is stuck (if is not specified, then it's stuck to body)\r\n\t * @function\r\n\t * @param {node} element - Element which sticky container are looked for\r\n\t * @return {node} element - Sticky container\r\n\t */\r\n\r\n\r\n\tSticky.prototype.getStickyContainer = function getStickyContainer(element) {\r\n\t\tvar container = element.parentNode;\r\n\r\n\t\twhile (!container.hasAttribute('data-sticky-container') && !container.parentNode.querySelector(element.sticky.stickyContainer) && container !== this.body) {\r\n\t\t\tcontainer = container.parentNode;\r\n\t\t}\r\n\r\n\t\treturn container;\r\n\t};\r\n\r\n\t/**\r\n\t * Function that returns element rectangle & position (width, height, top, left)\r\n\t * @function\r\n\t * @param {node} element - Element which position & rectangle are returned\r\n\t * @return {object}\r\n\t */\r\n\r\n\r\n\tSticky.prototype.getRectangle = function getRectangle(element) {\r\n\t\tthis.css(element, {\r\n\t\t\tposition: '',\r\n\t\t\twidth: '',\r\n\t\t\ttop: '',\r\n\t\t\tleft: ''\r\n\t\t});\r\n\r\n\t\tvar width = Math.max(element.offsetWidth, element.clientWidth, element.scrollWidth);\r\n\t\tvar height = Math.max(element.offsetHeight, element.clientHeight, element.scrollHeight);\r\n\r\n\t\tvar top = 0;\r\n\t\tvar left = 0;\r\n\r\n\t\tdo {\r\n\t\t\ttop += element.offsetTop || 0;\r\n\t\t\tleft += element.offsetLeft || 0;\r\n\t\t\telement = element.offsetParent;\r\n\t\t} while (element);\r\n\r\n\t\treturn {\r\n\t\t\ttop: top,\r\n\t\t\tleft: left,\r\n\t\t\twidth: width - 24,\r\n\t\t\theight: height\r\n\t\t};\r\n\t};\r\n\r\n\t/**\r\n\t * Function that returns viewport dimensions\r\n\t * @function\r\n\t * @return {object}\r\n\t */\r\n\r\n\r\n\tSticky.prototype.getViewportSize = function getViewportSize() {\r\n\t\treturn {\r\n\t\t\twidth: Math.max(document.documentElement.clientWidth, window.innerWidth || 0),\r\n\t\t\theight: Math.max(document.documentElement.clientHeight, window.innerHeight || 0)\r\n\t\t};\r\n\t};\r\n\r\n\t/**\r\n\t * Function that updates window scroll position\r\n\t * @function\r\n\t * @return {number}\r\n\t */\r\n\r\n\r\n\tSticky.prototype.updateScrollTopPosition = function updateScrollTopPosition() {\r\n\t\tthis.scrollTop = (window.pageYOffset || document.scrollTop) - (document.clientTop || 0) || 0;\r\n\t};\r\n\r\n\t/**\r\n\t * Helper function for loops\r\n\t * @helper\r\n\t * @param {array}\r\n\t * @param {function} callback - Callback function (no need for explanation)\r\n\t */\r\n\r\n\r\n\tSticky.prototype.forEach = function forEach(array, callback) {\r\n\t\tfor (var i = 0, len = array.length; i < len; i++) {\r\n\t\t\tcallback(array[i]);\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Helper function to add/remove css properties for specified element.\r\n\t * @helper\r\n\t * @param {node} element - DOM element\r\n\t * @param {object} properties - CSS properties that will be added/removed from specified element\r\n\t */\r\n\r\n\r\n\tSticky.prototype.css = function css(element, properties) {\r\n\t\tfor (var property in properties) {\r\n\t\t\tif (properties.hasOwnProperty(property)) {\r\n\t\t\t\telement.style[property] = properties[property];\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\treturn Sticky;\r\n}();\r\n\r\n/**\r\n * Export function that supports AMD, CommonJS and Plain Browser.\r\n */\r\n\r\n\r\n(function (root, factory) {\r\n\tif (typeof exports !== 'undefined') {\r\n\t\tmodule.exports = factory;\r\n\t} else if (typeof define === 'function' && define.amd) {\r\n\t\tdefine([], factory);\r\n\t} else {\r\n\t\troot.Sticky = factory;\r\n\t}\r\n})(this, Sticky);\r\n\n;(function () {\r\n\r\n\t'use strict';\r\n\r\n\tvar PLUGIN_NAME = 'Modal';\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tfunction Constructor(elements, options) {\r\n\r\n\t\t// Define default values.\r\n\t\tvar defaults = {\r\n\t\t\tdefaultTriggerClass: '.js-modal-trigger',\r\n\t\t\ttitle: ''\r\n\t\t};\r\n\r\n\t\t// Put elements in to the scope.\r\n\r\n\t\t// Merge defaults with options pragmatically.\r\n\t\tthis.options = $.extend(defaults, options);\r\n\t\tthis.elements = $(elements);\r\n\t\tthis.triggers = $(this.options.defaultTriggerClass);\r\n\r\n\t\tthis.scrollPosition = 0;\r\n\t\tthis.easing = 'easeInOutCirc';\r\n\t\tthis.animationLength = 233;\r\n\r\n\t\tthis.init();\r\n\t}\r\n\r\n\t(function () {\r\n\r\n\t\t/**\r\n\t\t * @title init\r\n\t\t * @description initialize click even handlers.\r\n\t\t */\r\n\t\tthis.init = function () {\r\n\r\n\t\t\tvar _self = this;\r\n\r\n\t\t\tif (!this.elements.length) return;\r\n\r\n\t\t\t$.each(this.elements, function(index, el) {\r\n\t\t\t\t_self.setupEvents(el);\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * @title setupEvents\r\n\t\t * @description handle all click events to open/close the modal.\r\n\t\t */\r\n\t\tthis.setupEvents = function(el) {\r\n\r\n\t\t\tvar _this = this;\r\n\r\n\t\t\t// Create outside click zone to close the modal. Easier to\r\n\t\t\t// set it as an element rather than create bloat to detect\r\n\t\t\t// an outside click.\r\n\t\t\tvar closeBg = document.createElement('div');\r\n\t\t\tcloseBg.classList.add('js-modal-outside');\r\n\t\t\tcloseBg.style.position = 'fixed';\r\n\t\t\tcloseBg.style.width = '100%';\r\n\t\t\tcloseBg.style.height = '100%';\r\n\t\t\tcloseBg.style.top = 0;\r\n\t\t\tcloseBg.style.left = 0;\r\n\t\t\tcloseBg.style.zIndex = 2001;\r\n\r\n\t\t\t// Append the modal background to the modal element.\r\n\t\t\t$(el).append(closeBg);\r\n\r\n\t\t\t// For each trigger, bind a click event to open it.\r\n\t\t\t$.each(this.triggers, function(index, trigger) {\r\n\r\n\t\t\t\tvar triggerTarget = $(trigger).data('target'),\r\n\t\t\t\t\tmodalTarget = $(el).data('modal');\r\n\r\n\t\t\t\t// If the data-target equals a valid modal, open the target\r\n\t\t\t\t// modal passed to data-target.\r\n\t\t\t\tif (triggerTarget === modalTarget) {\r\n\t\t\t\t\t$(trigger).on('click', function(event) {\r\n\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t\t_this.open(el);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// Create close button element.\r\n\t\t\tvar closeButton = $('');\r\n\r\n\t\t\t// Create mobile helper text element.\r\n\t\t\tvar mobileCloseHelper = $('Tap here to close');\r\n\r\n\t\t\t// Get modal content body.\r\n\t\t\tvar body = $(el).find('.c-modal__body');\r\n\r\n\t\t\t// Add both the close button and mobile helper text to the modal body.\r\n\t\t\t$(body).prepend(closeButton);\r\n\t\t\t$(body).append(mobileCloseHelper);\r\n\t\t\t$(body).hide();\r\n\r\n\t\t\t// Handle all close elements that can hide the modal.\r\n\t\t\tvar closeTriggers = $(el).find('.js-modal-close');\r\n\r\n\t\t\t$.each(closeTriggers, function(index, trigger) {\r\n\t\t\t\t$(trigger).on('click', function (event) {\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t_this.close(el);\r\n\t\t\t\t});\r\n\t\t\t})\r\n\r\n\t\t\t$(closeBg).on('click', function(event) {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\t_this.close(el);\r\n\t\t\t});\r\n\r\n\t\t\tif ($(el).data('title')) {\r\n\t\t\t\tthis.updateTitle(el);\r\n\t\t\t}\r\n\r\n\t\t\tif ($(el).data('width')) {\r\n\t\t\t\t$(el).find('.c-modal__body').css({ maxWidth: $(el).attr('data-width') + 'px' });\r\n\t\t\t}\r\n\r\n\t\t\t$(document).keyup(function (e) {\r\n\t\t\t\tif (e.keyCode === 27) _this.close(el);\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tthis.close = function(el) {\r\n\t\t\t$('html').removeClass('js-fixed-scroll');\r\n\r\n\t\t\tvar body = $(el).find('.c-modal__body');\r\n\r\n\t\t\t$(body).fadeOut(this.animationLength, this.easing, function() {\r\n\t\t\t\t$(el).fadeOut(this.animationLength, this.easing);\r\n\t\t\t});\r\n\r\n\t\t\t$(window).scrollTop(this.scrollPosition);\r\n\t\t};\r\n\r\n\t\tthis.open = function(el) {\r\n\r\n\t\t\tthis.scrollPosition = $(window).scrollTop();\r\n\r\n\t\t\tvar body = $(el).find('.c-modal__body');\r\n\r\n\t\t\t$('html').addClass('js-fixed-scroll');\r\n\r\n\t\t\t$(el).fadeIn(this.animationLength, this.easing, function () {\r\n\t\t\t\t$(body).fadeIn();\r\n\t\t\t});\r\n\r\n\t\t\t// var mh = $(el).attr('data-match-height');\r\n\r\n\t\t\t// if (typeof mh !== typeof undefined && mh !== false) {\r\n\t\t\t// \tif (mh.length > 0) $(mh).matchHeight({ byRow: false });\r\n\t\t\t// }\r\n\r\n\t\t\t$(el).scrollTop(0);\r\n\r\n\t\t\tif ($(body).height() < $(window).height()) {\r\n\t\t\t\t$(body).css({ transform: 'translateX(-50%) translateY(-50%)', top: '50%' });\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.updateTitle = function(el) {\r\n\t\t\tif ($(el).data('title')) {\r\n\t\t\t\t$(el).find('.c-modal__body').prepend('
' + $(el).data('title') + '
');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}).call(Constructor.prototype);\r\n\r\n\twindow[PLUGIN_NAME] = Constructor;\r\n})();\r\n\r\n$(document).ready(function() {\r\n\tnew Modal('.js-modal');\r\n});\r\n\n// ProgressBar.js 1.1.0\n// https://kimmobrunfeldt.github.io/progressbar.js\n// License: MIT\n\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.ProgressBar = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;il?l:n,p=a-(l-h);h>=l?(c(f,e,p),t.stop(!0)):(t._applyFilter(\"beforeTween\"),h1&&void 0!==arguments[1]?arguments[1]:\"linear\",e={},r=u(n);if(\"string\"===r||\"function\"===r)for(var i in t)e[i]=n;else for(var o in t)e[o]=n[o]||\"linear\";return e},m=function(t){if(t===l)(l=t._next)?l._previous=null:h=null;else if(t===h)(h=t._previous)?h._next=null:l=null;else{var n=t._previous,e=t._next;n._next=e,e._previous=n}t._previous=t._next=null},g=function(){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;!function(t,n){if(!(t instanceof n))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this._currentState=n,this._configured=!1,this._filters=[],this._timestamp=null,this._next=null,this._previous=null,e&&this.setConfig(e)}var n,e,r;return n=t,(e=[{key:\"_applyFilter\",value:function(t){var n=!0,e=!1,r=void 0;try{for(var i,u=this._filters[Symbol.iterator]();!(n=(i=u.next()).done);n=!0){var o=i.value[t];o&&o(this)}}catch(t){e=!0,r=t}finally{try{n||null==u.return||u.return()}finally{if(e)throw r}}}},{key:\"tween\",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,e=this._attachment,r=this._configured;return!n&&r||this.setConfig(n),this._pausedAtTime=null,this._timestamp=t.now(),this._start(this.get(),e),this.resume()}},{key:\"setConfig\",value:function(){var n=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.attachment,i=e.delay,u=void 0===i?0:i,a=e.duration,c=void 0===a?500:a,f=e.easing,l=e.from,h=e.promise,p=void 0===h?Promise:h,d=e.start,v=void 0===d?s:d,y=e.step,m=void 0===y?s:y,g=e.to;this._configured=!0,this._attachment=r,this._isPlaying=!1,this._pausedAtTime=null,this._scheduleId=null,this._delay=u,this._start=v,this._step=m,this._duration=c,this._currentState=o({},l||this.get()),this._originalState=this.get(),this._targetState=o({},g||this.get());var w=this._currentState;this._targetState=o({},w,this._targetState),this._easing=_(w,f);var b=t.filters;for(var S in this._filters.length=0,b)b[S].doesApply(this)&&this._filters.push(b[S]);return this._applyFilter(\"tweenCreated\"),this._promise=new p(function(t,e){n._resolve=t,n._reject=e}),this._promise.catch(s),this}},{key:\"get\",value:function(){return o({},this._currentState)}},{key:\"set\",value:function(t){this._currentState=t}},{key:\"pause\",value:function(){if(this._isPlaying)return this._pausedAtTime=t.now(),this._isPlaying=!1,m(this),this}},{key:\"resume\",value:function(){if(null===this._timestamp)return this.tween();if(this._isPlaying)return this._promise;var n=t.now();return this._pausedAtTime&&(this._timestamp+=n-this._pausedAtTime,this._pausedAtTime=null),this._isPlaying=!0,null===l?(l=this,h=this,function t(){l&&(f.call(c,t,1e3/60),y())}()):(this._previous=h,h._next=this,h=this),this._promise}},{key:\"seek\",value:function(n){n=Math.max(n,0);var e=t.now();return this._timestamp+n===0?this:(this._timestamp=e-n,this._isPlaying||v(this,e),this)}},{key:\"stop\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=this._attachment,e=this._currentState,r=this._easing,i=this._originalState,u=this._targetState;if(this._isPlaying)return this._isPlaying=!1,m(this),t?(this._applyFilter(\"beforeTween\"),d(1,e,i,u,1,0,r),this._applyFilter(\"afterTween\"),this._applyFilter(\"afterTweenEnd\"),this._resolve(e,n)):this._reject(e,n),this}},{key:\"isPlaying\",value:function(){return this._isPlaying}},{key:\"setScheduleFunction\",value:function(n){t.setScheduleFunction(n)}},{key:\"dispose\",value:function(){for(var t in this)delete this[t]}}])&&i(n.prototype,e),r&&i(n,r),t}();function w(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=new g,e=n.tween(t);return e.tweenable=n,e}g.setScheduleFunction=function(t){return f=t},g.formulas=p,g.filters={},g.now=Date.now||function(){return+new Date}}).call(this,e(2))},function(t,n,e){\"use strict\";e.r(n),e.d(n,\"linear\",function(){return r}),e.d(n,\"easeInQuad\",function(){return i}),e.d(n,\"easeOutQuad\",function(){return u}),e.d(n,\"easeInOutQuad\",function(){return o}),e.d(n,\"easeInCubic\",function(){return a}),e.d(n,\"easeOutCubic\",function(){return c}),e.d(n,\"easeInOutCubic\",function(){return f}),e.d(n,\"easeInQuart\",function(){return s}),e.d(n,\"easeOutQuart\",function(){return l}),e.d(n,\"easeInOutQuart\",function(){return h}),e.d(n,\"easeInQuint\",function(){return p}),e.d(n,\"easeOutQuint\",function(){return d}),e.d(n,\"easeInOutQuint\",function(){return v}),e.d(n,\"easeInSine\",function(){return y}),e.d(n,\"easeOutSine\",function(){return _}),e.d(n,\"easeInOutSine\",function(){return m}),e.d(n,\"easeInExpo\",function(){return g}),e.d(n,\"easeOutExpo\",function(){return w}),e.d(n,\"easeInOutExpo\",function(){return b}),e.d(n,\"easeInCirc\",function(){return S}),e.d(n,\"easeOutCirc\",function(){return O}),e.d(n,\"easeInOutCirc\",function(){return M}),e.d(n,\"easeOutBounce\",function(){return k}),e.d(n,\"easeInBack\",function(){return j}),e.d(n,\"easeOutBack\",function(){return P}),e.d(n,\"easeInOutBack\",function(){return x}),e.d(n,\"elastic\",function(){return T}),e.d(n,\"swingFromTo\",function(){return F}),e.d(n,\"swingFrom\",function(){return A}),e.d(n,\"swingTo\",function(){return E}),e.d(n,\"bounce\",function(){return I}),e.d(n,\"bouncePast\",function(){return C}),e.d(n,\"easeFromTo\",function(){return q}),e.d(n,\"easeFrom\",function(){return Q}),e.d(n,\"easeTo\",function(){return D});\n/*!\n * All equations are adapted from Thomas Fuchs'\n * [Scripty2](https://github.com/madrobby/scripty2/blob/master/src/effects/transitions/penner.js).\n *\n * Based on Easing Equations (c) 2003 [Robert\n * Penner](http://www.robertpenner.com/), all rights reserved. This work is\n * [subject to terms](http://www.robertpenner.com/easing_terms_of_use.html).\n */\n/*!\n * TERMS OF USE - EASING EQUATIONS\n * Open source under the BSD License.\n * Easing Equations (c) 2003 Robert Penner, all rights reserved.\n */\nvar r=function(t){return t},i=function(t){return Math.pow(t,2)},u=function(t){return-(Math.pow(t-1,2)-1)},o=function(t){return(t/=.5)<1?.5*Math.pow(t,2):-.5*((t-=2)*t-2)},a=function(t){return Math.pow(t,3)},c=function(t){return Math.pow(t-1,3)+1},f=function(t){return(t/=.5)<1?.5*Math.pow(t,3):.5*(Math.pow(t-2,3)+2)},s=function(t){return Math.pow(t,4)},l=function(t){return-(Math.pow(t-1,4)-1)},h=function(t){return(t/=.5)<1?.5*Math.pow(t,4):-.5*((t-=2)*Math.pow(t,3)-2)},p=function(t){return Math.pow(t,5)},d=function(t){return Math.pow(t-1,5)+1},v=function(t){return(t/=.5)<1?.5*Math.pow(t,5):.5*(Math.pow(t-2,5)+2)},y=function(t){return 1-Math.cos(t*(Math.PI/2))},_=function(t){return Math.sin(t*(Math.PI/2))},m=function(t){return-.5*(Math.cos(Math.PI*t)-1)},g=function(t){return 0===t?0:Math.pow(2,10*(t-1))},w=function(t){return 1===t?1:1-Math.pow(2,-10*t)},b=function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*--t))},S=function(t){return-(Math.sqrt(1-t*t)-1)},O=function(t){return Math.sqrt(1-Math.pow(t-1,2))},M=function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},k=function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},j=function(t){var n=1.70158;return t*t*((n+1)*t-n)},P=function(t){var n=1.70158;return(t-=1)*t*((n+1)*t+n)+1},x=function(t){var n=1.70158;return(t/=.5)<1?t*t*((1+(n*=1.525))*t-n)*.5:.5*((t-=2)*t*((1+(n*=1.525))*t+n)+2)},T=function(t){return-1*Math.pow(4,-8*t)*Math.sin((6*t-1)*(2*Math.PI)/2)+1},F=function(t){var n=1.70158;return(t/=.5)<1?t*t*((1+(n*=1.525))*t-n)*.5:.5*((t-=2)*t*((1+(n*=1.525))*t+n)+2)},A=function(t){var n=1.70158;return t*t*((n+1)*t-n)},E=function(t){var n=1.70158;return(t-=1)*t*((n+1)*t+n)+1},I=function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},C=function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?2-(7.5625*(t-=1.5/2.75)*t+.75):t<2.5/2.75?2-(7.5625*(t-=2.25/2.75)*t+.9375):2-(7.5625*(t-=2.625/2.75)*t+.984375)},q=function(t){return(t/=.5)<1?.5*Math.pow(t,4):-.5*((t-=2)*Math.pow(t,3)-2)},Q=function(t){return Math.pow(t,4)},D=function(t){return Math.pow(t,.25)}},function(t,n){var e;e=function(){return this}();try{e=e||new Function(\"return this\")()}catch(t){\"object\"==typeof window&&(e=window)}t.exports=e},function(t,n,e){\"use strict\";e.r(n);var r={};e.r(r),e.d(r,\"doesApply\",function(){return x}),e.d(r,\"tweenCreated\",function(){return T}),e.d(r,\"beforeTween\",function(){return F}),e.d(r,\"afterTween\",function(){return A});var i,u,o=e(0),a=/(\\d|-|\\.)/,c=/([^\\-0-9.]+)/g,f=/[0-9.-]+/g,s=(i=f.source,u=/,\\s*/.source,new RegExp(\"rgb\\\\(\".concat(i).concat(u).concat(i).concat(u).concat(i,\"\\\\)\"),\"g\")),l=/^.*\\(/,h=/#([0-9]|[a-f]){3,6}/gi,p=function(t,n){return t.map(function(t,e){return\"_\".concat(n,\"_\").concat(e)})};function d(t){return parseInt(t,16)}var v=function(t){return\"rgb(\".concat((n=t,3===(n=n.replace(/#/,\"\")).length&&(n=(n=n.split(\"\"))[0]+n[0]+n[1]+n[1]+n[2]+n[2]),[d(n.substr(0,2)),d(n.substr(2,2)),d(n.substr(4,2))]).join(\",\"),\")\");var n},y=function(t,n,e){var r=n.match(t),i=n.replace(t,\"VAL\");return r&&r.forEach(function(t){return i=i.replace(\"VAL\",e(t))}),i},_=function(t){for(var n in t){var e=t[n];\"string\"==typeof e&&e.match(h)&&(t[n]=y(h,e,v))}},m=function(t){var n=t.match(f).map(Math.floor),e=t.match(l)[0];return\"\".concat(e).concat(n.join(\",\"),\")\")},g=function(t){return t.match(f)},w=function(t){var n,e,r={};for(var i in t){var u=t[i];\"string\"==typeof u&&(r[i]={formatString:(n=u,e=void 0,e=n.match(c),e?(1===e.length||n.charAt(0).match(a))&&e.unshift(\"\"):e=[\"\",\"\"],e.join(\"VAL\")),chunkNames:p(g(u),i)})}return r},b=function(t,n){var e=function(e){g(t[e]).forEach(function(r,i){return t[n[e].chunkNames[i]]=+r}),delete t[e]};for(var r in n)e(r)},S=function(t,n){var e={};return n.forEach(function(n){e[n]=t[n],delete t[n]}),e},O=function(t,n){return n.map(function(n){return t[n]})},M=function(t,n){return n.forEach(function(n){return t=t.replace(\"VAL\",+n.toFixed(4))}),t},k=function(t,n){for(var e in n){var r=n[e],i=r.chunkNames,u=r.formatString,o=M(u,O(S(t,i),i));t[e]=y(s,o,m)}},j=function(t,n){var e=function(e){var r=n[e].chunkNames,i=t[e];if(\"string\"==typeof i){var u=i.split(\" \"),o=u[u.length-1];r.forEach(function(n,e){return t[n]=u[e]||o})}else r.forEach(function(n){return t[n]=i});delete t[e]};for(var r in n)e(r)},P=function(t,n){for(var e in n){var r=n[e].chunkNames,i=t[r[0]];t[e]=\"string\"==typeof i?r.map(function(n){var e=t[n];return delete t[n],e}).join(\" \"):i}},x=function(t){var n=t._currentState;return Object.keys(n).some(function(t){return\"string\"==typeof n[t]})};function T(t){var n=t._currentState;[n,t._originalState,t._targetState].forEach(_),t._tokenData=w(n)}function F(t){var n=t._currentState,e=t._originalState,r=t._targetState,i=t._easing,u=t._tokenData;j(i,u),[n,e,r].forEach(function(t){return b(t,u)})}function A(t){var n=t._currentState,e=t._originalState,r=t._targetState,i=t._easing,u=t._tokenData;[n,e,r].forEach(function(t){return k(t,u)}),P(i,u)}function E(t,n,e){return n in t?Object.defineProperty(t,n,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[n]=e,t}var I=new o.a,C=o.a.filters,q=function(t,n,e,r){var i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,u=function(t){for(var n=1;n=0?t:0-t};return o=1-(c=3*n)-(a=3*(r-n)-c),f=1-(l=3*e)-(s=3*(i-e)-l),function(t,n){return e=function(t,n){var e,r,i,u,f,s,l;for(i=t,s=0;s<8;s++){if(u=h(i)-t,p(u)(r=1))return r;for(;eu?e=i:r=i,i=.5*(r-e)+e}return i}(t,n),((f*e+s)*e+l)*e;var e}(t,function(t){return 1/(200*t)}(u))}var L=function(t,n,e,r,i){var u=function(t,n,e,r){return function(i){return z(i,t,n,e,r,1)}}(n,e,r,i);return u.displayName=t,u.x1=n,u.y1=e,u.x2=r,u.y2=i,o.a.formulas[t]=u},V=function(t){return delete o.a.formulas[t]};e.d(n,\"processTweens\",function(){return o.c}),e.d(n,\"Tweenable\",function(){return o.a}),e.d(n,\"tween\",function(){return o.d}),e.d(n,\"interpolate\",function(){return q}),e.d(n,\"Scene\",function(){return N}),e.d(n,\"setBezierFunction\",function(){return L}),e.d(n,\"unsetBezierFunction\",function(){return V}),o.a.filters.token=r}])});\n\n},{}],2:[function(require,module,exports){\n// Circle shaped progress bar\n\nvar Shape = require('./shape');\nvar utils = require('./utils');\n\nvar Circle = function Circle(container, options) {\n // Use two arcs to form a circle\n // See this answer http://stackoverflow.com/a/10477334/1446092\n this._pathTemplate =\n 'M 50,50 m 0,-{radius}' +\n ' a {radius},{radius} 0 1 1 0,{2radius}' +\n ' a {radius},{radius} 0 1 1 0,-{2radius}';\n\n this.containerAspectRatio = 1;\n\n Shape.apply(this, arguments);\n};\n\nCircle.prototype = new Shape();\nCircle.prototype.constructor = Circle;\n\nCircle.prototype._pathString = function _pathString(opts) {\n var widthOfWider = opts.strokeWidth;\n if (opts.trailWidth && opts.trailWidth > opts.strokeWidth) {\n widthOfWider = opts.trailWidth;\n }\n\n var r = 50 - widthOfWider / 2;\n\n return utils.render(this._pathTemplate, {\n radius: r,\n '2radius': r * 2\n });\n};\n\nCircle.prototype._trailString = function _trailString(opts) {\n return this._pathString(opts);\n};\n\nmodule.exports = Circle;\n\n},{\"./shape\":7,\"./utils\":9}],3:[function(require,module,exports){\n// Line shaped progress bar\n\nvar Shape = require('./shape');\nvar utils = require('./utils');\n\nvar Line = function Line(container, options) {\n this._pathTemplate = 'M 0,{center} L 100,{center}';\n Shape.apply(this, arguments);\n};\n\nLine.prototype = new Shape();\nLine.prototype.constructor = Line;\n\nLine.prototype._initializeSvg = function _initializeSvg(svg, opts) {\n svg.setAttribute('viewBox', '0 0 100 ' + opts.strokeWidth);\n svg.setAttribute('preserveAspectRatio', 'none');\n};\n\nLine.prototype._pathString = function _pathString(opts) {\n return utils.render(this._pathTemplate, {\n center: opts.strokeWidth / 2\n });\n};\n\nLine.prototype._trailString = function _trailString(opts) {\n return this._pathString(opts);\n};\n\nmodule.exports = Line;\n\n},{\"./shape\":7,\"./utils\":9}],4:[function(require,module,exports){\nmodule.exports = {\n // Higher level API, different shaped progress bars\n Line: require('./line'),\n Circle: require('./circle'),\n SemiCircle: require('./semicircle'),\n Square: require('./square'),\n\n // Lower level API to use any SVG path\n Path: require('./path'),\n\n // Base-class for creating new custom shapes\n // to be in line with the API of built-in shapes\n // Undocumented.\n Shape: require('./shape'),\n\n // Internal utils, undocumented.\n utils: require('./utils')\n};\n\n},{\"./circle\":2,\"./line\":3,\"./path\":5,\"./semicircle\":6,\"./shape\":7,\"./square\":8,\"./utils\":9}],5:[function(require,module,exports){\n// Lower level API to animate any kind of svg path\n\nvar shifty = require('shifty');\nvar utils = require('./utils');\n\nvar Tweenable = shifty.Tweenable;\n\nvar EASING_ALIASES = {\n easeIn: 'easeInCubic',\n easeOut: 'easeOutCubic',\n easeInOut: 'easeInOutCubic'\n};\n\nvar Path = function Path(path, opts) {\n // Throw a better error if not initialized with `new` keyword\n if (!(this instanceof Path)) {\n throw new Error('Constructor was called without new keyword');\n }\n\n // Default parameters for animation\n opts = utils.extend({\n delay: 0,\n duration: 800,\n easing: 'linear',\n from: {},\n to: {},\n step: function() {}\n }, opts);\n\n var element;\n if (utils.isString(path)) {\n element = document.querySelector(path);\n } else {\n element = path;\n }\n\n // Reveal .path as public attribute\n this.path = element;\n this._opts = opts;\n this._tweenable = null;\n\n // Set up the starting positions\n var length = this.path.getTotalLength();\n this.path.style.strokeDasharray = length + ' ' + length;\n this.set(0);\n};\n\nPath.prototype.value = function value() {\n var offset = this._getComputedDashOffset();\n var length = this.path.getTotalLength();\n\n var progress = 1 - offset / length;\n // Round number to prevent returning very small number like 1e-30, which\n // is practically 0\n return parseFloat(progress.toFixed(6), 10);\n};\n\nPath.prototype.set = function set(progress) {\n this.stop();\n\n this.path.style.strokeDashoffset = this._progressToOffset(progress);\n\n var step = this._opts.step;\n if (utils.isFunction(step)) {\n var easing = this._easing(this._opts.easing);\n var values = this._calculateTo(progress, easing);\n var reference = this._opts.shape || this;\n step(values, reference, this._opts.attachment);\n }\n};\n\nPath.prototype.stop = function stop() {\n this._stopTween();\n this.path.style.strokeDashoffset = this._getComputedDashOffset();\n};\n\n// Method introduced here:\n// http://jakearchibald.com/2013/animated-line-drawing-svg/\nPath.prototype.animate = function animate(progress, opts, cb) {\n opts = opts || {};\n\n if (utils.isFunction(opts)) {\n cb = opts;\n opts = {};\n }\n\n var passedOpts = utils.extend({}, opts);\n\n // Copy default opts to new object so defaults are not modified\n var defaultOpts = utils.extend({}, this._opts);\n opts = utils.extend(defaultOpts, opts);\n\n var shiftyEasing = this._easing(opts.easing);\n var values = this._resolveFromAndTo(progress, shiftyEasing, passedOpts);\n\n this.stop();\n\n // Trigger a layout so styles are calculated & the browser\n // picks up the starting position before animating\n this.path.getBoundingClientRect();\n\n var offset = this._getComputedDashOffset();\n var newOffset = this._progressToOffset(progress);\n\n var self = this;\n this._tweenable = new Tweenable();\n this._tweenable.tween({\n from: utils.extend({ offset: offset }, values.from),\n to: utils.extend({ offset: newOffset }, values.to),\n duration: opts.duration,\n delay: opts.delay,\n easing: shiftyEasing,\n step: function(state) {\n self.path.style.strokeDashoffset = state.offset;\n var reference = opts.shape || self;\n opts.step(state, reference, opts.attachment);\n }\n }).then(function(state) {\n if (utils.isFunction(cb)) {\n cb();\n }\n });\n};\n\nPath.prototype._getComputedDashOffset = function _getComputedDashOffset() {\n var computedStyle = window.getComputedStyle(this.path, null);\n return parseFloat(computedStyle.getPropertyValue('stroke-dashoffset'), 10);\n};\n\nPath.prototype._progressToOffset = function _progressToOffset(progress) {\n var length = this.path.getTotalLength();\n return length - progress * length;\n};\n\n// Resolves from and to values for animation.\nPath.prototype._resolveFromAndTo = function _resolveFromAndTo(progress, easing, opts) {\n if (opts.from && opts.to) {\n return {\n from: opts.from,\n to: opts.to\n };\n }\n\n return {\n from: this._calculateFrom(easing),\n to: this._calculateTo(progress, easing)\n };\n};\n\n// Calculate `from` values from options passed at initialization\nPath.prototype._calculateFrom = function _calculateFrom(easing) {\n return shifty.interpolate(this._opts.from, this._opts.to, this.value(), easing);\n};\n\n// Calculate `to` values from options passed at initialization\nPath.prototype._calculateTo = function _calculateTo(progress, easing) {\n return shifty.interpolate(this._opts.from, this._opts.to, progress, easing);\n};\n\nPath.prototype._stopTween = function _stopTween() {\n if (this._tweenable !== null) {\n this._tweenable.stop();\n this._tweenable = null;\n }\n};\n\nPath.prototype._easing = function _easing(easing) {\n if (EASING_ALIASES.hasOwnProperty(easing)) {\n return EASING_ALIASES[easing];\n }\n\n return easing;\n};\n\nmodule.exports = Path;\n\n},{\"./utils\":9,\"shifty\":1}],6:[function(require,module,exports){\n// Semi-SemiCircle shaped progress bar\n\nvar Shape = require('./shape');\nvar Circle = require('./circle');\nvar utils = require('./utils');\n\nvar SemiCircle = function SemiCircle(container, options) {\n // Use one arc to form a SemiCircle\n // See this answer http://stackoverflow.com/a/10477334/1446092\n this._pathTemplate =\n 'M 50,50 m -{radius},0' +\n ' a {radius},{radius} 0 1 1 {2radius},0';\n\n this.containerAspectRatio = 2;\n\n Shape.apply(this, arguments);\n};\n\nSemiCircle.prototype = new Shape();\nSemiCircle.prototype.constructor = SemiCircle;\n\nSemiCircle.prototype._initializeSvg = function _initializeSvg(svg, opts) {\n svg.setAttribute('viewBox', '0 0 100 50');\n};\n\nSemiCircle.prototype._initializeTextContainer = function _initializeTextContainer(\n opts,\n container,\n textContainer\n) {\n if (opts.text.style) {\n // Reset top style\n textContainer.style.top = 'auto';\n textContainer.style.bottom = '0';\n\n if (opts.text.alignToBottom) {\n utils.setStyle(textContainer, 'transform', 'translate(-50%, 0)');\n } else {\n utils.setStyle(textContainer, 'transform', 'translate(-50%, 50%)');\n }\n }\n};\n\n// Share functionality with Circle, just have different path\nSemiCircle.prototype._pathString = Circle.prototype._pathString;\nSemiCircle.prototype._trailString = Circle.prototype._trailString;\n\nmodule.exports = SemiCircle;\n\n},{\"./circle\":2,\"./shape\":7,\"./utils\":9}],7:[function(require,module,exports){\n// Base object for different progress bar shapes\n\nvar Path = require('./path');\nvar utils = require('./utils');\n\nvar DESTROYED_ERROR = 'Object is destroyed';\n\nvar Shape = function Shape(container, opts) {\n // Throw a better error if progress bars are not initialized with `new`\n // keyword\n if (!(this instanceof Shape)) {\n throw new Error('Constructor was called without new keyword');\n }\n\n // Prevent calling constructor without parameters so inheritance\n // works correctly. To understand, this is how Shape is inherited:\n //\n // Line.prototype = new Shape();\n //\n // We just want to set the prototype for Line.\n if (arguments.length === 0) {\n return;\n }\n\n // Default parameters for progress bar creation\n this._opts = utils.extend({\n color: '#555',\n strokeWidth: 1.0,\n trailColor: null,\n trailWidth: null,\n fill: null,\n text: {\n style: {\n color: null,\n position: 'absolute',\n left: '50%',\n top: '50%',\n padding: 0,\n margin: 0,\n transform: {\n prefix: true,\n value: 'translate(-50%, -50%)'\n }\n },\n autoStyleContainer: true,\n alignToBottom: true,\n value: null,\n className: 'progressbar-text'\n },\n svgStyle: {\n display: 'block',\n width: '100%'\n },\n warnings: false\n }, opts, true); // Use recursive extend\n\n // If user specifies e.g. svgStyle or text style, the whole object\n // should replace the defaults to make working with styles easier\n if (utils.isObject(opts) && opts.svgStyle !== undefined) {\n this._opts.svgStyle = opts.svgStyle;\n }\n if (utils.isObject(opts) && utils.isObject(opts.text) && opts.text.style !== undefined) {\n this._opts.text.style = opts.text.style;\n }\n\n var svgView = this._createSvgView(this._opts);\n\n var element;\n if (utils.isString(container)) {\n element = document.querySelector(container);\n } else {\n element = container;\n }\n\n if (!element) {\n throw new Error('Container does not exist: ' + container);\n }\n\n this._container = element;\n this._container.appendChild(svgView.svg);\n if (this._opts.warnings) {\n this._warnContainerAspectRatio(this._container);\n }\n\n if (this._opts.svgStyle) {\n utils.setStyles(svgView.svg, this._opts.svgStyle);\n }\n\n // Expose public attributes before Path initialization\n this.svg = svgView.svg;\n this.path = svgView.path;\n this.trail = svgView.trail;\n this.text = null;\n\n var newOpts = utils.extend({\n attachment: undefined,\n shape: this\n }, this._opts);\n this._progressPath = new Path(svgView.path, newOpts);\n\n if (utils.isObject(this._opts.text) && this._opts.text.value !== null) {\n this.setText(this._opts.text.value);\n }\n};\n\nShape.prototype.animate = function animate(progress, opts, cb) {\n if (this._progressPath === null) {\n throw new Error(DESTROYED_ERROR);\n }\n\n this._progressPath.animate(progress, opts, cb);\n};\n\nShape.prototype.stop = function stop() {\n if (this._progressPath === null) {\n throw new Error(DESTROYED_ERROR);\n }\n\n // Don't crash if stop is called inside step function\n if (this._progressPath === undefined) {\n return;\n }\n\n this._progressPath.stop();\n};\n\nShape.prototype.pause = function pause() {\n if (this._progressPath === null) {\n throw new Error(DESTROYED_ERROR);\n }\n\n if (this._progressPath === undefined) {\n return;\n }\n\n if (!this._progressPath._tweenable) {\n // It seems that we can't pause this\n return;\n }\n\n this._progressPath._tweenable.pause();\n};\n\nShape.prototype.resume = function resume() {\n if (this._progressPath === null) {\n throw new Error(DESTROYED_ERROR);\n }\n\n if (this._progressPath === undefined) {\n return;\n }\n\n if (!this._progressPath._tweenable) {\n // It seems that we can't resume this\n return;\n }\n\n this._progressPath._tweenable.resume();\n};\n\nShape.prototype.destroy = function destroy() {\n if (this._progressPath === null) {\n throw new Error(DESTROYED_ERROR);\n }\n\n this.stop();\n this.svg.parentNode.removeChild(this.svg);\n this.svg = null;\n this.path = null;\n this.trail = null;\n this._progressPath = null;\n\n if (this.text !== null) {\n this.text.parentNode.removeChild(this.text);\n this.text = null;\n }\n};\n\nShape.prototype.set = function set(progress) {\n if (this._progressPath === null) {\n throw new Error(DESTROYED_ERROR);\n }\n\n this._progressPath.set(progress);\n};\n\nShape.prototype.value = function value() {\n if (this._progressPath === null) {\n throw new Error(DESTROYED_ERROR);\n }\n\n if (this._progressPath === undefined) {\n return 0;\n }\n\n return this._progressPath.value();\n};\n\nShape.prototype.setText = function setText(newText) {\n if (this._progressPath === null) {\n throw new Error(DESTROYED_ERROR);\n }\n\n if (this.text === null) {\n // Create new text node\n this.text = this._createTextContainer(this._opts, this._container);\n this._container.appendChild(this.text);\n }\n\n // Remove previous text and add new\n if (utils.isObject(newText)) {\n utils.removeChildren(this.text);\n this.text.appendChild(newText);\n } else {\n this.text.innerHTML = newText;\n }\n};\n\nShape.prototype._createSvgView = function _createSvgView(opts) {\n var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n this._initializeSvg(svg, opts);\n\n var trailPath = null;\n // Each option listed in the if condition are 'triggers' for creating\n // the trail path\n if (opts.trailColor || opts.trailWidth) {\n trailPath = this._createTrail(opts);\n svg.appendChild(trailPath);\n }\n\n var path = this._createPath(opts);\n svg.appendChild(path);\n\n return {\n svg: svg,\n path: path,\n trail: trailPath\n };\n};\n\nShape.prototype._initializeSvg = function _initializeSvg(svg, opts) {\n svg.setAttribute('viewBox', '0 0 100 100');\n};\n\nShape.prototype._createPath = function _createPath(opts) {\n var pathString = this._pathString(opts);\n return this._createPathElement(pathString, opts);\n};\n\nShape.prototype._createTrail = function _createTrail(opts) {\n // Create path string with original passed options\n var pathString = this._trailString(opts);\n\n // Prevent modifying original\n var newOpts = utils.extend({}, opts);\n\n // Defaults for parameters which modify trail path\n if (!newOpts.trailColor) {\n newOpts.trailColor = '#eee';\n }\n if (!newOpts.trailWidth) {\n newOpts.trailWidth = newOpts.strokeWidth;\n }\n\n newOpts.color = newOpts.trailColor;\n newOpts.strokeWidth = newOpts.trailWidth;\n\n // When trail path is set, fill must be set for it instead of the\n // actual path to prevent trail stroke from clipping\n newOpts.fill = null;\n\n return this._createPathElement(pathString, newOpts);\n};\n\nShape.prototype._createPathElement = function _createPathElement(pathString, opts) {\n var path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttribute('d', pathString);\n path.setAttribute('stroke', opts.color);\n path.setAttribute('stroke-width', opts.strokeWidth);\n\n if (opts.fill) {\n path.setAttribute('fill', opts.fill);\n } else {\n path.setAttribute('fill-opacity', '0');\n }\n\n return path;\n};\n\nShape.prototype._createTextContainer = function _createTextContainer(opts, container) {\n var textContainer = document.createElement('div');\n textContainer.className = opts.text.className;\n\n var textStyle = opts.text.style;\n if (textStyle) {\n if (opts.text.autoStyleContainer) {\n container.style.position = 'relative';\n }\n\n utils.setStyles(textContainer, textStyle);\n // Default text color to progress bar's color\n if (!textStyle.color) {\n textContainer.style.color = opts.color;\n }\n }\n\n this._initializeTextContainer(opts, container, textContainer);\n return textContainer;\n};\n\n// Give custom shapes possibility to modify text element\nShape.prototype._initializeTextContainer = function(opts, container, element) {\n // By default, no-op\n // Custom shapes should respect API options, such as text.style\n};\n\nShape.prototype._pathString = function _pathString(opts) {\n throw new Error('Override this function for each progress bar');\n};\n\nShape.prototype._trailString = function _trailString(opts) {\n throw new Error('Override this function for each progress bar');\n};\n\nShape.prototype._warnContainerAspectRatio = function _warnContainerAspectRatio(container) {\n if (!this.containerAspectRatio) {\n return;\n }\n\n var computedStyle = window.getComputedStyle(container, null);\n var width = parseFloat(computedStyle.getPropertyValue('width'), 10);\n var height = parseFloat(computedStyle.getPropertyValue('height'), 10);\n if (!utils.floatEquals(this.containerAspectRatio, width / height)) {\n console.warn(\n 'Incorrect aspect ratio of container',\n '#' + container.id,\n 'detected:',\n computedStyle.getPropertyValue('width') + '(width)',\n '/',\n computedStyle.getPropertyValue('height') + '(height)',\n '=',\n width / height\n );\n\n console.warn(\n 'Aspect ratio of should be',\n this.containerAspectRatio\n );\n }\n};\n\nmodule.exports = Shape;\n\n},{\"./path\":5,\"./utils\":9}],8:[function(require,module,exports){\n// Square shaped progress bar\n// Note: Square is not core part of API anymore. It's left here\n// for reference. square is not included to the progressbar\n// build anymore\n\nvar Shape = require('./shape');\nvar utils = require('./utils');\n\nvar Square = function Square(container, options) {\n this._pathTemplate =\n 'M 0,{halfOfStrokeWidth}' +\n ' L {width},{halfOfStrokeWidth}' +\n ' L {width},{width}' +\n ' L {halfOfStrokeWidth},{width}' +\n ' L {halfOfStrokeWidth},{strokeWidth}';\n\n this._trailTemplate =\n 'M {startMargin},{halfOfStrokeWidth}' +\n ' L {width},{halfOfStrokeWidth}' +\n ' L {width},{width}' +\n ' L {halfOfStrokeWidth},{width}' +\n ' L {halfOfStrokeWidth},{halfOfStrokeWidth}';\n\n Shape.apply(this, arguments);\n};\n\nSquare.prototype = new Shape();\nSquare.prototype.constructor = Square;\n\nSquare.prototype._pathString = function _pathString(opts) {\n var w = 100 - opts.strokeWidth / 2;\n\n return utils.render(this._pathTemplate, {\n width: w,\n strokeWidth: opts.strokeWidth,\n halfOfStrokeWidth: opts.strokeWidth / 2\n });\n};\n\nSquare.prototype._trailString = function _trailString(opts) {\n var w = 100 - opts.strokeWidth / 2;\n\n return utils.render(this._trailTemplate, {\n width: w,\n strokeWidth: opts.strokeWidth,\n halfOfStrokeWidth: opts.strokeWidth / 2,\n startMargin: opts.strokeWidth / 2 - opts.trailWidth / 2\n });\n};\n\nmodule.exports = Square;\n\n},{\"./shape\":7,\"./utils\":9}],9:[function(require,module,exports){\n// Utility functions\n\nvar PREFIXES = 'Webkit Moz O ms'.split(' ');\nvar FLOAT_COMPARISON_EPSILON = 0.001;\n\n// Copy all attributes from source object to destination object.\n// destination object is mutated.\nfunction extend(destination, source, recursive) {\n destination = destination || {};\n source = source || {};\n recursive = recursive || false;\n\n for (var attrName in source) {\n if (source.hasOwnProperty(attrName)) {\n var destVal = destination[attrName];\n var sourceVal = source[attrName];\n if (recursive && isObject(destVal) && isObject(sourceVal)) {\n destination[attrName] = extend(destVal, sourceVal, recursive);\n } else {\n destination[attrName] = sourceVal;\n }\n }\n }\n\n return destination;\n}\n\n// Renders templates with given variables. Variables must be surrounded with\n// braces without any spaces, e.g. {variable}\n// All instances of variable placeholders will be replaced with given content\n// Example:\n// render('Hello, {message}!', {message: 'world'})\nfunction render(template, vars) {\n var rendered = template;\n\n for (var key in vars) {\n if (vars.hasOwnProperty(key)) {\n var val = vars[key];\n var regExpString = '\\\\{' + key + '\\\\}';\n var regExp = new RegExp(regExpString, 'g');\n\n rendered = rendered.replace(regExp, val);\n }\n }\n\n return rendered;\n}\n\nfunction setStyle(element, style, value) {\n var elStyle = element.style; // cache for performance\n\n for (var i = 0; i < PREFIXES.length; ++i) {\n var prefix = PREFIXES[i];\n elStyle[prefix + capitalize(style)] = value;\n }\n\n elStyle[style] = value;\n}\n\nfunction setStyles(element, styles) {\n forEachObject(styles, function(styleValue, styleName) {\n // Allow disabling some individual styles by setting them\n // to null or undefined\n if (styleValue === null || styleValue === undefined) {\n return;\n }\n\n // If style's value is {prefix: true, value: '50%'},\n // Set also browser prefixed styles\n if (isObject(styleValue) && styleValue.prefix === true) {\n setStyle(element, styleName, styleValue.value);\n } else {\n element.style[styleName] = styleValue;\n }\n });\n}\n\nfunction capitalize(text) {\n return text.charAt(0).toUpperCase() + text.slice(1);\n}\n\nfunction isString(obj) {\n return typeof obj === 'string' || obj instanceof String;\n}\n\nfunction isFunction(obj) {\n return typeof obj === 'function';\n}\n\nfunction isArray(obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n}\n\n// Returns true if `obj` is object as in {a: 1, b: 2}, not if it's function or\n// array\nfunction isObject(obj) {\n if (isArray(obj)) {\n return false;\n }\n\n var type = typeof obj;\n return type === 'object' && !!obj;\n}\n\nfunction forEachObject(object, callback) {\n for (var key in object) {\n if (object.hasOwnProperty(key)) {\n var val = object[key];\n callback(val, key);\n }\n }\n}\n\nfunction floatEquals(a, b) {\n return Math.abs(a - b) < FLOAT_COMPARISON_EPSILON;\n}\n\n// https://coderwall.com/p/nygghw/don-t-use-innerhtml-to-empty-dom-elements\nfunction removeChildren(el) {\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n }\n}\n\nmodule.exports = {\n extend: extend,\n render: render,\n setStyle: setStyle,\n setStyles: setStyles,\n capitalize: capitalize,\n isString: isString,\n isFunction: isFunction,\n isObject: isObject,\n forEachObject: forEachObject,\n floatEquals: floatEquals,\n removeChildren: removeChildren\n};\n\n},{}]},{},[4])(4)\n});\n\n\r\n$(document).ready(function () {\r\n\r\n\tvar AR = {};\r\n\r\n\t$('html').removeClass('no-js');\r\n\t$('html').addClass('js');\r\n\r\n\t$('.js-product-title').matchHeight({ byRow: false });\r\n\t$('.js-product-list__item').matchHeight({ byRow: false });\r\n\t$('.c-content-carousel__heading').matchHeight({ byRow: false });\r\n\t$('.c-content-carousel__description').matchHeight({ byRow: false });\r\n\t$('.c-post-body').matchHeight({ byRow: false });\r\n\r\n\tvar sitePromo = $('.js-site-promotion');\r\n\r\n\t$(sitePromo).flickity({\r\n\t\twrapAround: true,\r\n\t\tprevNextButtons: false,\r\n\t\tpageDots: false,\r\n\t\tdraggable: false,\r\n\t\tadaptiveHeight: true\r\n\t});\r\n\r\n\tsetInterval(function () {\r\n\t\t$(sitePromo).flickity('next', false, true);\r\n\t}, 3500);\r\n\r\n\t$('.js-content-carousel').flickity({\r\n\t\tcellSelector: '.js-content-carousel__item',\r\n\t\tresize: true,\r\n\t\twrapAround: true,\r\n\t\tadaptiveHeight: true,\r\n\t\tsetGallerySize: false,\r\n\t\tselectedAttraction: 0.2,\r\n\t\tfriction: 1,\r\n\t\tpageDots: false,\r\n\t\tdragThreshold: 20,\r\n\t\tautoPlay: 3000,\r\n\t\tlazyLoad: true\r\n\t});\r\n\r\n\t$('.c-content-carousel__img > img').each(function (index, img) {\r\n\t\t$(img).imagesLoaded(function () {\r\n\t\t\t$('.c-content-carousel__img').fadeIn();\r\n\t\t});\r\n\t});\r\n\r\n\t$('.js-product-carousel .flickity-slider').addClass('o-layout o-layout--tiny');\r\n\r\n\t$('[class*=\"c-form__\"]').focus(function () {\r\n\t\t$(this).parent().find('label').addClass('c-form__js-label');\r\n\t});\r\n\r\n\t$('[class*=\"c-form__\"]').blur(function () {\r\n\t\t$(this).parent().find('label').removeClass('c-form__js-label');\r\n\t});\r\n\r\n\t$('.js-box-match-height').matchHeight({ byRow: false });\r\n\t$('.js-box-match-height').matchHeight({ byRow: false });\r\n\r\n\t// Manage Product Page JS\r\n\tvar sizeButtons = $('.c-size-list__item');\r\n\r\n\tvar bagAddedStick;\r\n\r\n\tif ($(window).width() > 981) {\r\n\r\n\t\tbagAddedStick = new Sticky('.sticky');\r\n\r\n\t\t$('.c-product__images').imagesLoaded(function () {\r\n\t\t\tbagAddedStick.update();\r\n\t\t});\r\n\t}\r\n\r\n\t$(window).resize(function () {\r\n\t\tif ($(window).width() < 981) window.removeEventListener('resize', document.querySelector('.sticky'));\r\n\t});\r\n\r\n\t$(sizeButtons).each(function (index, button) {\r\n\r\n\t\tvar radio = $(button).find('input');\r\n\r\n\t\t$(button).on('click', function () {\r\n\r\n\t\t\tif (!$(radio).hasClass('c-size-list__input--disabled')) {\r\n\t\t\t\t$(sizeButtons).removeClass('c-size-list__item--selected');\r\n\t\t\t\t$(radio).prop('checked', true);\r\n\t\t\t\t$(button).addClass('c-size-list__item--selected');\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tvar productAddToBag = $('.c-bag-added');\r\n\r\n\tif ($(productAddToBag).length) setTimeout(function () { $(productAddToBag).fadeOut(); }, 15000);\r\n\r\n\t$('.c-bag-added__close').on('click', function () { $(productAddToBag).fadeOut(); });\r\n\r\n\tvar addToBagButton = $('.c-product__add-to-bag');\r\n\r\n\t$(addToBagButton).on('click', function (event) {\r\n\r\n\t\tif (!$('.c-size-list__item').length) {\r\n\r\n\t\t\tif ($('.js-select-delivery-type').length) {\r\n\t\t\t\tvar optionChosen = $('.js-select-delivery-type').find(\":selected\");\r\n\r\n\t\t\t\tif ($(optionChosen).attr('value') === 'none') {\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\treturn $('.js-select-size-error').fadeIn();\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn $(this).submit();\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\treturn $(this).submit();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ($('.c-size-list__item--selected').length > 0) {\r\n\t\t\t$(this).submit();\r\n\t\t} else {\r\n\t\t\tevent.preventDefault();\r\n\r\n\t\t\t$('.js-select-size-error').fadeIn();\r\n\t\t}\r\n\t});\r\n\r\n\t$('.js-gallery-fs .c-product__thumbnail').on('click', function () {\r\n\t\t$('.c-product__thumbnail').removeClass('c-product__thumbnail--selected');\r\n\t\t$(this).addClass('c-product__thumbnail--selected');\r\n\t});\r\n\r\n\t// var Toast = iziToast;\r\n\r\n\t// function manageWishlist(data) {\r\n\r\n\t// \t$.post('/includes/product/wishlist-ajax.cfc', {\r\n\t// \t\tmethod: 'manageWishlist',\r\n\t// \t\tdata: JSON.stringify(data)\r\n\t// \t})\r\n\r\n\t// \t.done(function() {\r\n\r\n\t// \t\tvar methodText = 'Added to';\r\n\r\n\t// \t\tif (data.action === 'remove') {\r\n\t// \t\t\tmethodText = 'Removed from';\r\n\t// \t\t}\r\n\r\n\t// \t\tToast.success({\r\n\t// \t\t\tmessage: methodText + ' your Wishlist!',\r\n\t// \t\t\ttimeout: 2000,\r\n\t// \t\t\ttheme: 'dark',\r\n\t// \t\t\tbuttons: [\r\n\t// \t\t\t\t['', function() {\r\n\t// \t\t\t\t\twindow.location = '/myatomretro/wishlist_view.cfm?action=list';\r\n\t// \t\t\t\t}]\r\n\t// \t\t\t],\r\n\t// \t\t\timage: data.image,\r\n\t// \t\t\tbackgroundColor: '#003459'\r\n\t// \t\t});\r\n\t// \t})\r\n\t// \t.fail( function(err) {\r\n\t// \t\tToast.error({\r\n\t// \t\t\tmessage: 'Failed to add to your Wishlist.',\r\n\t// \t\t\ttimeout: 2000,\r\n\t// \t\t\timage: data.image\r\n\t// \t\t});\r\n\t// \t});\r\n\t// }\r\n\r\n\t// $('.js-quickview').on('click', function(event) {\r\n\t// \tevent.preventDefault();\r\n\t// });\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @description\r\n\t * Image Hover Second Image Display\r\n\t *\r\n\t */\r\n\r\n\tfunction setupImageHoverDisplay() {\r\n\r\n\t\t$('.js-image').each(function (index, image) {\r\n\t\t\t$('.js-image img').imagesLoaded(function () {\r\n\r\n\t\t\t\tvar imgSrc = '';\r\n\r\n\t\t\t\t$(image).on('mouseenter', function () {\r\n\t\t\t\t\tvar secondImage = $(image).data('second-image');\r\n\t\t\t\t\tif (secondImage !== 0 || secondImage !== parseInt('0')) {\r\n\t\t\t\t\t\tvar img = $(this).find('img');\r\n\t\t\t\t\t\timgSrc = $(img).attr('src');\r\n\t\t\t\t\t\t$(img).attr('src', 'https://images.atomretro.com/xlarge/' + $(image).data('second-image'));\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t$(image).on('mouseleave', function () {\r\n\t\t\t\t\tvar secondImage = $(image).data('second-image');\r\n\t\t\t\t\tif (secondImage !== 0 || secondImage !== parseInt('0')) {\r\n\t\t\t\t\t\tvar img = $(this).find('img');\r\n\t\t\t\t\t\t$(img).attr('src', imgSrc);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tif ($(window).width() > 769) {\r\n\t\tsetupImageHoverDisplay();\r\n\t}\r\n\r\n\t// $('.c-product-list__item').on('mouseover', function() {\r\n\t// \t$(this).find('.c-product-list__quickview').stop().fadeIn(133);\r\n\t// });\r\n\r\n\t// $('.c-product-list__item').on('mouseleave', function () {\r\n\t// \t$(this).find('.c-product-list__quickview').stop().fadeOut(133);\r\n\t// });\r\n\r\n\t$('.js-filter-trigger').on('click', function(event) {\r\n\t\tevent.preventDefault();\r\n\t});\r\n\r\n\t/**\r\n\t *\r\n\t * Responsive Nav Functionality\r\n\t *\r\n\t */\r\n\r\n\tAR.toggleHeaderAndFilters = function(prop) {\r\n\t\tif (prop === 'show') {\r\n\t\t\t$('.c-header').addClass('c-header--stick');\r\n\t\t\t$('body').css({ paddingTop: $('.c-header').height() + 12 });\r\n\t\t}\r\n\r\n\t\tif (prop === 'hide') {\r\n\t\t\t$('.c-header').removeClass('c-header--stick');\r\n\t\t\t$('body').css({ paddingTop: 0 });\r\n\t\t}\r\n\t};\r\n\r\n\tvar previousScrollPosition = 0;\r\n\r\n\tfunction headerScroll() {\r\n\t\tif (this.pageYOffset < $('.c-header').height()) {\r\n\t\t\tAR.toggleHeaderAndFilters('hide');\r\n\t\t\t$('body').css({ paddingTop: 0 });\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this.pageYOffset < (previousScrollPosition - 70)) {\r\n\t\t\tAR.toggleHeaderAndFilters('show');\r\n\t\t\t$('.js-bag-items-stick').css({ top: $('.c-header').height() + '!important' });\r\n\t\t} else {\r\n\t\t\tAR.toggleHeaderAndFilters('hide');\r\n\t\t\t$('.js-bag-items-stick').css({ top: '24px !important' });\r\n\t\t}\r\n\r\n\t\tpreviousScrollPosition = this.pageYOffset;\r\n\t};\r\n\r\n\tvar didScroll;\r\n\tvar lastScrollTop = 0;\r\n\tvar delta = 3;\r\n\tvar navbarHeight = $('c-header').height();\r\n\r\n\t// var filterTopPosition;\r\n\r\n\t// if ($('.js-responsive-filter').length > 0) {\r\n\t// \tfilterTopPosition = $('.js-responsive-filter').offset().top;\r\n\t// } else {\r\n\t// \tfilterTopPosition = 0;\r\n\t// }\r\n\r\n\tvar totalHeight = $('.c-header').height() + $('.js-repsonsive-filter').height() + 6;\r\n\r\n\t$(window).scroll(function(event) { didScroll = true; });\r\n\r\n\tsetInterval(function() {\r\n\t\tif (didScroll) {\r\n\t\t\thasScrolled();\r\n\t\t\tdidScroll = false;\r\n\t\t}\r\n\t}, 20);\r\n\r\n\t// var filterStickIsActive = false;\r\n\r\n\t// if ($('.js-responsive-filter').length > 0) {\r\n\t// \t$(window).scroll(function() {\r\n\t// \t\tif ($(window).scrollTop() > ($('.js-responsive-filter').offset().top + $('.js-responsive-filter').outerHeight())) {\r\n\t// \t\t\tfilterStickIsActive = true;\r\n\t// \t\t}\r\n\t// \t});\r\n\r\n\t// \tvar filterStick = new Sticky('.js-responsive-filter');\r\n\t// \t$('.js-responsive-filter').attr('data-margin-top', $('.c-header').height() + 6);\r\n\t// }\r\n\r\n\tfunction hasScrolled() {\r\n\t\tvar st = $(this).scrollTop();\r\n\r\n\t\tif (st === 0) {\r\n\t\t\t$('.c-header').removeClass('c-header--stick');\r\n\t\t\t$('body').css({ paddingTop: 0 });\r\n\t\t\t// $('.js-repsonsive-filter--stick').css({ display: 'none' });\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (st > totalHeight) {\r\n\r\n\t\t\tif(Math.abs(lastScrollTop - st) <= delta) return;\r\n\r\n\t\t\tif (st > lastScrollTop && st > navbarHeight) {\r\n\t\t\t\t// Scroll Down\r\n\t\t\t\t$('.c-header').removeClass('c-header--stick');\r\n\t\t\t\t$('body').css({ paddingTop: 0 });\r\n\t\t\t\t// $('.js-repsonsive-filter--stick').css({ display: 'none' });\r\n\t\t\t} else {\r\n\t\t\t\t// Scroll Up\r\n\t\t\t\tif(st + $(window).height() < $(document).height()) {\r\n\t\t\t\t\t$('.c-header').addClass('c-header--stick');\r\n\t\t\t\t\t$('body').css({ paddingTop: totalHeight });\r\n\t\t\t\t\t// $('.js-repsonsive-filter--stick').css({ display: 'block', opacity: 1, top: 0 });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlastScrollTop = st;\r\n\t}\r\n\r\n\t$('.js-search').on('keyup', function(evt) {\r\n\t\tevt = evt || window.event;\r\n\t\tif (evt.key == 'Escape') {\r\n\t\t\t$('.js-search').blur();\r\n\t\t}\r\n\t});\r\n\r\n\t$('.js-search').on('blur', function() {\r\n\t\t$('.js-search-terms').empty();\r\n\t\t$('.js-search-terms').hide();\r\n\t});\r\n\r\n\t// if ($('.js-responsive-filter').length > 0) {\r\n\t// \tif ($(window).scrollTop() > ($('.js-responsive-filter').offset().top + $('.js-responsive-filter').outerHeight() + 1)) {\r\n\t// \t\t$('.js-responsive-filter').css({opacity: 0, top: '-200px'});\r\n\t// \t}\r\n\t// }\r\n\r\n\t// var searchInput = $('.js-search');\r\n\r\n\t// function updateSearchView(data) {\r\n\t// \tvar termBox = $('.js-search-terms');\r\n\t// \t$(termBox).find('.js-search-terms__item').remove();\r\n\r\n\t// \tfor (var i = 0, l = data.length; i < l; i++) {\r\n\t// \t\t$(termBox).append('
  • ' + data[i].SEARCH_TERM + '
  • ');\r\n\t// \t}\r\n\r\n\t// \t$('.js-search-terms__item').each(function(index, item) {\r\n\t// \t\t$(item).find('a').on('click', function(ev) {\r\n\t// \t\t\t$(searchInput).val($(item).text());\r\n\t// \t\t\t$('.c-header__search').submit();\r\n\r\n\t// \t\t\t$(searchInput).on('blur', function() {\r\n\t// \t\t\t\t$('.js-search-terms__item').remove();\r\n\t// \t\t\t\t$('.js-search-terms').hide();\r\n\t// \t\t\t});\r\n\t// \t\t});\r\n\t// \t});\r\n\t// }\r\n\r\n\t// $(searchInput).on('keyup', function(ev) {\r\n\t// \tev.preventDefault();\r\n\r\n\t// \t$('.js-search-terms').show();\r\n\r\n\t// \tif ($(this).val().length > 1) {\r\n\t// \t\t$.post('/functions/site-search.cfc', {\r\n\t// \t\t\tmethod: 'getRelatedSearchTerms',\r\n\t// \t\t\tquery: $(this).val()\r\n\t// \t\t})\r\n\t// \t\t.done( function(data) {\r\n\t// \t\t\tupdateSearchView(JSON.parse(data));\r\n\t// \t\t})\r\n\t// \t\t.fail( function(err) {\r\n\t// \t\t\tconsole.log(err)\r\n\t// \t\t});\r\n\t// \t}\r\n\t// });\r\n\r\n\t$('.c-tabs__link').matchHeight({ byRow: false });\r\n\r\n\t// $('.js-menu').each(function () {\r\n\t// \tvar list = $(this).find('.c-nav-primary__list');\r\n\t// \t$(list).matchHeight({\r\n\t// \t\tbyRow: false\r\n\t// \t});\r\n\t// });\r\n\r\n\t$('.js-banner img').imagesLoaded(function () {\r\n\t\tvar banner = $('.js-banner').flickity({\r\n\t\t\tresize: true,\r\n\t\t\twrapAround: true,\r\n\t\t\tprevNextButtons: true,\r\n\t\t\tpageDots: false,\r\n\t\t\tautoPlay: 3000,\r\n\t\t\tlazyLoad: true\r\n\t\t});\r\n\t});\r\n\r\n\t$('.c-modal__match-height').matchHeight({ byRow: false });\r\n\r\n\t// $(productColours).each(function(index, item) {\r\n\t// \tnew Tooltip($(item), { title: $(item).data('title'), placement: 'top' });\r\n\t// });\r\n\r\n});\r\n\r\n/**\r\n * Implement acessibility-based tabs.\r\n */\r\ndocument.addEventListener('DOMContentLoaded', function () {\r\n\tvar cache = {},\r\n\t\tlast;\r\n\r\n\tArray.prototype.forEach.call(document.querySelectorAll('[role=\"tablist\"]'), function (tablist) {\r\n\t\tArray.prototype.forEach.call(tablist.querySelectorAll('[href^=\"#\"][role=\"tab\"]'), function (tab, index, tabs) {\r\n\t\t\tcache[tab.hash] = [tab, document.getElementById(tab.getAttribute('aria-controls'))];\r\n\r\n\t\t\tif (tab.getAttribute('aria-selected') === 'true') {\r\n\t\t\t\tlast = cache[''] = cache[tab.hash];\r\n\t\t\t} else {\r\n\t\t\t\ttab.setAttribute('tabindex', -1);\r\n\t\t\t}\r\n\r\n\t\t\ttab.addEventListener('keydown', function (event) {\r\n\t\t\t\tvar next = event.keyCode === 37 ? tabs[index - 1] : event.keyCode === 39 ? tabs[index + 1] : null;\r\n\r\n\t\t\t\tif (next) {\r\n\t\t\t\t\tnext.focus();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t});\r\n\r\n\twindow.addEventListener('hashchange', onhashchange);\r\n\r\n\tonhashchange();\r\n\r\n\tfunction onhashchange() {\r\n\t\tvar tab = cache[location.hash];\r\n\r\n\t\tif (tab) {\r\n\t\t\tif (last) {\r\n\t\t\t\tlast[0].removeAttribute('aria-selected');\r\n\t\t\t\tlast[0].setAttribute('tabindex', -1);\r\n\t\t\t\tlast[1].setAttribute('hidden', '');\r\n\t\t\t}\r\n\r\n\t\t\ttab[0].setAttribute('aria-selected', 'true');\r\n\t\t\ttab[0].removeAttribute('tabindex');\r\n\t\t\ttab[1].removeAttribute('hidden', '');\r\n\r\n\t\t\tlast = tab;\r\n\t\t}\r\n\t}\r\n});\r\n"],"file":"main-min.js"}