{"version":3,"sources":["webpack:///./src/components/ContactsBlock.vue?f382","webpack:///./src/components/EventMembers.vue?330d","webpack:///./node_modules/photoswipe/dist/photoswipe-ui-default.js","webpack:///./src/views/Event/Overview.vue?f07a","webpack:///./src/components/PhotoViewer.vue?1d5a","webpack:///./src/components/EventAbout.vue?986a","webpack:///./src/components/ContactsBlock.vue?10a4","webpack:///src/components/ContactsBlock.vue","webpack:///./src/components/ContactsBlock.vue?7f1f","webpack:///./src/components/ContactsBlock.vue?c445","webpack:///./node_modules/photoswipe/dist/photoswipe.js","webpack:///./src/views/Event/Overview.vue?bbbc","webpack:///./src/components/EventAbout.vue?3808","webpack:///./src/components/PhotoViewer.vue?9995","webpack:///src/components/PhotoViewer.vue","webpack:///./src/components/PhotoViewer.vue?51a6","webpack:///./src/components/PhotoViewer.vue","webpack:///src/components/EventAbout.vue","webpack:///./src/components/EventAbout.vue?d110","webpack:///./src/components/EventAbout.vue?64cf","webpack:///./src/components/EventMembers.vue?1c57","webpack:///src/components/EventMembers.vue","webpack:///./src/components/EventMembers.vue?b172","webpack:///./src/components/EventMembers.vue?a0ce","webpack:///./src/components/BannerInfo.vue?4bd4","webpack:///src/components/BannerInfo.vue","webpack:///./src/components/BannerInfo.vue?4437","webpack:///./src/components/BannerInfo.vue?86e2","webpack:///src/views/Event/Overview.vue","webpack:///./src/views/Event/Overview.vue?726b","webpack:///./src/views/Event/Overview.vue?2e88","webpack:///./src/components/BannerInfo.vue?be61"],"names":["root","factory","this","PhotoSwipeUI_Default","pswp","framework","_fullscrenAPI","_controls","_captionContainer","_fakeCaptionContainer","_indexIndicator","_shareButton","_shareModal","_initalCloseOnScrollValue","_isIdle","_listen","_loadingIndicator","_loadingIndicatorHidden","_loadingIndicatorTimeout","_galleryHasOneSlide","_options","_blockControlsTap","_idleInterval","_idleTimer","ui","_overlayUIUpdated","_controlsVisible","_shareModalHidden","_defaultUIOptions","barsSize","top","bottom","closeElClasses","timeToIdle","timeToIdleOutside","loadingIndicatorDelay","addCaptionHTMLFn","item","captionEl","title","children","innerHTML","closeEl","fullscreenEl","zoomEl","shareEl","counterEl","arrowEl","preloaderEl","tapToClose","tapToToggleControls","clickToCloseNonZoomable","shareButtons","id","label","url","download","getImageURLForShare","currItem","src","getPageURLForShare","window","location","href","getTextForShare","indexIndicatorSep","fitControlsWidth","_onControlsTap","e","event","mouseUsed","_onIdleMouseMove","uiElement","found","target","srcElement","clickedClass","getAttribute","i","_uiElements","length","onTap","indexOf","name","stopPropagation","tapDelay","features","isOldAndroid","setTimeout","_fitControlsInViewport","likelyTouchDevice","screen","width","_togglePswpClass","el","cName","add","_countNumItems","hasOneSlide","getNumItemsFn","_toggleShareModalClass","_toggleShareModal","removeClass","addClass","_updateShareURLs","_openWindowPopup","shout","hasAttribute","open","Math","round","shareButtonData","shareURL","image_url","page_url","share_text","shareButtonOut","replace","encodeURIComponent","parseShareButtonOut","onclick","_hasCloseClass","hasClass","_idleIncrement","clearTimeout","setIdle","_onMouseLeaveWindow","from","relatedTarget","toElement","nodeName","_setupFullscreenAPI","getFullscreenAPI","bind","document","eventK","updateFullscreen","template","_setupLoadingIndicator","_toggleLoadingIndicator","loading","allowProgressiveImg","img","naturalWidth","index","hide","_applyNavBarGaps","gap","vGap","bars","createEl","appendChild","insertBefore","captionSize","clientHeight","parseInt","_setupIdle","setInterval","_setupHidingControlsDuringGestures","pinchControlsHidden","now","hideControls","showControls","option","onInit","toggleDesktopZoom","close","prev","next","isFullscreen","exit","enter","_setupUIElements","classAttr","loopThroughChildElements","sChildren","l","className","a","topBar","getChildByClass","init","extend","options","scrollWrap","listen","update","point","initialZoomLevel","getZoomLevel","zoomTo","getDoubleTapZoom","isDown","preventObj","t","type","test","tagName","prevent","onGlobalTap","onMouseOver","clearInterval","unbind","hideAnimationDuration","removeChild","showAnimationDuration","isIdle","updateIndexIndicator","setScrollOffset","getScrollY","getCurrentIndex","detail","pointerType","fitRatio","releasePoint","supportsFullscreen","d","exitFullscreen","mozCancelFullScreen","webkitExitFullscreen","msExitFullscreen","api","dE","documentElement","tF","requestFullscreen","enterK","exitK","elementK","mozRequestFullScreen","webkitRequestFullscreen","msRequestFullscreen","closeOnScroll","Element","ALLOW_KEYBOARD_INPUT","render","_vm","_h","$createElement","_c","_self","staticClass","attrs","themeImages","_v","_s","phoneNumber","_e","$t","_b","directives","rawName","value","expression","Object","assign","variant","text","iconRight","buttonProps","ref","domProps","content","staticRenderFns","props","String","default","components","Modal","Avatar","computed","match","mounted","$route","query","focus","$refs","modal","component","PhotoSwipe","UiClass","items","listener","methodName","split","isArray","obj","Array","classes","tag","createElement","yOffset","pageYOffset","undefined","scrollTop","reg","RegExp","parentEl","childClassName","node","firstChild","nextSibling","arraySearch","array","key","o1","o2","preventOverwrite","prop","hasOwnProperty","easing","sine","out","k","sin","PI","inOut","cos","cubic","detectFeatures","helperEl","helperStyle","style","vendor","oldIE","all","addEventListener","touch","requestAnimationFrame","raf","caf","cancelAnimationFrame","pointerEvent","navigator","msPointerEnabled","ua","userAgent","platform","v","isOldIOSPhone","androidversion","parseFloat","androidVersion","isMobileOpera","styleCheckItem","styleName","styleChecks","vendors","charAt","toUpperCase","slice","toLowerCase","lastTime","fn","currTime","Date","getTime","timeToCall","max","svg","createElementNS","createSVGRect","evName","_handleEv","handleEvent","call","self","DOUBLE_TAP_RADIUS","NUM_HOLDERS","allowPanToNext","spacing","bgOpacity","loop","pinchToClose","closeOnVerticalDrag","verticalDragRange","showHideOpacity","escKey","arrowKeys","mainScrollEndFriction","panEndFriction","isClickableElement","isMouseClick","maxSpreadZoom","scaleMode","_isOpen","_isDestroying","_closedByScroll","_currentItemIndex","_containerStyle","_containerShiftIndex","_upMoveEvents","_downEvents","_globalEventHandlers","_currZoomLevel","_startZoomLevel","_translatePrefix","_translateSufix","_updateSizeInterval","_itemsNeedUpdate","_itemHolders","_prevItemIndex","_dragStartEvent","_dragMoveEvent","_dragEndEvent","_dragCancelEvent","_transformKey","_pointerEventEnabled","_likelyTouchDevice","_requestAF","_cancelAF","_initalClassName","_initalWindowScrollY","_oldIE","_currentWindowScrollY","_features","_orientationChangeTimeout","_gestureStartTime","_gestureCheckSpeedTime","_releaseAnimData","_isZoomingIn","_verticalDragInitiated","_oldAndroidTouchEndTimeout","_isDragging","_isMultitouch","_zoomStarted","_moved","_dragAnimFrame","_mainScrollShifted","_currentPoints","_isZooming","_startPointsDistance","_currPanBounds","_currZoomElementStyle","_mainScrollAnimating","_direction","_isFirstMove","_opacityChanged","_bgOpacity","_wasOverInitialZoom","_tempCounter","_getEmptyPoint","x","y","_currPanDist","_startPanOffset","_panOffset","_viewportSize","_currPositionIndex","_offset","_slideSize","_indexDiff","_isFixedPosition","_modules","_windowVisibleSize","_renderMaxResolution","_registerModule","module","publicMethods","push","_getLoopedId","numSlides","_getNumItems","_listeners","_shout","listeners","args","prototype","arguments","shift","apply","_getCurrentTime","_applyBgOpacity","opacity","bg","_applyZoomTransform","styleObj","zoom","_applyCurrentZoomPan","allowRenderResolution","_setImageSize","_applyZoomPanToItem","container","initialPosition","_setTranslateX","elStyle","_moveMainScroll","dragging","newSlideIndexOffset","delta","_mainScrollPos","_calculatePanOffset","axis","zoomLevel","m","_midZoomPoint","_equalizePoints","p1","p2","_roundPoint","p","_mouseMoveTimeout","_onFirstMouseMove","_bindEvents","transform","_unbindEvents","scroll","_calculatePanBounds","bounds","_calculateItemSize","_getMinZoomLevel","_getMaxZoomLevel","w","_modifyDestPanOffset","destPanBounds","destPanOffset","destZoomLevel","min","_setupTransforms","allow3dTransform","perspective","left","zoomRatio","s","h","height","_onKeyDown","keydownAction","keyCode","ctrlKey","altKey","shiftKey","metaKey","preventDefault","returnValue","_onGlobalClick","_updatePageScrollOffset","_animations","_numAnimations","_stopAnimation","_registerStartAnimation","_stopAllAnimations","_animateProp","b","endProp","easingFn","onUpdate","onComplete","startAnimTime","animloop","viewportSize","isMainScrollAnimating","isDragging","isZooming","applyZoomPan","panX","panY","itemHolders","wrap","display","resize","updateSize","orientationchange","clientWidth","keydown","click","oldPhone","animationName","isNaN","_getItemAt","setAttribute","position","rootClasses","mainClass","setContent","updateCurrItem","_showOrHide","destroy","_showOrHideTimeout","_stopDragUpdateLoop","panTo","force","goTo","diff","updateCurrZoomItem","emulateSetContent","zoomElement","center","invalidateCurrItems","needsUpdate","beforeAnimation","tempHolder","diffAbs","abs","pop","unshift","prevItem","windowScrollY","innerWidth","innerHeight","holder","hIndex","cleanSlide","centerPoint","speed","updateFn","initialPanOffset","MIN_SWIPE_DISTANCE","DIRECTION_CHECK_OFFSET","_currPoint","_startPoint","_currPointers","_startMainScrollPos","_posPoints","_tempPoint","_currZoomedItemIndex","_centerPoint","_lastReleaseTime","_currCenterPoint","_isEqualPoints","_isNearbyPoints","touch0","touch1","_calculatePointsDistance","sqrt","_dragUpdateLoop","_renderMovement","_canPan","_closestElement","parentNode","_preventObj","_preventDefaultEventBehaviour","_convertTouchToPoint","pageX","pageY","identifier","_findCenterOfPoints","pCenter","_pushPosPoint","time","o","_calculateVerticalDragOpacityRatio","_ePoint1","_ePoint2","_tempPointsArr","_getTouchPoints","forEach","touches","_panOrMoveMainScroll","panFriction","startOverDiff","newPanPos","newMainScrollPos","newOffset","dir","newMainScrollPosition","mainScrollDiff","_onDragStart","button","_initialZoomRunning","pointerIndex","pointerId","startPointsList","numPoints","_onDragMove","touchesList","pointsDistance","_calculateZoomLevel","zoomFriction","minZoomLevel","maxZoomLevel","minusDiff","percent","opacityRatio","mainScrollChanged","_onDragRelease","splice","MSPOINTER_TYPES","4","2","3","gestureType","touchList","changedTouches","releaseTimeDiff","_initDragReleaseAnimationData","calculateSwipeSpeed","initalPanY","initialBgOpacity","itemChanged","_finishSwipeMainScrollGesture","_completePanGesture","_completeZoomGesture","lastFlickDuration","tempReleasePos","lastFlickOffset","lastFlickDist","lastFlickSpeed","slowDownRatio","slowDownRatioReverse","speedDecelerationRatio","speedDecelerationRatioAbs","distanceOffset","backAnimDestination","backAnimStarted","calculateOverBoundsAnimOffset","pos","calculateAnimOffset","timeDiff","panAnimLoop","zoomPan","lastNow","animData","itemsDiff","nextCircle","totalShiftDist","isFastLastFlick","finishAnimDuration","animateToX","animateToDist","touchesDistance","destOpacity","initialOpacity","initGestures","addEventNames","pref","down","move","up","cancel","maxTouchPoints","msMaxTouchPoints","mousedown","mousemove","mouseup","_items","_initialContentSet","completeFn","thumbBounds","initialLayout","getThumbBoundsFn","duration","removeAttribute","startAnimation","closeWithRaf","fadeEverything","loadError","miniImg","webkitBackfaceVisibility","initalBgOpacity","_tempPanAreaSize","_imagesToAppendPool","_controllerDefaultOptions","errorMsg","forceProgressiveLoading","preload","_getZeroBounds","_calculateSingleItemPanBounds","realPanElementW","realPanElementH","isInitial","hRatio","vRatio","_appendImage","baseDiv","preventAnimation","keepPlaceholder","imageAppended","loaded","placeholder","_preloadImage","loadComplete","onload","onerror","_checkForError","cleanUp","maxRes","lastChild","_appendImagesPool","poolItem","clearPlaceholder","lazyLoadItem","initController","getItemAt","isNext","preloadBefore","preloadAfter","preloader","html","placeholderClassName","msrc","tapTimer","_wheelDelta","tapReleasePoint","_dispatchTapEvent","origEvent","createEvent","eDetail","initCustomEvent","dispatchEvent","initTap","onTapStart","onTapRelease","p0","clickedTagName","initDesktopZoom","setupDesktopZoom","events","handleMouseWheel","mouseZoomedIn","hasDraggingClass","updateZoomable","removeDraggingClass","deltaY","deltaMode","deltaX","wheelDeltaX","wheelDeltaY","wheelDelta","newPanX","newPanY","doubleTapZoomLevel","zoomOut","_historyUpdateTimeout","_hashChangeTimeout","_hashAnimCheckTimeout","_hashChangedByScript","_hashChangedByHistory","_hashReseted","_initialHash","_historyChanged","_closedFromURL","_urlChangedOnce","_windowLoc","_supportsPushState","_historyDefaultOptions","history","galleryUID","_getHash","hash","substring","_cleanHistoryTimeouts","_parseItemIndexFromURL","params","vars","pair","galleryPIDs","searchfor","pid","_updateHash","newHash","newURL","initHistory","updateURL","onHashChange","returnToOriginal","back","pushState","pathname","search","infoLoaded","starts","utcCurrentTime","scountInfo","finished","showIsLive","isLive","on","$root","$modals","closeBannerGift","hasCommission","commission","toLocaleString","$lang","theme","rot","banner","bannerMobile","availableGoods","series","_m","_l","backgroundImage","getSeriesImage","headerBanner","backgroundPosition","code","hasMembers","showMembers","startingPack","ext","logos","lnk","iu","alt","beneficiary","associations","contacts","inn","ogrn","hideOgrn","address","printBeneficiaryInfo","eventSiteLink","description","disciplines","place","program","containerId","multiple","Boolean","data","images","gallery","methods","getImages","getItems","querySelectorAll","classList","map","naturalHeight","itemObj","getElementById","PhotoViewer","lat","lon","eventSite","races","showMap","site","createMap","maxZoom","accessToken","attribution","setData","DescriptionHtml","Place","Races","MainLink","ProgramHtml","$nextTick","membersTotalCount","membersCount","Id","LastName","FirstName","Skeleton","members","eventsService","EventCode","Count","Offset","class","imgUrl","$slots","_t","$emit","EventRaces","EventAbout","EventMembers","ContactsBlock","Banner","BannerInfo","showStartList","getCurrentUtcTime","updateIntervalUtcId","docs","isBannerGift","getScountInfo","showDocs","themes","includes","toISOString","getFileExtension","getFileLink","StartingPackHtml","ContactsHtml","AlternateBeneficiaryId","r","dc","registrationAvailable","availableFriendReg","printWindow","write","styles","outerHTML","print","watch","handler","val","immediate","created","conditionsToHideBannerInfo","some","unmounted"],"mappings":"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","file":"js/event-overview.js","sourcesContent":["import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactsBlock.vue?vue&type=style&index=0&id=21667186&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactsBlock.vue?vue&type=style&index=0&id=21667186&lang=scss&scoped=true&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./EventMembers.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./EventMembers.vue?vue&type=style&index=0&lang=scss&\"","/*! PhotoSwipe Default UI - 4.1.3 - 2019-01-08\n* http://photoswipe.com\n* Copyright (c) 2019 Dmitry Semenov; */\n/**\n*\n* UI on top of main sliding area (caption, arrows, close button, etc.).\n* Built just using public methods/properties of PhotoSwipe.\n* \n*/\n(function (root, factory) { \n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t} else if (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t} else {\n\t\troot.PhotoSwipeUI_Default = factory();\n\t}\n})(this, function () {\n\n\t'use strict';\n\n\n\nvar PhotoSwipeUI_Default =\n function(pswp, framework) {\n\n\tvar ui = this;\n\tvar _overlayUIUpdated = false,\n\t\t_controlsVisible = true,\n\t\t_fullscrenAPI,\n\t\t_controls,\n\t\t_captionContainer,\n\t\t_fakeCaptionContainer,\n\t\t_indexIndicator,\n\t\t_shareButton,\n\t\t_shareModal,\n\t\t_shareModalHidden = true,\n\t\t_initalCloseOnScrollValue,\n\t\t_isIdle,\n\t\t_listen,\n\n\t\t_loadingIndicator,\n\t\t_loadingIndicatorHidden,\n\t\t_loadingIndicatorTimeout,\n\n\t\t_galleryHasOneSlide,\n\n\t\t_options,\n\t\t_defaultUIOptions = {\n\t\t\tbarsSize: {top:44, bottom:'auto'},\n\t\t\tcloseElClasses: ['item', 'caption', 'zoom-wrap', 'ui', 'top-bar'], \n\t\t\ttimeToIdle: 4000, \n\t\t\ttimeToIdleOutside: 1000,\n\t\t\tloadingIndicatorDelay: 1000, // 2s\n\t\t\t\n\t\t\taddCaptionHTMLFn: function(item, captionEl /*, isFake */) {\n\t\t\t\tif(!item.title) {\n\t\t\t\t\tcaptionEl.children[0].innerHTML = '';\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tcaptionEl.children[0].innerHTML = item.title;\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\tcloseEl:true,\n\t\t\tcaptionEl: true,\n\t\t\tfullscreenEl: true,\n\t\t\tzoomEl: true,\n\t\t\tshareEl: true,\n\t\t\tcounterEl: true,\n\t\t\tarrowEl: true,\n\t\t\tpreloaderEl: true,\n\n\t\t\ttapToClose: false,\n\t\t\ttapToToggleControls: true,\n\n\t\t\tclickToCloseNonZoomable: true,\n\n\t\t\tshareButtons: [\n\t\t\t\t{id:'facebook', label:'Share on Facebook', url:'https://www.facebook.com/sharer/sharer.php?u={{url}}'},\n\t\t\t\t{id:'twitter', label:'Tweet', url:'https://twitter.com/intent/tweet?text={{text}}&url={{url}}'},\n\t\t\t\t{id:'pinterest', label:'Pin it', url:'http://www.pinterest.com/pin/create/button/'+\n\t\t\t\t\t\t\t\t\t\t\t\t\t'?url={{url}}&media={{image_url}}&description={{text}}'},\n\t\t\t\t{id:'download', label:'Download image', url:'{{raw_image_url}}', download:true}\n\t\t\t],\n\t\t\tgetImageURLForShare: function( /* shareButtonData */ ) {\n\t\t\t\treturn pswp.currItem.src || '';\n\t\t\t},\n\t\t\tgetPageURLForShare: function( /* shareButtonData */ ) {\n\t\t\t\treturn window.location.href;\n\t\t\t},\n\t\t\tgetTextForShare: function( /* shareButtonData */ ) {\n\t\t\t\treturn pswp.currItem.title || '';\n\t\t\t},\n\t\t\t\t\n\t\t\tindexIndicatorSep: ' / ',\n\t\t\tfitControlsWidth: 1200\n\n\t\t},\n\t\t_blockControlsTap,\n\t\t_blockControlsTapTimeout;\n\n\n\n\tvar _onControlsTap = function(e) {\n\t\t\tif(_blockControlsTap) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\n\t\t\te = e || window.event;\n\n\t\t\tif(_options.timeToIdle && _options.mouseUsed && !_isIdle) {\n\t\t\t\t// reset idle timer\n\t\t\t\t_onIdleMouseMove();\n\t\t\t}\n\n\n\t\t\tvar target = e.target || e.srcElement,\n\t\t\t\tuiElement,\n\t\t\t\tclickedClass = target.getAttribute('class') || '',\n\t\t\t\tfound;\n\n\t\t\tfor(var i = 0; i < _uiElements.length; i++) {\n\t\t\t\tuiElement = _uiElements[i];\n\t\t\t\tif(uiElement.onTap && clickedClass.indexOf('pswp__' + uiElement.name ) > -1 ) {\n\t\t\t\t\tuiElement.onTap();\n\t\t\t\t\tfound = true;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(found) {\n\t\t\t\tif(e.stopPropagation) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\t_blockControlsTap = true;\n\n\t\t\t\t// Some versions of Android don't prevent ghost click event \n\t\t\t\t// when preventDefault() was called on touchstart and/or touchend.\n\t\t\t\t// \n\t\t\t\t// This happens on v4.3, 4.2, 4.1, \n\t\t\t\t// older versions strangely work correctly, \n\t\t\t\t// but just in case we add delay on all of them)\t\n\t\t\t\tvar tapDelay = framework.features.isOldAndroid ? 600 : 30;\n\t\t\t\t_blockControlsTapTimeout = setTimeout(function() {\n\t\t\t\t\t_blockControlsTap = false;\n\t\t\t\t}, tapDelay);\n\t\t\t}\n\n\t\t},\n\t\t_fitControlsInViewport = function() {\n\t\t\treturn !pswp.likelyTouchDevice || _options.mouseUsed || screen.width > _options.fitControlsWidth;\n\t\t},\n\t\t_togglePswpClass = function(el, cName, add) {\n\t\t\tframework[ (add ? 'add' : 'remove') + 'Class' ](el, 'pswp__' + cName);\n\t\t},\n\n\t\t// add class when there is just one item in the gallery\n\t\t// (by default it hides left/right arrows and 1ofX counter)\n\t\t_countNumItems = function() {\n\t\t\tvar hasOneSlide = (_options.getNumItemsFn() === 1);\n\n\t\t\tif(hasOneSlide !== _galleryHasOneSlide) {\n\t\t\t\t_togglePswpClass(_controls, 'ui--one-slide', hasOneSlide);\n\t\t\t\t_galleryHasOneSlide = hasOneSlide;\n\t\t\t}\n\t\t},\n\t\t_toggleShareModalClass = function() {\n\t\t\t_togglePswpClass(_shareModal, 'share-modal--hidden', _shareModalHidden);\n\t\t},\n\t\t_toggleShareModal = function() {\n\n\t\t\t_shareModalHidden = !_shareModalHidden;\n\t\t\t\n\t\t\t\n\t\t\tif(!_shareModalHidden) {\n\t\t\t\t_toggleShareModalClass();\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tif(!_shareModalHidden) {\n\t\t\t\t\t\tframework.addClass(_shareModal, 'pswp__share-modal--fade-in');\n\t\t\t\t\t}\n\t\t\t\t}, 30);\n\t\t\t} else {\n\t\t\t\tframework.removeClass(_shareModal, 'pswp__share-modal--fade-in');\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tif(_shareModalHidden) {\n\t\t\t\t\t\t_toggleShareModalClass();\n\t\t\t\t\t}\n\t\t\t\t}, 300);\n\t\t\t}\n\t\t\t\n\t\t\tif(!_shareModalHidden) {\n\t\t\t\t_updateShareURLs();\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\n\t\t_openWindowPopup = function(e) {\n\t\t\te = e || window.event;\n\t\t\tvar target = e.target || e.srcElement;\n\n\t\t\tpswp.shout('shareLinkClick', e, target);\n\n\t\t\tif(!target.href) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif( target.hasAttribute('download') ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\twindow.open(target.href, 'pswp_share', 'scrollbars=yes,resizable=yes,toolbar=no,'+\n\t\t\t\t\t\t\t\t\t\t'location=yes,width=550,height=420,top=100,left=' + \n\t\t\t\t\t\t\t\t\t\t(window.screen ? Math.round(screen.width / 2 - 275) : 100) );\n\n\t\t\tif(!_shareModalHidden) {\n\t\t\t\t_toggleShareModal();\n\t\t\t}\n\t\t\t\n\t\t\treturn false;\n\t\t},\n\t\t_updateShareURLs = function() {\n\t\t\tvar shareButtonOut = '',\n\t\t\t\tshareButtonData,\n\t\t\t\tshareURL,\n\t\t\t\timage_url,\n\t\t\t\tpage_url,\n\t\t\t\tshare_text;\n\n\t\t\tfor(var i = 0; i < _options.shareButtons.length; i++) {\n\t\t\t\tshareButtonData = _options.shareButtons[i];\n\n\t\t\t\timage_url = _options.getImageURLForShare(shareButtonData);\n\t\t\t\tpage_url = _options.getPageURLForShare(shareButtonData);\n\t\t\t\tshare_text = _options.getTextForShare(shareButtonData);\n\n\t\t\t\tshareURL = shareButtonData.url.replace('{{url}}', encodeURIComponent(page_url) )\n\t\t\t\t\t\t\t\t\t.replace('{{image_url}}', encodeURIComponent(image_url) )\n\t\t\t\t\t\t\t\t\t.replace('{{raw_image_url}}', image_url )\n\t\t\t\t\t\t\t\t\t.replace('{{text}}', encodeURIComponent(share_text) );\n\n\t\t\t\tshareButtonOut += '' + \n\t\t\t\t\t\t\t\t\tshareButtonData.label + '';\n\n\t\t\t\tif(_options.parseShareButtonOut) {\n\t\t\t\t\tshareButtonOut = _options.parseShareButtonOut(shareButtonData, shareButtonOut);\n\t\t\t\t}\n\t\t\t}\n\t\t\t_shareModal.children[0].innerHTML = shareButtonOut;\n\t\t\t_shareModal.children[0].onclick = _openWindowPopup;\n\n\t\t},\n\t\t_hasCloseClass = function(target) {\n\t\t\tfor(var i = 0; i < _options.closeElClasses.length; i++) {\n\t\t\t\tif( framework.hasClass(target, 'pswp__' + _options.closeElClasses[i]) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t_idleInterval,\n\t\t_idleTimer,\n\t\t_idleIncrement = 0,\n\t\t_onIdleMouseMove = function() {\n\t\t\tclearTimeout(_idleTimer);\n\t\t\t_idleIncrement = 0;\n\t\t\tif(_isIdle) {\n\t\t\t\tui.setIdle(false);\n\t\t\t}\n\t\t},\n\t\t_onMouseLeaveWindow = function(e) {\n\t\t\te = e ? e : window.event;\n\t\t\tvar from = e.relatedTarget || e.toElement;\n\t\t\tif (!from || from.nodeName === 'HTML') {\n\t\t\t\tclearTimeout(_idleTimer);\n\t\t\t\t_idleTimer = setTimeout(function() {\n\t\t\t\t\tui.setIdle(true);\n\t\t\t\t}, _options.timeToIdleOutside);\n\t\t\t}\n\t\t},\n\t\t_setupFullscreenAPI = function() {\n\t\t\tif(_options.fullscreenEl && !framework.features.isOldAndroid) {\n\t\t\t\tif(!_fullscrenAPI) {\n\t\t\t\t\t_fullscrenAPI = ui.getFullscreenAPI();\n\t\t\t\t}\n\t\t\t\tif(_fullscrenAPI) {\n\t\t\t\t\tframework.bind(document, _fullscrenAPI.eventK, ui.updateFullscreen);\n\t\t\t\t\tui.updateFullscreen();\n\t\t\t\t\tframework.addClass(pswp.template, 'pswp--supports-fs');\n\t\t\t\t} else {\n\t\t\t\t\tframework.removeClass(pswp.template, 'pswp--supports-fs');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t_setupLoadingIndicator = function() {\n\t\t\t// Setup loading indicator\n\t\t\tif(_options.preloaderEl) {\n\t\t\t\n\t\t\t\t_toggleLoadingIndicator(true);\n\n\t\t\t\t_listen('beforeChange', function() {\n\n\t\t\t\t\tclearTimeout(_loadingIndicatorTimeout);\n\n\t\t\t\t\t// display loading indicator with delay\n\t\t\t\t\t_loadingIndicatorTimeout = setTimeout(function() {\n\n\t\t\t\t\t\tif(pswp.currItem && pswp.currItem.loading) {\n\n\t\t\t\t\t\t\tif( !pswp.allowProgressiveImg() || (pswp.currItem.img && !pswp.currItem.img.naturalWidth) ) {\n\t\t\t\t\t\t\t\t// show preloader if progressive loading is not enabled, \n\t\t\t\t\t\t\t\t// or image width is not defined yet (because of slow connection)\n\t\t\t\t\t\t\t\t_toggleLoadingIndicator(false); \n\t\t\t\t\t\t\t\t// items-controller.js function allowProgressiveImg\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t_toggleLoadingIndicator(true); // hide preloader\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}, _options.loadingIndicatorDelay);\n\t\t\t\t\t\n\t\t\t\t});\n\t\t\t\t_listen('imageLoadComplete', function(index, item) {\n\t\t\t\t\tif(pswp.currItem === item) {\n\t\t\t\t\t\t_toggleLoadingIndicator(true);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t}\n\t\t},\n\t\t_toggleLoadingIndicator = function(hide) {\n\t\t\tif( _loadingIndicatorHidden !== hide ) {\n\t\t\t\t_togglePswpClass(_loadingIndicator, 'preloader--active', !hide);\n\t\t\t\t_loadingIndicatorHidden = hide;\n\t\t\t}\n\t\t},\n\t\t_applyNavBarGaps = function(item) {\n\t\t\tvar gap = item.vGap;\n\n\t\t\tif( _fitControlsInViewport() ) {\n\t\t\t\t\n\t\t\t\tvar bars = _options.barsSize; \n\t\t\t\tif(_options.captionEl && bars.bottom === 'auto') {\n\t\t\t\t\tif(!_fakeCaptionContainer) {\n\t\t\t\t\t\t_fakeCaptionContainer = framework.createEl('pswp__caption pswp__caption--fake');\n\t\t\t\t\t\t_fakeCaptionContainer.appendChild( framework.createEl('pswp__caption__center') );\n\t\t\t\t\t\t_controls.insertBefore(_fakeCaptionContainer, _captionContainer);\n\t\t\t\t\t\tframework.addClass(_controls, 'pswp__ui--fit');\n\t\t\t\t\t}\n\t\t\t\t\tif( _options.addCaptionHTMLFn(item, _fakeCaptionContainer, true) ) {\n\n\t\t\t\t\t\tvar captionSize = _fakeCaptionContainer.clientHeight;\n\t\t\t\t\t\tgap.bottom = parseInt(captionSize,10) || 44;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tgap.bottom = bars.top; // if no caption, set size of bottom gap to size of top\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tgap.bottom = bars.bottom === 'auto' ? 0 : bars.bottom;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// height of top bar is static, no need to calculate it\n\t\t\t\tgap.top = bars.top;\n\t\t\t} else {\n\t\t\t\tgap.top = gap.bottom = 0;\n\t\t\t}\n\t\t},\n\t\t_setupIdle = function() {\n\t\t\t// Hide controls when mouse is used\n\t\t\tif(_options.timeToIdle) {\n\t\t\t\t_listen('mouseUsed', function() {\n\t\t\t\t\t\n\t\t\t\t\tframework.bind(document, 'mousemove', _onIdleMouseMove);\n\t\t\t\t\tframework.bind(document, 'mouseout', _onMouseLeaveWindow);\n\n\t\t\t\t\t_idleInterval = setInterval(function() {\n\t\t\t\t\t\t_idleIncrement++;\n\t\t\t\t\t\tif(_idleIncrement === 2) {\n\t\t\t\t\t\t\tui.setIdle(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, _options.timeToIdle / 2);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t_setupHidingControlsDuringGestures = function() {\n\n\t\t\t// Hide controls on vertical drag\n\t\t\t_listen('onVerticalDrag', function(now) {\n\t\t\t\tif(_controlsVisible && now < 0.95) {\n\t\t\t\t\tui.hideControls();\n\t\t\t\t} else if(!_controlsVisible && now >= 0.95) {\n\t\t\t\t\tui.showControls();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Hide controls when pinching to close\n\t\t\tvar pinchControlsHidden;\n\t\t\t_listen('onPinchClose' , function(now) {\n\t\t\t\tif(_controlsVisible && now < 0.9) {\n\t\t\t\t\tui.hideControls();\n\t\t\t\t\tpinchControlsHidden = true;\n\t\t\t\t} else if(pinchControlsHidden && !_controlsVisible && now > 0.9) {\n\t\t\t\t\tui.showControls();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t_listen('zoomGestureEnded', function() {\n\t\t\t\tpinchControlsHidden = false;\n\t\t\t\tif(pinchControlsHidden && !_controlsVisible) {\n\t\t\t\t\tui.showControls();\n\t\t\t\t}\n\t\t\t});\n\n\t\t};\n\n\n\n\tvar _uiElements = [\n\t\t{ \n\t\t\tname: 'caption', \n\t\t\toption: 'captionEl',\n\t\t\tonInit: function(el) { \n\t\t\t\t_captionContainer = el; \n\t\t\t} \n\t\t},\n\t\t{ \n\t\t\tname: 'share-modal', \n\t\t\toption: 'shareEl',\n\t\t\tonInit: function(el) { \n\t\t\t\t_shareModal = el;\n\t\t\t},\n\t\t\tonTap: function() {\n\t\t\t\t_toggleShareModal();\n\t\t\t} \n\t\t},\n\t\t{ \n\t\t\tname: 'button--share', \n\t\t\toption: 'shareEl',\n\t\t\tonInit: function(el) { \n\t\t\t\t_shareButton = el;\n\t\t\t},\n\t\t\tonTap: function() {\n\t\t\t\t_toggleShareModal();\n\t\t\t} \n\t\t},\n\t\t{ \n\t\t\tname: 'button--zoom', \n\t\t\toption: 'zoomEl',\n\t\t\tonTap: pswp.toggleDesktopZoom\n\t\t},\n\t\t{ \n\t\t\tname: 'counter', \n\t\t\toption: 'counterEl',\n\t\t\tonInit: function(el) { \n\t\t\t\t_indexIndicator = el;\n\t\t\t} \n\t\t},\n\t\t{ \n\t\t\tname: 'button--close', \n\t\t\toption: 'closeEl',\n\t\t\tonTap: pswp.close\n\t\t},\n\t\t{ \n\t\t\tname: 'button--arrow--left', \n\t\t\toption: 'arrowEl',\n\t\t\tonTap: pswp.prev\n\t\t},\n\t\t{ \n\t\t\tname: 'button--arrow--right', \n\t\t\toption: 'arrowEl',\n\t\t\tonTap: pswp.next\n\t\t},\n\t\t{ \n\t\t\tname: 'button--fs', \n\t\t\toption: 'fullscreenEl',\n\t\t\tonTap: function() { \n\t\t\t\tif(_fullscrenAPI.isFullscreen()) {\n\t\t\t\t\t_fullscrenAPI.exit();\n\t\t\t\t} else {\n\t\t\t\t\t_fullscrenAPI.enter();\n\t\t\t\t}\n\t\t\t} \n\t\t},\n\t\t{ \n\t\t\tname: 'preloader', \n\t\t\toption: 'preloaderEl',\n\t\t\tonInit: function(el) { \n\t\t\t\t_loadingIndicator = el;\n\t\t\t} \n\t\t}\n\n\t];\n\n\tvar _setupUIElements = function() {\n\t\tvar item,\n\t\t\tclassAttr,\n\t\t\tuiElement;\n\n\t\tvar loopThroughChildElements = function(sChildren) {\n\t\t\tif(!sChildren) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar l = sChildren.length;\n\t\t\tfor(var i = 0; i < l; i++) {\n\t\t\t\titem = sChildren[i];\n\t\t\t\tclassAttr = item.className;\n\n\t\t\t\tfor(var a = 0; a < _uiElements.length; a++) {\n\t\t\t\t\tuiElement = _uiElements[a];\n\n\t\t\t\t\tif(classAttr.indexOf('pswp__' + uiElement.name) > -1 ) {\n\n\t\t\t\t\t\tif( _options[uiElement.option] ) { // if element is not disabled from options\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tframework.removeClass(item, 'pswp__element--disabled');\n\t\t\t\t\t\t\tif(uiElement.onInit) {\n\t\t\t\t\t\t\t\tuiElement.onInit(item);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t//item.style.display = 'block';\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tframework.addClass(item, 'pswp__element--disabled');\n\t\t\t\t\t\t\t//item.style.display = 'none';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tloopThroughChildElements(_controls.children);\n\n\t\tvar topBar = framework.getChildByClass(_controls, 'pswp__top-bar');\n\t\tif(topBar) {\n\t\t\tloopThroughChildElements( topBar.children );\n\t\t}\n\t};\n\n\n\t\n\n\tui.init = function() {\n\n\t\t// extend options\n\t\tframework.extend(pswp.options, _defaultUIOptions, true);\n\n\t\t// create local link for fast access\n\t\t_options = pswp.options;\n\n\t\t// find pswp__ui element\n\t\t_controls = framework.getChildByClass(pswp.scrollWrap, 'pswp__ui');\n\n\t\t// create local link\n\t\t_listen = pswp.listen;\n\n\n\t\t_setupHidingControlsDuringGestures();\n\n\t\t// update controls when slides change\n\t\t_listen('beforeChange', ui.update);\n\n\t\t// toggle zoom on double-tap\n\t\t_listen('doubleTap', function(point) {\n\t\t\tvar initialZoomLevel = pswp.currItem.initialZoomLevel;\n\t\t\tif(pswp.getZoomLevel() !== initialZoomLevel) {\n\t\t\t\tpswp.zoomTo(initialZoomLevel, point, 333);\n\t\t\t} else {\n\t\t\t\tpswp.zoomTo(_options.getDoubleTapZoom(false, pswp.currItem), point, 333);\n\t\t\t}\n\t\t});\n\n\t\t// Allow text selection in caption\n\t\t_listen('preventDragEvent', function(e, isDown, preventObj) {\n\t\t\tvar t = e.target || e.srcElement;\n\t\t\tif(\n\t\t\t\tt && \n\t\t\t\tt.getAttribute('class') && e.type.indexOf('mouse') > -1 && \n\t\t\t\t( t.getAttribute('class').indexOf('__caption') > 0 || (/(SMALL|STRONG|EM)/i).test(t.tagName) ) \n\t\t\t) {\n\t\t\t\tpreventObj.prevent = false;\n\t\t\t}\n\t\t});\n\n\t\t// bind events for UI\n\t\t_listen('bindEvents', function() {\n\t\t\tframework.bind(_controls, 'pswpTap click', _onControlsTap);\n\t\t\tframework.bind(pswp.scrollWrap, 'pswpTap', ui.onGlobalTap);\n\n\t\t\tif(!pswp.likelyTouchDevice) {\n\t\t\t\tframework.bind(pswp.scrollWrap, 'mouseover', ui.onMouseOver);\n\t\t\t}\n\t\t});\n\n\t\t// unbind events for UI\n\t\t_listen('unbindEvents', function() {\n\t\t\tif(!_shareModalHidden) {\n\t\t\t\t_toggleShareModal();\n\t\t\t}\n\n\t\t\tif(_idleInterval) {\n\t\t\t\tclearInterval(_idleInterval);\n\t\t\t}\n\t\t\tframework.unbind(document, 'mouseout', _onMouseLeaveWindow);\n\t\t\tframework.unbind(document, 'mousemove', _onIdleMouseMove);\n\t\t\tframework.unbind(_controls, 'pswpTap click', _onControlsTap);\n\t\t\tframework.unbind(pswp.scrollWrap, 'pswpTap', ui.onGlobalTap);\n\t\t\tframework.unbind(pswp.scrollWrap, 'mouseover', ui.onMouseOver);\n\n\t\t\tif(_fullscrenAPI) {\n\t\t\t\tframework.unbind(document, _fullscrenAPI.eventK, ui.updateFullscreen);\n\t\t\t\tif(_fullscrenAPI.isFullscreen()) {\n\t\t\t\t\t_options.hideAnimationDuration = 0;\n\t\t\t\t\t_fullscrenAPI.exit();\n\t\t\t\t}\n\t\t\t\t_fullscrenAPI = null;\n\t\t\t}\n\t\t});\n\n\n\t\t// clean up things when gallery is destroyed\n\t\t_listen('destroy', function() {\n\t\t\tif(_options.captionEl) {\n\t\t\t\tif(_fakeCaptionContainer) {\n\t\t\t\t\t_controls.removeChild(_fakeCaptionContainer);\n\t\t\t\t}\n\t\t\t\tframework.removeClass(_captionContainer, 'pswp__caption--empty');\n\t\t\t}\n\n\t\t\tif(_shareModal) {\n\t\t\t\t_shareModal.children[0].onclick = null;\n\t\t\t}\n\t\t\tframework.removeClass(_controls, 'pswp__ui--over-close');\n\t\t\tframework.addClass( _controls, 'pswp__ui--hidden');\n\t\t\tui.setIdle(false);\n\t\t});\n\t\t\n\n\t\tif(!_options.showAnimationDuration) {\n\t\t\tframework.removeClass( _controls, 'pswp__ui--hidden');\n\t\t}\n\t\t_listen('initialZoomIn', function() {\n\t\t\tif(_options.showAnimationDuration) {\n\t\t\t\tframework.removeClass( _controls, 'pswp__ui--hidden');\n\t\t\t}\n\t\t});\n\t\t_listen('initialZoomOut', function() {\n\t\t\tframework.addClass( _controls, 'pswp__ui--hidden');\n\t\t});\n\n\t\t_listen('parseVerticalMargin', _applyNavBarGaps);\n\t\t\n\t\t_setupUIElements();\n\n\t\tif(_options.shareEl && _shareButton && _shareModal) {\n\t\t\t_shareModalHidden = true;\n\t\t}\n\n\t\t_countNumItems();\n\n\t\t_setupIdle();\n\n\t\t_setupFullscreenAPI();\n\n\t\t_setupLoadingIndicator();\n\t};\n\n\tui.setIdle = function(isIdle) {\n\t\t_isIdle = isIdle;\n\t\t_togglePswpClass(_controls, 'ui--idle', isIdle);\n\t};\n\n\tui.update = function() {\n\t\t// Don't update UI if it's hidden\n\t\tif(_controlsVisible && pswp.currItem) {\n\t\t\t\n\t\t\tui.updateIndexIndicator();\n\n\t\t\tif(_options.captionEl) {\n\t\t\t\t_options.addCaptionHTMLFn(pswp.currItem, _captionContainer);\n\n\t\t\t\t_togglePswpClass(_captionContainer, 'caption--empty', !pswp.currItem.title);\n\t\t\t}\n\n\t\t\t_overlayUIUpdated = true;\n\n\t\t} else {\n\t\t\t_overlayUIUpdated = false;\n\t\t}\n\n\t\tif(!_shareModalHidden) {\n\t\t\t_toggleShareModal();\n\t\t}\n\n\t\t_countNumItems();\n\t};\n\n\tui.updateFullscreen = function(e) {\n\n\t\tif(e) {\n\t\t\t// some browsers change window scroll position during the fullscreen\n\t\t\t// so PhotoSwipe updates it just in case\n\t\t\tsetTimeout(function() {\n\t\t\t\tpswp.setScrollOffset( 0, framework.getScrollY() );\n\t\t\t}, 50);\n\t\t}\n\t\t\n\t\t// toogle pswp--fs class on root element\n\t\tframework[ (_fullscrenAPI.isFullscreen() ? 'add' : 'remove') + 'Class' ](pswp.template, 'pswp--fs');\n\t};\n\n\tui.updateIndexIndicator = function() {\n\t\tif(_options.counterEl) {\n\t\t\t_indexIndicator.innerHTML = (pswp.getCurrentIndex()+1) + \n\t\t\t\t\t\t\t\t\t\t_options.indexIndicatorSep + \n\t\t\t\t\t\t\t\t\t\t_options.getNumItemsFn();\n\t\t}\n\t};\n\t\n\tui.onGlobalTap = function(e) {\n\t\te = e || window.event;\n\t\tvar target = e.target || e.srcElement;\n\n\t\tif(_blockControlsTap) {\n\t\t\treturn;\n\t\t}\n\n\t\tif(e.detail && e.detail.pointerType === 'mouse') {\n\n\t\t\t// close gallery if clicked outside of the image\n\t\t\tif(_hasCloseClass(target)) {\n\t\t\t\tpswp.close();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(framework.hasClass(target, 'pswp__img')) {\n\t\t\t\tif(pswp.getZoomLevel() === 1 && pswp.getZoomLevel() <= pswp.currItem.fitRatio) {\n\t\t\t\t\tif(_options.clickToCloseNonZoomable) {\n\t\t\t\t\t\tpswp.close();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tpswp.toggleDesktopZoom(e.detail.releasePoint);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t} else {\n\n\t\t\t// tap anywhere (except buttons) to toggle visibility of controls\n\t\t\tif(_options.tapToToggleControls) {\n\t\t\t\tif(_controlsVisible) {\n\t\t\t\t\tui.hideControls();\n\t\t\t\t} else {\n\t\t\t\t\tui.showControls();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// tap to close gallery\n\t\t\tif(_options.tapToClose && (framework.hasClass(target, 'pswp__img') || _hasCloseClass(target)) ) {\n\t\t\t\tpswp.close();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t}\n\t};\n\tui.onMouseOver = function(e) {\n\t\te = e || window.event;\n\t\tvar target = e.target || e.srcElement;\n\n\t\t// add class when mouse is over an element that should close the gallery\n\t\t_togglePswpClass(_controls, 'ui--over-close', _hasCloseClass(target));\n\t};\n\n\tui.hideControls = function() {\n\t\tframework.addClass(_controls,'pswp__ui--hidden');\n\t\t_controlsVisible = false;\n\t};\n\n\tui.showControls = function() {\n\t\t_controlsVisible = true;\n\t\tif(!_overlayUIUpdated) {\n\t\t\tui.update();\n\t\t}\n\t\tframework.removeClass(_controls,'pswp__ui--hidden');\n\t};\n\n\tui.supportsFullscreen = function() {\n\t\tvar d = document;\n\t\treturn !!(d.exitFullscreen || d.mozCancelFullScreen || d.webkitExitFullscreen || d.msExitFullscreen);\n\t};\n\n\tui.getFullscreenAPI = function() {\n\t\tvar dE = document.documentElement,\n\t\t\tapi,\n\t\t\ttF = 'fullscreenchange';\n\n\t\tif (dE.requestFullscreen) {\n\t\t\tapi = {\n\t\t\t\tenterK: 'requestFullscreen',\n\t\t\t\texitK: 'exitFullscreen',\n\t\t\t\telementK: 'fullscreenElement',\n\t\t\t\teventK: tF\n\t\t\t};\n\n\t\t} else if(dE.mozRequestFullScreen ) {\n\t\t\tapi = {\n\t\t\t\tenterK: 'mozRequestFullScreen',\n\t\t\t\texitK: 'mozCancelFullScreen',\n\t\t\t\telementK: 'mozFullScreenElement',\n\t\t\t\teventK: 'moz' + tF\n\t\t\t};\n\n\t\t\t\n\n\t\t} else if(dE.webkitRequestFullscreen) {\n\t\t\tapi = {\n\t\t\t\tenterK: 'webkitRequestFullscreen',\n\t\t\t\texitK: 'webkitExitFullscreen',\n\t\t\t\telementK: 'webkitFullscreenElement',\n\t\t\t\teventK: 'webkit' + tF\n\t\t\t};\n\n\t\t} else if(dE.msRequestFullscreen) {\n\t\t\tapi = {\n\t\t\t\tenterK: 'msRequestFullscreen',\n\t\t\t\texitK: 'msExitFullscreen',\n\t\t\t\telementK: 'msFullscreenElement',\n\t\t\t\teventK: 'MSFullscreenChange'\n\t\t\t};\n\t\t}\n\n\t\tif(api) {\n\t\t\tapi.enter = function() { \n\t\t\t\t// disable close-on-scroll in fullscreen\n\t\t\t\t_initalCloseOnScrollValue = _options.closeOnScroll; \n\t\t\t\t_options.closeOnScroll = false; \n\n\t\t\t\tif(this.enterK === 'webkitRequestFullscreen') {\n\t\t\t\t\tpswp.template[this.enterK]( Element.ALLOW_KEYBOARD_INPUT );\n\t\t\t\t} else {\n\t\t\t\t\treturn pswp.template[this.enterK](); \n\t\t\t\t}\n\t\t\t};\n\t\t\tapi.exit = function() { \n\t\t\t\t_options.closeOnScroll = _initalCloseOnScrollValue;\n\n\t\t\t\treturn document[this.exitK](); \n\n\t\t\t};\n\t\t\tapi.isFullscreen = function() { return document[this.elementK]; };\n\t\t}\n\n\t\treturn api;\n\t};\n\n\n\n};\nreturn PhotoSwipeUI_Default;\n\n\n});\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Overview.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Overview.vue?vue&type=style&index=0&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotoViewer.vue?vue&type=style&index=0&id=4c686b80&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotoViewer.vue?vue&type=style&index=0&id=4c686b80&lang=scss&scoped=true&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./EventAbout.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./EventAbout.vue?vue&type=style&index=0&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"block block_wide\"},[_c('div',{staticClass:\"event-contacts-card\"},[_c('Avatar',{attrs:{\"img\":_vm.themeImages['support-avatar'],\"size\":64}}),_vm._v(\" \"),(_vm.phoneNumber)?_c('div',{staticClass:\"event-contacts-card__phone text-lg\"},[_c('b',[_vm._v(_vm._s(_vm.phoneNumber))])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"text-sm\"},[_vm._v(_vm._s(_vm.$t('contacts.eventSupport')))]),_vm._v(\" \"),_c('Button',_vm._b({directives:[{name:\"open-modal\",rawName:\"v-open-modal\",value:({ name: 'contacts-modal' }),expression:\"{ name: 'contacts-modal' }\"}],staticClass:\"event-contacts-card__button\"},'Button',Object.assign({}, {variant: 'secondary',\n text: _vm.$t('contacts.contact'),\n iconRight: 'right'},\n _vm.buttonProps),false))],1),_vm._v(\" \"),_c('Modal',{ref:\"modal\",attrs:{\"name\":\"contacts-modal\",\"align\":\"center\"}},[_c('div',{staticClass:\"base-modal__heading base-modal__item\"},[_c('div',{staticClass:\"base-modal__top-img\"},[_c('img',{attrs:{\"src\":_vm.themeImages['questions'],\"width\":\"322\",\"alt\":\"\"}})]),_vm._v(\" \"),_c('h3',{staticClass:\"base-modal__title\"},[_vm._v(_vm._s(_vm.$t('contactModal.title')))]),_vm._v(\" \"),_c('div',{staticClass:\"base-modal__subtitle\"},[_vm._v(_vm._s(_vm.$t('contactModal.subtitle')))])]),_vm._v(\" \"),_c('div',{staticClass:\"base-modal__body base-modal__item\"},[_c('div',{staticClass:\"text-content html-content\",domProps:{\"innerHTML\":_vm._s(_vm.content)}})])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactsBlock.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactsBlock.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ContactsBlock.vue?vue&type=template&id=21667186&scoped=true&\"\nimport script from \"./ContactsBlock.vue?vue&type=script&lang=js&\"\nexport * from \"./ContactsBlock.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ContactsBlock.vue?vue&type=style&index=0&id=21667186&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"21667186\",\n null\n \n)\n\nexport default component.exports","/*! PhotoSwipe - v4.1.3 - 2019-01-08\n* http://photoswipe.com\n* Copyright (c) 2019 Dmitry Semenov; */\n(function (root, factory) { \n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t} else if (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t} else {\n\t\troot.PhotoSwipe = factory();\n\t}\n})(this, function () {\n\n\t'use strict';\n\tvar PhotoSwipe = function(template, UiClass, items, options){\n\n/*>>framework-bridge*/\n/**\n *\n * Set of generic functions used by gallery.\n * \n * You're free to modify anything here as long as functionality is kept.\n * \n */\nvar framework = {\n\tfeatures: null,\n\tbind: function(target, type, listener, unbind) {\n\t\tvar methodName = (unbind ? 'remove' : 'add') + 'EventListener';\n\t\ttype = type.split(' ');\n\t\tfor(var i = 0; i < type.length; i++) {\n\t\t\tif(type[i]) {\n\t\t\t\ttarget[methodName]( type[i], listener, false);\n\t\t\t}\n\t\t}\n\t},\n\tisArray: function(obj) {\n\t\treturn (obj instanceof Array);\n\t},\n\tcreateEl: function(classes, tag) {\n\t\tvar el = document.createElement(tag || 'div');\n\t\tif(classes) {\n\t\t\tel.className = classes;\n\t\t}\n\t\treturn el;\n\t},\n\tgetScrollY: function() {\n\t\tvar yOffset = window.pageYOffset;\n\t\treturn yOffset !== undefined ? yOffset : document.documentElement.scrollTop;\n\t},\n\tunbind: function(target, type, listener) {\n\t\tframework.bind(target,type,listener,true);\n\t},\n\tremoveClass: function(el, className) {\n\t\tvar reg = new RegExp('(\\\\s|^)' + className + '(\\\\s|$)');\n\t\tel.className = el.className.replace(reg, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, ''); \n\t},\n\taddClass: function(el, className) {\n\t\tif( !framework.hasClass(el,className) ) {\n\t\t\tel.className += (el.className ? ' ' : '') + className;\n\t\t}\n\t},\n\thasClass: function(el, className) {\n\t\treturn el.className && new RegExp('(^|\\\\s)' + className + '(\\\\s|$)').test(el.className);\n\t},\n\tgetChildByClass: function(parentEl, childClassName) {\n\t\tvar node = parentEl.firstChild;\n\t\twhile(node) {\n\t\t\tif( framework.hasClass(node, childClassName) ) {\n\t\t\t\treturn node;\n\t\t\t}\n\t\t\tnode = node.nextSibling;\n\t\t}\n\t},\n\tarraySearch: function(array, value, key) {\n\t\tvar i = array.length;\n\t\twhile(i--) {\n\t\t\tif(array[i][key] === value) {\n\t\t\t\treturn i;\n\t\t\t} \n\t\t}\n\t\treturn -1;\n\t},\n\textend: function(o1, o2, preventOverwrite) {\n\t\tfor (var prop in o2) {\n\t\t\tif (o2.hasOwnProperty(prop)) {\n\t\t\t\tif(preventOverwrite && o1.hasOwnProperty(prop)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\to1[prop] = o2[prop];\n\t\t\t}\n\t\t}\n\t},\n\teasing: {\n\t\tsine: {\n\t\t\tout: function(k) {\n\t\t\t\treturn Math.sin(k * (Math.PI / 2));\n\t\t\t},\n\t\t\tinOut: function(k) {\n\t\t\t\treturn - (Math.cos(Math.PI * k) - 1) / 2;\n\t\t\t}\n\t\t},\n\t\tcubic: {\n\t\t\tout: function(k) {\n\t\t\t\treturn --k * k * k + 1;\n\t\t\t}\n\t\t}\n\t\t/*\n\t\t\telastic: {\n\t\t\t\tout: function ( k ) {\n\n\t\t\t\t\tvar s, a = 0.1, p = 0.4;\n\t\t\t\t\tif ( k === 0 ) return 0;\n\t\t\t\t\tif ( k === 1 ) return 1;\n\t\t\t\t\tif ( !a || a < 1 ) { a = 1; s = p / 4; }\n\t\t\t\t\telse s = p * Math.asin( 1 / a ) / ( 2 * Math.PI );\n\t\t\t\t\treturn ( a * Math.pow( 2, - 10 * k) * Math.sin( ( k - s ) * ( 2 * Math.PI ) / p ) + 1 );\n\n\t\t\t\t},\n\t\t\t},\n\t\t\tback: {\n\t\t\t\tout: function ( k ) {\n\t\t\t\t\tvar s = 1.70158;\n\t\t\t\t\treturn --k * k * ( ( s + 1 ) * k + s ) + 1;\n\t\t\t\t}\n\t\t\t}\n\t\t*/\n\t},\n\n\t/**\n\t * \n\t * @return {object}\n\t * \n\t * {\n\t * raf : request animation frame function\n\t * caf : cancel animation frame function\n\t * transfrom : transform property key (with vendor), or null if not supported\n\t * oldIE : IE8 or below\n\t * }\n\t * \n\t */\n\tdetectFeatures: function() {\n\t\tif(framework.features) {\n\t\t\treturn framework.features;\n\t\t}\n\t\tvar helperEl = framework.createEl(),\n\t\t\thelperStyle = helperEl.style,\n\t\t\tvendor = '',\n\t\t\tfeatures = {};\n\n\t\t// IE8 and below\n\t\tfeatures.oldIE = document.all && !document.addEventListener;\n\n\t\tfeatures.touch = 'ontouchstart' in window;\n\n\t\tif(window.requestAnimationFrame) {\n\t\t\tfeatures.raf = window.requestAnimationFrame;\n\t\t\tfeatures.caf = window.cancelAnimationFrame;\n\t\t}\n\n\t\tfeatures.pointerEvent = !!(window.PointerEvent) || navigator.msPointerEnabled;\n\n\t\t// fix false-positive detection of old Android in new IE\n\t\t// (IE11 ua string contains \"Android 4.0\")\n\t\t\n\t\tif(!features.pointerEvent) { \n\n\t\t\tvar ua = navigator.userAgent;\n\n\t\t\t// Detect if device is iPhone or iPod and if it's older than iOS 8\n\t\t\t// http://stackoverflow.com/a/14223920\n\t\t\t// \n\t\t\t// This detection is made because of buggy top/bottom toolbars\n\t\t\t// that don't trigger window.resize event.\n\t\t\t// For more info refer to _isFixedPosition variable in core.js\n\n\t\t\tif (/iP(hone|od)/.test(navigator.platform)) {\n\t\t\t\tvar v = (navigator.appVersion).match(/OS (\\d+)_(\\d+)_?(\\d+)?/);\n\t\t\t\tif(v && v.length > 0) {\n\t\t\t\t\tv = parseInt(v[1], 10);\n\t\t\t\t\tif(v >= 1 && v < 8 ) {\n\t\t\t\t\t\tfeatures.isOldIOSPhone = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Detect old Android (before KitKat)\n\t\t\t// due to bugs related to position:fixed\n\t\t\t// http://stackoverflow.com/questions/7184573/pick-up-the-android-version-in-the-browser-by-javascript\n\t\t\t\n\t\t\tvar match = ua.match(/Android\\s([0-9\\.]*)/);\n\t\t\tvar androidversion = match ? match[1] : 0;\n\t\t\tandroidversion = parseFloat(androidversion);\n\t\t\tif(androidversion >= 1 ) {\n\t\t\t\tif(androidversion < 4.4) {\n\t\t\t\t\tfeatures.isOldAndroid = true; // for fixed position bug & performance\n\t\t\t\t}\n\t\t\t\tfeatures.androidVersion = androidversion; // for touchend bug\n\t\t\t}\t\n\t\t\tfeatures.isMobileOpera = /opera mini|opera mobi/i.test(ua);\n\n\t\t\t// p.s. yes, yes, UA sniffing is bad, propose your solution for above bugs.\n\t\t}\n\t\t\n\t\tvar styleChecks = ['transform', 'perspective', 'animationName'],\n\t\t\tvendors = ['', 'webkit','Moz','ms','O'],\n\t\t\tstyleCheckItem,\n\t\t\tstyleName;\n\n\t\tfor(var i = 0; i < 4; i++) {\n\t\t\tvendor = vendors[i];\n\n\t\t\tfor(var a = 0; a < 3; a++) {\n\t\t\t\tstyleCheckItem = styleChecks[a];\n\n\t\t\t\t// uppercase first letter of property name, if vendor is present\n\t\t\t\tstyleName = vendor + (vendor ? \n\t\t\t\t\t\t\t\t\t\tstyleCheckItem.charAt(0).toUpperCase() + styleCheckItem.slice(1) : \n\t\t\t\t\t\t\t\t\t\tstyleCheckItem);\n\t\t\t\n\t\t\t\tif(!features[styleCheckItem] && styleName in helperStyle ) {\n\t\t\t\t\tfeatures[styleCheckItem] = styleName;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(vendor && !features.raf) {\n\t\t\t\tvendor = vendor.toLowerCase();\n\t\t\t\tfeatures.raf = window[vendor+'RequestAnimationFrame'];\n\t\t\t\tif(features.raf) {\n\t\t\t\t\tfeatures.caf = window[vendor+'CancelAnimationFrame'] || \n\t\t\t\t\t\t\t\t\twindow[vendor+'CancelRequestAnimationFrame'];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\t\n\t\tif(!features.raf) {\n\t\t\tvar lastTime = 0;\n\t\t\tfeatures.raf = function(fn) {\n\t\t\t\tvar currTime = new Date().getTime();\n\t\t\t\tvar timeToCall = Math.max(0, 16 - (currTime - lastTime));\n\t\t\t\tvar id = window.setTimeout(function() { fn(currTime + timeToCall); }, timeToCall);\n\t\t\t\tlastTime = currTime + timeToCall;\n\t\t\t\treturn id;\n\t\t\t};\n\t\t\tfeatures.caf = function(id) { clearTimeout(id); };\n\t\t}\n\n\t\t// Detect SVG support\n\t\tfeatures.svg = !!document.createElementNS && \n\t\t\t\t\t\t!!document.createElementNS('http://www.w3.org/2000/svg', 'svg').createSVGRect;\n\n\t\tframework.features = features;\n\n\t\treturn features;\n\t}\n};\n\nframework.detectFeatures();\n\n// Override addEventListener for old versions of IE\nif(framework.features.oldIE) {\n\n\tframework.bind = function(target, type, listener, unbind) {\n\t\t\n\t\ttype = type.split(' ');\n\n\t\tvar methodName = (unbind ? 'detach' : 'attach') + 'Event',\n\t\t\tevName,\n\t\t\t_handleEv = function() {\n\t\t\t\tlistener.handleEvent.call(listener);\n\t\t\t};\n\n\t\tfor(var i = 0; i < type.length; i++) {\n\t\t\tevName = type[i];\n\t\t\tif(evName) {\n\n\t\t\t\tif(typeof listener === 'object' && listener.handleEvent) {\n\t\t\t\t\tif(!unbind) {\n\t\t\t\t\t\tlistener['oldIE' + evName] = _handleEv;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif(!listener['oldIE' + evName]) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\ttarget[methodName]( 'on' + evName, listener['oldIE' + evName]);\n\t\t\t\t} else {\n\t\t\t\t\ttarget[methodName]( 'on' + evName, listener);\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\t};\n\t\n}\n\n/*>>framework-bridge*/\n\n/*>>core*/\n//function(template, UiClass, items, options)\n\nvar self = this;\n\n/**\n * Static vars, don't change unless you know what you're doing.\n */\nvar DOUBLE_TAP_RADIUS = 25, \n\tNUM_HOLDERS = 3;\n\n/**\n * Options\n */\nvar _options = {\n\tallowPanToNext:true,\n\tspacing: 0.12,\n\tbgOpacity: 1,\n\tmouseUsed: false,\n\tloop: true,\n\tpinchToClose: true,\n\tcloseOnScroll: true,\n\tcloseOnVerticalDrag: true,\n\tverticalDragRange: 0.75,\n\thideAnimationDuration: 333,\n\tshowAnimationDuration: 333,\n\tshowHideOpacity: false,\n\tfocus: true,\n\tescKey: true,\n\tarrowKeys: true,\n\tmainScrollEndFriction: 0.35,\n\tpanEndFriction: 0.35,\n\tisClickableElement: function(el) {\n return el.tagName === 'A';\n },\n getDoubleTapZoom: function(isMouseClick, item) {\n \tif(isMouseClick) {\n \t\treturn 1;\n \t} else {\n \t\treturn item.initialZoomLevel < 0.7 ? 1 : 1.33;\n \t}\n },\n maxSpreadZoom: 1.33,\n\tmodal: true,\n\n\t// not fully implemented yet\n\tscaleMode: 'fit' // TODO\n};\nframework.extend(_options, options);\n\n\n/**\n * Private helper variables & functions\n */\n\nvar _getEmptyPoint = function() { \n\t\treturn {x:0,y:0}; \n\t};\n\nvar _isOpen,\n\t_isDestroying,\n\t_closedByScroll,\n\t_currentItemIndex,\n\t_containerStyle,\n\t_containerShiftIndex,\n\t_currPanDist = _getEmptyPoint(),\n\t_startPanOffset = _getEmptyPoint(),\n\t_panOffset = _getEmptyPoint(),\n\t_upMoveEvents, // drag move, drag end & drag cancel events array\n\t_downEvents, // drag start events array\n\t_globalEventHandlers,\n\t_viewportSize = {},\n\t_currZoomLevel,\n\t_startZoomLevel,\n\t_translatePrefix,\n\t_translateSufix,\n\t_updateSizeInterval,\n\t_itemsNeedUpdate,\n\t_currPositionIndex = 0,\n\t_offset = {},\n\t_slideSize = _getEmptyPoint(), // size of slide area, including spacing\n\t_itemHolders,\n\t_prevItemIndex,\n\t_indexDiff = 0, // difference of indexes since last content update\n\t_dragStartEvent,\n\t_dragMoveEvent,\n\t_dragEndEvent,\n\t_dragCancelEvent,\n\t_transformKey,\n\t_pointerEventEnabled,\n\t_isFixedPosition = true,\n\t_likelyTouchDevice,\n\t_modules = [],\n\t_requestAF,\n\t_cancelAF,\n\t_initalClassName,\n\t_initalWindowScrollY,\n\t_oldIE,\n\t_currentWindowScrollY,\n\t_features,\n\t_windowVisibleSize = {},\n\t_renderMaxResolution = false,\n\t_orientationChangeTimeout,\n\n\n\t// Registers PhotoSWipe module (History, Controller ...)\n\t_registerModule = function(name, module) {\n\t\tframework.extend(self, module.publicMethods);\n\t\t_modules.push(name);\n\t},\n\n\t_getLoopedId = function(index) {\n\t\tvar numSlides = _getNumItems();\n\t\tif(index > numSlides - 1) {\n\t\t\treturn index - numSlides;\n\t\t} else if(index < 0) {\n\t\t\treturn numSlides + index;\n\t\t}\n\t\treturn index;\n\t},\n\t\n\t// Micro bind/trigger\n\t_listeners = {},\n\t_listen = function(name, fn) {\n\t\tif(!_listeners[name]) {\n\t\t\t_listeners[name] = [];\n\t\t}\n\t\treturn _listeners[name].push(fn);\n\t},\n\t_shout = function(name) {\n\t\tvar listeners = _listeners[name];\n\n\t\tif(listeners) {\n\t\t\tvar args = Array.prototype.slice.call(arguments);\n\t\t\targs.shift();\n\n\t\t\tfor(var i = 0; i < listeners.length; i++) {\n\t\t\t\tlisteners[i].apply(self, args);\n\t\t\t}\n\t\t}\n\t},\n\n\t_getCurrentTime = function() {\n\t\treturn new Date().getTime();\n\t},\n\t_applyBgOpacity = function(opacity) {\n\t\t_bgOpacity = opacity;\n\t\tself.bg.style.opacity = opacity * _options.bgOpacity;\n\t},\n\n\t_applyZoomTransform = function(styleObj,x,y,zoom,item) {\n\t\tif(!_renderMaxResolution || (item && item !== self.currItem) ) {\n\t\t\tzoom = zoom / (item ? item.fitRatio : self.currItem.fitRatio);\t\n\t\t}\n\t\t\t\n\t\tstyleObj[_transformKey] = _translatePrefix + x + 'px, ' + y + 'px' + _translateSufix + ' scale(' + zoom + ')';\n\t},\n\t_applyCurrentZoomPan = function( allowRenderResolution ) {\n\t\tif(_currZoomElementStyle) {\n\n\t\t\tif(allowRenderResolution) {\n\t\t\t\tif(_currZoomLevel > self.currItem.fitRatio) {\n\t\t\t\t\tif(!_renderMaxResolution) {\n\t\t\t\t\t\t_setImageSize(self.currItem, false, true);\n\t\t\t\t\t\t_renderMaxResolution = true;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif(_renderMaxResolution) {\n\t\t\t\t\t\t_setImageSize(self.currItem);\n\t\t\t\t\t\t_renderMaxResolution = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\n\t\t\t_applyZoomTransform(_currZoomElementStyle, _panOffset.x, _panOffset.y, _currZoomLevel);\n\t\t}\n\t},\n\t_applyZoomPanToItem = function(item) {\n\t\tif(item.container) {\n\n\t\t\t_applyZoomTransform(item.container.style, \n\t\t\t\t\t\t\t\titem.initialPosition.x, \n\t\t\t\t\t\t\t\titem.initialPosition.y, \n\t\t\t\t\t\t\t\titem.initialZoomLevel,\n\t\t\t\t\t\t\t\titem);\n\t\t}\n\t},\n\t_setTranslateX = function(x, elStyle) {\n\t\telStyle[_transformKey] = _translatePrefix + x + 'px, 0px' + _translateSufix;\n\t},\n\t_moveMainScroll = function(x, dragging) {\n\n\t\tif(!_options.loop && dragging) {\n\t\t\tvar newSlideIndexOffset = _currentItemIndex + (_slideSize.x * _currPositionIndex - x) / _slideSize.x,\n\t\t\t\tdelta = Math.round(x - _mainScrollPos.x);\n\n\t\t\tif( (newSlideIndexOffset < 0 && delta > 0) || \n\t\t\t\t(newSlideIndexOffset >= _getNumItems() - 1 && delta < 0) ) {\n\t\t\t\tx = _mainScrollPos.x + delta * _options.mainScrollEndFriction;\n\t\t\t} \n\t\t}\n\t\t\n\t\t_mainScrollPos.x = x;\n\t\t_setTranslateX(x, _containerStyle);\n\t},\n\t_calculatePanOffset = function(axis, zoomLevel) {\n\t\tvar m = _midZoomPoint[axis] - _offset[axis];\n\t\treturn _startPanOffset[axis] + _currPanDist[axis] + m - m * ( zoomLevel / _startZoomLevel );\n\t},\n\t\n\t_equalizePoints = function(p1, p2) {\n\t\tp1.x = p2.x;\n\t\tp1.y = p2.y;\n\t\tif(p2.id) {\n\t\t\tp1.id = p2.id;\n\t\t}\n\t},\n\t_roundPoint = function(p) {\n\t\tp.x = Math.round(p.x);\n\t\tp.y = Math.round(p.y);\n\t},\n\n\t_mouseMoveTimeout = null,\n\t_onFirstMouseMove = function() {\n\t\t// Wait until mouse move event is fired at least twice during 100ms\n\t\t// We do this, because some mobile browsers trigger it on touchstart\n\t\tif(_mouseMoveTimeout ) { \n\t\t\tframework.unbind(document, 'mousemove', _onFirstMouseMove);\n\t\t\tframework.addClass(template, 'pswp--has_mouse');\n\t\t\t_options.mouseUsed = true;\n\t\t\t_shout('mouseUsed');\n\t\t}\n\t\t_mouseMoveTimeout = setTimeout(function() {\n\t\t\t_mouseMoveTimeout = null;\n\t\t}, 100);\n\t},\n\n\t_bindEvents = function() {\n\t\tframework.bind(document, 'keydown', self);\n\n\t\tif(_features.transform) {\n\t\t\t// don't bind click event in browsers that don't support transform (mostly IE8)\n\t\t\tframework.bind(self.scrollWrap, 'click', self);\n\t\t}\n\t\t\n\n\t\tif(!_options.mouseUsed) {\n\t\t\tframework.bind(document, 'mousemove', _onFirstMouseMove);\n\t\t}\n\n\t\tframework.bind(window, 'resize scroll orientationchange', self);\n\n\t\t_shout('bindEvents');\n\t},\n\n\t_unbindEvents = function() {\n\t\tframework.unbind(window, 'resize scroll orientationchange', self);\n\t\tframework.unbind(window, 'scroll', _globalEventHandlers.scroll);\n\t\tframework.unbind(document, 'keydown', self);\n\t\tframework.unbind(document, 'mousemove', _onFirstMouseMove);\n\n\t\tif(_features.transform) {\n\t\t\tframework.unbind(self.scrollWrap, 'click', self);\n\t\t}\n\n\t\tif(_isDragging) {\n\t\t\tframework.unbind(window, _upMoveEvents, self);\n\t\t}\n\n\t\tclearTimeout(_orientationChangeTimeout);\n\n\t\t_shout('unbindEvents');\n\t},\n\t\n\t_calculatePanBounds = function(zoomLevel, update) {\n\t\tvar bounds = _calculateItemSize( self.currItem, _viewportSize, zoomLevel );\n\t\tif(update) {\n\t\t\t_currPanBounds = bounds;\n\t\t}\n\t\treturn bounds;\n\t},\n\t\n\t_getMinZoomLevel = function(item) {\n\t\tif(!item) {\n\t\t\titem = self.currItem;\n\t\t}\n\t\treturn item.initialZoomLevel;\n\t},\n\t_getMaxZoomLevel = function(item) {\n\t\tif(!item) {\n\t\t\titem = self.currItem;\n\t\t}\n\t\treturn item.w > 0 ? _options.maxSpreadZoom : 1;\n\t},\n\n\t// Return true if offset is out of the bounds\n\t_modifyDestPanOffset = function(axis, destPanBounds, destPanOffset, destZoomLevel) {\n\t\tif(destZoomLevel === self.currItem.initialZoomLevel) {\n\t\t\tdestPanOffset[axis] = self.currItem.initialPosition[axis];\n\t\t\treturn true;\n\t\t} else {\n\t\t\tdestPanOffset[axis] = _calculatePanOffset(axis, destZoomLevel); \n\n\t\t\tif(destPanOffset[axis] > destPanBounds.min[axis]) {\n\t\t\t\tdestPanOffset[axis] = destPanBounds.min[axis];\n\t\t\t\treturn true;\n\t\t\t} else if(destPanOffset[axis] < destPanBounds.max[axis] ) {\n\t\t\t\tdestPanOffset[axis] = destPanBounds.max[axis];\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\n\t_setupTransforms = function() {\n\n\t\tif(_transformKey) {\n\t\t\t// setup 3d transforms\n\t\t\tvar allow3dTransform = _features.perspective && !_likelyTouchDevice;\n\t\t\t_translatePrefix = 'translate' + (allow3dTransform ? '3d(' : '(');\n\t\t\t_translateSufix = _features.perspective ? ', 0px)' : ')';\t\n\t\t\treturn;\n\t\t}\n\n\t\t// Override zoom/pan/move functions in case old browser is used (most likely IE)\n\t\t// (so they use left/top/width/height, instead of CSS transform)\n\t\n\t\t_transformKey = 'left';\n\t\tframework.addClass(template, 'pswp--ie');\n\n\t\t_setTranslateX = function(x, elStyle) {\n\t\t\telStyle.left = x + 'px';\n\t\t};\n\t\t_applyZoomPanToItem = function(item) {\n\n\t\t\tvar zoomRatio = item.fitRatio > 1 ? 1 : item.fitRatio,\n\t\t\t\ts = item.container.style,\n\t\t\t\tw = zoomRatio * item.w,\n\t\t\t\th = zoomRatio * item.h;\n\n\t\t\ts.width = w + 'px';\n\t\t\ts.height = h + 'px';\n\t\t\ts.left = item.initialPosition.x + 'px';\n\t\t\ts.top = item.initialPosition.y + 'px';\n\n\t\t};\n\t\t_applyCurrentZoomPan = function() {\n\t\t\tif(_currZoomElementStyle) {\n\n\t\t\t\tvar s = _currZoomElementStyle,\n\t\t\t\t\titem = self.currItem,\n\t\t\t\t\tzoomRatio = item.fitRatio > 1 ? 1 : item.fitRatio,\n\t\t\t\t\tw = zoomRatio * item.w,\n\t\t\t\t\th = zoomRatio * item.h;\n\n\t\t\t\ts.width = w + 'px';\n\t\t\t\ts.height = h + 'px';\n\n\n\t\t\t\ts.left = _panOffset.x + 'px';\n\t\t\t\ts.top = _panOffset.y + 'px';\n\t\t\t}\n\t\t\t\n\t\t};\n\t},\n\n\t_onKeyDown = function(e) {\n\t\tvar keydownAction = '';\n\t\tif(_options.escKey && e.keyCode === 27) { \n\t\t\tkeydownAction = 'close';\n\t\t} else if(_options.arrowKeys) {\n\t\t\tif(e.keyCode === 37) {\n\t\t\t\tkeydownAction = 'prev';\n\t\t\t} else if(e.keyCode === 39) { \n\t\t\t\tkeydownAction = 'next';\n\t\t\t}\n\t\t}\n\n\t\tif(keydownAction) {\n\t\t\t// don't do anything if special key pressed to prevent from overriding default browser actions\n\t\t\t// e.g. in Chrome on Mac cmd+arrow-left returns to previous page\n\t\t\tif( !e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey ) {\n\t\t\t\tif(e.preventDefault) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t} else {\n\t\t\t\t\te.returnValue = false;\n\t\t\t\t} \n\t\t\t\tself[keydownAction]();\n\t\t\t}\n\t\t}\n\t},\n\n\t_onGlobalClick = function(e) {\n\t\tif(!e) {\n\t\t\treturn;\n\t\t}\n\n\t\t// don't allow click event to pass through when triggering after drag or some other gesture\n\t\tif(_moved || _zoomStarted || _mainScrollAnimating || _verticalDragInitiated) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\n\t_updatePageScrollOffset = function() {\n\t\tself.setScrollOffset(0, framework.getScrollY());\t\t\n\t};\n\t\n\n\n\t\n\n\n\n// Micro animation engine\nvar _animations = {},\n\t_numAnimations = 0,\n\t_stopAnimation = function(name) {\n\t\tif(_animations[name]) {\n\t\t\tif(_animations[name].raf) {\n\t\t\t\t_cancelAF( _animations[name].raf );\n\t\t\t}\n\t\t\t_numAnimations--;\n\t\t\tdelete _animations[name];\n\t\t}\n\t},\n\t_registerStartAnimation = function(name) {\n\t\tif(_animations[name]) {\n\t\t\t_stopAnimation(name);\n\t\t}\n\t\tif(!_animations[name]) {\n\t\t\t_numAnimations++;\n\t\t\t_animations[name] = {};\n\t\t}\n\t},\n\t_stopAllAnimations = function() {\n\t\tfor (var prop in _animations) {\n\n\t\t\tif( _animations.hasOwnProperty( prop ) ) {\n\t\t\t\t_stopAnimation(prop);\n\t\t\t} \n\t\t\t\n\t\t}\n\t},\n\t_animateProp = function(name, b, endProp, d, easingFn, onUpdate, onComplete) {\n\t\tvar startAnimTime = _getCurrentTime(), t;\n\t\t_registerStartAnimation(name);\n\n\t\tvar animloop = function(){\n\t\t\tif ( _animations[name] ) {\n\t\t\t\t\n\t\t\t\tt = _getCurrentTime() - startAnimTime; // time diff\n\t\t\t\t//b - beginning (start prop)\n\t\t\t\t//d - anim duration\n\n\t\t\t\tif ( t >= d ) {\n\t\t\t\t\t_stopAnimation(name);\n\t\t\t\t\tonUpdate(endProp);\n\t\t\t\t\tif(onComplete) {\n\t\t\t\t\t\tonComplete();\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tonUpdate( (endProp - b) * easingFn(t/d) + b );\n\n\t\t\t\t_animations[name].raf = _requestAF(animloop);\n\t\t\t}\n\t\t};\n\t\tanimloop();\n\t};\n\t\n\n\nvar publicMethods = {\n\n\t// make a few local variables and functions public\n\tshout: _shout,\n\tlisten: _listen,\n\tviewportSize: _viewportSize,\n\toptions: _options,\n\n\tisMainScrollAnimating: function() {\n\t\treturn _mainScrollAnimating;\n\t},\n\tgetZoomLevel: function() {\n\t\treturn _currZoomLevel;\n\t},\n\tgetCurrentIndex: function() {\n\t\treturn _currentItemIndex;\n\t},\n\tisDragging: function() {\n\t\treturn _isDragging;\n\t},\t\n\tisZooming: function() {\n\t\treturn _isZooming;\n\t},\n\tsetScrollOffset: function(x,y) {\n\t\t_offset.x = x;\n\t\t_currentWindowScrollY = _offset.y = y;\n\t\t_shout('updateScrollOffset', _offset);\n\t},\n\tapplyZoomPan: function(zoomLevel,panX,panY,allowRenderResolution) {\n\t\t_panOffset.x = panX;\n\t\t_panOffset.y = panY;\n\t\t_currZoomLevel = zoomLevel;\n\t\t_applyCurrentZoomPan( allowRenderResolution );\n\t},\n\n\tinit: function() {\n\n\t\tif(_isOpen || _isDestroying) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar i;\n\n\t\tself.framework = framework; // basic functionality\n\t\tself.template = template; // root DOM element of PhotoSwipe\n\t\tself.bg = framework.getChildByClass(template, 'pswp__bg');\n\n\t\t_initalClassName = template.className;\n\t\t_isOpen = true;\n\t\t\t\t\n\t\t_features = framework.detectFeatures();\n\t\t_requestAF = _features.raf;\n\t\t_cancelAF = _features.caf;\n\t\t_transformKey = _features.transform;\n\t\t_oldIE = _features.oldIE;\n\t\t\n\t\tself.scrollWrap = framework.getChildByClass(template, 'pswp__scroll-wrap');\n\t\tself.container = framework.getChildByClass(self.scrollWrap, 'pswp__container');\n\n\t\t_containerStyle = self.container.style; // for fast access\n\n\t\t// Objects that hold slides (there are only 3 in DOM)\n\t\tself.itemHolders = _itemHolders = [\n\t\t\t{el:self.container.children[0] , wrap:0, index: -1},\n\t\t\t{el:self.container.children[1] , wrap:0, index: -1},\n\t\t\t{el:self.container.children[2] , wrap:0, index: -1}\n\t\t];\n\n\t\t// hide nearby item holders until initial zoom animation finishes (to avoid extra Paints)\n\t\t_itemHolders[0].el.style.display = _itemHolders[2].el.style.display = 'none';\n\n\t\t_setupTransforms();\n\n\t\t// Setup global events\n\t\t_globalEventHandlers = {\n\t\t\tresize: self.updateSize,\n\n\t\t\t// Fixes: iOS 10.3 resize event\n\t\t\t// does not update scrollWrap.clientWidth instantly after resize\n\t\t\t// https://github.com/dimsemenov/PhotoSwipe/issues/1315\n\t\t\torientationchange: function() {\n\t\t\t\tclearTimeout(_orientationChangeTimeout);\n\t\t\t\t_orientationChangeTimeout = setTimeout(function() {\n\t\t\t\t\tif(_viewportSize.x !== self.scrollWrap.clientWidth) {\n\t\t\t\t\t\tself.updateSize();\n\t\t\t\t\t}\n\t\t\t\t}, 500);\n\t\t\t},\n\t\t\tscroll: _updatePageScrollOffset,\n\t\t\tkeydown: _onKeyDown,\n\t\t\tclick: _onGlobalClick\n\t\t};\n\n\t\t// disable show/hide effects on old browsers that don't support CSS animations or transforms, \n\t\t// old IOS, Android and Opera mobile. Blackberry seems to work fine, even older models.\n\t\tvar oldPhone = _features.isOldIOSPhone || _features.isOldAndroid || _features.isMobileOpera;\n\t\tif(!_features.animationName || !_features.transform || oldPhone) {\n\t\t\t_options.showAnimationDuration = _options.hideAnimationDuration = 0;\n\t\t}\n\n\t\t// init modules\n\t\tfor(i = 0; i < _modules.length; i++) {\n\t\t\tself['init' + _modules[i]]();\n\t\t}\n\t\t\n\t\t// init\n\t\tif(UiClass) {\n\t\t\tvar ui = self.ui = new UiClass(self, framework);\n\t\t\tui.init();\n\t\t}\n\n\t\t_shout('firstUpdate');\n\t\t_currentItemIndex = _currentItemIndex || _options.index || 0;\n\t\t// validate index\n\t\tif( isNaN(_currentItemIndex) || _currentItemIndex < 0 || _currentItemIndex >= _getNumItems() ) {\n\t\t\t_currentItemIndex = 0;\n\t\t}\n\t\tself.currItem = _getItemAt( _currentItemIndex );\n\n\t\t\n\t\tif(_features.isOldIOSPhone || _features.isOldAndroid) {\n\t\t\t_isFixedPosition = false;\n\t\t}\n\t\t\n\t\ttemplate.setAttribute('aria-hidden', 'false');\n\t\tif(_options.modal) {\n\t\t\tif(!_isFixedPosition) {\n\t\t\t\ttemplate.style.position = 'absolute';\n\t\t\t\ttemplate.style.top = framework.getScrollY() + 'px';\n\t\t\t} else {\n\t\t\t\ttemplate.style.position = 'fixed';\n\t\t\t}\n\t\t}\n\n\t\tif(_currentWindowScrollY === undefined) {\n\t\t\t_shout('initialLayout');\n\t\t\t_currentWindowScrollY = _initalWindowScrollY = framework.getScrollY();\n\t\t}\n\t\t\n\t\t// add classes to root element of PhotoSwipe\n\t\tvar rootClasses = 'pswp--open ';\n\t\tif(_options.mainClass) {\n\t\t\trootClasses += _options.mainClass + ' ';\n\t\t}\n\t\tif(_options.showHideOpacity) {\n\t\t\trootClasses += 'pswp--animate_opacity ';\n\t\t}\n\t\trootClasses += _likelyTouchDevice ? 'pswp--touch' : 'pswp--notouch';\n\t\trootClasses += _features.animationName ? ' pswp--css_animation' : '';\n\t\trootClasses += _features.svg ? ' pswp--svg' : '';\n\t\tframework.addClass(template, rootClasses);\n\n\t\tself.updateSize();\n\n\t\t// initial update\n\t\t_containerShiftIndex = -1;\n\t\t_indexDiff = null;\n\t\tfor(i = 0; i < NUM_HOLDERS; i++) {\n\t\t\t_setTranslateX( (i+_containerShiftIndex) * _slideSize.x, _itemHolders[i].el.style);\n\t\t}\n\n\t\tif(!_oldIE) {\n\t\t\tframework.bind(self.scrollWrap, _downEvents, self); // no dragging for old IE\n\t\t}\t\n\n\t\t_listen('initialZoomInEnd', function() {\n\t\t\tself.setContent(_itemHolders[0], _currentItemIndex-1);\n\t\t\tself.setContent(_itemHolders[2], _currentItemIndex+1);\n\n\t\t\t_itemHolders[0].el.style.display = _itemHolders[2].el.style.display = 'block';\n\n\t\t\tif(_options.focus) {\n\t\t\t\t// focus causes layout, \n\t\t\t\t// which causes lag during the animation, \n\t\t\t\t// that's why we delay it untill the initial zoom transition ends\n\t\t\t\ttemplate.focus();\n\t\t\t}\n\t\t\t \n\n\t\t\t_bindEvents();\n\t\t});\n\n\t\t// set content for center slide (first time)\n\t\tself.setContent(_itemHolders[1], _currentItemIndex);\n\t\t\n\t\tself.updateCurrItem();\n\n\t\t_shout('afterInit');\n\n\t\tif(!_isFixedPosition) {\n\n\t\t\t// On all versions of iOS lower than 8.0, we check size of viewport every second.\n\t\t\t// \n\t\t\t// This is done to detect when Safari top & bottom bars appear, \n\t\t\t// as this action doesn't trigger any events (like resize). \n\t\t\t// \n\t\t\t// On iOS8 they fixed this.\n\t\t\t// \n\t\t\t// 10 Nov 2014: iOS 7 usage ~40%. iOS 8 usage 56%.\n\t\t\t\n\t\t\t_updateSizeInterval = setInterval(function() {\n\t\t\t\tif(!_numAnimations && !_isDragging && !_isZooming && (_currZoomLevel === self.currItem.initialZoomLevel) ) {\n\t\t\t\t\tself.updateSize();\n\t\t\t\t}\n\t\t\t}, 1000);\n\t\t}\n\n\t\tframework.addClass(template, 'pswp--visible');\n\t},\n\n\t// Close the gallery, then destroy it\n\tclose: function() {\n\t\tif(!_isOpen) {\n\t\t\treturn;\n\t\t}\n\n\t\t_isOpen = false;\n\t\t_isDestroying = true;\n\t\t_shout('close');\n\t\t_unbindEvents();\n\n\t\t_showOrHide(self.currItem, null, true, self.destroy);\n\t},\n\n\t// destroys the gallery (unbinds events, cleans up intervals and timeouts to avoid memory leaks)\n\tdestroy: function() {\n\t\t_shout('destroy');\n\n\t\tif(_showOrHideTimeout) {\n\t\t\tclearTimeout(_showOrHideTimeout);\n\t\t}\n\t\t\n\t\ttemplate.setAttribute('aria-hidden', 'true');\n\t\ttemplate.className = _initalClassName;\n\n\t\tif(_updateSizeInterval) {\n\t\t\tclearInterval(_updateSizeInterval);\n\t\t}\n\n\t\tframework.unbind(self.scrollWrap, _downEvents, self);\n\n\t\t// we unbind scroll event at the end, as closing animation may depend on it\n\t\tframework.unbind(window, 'scroll', self);\n\n\t\t_stopDragUpdateLoop();\n\n\t\t_stopAllAnimations();\n\n\t\t_listeners = null;\n\t},\n\n\t/**\n\t * Pan image to position\n\t * @param {Number} x \n\t * @param {Number} y \n\t * @param {Boolean} force Will ignore bounds if set to true.\n\t */\n\tpanTo: function(x,y,force) {\n\t\tif(!force) {\n\t\t\tif(x > _currPanBounds.min.x) {\n\t\t\t\tx = _currPanBounds.min.x;\n\t\t\t} else if(x < _currPanBounds.max.x) {\n\t\t\t\tx = _currPanBounds.max.x;\n\t\t\t}\n\n\t\t\tif(y > _currPanBounds.min.y) {\n\t\t\t\ty = _currPanBounds.min.y;\n\t\t\t} else if(y < _currPanBounds.max.y) {\n\t\t\t\ty = _currPanBounds.max.y;\n\t\t\t}\n\t\t}\n\t\t\n\t\t_panOffset.x = x;\n\t\t_panOffset.y = y;\n\t\t_applyCurrentZoomPan();\n\t},\n\t\n\thandleEvent: function (e) {\n\t\te = e || window.event;\n\t\tif(_globalEventHandlers[e.type]) {\n\t\t\t_globalEventHandlers[e.type](e);\n\t\t}\n\t},\n\n\n\tgoTo: function(index) {\n\n\t\tindex = _getLoopedId(index);\n\n\t\tvar diff = index - _currentItemIndex;\n\t\t_indexDiff = diff;\n\n\t\t_currentItemIndex = index;\n\t\tself.currItem = _getItemAt( _currentItemIndex );\n\t\t_currPositionIndex -= diff;\n\t\t\n\t\t_moveMainScroll(_slideSize.x * _currPositionIndex);\n\t\t\n\n\t\t_stopAllAnimations();\n\t\t_mainScrollAnimating = false;\n\n\t\tself.updateCurrItem();\n\t},\n\tnext: function() {\n\t\tself.goTo( _currentItemIndex + 1);\n\t},\n\tprev: function() {\n\t\tself.goTo( _currentItemIndex - 1);\n\t},\n\n\t// update current zoom/pan objects\n\tupdateCurrZoomItem: function(emulateSetContent) {\n\t\tif(emulateSetContent) {\n\t\t\t_shout('beforeChange', 0);\n\t\t}\n\n\t\t// itemHolder[1] is middle (current) item\n\t\tif(_itemHolders[1].el.children.length) {\n\t\t\tvar zoomElement = _itemHolders[1].el.children[0];\n\t\t\tif( framework.hasClass(zoomElement, 'pswp__zoom-wrap') ) {\n\t\t\t\t_currZoomElementStyle = zoomElement.style;\n\t\t\t} else {\n\t\t\t\t_currZoomElementStyle = null;\n\t\t\t}\n\t\t} else {\n\t\t\t_currZoomElementStyle = null;\n\t\t}\n\t\t\n\t\t_currPanBounds = self.currItem.bounds;\t\n\t\t_startZoomLevel = _currZoomLevel = self.currItem.initialZoomLevel;\n\n\t\t_panOffset.x = _currPanBounds.center.x;\n\t\t_panOffset.y = _currPanBounds.center.y;\n\n\t\tif(emulateSetContent) {\n\t\t\t_shout('afterChange');\n\t\t}\n\t},\n\n\n\tinvalidateCurrItems: function() {\n\t\t_itemsNeedUpdate = true;\n\t\tfor(var i = 0; i < NUM_HOLDERS; i++) {\n\t\t\tif( _itemHolders[i].item ) {\n\t\t\t\t_itemHolders[i].item.needsUpdate = true;\n\t\t\t}\n\t\t}\n\t},\n\n\tupdateCurrItem: function(beforeAnimation) {\n\n\t\tif(_indexDiff === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar diffAbs = Math.abs(_indexDiff),\n\t\t\ttempHolder;\n\n\t\tif(beforeAnimation && diffAbs < 2) {\n\t\t\treturn;\n\t\t}\n\n\n\t\tself.currItem = _getItemAt( _currentItemIndex );\n\t\t_renderMaxResolution = false;\n\t\t\n\t\t_shout('beforeChange', _indexDiff);\n\n\t\tif(diffAbs >= NUM_HOLDERS) {\n\t\t\t_containerShiftIndex += _indexDiff + (_indexDiff > 0 ? -NUM_HOLDERS : NUM_HOLDERS);\n\t\t\tdiffAbs = NUM_HOLDERS;\n\t\t}\n\t\tfor(var i = 0; i < diffAbs; i++) {\n\t\t\tif(_indexDiff > 0) {\n\t\t\t\ttempHolder = _itemHolders.shift();\n\t\t\t\t_itemHolders[NUM_HOLDERS-1] = tempHolder; // move first to last\n\n\t\t\t\t_containerShiftIndex++;\n\t\t\t\t_setTranslateX( (_containerShiftIndex+2) * _slideSize.x, tempHolder.el.style);\n\t\t\t\tself.setContent(tempHolder, _currentItemIndex - diffAbs + i + 1 + 1);\n\t\t\t} else {\n\t\t\t\ttempHolder = _itemHolders.pop();\n\t\t\t\t_itemHolders.unshift( tempHolder ); // move last to first\n\n\t\t\t\t_containerShiftIndex--;\n\t\t\t\t_setTranslateX( _containerShiftIndex * _slideSize.x, tempHolder.el.style);\n\t\t\t\tself.setContent(tempHolder, _currentItemIndex + diffAbs - i - 1 - 1);\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t\t// reset zoom/pan on previous item\n\t\tif(_currZoomElementStyle && Math.abs(_indexDiff) === 1) {\n\n\t\t\tvar prevItem = _getItemAt(_prevItemIndex);\n\t\t\tif(prevItem.initialZoomLevel !== _currZoomLevel) {\n\t\t\t\t_calculateItemSize(prevItem , _viewportSize );\n\t\t\t\t_setImageSize(prevItem);\n\t\t\t\t_applyZoomPanToItem( prevItem ); \t\t\t\t\n\t\t\t}\n\n\t\t}\n\n\t\t// reset diff after update\n\t\t_indexDiff = 0;\n\n\t\tself.updateCurrZoomItem();\n\n\t\t_prevItemIndex = _currentItemIndex;\n\n\t\t_shout('afterChange');\n\t\t\n\t},\n\n\n\n\tupdateSize: function(force) {\n\t\t\n\t\tif(!_isFixedPosition && _options.modal) {\n\t\t\tvar windowScrollY = framework.getScrollY();\n\t\t\tif(_currentWindowScrollY !== windowScrollY) {\n\t\t\t\ttemplate.style.top = windowScrollY + 'px';\n\t\t\t\t_currentWindowScrollY = windowScrollY;\n\t\t\t}\n\t\t\tif(!force && _windowVisibleSize.x === window.innerWidth && _windowVisibleSize.y === window.innerHeight) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t_windowVisibleSize.x = window.innerWidth;\n\t\t\t_windowVisibleSize.y = window.innerHeight;\n\n\t\t\t//template.style.width = _windowVisibleSize.x + 'px';\n\t\t\ttemplate.style.height = _windowVisibleSize.y + 'px';\n\t\t}\n\n\n\n\t\t_viewportSize.x = self.scrollWrap.clientWidth;\n\t\t_viewportSize.y = self.scrollWrap.clientHeight;\n\n\t\t_updatePageScrollOffset();\n\n\t\t_slideSize.x = _viewportSize.x + Math.round(_viewportSize.x * _options.spacing);\n\t\t_slideSize.y = _viewportSize.y;\n\n\t\t_moveMainScroll(_slideSize.x * _currPositionIndex);\n\n\t\t_shout('beforeResize'); // even may be used for example to switch image sources\n\n\n\t\t// don't re-calculate size on inital size update\n\t\tif(_containerShiftIndex !== undefined) {\n\n\t\t\tvar holder,\n\t\t\t\titem,\n\t\t\t\thIndex;\n\n\t\t\tfor(var i = 0; i < NUM_HOLDERS; i++) {\n\t\t\t\tholder = _itemHolders[i];\n\t\t\t\t_setTranslateX( (i+_containerShiftIndex) * _slideSize.x, holder.el.style);\n\n\t\t\t\thIndex = _currentItemIndex+i-1;\n\n\t\t\t\tif(_options.loop && _getNumItems() > 2) {\n\t\t\t\t\thIndex = _getLoopedId(hIndex);\n\t\t\t\t}\n\n\t\t\t\t// update zoom level on items and refresh source (if needsUpdate)\n\t\t\t\titem = _getItemAt( hIndex );\n\n\t\t\t\t// re-render gallery item if `needsUpdate`,\n\t\t\t\t// or doesn't have `bounds` (entirely new slide object)\n\t\t\t\tif( item && (_itemsNeedUpdate || item.needsUpdate || !item.bounds) ) {\n\n\t\t\t\t\tself.cleanSlide( item );\n\t\t\t\t\t\n\t\t\t\t\tself.setContent( holder, hIndex );\n\n\t\t\t\t\t// if \"center\" slide\n\t\t\t\t\tif(i === 1) {\n\t\t\t\t\t\tself.currItem = item;\n\t\t\t\t\t\tself.updateCurrZoomItem(true);\n\t\t\t\t\t}\n\n\t\t\t\t\titem.needsUpdate = false;\n\n\t\t\t\t} else if(holder.index === -1 && hIndex >= 0) {\n\t\t\t\t\t// add content first time\n\t\t\t\t\tself.setContent( holder, hIndex );\n\t\t\t\t}\n\t\t\t\tif(item && item.container) {\n\t\t\t\t\t_calculateItemSize(item, _viewportSize);\n\t\t\t\t\t_setImageSize(item);\n\t\t\t\t\t_applyZoomPanToItem( item );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t_itemsNeedUpdate = false;\n\t\t}\t\n\n\t\t_startZoomLevel = _currZoomLevel = self.currItem.initialZoomLevel;\n\t\t_currPanBounds = self.currItem.bounds;\n\n\t\tif(_currPanBounds) {\n\t\t\t_panOffset.x = _currPanBounds.center.x;\n\t\t\t_panOffset.y = _currPanBounds.center.y;\n\t\t\t_applyCurrentZoomPan( true );\n\t\t}\n\t\t\n\t\t_shout('resize');\n\t},\n\t\n\t// Zoom current item to\n\tzoomTo: function(destZoomLevel, centerPoint, speed, easingFn, updateFn) {\n\t\t/*\n\t\t\tif(destZoomLevel === 'fit') {\n\t\t\t\tdestZoomLevel = self.currItem.fitRatio;\n\t\t\t} else if(destZoomLevel === 'fill') {\n\t\t\t\tdestZoomLevel = self.currItem.fillRatio;\n\t\t\t}\n\t\t*/\n\n\t\tif(centerPoint) {\n\t\t\t_startZoomLevel = _currZoomLevel;\n\t\t\t_midZoomPoint.x = Math.abs(centerPoint.x) - _panOffset.x ;\n\t\t\t_midZoomPoint.y = Math.abs(centerPoint.y) - _panOffset.y ;\n\t\t\t_equalizePoints(_startPanOffset, _panOffset);\n\t\t}\n\n\t\tvar destPanBounds = _calculatePanBounds(destZoomLevel, false),\n\t\t\tdestPanOffset = {};\n\n\t\t_modifyDestPanOffset('x', destPanBounds, destPanOffset, destZoomLevel);\n\t\t_modifyDestPanOffset('y', destPanBounds, destPanOffset, destZoomLevel);\n\n\t\tvar initialZoomLevel = _currZoomLevel;\n\t\tvar initialPanOffset = {\n\t\t\tx: _panOffset.x,\n\t\t\ty: _panOffset.y\n\t\t};\n\n\t\t_roundPoint(destPanOffset);\n\n\t\tvar onUpdate = function(now) {\n\t\t\tif(now === 1) {\n\t\t\t\t_currZoomLevel = destZoomLevel;\n\t\t\t\t_panOffset.x = destPanOffset.x;\n\t\t\t\t_panOffset.y = destPanOffset.y;\n\t\t\t} else {\n\t\t\t\t_currZoomLevel = (destZoomLevel - initialZoomLevel) * now + initialZoomLevel;\n\t\t\t\t_panOffset.x = (destPanOffset.x - initialPanOffset.x) * now + initialPanOffset.x;\n\t\t\t\t_panOffset.y = (destPanOffset.y - initialPanOffset.y) * now + initialPanOffset.y;\n\t\t\t}\n\n\t\t\tif(updateFn) {\n\t\t\t\tupdateFn(now);\n\t\t\t}\n\n\t\t\t_applyCurrentZoomPan( now === 1 );\n\t\t};\n\n\t\tif(speed) {\n\t\t\t_animateProp('customZoomTo', 0, 1, speed, easingFn || framework.easing.sine.inOut, onUpdate);\n\t\t} else {\n\t\t\tonUpdate(1);\n\t\t}\n\t}\n\n\n};\n\n\n/*>>core*/\n\n/*>>gestures*/\n/**\n * Mouse/touch/pointer event handlers.\n * \n * separated from @core.js for readability\n */\n\nvar MIN_SWIPE_DISTANCE = 30,\n\tDIRECTION_CHECK_OFFSET = 10; // amount of pixels to drag to determine direction of swipe\n\nvar _gestureStartTime,\n\t_gestureCheckSpeedTime,\n\n\t// pool of objects that are used during dragging of zooming\n\tp = {}, // first point\n\tp2 = {}, // second point (for zoom gesture)\n\tdelta = {},\n\t_currPoint = {},\n\t_startPoint = {},\n\t_currPointers = [],\n\t_startMainScrollPos = {},\n\t_releaseAnimData,\n\t_posPoints = [], // array of points during dragging, used to determine type of gesture\n\t_tempPoint = {},\n\n\t_isZoomingIn,\n\t_verticalDragInitiated,\n\t_oldAndroidTouchEndTimeout,\n\t_currZoomedItemIndex = 0,\n\t_centerPoint = _getEmptyPoint(),\n\t_lastReleaseTime = 0,\n\t_isDragging, // at least one pointer is down\n\t_isMultitouch, // at least two _pointers are down\n\t_zoomStarted, // zoom level changed during zoom gesture\n\t_moved,\n\t_dragAnimFrame,\n\t_mainScrollShifted,\n\t_currentPoints, // array of current touch points\n\t_isZooming,\n\t_currPointsDistance,\n\t_startPointsDistance,\n\t_currPanBounds,\n\t_mainScrollPos = _getEmptyPoint(),\n\t_currZoomElementStyle,\n\t_mainScrollAnimating, // true, if animation after swipe gesture is running\n\t_midZoomPoint = _getEmptyPoint(),\n\t_currCenterPoint = _getEmptyPoint(),\n\t_direction,\n\t_isFirstMove,\n\t_opacityChanged,\n\t_bgOpacity,\n\t_wasOverInitialZoom,\n\n\t_isEqualPoints = function(p1, p2) {\n\t\treturn p1.x === p2.x && p1.y === p2.y;\n\t},\n\t_isNearbyPoints = function(touch0, touch1) {\n\t\treturn Math.abs(touch0.x - touch1.x) < DOUBLE_TAP_RADIUS && Math.abs(touch0.y - touch1.y) < DOUBLE_TAP_RADIUS;\n\t},\n\t_calculatePointsDistance = function(p1, p2) {\n\t\t_tempPoint.x = Math.abs( p1.x - p2.x );\n\t\t_tempPoint.y = Math.abs( p1.y - p2.y );\n\t\treturn Math.sqrt(_tempPoint.x * _tempPoint.x + _tempPoint.y * _tempPoint.y);\n\t},\n\t_stopDragUpdateLoop = function() {\n\t\tif(_dragAnimFrame) {\n\t\t\t_cancelAF(_dragAnimFrame);\n\t\t\t_dragAnimFrame = null;\n\t\t}\n\t},\n\t_dragUpdateLoop = function() {\n\t\tif(_isDragging) {\n\t\t\t_dragAnimFrame = _requestAF(_dragUpdateLoop);\n\t\t\t_renderMovement();\n\t\t}\n\t},\n\t_canPan = function() {\n\t\treturn !(_options.scaleMode === 'fit' && _currZoomLevel === self.currItem.initialZoomLevel);\n\t},\n\t\n\t// find the closest parent DOM element\n\t_closestElement = function(el, fn) {\n\t \tif(!el || el === document) {\n\t \t\treturn false;\n\t \t}\n\n\t \t// don't search elements above pswp__scroll-wrap\n\t \tif(el.getAttribute('class') && el.getAttribute('class').indexOf('pswp__scroll-wrap') > -1 ) {\n\t \t\treturn false;\n\t \t}\n\n\t \tif( fn(el) ) {\n\t \t\treturn el;\n\t \t}\n\n\t \treturn _closestElement(el.parentNode, fn);\n\t},\n\n\t_preventObj = {},\n\t_preventDefaultEventBehaviour = function(e, isDown) {\n\t _preventObj.prevent = !_closestElement(e.target, _options.isClickableElement);\n\n\t\t_shout('preventDragEvent', e, isDown, _preventObj);\n\t\treturn _preventObj.prevent;\n\n\t},\n\t_convertTouchToPoint = function(touch, p) {\n\t\tp.x = touch.pageX;\n\t\tp.y = touch.pageY;\n\t\tp.id = touch.identifier;\n\t\treturn p;\n\t},\n\t_findCenterOfPoints = function(p1, p2, pCenter) {\n\t\tpCenter.x = (p1.x + p2.x) * 0.5;\n\t\tpCenter.y = (p1.y + p2.y) * 0.5;\n\t},\n\t_pushPosPoint = function(time, x, y) {\n\t\tif(time - _gestureCheckSpeedTime > 50) {\n\t\t\tvar o = _posPoints.length > 2 ? _posPoints.shift() : {};\n\t\t\to.x = x;\n\t\t\to.y = y; \n\t\t\t_posPoints.push(o);\n\t\t\t_gestureCheckSpeedTime = time;\n\t\t}\n\t},\n\n\t_calculateVerticalDragOpacityRatio = function() {\n\t\tvar yOffset = _panOffset.y - self.currItem.initialPosition.y; // difference between initial and current position\n\t\treturn 1 - Math.abs( yOffset / (_viewportSize.y / 2) );\n\t},\n\n\t\n\t// points pool, reused during touch events\n\t_ePoint1 = {},\n\t_ePoint2 = {},\n\t_tempPointsArr = [],\n\t_tempCounter,\n\t_getTouchPoints = function(e) {\n\t\t// clean up previous points, without recreating array\n\t\twhile(_tempPointsArr.length > 0) {\n\t\t\t_tempPointsArr.pop();\n\t\t}\n\n\t\tif(!_pointerEventEnabled) {\n\t\t\tif(e.type.indexOf('touch') > -1) {\n\n\t\t\t\tif(e.touches && e.touches.length > 0) {\n\t\t\t\t\t_tempPointsArr[0] = _convertTouchToPoint(e.touches[0], _ePoint1);\n\t\t\t\t\tif(e.touches.length > 1) {\n\t\t\t\t\t\t_tempPointsArr[1] = _convertTouchToPoint(e.touches[1], _ePoint2);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} else {\n\t\t\t\t_ePoint1.x = e.pageX;\n\t\t\t\t_ePoint1.y = e.pageY;\n\t\t\t\t_ePoint1.id = '';\n\t\t\t\t_tempPointsArr[0] = _ePoint1;//_ePoint1;\n\t\t\t}\n\t\t} else {\n\t\t\t_tempCounter = 0;\n\t\t\t// we can use forEach, as pointer events are supported only in modern browsers\n\t\t\t_currPointers.forEach(function(p) {\n\t\t\t\tif(_tempCounter === 0) {\n\t\t\t\t\t_tempPointsArr[0] = p;\n\t\t\t\t} else if(_tempCounter === 1) {\n\t\t\t\t\t_tempPointsArr[1] = p;\n\t\t\t\t}\n\t\t\t\t_tempCounter++;\n\n\t\t\t});\n\t\t}\n\t\treturn _tempPointsArr;\n\t},\n\n\t_panOrMoveMainScroll = function(axis, delta) {\n\n\t\tvar panFriction,\n\t\t\toverDiff = 0,\n\t\t\tnewOffset = _panOffset[axis] + delta[axis],\n\t\t\tstartOverDiff,\n\t\t\tdir = delta[axis] > 0,\n\t\t\tnewMainScrollPosition = _mainScrollPos.x + delta.x,\n\t\t\tmainScrollDiff = _mainScrollPos.x - _startMainScrollPos.x,\n\t\t\tnewPanPos,\n\t\t\tnewMainScrollPos;\n\n\t\t// calculate fdistance over the bounds and friction\n\t\tif(newOffset > _currPanBounds.min[axis] || newOffset < _currPanBounds.max[axis]) {\n\t\t\tpanFriction = _options.panEndFriction;\n\t\t\t// Linear increasing of friction, so at 1/4 of viewport it's at max value. \n\t\t\t// Looks not as nice as was expected. Left for history.\n\t\t\t// panFriction = (1 - (_panOffset[axis] + delta[axis] + panBounds.min[axis]) / (_viewportSize[axis] / 4) );\n\t\t} else {\n\t\t\tpanFriction = 1;\n\t\t}\n\t\t\n\t\tnewOffset = _panOffset[axis] + delta[axis] * panFriction;\n\n\t\t// move main scroll or start panning\n\t\tif(_options.allowPanToNext || _currZoomLevel === self.currItem.initialZoomLevel) {\n\n\n\t\t\tif(!_currZoomElementStyle) {\n\t\t\t\t\n\t\t\t\tnewMainScrollPos = newMainScrollPosition;\n\n\t\t\t} else if(_direction === 'h' && axis === 'x' && !_zoomStarted ) {\n\t\t\t\t\n\t\t\t\tif(dir) {\n\t\t\t\t\tif(newOffset > _currPanBounds.min[axis]) {\n\t\t\t\t\t\tpanFriction = _options.panEndFriction;\n\t\t\t\t\t\toverDiff = _currPanBounds.min[axis] - newOffset;\n\t\t\t\t\t\tstartOverDiff = _currPanBounds.min[axis] - _startPanOffset[axis];\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t// drag right\n\t\t\t\t\tif( (startOverDiff <= 0 || mainScrollDiff < 0) && _getNumItems() > 1 ) {\n\t\t\t\t\t\tnewMainScrollPos = newMainScrollPosition;\n\t\t\t\t\t\tif(mainScrollDiff < 0 && newMainScrollPosition > _startMainScrollPos.x) {\n\t\t\t\t\t\t\tnewMainScrollPos = _startMainScrollPos.x;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif(_currPanBounds.min.x !== _currPanBounds.max.x) {\n\t\t\t\t\t\t\tnewPanPos = newOffset;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif(newOffset < _currPanBounds.max[axis] ) {\n\t\t\t\t\t\tpanFriction =_options.panEndFriction;\n\t\t\t\t\t\toverDiff = newOffset - _currPanBounds.max[axis];\n\t\t\t\t\t\tstartOverDiff = _startPanOffset[axis] - _currPanBounds.max[axis];\n\t\t\t\t\t}\n\n\t\t\t\t\tif( (startOverDiff <= 0 || mainScrollDiff > 0) && _getNumItems() > 1 ) {\n\t\t\t\t\t\tnewMainScrollPos = newMainScrollPosition;\n\n\t\t\t\t\t\tif(mainScrollDiff > 0 && newMainScrollPosition < _startMainScrollPos.x) {\n\t\t\t\t\t\t\tnewMainScrollPos = _startMainScrollPos.x;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif(_currPanBounds.min.x !== _currPanBounds.max.x) {\n\t\t\t\t\t\t\tnewPanPos = newOffset;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\n\t\t\t\t//\n\t\t\t}\n\n\t\t\tif(axis === 'x') {\n\n\t\t\t\tif(newMainScrollPos !== undefined) {\n\t\t\t\t\t_moveMainScroll(newMainScrollPos, true);\n\t\t\t\t\tif(newMainScrollPos === _startMainScrollPos.x) {\n\t\t\t\t\t\t_mainScrollShifted = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t_mainScrollShifted = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(_currPanBounds.min.x !== _currPanBounds.max.x) {\n\t\t\t\t\tif(newPanPos !== undefined) {\n\t\t\t\t\t\t_panOffset.x = newPanPos;\n\t\t\t\t\t} else if(!_mainScrollShifted) {\n\t\t\t\t\t\t_panOffset.x += delta.x * panFriction;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn newMainScrollPos !== undefined;\n\t\t\t}\n\n\t\t}\n\n\t\tif(!_mainScrollAnimating) {\n\t\t\t\n\t\t\tif(!_mainScrollShifted) {\n\t\t\t\tif(_currZoomLevel > self.currItem.fitRatio) {\n\t\t\t\t\t_panOffset[axis] += delta[axis] * panFriction;\n\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t\n\t\t}\n\t\t\n\t},\n\n\t// Pointerdown/touchstart/mousedown handler\n\t_onDragStart = function(e) {\n\n\t\t// Allow dragging only via left mouse button.\n\t\t// As this handler is not added in IE8 - we ignore e.which\n\t\t// \n\t\t// http://www.quirksmode.org/js/events_properties.html\n\t\t// https://developer.mozilla.org/en-US/docs/Web/API/event.button\n\t\tif(e.type === 'mousedown' && e.button > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif(_initialZoomRunning) {\n\t\t\te.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tif(_oldAndroidTouchEndTimeout && e.type === 'mousedown') {\n\t\t\treturn;\n\t\t}\n\n\t\tif(_preventDefaultEventBehaviour(e, true)) {\n\t\t\te.preventDefault();\n\t\t}\n\n\n\n\t\t_shout('pointerDown');\n\n\t\tif(_pointerEventEnabled) {\n\t\t\tvar pointerIndex = framework.arraySearch(_currPointers, e.pointerId, 'id');\n\t\t\tif(pointerIndex < 0) {\n\t\t\t\tpointerIndex = _currPointers.length;\n\t\t\t}\n\t\t\t_currPointers[pointerIndex] = {x:e.pageX, y:e.pageY, id: e.pointerId};\n\t\t}\n\t\t\n\n\n\t\tvar startPointsList = _getTouchPoints(e),\n\t\t\tnumPoints = startPointsList.length;\n\n\t\t_currentPoints = null;\n\n\t\t_stopAllAnimations();\n\n\t\t// init drag\n\t\tif(!_isDragging || numPoints === 1) {\n\n\t\t\t\n\n\t\t\t_isDragging = _isFirstMove = true;\n\t\t\tframework.bind(window, _upMoveEvents, self);\n\n\t\t\t_isZoomingIn = \n\t\t\t\t_wasOverInitialZoom = \n\t\t\t\t_opacityChanged = \n\t\t\t\t_verticalDragInitiated = \n\t\t\t\t_mainScrollShifted = \n\t\t\t\t_moved = \n\t\t\t\t_isMultitouch = \n\t\t\t\t_zoomStarted = false;\n\n\t\t\t_direction = null;\n\n\t\t\t_shout('firstTouchStart', startPointsList);\n\n\t\t\t_equalizePoints(_startPanOffset, _panOffset);\n\n\t\t\t_currPanDist.x = _currPanDist.y = 0;\n\t\t\t_equalizePoints(_currPoint, startPointsList[0]);\n\t\t\t_equalizePoints(_startPoint, _currPoint);\n\n\t\t\t//_equalizePoints(_startMainScrollPos, _mainScrollPos);\n\t\t\t_startMainScrollPos.x = _slideSize.x * _currPositionIndex;\n\n\t\t\t_posPoints = [{\n\t\t\t\tx: _currPoint.x,\n\t\t\t\ty: _currPoint.y\n\t\t\t}];\n\n\t\t\t_gestureCheckSpeedTime = _gestureStartTime = _getCurrentTime();\n\n\t\t\t//_mainScrollAnimationEnd(true);\n\t\t\t_calculatePanBounds( _currZoomLevel, true );\n\t\t\t\n\t\t\t// Start rendering\n\t\t\t_stopDragUpdateLoop();\n\t\t\t_dragUpdateLoop();\n\t\t\t\n\t\t}\n\n\t\t// init zoom\n\t\tif(!_isZooming && numPoints > 1 && !_mainScrollAnimating && !_mainScrollShifted) {\n\t\t\t_startZoomLevel = _currZoomLevel;\n\t\t\t_zoomStarted = false; // true if zoom changed at least once\n\n\t\t\t_isZooming = _isMultitouch = true;\n\t\t\t_currPanDist.y = _currPanDist.x = 0;\n\n\t\t\t_equalizePoints(_startPanOffset, _panOffset);\n\n\t\t\t_equalizePoints(p, startPointsList[0]);\n\t\t\t_equalizePoints(p2, startPointsList[1]);\n\n\t\t\t_findCenterOfPoints(p, p2, _currCenterPoint);\n\n\t\t\t_midZoomPoint.x = Math.abs(_currCenterPoint.x) - _panOffset.x;\n\t\t\t_midZoomPoint.y = Math.abs(_currCenterPoint.y) - _panOffset.y;\n\t\t\t_currPointsDistance = _startPointsDistance = _calculatePointsDistance(p, p2);\n\t\t}\n\n\n\t},\n\n\t// Pointermove/touchmove/mousemove handler\n\t_onDragMove = function(e) {\n\n\t\te.preventDefault();\n\n\t\tif(_pointerEventEnabled) {\n\t\t\tvar pointerIndex = framework.arraySearch(_currPointers, e.pointerId, 'id');\n\t\t\tif(pointerIndex > -1) {\n\t\t\t\tvar p = _currPointers[pointerIndex];\n\t\t\t\tp.x = e.pageX;\n\t\t\t\tp.y = e.pageY; \n\t\t\t}\n\t\t}\n\n\t\tif(_isDragging) {\n\t\t\tvar touchesList = _getTouchPoints(e);\n\t\t\tif(!_direction && !_moved && !_isZooming) {\n\n\t\t\t\tif(_mainScrollPos.x !== _slideSize.x * _currPositionIndex) {\n\t\t\t\t\t// if main scroll position is shifted – direction is always horizontal\n\t\t\t\t\t_direction = 'h';\n\t\t\t\t} else {\n\t\t\t\t\tvar diff = Math.abs(touchesList[0].x - _currPoint.x) - Math.abs(touchesList[0].y - _currPoint.y);\n\t\t\t\t\t// check the direction of movement\n\t\t\t\t\tif(Math.abs(diff) >= DIRECTION_CHECK_OFFSET) {\n\t\t\t\t\t\t_direction = diff > 0 ? 'h' : 'v';\n\t\t\t\t\t\t_currentPoints = touchesList;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} else {\n\t\t\t\t_currentPoints = touchesList;\n\t\t\t}\n\t\t}\t\n\t},\n\t// \n\t_renderMovement = function() {\n\n\t\tif(!_currentPoints) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar numPoints = _currentPoints.length;\n\n\t\tif(numPoints === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\t_equalizePoints(p, _currentPoints[0]);\n\n\t\tdelta.x = p.x - _currPoint.x;\n\t\tdelta.y = p.y - _currPoint.y;\n\n\t\tif(_isZooming && numPoints > 1) {\n\t\t\t// Handle behaviour for more than 1 point\n\n\t\t\t_currPoint.x = p.x;\n\t\t\t_currPoint.y = p.y;\n\t\t\n\t\t\t// check if one of two points changed\n\t\t\tif( !delta.x && !delta.y && _isEqualPoints(_currentPoints[1], p2) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_equalizePoints(p2, _currentPoints[1]);\n\n\n\t\t\tif(!_zoomStarted) {\n\t\t\t\t_zoomStarted = true;\n\t\t\t\t_shout('zoomGestureStarted');\n\t\t\t}\n\t\t\t\n\t\t\t// Distance between two points\n\t\t\tvar pointsDistance = _calculatePointsDistance(p,p2);\n\n\t\t\tvar zoomLevel = _calculateZoomLevel(pointsDistance);\n\n\t\t\t// slightly over the of initial zoom level\n\t\t\tif(zoomLevel > self.currItem.initialZoomLevel + self.currItem.initialZoomLevel / 15) {\n\t\t\t\t_wasOverInitialZoom = true;\n\t\t\t}\n\n\t\t\t// Apply the friction if zoom level is out of the bounds\n\t\t\tvar zoomFriction = 1,\n\t\t\t\tminZoomLevel = _getMinZoomLevel(),\n\t\t\t\tmaxZoomLevel = _getMaxZoomLevel();\n\n\t\t\tif ( zoomLevel < minZoomLevel ) {\n\t\t\t\t\n\t\t\t\tif(_options.pinchToClose && !_wasOverInitialZoom && _startZoomLevel <= self.currItem.initialZoomLevel) {\n\t\t\t\t\t// fade out background if zooming out\n\t\t\t\t\tvar minusDiff = minZoomLevel - zoomLevel;\n\t\t\t\t\tvar percent = 1 - minusDiff / (minZoomLevel / 1.2);\n\n\t\t\t\t\t_applyBgOpacity(percent);\n\t\t\t\t\t_shout('onPinchClose', percent);\n\t\t\t\t\t_opacityChanged = true;\n\t\t\t\t} else {\n\t\t\t\t\tzoomFriction = (minZoomLevel - zoomLevel) / minZoomLevel;\n\t\t\t\t\tif(zoomFriction > 1) {\n\t\t\t\t\t\tzoomFriction = 1;\n\t\t\t\t\t}\n\t\t\t\t\tzoomLevel = minZoomLevel - zoomFriction * (minZoomLevel / 3);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} else if ( zoomLevel > maxZoomLevel ) {\n\t\t\t\t// 1.5 - extra zoom level above the max. E.g. if max is x6, real max 6 + 1.5 = 7.5\n\t\t\t\tzoomFriction = (zoomLevel - maxZoomLevel) / ( minZoomLevel * 6 );\n\t\t\t\tif(zoomFriction > 1) {\n\t\t\t\t\tzoomFriction = 1;\n\t\t\t\t}\n\t\t\t\tzoomLevel = maxZoomLevel + zoomFriction * minZoomLevel;\n\t\t\t}\n\n\t\t\tif(zoomFriction < 0) {\n\t\t\t\tzoomFriction = 0;\n\t\t\t}\n\n\t\t\t// distance between touch points after friction is applied\n\t\t\t_currPointsDistance = pointsDistance;\n\n\t\t\t// _centerPoint - The point in the middle of two pointers\n\t\t\t_findCenterOfPoints(p, p2, _centerPoint);\n\t\t\n\t\t\t// paning with two pointers pressed\n\t\t\t_currPanDist.x += _centerPoint.x - _currCenterPoint.x;\n\t\t\t_currPanDist.y += _centerPoint.y - _currCenterPoint.y;\n\t\t\t_equalizePoints(_currCenterPoint, _centerPoint);\n\n\t\t\t_panOffset.x = _calculatePanOffset('x', zoomLevel);\n\t\t\t_panOffset.y = _calculatePanOffset('y', zoomLevel);\n\n\t\t\t_isZoomingIn = zoomLevel > _currZoomLevel;\n\t\t\t_currZoomLevel = zoomLevel;\n\t\t\t_applyCurrentZoomPan();\n\n\t\t} else {\n\n\t\t\t// handle behaviour for one point (dragging or panning)\n\n\t\t\tif(!_direction) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(_isFirstMove) {\n\t\t\t\t_isFirstMove = false;\n\n\t\t\t\t// subtract drag distance that was used during the detection direction \n\n\t\t\t\tif( Math.abs(delta.x) >= DIRECTION_CHECK_OFFSET) {\n\t\t\t\t\tdelta.x -= _currentPoints[0].x - _startPoint.x;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif( Math.abs(delta.y) >= DIRECTION_CHECK_OFFSET) {\n\t\t\t\t\tdelta.y -= _currentPoints[0].y - _startPoint.y;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t_currPoint.x = p.x;\n\t\t\t_currPoint.y = p.y;\n\n\t\t\t// do nothing if pointers position hasn't changed\n\t\t\tif(delta.x === 0 && delta.y === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(_direction === 'v' && _options.closeOnVerticalDrag) {\n\t\t\t\tif(!_canPan()) {\n\t\t\t\t\t_currPanDist.y += delta.y;\n\t\t\t\t\t_panOffset.y += delta.y;\n\n\t\t\t\t\tvar opacityRatio = _calculateVerticalDragOpacityRatio();\n\n\t\t\t\t\t_verticalDragInitiated = true;\n\t\t\t\t\t_shout('onVerticalDrag', opacityRatio);\n\n\t\t\t\t\t_applyBgOpacity(opacityRatio);\n\t\t\t\t\t_applyCurrentZoomPan();\n\t\t\t\t\treturn ;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t_pushPosPoint(_getCurrentTime(), p.x, p.y);\n\n\t\t\t_moved = true;\n\t\t\t_currPanBounds = self.currItem.bounds;\n\t\t\t\n\t\t\tvar mainScrollChanged = _panOrMoveMainScroll('x', delta);\n\t\t\tif(!mainScrollChanged) {\n\t\t\t\t_panOrMoveMainScroll('y', delta);\n\n\t\t\t\t_roundPoint(_panOffset);\n\t\t\t\t_applyCurrentZoomPan();\n\t\t\t}\n\n\t\t}\n\n\t},\n\t\n\t// Pointerup/pointercancel/touchend/touchcancel/mouseup event handler\n\t_onDragRelease = function(e) {\n\n\t\tif(_features.isOldAndroid ) {\n\n\t\t\tif(_oldAndroidTouchEndTimeout && e.type === 'mouseup') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// on Android (v4.1, 4.2, 4.3 & possibly older) \n\t\t\t// ghost mousedown/up event isn't preventable via e.preventDefault,\n\t\t\t// which causes fake mousedown event\n\t\t\t// so we block mousedown/up for 600ms\n\t\t\tif( e.type.indexOf('touch') > -1 ) {\n\t\t\t\tclearTimeout(_oldAndroidTouchEndTimeout);\n\t\t\t\t_oldAndroidTouchEndTimeout = setTimeout(function() {\n\t\t\t\t\t_oldAndroidTouchEndTimeout = 0;\n\t\t\t\t}, 600);\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t\t_shout('pointerUp');\n\n\t\tif(_preventDefaultEventBehaviour(e, false)) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tvar releasePoint;\n\n\t\tif(_pointerEventEnabled) {\n\t\t\tvar pointerIndex = framework.arraySearch(_currPointers, e.pointerId, 'id');\n\t\t\t\n\t\t\tif(pointerIndex > -1) {\n\t\t\t\treleasePoint = _currPointers.splice(pointerIndex, 1)[0];\n\n\t\t\t\tif(navigator.msPointerEnabled) {\n\t\t\t\t\tvar MSPOINTER_TYPES = {\n\t\t\t\t\t\t4: 'mouse', // event.MSPOINTER_TYPE_MOUSE\n\t\t\t\t\t\t2: 'touch', // event.MSPOINTER_TYPE_TOUCH \n\t\t\t\t\t\t3: 'pen' // event.MSPOINTER_TYPE_PEN\n\t\t\t\t\t};\n\t\t\t\t\treleasePoint.type = MSPOINTER_TYPES[e.pointerType];\n\n\t\t\t\t\tif(!releasePoint.type) {\n\t\t\t\t\t\treleasePoint.type = e.pointerType || 'mouse';\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treleasePoint.type = e.pointerType || 'mouse';\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\n\t\tvar touchList = _getTouchPoints(e),\n\t\t\tgestureType,\n\t\t\tnumPoints = touchList.length;\n\n\t\tif(e.type === 'mouseup') {\n\t\t\tnumPoints = 0;\n\t\t}\n\n\t\t// Do nothing if there were 3 touch points or more\n\t\tif(numPoints === 2) {\n\t\t\t_currentPoints = null;\n\t\t\treturn true;\n\t\t}\n\n\t\t// if second pointer released\n\t\tif(numPoints === 1) {\n\t\t\t_equalizePoints(_startPoint, touchList[0]);\n\t\t}\t\t\t\t\n\n\n\t\t// pointer hasn't moved, send \"tap release\" point\n\t\tif(numPoints === 0 && !_direction && !_mainScrollAnimating) {\n\t\t\tif(!releasePoint) {\n\t\t\t\tif(e.type === 'mouseup') {\n\t\t\t\t\treleasePoint = {x: e.pageX, y: e.pageY, type:'mouse'};\n\t\t\t\t} else if(e.changedTouches && e.changedTouches[0]) {\n\t\t\t\t\treleasePoint = {x: e.changedTouches[0].pageX, y: e.changedTouches[0].pageY, type:'touch'};\n\t\t\t\t}\t\t\n\t\t\t}\n\n\t\t\t_shout('touchRelease', e, releasePoint);\n\t\t}\n\n\t\t// Difference in time between releasing of two last touch points (zoom gesture)\n\t\tvar releaseTimeDiff = -1;\n\n\t\t// Gesture completed, no pointers left\n\t\tif(numPoints === 0) {\n\t\t\t_isDragging = false;\n\t\t\tframework.unbind(window, _upMoveEvents, self);\n\n\t\t\t_stopDragUpdateLoop();\n\n\t\t\tif(_isZooming) {\n\t\t\t\t// Two points released at the same time\n\t\t\t\treleaseTimeDiff = 0;\n\t\t\t} else if(_lastReleaseTime !== -1) {\n\t\t\t\treleaseTimeDiff = _getCurrentTime() - _lastReleaseTime;\n\t\t\t}\n\t\t}\n\t\t_lastReleaseTime = numPoints === 1 ? _getCurrentTime() : -1;\n\t\t\n\t\tif(releaseTimeDiff !== -1 && releaseTimeDiff < 150) {\n\t\t\tgestureType = 'zoom';\n\t\t} else {\n\t\t\tgestureType = 'swipe';\n\t\t}\n\n\t\tif(_isZooming && numPoints < 2) {\n\t\t\t_isZooming = false;\n\n\t\t\t// Only second point released\n\t\t\tif(numPoints === 1) {\n\t\t\t\tgestureType = 'zoomPointerUp';\n\t\t\t}\n\t\t\t_shout('zoomGestureEnded');\n\t\t}\n\n\t\t_currentPoints = null;\n\t\tif(!_moved && !_zoomStarted && !_mainScrollAnimating && !_verticalDragInitiated) {\n\t\t\t// nothing to animate\n\t\t\treturn;\n\t\t}\n\t\n\t\t_stopAllAnimations();\n\n\t\t\n\t\tif(!_releaseAnimData) {\n\t\t\t_releaseAnimData = _initDragReleaseAnimationData();\n\t\t}\n\t\t\n\t\t_releaseAnimData.calculateSwipeSpeed('x');\n\n\n\t\tif(_verticalDragInitiated) {\n\n\t\t\tvar opacityRatio = _calculateVerticalDragOpacityRatio();\n\n\t\t\tif(opacityRatio < _options.verticalDragRange) {\n\t\t\t\tself.close();\n\t\t\t} else {\n\t\t\t\tvar initalPanY = _panOffset.y,\n\t\t\t\t\tinitialBgOpacity = _bgOpacity;\n\n\t\t\t\t_animateProp('verticalDrag', 0, 1, 300, framework.easing.cubic.out, function(now) {\n\t\t\t\t\t\n\t\t\t\t\t_panOffset.y = (self.currItem.initialPosition.y - initalPanY) * now + initalPanY;\n\n\t\t\t\t\t_applyBgOpacity( (1 - initialBgOpacity) * now + initialBgOpacity );\n\t\t\t\t\t_applyCurrentZoomPan();\n\t\t\t\t});\n\n\t\t\t\t_shout('onVerticalDrag', 1);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\n\t\t// main scroll \n\t\tif( (_mainScrollShifted || _mainScrollAnimating) && numPoints === 0) {\n\t\t\tvar itemChanged = _finishSwipeMainScrollGesture(gestureType, _releaseAnimData);\n\t\t\tif(itemChanged) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tgestureType = 'zoomPointerUp';\n\t\t}\n\n\t\t// prevent zoom/pan animation when main scroll animation runs\n\t\tif(_mainScrollAnimating) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\t// Complete simple zoom gesture (reset zoom level if it's out of the bounds) \n\t\tif(gestureType !== 'swipe') {\n\t\t\t_completeZoomGesture();\n\t\t\treturn;\n\t\t}\n\t\n\t\t// Complete pan gesture if main scroll is not shifted, and it's possible to pan current image\n\t\tif(!_mainScrollShifted && _currZoomLevel > self.currItem.fitRatio) {\n\t\t\t_completePanGesture(_releaseAnimData);\n\t\t}\n\t},\n\n\n\t// Returns object with data about gesture\n\t// It's created only once and then reused\n\t_initDragReleaseAnimationData = function() {\n\t\t// temp local vars\n\t\tvar lastFlickDuration,\n\t\t\ttempReleasePos;\n\n\t\t// s = this\n\t\tvar s = {\n\t\t\tlastFlickOffset: {},\n\t\t\tlastFlickDist: {},\n\t\t\tlastFlickSpeed: {},\n\t\t\tslowDownRatio: {},\n\t\t\tslowDownRatioReverse: {},\n\t\t\tspeedDecelerationRatio: {},\n\t\t\tspeedDecelerationRatioAbs: {},\n\t\t\tdistanceOffset: {},\n\t\t\tbackAnimDestination: {},\n\t\t\tbackAnimStarted: {},\n\t\t\tcalculateSwipeSpeed: function(axis) {\n\t\t\t\t\n\n\t\t\t\tif( _posPoints.length > 1) {\n\t\t\t\t\tlastFlickDuration = _getCurrentTime() - _gestureCheckSpeedTime + 50;\n\t\t\t\t\ttempReleasePos = _posPoints[_posPoints.length-2][axis];\n\t\t\t\t} else {\n\t\t\t\t\tlastFlickDuration = _getCurrentTime() - _gestureStartTime; // total gesture duration\n\t\t\t\t\ttempReleasePos = _startPoint[axis];\n\t\t\t\t}\n\t\t\t\ts.lastFlickOffset[axis] = _currPoint[axis] - tempReleasePos;\n\t\t\t\ts.lastFlickDist[axis] = Math.abs(s.lastFlickOffset[axis]);\n\t\t\t\tif(s.lastFlickDist[axis] > 20) {\n\t\t\t\t\ts.lastFlickSpeed[axis] = s.lastFlickOffset[axis] / lastFlickDuration;\n\t\t\t\t} else {\n\t\t\t\t\ts.lastFlickSpeed[axis] = 0;\n\t\t\t\t}\n\t\t\t\tif( Math.abs(s.lastFlickSpeed[axis]) < 0.1 ) {\n\t\t\t\t\ts.lastFlickSpeed[axis] = 0;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\ts.slowDownRatio[axis] = 0.95;\n\t\t\t\ts.slowDownRatioReverse[axis] = 1 - s.slowDownRatio[axis];\n\t\t\t\ts.speedDecelerationRatio[axis] = 1;\n\t\t\t},\n\n\t\t\tcalculateOverBoundsAnimOffset: function(axis, speed) {\n\t\t\t\tif(!s.backAnimStarted[axis]) {\n\n\t\t\t\t\tif(_panOffset[axis] > _currPanBounds.min[axis]) {\n\t\t\t\t\t\ts.backAnimDestination[axis] = _currPanBounds.min[axis];\n\t\t\t\t\t\t\n\t\t\t\t\t} else if(_panOffset[axis] < _currPanBounds.max[axis]) {\n\t\t\t\t\t\ts.backAnimDestination[axis] = _currPanBounds.max[axis];\n\t\t\t\t\t}\n\n\t\t\t\t\tif(s.backAnimDestination[axis] !== undefined) {\n\t\t\t\t\t\ts.slowDownRatio[axis] = 0.7;\n\t\t\t\t\t\ts.slowDownRatioReverse[axis] = 1 - s.slowDownRatio[axis];\n\t\t\t\t\t\tif(s.speedDecelerationRatioAbs[axis] < 0.05) {\n\n\t\t\t\t\t\t\ts.lastFlickSpeed[axis] = 0;\n\t\t\t\t\t\t\ts.backAnimStarted[axis] = true;\n\n\t\t\t\t\t\t\t_animateProp('bounceZoomPan'+axis,_panOffset[axis], \n\t\t\t\t\t\t\t\ts.backAnimDestination[axis], \n\t\t\t\t\t\t\t\tspeed || 300, \n\t\t\t\t\t\t\t\tframework.easing.sine.out, \n\t\t\t\t\t\t\t\tfunction(pos) {\n\t\t\t\t\t\t\t\t\t_panOffset[axis] = pos;\n\t\t\t\t\t\t\t\t\t_applyCurrentZoomPan();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Reduces the speed by slowDownRatio (per 10ms)\n\t\t\tcalculateAnimOffset: function(axis) {\n\t\t\t\tif(!s.backAnimStarted[axis]) {\n\t\t\t\t\ts.speedDecelerationRatio[axis] = s.speedDecelerationRatio[axis] * (s.slowDownRatio[axis] + \n\t\t\t\t\t\t\t\t\t\t\t\ts.slowDownRatioReverse[axis] - \n\t\t\t\t\t\t\t\t\t\t\t\ts.slowDownRatioReverse[axis] * s.timeDiff / 10);\n\n\t\t\t\t\ts.speedDecelerationRatioAbs[axis] = Math.abs(s.lastFlickSpeed[axis] * s.speedDecelerationRatio[axis]);\n\t\t\t\t\ts.distanceOffset[axis] = s.lastFlickSpeed[axis] * s.speedDecelerationRatio[axis] * s.timeDiff;\n\t\t\t\t\t_panOffset[axis] += s.distanceOffset[axis];\n\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tpanAnimLoop: function() {\n\t\t\t\tif ( _animations.zoomPan ) {\n\t\t\t\t\t_animations.zoomPan.raf = _requestAF(s.panAnimLoop);\n\n\t\t\t\t\ts.now = _getCurrentTime();\n\t\t\t\t\ts.timeDiff = s.now - s.lastNow;\n\t\t\t\t\ts.lastNow = s.now;\n\t\t\t\t\t\n\t\t\t\t\ts.calculateAnimOffset('x');\n\t\t\t\t\ts.calculateAnimOffset('y');\n\n\t\t\t\t\t_applyCurrentZoomPan();\n\t\t\t\t\t\n\t\t\t\t\ts.calculateOverBoundsAnimOffset('x');\n\t\t\t\t\ts.calculateOverBoundsAnimOffset('y');\n\n\n\t\t\t\t\tif (s.speedDecelerationRatioAbs.x < 0.05 && s.speedDecelerationRatioAbs.y < 0.05) {\n\n\t\t\t\t\t\t// round pan position\n\t\t\t\t\t\t_panOffset.x = Math.round(_panOffset.x);\n\t\t\t\t\t\t_panOffset.y = Math.round(_panOffset.y);\n\t\t\t\t\t\t_applyCurrentZoomPan();\n\t\t\t\t\t\t\n\t\t\t\t\t\t_stopAnimation('zoomPan');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\t\t};\n\t\treturn s;\n\t},\n\n\t_completePanGesture = function(animData) {\n\t\t// calculate swipe speed for Y axis (paanning)\n\t\tanimData.calculateSwipeSpeed('y');\n\n\t\t_currPanBounds = self.currItem.bounds;\n\t\t\n\t\tanimData.backAnimDestination = {};\n\t\tanimData.backAnimStarted = {};\n\n\t\t// Avoid acceleration animation if speed is too low\n\t\tif(Math.abs(animData.lastFlickSpeed.x) <= 0.05 && Math.abs(animData.lastFlickSpeed.y) <= 0.05 ) {\n\t\t\tanimData.speedDecelerationRatioAbs.x = animData.speedDecelerationRatioAbs.y = 0;\n\n\t\t\t// Run pan drag release animation. E.g. if you drag image and release finger without momentum.\n\t\t\tanimData.calculateOverBoundsAnimOffset('x');\n\t\t\tanimData.calculateOverBoundsAnimOffset('y');\n\t\t\treturn true;\n\t\t}\n\n\t\t// Animation loop that controls the acceleration after pan gesture ends\n\t\t_registerStartAnimation('zoomPan');\n\t\tanimData.lastNow = _getCurrentTime();\n\t\tanimData.panAnimLoop();\n\t},\n\n\n\t_finishSwipeMainScrollGesture = function(gestureType, _releaseAnimData) {\n\t\tvar itemChanged;\n\t\tif(!_mainScrollAnimating) {\n\t\t\t_currZoomedItemIndex = _currentItemIndex;\n\t\t}\n\n\n\t\t\n\t\tvar itemsDiff;\n\n\t\tif(gestureType === 'swipe') {\n\t\t\tvar totalShiftDist = _currPoint.x - _startPoint.x,\n\t\t\t\tisFastLastFlick = _releaseAnimData.lastFlickDist.x < 10;\n\n\t\t\t// if container is shifted for more than MIN_SWIPE_DISTANCE, \n\t\t\t// and last flick gesture was in right direction\n\t\t\tif(totalShiftDist > MIN_SWIPE_DISTANCE && \n\t\t\t\t(isFastLastFlick || _releaseAnimData.lastFlickOffset.x > 20) ) {\n\t\t\t\t// go to prev item\n\t\t\t\titemsDiff = -1;\n\t\t\t} else if(totalShiftDist < -MIN_SWIPE_DISTANCE && \n\t\t\t\t(isFastLastFlick || _releaseAnimData.lastFlickOffset.x < -20) ) {\n\t\t\t\t// go to next item\n\t\t\t\titemsDiff = 1;\n\t\t\t}\n\t\t}\n\n\t\tvar nextCircle;\n\n\t\tif(itemsDiff) {\n\t\t\t\n\t\t\t_currentItemIndex += itemsDiff;\n\n\t\t\tif(_currentItemIndex < 0) {\n\t\t\t\t_currentItemIndex = _options.loop ? _getNumItems()-1 : 0;\n\t\t\t\tnextCircle = true;\n\t\t\t} else if(_currentItemIndex >= _getNumItems()) {\n\t\t\t\t_currentItemIndex = _options.loop ? 0 : _getNumItems()-1;\n\t\t\t\tnextCircle = true;\n\t\t\t}\n\n\t\t\tif(!nextCircle || _options.loop) {\n\t\t\t\t_indexDiff += itemsDiff;\n\t\t\t\t_currPositionIndex -= itemsDiff;\n\t\t\t\titemChanged = true;\n\t\t\t}\n\t\t\t\n\n\t\t\t\n\t\t}\n\n\t\tvar animateToX = _slideSize.x * _currPositionIndex;\n\t\tvar animateToDist = Math.abs( animateToX - _mainScrollPos.x );\n\t\tvar finishAnimDuration;\n\n\n\t\tif(!itemChanged && animateToX > _mainScrollPos.x !== _releaseAnimData.lastFlickSpeed.x > 0) {\n\t\t\t// \"return to current\" duration, e.g. when dragging from slide 0 to -1\n\t\t\tfinishAnimDuration = 333; \n\t\t} else {\n\t\t\tfinishAnimDuration = Math.abs(_releaseAnimData.lastFlickSpeed.x) > 0 ? \n\t\t\t\t\t\t\t\t\tanimateToDist / Math.abs(_releaseAnimData.lastFlickSpeed.x) : \n\t\t\t\t\t\t\t\t\t333;\n\n\t\t\tfinishAnimDuration = Math.min(finishAnimDuration, 400);\n\t\t\tfinishAnimDuration = Math.max(finishAnimDuration, 250);\n\t\t}\n\n\t\tif(_currZoomedItemIndex === _currentItemIndex) {\n\t\t\titemChanged = false;\n\t\t}\n\t\t\n\t\t_mainScrollAnimating = true;\n\t\t\n\t\t_shout('mainScrollAnimStart');\n\n\t\t_animateProp('mainScroll', _mainScrollPos.x, animateToX, finishAnimDuration, framework.easing.cubic.out, \n\t\t\t_moveMainScroll,\n\t\t\tfunction() {\n\t\t\t\t_stopAllAnimations();\n\t\t\t\t_mainScrollAnimating = false;\n\t\t\t\t_currZoomedItemIndex = -1;\n\t\t\t\t\n\t\t\t\tif(itemChanged || _currZoomedItemIndex !== _currentItemIndex) {\n\t\t\t\t\tself.updateCurrItem();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t_shout('mainScrollAnimComplete');\n\t\t\t}\n\t\t);\n\n\t\tif(itemChanged) {\n\t\t\tself.updateCurrItem(true);\n\t\t}\n\n\t\treturn itemChanged;\n\t},\n\n\t_calculateZoomLevel = function(touchesDistance) {\n\t\treturn 1 / _startPointsDistance * touchesDistance * _startZoomLevel;\n\t},\n\n\t// Resets zoom if it's out of bounds\n\t_completeZoomGesture = function() {\n\t\tvar destZoomLevel = _currZoomLevel,\n\t\t\tminZoomLevel = _getMinZoomLevel(),\n\t\t\tmaxZoomLevel = _getMaxZoomLevel();\n\n\t\tif ( _currZoomLevel < minZoomLevel ) {\n\t\t\tdestZoomLevel = minZoomLevel;\n\t\t} else if ( _currZoomLevel > maxZoomLevel ) {\n\t\t\tdestZoomLevel = maxZoomLevel;\n\t\t}\n\n\t\tvar destOpacity = 1,\n\t\t\tonUpdate,\n\t\t\tinitialOpacity = _bgOpacity;\n\n\t\tif(_opacityChanged && !_isZoomingIn && !_wasOverInitialZoom && _currZoomLevel < minZoomLevel) {\n\t\t\t//_closedByScroll = true;\n\t\t\tself.close();\n\t\t\treturn true;\n\t\t}\n\n\t\tif(_opacityChanged) {\n\t\t\tonUpdate = function(now) {\n\t\t\t\t_applyBgOpacity( (destOpacity - initialOpacity) * now + initialOpacity );\n\t\t\t};\n\t\t}\n\n\t\tself.zoomTo(destZoomLevel, 0, 200, framework.easing.cubic.out, onUpdate);\n\t\treturn true;\n\t};\n\n\n_registerModule('Gestures', {\n\tpublicMethods: {\n\n\t\tinitGestures: function() {\n\n\t\t\t// helper function that builds touch/pointer/mouse events\n\t\t\tvar addEventNames = function(pref, down, move, up, cancel) {\n\t\t\t\t_dragStartEvent = pref + down;\n\t\t\t\t_dragMoveEvent = pref + move;\n\t\t\t\t_dragEndEvent = pref + up;\n\t\t\t\tif(cancel) {\n\t\t\t\t\t_dragCancelEvent = pref + cancel;\n\t\t\t\t} else {\n\t\t\t\t\t_dragCancelEvent = '';\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t_pointerEventEnabled = _features.pointerEvent;\n\t\t\tif(_pointerEventEnabled && _features.touch) {\n\t\t\t\t// we don't need touch events, if browser supports pointer events\n\t\t\t\t_features.touch = false;\n\t\t\t}\n\n\t\t\tif(_pointerEventEnabled) {\n\t\t\t\tif(navigator.msPointerEnabled) {\n\t\t\t\t\t// IE10 pointer events are case-sensitive\n\t\t\t\t\taddEventNames('MSPointer', 'Down', 'Move', 'Up', 'Cancel');\n\t\t\t\t} else {\n\t\t\t\t\taddEventNames('pointer', 'down', 'move', 'up', 'cancel');\n\t\t\t\t}\n\t\t\t} else if(_features.touch) {\n\t\t\t\taddEventNames('touch', 'start', 'move', 'end', 'cancel');\n\t\t\t\t_likelyTouchDevice = true;\n\t\t\t} else {\n\t\t\t\taddEventNames('mouse', 'down', 'move', 'up');\t\n\t\t\t}\n\n\t\t\t_upMoveEvents = _dragMoveEvent + ' ' + _dragEndEvent + ' ' + _dragCancelEvent;\n\t\t\t_downEvents = _dragStartEvent;\n\n\t\t\tif(_pointerEventEnabled && !_likelyTouchDevice) {\n\t\t\t\t_likelyTouchDevice = (navigator.maxTouchPoints > 1) || (navigator.msMaxTouchPoints > 1);\n\t\t\t}\n\t\t\t// make variable public\n\t\t\tself.likelyTouchDevice = _likelyTouchDevice; \n\t\t\t\n\t\t\t_globalEventHandlers[_dragStartEvent] = _onDragStart;\n\t\t\t_globalEventHandlers[_dragMoveEvent] = _onDragMove;\n\t\t\t_globalEventHandlers[_dragEndEvent] = _onDragRelease; // the Kraken\n\n\t\t\tif(_dragCancelEvent) {\n\t\t\t\t_globalEventHandlers[_dragCancelEvent] = _globalEventHandlers[_dragEndEvent];\n\t\t\t}\n\n\t\t\t// Bind mouse events on device with detected hardware touch support, in case it supports multiple types of input.\n\t\t\tif(_features.touch) {\n\t\t\t\t_downEvents += ' mousedown';\n\t\t\t\t_upMoveEvents += ' mousemove mouseup';\n\t\t\t\t_globalEventHandlers.mousedown = _globalEventHandlers[_dragStartEvent];\n\t\t\t\t_globalEventHandlers.mousemove = _globalEventHandlers[_dragMoveEvent];\n\t\t\t\t_globalEventHandlers.mouseup = _globalEventHandlers[_dragEndEvent];\n\t\t\t}\n\n\t\t\tif(!_likelyTouchDevice) {\n\t\t\t\t// don't allow pan to next slide from zoomed state on Desktop\n\t\t\t\t_options.allowPanToNext = false;\n\t\t\t}\n\t\t}\n\n\t}\n});\n\n\n/*>>gestures*/\n\n/*>>show-hide-transition*/\n/**\n * show-hide-transition.js:\n *\n * Manages initial opening or closing transition.\n *\n * If you're not planning to use transition for gallery at all,\n * you may set options hideAnimationDuration and showAnimationDuration to 0,\n * and just delete startAnimation function.\n * \n */\n\n\nvar _showOrHideTimeout,\n\t_showOrHide = function(item, img, out, completeFn) {\n\n\t\tif(_showOrHideTimeout) {\n\t\t\tclearTimeout(_showOrHideTimeout);\n\t\t}\n\n\t\t_initialZoomRunning = true;\n\t\t_initialContentSet = true;\n\t\t\n\t\t// dimensions of small thumbnail {x:,y:,w:}.\n\t\t// Height is optional, as calculated based on large image.\n\t\tvar thumbBounds; \n\t\tif(item.initialLayout) {\n\t\t\tthumbBounds = item.initialLayout;\n\t\t\titem.initialLayout = null;\n\t\t} else {\n\t\t\tthumbBounds = _options.getThumbBoundsFn && _options.getThumbBoundsFn(_currentItemIndex);\n\t\t}\n\n\t\tvar duration = out ? _options.hideAnimationDuration : _options.showAnimationDuration;\n\n\t\tvar onComplete = function() {\n\t\t\t_stopAnimation('initialZoom');\n\t\t\tif(!out) {\n\t\t\t\t_applyBgOpacity(1);\n\t\t\t\tif(img) {\n\t\t\t\t\timg.style.display = 'block';\n\t\t\t\t}\n\t\t\t\tframework.addClass(template, 'pswp--animated-in');\n\t\t\t\t_shout('initialZoom' + (out ? 'OutEnd' : 'InEnd'));\n\t\t\t} else {\n\t\t\t\tself.template.removeAttribute('style');\n\t\t\t\tself.bg.removeAttribute('style');\n\t\t\t}\n\n\t\t\tif(completeFn) {\n\t\t\t\tcompleteFn();\n\t\t\t}\n\t\t\t_initialZoomRunning = false;\n\t\t};\n\n\t\t// if bounds aren't provided, just open gallery without animation\n\t\tif(!duration || !thumbBounds || thumbBounds.x === undefined) {\n\n\t\t\t_shout('initialZoom' + (out ? 'Out' : 'In') );\n\n\t\t\t_currZoomLevel = item.initialZoomLevel;\n\t\t\t_equalizePoints(_panOffset, item.initialPosition );\n\t\t\t_applyCurrentZoomPan();\n\n\t\t\ttemplate.style.opacity = out ? 0 : 1;\n\t\t\t_applyBgOpacity(1);\n\n\t\t\tif(duration) {\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tonComplete();\n\t\t\t\t}, duration);\n\t\t\t} else {\n\t\t\t\tonComplete();\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvar startAnimation = function() {\n\t\t\tvar closeWithRaf = _closedByScroll,\n\t\t\t\tfadeEverything = !self.currItem.src || self.currItem.loadError || _options.showHideOpacity;\n\t\t\t\n\t\t\t// apply hw-acceleration to image\n\t\t\tif(item.miniImg) {\n\t\t\t\titem.miniImg.style.webkitBackfaceVisibility = 'hidden';\n\t\t\t}\n\n\t\t\tif(!out) {\n\t\t\t\t_currZoomLevel = thumbBounds.w / item.w;\n\t\t\t\t_panOffset.x = thumbBounds.x;\n\t\t\t\t_panOffset.y = thumbBounds.y - _initalWindowScrollY;\n\n\t\t\t\tself[fadeEverything ? 'template' : 'bg'].style.opacity = 0.001;\n\t\t\t\t_applyCurrentZoomPan();\n\t\t\t}\n\n\t\t\t_registerStartAnimation('initialZoom');\n\t\t\t\n\t\t\tif(out && !closeWithRaf) {\n\t\t\t\tframework.removeClass(template, 'pswp--animated-in');\n\t\t\t}\n\n\t\t\tif(fadeEverything) {\n\t\t\t\tif(out) {\n\t\t\t\t\tframework[ (closeWithRaf ? 'remove' : 'add') + 'Class' ](template, 'pswp--animate_opacity');\n\t\t\t\t} else {\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tframework.addClass(template, 'pswp--animate_opacity');\n\t\t\t\t\t}, 30);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t_showOrHideTimeout = setTimeout(function() {\n\n\t\t\t\t_shout('initialZoom' + (out ? 'Out' : 'In') );\n\t\t\t\t\n\n\t\t\t\tif(!out) {\n\n\t\t\t\t\t// \"in\" animation always uses CSS transitions (instead of rAF).\n\t\t\t\t\t// CSS transition work faster here, \n\t\t\t\t\t// as developer may also want to animate other things, \n\t\t\t\t\t// like ui on top of sliding area, which can be animated just via CSS\n\t\t\t\t\t\n\t\t\t\t\t_currZoomLevel = item.initialZoomLevel;\n\t\t\t\t\t_equalizePoints(_panOffset, item.initialPosition );\n\t\t\t\t\t_applyCurrentZoomPan();\n\t\t\t\t\t_applyBgOpacity(1);\n\n\t\t\t\t\tif(fadeEverything) {\n\t\t\t\t\t\ttemplate.style.opacity = 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t_applyBgOpacity(1);\n\t\t\t\t\t}\n\n\t\t\t\t\t_showOrHideTimeout = setTimeout(onComplete, duration + 20);\n\t\t\t\t} else {\n\n\t\t\t\t\t// \"out\" animation uses rAF only when PhotoSwipe is closed by browser scroll, to recalculate position\n\t\t\t\t\tvar destZoomLevel = thumbBounds.w / item.w,\n\t\t\t\t\t\tinitialPanOffset = {\n\t\t\t\t\t\t\tx: _panOffset.x,\n\t\t\t\t\t\t\ty: _panOffset.y\n\t\t\t\t\t\t},\n\t\t\t\t\t\tinitialZoomLevel = _currZoomLevel,\n\t\t\t\t\t\tinitalBgOpacity = _bgOpacity,\n\t\t\t\t\t\tonUpdate = function(now) {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(now === 1) {\n\t\t\t\t\t\t\t\t_currZoomLevel = destZoomLevel;\n\t\t\t\t\t\t\t\t_panOffset.x = thumbBounds.x;\n\t\t\t\t\t\t\t\t_panOffset.y = thumbBounds.y - _currentWindowScrollY;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t_currZoomLevel = (destZoomLevel - initialZoomLevel) * now + initialZoomLevel;\n\t\t\t\t\t\t\t\t_panOffset.x = (thumbBounds.x - initialPanOffset.x) * now + initialPanOffset.x;\n\t\t\t\t\t\t\t\t_panOffset.y = (thumbBounds.y - _currentWindowScrollY - initialPanOffset.y) * now + initialPanOffset.y;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t_applyCurrentZoomPan();\n\t\t\t\t\t\t\tif(fadeEverything) {\n\t\t\t\t\t\t\t\ttemplate.style.opacity = 1 - now;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t_applyBgOpacity( initalBgOpacity - now * initalBgOpacity );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\n\t\t\t\t\tif(closeWithRaf) {\n\t\t\t\t\t\t_animateProp('initialZoom', 0, 1, duration, framework.easing.cubic.out, onUpdate, onComplete);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tonUpdate(1);\n\t\t\t\t\t\t_showOrHideTimeout = setTimeout(onComplete, duration + 20);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\n\t\t\t}, out ? 25 : 90); // Main purpose of this delay is to give browser time to paint and\n\t\t\t\t\t// create composite layers of PhotoSwipe UI parts (background, controls, caption, arrows).\n\t\t\t\t\t// Which avoids lag at the beginning of scale transition.\n\t\t};\n\t\tstartAnimation();\n\n\t\t\n\t};\n\n/*>>show-hide-transition*/\n\n/*>>items-controller*/\n/**\n*\n* Controller manages gallery items, their dimensions, and their content.\n* \n*/\n\nvar _items,\n\t_tempPanAreaSize = {},\n\t_imagesToAppendPool = [],\n\t_initialContentSet,\n\t_initialZoomRunning,\n\t_controllerDefaultOptions = {\n\t\tindex: 0,\n\t\terrorMsg: '
The image could not be loaded.
',\n\t\tforceProgressiveLoading: false, // TODO\n\t\tpreload: [1,1],\n\t\tgetNumItemsFn: function() {\n\t\t\treturn _items.length;\n\t\t}\n\t};\n\n\nvar _getItemAt,\n\t_getNumItems,\n\t_initialIsLoop,\n\t_getZeroBounds = function() {\n\t\treturn {\n\t\t\tcenter:{x:0,y:0}, \n\t\t\tmax:{x:0,y:0}, \n\t\t\tmin:{x:0,y:0}\n\t\t};\n\t},\n\t_calculateSingleItemPanBounds = function(item, realPanElementW, realPanElementH ) {\n\t\tvar bounds = item.bounds;\n\n\t\t// position of element when it's centered\n\t\tbounds.center.x = Math.round((_tempPanAreaSize.x - realPanElementW) / 2);\n\t\tbounds.center.y = Math.round((_tempPanAreaSize.y - realPanElementH) / 2) + item.vGap.top;\n\n\t\t// maximum pan position\n\t\tbounds.max.x = (realPanElementW > _tempPanAreaSize.x) ? \n\t\t\t\t\t\t\tMath.round(_tempPanAreaSize.x - realPanElementW) : \n\t\t\t\t\t\t\tbounds.center.x;\n\t\t\n\t\tbounds.max.y = (realPanElementH > _tempPanAreaSize.y) ? \n\t\t\t\t\t\t\tMath.round(_tempPanAreaSize.y - realPanElementH) + item.vGap.top : \n\t\t\t\t\t\t\tbounds.center.y;\n\t\t\n\t\t// minimum pan position\n\t\tbounds.min.x = (realPanElementW > _tempPanAreaSize.x) ? 0 : bounds.center.x;\n\t\tbounds.min.y = (realPanElementH > _tempPanAreaSize.y) ? item.vGap.top : bounds.center.y;\n\t},\n\t_calculateItemSize = function(item, viewportSize, zoomLevel) {\n\n\t\tif (item.src && !item.loadError) {\n\t\t\tvar isInitial = !zoomLevel;\n\t\t\t\n\t\t\tif(isInitial) {\n\t\t\t\tif(!item.vGap) {\n\t\t\t\t\titem.vGap = {top:0,bottom:0};\n\t\t\t\t}\n\t\t\t\t// allows overriding vertical margin for individual items\n\t\t\t\t_shout('parseVerticalMargin', item);\n\t\t\t}\n\n\n\t\t\t_tempPanAreaSize.x = viewportSize.x;\n\t\t\t_tempPanAreaSize.y = viewportSize.y - item.vGap.top - item.vGap.bottom;\n\n\t\t\tif (isInitial) {\n\t\t\t\tvar hRatio = _tempPanAreaSize.x / item.w;\n\t\t\t\tvar vRatio = _tempPanAreaSize.y / item.h;\n\n\t\t\t\titem.fitRatio = hRatio < vRatio ? hRatio : vRatio;\n\t\t\t\t//item.fillRatio = hRatio > vRatio ? hRatio : vRatio;\n\n\t\t\t\tvar scaleMode = _options.scaleMode;\n\n\t\t\t\tif (scaleMode === 'orig') {\n\t\t\t\t\tzoomLevel = 1;\n\t\t\t\t} else if (scaleMode === 'fit') {\n\t\t\t\t\tzoomLevel = item.fitRatio;\n\t\t\t\t}\n\n\t\t\t\tif (zoomLevel > 1) {\n\t\t\t\t\tzoomLevel = 1;\n\t\t\t\t}\n\n\t\t\t\titem.initialZoomLevel = zoomLevel;\n\t\t\t\t\n\t\t\t\tif(!item.bounds) {\n\t\t\t\t\t// reuse bounds object\n\t\t\t\t\titem.bounds = _getZeroBounds(); \n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!zoomLevel) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_calculateSingleItemPanBounds(item, item.w * zoomLevel, item.h * zoomLevel);\n\n\t\t\tif (isInitial && zoomLevel === item.initialZoomLevel) {\n\t\t\t\titem.initialPosition = item.bounds.center;\n\t\t\t}\n\n\t\t\treturn item.bounds;\n\t\t} else {\n\t\t\titem.w = item.h = 0;\n\t\t\titem.initialZoomLevel = item.fitRatio = 1;\n\t\t\titem.bounds = _getZeroBounds();\n\t\t\titem.initialPosition = item.bounds.center;\n\n\t\t\t// if it's not image, we return zero bounds (content is not zoomable)\n\t\t\treturn item.bounds;\n\t\t}\n\t\t\n\t},\n\n\t\n\n\n\t_appendImage = function(index, item, baseDiv, img, preventAnimation, keepPlaceholder) {\n\t\t\n\n\t\tif(item.loadError) {\n\t\t\treturn;\n\t\t}\n\n\t\tif(img) {\n\n\t\t\titem.imageAppended = true;\n\t\t\t_setImageSize(item, img, (item === self.currItem && _renderMaxResolution) );\n\t\t\t\n\t\t\tbaseDiv.appendChild(img);\n\n\t\t\tif(keepPlaceholder) {\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tif(item && item.loaded && item.placeholder) {\n\t\t\t\t\t\titem.placeholder.style.display = 'none';\n\t\t\t\t\t\titem.placeholder = null;\n\t\t\t\t\t}\n\t\t\t\t}, 500);\n\t\t\t}\n\t\t}\n\t},\n\t\n\n\n\t_preloadImage = function(item) {\n\t\titem.loading = true;\n\t\titem.loaded = false;\n\t\tvar img = item.img = framework.createEl('pswp__img', 'img');\n\t\tvar onComplete = function() {\n\t\t\titem.loading = false;\n\t\t\titem.loaded = true;\n\n\t\t\tif(item.loadComplete) {\n\t\t\t\titem.loadComplete(item);\n\t\t\t} else {\n\t\t\t\titem.img = null; // no need to store image object\n\t\t\t}\n\t\t\timg.onload = img.onerror = null;\n\t\t\timg = null;\n\t\t};\n\t\timg.onload = onComplete;\n\t\timg.onerror = function() {\n\t\t\titem.loadError = true;\n\t\t\tonComplete();\n\t\t};\t\t\n\n\t\timg.src = item.src;// + '?a=' + Math.random();\n\n\t\treturn img;\n\t},\n\t_checkForError = function(item, cleanUp) {\n\t\tif(item.src && item.loadError && item.container) {\n\n\t\t\tif(cleanUp) {\n\t\t\t\titem.container.innerHTML = '';\n\t\t\t}\n\n\t\t\titem.container.innerHTML = _options.errorMsg.replace('%url%', item.src );\n\t\t\treturn true;\n\t\t\t\n\t\t}\n\t},\n\t_setImageSize = function(item, img, maxRes) {\n\t\tif(!item.src) {\n\t\t\treturn;\n\t\t}\n\n\t\tif(!img) {\n\t\t\timg = item.container.lastChild;\n\t\t}\n\n\t\tvar w = maxRes ? item.w : Math.round(item.w * item.fitRatio),\n\t\t\th = maxRes ? item.h : Math.round(item.h * item.fitRatio);\n\t\t\n\t\tif(item.placeholder && !item.loaded) {\n\t\t\titem.placeholder.style.width = w + 'px';\n\t\t\titem.placeholder.style.height = h + 'px';\n\t\t}\n\n\t\timg.style.width = w + 'px';\n\t\timg.style.height = h + 'px';\n\t},\n\t_appendImagesPool = function() {\n\n\t\tif(_imagesToAppendPool.length) {\n\t\t\tvar poolItem;\n\n\t\t\tfor(var i = 0; i < _imagesToAppendPool.length; i++) {\n\t\t\t\tpoolItem = _imagesToAppendPool[i];\n\t\t\t\tif( poolItem.holder.index === poolItem.index ) {\n\t\t\t\t\t_appendImage(poolItem.index, poolItem.item, poolItem.baseDiv, poolItem.img, false, poolItem.clearPlaceholder);\n\t\t\t\t}\n\t\t\t}\n\t\t\t_imagesToAppendPool = [];\n\t\t}\n\t};\n\t\n\n\n_registerModule('Controller', {\n\n\tpublicMethods: {\n\n\t\tlazyLoadItem: function(index) {\n\t\t\tindex = _getLoopedId(index);\n\t\t\tvar item = _getItemAt(index);\n\n\t\t\tif(!item || ((item.loaded || item.loading) && !_itemsNeedUpdate)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_shout('gettingData', index, item);\n\n\t\t\tif (!item.src) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_preloadImage(item);\n\t\t},\n\t\tinitController: function() {\n\t\t\tframework.extend(_options, _controllerDefaultOptions, true);\n\t\t\tself.items = _items = items;\n\t\t\t_getItemAt = self.getItemAt;\n\t\t\t_getNumItems = _options.getNumItemsFn; //self.getNumItems;\n\n\n\n\t\t\t_initialIsLoop = _options.loop;\n\t\t\tif(_getNumItems() < 3) {\n\t\t\t\t_options.loop = false; // disable loop if less then 3 items\n\t\t\t}\n\n\t\t\t_listen('beforeChange', function(diff) {\n\n\t\t\t\tvar p = _options.preload,\n\t\t\t\t\tisNext = diff === null ? true : (diff >= 0),\n\t\t\t\t\tpreloadBefore = Math.min(p[0], _getNumItems() ),\n\t\t\t\t\tpreloadAfter = Math.min(p[1], _getNumItems() ),\n\t\t\t\t\ti;\n\n\n\t\t\t\tfor(i = 1; i <= (isNext ? preloadAfter : preloadBefore); i++) {\n\t\t\t\t\tself.lazyLoadItem(_currentItemIndex+i);\n\t\t\t\t}\n\t\t\t\tfor(i = 1; i <= (isNext ? preloadBefore : preloadAfter); i++) {\n\t\t\t\t\tself.lazyLoadItem(_currentItemIndex-i);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t_listen('initialLayout', function() {\n\t\t\t\tself.currItem.initialLayout = _options.getThumbBoundsFn && _options.getThumbBoundsFn(_currentItemIndex);\n\t\t\t});\n\n\t\t\t_listen('mainScrollAnimComplete', _appendImagesPool);\n\t\t\t_listen('initialZoomInEnd', _appendImagesPool);\n\n\n\n\t\t\t_listen('destroy', function() {\n\t\t\t\tvar item;\n\t\t\t\tfor(var i = 0; i < _items.length; i++) {\n\t\t\t\t\titem = _items[i];\n\t\t\t\t\t// remove reference to DOM elements, for GC\n\t\t\t\t\tif(item.container) {\n\t\t\t\t\t\titem.container = null; \n\t\t\t\t\t}\n\t\t\t\t\tif(item.placeholder) {\n\t\t\t\t\t\titem.placeholder = null;\n\t\t\t\t\t}\n\t\t\t\t\tif(item.img) {\n\t\t\t\t\t\titem.img = null;\n\t\t\t\t\t}\n\t\t\t\t\tif(item.preloader) {\n\t\t\t\t\t\titem.preloader = null;\n\t\t\t\t\t}\n\t\t\t\t\tif(item.loadError) {\n\t\t\t\t\t\titem.loaded = item.loadError = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t_imagesToAppendPool = null;\n\t\t\t});\n\t\t},\n\n\n\t\tgetItemAt: function(index) {\n\t\t\tif (index >= 0) {\n\t\t\t\treturn _items[index] !== undefined ? _items[index] : false;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\n\t\tallowProgressiveImg: function() {\n\t\t\t// 1. Progressive image loading isn't working on webkit/blink \n\t\t\t// when hw-acceleration (e.g. translateZ) is applied to IMG element.\n\t\t\t// That's why in PhotoSwipe parent element gets zoom transform, not image itself.\n\t\t\t// \n\t\t\t// 2. Progressive image loading sometimes blinks in webkit/blink when applying animation to parent element.\n\t\t\t// That's why it's disabled on touch devices (mainly because of swipe transition)\n\t\t\t// \n\t\t\t// 3. Progressive image loading sometimes doesn't work in IE (up to 11).\n\n\t\t\t// Don't allow progressive loading on non-large touch devices\n\t\t\treturn _options.forceProgressiveLoading || !_likelyTouchDevice || _options.mouseUsed || screen.width > 1200; \n\t\t\t// 1200 - to eliminate touch devices with large screen (like Chromebook Pixel)\n\t\t},\n\n\t\tsetContent: function(holder, index) {\n\n\t\t\tif(_options.loop) {\n\t\t\t\tindex = _getLoopedId(index);\n\t\t\t}\n\n\t\t\tvar prevItem = self.getItemAt(holder.index);\n\t\t\tif(prevItem) {\n\t\t\t\tprevItem.container = null;\n\t\t\t}\n\t\n\t\t\tvar item = self.getItemAt(index),\n\t\t\t\timg;\n\t\t\t\n\t\t\tif(!item) {\n\t\t\t\tholder.el.innerHTML = '';\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// allow to override data\n\t\t\t_shout('gettingData', index, item);\n\n\t\t\tholder.index = index;\n\t\t\tholder.item = item;\n\n\t\t\t// base container DIV is created only once for each of 3 holders\n\t\t\tvar baseDiv = item.container = framework.createEl('pswp__zoom-wrap'); \n\n\t\t\t\n\n\t\t\tif(!item.src && item.html) {\n\t\t\t\tif(item.html.tagName) {\n\t\t\t\t\tbaseDiv.appendChild(item.html);\n\t\t\t\t} else {\n\t\t\t\t\tbaseDiv.innerHTML = item.html;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t_checkForError(item);\n\n\t\t\t_calculateItemSize(item, _viewportSize);\n\t\t\t\n\t\t\tif(item.src && !item.loadError && !item.loaded) {\n\n\t\t\t\titem.loadComplete = function(item) {\n\n\t\t\t\t\t// gallery closed before image finished loading\n\t\t\t\t\tif(!_isOpen) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// check if holder hasn't changed while image was loading\n\t\t\t\t\tif(holder && holder.index === index ) {\n\t\t\t\t\t\tif( _checkForError(item, true) ) {\n\t\t\t\t\t\t\titem.loadComplete = item.img = null;\n\t\t\t\t\t\t\t_calculateItemSize(item, _viewportSize);\n\t\t\t\t\t\t\t_applyZoomPanToItem(item);\n\n\t\t\t\t\t\t\tif(holder.index === _currentItemIndex) {\n\t\t\t\t\t\t\t\t// recalculate dimensions\n\t\t\t\t\t\t\t\tself.updateCurrZoomItem();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif( !item.imageAppended ) {\n\t\t\t\t\t\t\tif(_features.transform && (_mainScrollAnimating || _initialZoomRunning) ) {\n\t\t\t\t\t\t\t\t_imagesToAppendPool.push({\n\t\t\t\t\t\t\t\t\titem:item,\n\t\t\t\t\t\t\t\t\tbaseDiv:baseDiv,\n\t\t\t\t\t\t\t\t\timg:item.img,\n\t\t\t\t\t\t\t\t\tindex:index,\n\t\t\t\t\t\t\t\t\tholder:holder,\n\t\t\t\t\t\t\t\t\tclearPlaceholder:true\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t_appendImage(index, item, baseDiv, item.img, _mainScrollAnimating || _initialZoomRunning, true);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// remove preloader & mini-img\n\t\t\t\t\t\t\tif(!_initialZoomRunning && item.placeholder) {\n\t\t\t\t\t\t\t\titem.placeholder.style.display = 'none';\n\t\t\t\t\t\t\t\titem.placeholder = null;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\titem.loadComplete = null;\n\t\t\t\t\titem.img = null; // no need to store image element after it's added\n\n\t\t\t\t\t_shout('imageLoadComplete', index, item);\n\t\t\t\t};\n\n\t\t\t\tif(framework.features.transform) {\n\t\t\t\t\t\n\t\t\t\t\tvar placeholderClassName = 'pswp__img pswp__img--placeholder'; \n\t\t\t\t\tplaceholderClassName += (item.msrc ? '' : ' pswp__img--placeholder--blank');\n\n\t\t\t\t\tvar placeholder = framework.createEl(placeholderClassName, item.msrc ? 'img' : '');\n\t\t\t\t\tif(item.msrc) {\n\t\t\t\t\t\tplaceholder.src = item.msrc;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t_setImageSize(item, placeholder);\n\n\t\t\t\t\tbaseDiv.appendChild(placeholder);\n\t\t\t\t\titem.placeholder = placeholder;\n\n\t\t\t\t}\n\t\t\t\t\n\n\t\t\t\t\n\n\t\t\t\tif(!item.loading) {\n\t\t\t\t\t_preloadImage(item);\n\t\t\t\t}\n\n\n\t\t\t\tif( self.allowProgressiveImg() ) {\n\t\t\t\t\t// just append image\n\t\t\t\t\tif(!_initialContentSet && _features.transform) {\n\t\t\t\t\t\t_imagesToAppendPool.push({\n\t\t\t\t\t\t\titem:item, \n\t\t\t\t\t\t\tbaseDiv:baseDiv, \n\t\t\t\t\t\t\timg:item.img, \n\t\t\t\t\t\t\tindex:index, \n\t\t\t\t\t\t\tholder:holder\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\t_appendImage(index, item, baseDiv, item.img, true, true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} else if(item.src && !item.loadError) {\n\t\t\t\t// image object is created every time, due to bugs of image loading & delay when switching images\n\t\t\t\timg = framework.createEl('pswp__img', 'img');\n\t\t\t\timg.style.opacity = 1;\n\t\t\t\timg.src = item.src;\n\t\t\t\t_setImageSize(item, img);\n\t\t\t\t_appendImage(index, item, baseDiv, img, true);\n\t\t\t}\n\t\t\t\n\n\t\t\tif(!_initialContentSet && index === _currentItemIndex) {\n\t\t\t\t_currZoomElementStyle = baseDiv.style;\n\t\t\t\t_showOrHide(item, (img ||item.img) );\n\t\t\t} else {\n\t\t\t\t_applyZoomPanToItem(item);\n\t\t\t}\n\n\t\t\tholder.el.innerHTML = '';\n\t\t\tholder.el.appendChild(baseDiv);\n\t\t},\n\n\t\tcleanSlide: function( item ) {\n\t\t\tif(item.img ) {\n\t\t\t\titem.img.onload = item.img.onerror = null;\n\t\t\t}\n\t\t\titem.loaded = item.loading = item.img = item.imageAppended = false;\n\t\t}\n\n\t}\n});\n\n/*>>items-controller*/\n\n/*>>tap*/\n/**\n * tap.js:\n *\n * Displatches tap and double-tap events.\n * \n */\n\nvar tapTimer,\n\ttapReleasePoint = {},\n\t_dispatchTapEvent = function(origEvent, releasePoint, pointerType) {\t\t\n\t\tvar e = document.createEvent( 'CustomEvent' ),\n\t\t\teDetail = {\n\t\t\t\torigEvent:origEvent, \n\t\t\t\ttarget:origEvent.target, \n\t\t\t\treleasePoint: releasePoint, \n\t\t\t\tpointerType:pointerType || 'touch'\n\t\t\t};\n\n\t\te.initCustomEvent( 'pswpTap', true, true, eDetail );\n\t\torigEvent.target.dispatchEvent(e);\n\t};\n\n_registerModule('Tap', {\n\tpublicMethods: {\n\t\tinitTap: function() {\n\t\t\t_listen('firstTouchStart', self.onTapStart);\n\t\t\t_listen('touchRelease', self.onTapRelease);\n\t\t\t_listen('destroy', function() {\n\t\t\t\ttapReleasePoint = {};\n\t\t\t\ttapTimer = null;\n\t\t\t});\n\t\t},\n\t\tonTapStart: function(touchList) {\n\t\t\tif(touchList.length > 1) {\n\t\t\t\tclearTimeout(tapTimer);\n\t\t\t\ttapTimer = null;\n\t\t\t}\n\t\t},\n\t\tonTapRelease: function(e, releasePoint) {\n\t\t\tif(!releasePoint) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(!_moved && !_isMultitouch && !_numAnimations) {\n\t\t\t\tvar p0 = releasePoint;\n\t\t\t\tif(tapTimer) {\n\t\t\t\t\tclearTimeout(tapTimer);\n\t\t\t\t\ttapTimer = null;\n\n\t\t\t\t\t// Check if taped on the same place\n\t\t\t\t\tif ( _isNearbyPoints(p0, tapReleasePoint) ) {\n\t\t\t\t\t\t_shout('doubleTap', p0);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(releasePoint.type === 'mouse') {\n\t\t\t\t\t_dispatchTapEvent(e, releasePoint, 'mouse');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar clickedTagName = e.target.tagName.toUpperCase();\n\t\t\t\t// avoid double tap delay on buttons and elements that have class pswp__single-tap\n\t\t\t\tif(clickedTagName === 'BUTTON' || framework.hasClass(e.target, 'pswp__single-tap') ) {\n\t\t\t\t\t_dispatchTapEvent(e, releasePoint);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t_equalizePoints(tapReleasePoint, p0);\n\n\t\t\t\ttapTimer = setTimeout(function() {\n\t\t\t\t\t_dispatchTapEvent(e, releasePoint);\n\t\t\t\t\ttapTimer = null;\n\t\t\t\t}, 300);\n\t\t\t}\n\t\t}\n\t}\n});\n\n/*>>tap*/\n\n/*>>desktop-zoom*/\n/**\n *\n * desktop-zoom.js:\n *\n * - Binds mousewheel event for paning zoomed image.\n * - Manages \"dragging\", \"zoomed-in\", \"zoom-out\" classes.\n * (which are used for cursors and zoom icon)\n * - Adds toggleDesktopZoom function.\n * \n */\n\nvar _wheelDelta;\n\t\n_registerModule('DesktopZoom', {\n\n\tpublicMethods: {\n\n\t\tinitDesktopZoom: function() {\n\n\t\t\tif(_oldIE) {\n\t\t\t\t// no zoom for old IE (<=8)\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(_likelyTouchDevice) {\n\t\t\t\t// if detected hardware touch support, we wait until mouse is used,\n\t\t\t\t// and only then apply desktop-zoom features\n\t\t\t\t_listen('mouseUsed', function() {\n\t\t\t\t\tself.setupDesktopZoom();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tself.setupDesktopZoom(true);\n\t\t\t}\n\n\t\t},\n\n\t\tsetupDesktopZoom: function(onInit) {\n\n\t\t\t_wheelDelta = {};\n\n\t\t\tvar events = 'wheel mousewheel DOMMouseScroll';\n\t\t\t\n\t\t\t_listen('bindEvents', function() {\n\t\t\t\tframework.bind(template, events, self.handleMouseWheel);\n\t\t\t});\n\n\t\t\t_listen('unbindEvents', function() {\n\t\t\t\tif(_wheelDelta) {\n\t\t\t\t\tframework.unbind(template, events, self.handleMouseWheel);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tself.mouseZoomedIn = false;\n\n\t\t\tvar hasDraggingClass,\n\t\t\t\tupdateZoomable = function() {\n\t\t\t\t\tif(self.mouseZoomedIn) {\n\t\t\t\t\t\tframework.removeClass(template, 'pswp--zoomed-in');\n\t\t\t\t\t\tself.mouseZoomedIn = false;\n\t\t\t\t\t}\n\t\t\t\t\tif(_currZoomLevel < 1) {\n\t\t\t\t\t\tframework.addClass(template, 'pswp--zoom-allowed');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tframework.removeClass(template, 'pswp--zoom-allowed');\n\t\t\t\t\t}\n\t\t\t\t\tremoveDraggingClass();\n\t\t\t\t},\n\t\t\t\tremoveDraggingClass = function() {\n\t\t\t\t\tif(hasDraggingClass) {\n\t\t\t\t\t\tframework.removeClass(template, 'pswp--dragging');\n\t\t\t\t\t\thasDraggingClass = false;\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t_listen('resize' , updateZoomable);\n\t\t\t_listen('afterChange' , updateZoomable);\n\t\t\t_listen('pointerDown', function() {\n\t\t\t\tif(self.mouseZoomedIn) {\n\t\t\t\t\thasDraggingClass = true;\n\t\t\t\t\tframework.addClass(template, 'pswp--dragging');\n\t\t\t\t}\n\t\t\t});\n\t\t\t_listen('pointerUp', removeDraggingClass);\n\n\t\t\tif(!onInit) {\n\t\t\t\tupdateZoomable();\n\t\t\t}\n\t\t\t\n\t\t},\n\n\t\thandleMouseWheel: function(e) {\n\n\t\t\tif(_currZoomLevel <= self.currItem.fitRatio) {\n\t\t\t\tif( _options.modal ) {\n\n\t\t\t\t\tif (!_options.closeOnScroll || _numAnimations || _isDragging) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t} else if(_transformKey && Math.abs(e.deltaY) > 2) {\n\t\t\t\t\t\t// close PhotoSwipe\n\t\t\t\t\t\t// if browser supports transforms & scroll changed enough\n\t\t\t\t\t\t_closedByScroll = true;\n\t\t\t\t\t\tself.close();\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// allow just one event to fire\n\t\t\te.stopPropagation();\n\n\t\t\t// https://developer.mozilla.org/en-US/docs/Web/Events/wheel\n\t\t\t_wheelDelta.x = 0;\n\n\t\t\tif('deltaX' in e) {\n\t\t\t\tif(e.deltaMode === 1 /* DOM_DELTA_LINE */) {\n\t\t\t\t\t// 18 - average line height\n\t\t\t\t\t_wheelDelta.x = e.deltaX * 18;\n\t\t\t\t\t_wheelDelta.y = e.deltaY * 18;\n\t\t\t\t} else {\n\t\t\t\t\t_wheelDelta.x = e.deltaX;\n\t\t\t\t\t_wheelDelta.y = e.deltaY;\n\t\t\t\t}\n\t\t\t} else if('wheelDelta' in e) {\n\t\t\t\tif(e.wheelDeltaX) {\n\t\t\t\t\t_wheelDelta.x = -0.16 * e.wheelDeltaX;\n\t\t\t\t}\n\t\t\t\tif(e.wheelDeltaY) {\n\t\t\t\t\t_wheelDelta.y = -0.16 * e.wheelDeltaY;\n\t\t\t\t} else {\n\t\t\t\t\t_wheelDelta.y = -0.16 * e.wheelDelta;\n\t\t\t\t}\n\t\t\t} else if('detail' in e) {\n\t\t\t\t_wheelDelta.y = e.detail;\n\t\t\t} else {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_calculatePanBounds(_currZoomLevel, true);\n\n\t\t\tvar newPanX = _panOffset.x - _wheelDelta.x,\n\t\t\t\tnewPanY = _panOffset.y - _wheelDelta.y;\n\n\t\t\t// only prevent scrolling in nonmodal mode when not at edges\n\t\t\tif (_options.modal ||\n\t\t\t\t(\n\t\t\t\tnewPanX <= _currPanBounds.min.x && newPanX >= _currPanBounds.max.x &&\n\t\t\t\tnewPanY <= _currPanBounds.min.y && newPanY >= _currPanBounds.max.y\n\t\t\t\t) ) {\n\t\t\t\te.preventDefault();\n\t\t\t}\n\n\t\t\t// TODO: use rAF instead of mousewheel?\n\t\t\tself.panTo(newPanX, newPanY);\n\t\t},\n\n\t\ttoggleDesktopZoom: function(centerPoint) {\n\t\t\tcenterPoint = centerPoint || {x:_viewportSize.x/2 + _offset.x, y:_viewportSize.y/2 + _offset.y };\n\n\t\t\tvar doubleTapZoomLevel = _options.getDoubleTapZoom(true, self.currItem);\n\t\t\tvar zoomOut = _currZoomLevel === doubleTapZoomLevel;\n\t\t\t\n\t\t\tself.mouseZoomedIn = !zoomOut;\n\n\t\t\tself.zoomTo(zoomOut ? self.currItem.initialZoomLevel : doubleTapZoomLevel, centerPoint, 333);\n\t\t\tframework[ (!zoomOut ? 'add' : 'remove') + 'Class'](template, 'pswp--zoomed-in');\n\t\t}\n\n\t}\n});\n\n\n/*>>desktop-zoom*/\n\n/*>>history*/\n/**\n *\n * history.js:\n *\n * - Back button to close gallery.\n * \n * - Unique URL for each slide: example.com/&pid=1&gid=3\n * (where PID is picture index, and GID and gallery index)\n * \n * - Switch URL when slides change.\n * \n */\n\n\nvar _historyDefaultOptions = {\n\thistory: true,\n\tgalleryUID: 1\n};\n\nvar _historyUpdateTimeout,\n\t_hashChangeTimeout,\n\t_hashAnimCheckTimeout,\n\t_hashChangedByScript,\n\t_hashChangedByHistory,\n\t_hashReseted,\n\t_initialHash,\n\t_historyChanged,\n\t_closedFromURL,\n\t_urlChangedOnce,\n\t_windowLoc,\n\n\t_supportsPushState,\n\n\t_getHash = function() {\n\t\treturn _windowLoc.hash.substring(1);\n\t},\n\t_cleanHistoryTimeouts = function() {\n\n\t\tif(_historyUpdateTimeout) {\n\t\t\tclearTimeout(_historyUpdateTimeout);\n\t\t}\n\n\t\tif(_hashAnimCheckTimeout) {\n\t\t\tclearTimeout(_hashAnimCheckTimeout);\n\t\t}\n\t},\n\n\t// pid - Picture index\n\t// gid - Gallery index\n\t_parseItemIndexFromURL = function() {\n\t\tvar hash = _getHash(),\n\t\t\tparams = {};\n\n\t\tif(hash.length < 5) { // pid=1\n\t\t\treturn params;\n\t\t}\n\n\t\tvar i, vars = hash.split('&');\n\t\tfor (i = 0; i < vars.length; i++) {\n\t\t\tif(!vars[i]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tvar pair = vars[i].split('=');\t\n\t\t\tif(pair.length < 2) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tparams[pair[0]] = pair[1];\n\t\t}\n\t\tif(_options.galleryPIDs) {\n\t\t\t// detect custom pid in hash and search for it among the items collection\n\t\t\tvar searchfor = params.pid;\n\t\t\tparams.pid = 0; // if custom pid cannot be found, fallback to the first item\n\t\t\tfor(i = 0; i < _items.length; i++) {\n\t\t\t\tif(_items[i].pid === searchfor) {\n\t\t\t\t\tparams.pid = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tparams.pid = parseInt(params.pid,10)-1;\n\t\t}\n\t\tif( params.pid < 0 ) {\n\t\t\tparams.pid = 0;\n\t\t}\n\t\treturn params;\n\t},\n\t_updateHash = function() {\n\n\t\tif(_hashAnimCheckTimeout) {\n\t\t\tclearTimeout(_hashAnimCheckTimeout);\n\t\t}\n\n\n\t\tif(_numAnimations || _isDragging) {\n\t\t\t// changing browser URL forces layout/paint in some browsers, which causes noticable lag during animation\n\t\t\t// that's why we update hash only when no animations running\n\t\t\t_hashAnimCheckTimeout = setTimeout(_updateHash, 500);\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif(_hashChangedByScript) {\n\t\t\tclearTimeout(_hashChangeTimeout);\n\t\t} else {\n\t\t\t_hashChangedByScript = true;\n\t\t}\n\n\n\t\tvar pid = (_currentItemIndex + 1);\n\t\tvar item = _getItemAt( _currentItemIndex );\n\t\tif(item.hasOwnProperty('pid')) {\n\t\t\t// carry forward any custom pid assigned to the item\n\t\t\tpid = item.pid;\n\t\t}\n\t\tvar newHash = _initialHash + '&' + 'gid=' + _options.galleryUID + '&' + 'pid=' + pid;\n\n\t\tif(!_historyChanged) {\n\t\t\tif(_windowLoc.hash.indexOf(newHash) === -1) {\n\t\t\t\t_urlChangedOnce = true;\n\t\t\t}\n\t\t\t// first time - add new hisory record, then just replace\n\t\t}\n\n\t\tvar newURL = _windowLoc.href.split('#')[0] + '#' + newHash;\n\n\t\tif( _supportsPushState ) {\n\n\t\t\tif('#' + newHash !== window.location.hash) {\n\t\t\t\thistory[_historyChanged ? 'replaceState' : 'pushState']('', document.title, newURL);\n\t\t\t}\n\n\t\t} else {\n\t\t\tif(_historyChanged) {\n\t\t\t\t_windowLoc.replace( newURL );\n\t\t\t} else {\n\t\t\t\t_windowLoc.hash = newHash;\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\n\t\t_historyChanged = true;\n\t\t_hashChangeTimeout = setTimeout(function() {\n\t\t\t_hashChangedByScript = false;\n\t\t}, 60);\n\t};\n\n\n\n\t\n\n_registerModule('History', {\n\n\t\n\n\tpublicMethods: {\n\t\tinitHistory: function() {\n\n\t\t\tframework.extend(_options, _historyDefaultOptions, true);\n\n\t\t\tif( !_options.history ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\t_windowLoc = window.location;\n\t\t\t_urlChangedOnce = false;\n\t\t\t_closedFromURL = false;\n\t\t\t_historyChanged = false;\n\t\t\t_initialHash = _getHash();\n\t\t\t_supportsPushState = ('pushState' in history);\n\n\n\t\t\tif(_initialHash.indexOf('gid=') > -1) {\n\t\t\t\t_initialHash = _initialHash.split('&gid=')[0];\n\t\t\t\t_initialHash = _initialHash.split('?gid=')[0];\n\t\t\t}\n\t\t\t\n\n\t\t\t_listen('afterChange', self.updateURL);\n\t\t\t_listen('unbindEvents', function() {\n\t\t\t\tframework.unbind(window, 'hashchange', self.onHashChange);\n\t\t\t});\n\n\n\t\t\tvar returnToOriginal = function() {\n\t\t\t\t_hashReseted = true;\n\t\t\t\tif(!_closedFromURL) {\n\n\t\t\t\t\tif(_urlChangedOnce) {\n\t\t\t\t\t\thistory.back();\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif(_initialHash) {\n\t\t\t\t\t\t\t_windowLoc.hash = _initialHash;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (_supportsPushState) {\n\n\t\t\t\t\t\t\t\t// remove hash from url without refreshing it or scrolling to top\n\t\t\t\t\t\t\t\thistory.pushState('', document.title, _windowLoc.pathname + _windowLoc.search );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t_windowLoc.hash = '';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\n\t\t\t\t_cleanHistoryTimeouts();\n\t\t\t};\n\n\n\t\t\t_listen('unbindEvents', function() {\n\t\t\t\tif(_closedByScroll) {\n\t\t\t\t\t// if PhotoSwipe is closed by scroll, we go \"back\" before the closing animation starts\n\t\t\t\t\t// this is done to keep the scroll position\n\t\t\t\t\treturnToOriginal();\n\t\t\t\t}\n\t\t\t});\n\t\t\t_listen('destroy', function() {\n\t\t\t\tif(!_hashReseted) {\n\t\t\t\t\treturnToOriginal();\n\t\t\t\t}\n\t\t\t});\n\t\t\t_listen('firstUpdate', function() {\n\t\t\t\t_currentItemIndex = _parseItemIndexFromURL().pid;\n\t\t\t});\n\n\t\t\t\n\n\t\t\t\n\t\t\tvar index = _initialHash.indexOf('pid=');\n\t\t\tif(index > -1) {\n\t\t\t\t_initialHash = _initialHash.substring(0, index);\n\t\t\t\tif(_initialHash.slice(-1) === '&') {\n\t\t\t\t\t_initialHash = _initialHash.slice(0, -1);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\n\t\t\tsetTimeout(function() {\n\t\t\t\tif(_isOpen) { // hasn't destroyed yet\n\t\t\t\t\tframework.bind(window, 'hashchange', self.onHashChange);\n\t\t\t\t}\n\t\t\t}, 40);\n\t\t\t\n\t\t},\n\t\tonHashChange: function() {\n\n\t\t\tif(_getHash() === _initialHash) {\n\n\t\t\t\t_closedFromURL = true;\n\t\t\t\tself.close();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(!_hashChangedByScript) {\n\n\t\t\t\t_hashChangedByHistory = true;\n\t\t\t\tself.goTo( _parseItemIndexFromURL().pid );\n\t\t\t\t_hashChangedByHistory = false;\n\t\t\t}\n\t\t\t\n\t\t},\n\t\tupdateURL: function() {\n\n\t\t\t// Delay the update of URL, to avoid lag during transition, \n\t\t\t// and to not to trigger actions like \"refresh page sound\" or \"blinking favicon\" to often\n\t\t\t\n\t\t\t_cleanHistoryTimeouts();\n\t\t\t\n\n\t\t\tif(_hashChangedByHistory) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(!_historyChanged) {\n\t\t\t\t_updateHash(); // first time\n\t\t\t} else {\n\t\t\t\t_historyUpdateTimeout = setTimeout(_updateHash, 800);\n\t\t\t}\n\t\t}\n\t\n\t}\n});\n\n\n/*>>history*/\n\tframework.extend(self, publicMethods); };\n\treturn PhotoSwipe;\n});","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container container_mobile\"},[(!_vm.infoLoaded)?_c('div',{staticClass:\"loader\"}):_c('div',{staticClass:\"grid grid_h-center grid_v-margins\"},[(_vm.starts.length)?_c('div',{staticClass:\"grid__col grid__col_xl-20\"},[_c('div',{staticClass:\"block block_wide\"},[_c('div',{staticClass:\"block__item block__intro\"},[_c('div',{staticClass:\"block__intro-item block__intro-item_md\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('races.title')))])]),_vm._v(\" \"),_c('div',{staticClass:\"block__intro-item\"},[_c('event-races',{attrs:{\"utcCurrentTime\":_vm.utcCurrentTime,\"scountInfo\":_vm.scountInfo,\"races\":_vm.starts,\"finished\":_vm.finished,\"event\":_vm.event,\"group-by-day\":!_vm.finished,\"raceProps\":{\n showIsLive: _vm.isLive,\n }},on:{\"click:aboutOnline\":function () {\n _vm.$root.$modals['about-online-modal'].open();\n }}})],1)]),_vm._v(\" \"),(_vm.isBannerGift)?_c('div',{staticClass:\"block__item\"},[_c('BannerInfo',{attrs:{\"title\":_vm.$t('gift.title'),\"imgUrl\":_vm.themeImages['gift']},on:{\"close\":_vm.closeBannerGift}},[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.$t('gift.text'))}})])],1):_vm._e(),_vm._v(\" \"),(!_vm.finished && _vm.event.hasCommission && _vm.event.commission)?_c('div',{staticClass:\"block__item\"},[_c('div',{staticClass:\"text-xs color-muted text-center\",domProps:{\"innerHTML\":_vm._s(_vm.$t('event.slotCommission', [((_vm.event.commission.toLocaleString(_vm.$lang)) + \"%\")]))}})]):_vm._e()])]):_vm._e(),_vm._v(\" \"),(_vm.theme === 'rr' && !_vm.event.rot)?_c('div',{staticClass:\"grid__col grid__col_xl-20\"},[_c('Banner',{attrs:{\"content\":_vm.banner,\"contentMobile\":_vm.bannerMobile}})],1):_vm._e(),_vm._v(\" \"),(!_vm.finished && _vm.availableGoods.length)?_c('div',{staticClass:\"grid__col grid__col_xl-20\"},[_c('div',{staticClass:\"block block_wide\"},[_c('div',{staticClass:\"block__item block__intro\"},[_c('div',{staticClass:\"block__intro-item block__intro-item_md\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('goods.title')))])]),_vm._v(\" \"),_c('div',{staticClass:\"block__intro-item\"},[_c('event-races',{attrs:{\"utcCurrentTime\":_vm.utcCurrentTime,\"scountInfo\":_vm.scountInfo,\"races\":_vm.availableGoods,\"finished\":_vm.finished,\"type\":\"other\"}})],1)])])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"grid__col grid__col_lg-14 grid__col_xl-12\"},[_c('div',{staticClass:\"grid grid_v-margins\"},[_c('div',{staticClass:\"grid__col\"},[_c('event-about',{attrs:{\"event\":_vm.event,\"finished\":_vm.finished}})],1),_vm._v(\" \"),(_vm.series.length)?_c('div',{staticClass:\"grid__col\"},[_c('div',{staticClass:\"block block_wide\"},[_c('div',{staticClass:\"block__item block__intro\"},[_vm._m(0),_vm._v(\" \"),_c('div',{staticClass:\"block__intro-item block__intro-item_md\"},[_c('div',{staticClass:\"grid grid_v-margins\"},_vm._l((_vm.series),function(item){return _c('div',{key:item.id,staticClass:\"grid__col\"},[_c('router-link',{staticClass:\"event-series-card\",style:({\n backgroundImage: (\"url(\" + (_vm.getSeriesImage(item.headerBanner)) + \")\"),\n backgroundPosition: !item.headerBanner && 'left 20% center',\n }),attrs:{\"to\":(\"/series/\" + (item.code || item.id))}},[_c('div',{staticClass:\"event-series-card__overlay\"}),_vm._v(\" \"),_c('h3',{staticClass:\"event-series-card__title\"},[_vm._v(_vm._s(item.title))])])],1)}),0)])])])]):_vm._e()])]),_vm._v(\" \"),_c('div',{staticClass:\"grid__col grid__col_lg-10 grid__col_xl-8\"},[_c('div',{staticClass:\"grid grid_v-margins\"},[(_vm.hasMembers && _vm.showMembers)?_c('event-members',{staticClass:\"grid__col\"}):_vm._e(),_vm._v(\" \"),(_vm.startingPack)?_c('div',{staticClass:\"grid__col\"},[_c('div',{staticClass:\"block block_wide\"},[_c('div',{staticClass:\"block__item block__intro\"},[_c('div',{staticClass:\"block__intro-item block__intro-item_md\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('startPack.title')))])]),_vm._v(\" \"),_c('div',{staticClass:\"block__intro-item\"},[_c('div',{staticClass:\"text-content html-content start-pack\",domProps:{\"innerHTML\":_vm._s(_vm.startingPack)}})])])])]):_vm._e(),_vm._v(\" \"),(_vm.showDocs)?_c('div',{staticClass:\"grid__col\"},[_c('div',{staticClass:\"block block_wide\"},[_c('div',{staticClass:\"block__item block__intro\"},[_c('div',{staticClass:\"block__intro-item block__intro-item_md\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('documents.title')))])]),_vm._v(\" \"),_c('div',{staticClass:\"block__intro-item\"},[_c('ul',{staticClass:\"list\"},_vm._l((_vm.docs),function(item){return _c('li',{key:item.id},[_c('a',{staticClass:\"link link_primary\",attrs:{\"href\":item.url,\"target\":\"_blank\"},domProps:{\"innerHTML\":_vm._s(item.title)}}),_vm._v(\" \"),_c('div',{staticClass:\"text-sm color-muted\"},[_vm._v(\"\\n \"+_vm._s(item.ext)+\"\\n \")])])}),0)])])])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"grid__col\"},[_c('div',{staticClass:\"block block_wide\"},[_c('div',{staticClass:\"block__item block__intro\"},[(_vm.logos && _vm.logos.length)?_c('div',{staticClass:\"block__intro-item text-center\"},[_c('div',{staticClass:\"event-organizer-logos\"},_vm._l((_vm.logos),function(item){return _c(item.lnk ? 'a' : 'div',{key:item.iu,tag:\"component\",staticClass:\"event-organizer-logos__item\",attrs:{\"href\":item.lnk,\"target\":item.lnk && '_blank',\"rel\":item.lnk && 'noopener'}},[_c('img',{attrs:{\"src\":item.iu.replace('-x-', '-x64'),\"srcset\":item.iu.replace('-x-', '-x128') + ' 2x',\"alt\":item.alt}})])}),1)]):_c('div',{staticClass:\"block__intro-item text-center\"},[_c('b',[_vm._v(_vm._s(_vm.beneficiary.name))])]),_vm._v(\" \"),(_vm.associations && _vm.associations.length)?_c('div',{staticClass:\"block__intro-item text-center\"},[_c('div',{staticClass:\"event-association-logos\"},_vm._l((_vm.associations),function(item){return _c(item.lnk ? 'a' : 'div',{key:item.iu,tag:\"component\",staticClass:\"event-association-logos__item\",attrs:{\"href\":item.lnk,\"target\":item.lnk && '_blank',\"rel\":item.lnk && 'noopener'}},[_c('img',{attrs:{\"src\":item.iu.replace('-x-', '-x64'),\"srcset\":item.iu.replace('-x-', '-x128') + ' 2x',\"alt\":item.alt}})])}),1)]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"block__intro-item text-center\"},[_c('a',{directives:[{name:\"open-modal\",rawName:\"v-open-modal\",value:({ name: 'beneficiary-props-modal' }),expression:\"{ name: 'beneficiary-props-modal' }\"}],staticClass:\"link link_light text-sm\",attrs:{\"href\":\"#\",\"target\":\"_blank\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('beneficiary.info'))+\"\\n \")])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"grid__col\"},[_c('ContactsBlock',{attrs:{\"content\":_vm.contacts}})],1)],1)])]),_vm._v(\" \"),_c('modal',{ref:\"modal\",attrs:{\"name\":\"beneficiary-props-modal\",\"align\":\"center\"}},[_c('div',{staticClass:\"base-modal__heading base-modal__item\"},[_c('h3',{staticClass:\"base-modal__title\"},[_vm._v(_vm._s(_vm.$t('beneficiary.info')))])]),_vm._v(\" \"),_c('div',{staticClass:\"base-modal__body base-modal__item\"},[_c('div',{staticClass:\"beneficiary-props\",attrs:{\"id\":\"beneficiaryProps\"}},[(_vm.beneficiary.name)?_c('div',{staticClass:\"beneficiary-props__item\"},[_c('div',{staticClass:\"beneficiary-props__title\"},[_c('b',[_vm._v(_vm._s(_vm.$t('beneficiary.name')))])]),_vm._v(\" \"),_c('div',{staticClass:\"beneficiary-props__text\"},[_vm._v(\"\\n \"+_vm._s(_vm.beneficiary.name)+\"\\n \")])]):_vm._e(),_vm._v(\" \"),(_vm.beneficiary.inn)?_c('div',{staticClass:\"beneficiary-props__item\"},[_c('div',{staticClass:\"beneficiary-props__title\"},[_c('b',[_vm._v(_vm._s(_vm.$t('beneficiary.inn')))])]),_vm._v(\" \"),_c('div',{staticClass:\"beneficiary-props__text\"},[_vm._v(\"\\n \"+_vm._s(_vm.beneficiary.inn)+\"\\n \")])]):_vm._e(),_vm._v(\" \"),(_vm.beneficiary.ogrn && !_vm.hideOgrn)?_c('div',{staticClass:\"beneficiary-props__item\"},[_c('div',{staticClass:\"beneficiary-props__title\"},[_c('b',[_vm._v(_vm._s(_vm.$t('beneficiary.ogrn')))])]),_vm._v(\" \"),_c('div',{staticClass:\"beneficiary-props__text\"},[_vm._v(\"\\n \"+_vm._s(_vm.beneficiary.ogrn)+\"\\n \")])]):_vm._e(),_vm._v(\" \"),(_vm.beneficiary.address)?_c('div',{staticClass:\"beneficiary-props__item\"},[_c('div',{staticClass:\"beneficiary-props__title\"},[_c('b',[_vm._v(_vm._s(_vm.$t('beneficiary.address')))])]),_vm._v(\" \"),_c('div',{staticClass:\"beneficiary-props__text\"},[_vm._v(\"\\n \"+_vm._s(_vm.beneficiary.address)+\"\\n \")])]):_vm._e()])]),_vm._v(\" \"),_c('div',{staticClass:\"base-modal__body base-modal__item\"},[_c('Button',{attrs:{\"variant\":\"secondary\",\"size\":\"lg\",\"text\":_vm.$t('beneficiary.print')},on:{\"click\":_vm.printBeneficiaryInfo}})],1)])],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"block__intro-item block__intro-item_md\"},[_c('h2',[_vm._v(\"Событие входит в серию\")])])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"block block_wide\"},[_c('div',{staticClass:\"block__item block__intro\"},[_c('div',{staticClass:\"block__intro-item block__intro-item_md\"},[_c('div',{staticClass:\"grid grid_v-center\"},[_c('div',{staticClass:\"grid__col grid__col_stretch\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('aboutEvent.title')))])]),_vm._v(\" \"),(_vm.eventSiteLink)?_c('div',{staticClass:\"grid__col grid__col_auto\"},[_c('a',{staticClass:\"link link_light text-with-icon text-sm\",attrs:{\"href\":_vm.eventSiteLink,\"target\":\"_blank\",\"rel\":\"noopener\"}},[_c('icon',{staticClass:\"icon\",attrs:{\"icon-name\":\"external-link\",\"w\":\"16\",\"h\":\"16\"}}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.$t('aboutEvent.website')))])],1)]):_vm._e()])]),_vm._v(\" \"),_c('div',{staticClass:\"block__intro-item\"},[_c('div',{staticClass:\"text-content html-content\",attrs:{\"id\":\"eventDescription\"},domProps:{\"innerHTML\":_vm._s(_vm.description)}})])]),_vm._v(\" \"),(_vm.disciplines && _vm.disciplines.length)?_c('div',{staticClass:\"block__item block__body\"},[_c('div',{staticClass:\"block__body-item\"},[_c('h3',{staticClass:\"heading-line\"},[_c('span',{staticClass:\"heading-line__text\"},[_vm._v(_vm._s(_vm.$t('aboutEvent.sportType')))])])]),_vm._v(\" \"),_c('div',{staticClass:\"block__body-item\"},_vm._l((_vm.disciplines),function(item,i){return _c('span',{key:item},[(i > 0)?[_vm._v(\"• \")]:_vm._e(),_vm._v(_vm._s(item)+\"\\n \")],2)}),0)]):_vm._e(),_vm._v(\" \"),(_vm.showMap)?_c('div',{staticClass:\"block__item block__body\"},[_c('div',{staticClass:\"block__body-item\"},[_c('h3',{staticClass:\"heading-line\"},[_c('span',{staticClass:\"heading-line__text\"},[_vm._v(_vm._s(_vm.$t('aboutEvent.location')))])])]),_vm._v(\" \"),_c('div',{staticClass:\"block__body-item\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showMap),expression:\"showMap\"}],staticClass:\"event-location-map\",attrs:{\"id\":\"locationMap\"}}),_vm._v(\" \"),_c('div',[_vm._v(_vm._s(_vm.place))])])]):_vm._e(),_vm._v(\" \"),(_vm.program)?_c('div',{staticClass:\"block__item block__body\"},[_c('div',{staticClass:\"block__body-item\"},[_c('h3',{staticClass:\"heading-line\"},[_c('span',{staticClass:\"heading-line__text\"},[_vm._v(_vm._s(_vm.$t('aboutEvent.program')))])])]),_vm._v(\" \"),_c('div',{staticClass:\"block__body-item\"},[_c('div',{staticClass:\"event-program text-content html-content\",attrs:{\"id\":\"eventProgram\"},domProps:{\"innerHTML\":_vm._s(_vm.program)}})]),_vm._v(\" \"),_c('photo-viewer',{attrs:{\"containerId\":\"eventProgram\"}})],1):_vm._e(),_vm._v(\" \"),_c('photo-viewer',{attrs:{\"containerId\":\"eventDescription\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"pswp\",staticClass:\"pswp\",attrs:{\"tabindex\":\"-1\",\"role\":\"dialog\",\"aria-hidden\":\"true\"}},[_c('div',{staticClass:\"pswp__bg\"}),_vm._v(\" \"),_vm._m(0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pswp__scroll-wrap\"},[_c('div',{staticClass:\"pswp__container\"},[_c('div',{staticClass:\"pswp__item\"}),_vm._v(\" \"),_c('div',{staticClass:\"pswp__item\"}),_vm._v(\" \"),_c('div',{staticClass:\"pswp__item\"})]),_vm._v(\" \"),_c('div',{staticClass:\"pswp__ui pswp__ui--hidden\"},[_c('div',{staticClass:\"pswp__top-bar\"},[_c('div',{staticClass:\"pswp__counter\"}),_vm._v(\" \"),_c('button',{staticClass:\"pswp__button pswp__button--close\",attrs:{\"title\":\"Закрыть (Esc)\"}}),_vm._v(\" \"),_c('button',{staticClass:\"pswp__button pswp__button--share\",attrs:{\"title\":\"Share\"}}),_vm._v(\" \"),_c('button',{staticClass:\"pswp__button pswp__button--fs\",attrs:{\"title\":\"Toggle fullscreen\"}}),_vm._v(\" \"),_c('button',{staticClass:\"pswp__button pswp__button--zoom\",attrs:{\"title\":\"Приблизить/отдалить\"}}),_vm._v(\" \"),_c('div',{staticClass:\"pswp__preloader\"},[_c('div',{staticClass:\"pswp__preloader__icn\"},[_c('div',{staticClass:\"pswp__preloader__cut\"},[_c('div',{staticClass:\"pswp__preloader__donut\"})])])])]),_vm._v(\" \"),_c('div',{staticClass:\"pswp__share-modal pswp__share-modal--hidden pswp__single-tap\"},[_c('div',{staticClass:\"pswp__share-tooltip\"})]),_vm._v(\" \"),_c('button',{staticClass:\"pswp__button pswp__button--arrow--left\",attrs:{\"title\":\"Назад\"}}),_vm._v(\" \"),_c('button',{staticClass:\"pswp__button pswp__button--arrow--right\",attrs:{\"title\":\"Вперёд\"}}),_vm._v(\" \"),_c('div',{staticClass:\"pswp__caption\"},[_c('div',{staticClass:\"pswp__caption__center\"})])])])}]\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotoViewer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotoViewer.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PhotoViewer.vue?vue&type=template&id=4c686b80&scoped=true&\"\nimport script from \"./PhotoViewer.vue?vue&type=script&lang=js&\"\nexport * from \"./PhotoViewer.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PhotoViewer.vue?vue&type=style&index=0&id=4c686b80&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4c686b80\",\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./EventAbout.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./EventAbout.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EventAbout.vue?vue&type=template&id=5e6d3478&\"\nimport script from \"./EventAbout.vue?vue&type=script&lang=js&\"\nexport * from \"./EventAbout.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EventAbout.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"block block_wide\"},[_c('div',{staticClass:\"block__item block__intro\"},[_c('div',{staticClass:\"block__intro-item block__intro-item_md\"},[_c('router-link',{staticClass:\"link link_inherit\",attrs:{\"to\":{ name: 'Members', hash: '#eventsNav' }}},[_c('h2',[_vm._v(\"\\n \"+_vm._s(_vm.$t('event.nav.members'))+\"\\n \"),_c('sup',{staticClass:\"color-muted\"},[_c('b',[_vm._v(_vm._s(_vm.membersTotalCount))])])])])],1),_vm._v(\" \"),_c('div',{staticClass:\"block__intro-item\"},[(_vm.members)?_c('div',{staticClass:\"members\"},[(_vm.membersCount > 7)?_c('router-link',{staticClass:\"members__item members__item_more\",attrs:{\"to\":{ name: 'Members', hash: '#eventsNav' }}},[_c('avatar',{attrs:{\"username\":\"\",\"size\":36}}),_vm._v(\" \"),_c('icon',{staticClass:\"members__item-more\",attrs:{\"icon-name\":\"more-horizontal\"}})],1):_vm._e(),_vm._v(\" \"),_vm._l((_vm.members),function(item){return _c('div',{key:item.Id,staticClass:\"members__item\"},[_c('avatar',{attrs:{\"username\":item.LastName + ' ' + item.FirstName,\"size\":36}})],1)})],2):_c('div',{staticClass:\"members\"},_vm._l((8),function(i){return _c('div',{key:i,staticClass:\"members__item\"},[_c('skeleton',{attrs:{\"circle\":true,\"width\":\"36px\",\"height\":\"36px\"}})],1)}),0)])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./EventMembers.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./EventMembers.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EventMembers.vue?vue&type=template&id=1c4df0e1&\"\nimport script from \"./EventMembers.vue?vue&type=script&lang=js&\"\nexport * from \"./EventMembers.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EventMembers.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"banner-info\",class:{\n 'banner-info_img': _vm.imgUrl,\n }},[_c('div',{staticClass:\"banner-info__title\"},[_vm._v(_vm._s(_vm.title))]),_vm._v(\" \"),(_vm.$slots.default)?_c('div',{staticClass:\"banner-info__content\"},[_vm._t(\"default\")],2):_vm._e(),_vm._v(\" \"),(_vm.imgUrl)?_c('div',{staticClass:\"banner-info__img\"},[_c('img',{attrs:{\"src\":_vm.imgUrl,\"alt\":_vm.title}})]):_vm._e(),_vm._v(\" \"),_c('button',{staticClass:\"rr-button rr-button_sm rr-button_clear banner-info__close\",attrs:{\"type\":\"button\",\"aria-label\":\"Закрыть\"},on:{\"click\":_vm.close}},[_c('icon',{attrs:{\"icon-name\":\"close\",\"w\":\"18\",\"h\":\"18\"}})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./BannerInfo.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./BannerInfo.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./BannerInfo.vue?vue&type=template&id=53419eb6&scoped=true&\"\nimport script from \"./BannerInfo.vue?vue&type=script&lang=js&\"\nexport * from \"./BannerInfo.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BannerInfo.vue?vue&type=style&index=0&id=53419eb6&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"53419eb6\",\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Overview.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Overview.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Overview.vue?vue&type=template&id=9ff746f8&\"\nimport script from \"./Overview.vue?vue&type=script&lang=js&\"\nexport * from \"./Overview.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Overview.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./BannerInfo.vue?vue&type=style&index=0&id=53419eb6&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./BannerInfo.vue?vue&type=style&index=0&id=53419eb6&lang=scss&scoped=true&\""],"sourceRoot":""}