Your IP : 216.73.217.79


Current Path : /var/www/cesa.co.za/app/framework7/js/
Upload File :
Current File : /var/www/cesa.co.za/app/framework7/js/framework7.min.js.map

{"version":3,"sources":["framework7.js"],"names":["global","factory","exports","module","define","amd","Framework7","this","Template7","args","len","arguments","length","template","data","instance","Template7Class","rendered","compile","$$1$1","selector","context","arr","i","Dom7","els","tempParent","html","trim","indexOf","toCreate","document","createElement","innerHTML","childNodes","push","match","querySelectorAll","getElementById","split","nodeType","window","unique","uniqueArray","toCamelCase","string","toLowerCase","replace","group1","toUpperCase","requestAnimationFrame","callback","webkitRequestAnimationFrame","setTimeout","eventShortcut","name","noTrigger","trigger","ref","on","apply","concat","A","aA1","aA2","B","C","calcBezier","aT","getSlope","bezier","mX1","mY1","mX2","mY2","getTForX","aX","intervalStart","currentSample","lastSample","kSplineTableSize","sampleValues","kSampleStepSize","guessForT","initialSlope","NEWTON_MIN_SLOPE","aGuessT","NEWTON_ITERATIONS","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","Math","abs","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","binarySubdivide","Error","float32ArraySupported","Float32Array","Array","x","Request$1","requestOptions","fireCallback","callbackName","globals","options","globalsNoCallbacks","Utils","extend","forEach","defaults","url","location","toString","method","async","cache","user","password","headers","xhrFields","statusCode","processData","dataType","contentType","timeout","type","paramsPrefix","stringData","serializeObject","abortTimeout","Date","now","jsonpRequests","callbackSplit","requestUrl","addVars","filter","el","join","script","onerror","clearTimeout","src","parentNode","removeChild","querySelector","appendChild","xhr","XMLHttpRequest","requestParameters","open","postData","ArrayBuffer","Blob","Document","FormData","constructor","boundary","setRequestHeader","data$1","newData","Object","keys","headerName","crossDomain","test","RegExp","$2","host","xhrTimeout","onload","status","JSON","parse","responseText","err","responseType","response","onabort","abort","send","RequestShortcut","success","error","assign","assign$1","undefined","stringify","str","res","tokens","key","index","path","defaultDelimiter","delimiter","DEFAULT_DELIMITER","delimiters","DEFAULT_DELIMITERS","pathEscaped","PATH_REGEXP","exec","m","escaped","offset","slice","prev","next","capture","group","modifier","k","partial","repeat","optional","pattern","prefix","escapeGroup","escapeString","substr","tokensToFunction","matches","encode","encodeURIComponent","token","segment","value","isArray","TypeError","j","String","flags","sensitive","tokensToRegExp","strict","end","endsWith","map","route","isEndDelimited","pathToRegexp","groups","source","regexpToRegexp","parts","arrayToRegexp","stringToRegexp","refreshPage","navigate","currentRoute","ignoreCache","reloadCurrent","forward","forwardOptions","afterAnimation","pageClasses","navbarClasses","$newPage","removeClass","addClass","removeAttr","$oldPage","attr","dynamicNavbar","$newNavbarInner","$oldNavbarInner","router","allowPageChange","pageCallback","keepOldPage","app","theme","params","preloadPreviousPage","iosSwipeBack","hasClass","stackPages","separateNavbar","removePage","removeNavbar","emit","previousRoute","pushState","History","clearRouterQueue","setPositionClasses","$navbarEl","view","animate","history","reloadPages","reloadPrevious","reloadAll","$viewEl","$el","reload","removeThemeElements","children","remove","f7Page","$navbarsInView","$pagesInView","pageInView","navbarInView","newPagePosition","eq","navbar","getElByPage","pageEl","navbarEl","oldNavbarInnerEl","page","navbarInner","pushStateRoot","id","pushStateSeparator","currentPageEl","currentNavbarEl","saveHistory","newPageInDom","parents","f7Component","mount","componentEl","insertBefore","prepend","append","initialPages","each","$oldPageEl","$oldNavbarInnerEl","tab","tabLoad","delay","materialPageLoadDelay","iosPageLoadDelay","load","loadParams","loadOptions","ignorePageChange","resolve","newOptions","reject","content","pageName","templateUrl","component","componentUrl","parentPath","sameParams","paramName","allowDuplicateUrls","parseRouteUrl","getPageEl","pageTemplateLoader","pageComponentLoader","xhrRequest","then","pageContent","catch","navigateParams","navigateOptions","obj","createRoute","views","main","navigateUrl","currentPath","findMatchingRoute","redirect","call","modalLoadProp","modalLoad","pageLoadProp","resolveParams","resolveOptions","resolvedAsModal","modalRoute","tabRoute","contentEl","$newTabEl","unloadTabContent","f7RouterTabLoaded","tabEventTarget","$oldTabEl","animated","onTabsChanged","tabRemove","onTabLoaded","tabEl","$currentPageEl","find","tabShowResult","show","tabParentPageData","once","tabTemplateLoader","tabComponentLoader","tabContent","tabChild","destroy","removeTabContent","modalType","onModalLoaded","closeOnSwipeBack","modal","close","create","modalParams","modalInstance","off","closeByRouter","back","modalComponent","nextTick","removeModal","root","modalTemplateLoader","modalComponentLoader","modalContent","modalRemove","backward","backwardOptions","insertPage","preload","backIndex","force","unshift","prevAll","pageToRemove","$navbarToRemove","$pageToRemove","go","pop","loadBack","backParams","backOptions","currentRouteIsModal","modalToClose","get","previousUrl","query","parseUrlQuery","$previousPage","initSwipers","swiperEl","$swiperEl","swiper","initialSlide","isTabs","isRoutableTabs","dataset","e","findTabRoute","slides","activeIndex","t7ctx","Template7Context","Template7Utils","quoteSingleRexExp","quoteDoubleRexExp","isFunction","func","escape","helperToSlices","shiftIndex","helperParts","slices","part","blockQuoteRegExp","openingQuote","hashParts","hashName","hashContent","hash","stringToBlocks","blocks","stringBlocks","block","contextName","helperSlices","helperName","isPartial","helperContext","helperHash","helperContent","elseContent","toSkip","foundClosed","foundElse","depth","inverseContent","parseJsVariable","expression","object","variable","partName","parseJsParents","levelsUp","getCompileVar","ctx","newDepth","dataLevel","isFinite","getCompiledArguments","contextArray","Template7Helpers","_partial","partialName","p","partials","compiled","if","fn","inverse","unless","ret","reverse","first","last","with","delimeter","js","execute","prop","re1","re2","eval","js_if","js_compare","Template7Options","Template7Partials","head","staticAccessors","configurable","helpers","prototype","getCompileFn","t","getCompileInverse","resultString","compiledArguments","level","parentsString","defineProperties","registerHelper","unregisterHelper","registerPartial","unregisterPartial","Class","Methods","freeze","className","classes","classList","add","contains","toggleClass","toggle","attrs","arguments$1","setAttribute","attrName","getAttribute","removeAttribute","props","propName","dom7ElementDataStorage","dataKey","removeData","attributes","parseFloat","val","i$1","multiple","nodeName","values","selectedOptions","transform","elStyle","style","webkitTransform","transition","duration","webkitTransitionDuration","transitionDuration","handleLiveEvent","target","eventData","dom7EventData","is","targetSelector","listener","handleEvent","eventType","events","dom7LiveListeners","proxyListener","addEventListener","dom7Listeners","k$1","removeEventListener","proxy","dom","eventName","evt","CustomEvent","detail","bubbles","cancelable","createEvent","initEvent","dataIndex","dispatchEvent","transitionEnd","fireCallBack","animationEnd","width","innerWidth","css","outerWidth","includeMargins","styles","offsetWidth","getPropertyValue","height","innerHeight","outerHeight","offsetHeight","box","getBoundingClientRect","body","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","hide","display","getComputedStyle","toArray","matchedItems","modifiedItems","text","textContent","compareWith","webkitMatchesSelector","msMatchesSelector","child","previousSibling","returnIndex","newChild","tempDiv","firstChild","appendTo","parent","prependTo","before","cloneNode","insertAfter","after","nextSibling","nextElementSibling","nextAll","nextEls","previousElementSibling","prevEls","siblings","closest","foundElements","found","detach","toAdd","empty","Scroll","scrollTo","easing","render","time","getTime","startTime","done","progress","max","min","easeProgress","cos","PI","animateTop","currentTop","newTop","animateLeft","currentLeft","newLeft","maxTop","maxLeft","scrollHeight","scrollWidth","Animate","initialProps","initialParams","a","elements","animating","que","easingProgress","stop","frameId","cancelAnimationFrame","webkitCancelAnimationFrame","dom7AnimateInstance","complete","shift","began","begin","element","initialValue","finalValue","unit","currentValue","container","propsDone","elementsDone","initialFullValue","finalFullValue","animateInstance","click","bind","blur","focus","focusin","focusout","keyup","keydown","keypress","submit","change","mousedown","mousemove","mouseup","mouseenter","mouseleave","mouseout","mouseover","touchstart","touchend","touchmove","resize","scroll","methodName","defaultDiacriticsRemovalap","base","letters","diacriticsMap","mdPreloaderContent","eventNameToColonCase","hasColon","char","deleteProps","nextFrame","promise","handler","Promise","resolveArgs","rejectArgs","resolved","rejected","promiseHandlers","thenHandler","catchHandler","createPromise","removeDiacritics","param","urlToParse","href","paramsPart","decodeURIComponent","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","MozTransform","OTransform","MsTransform","msTransform","m41","m42","varName","parentParts","varValue","newParents","resultArray","toPush","isObject","o","len$1","to","from","deep","splice","nextSource","keysArray","nextIndex","nextKey","desc","getOwnPropertyDescriptor","enumerable","Device","ua","navigator","userAgent","device","ios","android","androidChrome","desktop","windows","iphone","iphoneX","ipod","ipad","cordova","phonegap","screen","os","osVersion","webView","standalone","webview","osVersionArr","metaViewport","minimalUi","needsStatusbarOverlay","orientation","statusbar","pixelRatio","devicePixelRatio","Framework7Class","self","eventsParents","eventsListeners","staticAccessors$1","components","event","onceHandler","eventHandler","local","eventsArray","localEvents","parentEvents","handlers","eventsParent","useModulesParams","instanceParams","modules","moduleName","useModules","modulesParams","moduleParams","modulePropName","moduleProp","moduleEventName","set","use","installModule","proto","static","install","Framework7$1","Framework7Class$$1","passedParams","version","language","routes","initOnDeviceReady","init","$rootEl","ls","localStorage","rtl","f7","__proto__","prototypeAccessors","$","t7","initialized","methods","Device$2","classNames","floor","parseInt","Support$1","positionSticky","support","div","position","touch","DocumentTouch","transforms3d","flexbox","observer","passiveListener","supportsPassive","opts","defineProperty","gestures","Support","Utils$2","utils","Resize","getSize","orientationchange","post","getJSON","json","postJSON","setup","Request","request","Touch","fastClicks","fastClicksDistanceThreshold","fastClicksDelayBetweenClicks","fastClicksExclude","disableContextMenu","tapHold","tapHoldDelay","tapHoldPreventClicks","activeState","activeStateElements","materialRipple","materialRippleElements","touchEvents","start","move","findActivableElement","activable","isInsideScrollableView","activeTimeout","rippleTimeout","addActive","activableElement","removeActive","createRipple","y","rippleWave","touchRipple","removeRipple","rippleTarget","rippleTouchStart","rippleElements","rippleParent","findRippleElement","touchStartX","touchStartY","rippleTouchMove","rippleTouchEnd","isMoved","emitAppTouchEvent","appTouchStartActive","appTouchMoveActive","appTouchEndActive","appTouchStartPassive","appTouchMovePassive","appTouchEndPassive","useRipple","touchStartTime","targetElement","trackClick","activeSelection","scrollParent","lastClickTime","tapHoldFired","tapHoldTimeout","needsFastClick","needsFastClickTimeOut","passive","activeListener","allowClick","nodes","isFormElement","activeElement","forwardedTouchEvent","stopImmediatePropagation","stopPropagation","prevent","targetNeedsPrevent","preventDefault","this$1","targetTouches","touches","targetNeedsFastClick","selection","getSelection","rangeCount","focusNode","isCollapsed","noBlur","androidNeedsBlur","pageX","pageY","f7ScrollTop","timeStamp","distance","tag","skipInputs","disabled","readOnly","targetNeedsFocus","changedTouches","initMouseEvent","screenX","screenY","clientX","clientY","elementFromPoint","sendClick","which","pathToRegexp_1","parse_1","compile_1","tokensToFunction_1","tokensToRegExp_1","tempDom","Framework7Component","c","extendContext","cycleKey","beforeCreate","watch","watchKey","dataKeyValue","newValue","eventNamePart","eventNameIndex","customArgs","argument","arg","isNaN","deepArg","pathIndex","styleEl","styleScopeId","created","mountMethod","beforeMount","mounted","beforeDestroy","destroyed","Component","componentString","item","line","scriptContent","scripts","scriptEl","queue","clearQueue","currentQueue","routerQueue","stateUrl","action","pushStateAnimate","handle","blockPopstate","state","previousState","allowChange","viewState","viewId","newState","replaceState","readyState","direction","redirectUrl","redirectOptions","Router$1","Router","isAppRouter","scrollHistory","iosDynamicNavbar","iosSeparateDynamicNavbar","initialNavbars","newRoute","animatableNavElements","newNavbarInner","oldNavbarInner","animatableNavEl","$iconEl","isSliding","isSubnavbar","needsOpacityTransition","hasIcon","animateIcon","leftOffset","f7NavbarLeftOffset","rightOffset","f7NavbarRightOffset","newNavEls","oldNavEls","iosAnimateNavbarBackIcon","navEl","navEls","n","otherEls","otherNavEl","iconTextEl","offsetLeft","animateWithCSS","oldPage","newPage","animateNavbars","navbarWidth","routerTransitionClass","animateWithJS","inverter","$shadowEl","opacity","$opacityEl","animateCustom","modalEl","removeEl","removeElements","removeElementsWithTimeout","removeElementsTimeout","findElement","stringSelector","notStacked","$container","flattenRoutes","flattenedRoutes","mergedPathsRoutes","childRoute","cRoute","tabs","mergedPathsRoutes$1","tRoute","foundTabRoute","$tabEl","tabId","findRouteByKey","matchingRoute","pathsToMatch","alias","aliasPath","matched","pathToMatch","keyObj","paramValue","removeFromXhrCache","xhrCache","hasQuery","passRouteQueryToRequest","passRouteParamsToRequest","regExp","xhrCacheIgnoreGetParameters","xhrCacheIgnore","cachedUrl","xhrCacheDuration","beforeSend","templateLoader","compiledHtml","$app","$root","$route","$router","$theme","md","templateContent","componentLoader","$$","$dom7","createdComponent","loadedComponent","rootEl","routerEl","getPageData","pageFromEl","pageFrom","$pageEl","currentPage","fromPage","$pageFromEl","attachEvents","f7RouteEventsAttached","f7RouteEventsOn","f7RouteEventsOnce","restoreScrollTopOnBack","camelName","colonName","f7PageInitialized","restoreHistory","clearHistory","r","handleTouchStart","allowViewTouchMove","isTouched","swipeout","isScrolling","touchesStart","handleTouchMove","f7PreventSwipeBack","preventSwipeBack","cancel","previousPage","iosSwipeBackActiveArea","viewContainerWidth","iosSwipeBackAnimateShadow","pageShadow","iosSwipeBackAnimateOpacity","pageOpacity","currentNavbar","previousNavbar","currentNavElements","previousNavElements","activeNavBackIcon","activeNavBackIconText","previousNavBackIcon","sheet","f7PreventPanelSwipe","preventSwipePanelBySwipeBack","touchesDiff","iosSwipeBackThreshold","percentage","callbackData","previousPageEl","previousNavbarEl","currentPageTranslate","previousPageTranslate","round","$navEl","pow","activeNavTranslate","iconTranslate","previousNavTranslate","handleTouchEnd","timeDiff","pageChanged","navElIndex","translate","sliding","SwipeBack","historyRestored","initUrl","documentUrl","origin","search","$navbarInnerEl","initOptions","pushStateAnimateOnLoad","pageAfterIn","routerProp","templates","View","appInstance","viewParams","routesAdd","f7View","viewProp","Clicks","clicks","externalLinks","clicked","clickedLink","isLink","isTabLink","InAppBrowser","moduleClicks","clickSelector","matchingClickedElement","clickedLinkData","validUrl","linksView","initClicks","History$2","keyPrefix","Storage","getItem","setItem","removeItem","clear","keyName","Storage$1","storage","Statusbar","StatusBar","onClick","setIosTextColor","color","styleLightContent","styleDefault","setBackgroundColor","backgroundColorByHexString","isVisible","iosOverlaysWebView","overlays","overlaysWebView","checkOverlay","enabled","overlay","scrollTopOnClick","iosTextColor","iosBackgroundColor","materialBackgroundColor","Statusbar$1",".statusbar","View$2","uniqueHistory","uniqueHistoryIgnoreGetParameters","pushStateOnLoad","viewEl","popoverView","popupView","panelView","appViews","appView","getCurrentView","modalOpen","modalBeforeDestroy","Navbar","size","right","title","subnavbar","noLeft","noRight","leftWidth","rightWidth","titleWidth","navbarStyles","navbarInnerWidth","paddingLeft","paddingRight","isPrevious","separateNavbarRightOffset","separateNavbarLeftOffset","currLeft","diff","requiredLeft","titleLeftOffset","titleRightOffset","activeNavbarBackLink","iosCenterTitle","titleLeft","pageData","getPageByEl","navbarInnerEl","initHideNavbarOnScroll","handleScroll","currentScrollTop","reachEnd","navbarHidden","showOnPageScrollEnd","previousScrollTop","showOnPageScrollTop","f7ScrollNavbarHandler","Navbar$1","scrollTopOnTitleClick","hideOnPageScroll","panelBreakpoint resize","pageBeforeRemove","pageBeforeIn","pageReinit","pageInit","panelOpen","panel","panelSwipeOpen","tabShow",".navbar .title","$clickedEl","Toolbar","setHighlight","tabbarEl","$tabbarEl","highlightWidth","highlightTranslate","$highlightEl","$activeLink","toolbar","initHideToolbarOnScroll","toolbarHidden","$toolbarEl","f7ScrollToolbarHandler","Toolbar$1","TouchRipple$1","center","diameter","$rippleWaveEl","_clientLeft","rippleTransform","onRemove","ripple","removing","removeTimeout","TouchRipple","Function","openedModals","dialogsQueue","Modal$1","Modal","onOpen","onOpened","onClose","onClosed","animateModal","$backdropEl","queueDialogs","pushToQueue","openedModal","$modalParentEl","wasInDom","moveToRoot","marginTop","f7Modal","CustomModal","handleClick","customModal","extendedParams","backdrop","closeByBackdropClick","backdropEl","Dialog$1","Dialog","buttonOnClick","button","buttons","dialog","verticalButtons","cssClass","dialogClasses","buttonsHTML","bold","dialogHtml","buttonEl","setProgress","progressbar","setText","newText","$textEl","setTitle","newTitle","$titleEl","ConstructorMethods","parameters","defaultSelector","domProp","addMethods","ModalMethods","buttonOk","buttonCancel","usernamePlaceholder","passwordPlaceholder","preloaderTitle","progressTitle","defaultDialogTitle","alert","callbackOk","prompt","callbackCancel","inputValue","confirm","login","username","preloader","preloaderInner","assign$2","infinite",".dialog-backdrop","Popup$1","Popup","popup",".popup-open",".popup-close",".popup-backdrop","LoginScreen$1","LoginScreen","loginScreen",".login-screen-open",".login-screen-close","Popover$1","Popover","handleResize","popover","$targetEl","targetEl","$angleEl","originalOpen","angleEl","closeByOutsideClick","targetX","targetY","angleLeft","angleTop","ref$1","angleSize","targetWidth","targetHeight","targetOffsetLeft","targetOffsetTop","targetOffset","targetParentPage","ref$2","popoverEl","$popoverEl",".popover-open",".popover-close",".popover-backdrop","Actions$1","Actions","buttonIndex","groupIndex","actions","convertToPopover","popoverHtml","renderPopover","actionsHtml","originalClose","forceToPopover","grid","buttonClasses","label","bg","icon","itemClasses",".actions-open",".actions-close",".actions-backdrop","Sheet$1","Sheet","$pageContentEl","scrollToEl","$scrollEl","newPaddingBottom","paddingTop","paddingBottom","pageHeight","pageScrollHeight","pageScroll","scrollElTop","padding-bottom","scrollToOpen",".sheet-open",".sheet-close",".sheet-backdrop","Toast$1","Toast","toast","closeButton","closeTimeout","toastHtml","timeoutId","openedEl","toastInstance","closeButtonColor","closeButtonText","Preloader","visible","Preloader$1","photoBrowserOpen","pb","preloaderEl","Progressbar","$progressbarEl","progressNormalized","$progressbarLine","removeAfterHide","Progressbar$1","progressbarEl","Sortable","$sortingEl","$sortingItems","$sortableContainer","sortingElHeight","minTop","$insertAfterEl","$insertBeforeEl","indexFrom","pageOffset","sortingElOffsetLocal","sortingElOffsetTop","initialScrollTop","allowOpen","allow","offsetTop","f7PreventSwipePanel","translateScrollOffset","allowScroll","scrollDiff","$currentEl","currentElOffset","currentElHeight","sortingElOffset","virtualList","oldIndex","newIndex","f7VirtualList","f7VirtualListIndex","moveItem","enable","disable","sortable","Sortable$1",".sortable-enable",".sortable-disable",".sortable-toggle","Swipeout","$swipeoutEl","$swipeoutContent","$actionsRight","$actionsLeft","actionsLeftWidth","actionsRightWidth","opened","openedActionsSide","$leftButtons","$rightButtons","$overswipeLeftButton","$overswipeRightButton","overswipeLeft","overswipeRight","noFollow","buttonOffset","buttonTranslate","$buttonEl","f7SwipeoutButtonOffset","buttonTranslate$1","$buttons","$actions","actionsWidth","newTranslate","side","$swipeoutActions","swipeoutActionsWidth","onSwipeoutClose","delete","virtualIndex","deleteItem","Swipeout$1","actionsNoFold",".swipeout-open",".swipeout-close",".swipeout-delete","confirmTitle","Accordion","toggleClicked","$accordionItemEl","accordion","$list","$contentEl","$openedItem","Accordion$1",".accordion-item .item-link, .accordion-item-toggle, .links-list.accordion-list > ul > li > a","VirtualList$1","VirtualList","vl","cols","dynamicHeightBufferSize","showFilteredItemsOnly","renderExternal","setListHeight","searchByItem","searchAll","itemTemplate","renderItem","items","filteredItems","pageContentEl","updatableScroll","$ul","ul","domCache","displayDomCache","tempDomElement","lastRepaintY","fragment","createDocumentFragment","rowsPerScreen","rowsBefore","rowsAfter","rowsToRender","maxBufferHeight","listHeight","dynamicHeight","$panelEl","$popupEl","handleScrollBound","handleResizeBound","detachEvents","setListSize","heights","itemHeight","ceil","forceScrollTop","fromIndex","toIndex","heightBeforeFirstItem","heightBeforeLastItem","itemTop","topPosition","renderExternalItems","itemEl","currentFromIndex","currentToIndex","emptyTemplate","filterItems","indexes","resetScrollTop","update","resetFilter","scrollToItem","listTop","getClientRects","appendItems","appendItem","replaceAllItems","replaceItem","prependItems","newCache","cached","prependItem","cachedIndex","leftIndex","rightIndex","indexShift","insertItemBefore","deleteItems","prevIndex","loop","deletedItem","deleteAllItems","clearCachefunction","Tab","tabsChanged","tabsChangedCallbacks","tabLinkEl","newTabEl","$tabLinkEl","$tabsEl","tabsTranslate","slideTo","tabLinkElement","$oldTabLinkEl","oldTabId","oldTabEl","Tabs",".tab-link","Panel$1","Panel","f7Panel","effect","initBreakpoints","swipe","swipeCloseOpposite","initSwipePanel","getViewEl","setBreakpoint","obj$1","breakpoint","wasVisible","allowPanelOpen","resizeHandler","swipeable","swipeOnlyClose","otherPanel","swipeActiveArea","touchMoves","preventSwipePanel","swipeNoFollow","panelWidth","threshold","swipeThreshold","backdropOpacity","edge","swipeInitialized","swipePanel$1","panelTransitionEnd","transitionEndTarget","leftBreakpoint","rightBreakpoint","disableSwipe","panels","panelInstance","enableSwipe","panelSide","panelEl",".panel-open","clickedEl",".panel-close",".panel-backdrop","FormData$1","store","form","formId","$formEl","FormStorage","formEl","initialData","getFormData","fillFromData","convertToData","storeFormData","Form","removeFormData","skipTypes","skipNames","inputIndex","inputEl","$inputEl","selected","checked","formData","selectEl","checkboxEl","radioEl","fromData","tabBeforeRemove","tabMounted","Input","ignoreTypes","createTextareaResizableShadow","readonly","textareaResizableShadow","resizeTextarea","textareaEl","$textareaEl","styleValue","currentHeight","clientHeight","initialHeight","validate","$itemInputEl","validity","validationMessage","errorMessage","valid","$errorEl","validateInputs","input","checkEmptyState","scrollIntoView","centered","$scrollableEl","contentHeight","contentScrollTop","contentPaddingTop","contentPaddingBottom","contentOffsetTop","inputOffsetTop","centeredPosition","previousValue","scrollIntoViewOnFocus","scrollIntoViewCentered","Input$1","itemInputIndex","itemInputEl","textareaIndex","Toggle$1","Toggle","touchStartChecked","toggleWidth","changed","handleInputChange","f7Toggle","toggleEl","Range$1","Range","rangeOffsetLeft","range","rangeWidth","dual","dualValueIndex","$touchedKnobEl","knobs","setValue","leftValue","rightValue","calcSize","layout","step","valueLeft","valueRight","$barEl","$barActiveEl","knobHTML","labels","$knobEl","f7Range","knobWidth","positionProperty","knobIndex","leftPos","realLeft","progress$1","newValues","valueIndex","getValue","rangeEl","SmartSelect$1","SmartSelect","ss","onChange","optionEl","displayAs","optionText","maxLength","checkMaxLength","$selectEl","$valueEl","closeOnSelect","inputType","smartSelect","valueEl","inputName","selectName","f7SmartSelect","attachInputsEvents","$containerEl","detachInputsEvents","valueArray","optionIndex","$optionEl","getItemsData","previousGroupEl","optionData","optionImage","optionIcon","optionHasMedia","optionColor","optionClassName","optionClass","optionGroupEl","optionGroupLabel","optionIsLabel","groupLabel","isLabel","groupEl","image","hasMedia","checkbox","radio","renderSearchbar","renderItems","renderPage","pageTitle","navbarColorTheme","searchbar","formColorTheme","renderPopup","renderSheet","toolbarColorTheme","containerEl","openedIn","virtualListHeight","searchContainer","searchIn","openPage","pageHtml","pageBeforeOut","pageAfterOut","openPopup","popupParams","popupOpen","popupOpened","popupClose","popupClosed","routableModals","openSheet","sheetParams","sheetOpen","sheetOpened","sheetClose","sheetClosed","openPopover","popoverParams","popoverOpen","popoverOpened","popoverClose","popoverClosed","openIn","pageBackLinkText","popupCloseLinkText","sheetCloseLinkText","searchbarPlaceholder","searchbarDisableText","smartSelectEl",".smart-select","Calendar$1","Calendar","onInputClick","calendar","onInputFocus","onHtmlClick","isPopover","isHorizontal","inline","attachInputEvents","inputReadOnly","detachInputEvents","attachHtmlEvents","detachHtmlEvents","attachCalendarEvents","touchCurrentX","touchCurrentY","allowItemClick","currentTranslate","monthsTranslate","isH","wrapperWidth","$wrapperEl","wrapperHeight","touchEndTime","resetMonth","nextMonth","prevMonth","handleDayClick","$dayEl","rangePicker","dateYear","dateMonth","dateDay","addValue","onNextMonthClick","onPrevMonthClick","onNextYearClick","nextYear","onPrevYearClick","prevYear","touchMove","detachCalendarEvents","initInput","formatDate","d","date","year","getFullYear","month","getMonth","month1","day","getDate","weekDay","getDay","dateFormat","monthNames","monthNamesShort","dayNames","dayNamesShort","substring","formatValue","v","inValuesIndex","updateValue","sort","b","onlyHeader","valueDate","header","updateCurrentMonthYear","dir","$months","currentMonth","currentYear","currentDate","prevMonthHtml","renderMonth","currentMonthHtml","nextMonthHtml","setMonthsTranslate","monthEl","onMonthChangeStart","currentIndex","onMonthChangeEnd","rebuildBoth","prevMonthTranslate","currentMonthTranslate","nextMonthTranslate","nextDateTime","transitionEndCallback","maxDate","prevDateTime","minDate","setYearMonth","targetDate","newMonthHTML","monthTranslate","prevTranslate","wrapperTranslate","dateInRange","dayDate","daysInMonth","renderMonths","hasEvent","currentValues","today","setHours","daysInPrevMonth","minDayNumber","firstDay","monthHtml","dayIndex","firstDayOfMonthIndex","row","rowHtml","col","dayNumber","weekDayIndex","weekendDays","rangesClasses","dayYear","dayMonth","renderWeekHeader","weekDaysHtml","renderMonthSelector","needsBlackIcon","iconColor","renderYearSelector","renderHeader","renderFooter","renderToolbar","renderInline","footer","weekHeader","renderCustomModal","f7Calendar","scrollToInput","closed","monthSelector","yearSelector","headerPlaceholder","toolbarCloseText","Picker$1","Picker","onResize","picker","resizeCols","needsOriginFix","attachResizeEvent","detachResizeEvent","divider","displayValue","forceValues","column","newDisplayValue","noDividerColumns","displayValues","initColumn","colEl","updateItems","updateDuringScroll","animationFrameId","startTranslate","$itemsEl","returnTo","minTranslate","maxTranslate","updateValuesOnTouchmove","velocityTranslate","momentumRatio","freeMode","updateValuesOnMomentum","$colEl","colIndex","itemsHeight","replaceValues","renderColumn","rotateEffect","colWidth","colHeight","valueCallbacks","newActiveIndex","previousActiveIndex","selectedItem","$itemEl","itemsFit","angle","destroyColumn","onlyItems","columnHtml","columnItemsHtml","colClasses","textAlign","f7Picker","InfiniteScroll","virtualListContainer","onTop","infiniteScroll","InfiniteScroll$1","PullToRefresh$1","PullToRefresh","pullStarted","wasScrolled","touchId","identifier","dynamicTriggerDistance","triggerDistance","useTranslate","isMaterial","$preloaderEl","refresh","ptr","hasNavbar","f7PullToRefresh","Lazy","f7LazyDestroy","onImageComplete","lazyEl","imagesSequence","imageIsLoading","lazy","sequential","loadImage","lazyHandler","lazyLoadImages","placeholderSrc","placeholder","f7LazyAttached","isInViewport","rect","imageEl","$imageEl","Image","Lazy$1","DataTable$1","DataTable","handleChange","sentByF7DataTable","columnIndex","table","checkSelectedHeader","handleSortableClick","currentSort","$cellEl","f7DataTable","collapsible","$headerEl","$headerSelectedEl","setCollapsibleLabels","elIndex","collpsibleTitle","checkedItems","dataTable","tableEl","Fab","morphOpen","fabEl","$fabEl","borderRadius","zIndex","fab","translateX","translateY","f7FabMorphData","diffX","diffY","scaleX","scaleY","f7FabMorphResizeHandler","diffXNew","diffYNew","scaleXNew","scaleYNew","morphClose","morphData","$buttonsEl","Fab$1",".fab > a",".fab-open",".fab-close","Searchbar$1","FrameworkClass","Searchbar","preventSubmit","sb","onInputBlur","onInputChange","$searchContainer","isVirtualList","searchItem","customSearch","onInputClear","disableOnClick","onPageBeforeOut","onPageBeforeIn","disableButton","disableButtonEl","ignore","foundEl","notFoundEl","hideOnEnableEl","hideOnSearchEl","hideDividers","hideGroups","disableOnBackdropClick","expandable","f7Searchbar","$foundEl","$notFoundEl","$hideOnEnableEl","$hideOnSearchEl","$disableButtonEl","disableButtonHasMargin","previousQuery","setDisableButtonMargin","setFocus","backdropShow","needsFocus","backdropHide","internal","vlQuery","foundItems","itemIndex","compareWithText","$searchIn","searchInIndex","searchInEl","itemText","wordsMatch","titleIndex","titleEl","$nextElements","$nextEl","$groupEl","searchbarEl","$searchbarEl",".searchbar-clear",".searchbar-enable",".searchbar-disable",".searchbar-toggle","Messages$1","Messages","autoLayout","messages","newMessagesFirst","scrollMessages","scrollMessagesOnEdge","firstMessageRule","lastMessageRule","tailMessageRule","sameNameMessageRule","sameHeaderMessageRule","sameFooterMessageRule","sameAvatarMessageRule","customClassMessageRule","renderMessage","f7Messages","getMessageData","messageEl","$messageEl","textHeader","textFooter","isTitle","imageSrc","typing","avatar","getMessagesData","messageToRender","message","isTyping","renderMessages","messagesToRender","isFirstMessage","isLastMessage","isTailMessage","isSameNameMessage","isSameHeaderMessage","isSameFooterMessage","isSameAvatarMessage","isCustomClassMessage","previousMessage","nextMessage","customMessageClasses","customClass","removeMessage","messageToRemove","removeMessages","messagesToRemove","messagesToRemoveEls","messageToRemoveIndex","addMessage","messageToAdd","addMessages","messagesToAdd","scrollHeightBefore","heightBefore","scrollBefore","messagesHTML","typingMessage","$messagesEls","onEdge","showTyping","hideTyping","typingMessageIndex","typingFound","$typingMessageEl","newScrollTop","currentScroll","messagesEl","Messagebar$1","Messagebar","onAppResize","messagebar","resizePage","onSubmit","onAttachmentClick","onTextareaChange","onTextareaFocus","sheetHide","onTextareaBlur","topOffset","bottomOffset","attachments","renderAttachments","renderAttachment","maxHeight","f7Messagebar","$areaEl","$attachmentsEl","$sheetEl","areaEl","attachmentsEl","attachmentsVisible","sheetEl","sheetVisible","setPlaceholder","elHeight","currentPaddingBottom","requiredPaddingBottom","currentPaddingTop","pageOffsetHeight","scrollOnBottom","attachmentsCreate","attachmentsShow","attachmentsHide","attachmentsToggle","attachment","sheetCreate","sheetShow","sheetToggle","messagebarEl","updateSize","clientWidth","isVertical","updateSlides","swiperSize","wrongRTL","slidesLength","virtual","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSlidesLength","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","slidesNumberEvenToRows","slidesPerColumn","slidesPerView","slidesPerColumnFill","slideSize","slidesPerRow","numFullColumns","slide","newSlideOrderIndex","-webkit-box-ordinal-group","-moz-box-ordinal-group","-ms-flex-order","-webkit-order","order","roundLengths","swiperSlideSize","centeredSlides","slidesPerGroup","newSlidesGrid","setWrapperSize","i$2","watchSlidesProgress","watchSlidesVisibility","updateSlidesOffset","updateAutoHeight","activeSlides","newHeight","swiperSlideOffset","updateSlidesProgress","offsetCenter","slideVisibleClass","slideProgress","slideBefore","slideAfter","updateProgress","translatesDiff","isBeginning","isEnd","wasBeginning","wasEnd","updateSlidesClasses","realIndex","isVirtual","activeSlide","slideActiveClass","slideDuplicateClass","slideDuplicateActiveClass","nextSlide","slideNextClass","prevSlide","slidePrevClass","slideDuplicateNextClass","slideDuplicatePrevClass","updateActiveIndex","snapIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","setTranslate","byController","transition$1","setTransition","transitionStart","runCallbacks","autoHeight","Browser","isSafari","isUiWebView","ie","pointerEnabled","msPointerEnabled","ieTouch","msMaxTouchPoints","maxTouchPoints","lteIE9","getElementsByTagName","isIE9","onTouchStart","touchEventsData","originalEvent","isTouchEvent","noSwiping","swipeHandler","currentY","startX","startY","iOSEdgeSwipeDetection","iOSEdgeSwipeThreshold","allowTouchCallbacks","startMoving","swipeDirection","allowThresholdMove","formElements","allowTouchMove","onTouchMove","preventedByNestedSwiper","touchReleaseOnEdges","touchAngle","atan2","touchMoveStopPropagation","nested","loopFix","allowMomentumBounce","grabCursor","allowSlideNext","allowSlidePrev","setGrabCursor","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","velocities","onTouchEnd","clickTimeout","currentPos","freeModeMomentum","lastMoveEvent","velocityEvent","velocity","freeModeMinimumVelocity","freeModeMomentumVelocityRatio","momentumDuration","freeModeMomentumRatio","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","freeModeMomentumBounceRatio","freeModeMomentumBounce","freeModeSticky","slideReset","speed","longSwipesMs","stopIndex","groupSize","ratio","longSwipes","longSwipesRatio","shortSwipes","breakpoints","preventClicks","preventClicksPropagation","touchEventsTarget","simulateTouch","uniqueNavElements","preloadImages","updateOnImagesReady","loopAdditionalSlides","loopedSlides","loopFillGroupWithBlank","noSwipingClass","passiveListeners","containerModifierClass","slideClass","slideBlankClass","wrapperClass","runCallbacksOnInit","prototypes","slideIndex","slideNext","slidePrev","slidesPerViewDynamic","slideToIndex","loopCreate","blankSlidesNum","blankNode","prependSlides","appendSlides","loopDestroy","moving","cursor","unsetGrabCursor","manipulation","appendSlide","prependSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","wrapperEl","getBreakpoint","currentBreakpoint","breakPointsParams","originalParams","needsReLoop","points","point","addClasses","suffixes","suffix","removeClasses","images","srcset","sizes","checkForComplete","onReady","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","Swiper$2","SwiperClass$$1","Swiper","prototypeGroup","protoMethod","moduleParamName","swiperParams","swipers","newParams","spv","breakLoop","deleteInstance","cleanStyles","extendDefaults","newDefaults","Device$4","Support$4","Browser$2","browser","Resize$1","orientationChangeHandler","Observer","MutationObserver","WebkitMutationObserver","attach","ObserverFunc","mutations","mutation","observe","childList","characterData","observers","observeParents","containerParents","disconnect","Observer$1","Virtual","onRendered","previousFrom","previousTo","previousSlidesGrid","renderSlide","previousOffset","offsetProp","slidesAfter","slidesBefore","slidesToRender","prependIndexes","appendIndexes","$slideEl","Virtual$1","beforeInit","overwriteParams","Navigation","navigation","$prevEl","disabledClass","nextEl","prevEl","Navigation$1","hideOnClick","hiddenClass","toEdge","fromEdge","Pagination","pagination","current","total","paginationType","bullets","dynamicBullets","bulletSize","bullet","$bullet","bulletActiveClass","dynamicBulletsLength","bulletsOffset","scale","renderCustom","paginationHTML","numberOfBullets","renderBullet","bulletClass","renderFraction","currentClass","totalClass","renderProgressbar","progressbarFillClass","clickable","clickableClass","modifierClass","Pagination$1","bulletElement","activeIndexChange","snapIndexChange","slidesLengthChange","snapGridLengthChange","Scrollbar","scrollbar","dragSize","trackSize","$dragEl","newSize","newPos","moveDivider","scrollbarHide","setDragPosition","positionRatio","onDragStart","dragTimeout","onDragMove","returnValue","onDragEnd","snapOnRelease","enableDraggable","dragEvents","disableDraggable","dragEl","draggable","Scrollbar$1","observerUpdate","Parallax","setTransform","rtlFactor","currentOpacity","currentScale","parallax","slideEl","parallaxEl","$parallaxEl","parallaxDuration","Parallax$1","Zoom","getDistanceBetweenTouches","x1","y1","x2","y2","sqrt","onGestureStart","zoom","gesture","fakeGestureTouched","fakeGestureMoved","scaleStart","$imageWrapEl","maxRatio","isScaling","onGestureChange","scaleMove","minRatio","onGestureEnd","slideWidth","slideHeight","scaledWidth","scaledHeight","minX","maxX","minY","maxY","touchesCurrent","prevPositionX","prevPositionY","prevTime","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","onTransitionEnd","out","in","touchX","touchY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","Zoom$1","containerClass","zoomedSlideClass","touchStart","touchEnd","doubleTap","Lazy$2","loadInSlide","loadInDuplicate","$images","elementClass","loadedClass","loadingClass","imageIndex","background","slideOriginalIndex","originalSlide","duplicatedSlide","slideExist","initialImageLoaded","loadPrevNext","loadPrevNextAmount","amount","maxIndex","minIndex","Lazy$3","loadOnTransitionStart","preloaderClass","scrollbarDragMove","Controller","LinearSpline","binarySearch","guess","array","lastIndex","i1","i3","interpolate","getInterpolateFunction","controller","spline","setTranslate$1","setControlledTranslate","by","controlledTranslate","multiplier","controlled","control","setControlledTransition","Controller$1","a11y","makeElFocusable","addElRole","role","addElLabel","disableEl","enableEl","onEnterKey","keyCode","notify","lastSlideMessage","nextSlideMessage","firstSlideMessage","prevSlideMessage","notification","liveRegion","updateNavigation","updatePagination","bulletIndex","bulletEl","$bulletEl","paginationBulletMessage","A11y","notificationClass","paginationUpdate","Autoplay","run","$activeSlideEl","autoplay","stopOnLastSlide","running","pause","paused","Autoplay$1","disableOnInteraction","beforeTransitionStart","sliderFirstMove","Fade","tx","ty","slideOpacity","fadeEffect","crossFade","eventTriggered","triggerEvents","EffectFade","Cube","$cubeShadowEl","swiperWidth","swiperHeight","cubeEffect","wrapperRotate","shadow","slideAngle","tz","slideShadows","shadowBefore","shadowAfter","-webkit-transform-origin","-moz-transform-origin","-ms-transform-origin","transform-origin","shadowOffset","shadowAngle","sin","scale1","shadowScale","scale2","zFactor","EffectCube","Flip","flipEffect","limitRotation","rotateY","rotateX","EffectFlip","Coverflow","coverflowEffect","rotate","offsetMultiplier","translateZ","stretch","slideTransform","$shadowBeforeEl","$shadowAfterEl","perspectiveOrigin","EffectCoverflow","pageMounted","PhotoBrowser$1","PhotoBrowser","photoBrowser","exposed","swipeToClose","started","timeStart","onSlideChange","virtualSlides","photos","$previousSlideEl","$totalEl","captions","captionIndex","$captionsContainerEl","previousSlideVideo","renderNavbar","iconsColor","backLinkText","isPopup","renderCaption","caption","renderObject","photo","renderLazyPhoto","renderPhoto","captionsTheme","renderStandalone","f7PhotoBrowser","$swiperContainerEl","$swiperWrapperEl","tap","exposition","expositionToggle","slideChange","slideChangeStart","slideChangeEnd","lazyImageLoad","lazyImageReady","touchMoveOpposite","openStandalone","expositionEnable","expositionHideCaptions","expositionDisable","navbarOfText","Notification$1","Notification","notificationHeight","closeOnTimeout","titleRightText","subtitle","closeOnClick","notificationHtml","notificationInstance","Autocomplete$1","Autocomplete","ac","itemsHTML","limit","highlightMatches","firstValue","firstItem","itemValue","valueProperty","textProperty","dropdownPlaceholderText","$dropdownEl","typeahead","setSelectionRange","onPageInputChange","aValue","updateValues","onOpenerClick","positionDropDown","onKeyDown","onDropdownclick","clickedItem","updateInputValueOnSelect","autocomplete","$openerEl","openerEl","f7Autocomplete","$modalEl","attachDropdownEvents","detachDropdownEvents","attachPageEvents","detachPageEvents","paddingValue","inputOffset","inputOffsetWidth","inputOffsetHeight","$listEl","listOffset","listOffsetLeft","inputOffsetLeft","paddingProp","expandInput","valuesHTML","preloaderHide","preloaderShow","renderPreloader","preloaderColor","renderDropdown","searchbarSearch","requestSourceOnOpen","autoFocus","openDropdown","dropdownel","dropdownContainerEl","notFoundText","autocompleteEl","ViAd","$viFrame","removeOverlay","vi","$overlayEl","appId","appVer","adParams","skipParams","placementId","ad","Ad","onAdReady","onAdStarted","onAdClick","targetUrl","onAdImpression","onAdStopped","reason","onAutoPlayFailed","videoEl","fallbackOverlay","fallbackOverlayText","play","createOverlay","onAdError","msg","startAd","pauseAd","resume","resumeAd","stopAd","initAd","Vi","showMute","startMuted","placementType","videoSlot","showProgress","showBranding","age","gender","advertiserId","latitude","longitude","accuracy","storeId","ip","manufacturer","model","connectionType","connectionProvider","sdkReady","createAd","loadSdk","skdReady"],"mappings":"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","file":"framework7.min.js","sourcesContent":["/**\n * Framework7 2.0.6\n * Full featured mobile HTML framework for building iOS & Android apps\n * http://framework7.io/\n *\n * Copyright 2014-2018 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: January 9, 2018\n */\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.Framework7 = factory());\n}(this, (function () { 'use strict';\n\n/**\n * Template7 1.3.1\n * Mobile-first HTML template engine\n * \n * http://www.idangero.us/template7/\n * \n * Copyright 2017, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n * \n * Licensed under MIT\n * \n * Released on: October 25, 2017\n */\nvar t7ctx;\nif (typeof window !== 'undefined') {\n  t7ctx = window;\n} else if (typeof global !== 'undefined') {\n  t7ctx = global;\n} else {\n  t7ctx = undefined;\n}\n\nvar Template7Context = t7ctx;\n\nvar Template7Utils = {\n  quoteSingleRexExp: new RegExp('\\'', 'g'),\n  quoteDoubleRexExp: new RegExp('\"', 'g'),\n  isFunction: function isFunction(func) {\n    return typeof func === 'function';\n  },\n  escape: function escape(string) {\n    return (typeof Template7Context !== 'undefined' && Template7Context.escape) ?\n      Template7Context.escape(string) :\n      string\n        .replace(/&/g, '&amp;')\n        .replace(/</g, '&lt;')\n        .replace(/>/g, '&gt;')\n        .replace(/\"/g, '&quot;');\n  },\n  helperToSlices: function helperToSlices(string) {\n    var quoteDoubleRexExp = Template7Utils.quoteDoubleRexExp;\n    var quoteSingleRexExp = Template7Utils.quoteSingleRexExp;\n    var helperParts = string.replace(/[{}#}]/g, '').trim().split(' ');\n    var slices = [];\n    var shiftIndex;\n    var i;\n    var j;\n    for (i = 0; i < helperParts.length; i += 1) {\n      var part = helperParts[i];\n      var blockQuoteRegExp = (void 0);\n      var openingQuote = (void 0);\n      if (i === 0) { slices.push(part); }\n      else if (part.indexOf('\"') === 0 || part.indexOf('\\'') === 0) {\n        blockQuoteRegExp = part.indexOf('\"') === 0 ? quoteDoubleRexExp : quoteSingleRexExp;\n        openingQuote = part.indexOf('\"') === 0 ? '\"' : '\\'';\n        // Plain String\n        if (part.match(blockQuoteRegExp).length === 2) {\n          // One word string\n          slices.push(part);\n        } else {\n          // Find closed Index\n          shiftIndex = 0;\n          for (j = i + 1; j < helperParts.length; j += 1) {\n            part += \" \" + (helperParts[j]);\n            if (helperParts[j].indexOf(openingQuote) >= 0) {\n              shiftIndex = j;\n              slices.push(part);\n              break;\n            }\n          }\n          if (shiftIndex) { i = shiftIndex; }\n        }\n      } else if (part.indexOf('=') > 0) {\n        // Hash\n        var hashParts = part.split('=');\n        var hashName = hashParts[0];\n        var hashContent = hashParts[1];\n        if (!blockQuoteRegExp) {\n          blockQuoteRegExp = hashContent.indexOf('\"') === 0 ? quoteDoubleRexExp : quoteSingleRexExp;\n          openingQuote = hashContent.indexOf('\"') === 0 ? '\"' : '\\'';\n        }\n        if (hashContent.match(blockQuoteRegExp).length !== 2) {\n          shiftIndex = 0;\n          for (j = i + 1; j < helperParts.length; j += 1) {\n            hashContent += \" \" + (helperParts[j]);\n            if (helperParts[j].indexOf(openingQuote) >= 0) {\n              shiftIndex = j;\n              break;\n            }\n          }\n          if (shiftIndex) { i = shiftIndex; }\n        }\n        var hash = [hashName, hashContent.replace(blockQuoteRegExp, '')];\n        slices.push(hash);\n      } else {\n        // Plain variable\n        slices.push(part);\n      }\n    }\n    return slices;\n  },\n  stringToBlocks: function stringToBlocks(string) {\n    var blocks = [];\n    var i;\n    var j;\n    if (!string) { return []; }\n    var stringBlocks = string.split(/({{[^{^}]*}})/);\n    for (i = 0; i < stringBlocks.length; i += 1) {\n      var block = stringBlocks[i];\n      if (block === '') { continue; }\n      if (block.indexOf('{{') < 0) {\n        blocks.push({\n          type: 'plain',\n          content: block,\n        });\n      } else {\n        if (block.indexOf('{/') >= 0) {\n          continue;\n        }\n        block = block\n          .replace(/{{([#/])*([ ])*/, '{{$1')\n          .replace(/([ ])*}}/, '}}');\n        if (block.indexOf('{#') < 0 && block.indexOf(' ') < 0 && block.indexOf('else') < 0) {\n          // Simple variable\n          blocks.push({\n            type: 'variable',\n            contextName: block.replace(/[{}]/g, ''),\n          });\n          continue;\n        }\n        // Helpers\n        var helperSlices = Template7Utils.helperToSlices(block);\n        var helperName = helperSlices[0];\n        var isPartial = helperName === '>';\n        var helperContext = [];\n        var helperHash = {};\n        for (j = 1; j < helperSlices.length; j += 1) {\n          var slice = helperSlices[j];\n          if (Array.isArray(slice)) {\n            // Hash\n            helperHash[slice[0]] = slice[1] === 'false' ? false : slice[1];\n          } else {\n            helperContext.push(slice);\n          }\n        }\n\n        if (block.indexOf('{#') >= 0) {\n          // Condition/Helper\n          var helperContent = '';\n          var elseContent = '';\n          var toSkip = 0;\n          var shiftIndex = (void 0);\n          var foundClosed = false;\n          var foundElse = false;\n          var depth = 0;\n          for (j = i + 1; j < stringBlocks.length; j += 1) {\n            if (stringBlocks[j].indexOf('{{#') >= 0) {\n              depth += 1;\n            }\n            if (stringBlocks[j].indexOf('{{/') >= 0) {\n              depth -= 1;\n            }\n            if (stringBlocks[j].indexOf((\"{{#\" + helperName)) >= 0) {\n              helperContent += stringBlocks[j];\n              if (foundElse) { elseContent += stringBlocks[j]; }\n              toSkip += 1;\n            } else if (stringBlocks[j].indexOf((\"{{/\" + helperName)) >= 0) {\n              if (toSkip > 0) {\n                toSkip -= 1;\n                helperContent += stringBlocks[j];\n                if (foundElse) { elseContent += stringBlocks[j]; }\n              } else {\n                shiftIndex = j;\n                foundClosed = true;\n                break;\n              }\n            } else if (stringBlocks[j].indexOf('else') >= 0 && depth === 0) {\n              foundElse = true;\n            } else {\n              if (!foundElse) { helperContent += stringBlocks[j]; }\n              if (foundElse) { elseContent += stringBlocks[j]; }\n            }\n          }\n          if (foundClosed) {\n            if (shiftIndex) { i = shiftIndex; }\n            if (helperName === 'raw') {\n              blocks.push({\n                type: 'plain',\n                content: helperContent,\n              });\n            } else {\n              blocks.push({\n                type: 'helper',\n                helperName: helperName,\n                contextName: helperContext,\n                content: helperContent,\n                inverseContent: elseContent,\n                hash: helperHash,\n              });\n            }\n          }\n        } else if (block.indexOf(' ') > 0) {\n          if (isPartial) {\n            helperName = '_partial';\n            if (helperContext[0]) { helperContext[0] = \"\\\"\" + (helperContext[0].replace(/\"|'/g, '')) + \"\\\"\"; }\n          }\n          blocks.push({\n            type: 'helper',\n            helperName: helperName,\n            contextName: helperContext,\n            hash: helperHash,\n          });\n        }\n      }\n    }\n    return blocks;\n  },\n  parseJsVariable: function parseJsVariable(expression, replace, object) {\n    return expression.split(/([+ -*/^])/g).map(function (part) {\n      if (part.indexOf(replace) < 0) { return part; }\n      if (!object) { return JSON.stringify(''); }\n      var variable = object;\n      if (part.indexOf((replace + \".\")) >= 0) {\n        part.split((replace + \".\"))[1].split('.').forEach(function (partName) {\n          if (variable[partName]) { variable = variable[partName]; }\n          else { variable = 'undefined'; }\n        });\n      }\n      return JSON.stringify(variable);\n    }).join('');\n  },\n  parseJsParents: function parseJsParents(expression, parents) {\n    return expression.split(/([+ -*^])/g).map(function (part) {\n      if (part.indexOf('../') < 0) { return part; }\n      if (!parents || parents.length === 0) { return JSON.stringify(''); }\n      var levelsUp = part.split('../').length - 1;\n      var parentData = levelsUp > parents.length ? parents[parents.length - 1] : parents[levelsUp - 1];\n\n      var variable = parentData;\n      var parentPart = part.replace(/..\\//g, '');\n      parentPart.split('.').forEach(function (partName) {\n        if (variable[partName]) { variable = variable[partName]; }\n        else { variable = 'undefined'; }\n      });\n      return JSON.stringify(variable);\n    }).join('');\n  },\n  getCompileVar: function getCompileVar(name, ctx, data) {\n    if ( data === void 0 ) data = 'data_1';\n\n    var variable = ctx;\n    var parts;\n    var levelsUp = 0;\n    var newDepth;\n    if (name.indexOf('../') === 0) {\n      levelsUp = name.split('../').length - 1;\n      newDepth = variable.split('_')[1] - levelsUp;\n      variable = \"ctx_\" + (newDepth >= 1 ? newDepth : 1);\n      parts = name.split('../')[levelsUp].split('.');\n    } else if (name.indexOf('@global') === 0) {\n      variable = 'Template7.global';\n      parts = name.split('@global.')[1].split('.');\n    } else if (name.indexOf('@root') === 0) {\n      variable = 'root';\n      parts = name.split('@root.')[1].split('.');\n    } else {\n      parts = name.split('.');\n    }\n    for (var i = 0; i < parts.length; i += 1) {\n      var part = parts[i];\n      if (part.indexOf('@') === 0) {\n        var dataLevel = data.split('_')[1];\n        if (levelsUp > 0) {\n          dataLevel = newDepth;\n        }\n        if (i > 0) {\n          variable += \"[(data_\" + dataLevel + \" && data_\" + dataLevel + \".\" + (part.replace('@', '')) + \")]\";\n        } else {\n          variable = \"(data_\" + dataLevel + \" && data_\" + dataLevel + \".\" + (part.replace('@', '')) + \")\";\n        }\n      } else if (isFinite(part)) {\n        variable += \"[\" + part + \"]\";\n      } else if (part === 'this' || part.indexOf('this.') >= 0 || part.indexOf('this[') >= 0 || part.indexOf('this(') >= 0) {\n        variable = part.replace('this', ctx);\n      } else {\n        variable += \".\" + part;\n      }\n    }\n    return variable;\n  },\n  getCompiledArguments: function getCompiledArguments(contextArray, ctx, data) {\n    var arr = [];\n    for (var i = 0; i < contextArray.length; i += 1) {\n      if (/^['\"]/.test(contextArray[i])) { arr.push(contextArray[i]); }\n      else if (/^(true|false|\\d+)$/.test(contextArray[i])) { arr.push(contextArray[i]); }\n      else {\n        arr.push(Template7Utils.getCompileVar(contextArray[i], ctx, data));\n      }\n    }\n\n    return arr.join(', ');\n  },\n};\n\nvar Template7Helpers = {\n  _partial: function _partial(partialName, options) {\n    var p = Template7Class.partials[partialName];\n    if (!p || (p && !p.template)) { return ''; }\n    if (!p.compiled) {\n      p.compiled = new Template7Class(p.template).compile();\n    }\n    var ctx = this;\n    for (var hashName in options.hash) {\n      ctx[hashName] = options.hash[hashName];\n    }\n    return p.compiled(ctx, options.data, options.root);\n  },\n  escape: function escape(context) {\n    if (typeof context !== 'string') {\n      throw new Error('Template7: Passed context to \"escape\" helper should be a string');\n    }\n    return Template7Utils.escape(context);\n  },\n  if: function if$1(context, options) {\n    var ctx = context;\n    if (Template7Utils.isFunction(ctx)) { ctx = ctx.call(this); }\n    if (ctx) {\n      return options.fn(this, options.data);\n    }\n\n    return options.inverse(this, options.data);\n  },\n  unless: function unless(context, options) {\n    var ctx = context;\n    if (Template7Utils.isFunction(ctx)) { ctx = ctx.call(this); }\n    if (!ctx) {\n      return options.fn(this, options.data);\n    }\n\n    return options.inverse(this, options.data);\n  },\n  each: function each(context, options) {\n    var ctx = context;\n    var ret = '';\n    var i = 0;\n    if (Template7Utils.isFunction(ctx)) { ctx = ctx.call(this); }\n    if (Array.isArray(ctx)) {\n      if (options.hash.reverse) {\n        ctx = ctx.reverse();\n      }\n      for (i = 0; i < ctx.length; i += 1) {\n        ret += options.fn(ctx[i], { first: i === 0, last: i === ctx.length - 1, index: i });\n      }\n      if (options.hash.reverse) {\n        ctx = ctx.reverse();\n      }\n    } else {\n      for (var key in ctx) {\n        i += 1;\n        ret += options.fn(ctx[key], { key: key });\n      }\n    }\n    if (i > 0) { return ret; }\n    return options.inverse(this);\n  },\n  with: function with$1(context, options) {\n    var ctx = context;\n    if (Template7Utils.isFunction(ctx)) { ctx = context.call(this); }\n    return options.fn(ctx);\n  },\n  join: function join(context, options) {\n    var ctx = context;\n    if (Template7Utils.isFunction(ctx)) { ctx = ctx.call(this); }\n    return ctx.join(options.hash.delimiter || options.hash.delimeter);\n  },\n  js: function js(expression, options) {\n    var data = options.data;\n    var func;\n    var execute = expression;\n    ('index first last key').split(' ').forEach(function (prop) {\n      if (typeof data[prop] !== 'undefined') {\n        var re1 = new RegExp((\"this.@\" + prop), 'g');\n        var re2 = new RegExp((\"@\" + prop), 'g');\n        execute = execute\n          .replace(re1, JSON.stringify(data[prop]))\n          .replace(re2, JSON.stringify(data[prop]));\n      }\n    });\n    if (options.root && execute.indexOf('@root') >= 0) {\n      execute = Template7Utils.parseJsVariable(execute, '@root', options.root);\n    }\n    if (execute.indexOf('@global') >= 0) {\n      execute = Template7Utils.parseJsVariable(execute, '@global', Template7Context.Template7.global);\n    }\n    if (execute.indexOf('../') >= 0) {\n      execute = Template7Utils.parseJsParents(execute, options.parents);\n    }\n    if (execute.indexOf('return') >= 0) {\n      func = \"(function(){\" + execute + \"})\";\n    } else {\n      func = \"(function(){return (\" + execute + \")})\";\n    }\n    return eval.call(this, func).call(this);\n  },\n  js_if: function js_if(expression, options) {\n    var data = options.data;\n    var func;\n    var execute = expression;\n    ('index first last key').split(' ').forEach(function (prop) {\n      if (typeof data[prop] !== 'undefined') {\n        var re1 = new RegExp((\"this.@\" + prop), 'g');\n        var re2 = new RegExp((\"@\" + prop), 'g');\n        execute = execute\n          .replace(re1, JSON.stringify(data[prop]))\n          .replace(re2, JSON.stringify(data[prop]));\n      }\n    });\n    if (options.root && execute.indexOf('@root') >= 0) {\n      execute = Template7Utils.parseJsVariable(execute, '@root', options.root);\n    }\n    if (execute.indexOf('@global') >= 0) {\n      execute = Template7Utils.parseJsVariable(execute, '@global', Template7Class.global);\n    }\n    if (execute.indexOf('../') >= 0) {\n      execute = Template7Utils.parseJsParents(execute, options.parents);\n    }\n    if (execute.indexOf('return') >= 0) {\n      func = \"(function(){\" + execute + \"})\";\n    } else {\n      func = \"(function(){return (\" + execute + \")})\";\n    }\n    var condition = eval.call(this, func).call(this);\n    if (condition) {\n      return options.fn(this, options.data);\n    }\n\n    return options.inverse(this, options.data);\n  },\n};\nTemplate7Helpers.js_compare = Template7Helpers.js_if;\n\nvar Template7Options = {};\nvar Template7Partials = {};\nvar script = Template7Context.document.createElement('script');\nTemplate7Context.document.head.appendChild(script);\n\nvar Template7Class = function Template7Class(template) {\n  var t = this;\n  t.template = template;\n};\n\nvar staticAccessors = { options: { configurable: true },partials: { configurable: true },helpers: { configurable: true } };\nTemplate7Class.prototype.compile = function compile (template, depth) {\n    if ( template === void 0 ) template = this.template;\n    if ( depth === void 0 ) depth = 1;\n\n  var t = this;\n  if (t.compiled) { return t.compiled; }\n\n  if (typeof template !== 'string') {\n    throw new Error('Template7: Template must be a string');\n  }\n  var stringToBlocks = Template7Utils.stringToBlocks;\n    var getCompileVar = Template7Utils.getCompileVar;\n    var getCompiledArguments = Template7Utils.getCompiledArguments;\n\n  var blocks = stringToBlocks(template);\n  var ctx = \"ctx_\" + depth;\n  var data = \"data_\" + depth;\n  if (blocks.length === 0) {\n    return function empty() { return ''; };\n  }\n\n  function getCompileFn(block, newDepth) {\n    if (block.content) { return t.compile(block.content, newDepth); }\n    return function empty() { return ''; };\n  }\n  function getCompileInverse(block, newDepth) {\n    if (block.inverseContent) { return t.compile(block.inverseContent, newDepth); }\n    return function empty() { return ''; };\n  }\n\n  var resultString = '';\n  if (depth === 1) {\n    resultString += \"(function (\" + ctx + \", \" + data + \", root) {\\n\";\n  } else {\n    resultString += \"(function (\" + ctx + \", \" + data + \") {\\n\";\n  }\n  if (depth === 1) {\n    resultString += 'function isArray(arr){return Array.isArray(arr);}\\n';\n    resultString += 'function isFunction(func){return (typeof func === \\'function\\');}\\n';\n    resultString += 'function c(val, ctx) {if (typeof val !== \"undefined\" && val !== null) {if (isFunction(val)) {return val.call(ctx);} else return val;} else return \"\";}\\n';\n    resultString += 'root = root || ctx_1 || {};\\n';\n  }\n  resultString += 'var r = \\'\\';\\n';\n  var i;\n  for (i = 0; i < blocks.length; i += 1) {\n    var block = blocks[i];\n    // Plain block\n    if (block.type === 'plain') {\n      resultString += \"r +='\" + ((block.content).replace(/\\r/g, '\\\\r').replace(/\\n/g, '\\\\n').replace(/'/g, '\\\\' + '\\'')) + \"';\";\n      continue;\n    }\n    var variable = (void 0);\n    var compiledArguments = (void 0);\n    // Variable block\n    if (block.type === 'variable') {\n      variable = getCompileVar(block.contextName, ctx, data);\n      resultString += \"r += c(\" + variable + \", \" + ctx + \");\";\n    }\n    // Helpers block\n    if (block.type === 'helper') {\n      var parents = (void 0);\n      if (ctx !== 'ctx_1') {\n        var level = ctx.split('_')[1];\n        var parentsString = \"ctx_\" + (level - 1);\n        for (var j = level - 2; j >= 1; j -= 1) {\n          parentsString += \", ctx_\" + j;\n        }\n        parents = \"[\" + parentsString + \"]\";\n      } else {\n        parents = \"[\" + ctx + \"]\";\n      }\n      if (block.helperName in Template7Helpers) {\n        compiledArguments = getCompiledArguments(block.contextName, ctx, data);\n        resultString += \"r += (Template7.helpers.\" + (block.helperName) + \").call(\" + ctx + \", \" + (compiledArguments && ((compiledArguments + \", \"))) + \"{hash:\" + (JSON.stringify(block.hash)) + \", data: \" + data + \" || {}, fn: \" + (getCompileFn(block, depth + 1)) + \", inverse: \" + (getCompileInverse(block, depth + 1)) + \", root: root, parents: \" + parents + \"});\";\n      } else if (block.contextName.length > 0) {\n        throw new Error((\"Template7: Missing helper: \\\"\" + (block.helperName) + \"\\\"\"));\n      } else {\n        variable = getCompileVar(block.helperName, ctx, data);\n        resultString += \"if (\" + variable + \") {\";\n        resultString += \"if (isArray(\" + variable + \")) {\";\n        resultString += \"r += (Template7.helpers.each).call(\" + ctx + \", \" + variable + \", {hash:\" + (JSON.stringify(block.hash)) + \", data: \" + data + \" || {}, fn: \" + (getCompileFn(block, depth + 1)) + \", inverse: \" + (getCompileInverse(block, depth + 1)) + \", root: root, parents: \" + parents + \"});\";\n        resultString += '}else {';\n        resultString += \"r += (Template7.helpers.with).call(\" + ctx + \", \" + variable + \", {hash:\" + (JSON.stringify(block.hash)) + \", data: \" + data + \" || {}, fn: \" + (getCompileFn(block, depth + 1)) + \", inverse: \" + (getCompileInverse(block, depth + 1)) + \", root: root, parents: \" + parents + \"});\";\n        resultString += '}}';\n      }\n    }\n  }\n  resultString += '\\nreturn r;})';\n\n  if (depth === 1) {\n    t.compiled = eval.call(Template7Context, resultString);\n    return t.compiled;\n  }\n  return resultString;\n};\nstaticAccessors.options.get = function () {\n  return Template7Options;\n};\nstaticAccessors.partials.get = function () {\n  return Template7Partials;\n};\nstaticAccessors.helpers.get = function () {\n  return Template7Helpers;\n};\n\nObject.defineProperties( Template7Class, staticAccessors );\n\nfunction Template7() {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  var template = args[0];\n  var data = args[1];\n  if (args.length === 2) {\n    var instance = new Template7Class(template);\n    var rendered = instance.compile()(data);\n    instance = null;\n    return (rendered);\n  }\n  return new Template7Class(template);\n}\nTemplate7.registerHelper = function registerHelper(name, fn) {\n  Template7Class.helpers[name] = fn;\n};\nTemplate7.unregisterHelper = function unregisterHelper(name) {\n  Template7Class.helpers[name] = undefined;\n  delete Template7Class.helpers[name];\n};\nTemplate7.registerPartial = function registerPartial(name, template) {\n  Template7Class.partials[name] = { template: template };\n};\nTemplate7.unregisterPartial = function unregisterPartial(name) {\n  if (Template7Class.partials[name]) {\n    Template7Class.partials[name] = undefined;\n    delete Template7Class.partials[name];\n  }\n};\nTemplate7.compile = function compile(template, options) {\n  var instance = new Template7Class(template, options);\n  return instance.compile();\n};\n\nTemplate7.options = Template7Class.options;\nTemplate7.helpers = Template7Class.helpers;\nTemplate7.partials = Template7Class.partials;\n\n/**\n * Dom7 2.0.1\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * http://framework7.io/docs/dom.html\n *\n * Copyright 2017, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n *\n * Licensed under MIT\n *\n * Released on: October 2, 2017\n */\nvar Dom7 = function Dom7(arr) {\n  var self = this;\n  // Create array-like object\n  for (var i = 0; i < arr.length; i += 1) {\n    self[i] = arr[i];\n  }\n  self.length = arr.length;\n  // Return collection with methods\n  return this;\n};\n\nfunction $$1$1(selector, context) {\n  var arr = [];\n  var i = 0;\n  if (selector && !context) {\n    if (selector instanceof Dom7) {\n      return selector;\n    }\n  }\n  if (selector) {\n      // String\n    if (typeof selector === 'string') {\n      var els;\n      var tempParent;\n      var html = selector.trim();\n      if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n        var toCreate = 'div';\n        if (html.indexOf('<li') === 0) { toCreate = 'ul'; }\n        if (html.indexOf('<tr') === 0) { toCreate = 'tbody'; }\n        if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) { toCreate = 'tr'; }\n        if (html.indexOf('<tbody') === 0) { toCreate = 'table'; }\n        if (html.indexOf('<option') === 0) { toCreate = 'select'; }\n        tempParent = document.createElement(toCreate);\n        tempParent.innerHTML = html;\n        for (i = 0; i < tempParent.childNodes.length; i += 1) {\n          arr.push(tempParent.childNodes[i]);\n        }\n      } else {\n        if (!context && selector[0] === '#' && !selector.match(/[ .<>:~]/)) {\n          // Pure ID selector\n          els = [document.getElementById(selector.trim().split('#')[1])];\n        } else {\n          // Other selectors\n          els = (context || document).querySelectorAll(selector.trim());\n        }\n        for (i = 0; i < els.length; i += 1) {\n          if (els[i]) { arr.push(els[i]); }\n        }\n      }\n    } else if (selector.nodeType || selector === window || selector === document) {\n      // Node/element\n      arr.push(selector);\n    } else if (selector.length > 0 && selector[0].nodeType) {\n      // Array of elements or instance of Dom\n      for (i = 0; i < selector.length; i += 1) {\n        arr.push(selector[i]);\n      }\n    }\n  }\n  return new Dom7(arr);\n}\n\n$$1$1.fn = Dom7.prototype;\n$$1$1.Class = Dom7;\n$$1$1.Dom7 = Dom7;\n\nfunction unique(arr) {\n  var uniqueArray = [];\n  for (var i = 0; i < arr.length; i += 1) {\n    if (uniqueArray.indexOf(arr[i]) === -1) { uniqueArray.push(arr[i]); }\n  }\n  return uniqueArray;\n}\nfunction toCamelCase(string) {\n  return string.toLowerCase().replace(/-(.)/g, function (match, group1) { return group1.toUpperCase(); });\n}\n\nfunction requestAnimationFrame(callback) {\n  if (window.requestAnimationFrame) { return window.requestAnimationFrame(callback); }\n  else if (window.webkitRequestAnimationFrame) { return window.webkitRequestAnimationFrame(callback); }\n  return window.setTimeout(callback, 1000 / 60);\n}\nfunction cancelAnimationFrame(id) {\n  if (window.cancelAnimationFrame) { return window.cancelAnimationFrame(id); }\n  else if (window.webkitCancelAnimationFrame) { return window.webkitCancelAnimationFrame(id); }\n  return window.clearTimeout(id);\n}\n\n// Classes and attributes\nfunction addClass(className) {\n  var this$1 = this;\n\n  if (typeof className === 'undefined') {\n    return this;\n  }\n  var classes = className.split(' ');\n  for (var i = 0; i < classes.length; i += 1) {\n    for (var j = 0; j < this.length; j += 1) {\n      if (typeof this$1[j].classList !== 'undefined') { this$1[j].classList.add(classes[i]); }\n    }\n  }\n  return this;\n}\nfunction removeClass(className) {\n  var this$1 = this;\n\n  var classes = className.split(' ');\n  for (var i = 0; i < classes.length; i += 1) {\n    for (var j = 0; j < this.length; j += 1) {\n      if (typeof this$1[j].classList !== 'undefined') { this$1[j].classList.remove(classes[i]); }\n    }\n  }\n  return this;\n}\nfunction hasClass(className) {\n  if (!this[0]) { return false; }\n  return this[0].classList.contains(className);\n}\nfunction toggleClass(className) {\n  var this$1 = this;\n\n  var classes = className.split(' ');\n  for (var i = 0; i < classes.length; i += 1) {\n    for (var j = 0; j < this.length; j += 1) {\n      if (typeof this$1[j].classList !== 'undefined') { this$1[j].classList.toggle(classes[i]); }\n    }\n  }\n  return this;\n}\nfunction attr(attrs, value) {\n  var arguments$1 = arguments;\n  var this$1 = this;\n\n  if (arguments.length === 1 && typeof attrs === 'string') {\n    // Get attr\n    if (this[0]) { return this[0].getAttribute(attrs); }\n    return undefined;\n  }\n\n  // Set attrs\n  for (var i = 0; i < this.length; i += 1) {\n    if (arguments$1.length === 2) {\n      // String\n      this$1[i].setAttribute(attrs, value);\n    } else {\n      // Object\n      // eslint-disable-next-line\n      for (var attrName in attrs) {\n        this$1[i][attrName] = attrs[attrName];\n        this$1[i].setAttribute(attrName, attrs[attrName]);\n      }\n    }\n  }\n  return this;\n}\n// eslint-disable-next-line\nfunction removeAttr(attr) {\n  var this$1 = this;\n\n  for (var i = 0; i < this.length; i += 1) {\n    this$1[i].removeAttribute(attr);\n  }\n  return this;\n}\n// eslint-disable-next-line\nfunction prop(props, value) {\n  var arguments$1 = arguments;\n  var this$1 = this;\n\n  if (arguments.length === 1 && typeof props === 'string') {\n    // Get prop\n    if (this[0]) { return this[0][props]; }\n  } else {\n    // Set props\n    for (var i = 0; i < this.length; i += 1) {\n      if (arguments$1.length === 2) {\n        // String\n        this$1[i][props] = value;\n      } else {\n        // Object\n        // eslint-disable-next-line\n        for (var propName in props) {\n          this$1[i][propName] = props[propName];\n        }\n      }\n    }\n    return this;\n  }\n}\nfunction data(key, value) {\n  var this$1 = this;\n\n  var el;\n  if (typeof value === 'undefined') {\n    el = this[0];\n    // Get value\n    if (el) {\n      if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) {\n        return el.dom7ElementDataStorage[key];\n      }\n\n      var dataKey = el.getAttribute((\"data-\" + key));\n      if (dataKey) {\n        return dataKey;\n      }\n      return undefined;\n    }\n    return undefined;\n  }\n\n  // Set value\n  for (var i = 0; i < this.length; i += 1) {\n    el = this$1[i];\n    if (!el.dom7ElementDataStorage) { el.dom7ElementDataStorage = {}; }\n    el.dom7ElementDataStorage[key] = value;\n  }\n  return this;\n}\nfunction removeData(key) {\n  var this$1 = this;\n\n  for (var i = 0; i < this.length; i += 1) {\n    var el = this$1[i];\n    if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n      el.dom7ElementDataStorage[key] = null;\n      delete el.dom7ElementDataStorage[key];\n    }\n  }\n}\nfunction dataset() {\n  var el = this[0];\n  if (!el) { return undefined; }\n  var dataset = {}; // eslint-disable-line\n  if (el.dataset) {\n    // eslint-disable-next-line\n    for (var dataKey in el.dataset) {\n      dataset[dataKey] = el.dataset[dataKey];\n    }\n  } else {\n    for (var i = 0; i < el.attributes.length; i += 1) {\n      // eslint-disable-next-line\n      var attr = el.attributes[i];\n      if (attr.name.indexOf('data-') >= 0) {\n        dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n      }\n    }\n  }\n  // eslint-disable-next-line\n  for (var key in dataset) {\n    if (dataset[key] === 'false') { dataset[key] = false; }\n    else if (dataset[key] === 'true') { dataset[key] = true; }\n    else if (parseFloat(dataset[key]) === dataset[key] * 1) { dataset[key] *= 1; }\n  }\n  return dataset;\n}\nfunction val(value) {\n  var this$1 = this;\n\n  if (typeof value === 'undefined') {\n    if (this[0]) {\n      if (this[0].multiple && this[0].nodeName.toLowerCase() === 'select') {\n        var values = [];\n        for (var i = 0; i < this[0].selectedOptions.length; i += 1) {\n          values.push(this$1[0].selectedOptions[i].value);\n        }\n        return values;\n      }\n      return this[0].value;\n    }\n    return undefined;\n  }\n\n  for (var i$1 = 0; i$1 < this.length; i$1 += 1) {\n    this$1[i$1].value = value;\n  }\n  return this;\n}\n// Transforms\n// eslint-disable-next-line\nfunction transform(transform) {\n  var this$1 = this;\n\n  for (var i = 0; i < this.length; i += 1) {\n    var elStyle = this$1[i].style;\n    elStyle.webkitTransform = transform;\n    elStyle.transform = transform;\n  }\n  return this;\n}\nfunction transition(duration) {\n  var this$1 = this;\n\n  if (typeof duration !== 'string') {\n    duration = duration + \"ms\"; // eslint-disable-line\n  }\n  for (var i = 0; i < this.length; i += 1) {\n    var elStyle = this$1[i].style;\n    elStyle.webkitTransitionDuration = duration;\n    elStyle.transitionDuration = duration;\n  }\n  return this;\n}\n// Events\nfunction on() {\n  var this$1 = this;\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  var eventType = args[0];\n  var targetSelector = args[1];\n  var listener = args[2];\n  var capture = args[3];\n  if (typeof args[1] === 'function') {\n    var assign;\n    (assign = args, eventType = assign[0], listener = assign[1], capture = assign[2]);\n    targetSelector = undefined;\n  }\n  if (!capture) { capture = false; }\n\n  function handleLiveEvent(e) {\n    var target = e.target;\n    if (!target) { return; }\n    var eventData = e.target.dom7EventData || [];\n    eventData.unshift(e);\n    if ($$1$1(target).is(targetSelector)) { listener.apply(target, eventData); }\n    else {\n      var parents = $$1$1(target).parents(); // eslint-disable-line\n      for (var k = 0; k < parents.length; k += 1) {\n        if ($$1$1(parents[k]).is(targetSelector)) { listener.apply(parents[k], eventData); }\n      }\n    }\n  }\n  function handleEvent(e) {\n    var eventData = e && e.target ? e.target.dom7EventData || [] : [];\n    eventData.unshift(e);\n    listener.apply(this, eventData);\n  }\n  var events = eventType.split(' ');\n  var j;\n  for (var i = 0; i < this.length; i += 1) {\n    var el = this$1[i];\n    if (!targetSelector) {\n      for (j = 0; j < events.length; j += 1) {\n        if (!el.dom7Listeners) { el.dom7Listeners = []; }\n        el.dom7Listeners.push({\n          type: eventType,\n          listener: listener,\n          proxyListener: handleEvent,\n        });\n        el.addEventListener(events[j], handleEvent, capture);\n      }\n    } else {\n      // Live events\n      for (j = 0; j < events.length; j += 1) {\n        if (!el.dom7LiveListeners) { el.dom7LiveListeners = []; }\n        el.dom7LiveListeners.push({\n          type: eventType,\n          listener: listener,\n          proxyListener: handleLiveEvent,\n        });\n        el.addEventListener(events[j], handleLiveEvent, capture);\n      }\n    }\n  }\n  return this;\n}\nfunction off() {\n  var this$1 = this;\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  var eventType = args[0];\n  var targetSelector = args[1];\n  var listener = args[2];\n  var capture = args[3];\n  if (typeof args[1] === 'function') {\n    var assign;\n    (assign = args, eventType = assign[0], listener = assign[1], capture = assign[2]);\n    targetSelector = undefined;\n  }\n  if (!capture) { capture = false; }\n\n  var events = eventType.split(' ');\n  for (var i = 0; i < events.length; i += 1) {\n    for (var j = 0; j < this.length; j += 1) {\n      var el = this$1[j];\n      if (!targetSelector) {\n        if (el.dom7Listeners) {\n          for (var k = 0; k < el.dom7Listeners.length; k += 1) {\n            if (listener) {\n              if (el.dom7Listeners[k].listener === listener) {\n                el.removeEventListener(events[i], el.dom7Listeners[k].proxyListener, capture);\n              }\n            } else if (el.dom7Listeners[k].type === events[i]) {\n              el.removeEventListener(events[i], el.dom7Listeners[k].proxyListener, capture);\n            }\n          }\n        }\n      } else if (el.dom7LiveListeners) {\n        for (var k$1 = 0; k$1 < el.dom7LiveListeners.length; k$1 += 1) {\n          if (listener) {\n            if (el.dom7LiveListeners[k$1].listener === listener) {\n              el.removeEventListener(events[i], el.dom7LiveListeners[k$1].proxyListener, capture);\n            }\n          } else if (el.dom7LiveListeners[k$1].type === events[i]) {\n            el.removeEventListener(events[i], el.dom7LiveListeners[k$1].proxyListener, capture);\n          }\n        }\n      }\n    }\n  }\n  return this;\n}\nfunction once() {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  var dom = this;\n  var eventName = args[0];\n  var targetSelector = args[1];\n  var listener = args[2];\n  var capture = args[3];\n  if (typeof args[1] === 'function') {\n    var assign;\n    (assign = args, eventName = assign[0], listener = assign[1], capture = assign[2]);\n    targetSelector = undefined;\n  }\n  function proxy(e) {\n    var eventData = e.target.dom7EventData || [];\n    listener.apply(this, eventData);\n    dom.off(eventName, targetSelector, proxy, capture);\n  }\n  return dom.on(eventName, targetSelector, proxy, capture);\n}\nfunction trigger() {\n  var this$1 = this;\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  var events = args[0].split(' ');\n  var eventData = args[1];\n  for (var i = 0; i < events.length; i += 1) {\n    for (var j = 0; j < this.length; j += 1) {\n      var evt = (void 0);\n      try {\n        evt = new window.CustomEvent(events[i], {\n          detail: eventData,\n          bubbles: true,\n          cancelable: true,\n        });\n      } catch (e) {\n        evt = document.createEvent('Event');\n        evt.initEvent(events[i], true, true);\n        evt.detail = eventData;\n      }\n      // eslint-disable-next-line\n      this$1[j].dom7EventData = args.filter(function (data, dataIndex) { return dataIndex > 0; });\n      this$1[j].dispatchEvent(evt);\n      this$1[j].dom7EventData = [];\n      delete this$1[j].dom7EventData;\n    }\n  }\n  return this;\n}\nfunction transitionEnd(callback) {\n  var events = ['webkitTransitionEnd', 'transitionend'];\n  var dom = this;\n  var i;\n  function fireCallBack(e) {\n    /* jshint validthis:true */\n    if (e.target !== this) { return; }\n    callback.call(this, e);\n    for (i = 0; i < events.length; i += 1) {\n      dom.off(events[i], fireCallBack);\n    }\n  }\n  if (callback) {\n    for (i = 0; i < events.length; i += 1) {\n      dom.on(events[i], fireCallBack);\n    }\n  }\n  return this;\n}\nfunction animationEnd(callback) {\n  var events = ['webkitAnimationEnd', 'animationend'];\n  var dom = this;\n  var i;\n  function fireCallBack(e) {\n    if (e.target !== this) { return; }\n    callback.call(this, e);\n    for (i = 0; i < events.length; i += 1) {\n      dom.off(events[i], fireCallBack);\n    }\n  }\n  if (callback) {\n    for (i = 0; i < events.length; i += 1) {\n      dom.on(events[i], fireCallBack);\n    }\n  }\n  return this;\n}\n// Sizing/Styles\nfunction width() {\n  if (this[0] === window) {\n    return window.innerWidth;\n  }\n\n  if (this.length > 0) {\n    return parseFloat(this.css('width'));\n  }\n\n  return null;\n}\nfunction outerWidth(includeMargins) {\n  if (this.length > 0) {\n    if (includeMargins) {\n      // eslint-disable-next-line\n      var styles = this.styles();\n      return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n    }\n    return this[0].offsetWidth;\n  }\n  return null;\n}\nfunction height() {\n  if (this[0] === window) {\n    return window.innerHeight;\n  }\n\n  if (this.length > 0) {\n    return parseFloat(this.css('height'));\n  }\n\n  return null;\n}\nfunction outerHeight(includeMargins) {\n  if (this.length > 0) {\n    if (includeMargins) {\n      // eslint-disable-next-line\n      var styles = this.styles();\n      return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n    }\n    return this[0].offsetHeight;\n  }\n  return null;\n}\nfunction offset() {\n  if (this.length > 0) {\n    var el = this[0];\n    var box = el.getBoundingClientRect();\n    var body = document.body;\n    var clientTop = el.clientTop || body.clientTop || 0;\n    var clientLeft = el.clientLeft || body.clientLeft || 0;\n    var scrollTop = el === window ? window.scrollY : el.scrollTop;\n    var scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n    return {\n      top: (box.top + scrollTop) - clientTop,\n      left: (box.left + scrollLeft) - clientLeft,\n    };\n  }\n\n  return null;\n}\nfunction hide() {\n  var this$1 = this;\n\n  for (var i = 0; i < this.length; i += 1) {\n    this$1[i].style.display = 'none';\n  }\n  return this;\n}\nfunction show() {\n  var this$1 = this;\n\n  for (var i = 0; i < this.length; i += 1) {\n    var el = this$1[i];\n    if (el.style.display === 'none') {\n      el.style.display = '';\n    }\n    if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n      // Still not visible\n      el.style.display = 'block';\n    }\n  }\n  return this;\n}\nfunction styles() {\n  if (this[0]) { return window.getComputedStyle(this[0], null); }\n  return {};\n}\nfunction css(props, value) {\n  var this$1 = this;\n\n  var i;\n  if (arguments.length === 1) {\n    if (typeof props === 'string') {\n      if (this[0]) { return window.getComputedStyle(this[0], null).getPropertyValue(props); }\n    } else {\n      for (i = 0; i < this.length; i += 1) {\n        // eslint-disable-next-line\n        for (var prop in props) {\n          this$1[i].style[prop] = props[prop];\n        }\n      }\n      return this;\n    }\n  }\n  if (arguments.length === 2 && typeof props === 'string') {\n    for (i = 0; i < this.length; i += 1) {\n      this$1[i].style[props] = value;\n    }\n    return this;\n  }\n  return this;\n}\n\n// Dom manipulation\nfunction toArray() {\n  var this$1 = this;\n\n  var arr = [];\n  for (var i = 0; i < this.length; i += 1) {\n    arr.push(this$1[i]);\n  }\n  return arr;\n}\n// Iterate over the collection passing elements to `callback`\nfunction each(callback) {\n  var this$1 = this;\n\n  // Don't bother continuing without a callback\n  if (!callback) { return this; }\n  // Iterate over the current collection\n  for (var i = 0; i < this.length; i += 1) {\n    // If the callback returns false\n    if (callback.call(this$1[i], i, this$1[i]) === false) {\n      // End the loop early\n      return this$1;\n    }\n  }\n  // Return `this` to allow chained DOM operations\n  return this;\n}\nfunction forEach(callback) {\n  var this$1 = this;\n\n  // Don't bother continuing without a callback\n  if (!callback) { return this; }\n  // Iterate over the current collection\n  for (var i = 0; i < this.length; i += 1) {\n    // If the callback returns false\n    if (callback.call(this$1[i], this$1[i], i) === false) {\n      // End the loop early\n      return this$1;\n    }\n  }\n  // Return `this` to allow chained DOM operations\n  return this;\n}\nfunction filter(callback) {\n  var matchedItems = [];\n  var dom = this;\n  for (var i = 0; i < dom.length; i += 1) {\n    if (callback.call(dom[i], i, dom[i])) { matchedItems.push(dom[i]); }\n  }\n  return new Dom7(matchedItems);\n}\nfunction map(callback) {\n  var modifiedItems = [];\n  var dom = this;\n  for (var i = 0; i < dom.length; i += 1) {\n    modifiedItems.push(callback.call(dom[i], i, dom[i]));\n  }\n  return new Dom7(modifiedItems);\n}\n// eslint-disable-next-line\nfunction html(html) {\n  var this$1 = this;\n\n  if (typeof html === 'undefined') {\n    return this[0] ? this[0].innerHTML : undefined;\n  }\n\n  for (var i = 0; i < this.length; i += 1) {\n    this$1[i].innerHTML = html;\n  }\n  return this;\n}\n// eslint-disable-next-line\nfunction text(text) {\n  var this$1 = this;\n\n  if (typeof text === 'undefined') {\n    if (this[0]) {\n      return this[0].textContent.trim();\n    }\n    return null;\n  }\n\n  for (var i = 0; i < this.length; i += 1) {\n    this$1[i].textContent = text;\n  }\n  return this;\n}\nfunction is(selector) {\n  var el = this[0];\n  var compareWith;\n  var i;\n  if (!el || typeof selector === 'undefined') { return false; }\n  if (typeof selector === 'string') {\n    if (el.matches) { return el.matches(selector); }\n    else if (el.webkitMatchesSelector) { return el.webkitMatchesSelector(selector); }\n    else if (el.msMatchesSelector) { return el.msMatchesSelector(selector); }\n\n    compareWith = $$1$1(selector);\n    for (i = 0; i < compareWith.length; i += 1) {\n      if (compareWith[i] === el) { return true; }\n    }\n    return false;\n  } else if (selector === document) { return el === document; }\n  else if (selector === window) { return el === window; }\n\n  if (selector.nodeType || selector instanceof Dom7) {\n    compareWith = selector.nodeType ? [selector] : selector;\n    for (i = 0; i < compareWith.length; i += 1) {\n      if (compareWith[i] === el) { return true; }\n    }\n    return false;\n  }\n  return false;\n}\nfunction indexOf(el) {\n  var this$1 = this;\n\n  for (var i = 0; i < this.length; i += 1) {\n    if (this$1[i] === el) { return i; }\n  }\n  return -1;\n}\nfunction index() {\n  var child = this[0];\n  var i;\n  if (child) {\n    i = 0;\n    // eslint-disable-next-line\n    while ((child = child.previousSibling) !== null) {\n      if (child.nodeType === 1) { i += 1; }\n    }\n    return i;\n  }\n  return undefined;\n}\n// eslint-disable-next-line\nfunction eq(index) {\n  if (typeof index === 'undefined') { return this; }\n  var length = this.length;\n  var returnIndex;\n  if (index > length - 1) {\n    return new Dom7([]);\n  }\n  if (index < 0) {\n    returnIndex = length + index;\n    if (returnIndex < 0) { return new Dom7([]); }\n    return new Dom7([this[returnIndex]]);\n  }\n  return new Dom7([this[index]]);\n}\nfunction append() {\n  var this$1 = this;\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  var newChild;\n\n  for (var k = 0; k < args.length; k += 1) {\n    newChild = args[k];\n    for (var i = 0; i < this.length; i += 1) {\n      if (typeof newChild === 'string') {\n        var tempDiv = document.createElement('div');\n        tempDiv.innerHTML = newChild;\n        while (tempDiv.firstChild) {\n          this$1[i].appendChild(tempDiv.firstChild);\n        }\n      } else if (newChild instanceof Dom7) {\n        for (var j = 0; j < newChild.length; j += 1) {\n          this$1[i].appendChild(newChild[j]);\n        }\n      } else {\n        this$1[i].appendChild(newChild);\n      }\n    }\n  }\n\n  return this;\n}\n // eslint-disable-next-line\nfunction appendTo(parent) {\n  $$1$1(parent).append(this);\n  return this;\n}\nfunction prepend(newChild) {\n  var this$1 = this;\n\n  var i;\n  var j;\n  for (i = 0; i < this.length; i += 1) {\n    if (typeof newChild === 'string') {\n      var tempDiv = document.createElement('div');\n      tempDiv.innerHTML = newChild;\n      for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n        this$1[i].insertBefore(tempDiv.childNodes[j], this$1[i].childNodes[0]);\n      }\n    } else if (newChild instanceof Dom7) {\n      for (j = 0; j < newChild.length; j += 1) {\n        this$1[i].insertBefore(newChild[j], this$1[i].childNodes[0]);\n      }\n    } else {\n      this$1[i].insertBefore(newChild, this$1[i].childNodes[0]);\n    }\n  }\n  return this;\n}\n // eslint-disable-next-line\nfunction prependTo(parent) {\n  $$1$1(parent).prepend(this);\n  return this;\n}\nfunction insertBefore(selector) {\n  var this$1 = this;\n\n  var before = $$1$1(selector);\n  for (var i = 0; i < this.length; i += 1) {\n    if (before.length === 1) {\n      before[0].parentNode.insertBefore(this$1[i], before[0]);\n    } else if (before.length > 1) {\n      for (var j = 0; j < before.length; j += 1) {\n        before[j].parentNode.insertBefore(this$1[i].cloneNode(true), before[j]);\n      }\n    }\n  }\n}\nfunction insertAfter(selector) {\n  var this$1 = this;\n\n  var after = $$1$1(selector);\n  for (var i = 0; i < this.length; i += 1) {\n    if (after.length === 1) {\n      after[0].parentNode.insertBefore(this$1[i], after[0].nextSibling);\n    } else if (after.length > 1) {\n      for (var j = 0; j < after.length; j += 1) {\n        after[j].parentNode.insertBefore(this$1[i].cloneNode(true), after[j].nextSibling);\n      }\n    }\n  }\n}\nfunction next(selector) {\n  if (this.length > 0) {\n    if (selector) {\n      if (this[0].nextElementSibling && $$1$1(this[0].nextElementSibling).is(selector)) {\n        return new Dom7([this[0].nextElementSibling]);\n      }\n      return new Dom7([]);\n    }\n\n    if (this[0].nextElementSibling) { return new Dom7([this[0].nextElementSibling]); }\n    return new Dom7([]);\n  }\n  return new Dom7([]);\n}\nfunction nextAll(selector) {\n  var nextEls = [];\n  var el = this[0];\n  if (!el) { return new Dom7([]); }\n  while (el.nextElementSibling) {\n    var next = el.nextElementSibling; // eslint-disable-line\n    if (selector) {\n      if ($$1$1(next).is(selector)) { nextEls.push(next); }\n    } else { nextEls.push(next); }\n    el = next;\n  }\n  return new Dom7(nextEls);\n}\nfunction prev(selector) {\n  if (this.length > 0) {\n    var el = this[0];\n    if (selector) {\n      if (el.previousElementSibling && $$1$1(el.previousElementSibling).is(selector)) {\n        return new Dom7([el.previousElementSibling]);\n      }\n      return new Dom7([]);\n    }\n\n    if (el.previousElementSibling) { return new Dom7([el.previousElementSibling]); }\n    return new Dom7([]);\n  }\n  return new Dom7([]);\n}\nfunction prevAll(selector) {\n  var prevEls = [];\n  var el = this[0];\n  if (!el) { return new Dom7([]); }\n  while (el.previousElementSibling) {\n    var prev = el.previousElementSibling; // eslint-disable-line\n    if (selector) {\n      if ($$1$1(prev).is(selector)) { prevEls.push(prev); }\n    } else { prevEls.push(prev); }\n    el = prev;\n  }\n  return new Dom7(prevEls);\n}\nfunction siblings(selector) {\n  return this.nextAll(selector).add(this.prevAll(selector));\n}\nfunction parent(selector) {\n  var this$1 = this;\n\n  var parents = []; // eslint-disable-line\n  for (var i = 0; i < this.length; i += 1) {\n    if (this$1[i].parentNode !== null) {\n      if (selector) {\n        if ($$1$1(this$1[i].parentNode).is(selector)) { parents.push(this$1[i].parentNode); }\n      } else {\n        parents.push(this$1[i].parentNode);\n      }\n    }\n  }\n  return $$1$1(unique(parents));\n}\nfunction parents(selector) {\n  var this$1 = this;\n\n  var parents = []; // eslint-disable-line\n  for (var i = 0; i < this.length; i += 1) {\n    var parent = this$1[i].parentNode; // eslint-disable-line\n    while (parent) {\n      if (selector) {\n        if ($$1$1(parent).is(selector)) { parents.push(parent); }\n      } else {\n        parents.push(parent);\n      }\n      parent = parent.parentNode;\n    }\n  }\n  return $$1$1(unique(parents));\n}\nfunction closest(selector) {\n  var closest = this; // eslint-disable-line\n  if (typeof selector === 'undefined') {\n    return new Dom7([]);\n  }\n  if (!closest.is(selector)) {\n    closest = closest.parents(selector).eq(0);\n  }\n  return closest;\n}\nfunction find(selector) {\n  var this$1 = this;\n\n  var foundElements = [];\n  for (var i = 0; i < this.length; i += 1) {\n    var found = this$1[i].querySelectorAll(selector);\n    for (var j = 0; j < found.length; j += 1) {\n      foundElements.push(found[j]);\n    }\n  }\n  return new Dom7(foundElements);\n}\nfunction children(selector) {\n  var this$1 = this;\n\n  var children = []; // eslint-disable-line\n  for (var i = 0; i < this.length; i += 1) {\n    var childNodes = this$1[i].childNodes;\n\n    for (var j = 0; j < childNodes.length; j += 1) {\n      if (!selector) {\n        if (childNodes[j].nodeType === 1) { children.push(childNodes[j]); }\n      } else if (childNodes[j].nodeType === 1 && $$1$1(childNodes[j]).is(selector)) {\n        children.push(childNodes[j]);\n      }\n    }\n  }\n  return new Dom7(unique(children));\n}\nfunction remove() {\n  var this$1 = this;\n\n  for (var i = 0; i < this.length; i += 1) {\n    if (this$1[i].parentNode) { this$1[i].parentNode.removeChild(this$1[i]); }\n  }\n  return this;\n}\nfunction detach() {\n  return this.remove();\n}\nfunction add() {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  var dom = this;\n  var i;\n  var j;\n  for (i = 0; i < args.length; i += 1) {\n    var toAdd = $$1$1(args[i]);\n    for (j = 0; j < toAdd.length; j += 1) {\n      dom[dom.length] = toAdd[j];\n      dom.length += 1;\n    }\n  }\n  return dom;\n}\nfunction empty() {\n  var this$1 = this;\n\n  for (var i = 0; i < this.length; i += 1) {\n    var el = this$1[i];\n    if (el.nodeType === 1) {\n      for (var j = 0; j < el.childNodes.length; j += 1) {\n        if (el.childNodes[j].parentNode) {\n          el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n        }\n      }\n      el.textContent = '';\n    }\n  }\n  return this;\n}\n\n\n\n\nvar Methods = Object.freeze({\n\taddClass: addClass,\n\tremoveClass: removeClass,\n\thasClass: hasClass,\n\ttoggleClass: toggleClass,\n\tattr: attr,\n\tremoveAttr: removeAttr,\n\tprop: prop,\n\tdata: data,\n\tremoveData: removeData,\n\tdataset: dataset,\n\tval: val,\n\ttransform: transform,\n\ttransition: transition,\n\ton: on,\n\toff: off,\n\tonce: once,\n\ttrigger: trigger,\n\ttransitionEnd: transitionEnd,\n\tanimationEnd: animationEnd,\n\twidth: width,\n\touterWidth: outerWidth,\n\theight: height,\n\touterHeight: outerHeight,\n\toffset: offset,\n\thide: hide,\n\tshow: show,\n\tstyles: styles,\n\tcss: css,\n\ttoArray: toArray,\n\teach: each,\n\tforEach: forEach,\n\tfilter: filter,\n\tmap: map,\n\thtml: html,\n\ttext: text,\n\tis: is,\n\tindexOf: indexOf,\n\tindex: index,\n\teq: eq,\n\tappend: append,\n\tappendTo: appendTo,\n\tprepend: prepend,\n\tprependTo: prependTo,\n\tinsertBefore: insertBefore,\n\tinsertAfter: insertAfter,\n\tnext: next,\n\tnextAll: nextAll,\n\tprev: prev,\n\tprevAll: prevAll,\n\tsiblings: siblings,\n\tparent: parent,\n\tparents: parents,\n\tclosest: closest,\n\tfind: find,\n\tchildren: children,\n\tremove: remove,\n\tdetach: detach,\n\tadd: add,\n\tempty: empty\n});\n\nfunction scrollTo() {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  var left = args[0];\n  var top = args[1];\n  var duration = args[2];\n  var easing = args[3];\n  var callback = args[4];\n  if (args.length === 4 && typeof easing === 'function') {\n    callback = easing;\n    var assign;\n    (assign = args, left = assign[0], top = assign[1], duration = assign[2], callback = assign[3], easing = assign[4]);\n  }\n  if (typeof easing === 'undefined') { easing = 'swing'; }\n\n  return this.each(function animate() {\n    var el = this;\n    var currentTop;\n    var currentLeft;\n    var maxTop;\n    var maxLeft;\n    var newTop;\n    var newLeft;\n    var scrollTop; // eslint-disable-line\n    var scrollLeft; // eslint-disable-line\n    var animateTop = top > 0 || top === 0;\n    var animateLeft = left > 0 || left === 0;\n    if (typeof easing === 'undefined') {\n      easing = 'swing';\n    }\n    if (animateTop) {\n      currentTop = el.scrollTop;\n      if (!duration) {\n        el.scrollTop = top;\n      }\n    }\n    if (animateLeft) {\n      currentLeft = el.scrollLeft;\n      if (!duration) {\n        el.scrollLeft = left;\n      }\n    }\n    if (!duration) { return; }\n    if (animateTop) {\n      maxTop = el.scrollHeight - el.offsetHeight;\n      newTop = Math.max(Math.min(top, maxTop), 0);\n    }\n    if (animateLeft) {\n      maxLeft = el.scrollWidth - el.offsetWidth;\n      newLeft = Math.max(Math.min(left, maxLeft), 0);\n    }\n    var startTime = null;\n    if (animateTop && newTop === currentTop) { animateTop = false; }\n    if (animateLeft && newLeft === currentLeft) { animateLeft = false; }\n    function render(time) {\n      if ( time === void 0 ) time = new Date().getTime();\n\n      if (startTime === null) {\n        startTime = time;\n      }\n      var progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n      var easeProgress = easing === 'linear' ? progress : (0.5 - (Math.cos(progress * Math.PI) / 2));\n      var done;\n      if (animateTop) { scrollTop = currentTop + (easeProgress * (newTop - currentTop)); }\n      if (animateLeft) { scrollLeft = currentLeft + (easeProgress * (newLeft - currentLeft)); }\n      if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n        el.scrollTop = newTop;\n        done = true;\n      }\n      if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n        el.scrollTop = newTop;\n        done = true;\n      }\n      if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n        el.scrollLeft = newLeft;\n        done = true;\n      }\n      if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n        el.scrollLeft = newLeft;\n        done = true;\n      }\n\n      if (done) {\n        if (callback) { callback(); }\n        return;\n      }\n      if (animateTop) { el.scrollTop = scrollTop; }\n      if (animateLeft) { el.scrollLeft = scrollLeft; }\n      requestAnimationFrame(render);\n    }\n    requestAnimationFrame(render);\n  });\n}\n// scrollTop(top, duration, easing, callback) {\nfunction scrollTop() {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  var top = args[0];\n  var duration = args[1];\n  var easing = args[2];\n  var callback = args[3];\n  if (args.length === 3 && typeof easing === 'function') {\n    var assign;\n    (assign = args, top = assign[0], duration = assign[1], callback = assign[2], easing = assign[3]);\n  }\n  var dom = this;\n  if (typeof top === 'undefined') {\n    if (dom.length > 0) { return dom[0].scrollTop; }\n    return null;\n  }\n  return dom.scrollTo(undefined, top, duration, easing, callback);\n}\nfunction scrollLeft() {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  var left = args[0];\n  var duration = args[1];\n  var easing = args[2];\n  var callback = args[3];\n  if (args.length === 3 && typeof easing === 'function') {\n    var assign;\n    (assign = args, left = assign[0], duration = assign[1], callback = assign[2], easing = assign[3]);\n  }\n  var dom = this;\n  if (typeof left === 'undefined') {\n    if (dom.length > 0) { return dom[0].scrollLeft; }\n    return null;\n  }\n  return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n\n\n\nvar Scroll = Object.freeze({\n\tscrollTo: scrollTo,\n\tscrollTop: scrollTop,\n\tscrollLeft: scrollLeft\n});\n\nfunction animate(initialProps, initialParams) {\n  var els = this;\n  var a = {\n    props: $$1$1.extend({}, initialProps),\n    params: $$1$1.extend({\n      duration: 300,\n      easing: 'swing', // or 'linear'\n      /* Callbacks\n      begin(elements)\n      complete(elements)\n      progress(elements, complete, remaining, start, tweenValue)\n      */\n    }, initialParams),\n\n    elements: els,\n    animating: false,\n    que: [],\n\n    easingProgress: function easingProgress(easing, progress) {\n      if (easing === 'swing') {\n        return 0.5 - (Math.cos(progress * Math.PI) / 2);\n      }\n      if (typeof easing === 'function') {\n        return easing(progress);\n      }\n      return progress;\n    },\n    stop: function stop() {\n      if (a.frameId) {\n        cancelAnimationFrame(a.frameId);\n      }\n      a.animating = false;\n      a.elements.each(function (index, el) {\n        var element = el;\n        delete element.dom7AnimateInstance;\n      });\n      a.que = [];\n    },\n    done: function done(complete) {\n      a.animating = false;\n      a.elements.each(function (index, el) {\n        var element = el;\n        delete element.dom7AnimateInstance;\n      });\n      if (complete) { complete(els); }\n      if (a.que.length > 0) {\n        var que = a.que.shift();\n        a.animate(que[0], que[1]);\n      }\n    },\n    animate: function animate(props, params) {\n      if (a.animating) {\n        a.que.push([props, params]);\n        return a;\n      }\n      var elements = [];\n\n      // Define & Cache Initials & Units\n      a.elements.each(function (index, el) {\n        var initialFullValue;\n        var initialValue;\n        var unit;\n        var finalValue;\n        var finalFullValue;\n\n        if (!el.dom7AnimateInstance) { a.elements[index].dom7AnimateInstance = a; }\n\n        elements[index] = {\n          container: el,\n        };\n        Object.keys(props).forEach(function (prop) {\n          initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n          initialValue = parseFloat(initialFullValue);\n          unit = initialFullValue.replace(initialValue, '');\n          finalValue = parseFloat(props[prop]);\n          finalFullValue = props[prop] + unit;\n          elements[index][prop] = {\n            initialFullValue: initialFullValue,\n            initialValue: initialValue,\n            unit: unit,\n            finalValue: finalValue,\n            finalFullValue: finalFullValue,\n            currentValue: initialValue,\n          };\n        });\n      });\n\n      var startTime = null;\n      var time;\n      var elementsDone = 0;\n      var propsDone = 0;\n      var done;\n      var began = false;\n\n      a.animating = true;\n\n      function render() {\n        time = new Date().getTime();\n        var progress;\n        var easeProgress;\n        // let el;\n        if (!began) {\n          began = true;\n          if (params.begin) { params.begin(els); }\n        }\n        if (startTime === null) {\n          startTime = time;\n        }\n        if (params.progress) {\n          // eslint-disable-next-line\n          params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), ((startTime + params.duration) - time < 0 ? 0 : (startTime + params.duration) - time), startTime);\n        }\n\n        elements.forEach(function (element) {\n          var el = element;\n          if (done || el.done) { return; }\n          Object.keys(props).forEach(function (prop) {\n            if (done || el.done) { return; }\n            progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n            easeProgress = a.easingProgress(params.easing, progress);\n            var ref = el[prop];\n            var initialValue = ref.initialValue;\n            var finalValue = ref.finalValue;\n            var unit = ref.unit;\n            el[prop].currentValue = initialValue + (easeProgress * (finalValue - initialValue));\n            var currentValue = el[prop].currentValue;\n\n            if (\n              (finalValue > initialValue && currentValue >= finalValue) ||\n              (finalValue < initialValue && currentValue <= finalValue)) {\n              el.container.style[prop] = finalValue + unit;\n              propsDone += 1;\n              if (propsDone === Object.keys(props).length) {\n                el.done = true;\n                elementsDone += 1;\n              }\n              if (elementsDone === elements.length) {\n                done = true;\n              }\n            }\n            if (done) {\n              a.done(params.complete);\n              return;\n            }\n            el.container.style[prop] = currentValue + unit;\n          });\n        });\n        if (done) { return; }\n        // Then call\n        a.frameId = requestAnimationFrame(render);\n      }\n      a.frameId = requestAnimationFrame(render);\n      return a;\n    },\n  };\n\n  if (a.elements.length === 0) {\n    return els;\n  }\n\n  var animateInstance;\n  for (var i = 0; i < a.elements.length; i += 1) {\n    if (a.elements[i].dom7AnimateInstance) {\n      animateInstance = a.elements[i].dom7AnimateInstance;\n    } else { a.elements[i].dom7AnimateInstance = a; }\n  }\n  if (!animateInstance) {\n    animateInstance = a;\n  }\n\n  if (initialProps === 'stop') {\n    animateInstance.stop();\n  } else {\n    animateInstance.animate(a.props, a.params);\n  }\n\n  return els;\n}\n\nfunction stop() {\n  var els = this;\n  for (var i = 0; i < els.length; i += 1) {\n    if (els[i].dom7AnimateInstance) {\n      els[i].dom7AnimateInstance.stop();\n    }\n  }\n}\n\n\n\n\nvar Animate = Object.freeze({\n\tanimate: animate,\n\tstop: stop\n});\n\nvar noTrigger = ('resize scroll').split(' ');\nfunction eventShortcut(name) {\n  var this$1 = this;\n  var args = [], len = arguments.length - 1;\n  while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n  if (typeof args[0] === 'undefined') {\n    for (var i = 0; i < this.length; i += 1) {\n      if (noTrigger.indexOf(name) < 0) {\n        if (name in this$1[i]) { this$1[i][name](); }\n        else {\n          $$1$1(this$1[i]).trigger(name);\n        }\n      }\n    }\n    return this;\n  }\n  return (ref = this).on.apply(ref, [ name ].concat( args ));\n  var ref;\n}\n\nfunction click() {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  return eventShortcut.bind(this).apply(void 0, [ 'click' ].concat( args ));\n}\nfunction blur() {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  return eventShortcut.bind(this).apply(void 0, [ 'blur' ].concat( args ));\n}\nfunction focus() {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  return eventShortcut.bind(this).apply(void 0, [ 'focus' ].concat( args ));\n}\nfunction focusin() {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  return eventShortcut.bind(this).apply(void 0, [ 'focusin' ].concat( args ));\n}\nfunction focusout() {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  return eventShortcut.bind(this).apply(void 0, [ 'focusout' ].concat( args ));\n}\nfunction keyup() {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  return eventShortcut.bind(this).apply(void 0, [ 'keyup' ].concat( args ));\n}\nfunction keydown() {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  return eventShortcut.bind(this).apply(void 0, [ 'keydown' ].concat( args ));\n}\nfunction keypress() {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  return eventShortcut.bind(this).apply(void 0, [ 'keypress' ].concat( args ));\n}\nfunction submit() {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  return eventShortcut.bind(this).apply(void 0, [ 'submit' ].concat( args ));\n}\nfunction change() {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  return eventShortcut.bind(this).apply(void 0, [ 'change' ].concat( args ));\n}\nfunction mousedown() {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  return eventShortcut.bind(this).apply(void 0, [ 'mousedown' ].concat( args ));\n}\nfunction mousemove() {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  return eventShortcut.bind(this).apply(void 0, [ 'mousemove' ].concat( args ));\n}\nfunction mouseup() {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  return eventShortcut.bind(this).apply(void 0, [ 'mouseup' ].concat( args ));\n}\nfunction mouseenter() {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  return eventShortcut.bind(this).apply(void 0, [ 'mouseenter' ].concat( args ));\n}\nfunction mouseleave() {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  return eventShortcut.bind(this).apply(void 0, [ 'mouseleave' ].concat( args ));\n}\nfunction mouseout() {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  return eventShortcut.bind(this).apply(void 0, [ 'mouseout' ].concat( args ));\n}\nfunction mouseover() {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  return eventShortcut.bind(this).apply(void 0, [ 'mouseover' ].concat( args ));\n}\nfunction touchstart() {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  return eventShortcut.bind(this).apply(void 0, [ 'touchstart' ].concat( args ));\n}\nfunction touchend() {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  return eventShortcut.bind(this).apply(void 0, [ 'touchend' ].concat( args ));\n}\nfunction touchmove() {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  return eventShortcut.bind(this).apply(void 0, [ 'touchmove' ].concat( args ));\n}\nfunction resize() {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  return eventShortcut.bind(this).apply(void 0, [ 'resize' ].concat( args ));\n}\nfunction scroll() {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  return eventShortcut.bind(this).apply(void 0, [ 'scroll' ].concat( args ));\n}\n\n\n\n\nvar eventShortcuts = Object.freeze({\n\tclick: click,\n\tblur: blur,\n\tfocus: focus,\n\tfocusin: focusin,\n\tfocusout: focusout,\n\tkeyup: keyup,\n\tkeydown: keydown,\n\tkeypress: keypress,\n\tsubmit: submit,\n\tchange: change,\n\tmousedown: mousedown,\n\tmousemove: mousemove,\n\tmouseup: mouseup,\n\tmouseenter: mouseenter,\n\tmouseleave: mouseleave,\n\tmouseout: mouseout,\n\tmouseover: mouseover,\n\ttouchstart: touchstart,\n\ttouchend: touchend,\n\ttouchmove: touchmove,\n\tresize: resize,\n\tscroll: scroll\n});\n\n[Methods, Scroll, Animate, eventShortcuts].forEach(function (group) {\n  Object.keys(group).forEach(function (methodName) {\n    $$1$1.fn[methodName] = group[methodName];\n  });\n});\n\n/**\n * https://github.com/gre/bezier-easing\n * BezierEasing - use bezier curve for transition easing function\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\n */\n\n/* eslint-disable */\n\n// These values are established by empiricism with tests (tradeoff: performance VS precision)\nvar NEWTON_ITERATIONS = 4;\nvar NEWTON_MIN_SLOPE = 0.001;\nvar SUBDIVISION_PRECISION = 0.0000001;\nvar SUBDIVISION_MAX_ITERATIONS = 10;\n\nvar kSplineTableSize = 11;\nvar kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\nvar float32ArraySupported = typeof Float32Array === 'function';\n\nfunction A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }\nfunction B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }\nfunction C (aA1)      { return 3.0 * aA1; }\n\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nfunction calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; }\n\n// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\nfunction getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); }\n\nfunction binarySubdivide (aX, aA, aB, mX1, mX2) {\n  var currentX, currentT, i = 0;\n  do {\n    currentT = aA + (aB - aA) / 2.0;\n    currentX = calcBezier(currentT, mX1, mX2) - aX;\n    if (currentX > 0.0) {\n      aB = currentT;\n    } else {\n      aA = currentT;\n    }\n  } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n  return currentT;\n}\n\nfunction newtonRaphsonIterate (aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n   var currentSlope = getSlope(aGuessT, mX1, mX2);\n   if (currentSlope === 0.0) {\n     return aGuessT;\n   }\n   var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n   aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n}\n\nfunction bezier (mX1, mY1, mX2, mY2) {\n  if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {\n    throw new Error('bezier x values must be in [0, 1] range');\n  }\n\n  // Precompute samples table\n  var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n  if (mX1 !== mY1 || mX2 !== mY2) {\n    for (var i = 0; i < kSplineTableSize; ++i) {\n      sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n    }\n  }\n\n  function getTForX (aX) {\n    var intervalStart = 0.0;\n    var currentSample = 1;\n    var lastSample = kSplineTableSize - 1;\n\n    for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n      intervalStart += kSampleStepSize;\n    }\n    --currentSample;\n\n    // Interpolate to provide an initial guess for t\n    var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n    var guessForT = intervalStart + dist * kSampleStepSize;\n\n    var initialSlope = getSlope(guessForT, mX1, mX2);\n    if (initialSlope >= NEWTON_MIN_SLOPE) {\n      return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n    } else if (initialSlope === 0.0) {\n      return guessForT;\n    } else {\n      return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n    }\n  }\n\n  return function BezierEasing (x) {\n    if (mX1 === mY1 && mX2 === mY2) {\n      return x; // linear\n    }\n    // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n    if (x === 0) {\n      return 0;\n    }\n    if (x === 1) {\n      return 1;\n    }\n    return calcBezier(getTForX(x), mY1, mY2);\n  };\n}\n\n// Remove Diacritics\nvar defaultDiacriticsRemovalap = [\n  { base: 'A', letters: '\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F' },\n  { base: 'AA', letters: '\\uA732' },\n  { base: 'AE', letters: '\\u00C6\\u01FC\\u01E2' },\n  { base: 'AO', letters: '\\uA734' },\n  { base: 'AU', letters: '\\uA736' },\n  { base: 'AV', letters: '\\uA738\\uA73A' },\n  { base: 'AY', letters: '\\uA73C' },\n  { base: 'B', letters: '\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181' },\n  { base: 'C', letters: '\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E' },\n  { base: 'D', letters: '\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779' },\n  { base: 'DZ', letters: '\\u01F1\\u01C4' },\n  { base: 'Dz', letters: '\\u01F2\\u01C5' },\n  { base: 'E', letters: '\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E' },\n  { base: 'F', letters: '\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B' },\n  { base: 'G', letters: '\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E' },\n  { base: 'H', letters: '\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D' },\n  { base: 'I', letters: '\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197' },\n  { base: 'J', letters: '\\u004A\\u24BF\\uFF2A\\u0134\\u0248' },\n  { base: 'K', letters: '\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2' },\n  { base: 'L', letters: '\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780' },\n  { base: 'LJ', letters: '\\u01C7' },\n  { base: 'Lj', letters: '\\u01C8' },\n  { base: 'M', letters: '\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C' },\n  { base: 'N', letters: '\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4' },\n  { base: 'NJ', letters: '\\u01CA' },\n  { base: 'Nj', letters: '\\u01CB' },\n  { base: 'O', letters: '\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C' },\n  { base: 'OI', letters: '\\u01A2' },\n  { base: 'OO', letters: '\\uA74E' },\n  { base: 'OU', letters: '\\u0222' },\n  { base: 'OE', letters: '\\u008C\\u0152' },\n  { base: 'oe', letters: '\\u009C\\u0153' },\n  { base: 'P', letters: '\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754' },\n  { base: 'Q', letters: '\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A' },\n  { base: 'R', letters: '\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782' },\n  { base: 'S', letters: '\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784' },\n  { base: 'T', letters: '\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786' },\n  { base: 'TZ', letters: '\\uA728' },\n  { base: 'U', letters: '\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244' },\n  { base: 'V', letters: '\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245' },\n  { base: 'VY', letters: '\\uA760' },\n  { base: 'W', letters: '\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72' },\n  { base: 'X', letters: '\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C' },\n  { base: 'Y', letters: '\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE' },\n  { base: 'Z', letters: '\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762' },\n  { base: 'a', letters: '\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250' },\n  { base: 'aa', letters: '\\uA733' },\n  { base: 'ae', letters: '\\u00E6\\u01FD\\u01E3' },\n  { base: 'ao', letters: '\\uA735' },\n  { base: 'au', letters: '\\uA737' },\n  { base: 'av', letters: '\\uA739\\uA73B' },\n  { base: 'ay', letters: '\\uA73D' },\n  { base: 'b', letters: '\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253' },\n  { base: 'c', letters: '\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184' },\n  { base: 'd', letters: '\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A' },\n  { base: 'dz', letters: '\\u01F3\\u01C6' },\n  { base: 'e', letters: '\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD' },\n  { base: 'f', letters: '\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C' },\n  { base: 'g', letters: '\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F' },\n  { base: 'h', letters: '\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265' },\n  { base: 'hv', letters: '\\u0195' },\n  { base: 'i', letters: '\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131' },\n  { base: 'j', letters: '\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249' },\n  { base: 'k', letters: '\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3' },\n  { base: 'l', letters: '\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747' },\n  { base: 'lj', letters: '\\u01C9' },\n  { base: 'm', letters: '\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F' },\n  { base: 'n', letters: '\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5' },\n  { base: 'nj', letters: '\\u01CC' },\n  { base: 'o', letters: '\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275' },\n  { base: 'oi', letters: '\\u01A3' },\n  { base: 'ou', letters: '\\u0223' },\n  { base: 'oo', letters: '\\uA74F' },\n  { base: 'p', letters: '\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755' },\n  { base: 'q', letters: '\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759' },\n  { base: 'r', letters: '\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783' },\n  { base: 's', letters: '\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B' },\n  { base: 't', letters: '\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787' },\n  { base: 'tz', letters: '\\uA729' },\n  { base: 'u', letters: '\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289' },\n  { base: 'v', letters: '\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C' },\n  { base: 'vy', letters: '\\uA761' },\n  { base: 'w', letters: '\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73' },\n  { base: 'x', letters: '\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D' },\n  { base: 'y', letters: '\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF' },\n  { base: 'z', letters: '\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763' } ];\n\nvar diacriticsMap = {};\nfor (var i = 0; i < defaultDiacriticsRemovalap.length; i += 1) {\n  var letters = defaultDiacriticsRemovalap[i].letters;\n  for (var j = 0; j < letters.length; j += 1) {\n    diacriticsMap[letters[j]] = defaultDiacriticsRemovalap[i].base;\n  }\n}\n\nvar createPromise = function createPromise(handler) {\n  var resolved = false;\n  var rejected = false;\n  var resolveArgs;\n  var rejectArgs;\n  var promiseHandlers = {\n    then: undefined,\n    catch: undefined,\n  };\n  var promise = {\n    then: function then(thenHandler) {\n      if (resolved) {\n        thenHandler.apply(void 0, resolveArgs);\n      } else {\n        promiseHandlers.then = thenHandler;\n      }\n      return promise;\n    },\n    catch: function catch$1(catchHandler) {\n      if (rejected) {\n        catchHandler.apply(void 0, rejectArgs);\n      } else {\n        promiseHandlers.catch = catchHandler;\n      }\n      return promise;\n    },\n  };\n\n  function resolve() {\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n\n    resolved = true;\n    if (promiseHandlers.then) { promiseHandlers.then.apply(promiseHandlers, args); }\n    else { resolveArgs = args; }\n  }\n  function reject() {\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n\n    rejected = true;\n    if (promiseHandlers.catch) { promiseHandlers.catch.apply(promiseHandlers, args); }\n    else { rejectArgs = args; }\n  }\n  handler(resolve, reject);\n\n  return promise;\n};\n\nvar Utils = {\n  mdPreloaderContent: \"\\n    <span class=\\\"preloader-inner\\\">\\n      <span class=\\\"preloader-inner-gap\\\"></span>\\n      <span class=\\\"preloader-inner-left\\\">\\n          <span class=\\\"preloader-inner-half-circle\\\"></span>\\n      </span>\\n      <span class=\\\"preloader-inner-right\\\">\\n          <span class=\\\"preloader-inner-half-circle\\\"></span>\\n      </span>\\n    </span>\\n  \".trim(),\n  eventNameToColonCase: function eventNameToColonCase(eventName) {\n    var hasColon;\n    return eventName.split('').map(function (char, index) {\n      if (char.match(/[A-Z]/) && index !== 0 && !hasColon) {\n        hasColon = true;\n        return (\":\" + (char.toLowerCase()));\n      }\n      return char.toLowerCase();\n    }).join('');\n  },\n  deleteProps: function deleteProps(obj) {\n    var object = obj;\n    Object.keys(object).forEach(function (key) {\n      try {\n        object[key] = null;\n      } catch (e) {\n        // no getter for object\n      }\n      try {\n        delete object[key];\n      } catch (e) {\n        // something got wrong\n      }\n    });\n  },\n  bezier: function bezier$1() {\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n\n    return bezier.apply(void 0, args);\n  },\n  nextTick: function nextTick(callback, delay) {\n    if ( delay === void 0 ) delay = 0;\n\n    return setTimeout(callback, delay);\n  },\n  nextFrame: function nextFrame(callback) {\n    return Utils.requestAnimationFrame(callback);\n  },\n  now: function now() {\n    return Date.now();\n  },\n  promise: function promise(handler) {\n    return window.Promise ? new Promise(handler) : createPromise(handler);\n  },\n  requestAnimationFrame: function requestAnimationFrame(callback) {\n    if (window.requestAnimationFrame) { return window.requestAnimationFrame(callback); }\n    else if (window.webkitRequestAnimationFrame) { return window.webkitRequestAnimationFrame(callback); }\n    return window.setTimeout(callback, 1000 / 60);\n  },\n  cancelAnimationFrame: function cancelAnimationFrame(id) {\n    if (window.cancelAnimationFrame) { return window.cancelAnimationFrame(id); }\n    else if (window.webkitCancelAnimationFrame) { return window.webkitCancelAnimationFrame(id); }\n    return window.clearTimeout(id);\n  },\n  removeDiacritics: function removeDiacritics(str) {\n    return str.replace(/[^\\u0000-\\u007E]/g, function (a) { return diacriticsMap[a] || a; });\n  },\n  parseUrlQuery: function parseUrlQuery(url) {\n    var query = {};\n    var urlToParse = url || window.location.href;\n    var i;\n    var params;\n    var param;\n    var length;\n    if (typeof urlToParse === 'string' && urlToParse.length) {\n      urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n      params = urlToParse.split('&').filter(function (paramsPart) { return paramsPart !== ''; });\n      length = params.length;\n\n      for (i = 0; i < length; i += 1) {\n        param = params[i].replace(/#\\S+/g, '').split('=');\n        query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';\n      }\n    }\n    return query;\n  },\n  getTranslate: function getTranslate(el, axis) {\n    if ( axis === void 0 ) axis = 'x';\n\n    var matrix;\n    var curTransform;\n    var transformMatrix;\n\n    var curStyle = window.getComputedStyle(el, null);\n\n    if (window.WebKitCSSMatrix) {\n      curTransform = curStyle.transform || curStyle.webkitTransform;\n      if (curTransform.split(',').length > 6) {\n        curTransform = curTransform.split(', ').map(function (a) { return a.replace(',', '.'); }).join(', ');\n      }\n      // Some old versions of Webkit choke when 'none' is passed; pass\n      // empty string instead in this case\n      transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n    } else {\n      transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n      matrix = transformMatrix.toString().split(',');\n    }\n\n    if (axis === 'x') {\n      // Latest Chrome and webkits Fix\n      if (window.WebKitCSSMatrix) { curTransform = transformMatrix.m41; }\n      // Crazy IE10 Matrix\n      else if (matrix.length === 16) { curTransform = parseFloat(matrix[12]); }\n      // Normal Browsers\n      else { curTransform = parseFloat(matrix[4]); }\n    }\n    if (axis === 'y') {\n      // Latest Chrome and webkits Fix\n      if (window.WebKitCSSMatrix) { curTransform = transformMatrix.m42; }\n      // Crazy IE10 Matrix\n      else if (matrix.length === 16) { curTransform = parseFloat(matrix[13]); }\n      // Normal Browsers\n      else { curTransform = parseFloat(matrix[5]); }\n    }\n    return curTransform || 0;\n  },\n  serializeObject: function serializeObject(obj, parents) {\n    if ( parents === void 0 ) parents = [];\n\n    if (typeof obj === 'string') { return obj; }\n    var resultArray = [];\n    var separator = '&';\n    var newParents;\n    function varName(name) {\n      if (parents.length > 0) {\n        var parentParts = '';\n        for (var j = 0; j < parents.length; j += 1) {\n          if (j === 0) { parentParts += parents[j]; }\n          else { parentParts += \"[\" + (encodeURIComponent(parents[j])) + \"]\"; }\n        }\n        return (parentParts + \"[\" + (encodeURIComponent(name)) + \"]\");\n      }\n      return encodeURIComponent(name);\n    }\n    function varValue(value) {\n      return encodeURIComponent(value);\n    }\n    Object.keys(obj).forEach(function (prop) {\n      var toPush;\n      if (Array.isArray(obj[prop])) {\n        toPush = [];\n        for (var i = 0; i < obj[prop].length; i += 1) {\n          if (!Array.isArray(obj[prop][i]) && typeof obj[prop][i] === 'object') {\n            newParents = parents.slice();\n            newParents.push(prop);\n            newParents.push(String(i));\n            toPush.push(Utils.serializeObject(obj[prop][i], newParents));\n          } else {\n            toPush.push(((varName(prop)) + \"[]=\" + (varValue(obj[prop][i]))));\n          }\n        }\n        if (toPush.length > 0) { resultArray.push(toPush.join(separator)); }\n      } else if (obj[prop] === null || obj[prop] === '') {\n        resultArray.push(((varName(prop)) + \"=\"));\n      } else if (typeof obj[prop] === 'object') {\n        // Object, convert to named array\n        newParents = parents.slice();\n        newParents.push(prop);\n        toPush = Utils.serializeObject(obj[prop], newParents);\n        if (toPush !== '') { resultArray.push(toPush); }\n      } else if (typeof obj[prop] !== 'undefined' && obj[prop] !== '') {\n        // Should be string or plain value\n        resultArray.push(((varName(prop)) + \"=\" + (varValue(obj[prop]))));\n      } else if (obj[prop] === '') { resultArray.push(varName(prop)); }\n    });\n    return resultArray.join(separator);\n  },\n  isObject: function isObject(o) {\n    return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n  },\n  extend: function extend() {\n    var args = [], len$1 = arguments.length;\n    while ( len$1-- ) args[ len$1 ] = arguments[ len$1 ];\n\n    var deep = true;\n    var to;\n    var from;\n    if (typeof args[0] === 'boolean') {\n      deep = args[0];\n      to = args[1];\n      args.splice(0, 2);\n      from = args;\n    } else {\n      to = args[0];\n      args.splice(0, 1);\n      from = args;\n    }\n    for (var i = 0; i < from.length; i += 1) {\n      var nextSource = args[i];\n      if (nextSource !== undefined && nextSource !== null) {\n        var keysArray = Object.keys(Object(nextSource));\n        for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n          var nextKey = keysArray[nextIndex];\n          var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n          if (desc !== undefined && desc.enumerable) {\n            if (!deep) {\n              to[nextKey] = nextSource[nextKey];\n            } else if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n              Utils.extend(to[nextKey], nextSource[nextKey]);\n            } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n              to[nextKey] = {};\n              Utils.extend(to[nextKey], nextSource[nextKey]);\n            } else {\n              to[nextKey] = nextSource[nextKey];\n            }\n          }\n        }\n      }\n    }\n    return to;\n  },\n};\n\nvar Device = (function Device() {\n  var ua = window.navigator.userAgent;\n\n  var device = {\n    ios: false,\n    android: false,\n    androidChrome: false,\n    desktop: false,\n    windows: false,\n    iphone: false,\n    iphoneX: false,\n    ipod: false,\n    ipad: false,\n    cordova: window.cordova || window.phonegap,\n    phonegap: window.cordova || window.phonegap,\n  };\n\n  var windows = ua.match(/(Windows Phone);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n  var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n  var ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n  var ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n  var iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n  var iphoneX = iphone && window.screen.width === 375 && window.screen.height === 812;\n\n\n  // Windows\n  if (windows) {\n    device.os = 'windows';\n    device.osVersion = windows[2];\n    device.windows = true;\n  }\n  // Android\n  if (android && !windows) {\n    device.os = 'android';\n    device.osVersion = android[2];\n    device.android = true;\n    device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n  }\n  if (ipad || iphone || ipod) {\n    device.os = 'ios';\n    device.ios = true;\n  }\n  // iOS\n  if (iphone && !ipod) {\n    device.osVersion = iphone[2].replace(/_/g, '.');\n    device.iphone = true;\n    device.iphoneX = iphoneX;\n  }\n  if (ipad) {\n    device.osVersion = ipad[2].replace(/_/g, '.');\n    device.ipad = true;\n  }\n  if (ipod) {\n    device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n    device.iphone = true;\n  }\n  // iOS 8+ changed UA\n  if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n    if (device.osVersion.split('.')[0] === '10') {\n      device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n    }\n  }\n\n  // Webview\n  device.webView = (iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone);\n  device.webview = device.webView;\n\n\n  // Desktop\n  device.desktop = !(device.os || device.android || device.webView);\n\n  // Minimal UI\n  if (device.os && device.os === 'ios') {\n    var osVersionArr = device.osVersion.split('.');\n    var metaViewport = document.querySelector('meta[name=\"viewport\"]');\n    device.minimalUi =\n      !device.webView &&\n      (ipod || iphone) &&\n      (osVersionArr[0] * 1 === 7 ? osVersionArr[1] * 1 >= 1 : osVersionArr[0] * 1 > 7) &&\n      metaViewport && metaViewport.getAttribute('content').indexOf('minimal-ui') >= 0;\n  }\n\n  // Check for status bar and fullscreen app mode\n  device.needsStatusbarOverlay = function needsStatusbarOverlay() {\n    if (device.webView && (window.innerWidth * window.innerHeight === window.screen.width * window.screen.height)) {\n      if (device.iphoneX && (window.orientation === 90 || window.orientation === -90)) {\n        return false;\n      }\n      return true;\n    }\n    return false;\n  };\n  device.statusbar = device.needsStatusbarOverlay();\n\n  // Pixel Ratio\n  device.pixelRatio = window.devicePixelRatio || 1;\n\n  // Export object\n  return device;\n}());\n\nvar Framework7Class = function Framework7Class(params, parents) {\n  if ( params === void 0 ) params = {};\n  if ( parents === void 0 ) parents = [];\n\n  var self = this;\n  self.params = params;\n\n  // Events\n  self.eventsParents = parents;\n  self.eventsListeners = {};\n\n  if (self.params && self.params.on) {\n    Object.keys(self.params.on).forEach(function (eventName) {\n      self.on(eventName, self.params.on[eventName]);\n    });\n  }\n};\n\nvar staticAccessors$1 = { components: { configurable: true } };\nFramework7Class.prototype.on = function on (events, handler) {\n  var self = this;\n  if (typeof handler !== 'function') { return self; }\n  events.split(' ').forEach(function (event) {\n    if (!self.eventsListeners[event]) { self.eventsListeners[event] = []; }\n    self.eventsListeners[event].push(handler);\n  });\n  return self;\n};\nFramework7Class.prototype.once = function once (events, handler) {\n  var self = this;\n  if (typeof handler !== 'function') { return self; }\n  function onceHandler() {\n      var args = [], len = arguments.length;\n      while ( len-- ) args[ len ] = arguments[ len ];\n\n    handler.apply(self, args);\n    self.off(events, onceHandler);\n  }\n  return self.on(events, onceHandler);\n};\nFramework7Class.prototype.off = function off (events, handler) {\n  var self = this;\n  if (!self.eventsListeners) { return self; }\n  events.split(' ').forEach(function (event) {\n    if (typeof handler === 'undefined') {\n      self.eventsListeners[event] = [];\n    } else {\n      self.eventsListeners[event].forEach(function (eventHandler, index) {\n        if (eventHandler === handler) {\n          self.eventsListeners[event].splice(index, 1);\n        }\n      });\n    }\n  });\n  return self;\n};\nFramework7Class.prototype.emit = function emit () {\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n\n  var self = this;\n  if (!self.eventsListeners) { return self; }\n  var events;\n  var data;\n  var context;\n  var eventsParents;\n  if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n    events = args[0];\n    data = args.slice(1, args.length);\n    context = self;\n    eventsParents = self.eventsParents;\n  } else {\n    events = args[0].events;\n    data = args[0].data;\n    context = args[0].context || self;\n    eventsParents = args[0].local ? [] : args[0].parents || self.eventsParents;\n  }\n  var eventsArray = Array.isArray(events) ? events : events.split(' ');\n  var localEvents = eventsArray.map(function (eventName) { return eventName.replace('local::', ''); });\n  var parentEvents = eventsArray.filter(function (eventName) { return eventName.indexOf('local::') < 0; });\n\n  localEvents.forEach(function (event) {\n    if (self.eventsListeners[event]) {\n      var handlers = [];\n      self.eventsListeners[event].forEach(function (eventHandler) {\n        handlers.push(eventHandler);\n      });\n      handlers.forEach(function (eventHandler) {\n        eventHandler.apply(context, data);\n      });\n    }\n  });\n  if (eventsParents && eventsParents.length > 0) {\n    eventsParents.forEach(function (eventsParent) {\n      eventsParent.emit.apply(eventsParent, [ parentEvents ].concat( data ));\n    });\n  }\n  return self;\n};\nFramework7Class.prototype.useModulesParams = function useModulesParams (instanceParams) {\n  var instance = this;\n  if (!instance.modules) { return; }\n  Object.keys(instance.modules).forEach(function (moduleName) {\n    var module = instance.modules[moduleName];\n    // Extend params\n    if (module.params) {\n      Utils.extend(instanceParams, module.params);\n    }\n  });\n};\nFramework7Class.prototype.useModules = function useModules (modulesParams) {\n    if ( modulesParams === void 0 ) modulesParams = {};\n\n  var instance = this;\n  if (!instance.modules) { return; }\n  Object.keys(instance.modules).forEach(function (moduleName) {\n    var module = instance.modules[moduleName];\n    var moduleParams = modulesParams[moduleName] || {};\n    // Extend instance methods and props\n    if (module.instance) {\n      Object.keys(module.instance).forEach(function (modulePropName) {\n        var moduleProp = module.instance[modulePropName];\n        if (typeof moduleProp === 'function') {\n          instance[modulePropName] = moduleProp.bind(instance);\n        } else {\n          instance[modulePropName] = moduleProp;\n        }\n      });\n    }\n    // Add event listeners\n    if (module.on && instance.on) {\n      Object.keys(module.on).forEach(function (moduleEventName) {\n        instance.on(moduleEventName, module.on[moduleEventName]);\n      });\n    }\n\n    // Module create callback\n    if (module.create) {\n      module.create.bind(instance)(moduleParams);\n    }\n  });\n};\nstaticAccessors$1.components.set = function (components) {\n  var Class = this;\n  if (!Class.use) { return; }\n  Class.use(components);\n};\nFramework7Class.installModule = function installModule (module) {\n    var params = [], len = arguments.length - 1;\n    while ( len-- > 0 ) params[ len ] = arguments[ len + 1 ];\n\n  var Class = this;\n  if (!Class.prototype.modules) { Class.prototype.modules = {}; }\n  var name = module.name || (((Object.keys(Class.prototype.modules).length) + \"_\" + (Utils.now())));\n  Class.prototype.modules[name] = module;\n  // Prototype\n  if (module.proto) {\n    Object.keys(module.proto).forEach(function (key) {\n      Class.prototype[key] = module.proto[key];\n    });\n  }\n  // Class\n  if (module.static) {\n    Object.keys(module.static).forEach(function (key) {\n      Class[key] = module.static[key];\n    });\n  }\n  // Callback\n  if (module.install) {\n    module.install.apply(Class, params);\n  }\n  return Class;\n};\nFramework7Class.use = function use (module) {\n    var params = [], len = arguments.length - 1;\n    while ( len-- > 0 ) params[ len ] = arguments[ len + 1 ];\n\n  var Class = this;\n  if (Array.isArray(module)) {\n    module.forEach(function (m) { return Class.installModule(m); });\n    return Class;\n  }\n  return Class.installModule.apply(Class, [ module ].concat( params ));\n};\n\nObject.defineProperties( Framework7Class, staticAccessors$1 );\n\nvar Framework7$1 = (function (Framework7Class$$1) {\n  function Framework7(params) {\n    Framework7Class$$1.call(this, params);\n\n    var passedParams = Utils.extend({}, params);\n\n    // App Instance\n    var app = this;\n\n    // Default\n    var defaults = {\n      version: '1.0.0',\n      id: 'io.framework7.testapp',\n      root: 'body',\n      theme: 'auto',\n      language: window.navigator.language,\n      routes: [],\n      name: 'Framework7',\n      initOnDeviceReady: true,\n      init: true,\n    };\n\n    // Extend defaults with modules params\n    app.useModulesParams(defaults);\n\n\n    // Extend defaults with passed params\n    app.params = Utils.extend(defaults, params);\n\n    var $rootEl = $$1$1(app.params.root);\n\n    Utils.extend(app, {\n      // App Id\n      id: app.params.id,\n      // App Name\n      name: app.params.name,\n      // App version\n      version: app.params.version,\n      // Routes\n      routes: app.params.routes,\n      // Lang\n      language: app.params.language,\n      // Root\n      root: $rootEl,\n      // Local Storage\n      ls: window.localStorage,\n      // RTL\n      rtl: $rootEl.css('direction') === 'rtl',\n      // Theme\n      theme: (function getTheme() {\n        if (app.params.theme === 'auto') {\n          return Device.ios ? 'ios' : 'md';\n        }\n        return app.params.theme;\n      }()),\n      // Initially passed parameters\n      passedParams: passedParams,\n    });\n\n    // Save Root\n    app.root[0].f7 = app;\n\n    // Install Modules\n    app.useModules();\n\n    // Init\n    if (app.params.init) {\n      if (Device.cordova && app.params.initOnDeviceReady) {\n        $$1$1(document).on('deviceready', function () {\n          app.init();\n        });\n      } else {\n        app.init();\n      }\n    }\n\n    // Return app instance\n    return app;\n  }\n\n  if ( Framework7Class$$1 ) Framework7.__proto__ = Framework7Class$$1;\n  Framework7.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n  Framework7.prototype.constructor = Framework7;\n\n  var prototypeAccessors = { $: { configurable: true },t7: { configurable: true } };\n  var staticAccessors = { Dom7: { configurable: true },$: { configurable: true },Template7: { configurable: true },Class: { configurable: true } };\n  Framework7.prototype.init = function init () {\n    var app = this;\n    if (app.initialized) { return; }\n\n    app.root.addClass('framework7-initializing');\n\n    // RTL attr\n    if (app.rtl) {\n      $$1$1('html').attr('dir', 'rtl');\n    }\n\n    // Root class\n    app.root.addClass('framework7-root');\n\n    // Theme class\n    $$1$1('html').removeClass('ios md').addClass(app.theme);\n\n    // Data\n    app.data = {};\n    if (app.params.data && typeof app.params.data === 'function') {\n      Utils.extend(app.data, app.params.data.bind(app)());\n    } else if (app.params.data) {\n      Utils.extend(app.data, app.params.data);\n    }\n    // Methods\n    app.methods = {};\n    if (app.params.methods) {\n      Utils.extend(app.methods, app.params.methods);\n    }\n    // Init class\n    Utils.nextFrame(function () {\n      app.root.removeClass('framework7-initializing');\n    });\n    // Emit, init other modules\n    app.initialized = true;\n    app.emit('init');\n  };\n  // eslint-disable-next-line\n  prototypeAccessors.$.get = function () {\n    return $$1$1;\n  };\n  // eslint-disable-next-line\n  prototypeAccessors.t7.get = function () {\n    return Template7;\n  };\n  staticAccessors.Dom7.get = function () {\n    return $$1$1;\n  };\n  staticAccessors.$.get = function () {\n    return $$1$1;\n  };\n  staticAccessors.Template7.get = function () {\n    return Template7;\n  };\n  staticAccessors.Class.get = function () {\n    return Framework7Class$$1;\n  };\n\n  Object.defineProperties( Framework7.prototype, prototypeAccessors );\n  Object.defineProperties( Framework7, staticAccessors );\n\n  return Framework7;\n}(Framework7Class));\n\nvar Device$2 = {\n  name: 'device',\n  proto: {\n    device: Device,\n  },\n  static: {\n    device: Device,\n  },\n  on: {\n    init: function init() {\n      var classNames = [];\n      var html = document.querySelector('html');\n      // Pixel Ratio\n      classNames.push((\"device-pixel-ratio-\" + (Math.floor(Device.pixelRatio))));\n      if (Device.pixelRatio >= 2) {\n        classNames.push('device-retina');\n      }\n      // OS classes\n      if (Device.os) {\n        classNames.push(\n          (\"device-\" + (Device.os)),\n          (\"device-\" + (Device.os) + \"-\" + (Device.osVersion.split('.')[0])),\n          (\"device-\" + (Device.os) + \"-\" + (Device.osVersion.replace(/\\./g, '-')))\n        );\n        if (Device.os === 'ios') {\n          var major = parseInt(Device.osVersion.split('.')[0], 10);\n          for (var i = major - 1; i >= 6; i -= 1) {\n            classNames.push((\"device-ios-gt-\" + i));\n          }\n          if (Device.iphoneX) {\n            classNames.push('device-iphone-x');\n          }\n        }\n      } else if (Device.desktop) {\n        classNames.push('device-desktop');\n      }\n      // Status bar classes\n      if (Device.statusbar) {\n        classNames.push('with-statusbar');\n      } else {\n        html.classList.remove('with-statusbar');\n      }\n\n      // Add html classes\n      classNames.forEach(function (className) {\n        html.classList.add(className);\n      });\n    },\n  },\n};\n\nvar Support$1 = (function Support() {\n  var positionSticky = (function supportPositionSticky() {\n    var support = false;\n    var div = document.createElement('div');\n    ('sticky -webkit-sticky -moz-sticky').split(' ').forEach(function (prop) {\n      if (support) { return; }\n      div.style.position = prop;\n      if (div.style.position === prop) {\n        support = true;\n      }\n    });\n    return support;\n  }());\n\n  return {\n    positionSticky: positionSticky,\n    touch: (function checkTouch() {\n      return !!(('ontouchstart' in window) || (window.DocumentTouch && document instanceof window.DocumentTouch));\n    }()),\n\n    transforms3d: (function checkTransforms3d() {\n      var div = document.createElement('div').style;\n      return ('webkitPerspective' in div || 'MozPerspective' in div || 'OPerspective' in div || 'MsPerspective' in div || 'perspective' in div);\n    }()),\n\n    flexbox: (function checkFlexbox() {\n      var div = document.createElement('div').style;\n      var styles = ('alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient').split(' ');\n      for (var i = 0; i < styles.length; i += 1) {\n        if (styles[i] in div) { return true; }\n      }\n      return false;\n    }()),\n\n    observer: (function checkObserver() {\n      return ('MutationObserver' in window || 'WebkitMutationObserver' in window);\n    }()),\n\n    passiveListener: (function checkPassiveListener() {\n      var supportsPassive = false;\n      try {\n        var opts = Object.defineProperty({}, 'passive', {\n          // eslint-disable-next-line\n          get: function get() {\n            supportsPassive = true;\n          },\n        });\n        window.addEventListener('testPassiveListener', null, opts);\n      } catch (e) {\n        // No support\n      }\n      return supportsPassive;\n    }()),\n\n    gestures: (function checkGestures() {\n      return 'ongesturestart' in window;\n    }()),\n  };\n}());\n\nvar Support = {\n  name: 'support',\n  proto: {\n    support: Support$1,\n  },\n  static: {\n    support: Support$1,\n  },\n  on: {\n    init: function init() {\n      var html = document.querySelector('html');\n      var classNames = [];\n      if (Support$1.positionSticky) {\n        classNames.push('support-position-sticky');\n      }\n      // Add html classes\n      classNames.forEach(function (className) {\n        html.classList.add(className);\n      });\n    },\n  },\n};\n\nvar Utils$2 = {\n  name: 'utils',\n  proto: {\n    utils: Utils,\n  },\n  static: {\n    utils: Utils,\n  },\n};\n\nvar Resize = {\n  name: 'resize',\n  instance: {\n    getSize: function getSize() {\n      var app = this;\n      var offset = app.root.offset();\n      var ref = [app.root[0].offsetWidth, app.root[0].offsetHeight, offset.left, offset.top];\n      var width = ref[0];\n      var height = ref[1];\n      var left = ref[2];\n      var top = ref[3];\n      app.width = width;\n      app.height = height;\n      app.left = left;\n      app.top = top;\n      return { width: width, height: height, left: left, top: top };\n    },\n  },\n  on: {\n    init: function init() {\n      var app = this;\n\n      // Get Size\n      app.getSize();\n\n      // Emit resize\n      window.addEventListener('resize', function () {\n        app.emit('resize');\n      }, false);\n\n      // Emit orientationchange\n      window.addEventListener('orientationchange', function () {\n        app.emit('orientationchange');\n      });\n    },\n    orientationchange: function orientationchange() {\n      var app = this;\n      if (app.device && app.device.minimalUi) {\n        if (window.orientation === 90 || window.orientation === -90) {\n          document.body.scrollTop = 0;\n        }\n      }\n      // Fix iPad weird body scroll\n      if (app.device.ipad) {\n        document.body.scrollLeft = 0;\n        setTimeout(function () {\n          document.body.scrollLeft = 0;\n        }, 0);\n      }\n    },\n    resize: function resize() {\n      var app = this;\n      app.getSize();\n    },\n  },\n};\n\nvar globals = {};\nvar jsonpRequests = 0;\n\nfunction Request$1(requestOptions) {\n  var globalsNoCallbacks = Utils.extend({}, globals);\n  ('beforeCreate beforeOpen beforeSend error complete success statusCode').split(' ').forEach(function (callbackName) {\n    delete globalsNoCallbacks[callbackName];\n  });\n  var defaults = Utils.extend({\n    url: window.location.toString(),\n    method: 'GET',\n    data: false,\n    async: true,\n    cache: true,\n    user: '',\n    password: '',\n    headers: {},\n    xhrFields: {},\n    statusCode: {},\n    processData: true,\n    dataType: 'text',\n    contentType: 'application/x-www-form-urlencoded',\n    timeout: 0,\n  }, globalsNoCallbacks);\n\n  var options = Utils.extend({}, defaults, requestOptions);\n\n  // Function to run XHR callbacks and events\n  function fireCallback(callbackName) {\n    var data = [], len = arguments.length - 1;\n    while ( len-- > 0 ) data[ len ] = arguments[ len + 1 ];\n\n    /*\n      Callbacks:\n      beforeCreate (options),\n      beforeOpen (xhr, options),\n      beforeSend (xhr, options),\n      error (xhr, status),\n      complete (xhr, stautus),\n      success (response, status, xhr),\n      statusCode ()\n    */\n    if (globals[callbackName]) { globals[callbackName].apply(globals, data); }\n    if (options[callbackName]) { options[callbackName].apply(options, data); }\n  }\n\n  // Before create callback\n  fireCallback('beforeCreate', options);\n\n  // For jQuery guys\n  if (options.type) { options.method = options.type; }\n\n  // Parameters Prefix\n  var paramsPrefix = options.url.indexOf('?') >= 0 ? '&' : '?';\n\n  // UC method\n  var method = options.method.toUpperCase();\n\n  // Data to modify GET URL\n  if ((method === 'GET' || method === 'HEAD' || method === 'OPTIONS' || method === 'DELETE') && options.data) {\n    var stringData;\n    if (typeof options.data === 'string') {\n      // Should be key=value string\n      if (options.data.indexOf('?') >= 0) { stringData = options.data.split('?')[1]; }\n      else { stringData = options.data; }\n    } else {\n      // Should be key=value object\n      stringData = Utils.serializeObject(options.data);\n    }\n    if (stringData.length) {\n      options.url += paramsPrefix + stringData;\n      if (paramsPrefix === '?') { paramsPrefix = '&'; }\n    }\n  }\n\n  // JSONP\n  if (options.dataType === 'json' && options.url.indexOf('callback=') >= 0) {\n    var callbackName = \"f7jsonp_\" + (Date.now() + ((jsonpRequests += 1)));\n    var abortTimeout;\n    var callbackSplit = options.url.split('callback=');\n    var requestUrl = (callbackSplit[0]) + \"callback=\" + callbackName;\n    if (callbackSplit[1].indexOf('&') >= 0) {\n      var addVars = callbackSplit[1].split('&').filter(function (el) { return el.indexOf('=') > 0; }).join('&');\n      if (addVars.length > 0) { requestUrl += \"&\" + addVars; }\n    }\n\n    // Create script\n    var script = document.createElement('script');\n    script.type = 'text/javascript';\n    script.onerror = function onerror() {\n      clearTimeout(abortTimeout);\n      fireCallback('error', null, 'scripterror');\n      fireCallback('complete', null, 'scripterror');\n    };\n    script.src = requestUrl;\n\n    // Handler\n    window[callbackName] = function jsonpCallback(data) {\n      clearTimeout(abortTimeout);\n      fireCallback('success', data);\n      script.parentNode.removeChild(script);\n      script = null;\n      delete window[callbackName];\n    };\n    document.querySelector('head').appendChild(script);\n\n    if (options.timeout > 0) {\n      abortTimeout = setTimeout(function () {\n        script.parentNode.removeChild(script);\n        script = null;\n        fireCallback('error', null, 'timeout');\n      }, options.timeout);\n    }\n\n    return undefined;\n  }\n\n  // Cache for GET/HEAD requests\n  if (method === 'GET' || method === 'HEAD' || method === 'OPTIONS' || method === 'DELETE') {\n    if (options.cache === false) {\n      options.url += paramsPrefix + \"_nocache\" + (Date.now());\n    }\n  }\n\n  // Create XHR\n  var xhr = new XMLHttpRequest();\n\n  // Save Request URL\n  xhr.requestUrl = options.url;\n  xhr.requestParameters = options;\n\n  // Before open callback\n  fireCallback('beforeOpen', xhr, options);\n\n  // Open XHR\n  xhr.open(method, options.url, options.async, options.user, options.password);\n\n  // Create POST Data\n  var postData = null;\n\n  if ((method === 'POST' || method === 'PUT' || method === 'PATCH') && options.data) {\n    if (options.processData) {\n      var postDataInstances = [ArrayBuffer, Blob, Document, FormData];\n      // Post Data\n      if (postDataInstances.indexOf(options.data.constructor) >= 0) {\n        postData = options.data;\n      } else {\n        // POST Headers\n        var boundary = \"---------------------------\" + (Date.now().toString(16));\n\n        if (options.contentType === 'multipart/form-data') {\n          xhr.setRequestHeader('Content-Type', (\"multipart/form-data; boundary=\" + boundary));\n        } else {\n          xhr.setRequestHeader('Content-Type', options.contentType);\n        }\n        postData = '';\n        var data$1 = Utils.serializeObject(options.data);\n        if (options.contentType === 'multipart/form-data') {\n          data$1 = data$1.split('&');\n          var newData = [];\n          for (var i = 0; i < data$1.length; i += 1) {\n            newData.push((\"Content-Disposition: form-data; name=\\\"\" + (data$1[i].split('=')[0]) + \"\\\"\\r\\n\\r\\n\" + (data$1[i].split('=')[1]) + \"\\r\\n\"));\n          }\n          postData = \"--\" + boundary + \"\\r\\n\" + (newData.join((\"--\" + boundary + \"\\r\\n\"))) + \"--\" + boundary + \"--\\r\\n\";\n        } else {\n          postData = data$1;\n        }\n      }\n    } else {\n      postData = options.data;\n      xhr.setRequestHeader('Content-Type', options.contentType);\n    }\n  }\n\n  // Additional headers\n  if (options.headers) {\n    Object.keys(options.headers).forEach(function (headerName) {\n      xhr.setRequestHeader(headerName, options.headers[headerName]);\n    });\n  }\n\n  // Check for crossDomain\n  if (typeof options.crossDomain === 'undefined') {\n    // eslint-disable-next-line\n    options.crossDomain = /^([\\w-]+:)?\\/\\/([^\\/]+)/.test(options.url) && RegExp.$2 !== window.location.host;\n  }\n\n  if (!options.crossDomain) {\n    xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n  }\n\n  if (options.xhrFields) {\n    Utils.extend(xhr, options.xhrFields);\n  }\n\n  var xhrTimeout;\n\n  // Handle XHR\n  xhr.onload = function onload() {\n    if (xhrTimeout) { clearTimeout(xhrTimeout); }\n    if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 0) {\n      var responseData;\n      if (options.dataType === 'json') {\n        try {\n          responseData = JSON.parse(xhr.responseText);\n          fireCallback('success', responseData, xhr.status, xhr);\n        } catch (err) {\n          fireCallback('error', xhr, 'parseerror');\n        }\n      } else {\n        responseData = xhr.responseType === 'text' || xhr.responseType === '' ? xhr.responseText : xhr.response;\n        fireCallback('success', responseData, xhr.status, xhr);\n      }\n    } else {\n      fireCallback('error', xhr, xhr.status);\n    }\n    if (options.statusCode) {\n      if (globals.statusCode && globals.statusCode[xhr.status]) { globals.statusCode[xhr.status](xhr); }\n      if (options.statusCode[xhr.status]) { options.statusCode[xhr.status](xhr); }\n    }\n    fireCallback('complete', xhr, xhr.status);\n  };\n\n  xhr.onerror = function onerror() {\n    if (xhrTimeout) { clearTimeout(xhrTimeout); }\n    fireCallback('error', xhr, xhr.status);\n    fireCallback('complete', xhr, 'error');\n  };\n\n  // Timeout\n  if (options.timeout > 0) {\n    xhr.onabort = function onabort() {\n      if (xhrTimeout) { clearTimeout(xhrTimeout); }\n    };\n    xhrTimeout = setTimeout(function () {\n      xhr.abort();\n      fireCallback('error', xhr, 'timeout');\n      fireCallback('complete', xhr, 'timeout');\n    }, options.timeout);\n  }\n\n  // Ajax start callback\n  fireCallback('beforeSend', xhr, options);\n\n  // Send XHR\n  xhr.send(postData);\n\n  // Return XHR object\n  return xhr;\n}\nfunction RequestShortcut(method) {\n  var args = [], len = arguments.length - 1;\n  while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n  var ref = [];\n  var url = ref[0];\n  var data = ref[1];\n  var success = ref[2];\n  var error = ref[3];\n  var dataType = ref[4];\n  if (typeof args[1] === 'function') {\n    var assign;\n    (assign = args, url = assign[0], success = assign[1], error = assign[2], dataType = assign[3]);\n  } else {\n    var assign$1;\n    (assign$1 = args, url = assign$1[0], data = assign$1[1], success = assign$1[2], error = assign$1[3], dataType = assign$1[4]);\n  }\n  [success, error].forEach(function (callback) {\n    if (typeof callback === 'string') {\n      dataType = callback;\n      if (callback === success) { success = undefined; }\n      else { error = undefined; }\n    }\n  });\n  dataType = dataType || (method === 'json' || method === 'postJSON' ? 'json' : undefined);\n  var requestOptions = {\n    url: url,\n    method: method === 'post' || method === 'postJSON' ? 'POST' : 'GET',\n    data: data,\n    success: success,\n    error: error,\n    dataType: dataType,\n  };\n  if (method === 'postJSON') {\n    Utils.extend(requestOptions, {\n      contentType: 'application/json',\n      processData: false,\n      crossDomain: true,\n      data: typeof data === 'string' ? data : JSON.stringify(data),\n    });\n  }\n  return Request$1(requestOptions);\n}\nRequest$1.get = function get() {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  return RequestShortcut.apply(void 0, [ 'get' ].concat( args ));\n};\nRequest$1.post = function post() {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  return RequestShortcut.apply(void 0, [ 'post' ].concat( args ));\n};\nRequest$1.json = function json() {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  return RequestShortcut.apply(void 0, [ 'json' ].concat( args ));\n};\nRequest$1.getJSON = Request$1.json;\nRequest$1.postJSON = function postJSON() {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  return RequestShortcut.apply(void 0, [ 'postJSON' ].concat( args ));\n};\nRequest$1.setup = function setup(options) {\n  if (options.type && !options.method) {\n    Utils.extend(options, { method: options.type });\n  }\n  Utils.extend(globals, options);\n};\n\n/* eslint no-param-reassign: \"off\" */\nvar Request = {\n  name: 'request',\n  proto: {\n    request: Request$1,\n  },\n  static: {\n    request: Request$1,\n  },\n};\n\nfunction initTouch() {\n  var app = this;\n  var params = app.params.touch;\n  var useRipple = app.theme === 'md' && params.materialRipple;\n\n  if (Device.ios && Device.webView) {\n    // Strange hack required for iOS 8 webview to work on inputs\n    window.addEventListener('touchstart', function () {});\n  }\n\n  var touchStartX;\n  var touchStartY;\n  var touchStartTime;\n  var targetElement;\n  var trackClick;\n  var activeSelection;\n  var scrollParent;\n  var lastClickTime;\n  var isMoved;\n  var tapHoldFired;\n  var tapHoldTimeout;\n\n  var activableElement;\n  var activeTimeout;\n\n  var needsFastClick;\n  var needsFastClickTimeOut;\n\n  var rippleWave;\n  var rippleTarget;\n  var rippleTimeout;\n\n  function findActivableElement(el) {\n    var target = $$1$1(el);\n    var parents = target.parents(params.activeStateElements);\n    var activable;\n    if (target.is(params.activeStateElements)) {\n      activable = target;\n    }\n    if (parents.length > 0) {\n      activable = activable ? activable.add(parents) : parents;\n    }\n    return activable || target;\n  }\n\n  function isInsideScrollableView(el) {\n    var pageContent = el.parents('.page-content, .panel');\n\n    if (pageContent.length === 0) {\n      return false;\n    }\n\n    // This event handler covers the \"tap to stop scrolling\".\n    if (pageContent.prop('scrollHandlerSet') !== 'yes') {\n      pageContent.on('scroll', function () {\n        clearTimeout(activeTimeout);\n        clearTimeout(rippleTimeout);\n      });\n      pageContent.prop('scrollHandlerSet', 'yes');\n    }\n\n    return true;\n  }\n  function addActive() {\n    if (!activableElement) { return; }\n    activableElement.addClass('active-state');\n  }\n  function removeActive() {\n    if (!activableElement) { return; }\n    activableElement.removeClass('active-state');\n    activableElement = null;\n  }\n  function isFormElement(el) {\n    var nodes = ('input select textarea label').split(' ');\n    if (el.nodeName && nodes.indexOf(el.nodeName.toLowerCase()) >= 0) { return true; }\n    return false;\n  }\n  function androidNeedsBlur(el) {\n    var noBlur = ('button input textarea select').split(' ');\n    if (document.activeElement && el !== document.activeElement && document.activeElement !== document.body) {\n      if (noBlur.indexOf(el.nodeName.toLowerCase()) >= 0) {\n        return false;\n      }\n      return true;\n    }\n    return false;\n  }\n  function targetNeedsFastClick(el) {\n    /*\n    if (\n      Device.ios\n      &&\n      (\n        Device.osVersion.split('.')[0] > 9\n        ||\n        (Device.osVersion.split('.')[0] * 1 === 9 && Device.osVersion.split('.')[1] >= 1)\n      )\n    ) {\n      return false;\n    }\n    */\n    var $el = $$1$1(el);\n    if (el.nodeName.toLowerCase() === 'input' && (el.type === 'file' || el.type === 'range')) { return false; }\n    if (el.nodeName.toLowerCase() === 'select' && Device.android) { return false; }\n    if ($el.hasClass('no-fastclick') || $el.parents('.no-fastclick').length > 0) { return false; }\n    if (params.fastClicksExclude && $el.is(params.fastClicksExclude)) { return false; }\n    return true;\n  }\n  function targetNeedsFocus(el) {\n    if (document.activeElement === el) {\n      return false;\n    }\n    var tag = el.nodeName.toLowerCase();\n    var skipInputs = ('button checkbox file image radio submit').split(' ');\n    if (el.disabled || el.readOnly) { return false; }\n    if (tag === 'textarea') { return true; }\n    if (tag === 'select') {\n      if (Device.android) { return false; }\n      return true;\n    }\n    if (tag === 'input' && skipInputs.indexOf(el.type) < 0) { return true; }\n    return false;\n  }\n  function targetNeedsPrevent(el) {\n    var $el = $$1$1(el);\n    var prevent = true;\n    if ($el.is('label') || $el.parents('label').length > 0) {\n      if (Device.android) {\n        prevent = false;\n      } else if (Device.ios && $el.is('input')) {\n        prevent = true;\n      } else { prevent = false; }\n    }\n    return prevent;\n  }\n\n  // Ripple handlers\n  function findRippleElement(el) {\n    var rippleElements = params.materialRippleElements;\n    var $el = $$1$1(el);\n    if ($el.is(rippleElements)) {\n      if ($el.hasClass('no-ripple')) {\n        return false;\n      }\n      return $el;\n    } else if ($el.parents(rippleElements).length > 0) {\n      var rippleParent = $el.parents(rippleElements).eq(0);\n      if (rippleParent.hasClass('no-ripple')) {\n        return false;\n      }\n      return rippleParent;\n    }\n    return false;\n  }\n  function createRipple($el, x, y) {\n    if (!$el) { return; }\n    rippleWave = app.touchRipple.create($el, x, y);\n  }\n\n  function removeRipple() {\n    if (!rippleWave) { return; }\n    rippleWave.remove();\n    rippleWave = undefined;\n    rippleTarget = undefined;\n  }\n  function rippleTouchStart(el) {\n    rippleTarget = findRippleElement(el);\n    if (!rippleTarget || rippleTarget.length === 0) {\n      rippleTarget = undefined;\n      return;\n    }\n    if (!isInsideScrollableView(rippleTarget)) {\n      createRipple(rippleTarget, touchStartX, touchStartY);\n    } else {\n      rippleTimeout = setTimeout(function () {\n        createRipple(rippleTarget, touchStartX, touchStartY);\n      }, 80);\n    }\n  }\n  function rippleTouchMove() {\n    clearTimeout(rippleTimeout);\n    removeRipple();\n  }\n  function rippleTouchEnd() {\n    if (rippleWave) {\n      removeRipple();\n    } else if (rippleTarget && !isMoved) {\n      clearTimeout(rippleTimeout);\n      createRipple(rippleTarget, touchStartX, touchStartY);\n      setTimeout(removeRipple, 0);\n    } else {\n      removeRipple();\n    }\n  }\n\n  // Mouse Handlers\n  function handleMouseDown(e) {\n    findActivableElement(e.target).addClass('active-state');\n    if ('which' in e && e.which === 3) {\n      setTimeout(function () {\n        $$1$1('.active-state').removeClass('active-state');\n      }, 0);\n    }\n    if (useRipple) {\n      touchStartX = e.pageX;\n      touchStartY = e.pageY;\n      rippleTouchStart(e.target, e.pageX, e.pageY);\n    }\n  }\n  function handleMouseMove() {\n    $$1$1('.active-state').removeClass('active-state');\n    if (useRipple) {\n      rippleTouchMove();\n    }\n  }\n  function handleMouseUp() {\n    $$1$1('.active-state').removeClass('active-state');\n    if (useRipple) {\n      rippleTouchEnd();\n    }\n  }\n\n  // Send Click\n  function sendClick(e) {\n    var touch = e.changedTouches[0];\n    var evt = document.createEvent('MouseEvents');\n    var eventType = 'click';\n    if (Device.android && targetElement.nodeName.toLowerCase() === 'select') {\n      eventType = 'mousedown';\n    }\n    evt.initMouseEvent(eventType, true, true, window, 1, touch.screenX, touch.screenY, touch.clientX, touch.clientY, false, false, false, false, 0, null);\n    evt.forwardedTouchEvent = true;\n\n    if (app.device.ios && window.navigator.standalone) {\n      // Fix the issue happens in iOS home screen apps where the wrong element is selected during a momentum scroll.\n      // Upon tapping, we give the scrolling time to stop, then we grab the element based where the user tapped.\n      setTimeout(function () {\n        targetElement = document.elementFromPoint(e.changedTouches[0].clientX, e.changedTouches[0].clientY);\n        targetElement.dispatchEvent(evt);\n      }, 10);\n    } else {\n      targetElement.dispatchEvent(evt);\n    }\n  }\n\n  // Touch Handlers\n  function handleTouchStart(e) {\n    var this$1 = this;\n\n    isMoved = false;\n    tapHoldFired = false;\n    if (e.targetTouches.length > 1) {\n      if (activableElement) { removeActive(); }\n      return true;\n    }\n    if (e.touches.length > 1 && activableElement) {\n      removeActive();\n    }\n    if (params.tapHold) {\n      if (tapHoldTimeout) { clearTimeout(tapHoldTimeout); }\n      tapHoldTimeout = setTimeout(function () {\n        if (e && e.touches && e.touches.length > 1) { return; }\n        tapHoldFired = true;\n        e.preventDefault();\n        $$1$1(e.target).trigger('taphold');\n      }, params.tapHoldDelay);\n    }\n    if (needsFastClickTimeOut) { clearTimeout(needsFastClickTimeOut); }\n    needsFastClick = targetNeedsFastClick(e.target);\n\n    if (!needsFastClick) {\n      trackClick = false;\n      return true;\n    }\n    if (Device.ios || (Device.android && 'getSelection' in window)) {\n      var selection = window.getSelection();\n      if (\n        selection.rangeCount &&\n        selection.focusNode !== document.body &&\n        (!selection.isCollapsed || document.activeElement === selection.focusNode)\n      ) {\n        activeSelection = true;\n        return true;\n      }\n\n      activeSelection = false;\n    }\n    if (Device.android) {\n      if (androidNeedsBlur(e.target)) {\n        document.activeElement.blur();\n      }\n    }\n\n    trackClick = true;\n    targetElement = e.target;\n    touchStartTime = (new Date()).getTime();\n    touchStartX = e.targetTouches[0].pageX;\n    touchStartY = e.targetTouches[0].pageY;\n\n    // Detect scroll parent\n    if (Device.ios) {\n      scrollParent = undefined;\n      $$1$1(targetElement).parents().each(function () {\n        var parent = this$1;\n        if (parent.scrollHeight > parent.offsetHeight && !scrollParent) {\n          scrollParent = parent;\n          scrollParent.f7ScrollTop = scrollParent.scrollTop;\n        }\n      });\n    }\n    if ((e.timeStamp - lastClickTime) < params.fastClicksDelayBetweenClicks) {\n      e.preventDefault();\n    }\n\n    if (params.activeState) {\n      activableElement = findActivableElement(targetElement);\n      // If it's inside a scrollable view, we don't trigger active-state yet,\n      // because it can be a scroll instead. Based on the link:\n      // http://labnote.beedesk.com/click-scroll-and-pseudo-active-on-mobile-webk\n      if (!isInsideScrollableView(activableElement)) {\n        addActive();\n      } else {\n        activeTimeout = setTimeout(addActive, 80);\n      }\n    }\n    if (useRipple) {\n      rippleTouchStart(targetElement, touchStartX, touchStartY);\n    }\n    return true;\n  }\n  function handleTouchMove(e) {\n    if (!trackClick) { return; }\n    var distance = params.fastClicksDistanceThreshold;\n    if (distance) {\n      var pageX = e.targetTouches[0].pageX;\n      var pageY = e.targetTouches[0].pageY;\n      if (Math.abs(pageX - touchStartX) > distance || Math.abs(pageY - touchStartY) > distance) {\n        isMoved = true;\n      }\n    } else {\n      isMoved = true;\n    }\n    if (isMoved) {\n      trackClick = false;\n      targetElement = null;\n      isMoved = true;\n      if (params.tapHold) {\n        clearTimeout(tapHoldTimeout);\n      }\n      if (params.activeState) {\n        clearTimeout(activeTimeout);\n        removeActive();\n      }\n      if (useRipple) {\n        rippleTouchMove();\n      }\n    }\n  }\n  function handleTouchEnd(e) {\n    clearTimeout(activeTimeout);\n    clearTimeout(tapHoldTimeout);\n\n    if (!trackClick) {\n      if (!activeSelection && needsFastClick) {\n        if (!(Device.android && !e.cancelable) && e.cancelable) {\n          e.preventDefault();\n        }\n      }\n      return true;\n    }\n\n    if (document.activeElement === e.target) {\n      if (params.activeState) { removeActive(); }\n      if (useRipple) {\n        rippleTouchEnd();\n      }\n      return true;\n    }\n\n    if (!activeSelection) {\n      e.preventDefault();\n    }\n\n    if ((e.timeStamp - lastClickTime) < params.fastClicksDelayBetweenClicks) {\n      setTimeout(removeActive, 0);\n      return true;\n    }\n\n    lastClickTime = e.timeStamp;\n\n    trackClick = false;\n\n    if (Device.ios && scrollParent) {\n      if (scrollParent.scrollTop !== scrollParent.f7ScrollTop) {\n        return false;\n      }\n    }\n\n    // Add active-state here because, in a very fast tap, the timeout didn't\n    // have the chance to execute. Removing active-state in a timeout gives\n    // the chance to the animation execute.\n    if (params.activeState) {\n      addActive();\n      setTimeout(removeActive, 0);\n    }\n    // Remove Ripple\n    if (useRipple) {\n      rippleTouchEnd();\n    }\n\n    // Trigger focus when required\n    if (targetNeedsFocus(targetElement)) {\n      if (Device.ios && Device.webView) {\n        if ((e.timeStamp - touchStartTime) > 159) {\n          targetElement = null;\n          return false;\n        }\n        targetElement.focus();\n        return false;\n      }\n\n      targetElement.focus();\n    }\n\n    // Blur active elements\n    if (document.activeElement && targetElement !== document.activeElement && document.activeElement !== document.body && targetElement.nodeName.toLowerCase() !== 'label') {\n      document.activeElement.blur();\n    }\n\n    // Send click\n    e.preventDefault();\n    sendClick(e);\n    return false;\n  }\n  function handleTouchCancel() {\n    trackClick = false;\n    targetElement = null;\n\n    // Remove Active State\n    clearTimeout(activeTimeout);\n    clearTimeout(tapHoldTimeout);\n    if (params.activeState) {\n      removeActive();\n    }\n\n    // Remove Ripple\n    if (useRipple) {\n      rippleTouchEnd();\n    }\n  }\n\n  function handleClick(e) {\n    var allowClick = false;\n\n    if (trackClick) {\n      targetElement = null;\n      trackClick = false;\n      return true;\n    }\n    if ((e.target.type === 'submit' && e.detail === 0) || e.target.type === 'file') {\n      return true;\n    }\n    if (!targetElement) {\n      if (!isFormElement(e.target)) {\n        allowClick = true;\n      }\n    }\n    if (!needsFastClick) {\n      allowClick = true;\n    }\n    if (document.activeElement === targetElement) {\n      allowClick = true;\n    }\n    if (e.forwardedTouchEvent) {\n      allowClick = true;\n    }\n    if (!e.cancelable) {\n      allowClick = true;\n    }\n    if (params.tapHold && params.tapHoldPreventClicks && tapHoldFired) {\n      allowClick = false;\n    }\n    if (!allowClick) {\n      e.stopImmediatePropagation();\n      e.stopPropagation();\n      if (targetElement) {\n        if (targetNeedsPrevent(targetElement) || isMoved) {\n          e.preventDefault();\n        }\n      } else {\n        e.preventDefault();\n      }\n      targetElement = null;\n    }\n    needsFastClickTimeOut = setTimeout(function () {\n      needsFastClick = false;\n    }, (Device.ios || Device.androidChrome ? 100 : 400));\n\n    if (params.tapHold) {\n      tapHoldTimeout = setTimeout(function () {\n        tapHoldFired = false;\n      }, (Device.ios || Device.androidChrome ? 100 : 400));\n    }\n\n    return allowClick;\n  }\n\n  function emitAppTouchEvent(name, e) {\n    app.emit({\n      events: name,\n      data: [e],\n    });\n  }\n  function appClick(e) {\n    emitAppTouchEvent('click', e);\n  }\n  function appTouchStartActive(e) {\n    emitAppTouchEvent('touchstart touchstart:active', e);\n  }\n  function appTouchMoveActive(e) {\n    emitAppTouchEvent('touchmove touchmove:active', e);\n  }\n  function appTouchEndActive(e) {\n    emitAppTouchEvent('touchend touchend:active', e);\n  }\n  function appTouchStartPassive(e) {\n    emitAppTouchEvent('touchstart:passive', e);\n  }\n  function appTouchMovePassive(e) {\n    emitAppTouchEvent('touchmove:passive', e);\n  }\n  function appTouchEndPassive(e) {\n    emitAppTouchEvent('touchend:passive', e);\n  }\n\n  var passiveListener = Support$1.passiveListener ? { passive: true } : false;\n  var activeListener = Support$1.passiveListener ? { passive: false } : false;\n\n  document.addEventListener('click', appClick, true);\n\n  if (Support$1.passiveListener) {\n    document.addEventListener(app.touchEvents.start, appTouchStartActive, activeListener);\n    document.addEventListener(app.touchEvents.move, appTouchMoveActive, activeListener);\n    document.addEventListener(app.touchEvents.end, appTouchEndActive, activeListener);\n\n    document.addEventListener(app.touchEvents.start, appTouchStartPassive, passiveListener);\n    document.addEventListener(app.touchEvents.move, appTouchMovePassive, passiveListener);\n    document.addEventListener(app.touchEvents.end, appTouchEndPassive, passiveListener);\n  } else {\n    document.addEventListener(app.touchEvents.start, function (e) {\n      appTouchStartActive(e);\n      appTouchStartPassive(e);\n    }, false);\n    document.addEventListener(app.touchEvents.move, function (e) {\n      appTouchMoveActive(e);\n      appTouchMovePassive(e);\n    }, false);\n    document.addEventListener(app.touchEvents.end, function (e) {\n      appTouchEndActive(e);\n      appTouchEndPassive(e);\n    }, false);\n  }\n\n  if (Support$1.touch) {\n    app.on('click', handleClick);\n    app.on('touchstart', handleTouchStart);\n    app.on('touchmove', handleTouchMove);\n    app.on('touchend', handleTouchEnd);\n    document.addEventListener('touchcancel', handleTouchCancel, { passive: true });\n  } else if (params.activeState) {\n    app.on('touchstart', handleMouseDown);\n    app.on('touchmove', handleMouseMove);\n    app.on('touchend', handleMouseUp);\n  }\n  document.addEventListener('contextmenu', function (e) {\n    if (params.disableContextMenu && (Device.ios || Device.android || Device.cordova)) {\n      e.preventDefault();\n    }\n    if (useRipple) {\n      if (activableElement) { removeActive(); }\n      rippleTouchEnd();\n    }\n  });\n}\n\nvar Touch = {\n  name: 'touch',\n  params: {\n    touch: {\n      // Fast clicks\n      fastClicks: true,\n      fastClicksDistanceThreshold: 10,\n      fastClicksDelayBetweenClicks: 50,\n      fastClicksExclude: '', // CSS selector\n      // ContextMenu\n      disableContextMenu: true,\n      // Tap Hold\n      tapHold: false,\n      tapHoldDelay: 750,\n      tapHoldPreventClicks: true,\n      // Active State\n      activeState: true,\n      activeStateElements: 'a, button, label, span, .actions-button',\n      materialRipple: true,\n      materialRippleElements: '.ripple, .link, .item-link, .links-list a, .button, button, .input-clear-button, .dialog-button, .tab-link, .item-radio, .item-checkbox, .actions-button, .searchbar-disable-button, .fab a, .checkbox, .radio, .data-table .sortable-cell, .notification-close-button',\n    },\n  },\n  instance: {\n    touchEvents: {\n      start: Support$1.touch ? 'touchstart' : 'mousedown',\n      move: Support$1.touch ? 'touchmove' : 'mousemove',\n      end: Support$1.touch ? 'touchend' : 'mouseup',\n    },\n  },\n  on: {\n    init: initTouch,\n  },\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = tokensToRegExp;\n\n/**\n * Default configs.\n */\nvar DEFAULT_DELIMITER = '/';\nvar DEFAULT_DELIMITERS = './';\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n  // Match escaped characters that would otherwise appear in future matches.\n  // This allows the user to escape special characters that won't transform.\n  '(\\\\\\\\.)',\n  // Match Express-style parameters and un-named parameters with a prefix\n  // and optional suffixes. Matches appear as:\n  //\n  // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\"]\n  // \"/route(\\\\d+)\"  => [undefined, undefined, undefined, \"\\d+\", undefined]\n  '(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?'\n].join('|'), 'g');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param  {string}  str\n * @param  {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n  var tokens = [];\n  var key = 0;\n  var index = 0;\n  var path = '';\n  var defaultDelimiter = (options && options.delimiter) || DEFAULT_DELIMITER;\n  var delimiters = (options && options.delimiters) || DEFAULT_DELIMITERS;\n  var pathEscaped = false;\n  var res;\n\n  while ((res = PATH_REGEXP.exec(str)) !== null) {\n    var m = res[0];\n    var escaped = res[1];\n    var offset = res.index;\n    path += str.slice(index, offset);\n    index = offset + m.length;\n\n    // Ignore already escaped sequences.\n    if (escaped) {\n      path += escaped[1];\n      pathEscaped = true;\n      continue\n    }\n\n    var prev = '';\n    var next = str[index];\n    var name = res[2];\n    var capture = res[3];\n    var group = res[4];\n    var modifier = res[5];\n\n    if (!pathEscaped && path.length) {\n      var k = path.length - 1;\n\n      if (delimiters.indexOf(path[k]) > -1) {\n        prev = path[k];\n        path = path.slice(0, k);\n      }\n    }\n\n    // Push the current path onto the tokens.\n    if (path) {\n      tokens.push(path);\n      path = '';\n      pathEscaped = false;\n    }\n\n    var partial = prev !== '' && next !== undefined && next !== prev;\n    var repeat = modifier === '+' || modifier === '*';\n    var optional = modifier === '?' || modifier === '*';\n    var delimiter = prev || defaultDelimiter;\n    var pattern = capture || group;\n\n    tokens.push({\n      name: name || key++,\n      prefix: prev,\n      delimiter: delimiter,\n      optional: optional,\n      repeat: repeat,\n      partial: partial,\n      pattern: pattern ? escapeGroup(pattern) : '[^' + escapeString(delimiter) + ']+?'\n    });\n  }\n\n  // Push any remaining characters.\n  if (path || index < str.length) {\n    tokens.push(path + str.substr(index));\n  }\n\n  return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param  {string}             str\n * @param  {Object=}            options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n  return tokensToFunction(parse(str, options))\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens) {\n  // Compile all the tokens into regexps.\n  var matches = new Array(tokens.length);\n\n  // Compile all the patterns before compilation.\n  for (var i = 0; i < tokens.length; i++) {\n    if (typeof tokens[i] === 'object') {\n      matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$');\n    }\n  }\n\n  return function (data, options) {\n    var path = '';\n    var encode = (options && options.encode) || encodeURIComponent;\n\n    for (var i = 0; i < tokens.length; i++) {\n      var token = tokens[i];\n\n      if (typeof token === 'string') {\n        path += token;\n        continue\n      }\n\n      var value = data ? data[token.name] : undefined;\n      var segment;\n\n      if (Array.isArray(value)) {\n        if (!token.repeat) {\n          throw new TypeError('Expected \"' + token.name + '\" to not repeat, but got array')\n        }\n\n        if (value.length === 0) {\n          if (token.optional) { continue }\n\n          throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n        }\n\n        for (var j = 0; j < value.length; j++) {\n          segment = encode(value[j]);\n\n          if (!matches[i].test(segment)) {\n            throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\"')\n          }\n\n          path += (j === 0 ? token.prefix : token.delimiter) + segment;\n        }\n\n        continue\n      }\n\n      if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n        segment = encode(String(value));\n\n        if (!matches[i].test(segment)) {\n          throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but got \"' + segment + '\"')\n        }\n\n        path += token.prefix + segment;\n        continue\n      }\n\n      if (token.optional) {\n        // Prepend partial segment prefixes.\n        if (token.partial) { path += token.prefix; }\n\n        continue\n      }\n\n      throw new TypeError('Expected \"' + token.name + '\" to be ' + (token.repeat ? 'an array' : 'a string'))\n    }\n\n    return path\n  }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param  {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n  return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param  {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n  return group.replace(/([=!:$/()])/g, '\\\\$1')\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param  {Object} options\n * @return {string}\n */\nfunction flags (options) {\n  return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param  {!RegExp} path\n * @param  {Array=}  keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n  if (!keys) { return path }\n\n  // Use a negative lookahead to match only capturing groups.\n  var groups = path.source.match(/\\((?!\\?)/g);\n\n  if (groups) {\n    for (var i = 0; i < groups.length; i++) {\n      keys.push({\n        name: i,\n        prefix: null,\n        delimiter: null,\n        optional: false,\n        repeat: false,\n        partial: false,\n        pattern: null\n      });\n    }\n  }\n\n  return path\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param  {!Array}  path\n * @param  {Array=}  keys\n * @param  {Object=} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n  var parts = [];\n\n  for (var i = 0; i < path.length; i++) {\n    parts.push(pathToRegexp(path[i], keys, options).source);\n  }\n\n  return new RegExp('(?:' + parts.join('|') + ')', flags(options))\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param  {string}  path\n * @param  {Array=}  keys\n * @param  {Object=} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n  return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param  {!Array}  tokens\n * @param  {Array=}  keys\n * @param  {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n  options = options || {};\n\n  var strict = options.strict;\n  var end = options.end !== false;\n  var delimiter = escapeString(options.delimiter || DEFAULT_DELIMITER);\n  var delimiters = options.delimiters || DEFAULT_DELIMITERS;\n  var endsWith = [].concat(options.endsWith || []).map(escapeString).concat('$').join('|');\n  var route = '';\n  var isEndDelimited = false;\n\n  // Iterate over the tokens and create our regexp string.\n  for (var i = 0; i < tokens.length; i++) {\n    var token = tokens[i];\n\n    if (typeof token === 'string') {\n      route += escapeString(token);\n      isEndDelimited = i === tokens.length - 1 && delimiters.indexOf(token[token.length - 1]) > -1;\n    } else {\n      var prefix = escapeString(token.prefix);\n      var capture = token.repeat\n        ? '(?:' + token.pattern + ')(?:' + prefix + '(?:' + token.pattern + '))*'\n        : token.pattern;\n\n      if (keys) { keys.push(token); }\n\n      if (token.optional) {\n        if (token.partial) {\n          route += prefix + '(' + capture + ')?';\n        } else {\n          route += '(?:' + prefix + '(' + capture + '))?';\n        }\n      } else {\n        route += prefix + '(' + capture + ')';\n      }\n    }\n  }\n\n  if (end) {\n    if (!strict) { route += '(?:' + delimiter + ')?'; }\n\n    route += endsWith === '$' ? '$' : '(?=' + endsWith + ')';\n  } else {\n    if (!strict) { route += '(?:' + delimiter + '(?=' + endsWith + '))?'; }\n    if (!isEndDelimited) { route += '(?=' + delimiter + '|' + endsWith + ')'; }\n  }\n\n  return new RegExp('^' + route, flags(options))\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param  {(string|RegExp|Array)} path\n * @param  {Array=}                keys\n * @param  {Object=}               options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n  if (path instanceof RegExp) {\n    return regexpToRegexp(path, keys)\n  }\n\n  if (Array.isArray(path)) {\n    return arrayToRegexp(/** @type {!Array} */ (path), keys, options)\n  }\n\n  return stringToRegexp(/** @type {string} */ (path), keys, options)\n}\n\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\nvar tempDom = document.createElement('div');\n\nvar Framework7Component = function Framework7Component(c, extendContext) {\n  if ( extendContext === void 0 ) extendContext = {};\n\n  var context = Utils.extend({}, extendContext);\n  var component = Utils.extend(this, c, { context: context });\n\n  // Apply context\n  ('beforeCreate created beforeMount mounted beforeDestroy destroyed').split(' ').forEach(function (cycleKey) {\n    if (component[cycleKey]) { component[cycleKey] = component[cycleKey].bind(context); }\n  });\n\n  if (component.data) {\n    component.data = component.data.bind(context);\n    // Data\n    Utils.extend(context, component.data());\n  }\n  if (component.render) { component.render = component.render.bind(context); }\n  if (component.methods) {\n    Object.keys(component.methods).forEach(function (methodName) {\n      context[methodName] = component.methods[methodName].bind(context);\n    });\n  }\n\n  // Bind Events\n  if (component.on) {\n    Object.keys(component.on).forEach(function (eventName) {\n      component.on[eventName] = component.on[eventName].bind(context);\n    });\n  }\n  if (component.once) {\n    Object.keys(component.once).forEach(function (eventName) {\n      component.once[eventName] = component.once[eventName].bind(context);\n    });\n  }\n\n  if (component.beforeCreate) { component.beforeCreate(); }\n\n  // Watchers\n  if (component.watch) {\n    Object.keys(component.watch).forEach(function (watchKey) {\n      var dataKeyValue = component.context[watchKey];\n      Object.defineProperty(component.context, watchKey, {\n        enumerable: true,\n        configurable: true,\n        set: function set(newValue) {\n          dataKeyValue = newValue;\n          component.watch[watchKey].call(context, dataKeyValue);\n        },\n        get: function get() {\n          return dataKeyValue;\n        },\n      });\n    });\n  }\n\n  // Render template\n  var html = '';\n  if (component.render) {\n    html = component.render();\n  } else if (component.template) {\n    if (typeof component.template === 'string') {\n      try {\n        html = Template7.compile(component.template)(context);\n      } catch (err) {\n        throw err;\n      }\n    } else {\n      // Supposed to be function\n      html = component.template(context);\n    }\n  }\n\n  // Make Dom\n  if (html && typeof html === 'string') {\n    html = html.trim();\n    tempDom.innerHTML = html;\n  } else if (html) {\n    tempDom.innerHTML = '';\n    tempDom.appendChild(html);\n  }\n\n  // Extend context with $el\n  var el = tempDom.children[0];\n  var $el = $$1$1(el);\n  context.$el = $el;\n  context.el = el;\n  component.el = el;\n\n  // Find Events\n  var events = [];\n  $$1$1(tempDom).find('*').each(function (index, element) {\n    var attrs = [];\n    for (var i = 0; i < element.attributes.length; i += 1) {\n      var attr = element.attributes[i];\n      if (attr.name.indexOf('@') === 0) {\n        attrs.push({\n          name: attr.name,\n          value: attr.value,\n        });\n      }\n    }\n    attrs.forEach(function (attr) {\n      element.removeAttribute(attr.name);\n      var event = attr.name.replace('@', '');\n      var name = event;\n      var stop = false;\n      var prevent = false;\n      var once = false;\n      if (event.indexOf('.') >= 0) {\n        event.split('.').forEach(function (eventNamePart, eventNameIndex) {\n          if (eventNameIndex === 0) { name = eventNamePart; }\n          else {\n            if (eventNamePart === 'stop') { stop = true; }\n            if (eventNamePart === 'prevent') { prevent = true; }\n            if (eventNamePart === 'once') { once = true; }\n          }\n        });\n      }\n      var value = attr.value.toString();\n      events.push({\n        el: element,\n        name: name,\n        once: once,\n        handler: function handler() {\n          var args = [], len = arguments.length;\n          while ( len-- ) args[ len ] = arguments[ len ];\n\n          var e = args[0];\n          if (stop) { e.stopPropagation(); }\n          if (prevent) { e.preventDefault(); }\n          var methodName;\n          var method;\n          var customArgs = [];\n          if (value.indexOf('(') < 0) {\n            customArgs = args;\n            methodName = value;\n          } else {\n            methodName = value.split('(')[0];\n            value.split('(')[1].split(')')[0].split(',').forEach(function (argument) {\n              var arg = argument.trim();\n              // eslint-disable-next-line\n              if (!isNaN(arg)) { arg = parseFloat(arg); }\n              else if (arg === 'true') { arg = true; }\n              else if (arg === 'false') { arg = false; }\n              else if (arg === 'null') { arg = null; }\n              else if (arg === 'undefined') { arg = undefined; }\n              else if (arg[0] === '\"') { arg = arg.replace(/\"/g, ''); }\n              else if (arg[0] === '\\'') { arg = arg.replace(/'/g, ''); }\n              else if (arg.indexOf('.') > 0) {\n                var deepArg;\n                arg.split('.').forEach(function (path) {\n                  if (!deepArg) { deepArg = context; }\n                  deepArg = deepArg[path];\n                });\n                arg = deepArg;\n              } else {\n                arg = context[arg];\n              }\n              customArgs.push(arg);\n            });\n          }\n          if (methodName.indexOf('.') >= 0) {\n            methodName.split('.').forEach(function (path, pathIndex) {\n              if (!method) { method = context; }\n              if (method[path]) { method = method[path]; }\n              else {\n                throw new Error((\"Component doesn't have method \\\"\" + (methodName.split('.').slice(0, pathIndex + 1).join('.')) + \"\\\"\"));\n              }\n            });\n          } else {\n            if (!context[methodName]) {\n              throw new Error((\"Component doesn't have method \\\"\" + methodName + \"\\\"\"));\n            }\n            method = context[methodName];\n          }\n          method.apply(void 0, customArgs);\n        },\n      });\n    });\n  });\n\n  // Set styles scope ID\n  var styleEl;\n  if (component.style) {\n    styleEl = document.createElement('style');\n    styleEl.innerHTML = component.style;\n  }\n  if (component.styleScopeId) {\n    el.setAttribute('data-scope', component.styleScopeId);\n  }\n\n  // Attach events\n  function attachEvents() {\n    if (component.on) {\n      Object.keys(component.on).forEach(function (eventName) {\n        $el.on(Utils.eventNameToColonCase(eventName), component.on[eventName]);\n      });\n    }\n    if (component.once) {\n      Object.keys(component.once).forEach(function (eventName) {\n        $el.once(Utils.eventNameToColonCase(eventName), component.once[eventName]);\n      });\n    }\n    events.forEach(function (event) {\n      $$1$1(event.el)[event.once ? 'once' : 'on'](event.name, event.handler);\n    });\n  }\n\n  function detachEvents() {\n    if (component.on) {\n      Object.keys(component.on).forEach(function (eventName) {\n        $el.off(Utils.eventNameToColonCase(eventName), component.on[eventName]);\n      });\n    }\n    if (component.once) {\n      Object.keys(component.once).forEach(function (eventName) {\n        $el.off(Utils.eventNameToColonCase(eventName), component.once[eventName]);\n      });\n    }\n    events.forEach(function (event) {\n      $$1$1(event.el).off(event.name, event.handler);\n    });\n  }\n\n  attachEvents();\n\n  // Created callback\n  if (component.created) { component.created(); }\n\n  // Mount\n  component.mount = function mount(mountMethod) {\n    if (component.beforeMount) { component.beforeMount(); }\n    if (styleEl) { $$1$1('head').append(styleEl); }\n    if (mountMethod) { mountMethod(el); }\n    if (component.mounted) { component.mounted(); }\n  };\n\n  // Destroy\n  component.destroy = function destroy() {\n    if (component.beforeDestroy) { component.beforeDestroy(); }\n    if (styleEl) { $$1$1(styleEl).remove(); }\n    detachEvents();\n    if (component.destroyed) { component.destroyed(); }\n    // Store component instance\n    if (el && el.f7Component) {\n      el.f7Component = null;\n      delete el.f7Component;\n    }\n    component = null;\n  };\n\n  // Store component instance\n  for (var i = 0; i < tempDom.children.length; i += 1) {\n    tempDom.children[i].f7Component = component;\n  }\n\n  return component;\n};\n\n\nvar Component = {\n  parse: function parse(componentString) {\n    var callbackName = \"f7_component_callback_\" + (new Date().getTime());\n\n    // Template\n    var template;\n    if (componentString.indexOf('<template>') >= 0) {\n      template = componentString\n        .split('<template>')\n        .filter(function (item, index) { return index > 0; })\n        .join('<template>')\n        .split('</template>')\n        .filter(function (item, index, arr) { return index < arr.length - 1; })\n        .join('</template>')\n        .replace(/{{#raw}}([ \\n]*)<template/g, '{{#raw}}<template')\n        .replace(/\\/template>([ \\n]*){{\\/raw}}/g, '/template>{{/raw}}')\n        .replace(/([ \\n])<template/g, '$1{{#raw}}<template')\n        .replace(/\\/template>([ \\n])/g, '/template>{{/raw}}$1');\n    }\n\n    // Styles\n    var style;\n    var styleScopeId = Utils.now();\n    if (componentString.indexOf('<style>') >= 0) {\n      style = componentString.split('<style>')[1].split('</style>')[0];\n    } else if (componentString.indexOf('<style scoped>') >= 0) {\n      style = componentString.split('<style scoped>')[1].split('</style>')[0];\n      style = style.split('\\n').map(function (line) {\n        if (line.indexOf('{') >= 0) {\n          if (line.indexOf('{{this}}') >= 0) {\n            return line.replace('{{this}}', (\"[data-scope=\\\"\" + styleScopeId + \"\\\"]\"));\n          }\n          return (\"[data-scope=\\\"\" + styleScopeId + \"\\\"] \" + (line.trim()));\n        }\n        return line;\n      }).join('\\n');\n    }\n\n    var scriptContent;\n    if (componentString.indexOf('<script>') >= 0) {\n      var scripts = componentString.split('<script>');\n      scriptContent = scripts[scripts.length - 1].split('</script>')[0].trim();\n    } else {\n      scriptContent = 'return {}';\n    }\n    scriptContent = \"window.\" + callbackName + \" = function () {\" + scriptContent + \"}\";\n\n    // Insert Script El\n    var scriptEl = document.createElement('script');\n    scriptEl.innerHTML = scriptContent;\n    $$1$1('head').append(scriptEl);\n\n    var component = window[callbackName]();\n\n    // Remove Script El\n    $$1$1(scriptEl).remove();\n\n    if (!component.template && !component.render) {\n      component.template = template;\n    }\n    if (style) {\n      component.style = style;\n      component.styleScopeId = styleScopeId;\n    }\n    return component;\n  },\n  create: function create(c, extendContext) {\n    if ( extendContext === void 0 ) extendContext = {};\n\n    return new Framework7Component(c, extendContext);\n  },\n};\n\nvar History = {\n  queue: [],\n  clearQueue: function clearQueue() {\n    if (History.queue.length === 0) { return; }\n    var currentQueue = History.queue.shift();\n    currentQueue();\n  },\n  routerQueue: [],\n  clearRouterQueue: function clearRouterQueue() {\n    if (History.routerQueue.length === 0) { return; }\n    var currentQueue = History.routerQueue.pop();\n    var router = currentQueue.router;\n    var stateUrl = currentQueue.stateUrl;\n    var action = currentQueue.action;\n\n    var animate = router.params.animate;\n    if (router.params.pushStateAnimate === false) { animate = false; }\n\n    if (action === 'back') {\n      router.back({ animate: animate, pushState: false });\n    }\n    if (action === 'load') {\n      router.navigate(stateUrl, { animate: animate, pushState: false });\n    }\n  },\n  handle: function handle(e) {\n    if (History.blockPopstate) { return; }\n    var app = this;\n    // const mainView = app.views.main;\n    var state = e.state;\n    History.previousState = History.state;\n    History.state = state;\n\n    History.allowChange = true;\n    History.clearQueue();\n\n    state = History.state;\n    if (!state) { state = {}; }\n\n    app.views.forEach(function (view) {\n      var router = view.router;\n      var viewState = state[view.id];\n      if (!viewState && view.params.pushState) {\n        viewState = {\n          url: view.router.history[0],\n        };\n      }\n      if (!viewState) { return; }\n      var stateUrl = viewState.url || undefined;\n\n      var animate = router.params.animate;\n      if (router.params.pushStateAnimate === false) { animate = false; }\n\n      if (stateUrl !== router.url) {\n        if (router.history.indexOf(stateUrl) >= 0) {\n          // Go Back\n          if (router.allowPageChange) {\n            router.back({ animate: animate, pushState: false });\n          } else {\n            History.routerQueue.push({\n              action: 'back',\n              router: router,\n            });\n          }\n        } else if (router.allowPageChange) {\n          // Load page\n          router.navigate(stateUrl, { animate: animate, pushState: false });\n        } else {\n          History.routerQueue.unshift({\n            action: 'load',\n            stateUrl: stateUrl,\n            router: router,\n          });\n        }\n      }\n    });\n  },\n  push: function push(viewId, viewState, url) {\n    var obj;\n\n    if (!History.allowChange) {\n      History.queue.push(function () {\n        History.push(viewId, viewState, url);\n      });\n      return;\n    }\n    History.previousState = History.state;\n    var newState = Utils.extend({}, (History.previousState || {}), ( obj = {}, obj[viewId] = viewState, obj ));\n    History.state = newState;\n    window.history.pushState(newState, '', url);\n  },\n  replace: function replace(viewId, viewState, url) {\n    var obj;\n\n    if (!History.allowChange) {\n      History.queue.push(function () {\n        History.replace(viewId, viewState, url);\n      });\n      return;\n    }\n    History.previousState = History.state;\n    var newState = Utils.extend({}, (History.previousState || {}), ( obj = {}, obj[viewId] = viewState, obj ));\n    History.state = newState;\n    window.history.replaceState(newState, '', url);\n  },\n  go: function go(index) {\n    History.allowChange = false;\n    window.history.go(index);\n  },\n  back: function back() {\n    History.allowChange = false;\n    window.history.back();\n  },\n  allowChange: true,\n  previousState: {},\n  state: window.history.state,\n  blockPopstate: true,\n  init: function init(app) {\n    $$1$1(window).on('load', function () {\n      setTimeout(function () {\n        History.blockPopstate = false;\n      }, 0);\n    });\n\n    if (document.readyState && document.readyState === 'complete') {\n      History.blockPopstate = false;\n    }\n\n    $$1$1(window).on('popstate', History.handle.bind(app));\n  },\n};\n\nfunction SwipeBack(r) {\n  var router = r;\n  var $el = router.$el;\n  var $navbarEl = router.$navbarEl;\n  var app = router.app;\n  var isTouched = false;\n  var isMoved = false;\n  var touchesStart = {};\n  var isScrolling;\n  var currentPage = [];\n  var previousPage = [];\n  var viewContainerWidth;\n  var touchesDiff;\n  var allowViewTouchMove = true;\n  var touchStartTime;\n  var currentNavbar = [];\n  var previousNavbar = [];\n  var currentNavElements;\n  var previousNavElements;\n  var activeNavBackIcon;\n  var activeNavBackIconText;\n  var previousNavBackIcon;\n  // let previousNavBackIconText;\n  var dynamicNavbar;\n  var separateNavbar;\n  var pageShadow;\n  var pageOpacity;\n  var navbarWidth;\n\n  function handleTouchStart(e) {\n    if (!allowViewTouchMove || !router.params.iosSwipeBack || isTouched || (app.swipeout && app.swipeout.el) || !router.allowPageChange) { return; }\n    if ($$1$1(e.target).closest('.range-slider, .calendar-months').length > 0) { return; }\n    isMoved = false;\n    isTouched = true;\n    isScrolling = undefined;\n    touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n    touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n    touchStartTime = Utils.now();\n    dynamicNavbar = router.dynamicNavbar;\n    separateNavbar = router.separateNavbar;\n  }\n  function handleTouchMove(e) {\n    if (!isTouched) { return; }\n    var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n    var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n    if (typeof isScrolling === 'undefined') {\n      isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x)) || pageX < touchesStart.x;\n    }\n    if (isScrolling || e.f7PreventSwipeBack || app.preventSwipeBack) {\n      isTouched = false;\n      return;\n    }\n    if (!isMoved) {\n      // Calc values during first move fired\n      var cancel = false;\n      var target = $$1$1(e.target);\n\n      var swipeout = target.closest('.swipeout');\n      if (swipeout.length > 0) {\n        if (!app.rtl && swipeout.find('.swipeout-actions-left').length > 0) { cancel = true; }\n        if (app.rtl && swipeout.find('.swipeout-actions-right').length > 0) { cancel = true; }\n      }\n\n      currentPage = target.closest('.page');\n      if (currentPage.hasClass('no-swipeback') || target.closest('.no-swipeback').length > 0) { cancel = true; }\n      previousPage = $el.find('.page-previous:not(.stacked)');\n\n      var notFromBorder = touchesStart.x - $el.offset().left > router.params.iosSwipeBackActiveArea;\n      viewContainerWidth = $el.width();\n      if (app.rtl) {\n        notFromBorder = touchesStart.x < ($el.offset().left - $el[0].scrollLeft) + (viewContainerWidth - router.params.iosSwipeBackActiveArea);\n      } else {\n        notFromBorder = touchesStart.x - $el.offset().left > router.params.iosSwipeBackActiveArea;\n      }\n      if (notFromBorder) { cancel = true; }\n      if (previousPage.length === 0 || currentPage.length === 0) { cancel = true; }\n      if (cancel) {\n        isTouched = false;\n        return;\n      }\n\n      if (router.params.iosSwipeBackAnimateShadow) {\n        pageShadow = currentPage.find('.page-shadow-effect');\n        if (pageShadow.length === 0) {\n          pageShadow = $$1$1('<div class=\"page-shadow-effect\"></div>');\n          currentPage.append(pageShadow);\n        }\n      }\n      if (router.params.iosSwipeBackAnimateOpacity) {\n        pageOpacity = previousPage.find('.page-opacity-effect');\n        if (pageOpacity.length === 0) {\n          pageOpacity = $$1$1('<div class=\"page-opacity-effect\"></div>');\n          previousPage.append(pageOpacity);\n        }\n      }\n\n      if (dynamicNavbar) {\n        if (separateNavbar) {\n          currentNavbar = $navbarEl.find('.navbar-current:not(.stacked)');\n          previousNavbar = $navbarEl.find('.navbar-previous:not(.stacked)');\n        } else {\n          currentNavbar = currentPage.children('.navbar').children('.navbar-inner');\n          previousNavbar = previousPage.children('.navbar').children('.navbar-inner');\n        }\n        navbarWidth = $navbarEl[0].offsetWidth;\n        currentNavElements = currentNavbar.children('.left, .title, .right, .subnavbar, .fading');\n        previousNavElements = previousNavbar.children('.left, .title, .right, .subnavbar, .fading');\n        if (router.params.iosAnimateNavbarBackIcon) {\n          if (currentNavbar.hasClass('sliding')) {\n            activeNavBackIcon = currentNavbar.children('.left').find('.back .icon');\n            activeNavBackIconText = currentNavbar.children('.left').find('.back span').eq(0);\n          } else {\n            activeNavBackIcon = currentNavbar.children('.left.sliding').find('.back .icon');\n            activeNavBackIconText = currentNavbar.children('.left.sliding').find('.back span').eq(0);\n          }\n          if (previousNavbar.hasClass('sliding')) {\n            previousNavBackIcon = previousNavbar.children('.left').find('.back .icon');\n            // previousNavBackIconText = previousNavbar.children('left').find('.back span').eq(0);\n          } else {\n            previousNavBackIcon = previousNavbar.children('.left.sliding').find('.back .icon');\n            // previousNavBackIconText = previousNavbar.children('.left.sliding').find('.back span').eq(0);\n          }\n        }\n      }\n\n      // Close/Hide Any Picker\n      if ($$1$1('.sheet.modal-in').length > 0 && app.sheet) {\n        app.sheet.close($$1$1('.sheet.modal-in'));\n      }\n    }\n    e.f7PreventPanelSwipe = true;\n    isMoved = true;\n    app.preventSwipePanelBySwipeBack = true;\n    e.preventDefault();\n\n    // RTL inverter\n    var inverter = app.rtl ? -1 : 1;\n\n    // Touches diff\n    touchesDiff = (pageX - touchesStart.x - router.params.iosSwipeBackThreshold) * inverter;\n    if (touchesDiff < 0) { touchesDiff = 0; }\n    var percentage = touchesDiff / viewContainerWidth;\n\n    // Swipe Back Callback\n    var callbackData = {\n      percentage: percentage,\n      currentPageEl: currentPage[0],\n      previousPageEl: previousPage[0],\n      currentNavbarEl: currentNavbar[0],\n      previousNavbarEl: previousNavbar[0],\n    };\n    $el.trigger('swipeback:move', callbackData);\n    router.emit('swipebackMove', callbackData);\n\n    // Transform pages\n    var currentPageTranslate = touchesDiff * inverter;\n    var previousPageTranslate = ((touchesDiff / 5) - (viewContainerWidth / 5)) * inverter;\n    if (Device.pixelRatio === 1) {\n      currentPageTranslate = Math.round(currentPageTranslate);\n      previousPageTranslate = Math.round(previousPageTranslate);\n    }\n\n    currentPage.transform((\"translate3d(\" + currentPageTranslate + \"px,0,0)\"));\n    if (router.params.iosSwipeBackAnimateShadow) { pageShadow[0].style.opacity = 1 - (1 * percentage); }\n\n    previousPage.transform((\"translate3d(\" + previousPageTranslate + \"px,0,0)\"));\n    if (router.params.iosSwipeBackAnimateOpacity) { pageOpacity[0].style.opacity = 1 - (1 * percentage); }\n\n    // Dynamic Navbars Animation\n    if (dynamicNavbar) {\n      currentNavElements.each(function (index, navEl) {\n        var $navEl = $$1$1(navEl);\n        if (!$navEl.is('.subnavbar')) { $navEl[0].style.opacity = (1 - (Math.pow( percentage, 0.33 ))); }\n        if ($navEl[0].className.indexOf('sliding') >= 0 || currentNavbar.hasClass('sliding')) {\n          var activeNavTranslate = percentage * $navEl[0].f7NavbarRightOffset;\n          if (Device.pixelRatio === 1) { activeNavTranslate = Math.round(activeNavTranslate); }\n          $navEl.transform((\"translate3d(\" + activeNavTranslate + \"px,0,0)\"));\n          if (router.params.iosAnimateNavbarBackIcon) {\n            if ($navEl[0].className.indexOf('left') >= 0 && activeNavBackIcon.length > 0) {\n              var iconTranslate = -activeNavTranslate;\n              if (!separateNavbar) {\n                iconTranslate -= navbarWidth * percentage;\n              }\n              activeNavBackIcon.transform((\"translate3d(\" + iconTranslate + \"px,0,0)\"));\n            }\n          }\n        }\n      });\n      previousNavElements.each(function (index, navEl) {\n        var $navEl = $$1$1(navEl);\n        if (!$navEl.is('.subnavbar')) { $navEl[0].style.opacity = (Math.pow( percentage, 3 )); }\n        if ($navEl[0].className.indexOf('sliding') >= 0 || previousNavbar.hasClass('sliding')) {\n          var previousNavTranslate = $navEl[0].f7NavbarLeftOffset * (1 - percentage);\n          if ($navEl[0].className.indexOf('title') >= 0 && activeNavBackIcon && activeNavBackIcon.length && activeNavBackIconText.length) {\n            previousNavTranslate = ($navEl[0].f7NavbarLeftOffset + activeNavBackIconText[0].offsetLeft) * (1 - percentage);\n          } else {\n            previousNavTranslate = $navEl[0].f7NavbarLeftOffset * (1 - percentage);\n          }\n          if (Device.pixelRatio === 1) { previousNavTranslate = Math.round(previousNavTranslate); }\n          $navEl.transform((\"translate3d(\" + previousNavTranslate + \"px,0,0)\"));\n          if (router.params.iosAnimateNavbarBackIcon) {\n            if ($navEl[0].className.indexOf('left') >= 0 && previousNavBackIcon.length > 0) {\n              var iconTranslate = -previousNavTranslate;\n              if (!separateNavbar) {\n                iconTranslate += (navbarWidth / 5) * (1 - percentage);\n              }\n              previousNavBackIcon.transform((\"translate3d(\" + iconTranslate + \"px,0,0)\"));\n            }\n          }\n        }\n      });\n    }\n  }\n  function handleTouchEnd() {\n    app.preventSwipePanelBySwipeBack = false;\n    if (!isTouched || !isMoved) {\n      isTouched = false;\n      isMoved = false;\n      return;\n    }\n    isTouched = false;\n    isMoved = false;\n    if (touchesDiff === 0) {\n      $$1$1([currentPage[0], previousPage[0]]).transform('');\n      if (dynamicNavbar) {\n        currentNavElements.transform('').css({ opacity: '' });\n        previousNavElements.transform('').css({ opacity: '' });\n        if (activeNavBackIcon && activeNavBackIcon.length > 0) { activeNavBackIcon.transform(''); }\n        if (previousNavBackIcon && activeNavBackIcon.length > 0) { previousNavBackIcon.transform(''); }\n      }\n      return;\n    }\n    var timeDiff = Utils.now() - touchStartTime;\n    var pageChanged = false;\n    // Swipe back to previous page\n    if (\n      (timeDiff < 300 && touchesDiff > 10) ||\n      (timeDiff >= 300 && touchesDiff > viewContainerWidth / 2)\n    ) {\n      currentPage.removeClass('page-current').addClass('page-next');\n      previousPage.removeClass('page-previous').addClass('page-current');\n      if (pageShadow) { pageShadow[0].style.opacity = ''; }\n      if (pageOpacity) { pageOpacity[0].style.opacity = ''; }\n      if (dynamicNavbar) {\n        currentNavbar.removeClass('navbar-current').addClass('navbar-next');\n        previousNavbar.removeClass('navbar-previous').addClass('navbar-current');\n      }\n      pageChanged = true;\n    }\n    // Reset custom styles\n    // Add transitioning class for transition-duration\n    $$1$1([currentPage[0], previousPage[0]]).addClass('page-transitioning').transform('');\n    if (dynamicNavbar) {\n      currentNavElements.css({ opacity: '' })\n        .each(function (navElIndex, navEl) {\n          var translate = pageChanged ? navEl.f7NavbarRightOffset : 0;\n          var sliding = $$1$1(navEl);\n          var iconTranslate = pageChanged ? -translate : 0;\n          if (!separateNavbar && pageChanged) { iconTranslate -= navbarWidth; }\n          sliding.transform((\"translate3d(\" + translate + \"px,0,0)\"));\n          if (router.params.iosAnimateNavbarBackIcon) {\n            if (sliding.hasClass('left') && activeNavBackIcon.length > 0) {\n              activeNavBackIcon.addClass('navbar-transitioning').transform((\"translate3d(\" + iconTranslate + \"px,0,0)\"));\n            }\n          }\n        }).addClass('navbar-transitioning');\n\n      previousNavElements.transform('').css({ opacity: '' }).each(function (navElIndex, navEl) {\n        var translate = pageChanged ? 0 : navEl.f7NavbarLeftOffset;\n        var sliding = $$1$1(navEl);\n        var iconTranslate = pageChanged ? 0 : -translate;\n        if (!separateNavbar && !pageChanged) { iconTranslate += navbarWidth / 5; }\n        sliding.transform((\"translate3d(\" + translate + \"px,0,0)\"));\n        if (router.params.iosAnimateNavbarBackIcon) {\n          if (sliding.hasClass('left') && previousNavBackIcon.length > 0) {\n            previousNavBackIcon.addClass('navbar-transitioning').transform((\"translate3d(\" + iconTranslate + \"px,0,0)\"));\n          }\n        }\n      }).addClass('navbar-transitioning');\n    }\n    allowViewTouchMove = false;\n    router.allowPageChange = false;\n\n    // Swipe Back Callback\n    var callbackData = {\n      currentPage: currentPage[0],\n      previousPage: previousPage[0],\n      currentNavbar: currentNavbar[0],\n      previousNavbar: previousNavbar[0],\n    };\n\n    if (pageChanged) {\n      // Update Route\n      router.currentRoute = previousPage[0].f7Page.route;\n      router.currentPage = previousPage[0];\n\n      // Page before animation callback\n      router.pageCallback('beforeOut', currentPage, currentNavbar, 'current', 'next', { route: currentPage[0].f7Page.route });\n      router.pageCallback('beforeIn', previousPage, previousNavbar, 'previous', 'current', { route: previousPage[0].f7Page.route });\n\n      $el.trigger('swipeback:beforechange', callbackData);\n      router.emit('swipebackBeforeChange', callbackData);\n    } else {\n      $el.trigger('swipeback:beforereset', callbackData);\n      router.emit('swipebackBeforeReset', callbackData);\n    }\n\n    currentPage.transitionEnd(function () {\n      $$1$1([currentPage[0], previousPage[0]]).removeClass('page-transitioning');\n      if (dynamicNavbar) {\n        currentNavElements.removeClass('navbar-transitioning').css({ opacity: '' }).transform('');\n        previousNavElements.removeClass('navbar-transitioning').css({ opacity: '' }).transform('');\n        if (activeNavBackIcon && activeNavBackIcon.length > 0) { activeNavBackIcon.removeClass('navbar-transitioning'); }\n        if (previousNavBackIcon && previousNavBackIcon.length > 0) { previousNavBackIcon.removeClass('navbar-transitioning'); }\n      }\n      allowViewTouchMove = true;\n      router.allowPageChange = true;\n      if (pageChanged) {\n        // Update History\n        if (router.history.length === 1) {\n          router.history.unshift(router.url);\n        }\n        router.history.pop();\n        router.saveHistory();\n\n        // Update push state\n        if (router.params.pushState) {\n          History.back();\n        }\n\n        // Page after animation callback\n        router.pageCallback('afterOut', currentPage, currentNavbar, 'current', 'next', { route: currentPage[0].f7Page.route });\n        router.pageCallback('afterIn', previousPage, previousNavbar, 'previous', 'current', { route: previousPage[0].f7Page.route });\n\n        // Remove Old Page\n        if (router.params.stackPages && router.initialPages.indexOf(currentPage[0]) >= 0) {\n          currentPage.addClass('stacked');\n          if (separateNavbar) {\n            currentNavbar.addClass('stacked');\n          }\n        } else {\n          router.pageCallback('beforeRemove', currentPage, currentNavbar, 'next');\n          router.removePage(currentPage);\n          if (separateNavbar) {\n            router.removeNavbar(currentNavbar);\n          }\n        }\n\n        $el.trigger('swipeback:afterchange', callbackData);\n        router.emit('swipebackAfterChange', callbackData);\n\n        router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n\n        if (router.params.preloadPreviousPage) {\n          router.back(router.history[router.history.length - 2], { preload: true });\n        }\n      } else {\n        $el.trigger('swipeback:afterreset', callbackData);\n        router.emit('swipebackAfterReset', callbackData);\n      }\n      if (pageShadow && pageShadow.length > 0) { pageShadow.remove(); }\n      if (pageOpacity && pageOpacity.length > 0) { pageOpacity.remove(); }\n    });\n  }\n\n  function attachEvents() {\n    var passiveListener = (app.touchEvents.start === 'touchstart' && Support$1.passiveListener) ? { passive: true, capture: false } : false;\n    $el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n    app.on('touchmove:active', handleTouchMove);\n    app.on('touchend:passive', handleTouchEnd);\n  }\n  function detachEvents() {\n    var passiveListener = (app.touchEvents.start === 'touchstart' && Support$1.passiveListener) ? { passive: true, capture: false } : false;\n    $el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n    app.off('touchmove:active', handleTouchMove);\n    app.off('touchend:passive', handleTouchEnd);\n  }\n\n  attachEvents();\n\n  router.on('routerDestroy', detachEvents);\n}\n\nvar redirect = function (direction, route, options) {\n  var router = this;\n  var redirect = route.route.redirect;\n  function redirectResolve(redirectUrl, redirectOptions) {\n    if ( redirectOptions === void 0 ) redirectOptions = {};\n\n    router.allowPageChange = true;\n    router[direction](redirectUrl, Utils.extend({}, options, redirectOptions));\n  }\n  function redirectReject() {\n    router.allowPageChange = true;\n  }\n  if (typeof redirect === 'function') {\n    router.allowPageChange = false;\n    var redirectUrl = redirect.call(router, route, redirectResolve, redirectReject);\n    if (redirectUrl && typeof redirectUrl === 'string') {\n      router.allowPageChange = true;\n      return router[direction](redirectUrl, options);\n    }\n    return router;\n  }\n  return router[direction](redirect, options);\n};\n\nfunction refreshPage() {\n  var router = this;\n  return router.navigate(router.currentRoute.url, {\n    ignoreCache: true,\n    reloadCurrent: true,\n  });\n}\n\nfunction forward(el, forwardOptions) {\n  if ( forwardOptions === void 0 ) forwardOptions = {};\n\n  var router = this;\n  var app = router.app;\n  var view = router.view;\n\n  var options = Utils.extend({\n    animate: router.params.animate,\n    pushState: true,\n    history: true,\n    reloadCurrent: router.params.reloadPages,\n    reloadPrevious: false,\n    reloadAll: false,\n    on: {},\n  }, forwardOptions);\n\n  var dynamicNavbar = router.dynamicNavbar;\n  var separateNavbar = router.separateNavbar;\n\n  var $viewEl = router.$el;\n  var $newPage = $$1$1(el);\n  var reload = options.reloadPrevious || options.reloadCurrent || options.reloadAll;\n  var $oldPage;\n\n  var $navbarEl;\n  var $newNavbarInner;\n  var $oldNavbarInner;\n\n  if ($newPage.length) {\n    // Remove theme elements\n    router.removeThemeElements($newPage);\n  }\n\n  if (dynamicNavbar) {\n    $newNavbarInner = $newPage.children('.navbar').children('.navbar-inner');\n    if (separateNavbar) {\n      $navbarEl = router.$navbarEl;\n      if ($newNavbarInner.length > 0) {\n        $newPage.children('.navbar').remove();\n      }\n      if ($newNavbarInner.length === 0 && $newPage[0].f7Page) {\n        // Try from pageData\n        $newNavbarInner = $newPage[0].f7Page.$navbarEl;\n      }\n    }\n  }\n\n  router.allowPageChange = false;\n  if ($newPage.length === 0) {\n    router.allowPageChange = true;\n    return router;\n  }\n\n  // Pages In View\n  var $pagesInView = $viewEl\n    .children('.page:not(.stacked)')\n    .filter(function (index, pageInView) { return pageInView !== $newPage[0]; });\n\n  // Navbars In View\n  var $navbarsInView;\n  if (separateNavbar) {\n    $navbarsInView = $navbarEl\n      .children('.navbar-inner:not(.stacked)')\n      .filter(function (index, navbarInView) { return navbarInView !== $newNavbarInner[0]; });\n  }\n\n  // Exit when reload previous and only 1 page in view so nothing ro reload\n  if (options.reloadPrevious && $pagesInView.length < 2) {\n    router.allowPageChange = true;\n    return router;\n  }\n\n  // New Page\n  var newPagePosition = 'next';\n  if (options.reloadCurrent || options.reloadAll) {\n    newPagePosition = 'current';\n  } else if (options.reloadPrevious) {\n    newPagePosition = 'previous';\n  }\n  $newPage\n    .addClass((\"page-\" + newPagePosition))\n    .removeClass('stacked');\n\n  if (dynamicNavbar && $newNavbarInner.length) {\n    $newNavbarInner\n      .addClass((\"navbar-\" + newPagePosition))\n      .removeClass('stacked');\n  }\n\n  // Find Old Page\n  if (options.reloadCurrent) {\n    $oldPage = $pagesInView.eq($pagesInView.length - 1);\n    if (separateNavbar) {\n      // $oldNavbarInner = $navbarsInView.eq($pagesInView.length - 1);\n      $oldNavbarInner = $$1$1(app.navbar.getElByPage($oldPage));\n    }\n  } else if (options.reloadPrevious) {\n    $oldPage = $pagesInView.eq($pagesInView.length - 2);\n    if (separateNavbar) {\n      // $oldNavbarInner = $navbarsInView.eq($pagesInView.length - 2);\n      $oldNavbarInner = $$1$1(app.navbar.getElByPage($oldPage));\n    }\n  } else if (options.reloadAll) {\n    $oldPage = $pagesInView.filter(function (index, pageEl) { return pageEl !== $newPage[0]; });\n    if (separateNavbar) {\n      $oldNavbarInner = $navbarsInView.filter(function (index, navbarEl) { return navbarEl !== $newNavbarInner[0]; });\n    }\n  } else {\n    if ($pagesInView.length > 1) {\n      var i = 0;\n      for (i = 0; i < $pagesInView.length - 1; i += 1) {\n        var oldNavbarInnerEl = app.navbar.getElByPage($pagesInView.eq(i));\n        if (router.params.stackPages) {\n          $pagesInView.eq(i).addClass('stacked');\n          if (separateNavbar) {\n            // $navbarsInView.eq(i).addClass('stacked');\n            $$1$1(oldNavbarInnerEl).addClass('stacked');\n          }\n        } else {\n          // Page remove event\n          router.pageCallback('beforeRemove', $pagesInView[i], $navbarsInView && $navbarsInView[i], 'previous', undefined, options);\n          router.removePage($pagesInView[i]);\n          if (separateNavbar && oldNavbarInnerEl) {\n            router.removeNavbar(oldNavbarInnerEl);\n          }\n        }\n      }\n    }\n    $oldPage = $viewEl\n      .children('.page:not(.stacked)')\n      .filter(function (index, page) { return page !== $newPage[0]; });\n    if (separateNavbar) {\n      $oldNavbarInner = $navbarEl\n        .children('.navbar-inner:not(.stacked)')\n        .filter(function (index, navbarInner) { return navbarInner !== $newNavbarInner[0]; });\n    }\n  }\n  if (dynamicNavbar && !separateNavbar) {\n    $oldNavbarInner = $oldPage.children('.navbar').children('.navbar-inner');\n  }\n\n  // Push State\n  if (router.params.pushState && options.pushState && !options.reloadPrevious) {\n    var pushStateRoot = router.params.pushStateRoot || '';\n    History[options.reloadCurrent || options.reloadAll ? 'replace' : 'push'](\n      view.id,\n      {\n        url: options.route.url,\n      },\n      pushStateRoot + router.params.pushStateSeparator + options.route.url\n    );\n  }\n\n  // Current Page & Navbar\n  router.currentPageEl = $newPage[0];\n  if (dynamicNavbar && $newNavbarInner.length) {\n    router.currentNavbarEl = $newNavbarInner[0];\n  } else {\n    delete router.currentNavbarEl;\n  }\n\n  // Current Route\n  router.currentRoute = options.route;\n\n  // Update router history\n  var url = options.route.url;\n  if (options.history) {\n    if (options.reloadCurrent && router.history.length > 0) {\n      router.history[router.history.length - (options.reloadPrevious ? 2 : 1)] = url;\n    } else if (options.reloadAll) {\n      router.history = [url];\n    } else {\n      router.history.push(url);\n    }\n  }\n  router.saveHistory();\n\n  // Insert new page and navbar\n  var newPageInDom = $newPage.parents(document).length > 0;\n  var f7Component = $newPage[0].f7Component;\n  if (options.reloadPrevious) {\n    if (f7Component && !newPageInDom) {\n      f7Component.mount(function (componentEl) {\n        $$1$1(componentEl).insertBefore($oldPage);\n      });\n    } else {\n      $newPage.insertBefore($oldPage);\n    }\n    if (separateNavbar && $newNavbarInner.length) {\n      if ($oldNavbarInner.length) {\n        $newNavbarInner.insertBefore($oldNavbarInner);\n      } else {\n        if (!router.$navbarEl.parents(document).length) {\n          router.$el.prepend(router.$navbarEl);\n        }\n        $navbarEl.append($newNavbarInner);\n      }\n    }\n  } else {\n    if ($oldPage.next('.page')[0] !== $newPage[0]) {\n      if (f7Component && !newPageInDom) {\n        f7Component.mount(function (componentEl) {\n          $viewEl.append(componentEl);\n        });\n      } else {\n        $viewEl.append($newPage[0]);\n      }\n    }\n    if (separateNavbar && $newNavbarInner.length) {\n      if (!router.$navbarEl.parents(document).length) {\n        router.$el.prepend(router.$navbarEl);\n      }\n      $navbarEl.append($newNavbarInner[0]);\n    }\n  }\n  if (!newPageInDom) {\n    router.pageCallback('mounted', $newPage, $newNavbarInner, newPagePosition, reload ? newPagePosition : 'current', options, $oldPage);\n  }\n\n  // Remove old page\n  if (options.reloadCurrent && $oldPage.length > 0) {\n    if (router.params.stackPages && router.initialPages.indexOf($oldPage[0]) >= 0) {\n      $oldPage.addClass('stacked');\n      if (separateNavbar) {\n        $oldNavbarInner.addClass('stacked');\n      }\n    } else {\n      // Page remove event\n      router.pageCallback('beforeRemove', $oldPage, $oldNavbarInner, 'previous', undefined, options);\n      router.removePage($oldPage);\n      if (separateNavbar && $oldNavbarInner && $oldNavbarInner.length) {\n        router.removeNavbar($oldNavbarInner);\n      }\n    }\n  } else if (options.reloadAll) {\n    $oldPage.each(function (index, pageEl) {\n      var $oldPageEl = $$1$1(pageEl);\n      var $oldNavbarInnerEl = $$1$1(app.navbar.getElByPage($oldPageEl));\n      if (router.params.stackPages && router.initialPages.indexOf($oldPageEl[0]) >= 0) {\n        $oldPageEl.addClass('stacked');\n        if (separateNavbar) {\n          $oldNavbarInnerEl.addClass('stacked');\n        }\n      } else {\n        // Page remove event\n        router.pageCallback('beforeRemove', $oldPageEl, $oldNavbarInner && $oldNavbarInner.eq(index), 'previous', undefined, options);\n        router.removePage($oldPageEl);\n        if (separateNavbar && $oldNavbarInnerEl.length) {\n          router.removeNavbar($oldNavbarInnerEl);\n        }\n      }\n    });\n  }\n\n  // Load Tab\n  if (options.route.route.tab) {\n    router.tabLoad(options.route.route.tab, Utils.extend({}, options, {\n      history: false,\n      pushState: false,\n    }));\n  }\n\n  // Page init and before init events\n  router.pageCallback('init', $newPage, $newNavbarInner, newPagePosition, reload ? newPagePosition : 'current', options, $oldPage);\n\n  if (options.reloadCurrent || options.reloadAll) {\n    router.allowPageChange = true;\n    router.pageCallback('beforeIn', $newPage, $newNavbarInner, newPagePosition, 'current', options);\n    router.pageCallback('afterIn', $newPage, $newNavbarInner, newPagePosition, 'current', options);\n    return router;\n  }\n\n  // Before animation event\n  router.pageCallback('beforeIn', $newPage, $newNavbarInner, 'next', 'current', options);\n  router.pageCallback('beforeOut', $oldPage, $oldNavbarInner, 'current', 'previous', options);\n\n  // Animation\n  function afterAnimation() {\n    var pageClasses = 'page-previous page-current page-next';\n    var navbarClasses = 'navbar-previous navbar-current navbar-next';\n    $newPage.removeClass(pageClasses).addClass('page-current').removeAttr('aria-hidden');\n    $oldPage.removeClass(pageClasses).addClass('page-previous').attr('aria-hidden', 'true');\n    if (dynamicNavbar) {\n      $newNavbarInner.removeClass(navbarClasses).addClass('navbar-current').removeAttr('aria-hidden');\n      $oldNavbarInner.removeClass(navbarClasses).addClass('navbar-previous').attr('aria-hidden', 'true');\n    }\n    // After animation event\n    router.allowPageChange = true;\n    router.pageCallback('afterIn', $newPage, $newNavbarInner, 'next', 'current', options);\n    router.pageCallback('afterOut', $oldPage, $oldNavbarInner, 'current', 'previous', options);\n\n    var keepOldPage = app.theme === 'ios' ? (router.params.preloadPreviousPage || router.params.iosSwipeBack) : router.params.preloadPreviousPage;\n    if (!keepOldPage) {\n      if ($newPage.hasClass('smart-select-page') || $newPage.hasClass('photo-browser-page') || $newPage.hasClass('autocomplete-page')) {\n        keepOldPage = true;\n      }\n    }\n    if (!keepOldPage) {\n      if (router.params.stackPages) {\n        $oldPage.addClass('stacked');\n        if (separateNavbar) {\n          $oldNavbarInner.addClass('stacked');\n        }\n      } else if (!($newPage.attr('data-name') && $newPage.attr('data-name') === 'smart-select-page')) {\n        // Remove event\n        router.pageCallback('beforeRemove', $oldPage, $oldNavbarInner, 'previous', undefined, options);\n        router.removePage($oldPage);\n        if (separateNavbar && $oldNavbarInner.length) {\n          router.removeNavbar($oldNavbarInner);\n        }\n      }\n    }\n    router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n\n    if (router.params.pushState) {\n      History.clearRouterQueue();\n    }\n  }\n  function setPositionClasses() {\n    var pageClasses = 'page-previous page-current page-next';\n    var navbarClasses = 'navbar-previous navbar-current navbar-next';\n    $oldPage.removeClass(pageClasses).addClass('page-current').removeAttr('aria-hidden');\n    $newPage.removeClass(pageClasses).addClass('page-next').removeAttr('aria-hidden');\n    if (dynamicNavbar) {\n      $oldNavbarInner.removeClass(navbarClasses).addClass('navbar-current').removeAttr('aria-hidden');\n      $newNavbarInner.removeClass(navbarClasses).addClass('navbar-next').removeAttr('aria-hidden');\n    }\n  }\n  if (options.animate) {\n    var delay = router.app.theme === 'md' ? router.params.materialPageLoadDelay : router.params.iosPageLoadDelay;\n    if (delay) {\n      setTimeout(function () {\n        setPositionClasses();\n        router.animate($oldPage, $newPage, $oldNavbarInner, $newNavbarInner, 'forward', function () {\n          afterAnimation();\n        });\n      }, delay);\n    } else {\n      setPositionClasses();\n      router.animate($oldPage, $newPage, $oldNavbarInner, $newNavbarInner, 'forward', function () {\n        afterAnimation();\n      });\n    }\n  } else {\n    afterAnimation();\n  }\n  return router;\n}\nfunction load(loadParams, loadOptions, ignorePageChange) {\n  if ( loadParams === void 0 ) loadParams = {};\n  if ( loadOptions === void 0 ) loadOptions = {};\n\n  var router = this;\n  if (!router.allowPageChange && !ignorePageChange) { return router; }\n  var params = loadParams;\n  var options = loadOptions;\n  var url = params.url;\n  var content = params.content;\n  var el = params.el;\n  var pageName = params.pageName;\n  var template = params.template;\n  var templateUrl = params.templateUrl;\n  var component = params.component;\n  var componentUrl = params.componentUrl;\n\n  if (!options.reloadCurrent &&\n    options.route &&\n    options.route.route &&\n    options.route.route.parentPath &&\n    router.currentRoute.route &&\n    router.currentRoute.route.parentPath === options.route.route.parentPath) {\n    // Do something nested\n    if (options.route.url === router.url) {\n      return false;\n    }\n    // Check for same params\n    var sameParams = Object.keys(options.route.params).length === Object.keys(router.currentRoute.params).length;\n    if (sameParams) {\n      // Check for equal params name\n      Object.keys(options.route.params).forEach(function (paramName) {\n        if (\n          !(paramName in router.currentRoute.params) ||\n          (router.currentRoute.params[paramName] !== options.route.params[paramName])\n        ) {\n          sameParams = false;\n        }\n      });\n    }\n    if (sameParams) {\n      if (options.route.route.tab) {\n        return router.tabLoad(options.route.route.tab, options);\n      }\n      return false;\n    }\n  }\n\n  if (\n    options.route &&\n    options.route.url &&\n    router.url === options.route.url &&\n    !(options.reloadCurrent || options.reloadPrevious) &&\n    !router.params.allowDuplicateUrls\n  ) {\n    return false;\n  }\n\n  if (!options.route && url) {\n    options.route = router.parseRouteUrl(url);\n    Utils.extend(options.route, { route: { url: url, path: url } });\n  }\n\n  // Component Callbacks\n  function resolve(pageEl, newOptions) {\n    return router.forward(pageEl, Utils.extend(options, newOptions));\n  }\n  function reject() {\n    router.allowPageChange = true;\n    return router;\n  }\n\n  if (url || templateUrl || componentUrl) {\n    router.allowPageChange = false;\n  }\n\n  // Proceed\n  if (content) {\n    router.forward(router.getPageEl(content), options);\n  } else if (template || templateUrl) {\n    // Parse template and send page element\n    try {\n      router.pageTemplateLoader(template, templateUrl, options, resolve, reject);\n    } catch (err) {\n      router.allowPageChange = true;\n      throw err;\n    }\n  } else if (el) {\n    // Load page from specified HTMLElement or by page name in pages container\n    router.forward(router.getPageEl(el), options);\n  } else if (pageName) {\n    // Load page by page name in pages container\n    router.forward(router.$el.children((\".page[data-name=\\\"\" + pageName + \"\\\"]\")).eq(0), options);\n  } else if (component || componentUrl) {\n    // Load from component (F7/Vue/React/...)\n    try {\n      router.pageComponentLoader(router.el, component, componentUrl, options, resolve, reject);\n    } catch (err) {\n      router.allowPageChange = true;\n      throw err;\n    }\n  } else if (url) {\n    // Load using XHR\n    if (router.xhr) {\n      router.xhr.abort();\n      router.xhr = false;\n    }\n    router.xhrRequest(url, options)\n      .then(function (pageContent) {\n        router.forward(router.getPageEl(pageContent), options);\n      })\n      .catch(function () {\n        router.allowPageChange = true;\n      });\n  }\n  return router;\n}\nfunction navigate(navigateParams, navigateOptions) {\n  var obj;\n\n  if ( navigateOptions === void 0 ) navigateOptions = {};\n  var router = this;\n  var url;\n  var createRoute;\n  if (typeof navigateParams === 'string') {\n    url = navigateParams;\n  } else {\n    url = navigateParams.url;\n    createRoute = navigateParams.route;\n  }\n  var app = router.app;\n  if (!router.view) {\n    if (app.views.main) {\n      app.views.main.router.navigate(url, navigateOptions);\n    }\n    return router;\n  }\n  if (url === '#' || url === '') {\n    return router;\n  }\n\n  var navigateUrl = url.replace('./', '');\n  if (navigateUrl[0] !== '/' && navigateUrl.indexOf('#') !== 0) {\n    var currentPath = router.currentRoute.parentPath || router.currentRoute.path;\n    navigateUrl = ((currentPath ? (currentPath + \"/\") : '/') + navigateUrl)\n      .replace('///', '/')\n      .replace('//', '/');\n  }\n  var route;\n  if (createRoute) {\n    route = Utils.extend(router.parseRouteUrl(navigateUrl), {\n      route: Utils.extend({}, createRoute),\n    });\n  } else {\n    route = router.findMatchingRoute(navigateUrl);\n  }\n\n  if (!route) {\n    return router;\n  }\n\n  if (route.route.redirect) {\n    return redirect.call(router, 'navigate', route, navigateOptions);\n  }\n\n  var options = {};\n  if (route.route.options) {\n    Utils.extend(options, route.route.options, navigateOptions, { route: route });\n  } else {\n    Utils.extend(options, navigateOptions, { route: route });\n  }\n  ('popup popover sheet loginScreen actions customModal').split(' ').forEach(function (modalLoadProp) {\n    if (route.route[modalLoadProp]) {\n      router.modalLoad(modalLoadProp, route, options);\n    }\n  });\n  ('url content component pageName el componentUrl template templateUrl').split(' ').forEach(function (pageLoadProp) {\n    if (route.route[pageLoadProp]) {\n      router.load(( obj = {}, obj[pageLoadProp] = route.route[pageLoadProp], obj ), options);\n    }\n  });\n  // Async\n  function asyncResolve(resolveParams, resolveOptions) {\n    router.allowPageChange = false;\n    var resolvedAsModal = false;\n    ('popup popover sheet loginScreen actions customModal').split(' ').forEach(function (modalLoadProp) {\n      if (resolveParams[modalLoadProp]) {\n        resolvedAsModal = true;\n        var modalRoute = Utils.extend({}, route, { route: resolveParams });\n        router.allowPageChange = true;\n        router.modalLoad(modalLoadProp, modalRoute, Utils.extend(options, resolveOptions));\n      }\n    });\n    if (resolvedAsModal) { return; }\n    router.load(resolveParams, Utils.extend(options, resolveOptions), true);\n  }\n  function asyncReject() {\n    router.allowPageChange = true;\n  }\n  if (route.route.async) {\n    router.allowPageChange = false;\n\n    route.route.async.call(router, route, router.currentRoute, asyncResolve, asyncReject);\n  }\n  // Retur Router\n  return router;\n}\n\nfunction tabLoad(tabRoute, loadOptions) {\n  if ( loadOptions === void 0 ) loadOptions = {};\n\n  var router = this;\n  var options = Utils.extend({\n    animate: router.params.animate,\n    pushState: true,\n    history: true,\n    on: {},\n  }, loadOptions);\n\n  if (options.route) {\n    // Set Route\n    if (options.route !== router.currentRoute) {\n      router.currentRoute = options.route;\n    }\n\n    // Update Browser History\n    if (router.params.pushState && options.pushState && !options.reloadPrevious) {\n      History.replace(\n        router.view.id,\n        {\n          url: options.route.url,\n        },\n        (router.params.pushStateRoot || '') + router.params.pushStateSeparator + options.route.url\n      );\n    }\n\n    // Update Router History\n    if (options.history) {\n      router.history[router.history.length - 1] = options.route.url;\n      router.saveHistory();\n    }\n  }\n\n  // Show Tab\n  var $currentPageEl = $$1$1(router.currentPageEl);\n  var tabEl;\n  if ($currentPageEl.length && $currentPageEl.find((\"#\" + (tabRoute.id))).length) {\n    tabEl = $currentPageEl.find((\"#\" + (tabRoute.id))).eq(0);\n  } else if (router.view.selector) {\n    tabEl = (router.view.selector) + \" #\" + (tabRoute.id);\n  } else {\n    tabEl = \"#\" + (tabRoute.id);\n  }\n  var tabShowResult = router.app.tab.show({\n    tabEl: tabEl,\n    animate: options.animate,\n    tabRoute: options.route,\n  });\n\n  var $newTabEl = tabShowResult.$newTabEl;\n  var $oldTabEl = tabShowResult.$oldTabEl;\n  var animated = tabShowResult.animated;\n  var onTabsChanged = tabShowResult.onTabsChanged;\n\n  if ($newTabEl && $newTabEl.parents('.page').length > 0 && options.route) {\n    var tabParentPageData = $newTabEl.parents('.page')[0].f7Page;\n    if (tabParentPageData && options.route) {\n      tabParentPageData.route = options.route;\n    }\n  }\n\n  // Load Tab Content\n  var url = tabRoute.url;\n  var content = tabRoute.content;\n  var el = tabRoute.el;\n  var template = tabRoute.template;\n  var templateUrl = tabRoute.templateUrl;\n  var component = tabRoute.component;\n  var componentUrl = tabRoute.componentUrl;\n\n  function onTabLoaded(contentEl) {\n    // Remove theme elements\n    router.removeThemeElements($newTabEl);\n\n    var tabEventTarget = $newTabEl;\n    if (typeof contentEl !== 'string') { tabEventTarget = $$1$1(contentEl); }\n\n    tabEventTarget.trigger('tab:init tab:mounted', tabRoute);\n    router.emit('tabInit tabMounted', $newTabEl[0], tabRoute);\n\n    if ($oldTabEl && router.params.unloadTabContent) {\n      if (animated) {\n        onTabsChanged(function () {\n          router.tabRemove($oldTabEl, $newTabEl, tabRoute);\n        });\n      } else {\n        router.tabRemove($oldTabEl, $newTabEl, tabRoute);\n      }\n    }\n  }\n  if (!router.params.unloadTabContent) {\n    if ($newTabEl[0].f7RouterTabLoaded) { return; }\n  }\n\n  var on = tabRoute.on; if ( on === void 0 ) on = {};\n  var once = tabRoute.once; if ( once === void 0 ) once = {};\n  if (options.on) {\n    Utils.extend(on, options.on);\n  }\n  if (options.once) {\n    Utils.extend(once, options.once);\n  }\n\n  // Component/Template Callbacks\n  function resolve(contentEl) {\n    if (!contentEl) { return; }\n    if (typeof contentEl === 'string') {\n      $newTabEl.html(contentEl);\n    } else {\n      $newTabEl.html('');\n      if (contentEl.f7Component) {\n        contentEl.f7Component.mount(function (componentEl) {\n          $newTabEl.append(componentEl);\n        });\n      } else {\n        $newTabEl.append(contentEl);\n      }\n    }\n    if (!router.params.unloadTabContent) {\n      $newTabEl[0].f7RouterTabLoaded = true;\n    }\n    onTabLoaded(contentEl);\n  }\n  function reject() {\n    router.allowPageChange = true;\n    return router;\n  }\n\n  if (content) {\n    resolve(content);\n  } else if (template || templateUrl) {\n    try {\n      router.tabTemplateLoader(template, templateUrl, options, resolve, reject);\n    } catch (err) {\n      router.allowPageChange = true;\n      throw err;\n    }\n  } else if (el) {\n    resolve(el);\n  } else if (component || componentUrl) {\n    // Load from component (F7/Vue/React/...)\n    try {\n      router.tabComponentLoader($newTabEl[0], component, componentUrl, options, resolve, reject);\n    } catch (err) {\n      router.allowPageChange = true;\n      throw err;\n    }\n  } else if (url) {\n    // Load using XHR\n    if (router.xhr) {\n      router.xhr.abort();\n      router.xhr = false;\n    }\n    router.xhrRequest(url, options)\n      .then(function (tabContent) {\n        resolve(tabContent);\n      })\n      .catch(function () {\n        router.allowPageChange = true;\n      });\n  }\n}\nfunction tabRemove($oldTabEl, $newTabEl, tabRoute) {\n  var router = this;\n  $oldTabEl.trigger('tab:beforeremove', tabRoute);\n  router.emit('tabBeforeRemove', $oldTabEl[0], $newTabEl[0], tabRoute);\n  $oldTabEl.children().each(function (index, tabChild) {\n    if (tabChild.f7Component) {\n      tabChild.f7Component.destroy();\n    }\n  });\n  router.removeTabContent($oldTabEl[0], tabRoute);\n}\n\nfunction modalLoad(modalType, route, loadOptions) {\n  if ( loadOptions === void 0 ) loadOptions = {};\n\n  var router = this;\n  var app = router.app;\n  var options = Utils.extend({\n    animate: router.params.animate,\n    pushState: true,\n    history: true,\n    on: {},\n  }, loadOptions);\n\n  var modalParams = route.route[modalType];\n  var modalRoute = route.route;\n\n  // Load Modal Props\n  var url = modalParams.url;\n  var template = modalParams.template;\n  var templateUrl = modalParams.templateUrl;\n  var component = modalParams.component;\n  var componentUrl = modalParams.componentUrl;\n\n  function onModalLoaded() {\n    // Create Modal\n    var modal = app[modalType].create(modalParams);\n    modalRoute.modalInstance = modal;\n\n    function closeOnSwipeBack() {\n      modal.close();\n    }\n    modal.on('modalOpen', function () {\n      router.once('swipeBackMove', closeOnSwipeBack);\n    });\n    modal.on('modalClose', function () {\n      router.off('swipeBackMove', closeOnSwipeBack);\n      if (!modal.closeByRouter) {\n        router.back();\n      }\n    });\n\n    modal.on('modalClosed', function () {\n      modal.$el.trigger(((modalType.toLowerCase()) + \":beforeremove\"), route, modal);\n      modal.emit((\"modalBeforeRemove \" + modalType + \"BeforeRemove\"), modal.el, route, modal);\n      var modalComponent = modal.el.f7Component;\n      if (modalComponent) {\n        modalComponent.destroy();\n      }\n      Utils.nextTick(function () {\n        if (modalComponent) {\n          router.removeModal(modal.el);\n        }\n        modal.destroy();\n        delete modalRoute.modalInstance;\n      });\n    });\n\n    if (options.route) {\n      // Update Browser History\n      if (router.params.pushState && options.pushState) {\n        History.push(\n          router.view.id,\n          {\n            url: options.route.url,\n            modal: modalType,\n          },\n          (router.params.pushStateRoot || '') + router.params.pushStateSeparator + options.route.url\n        );\n      }\n\n      // Set Route\n      if (options.route !== router.currentRoute) {\n        router.currentRoute = Utils.extend(options.route, { modal: modal });\n      }\n\n      // Update Router History\n      if (options.history) {\n        router.history.push(options.route.url);\n        router.saveHistory();\n      }\n    }\n\n    // Remove theme elements\n    router.removeThemeElements(modal.el);\n\n    // Emit events\n    modal.$el.trigger(((modalType.toLowerCase()) + \":init \" + (modalType.toLowerCase()) + \":mounted\"), route, modal);\n    router.emit((\"modalInit \" + modalType + \"Init \" + modalType + \"Mounted\"), modal.el, route, modal);\n    // Open\n    modal.open();\n  }\n\n  // Component/Template Callbacks\n  function resolve(contentEl) {\n    if (contentEl) {\n      if (typeof contentEl === 'string') {\n        modalParams.content = contentEl;\n      } else if (contentEl.f7Component) {\n        contentEl.f7Component.mount(function (componentEl) {\n          modalParams.el = componentEl;\n          app.root.append(componentEl);\n        });\n      } else {\n        modalParams.el = contentEl;\n      }\n      onModalLoaded();\n    }\n  }\n  function reject() {\n    router.allowPageChange = true;\n    return router;\n  }\n\n  if (template || templateUrl) {\n    try {\n      router.modalTemplateLoader(template, templateUrl, options, resolve, reject);\n    } catch (err) {\n      router.allowPageChange = true;\n      throw err;\n    }\n  } else if (component || componentUrl) {\n    // Load from component (F7/Vue/React/...)\n    try {\n      router.modalComponentLoader(app.root[0], component, componentUrl, options, resolve, reject);\n    } catch (err) {\n      router.allowPageChange = true;\n      throw err;\n    }\n  } else if (url) {\n    // Load using XHR\n    if (router.xhr) {\n      router.xhr.abort();\n      router.xhr = false;\n    }\n    router.xhrRequest(url, options)\n      .then(function (modalContent) {\n        modalParams.content = modalContent;\n        onModalLoaded();\n      })\n      .catch(function () {\n        router.allowPageChange = true;\n      });\n  } else {\n    onModalLoaded();\n  }\n}\nfunction modalRemove(modal) {\n  Utils.extend(modal, { closeByRouter: true });\n  modal.close();\n}\n\nfunction backward(el, backwardOptions) {\n  var router = this;\n  var app = router.app;\n  var view = router.view;\n\n  var options = Utils.extend({\n    animate: router.params.animate,\n    pushState: true,\n  }, backwardOptions);\n\n  var dynamicNavbar = router.dynamicNavbar;\n  var separateNavbar = router.separateNavbar;\n\n  var $newPage = $$1$1(el);\n  var $oldPage = router.$el.children('.page-current');\n\n  if ($newPage.length) {\n    // Remove theme elements\n    router.removeThemeElements($newPage);\n  }\n\n  var $navbarEl;\n  var $newNavbarInner;\n  var $oldNavbarInner;\n\n  if (dynamicNavbar) {\n    $newNavbarInner = $newPage.children('.navbar').children('.navbar-inner');\n    if (separateNavbar) {\n      $navbarEl = router.$navbarEl;\n      if ($newNavbarInner.length > 0) {\n        $newPage.children('.navbar').remove();\n      }\n      if ($newNavbarInner.length === 0 && $newPage[0].f7Page) {\n        // Try from pageData\n        $newNavbarInner = $newPage[0].f7Page.$navbarEl;\n      }\n      $oldNavbarInner = $navbarEl.find('.navbar-current');\n    } else {\n      $oldNavbarInner = $oldPage.children('.navbar').children('.navbar-inner');\n    }\n  }\n\n  router.allowPageChange = false;\n  if ($newPage.length === 0 || $oldPage.length === 0) {\n    router.allowPageChange = true;\n    return router;\n  }\n\n  // Remove theme elements\n  router.removeThemeElements($newPage);\n\n  // New Page\n  $newPage\n    .addClass('page-previous')\n    .removeClass('stacked')\n    .removeAttr('aria-hidden');\n\n  if (dynamicNavbar && $newNavbarInner.length > 0) {\n    $newNavbarInner\n      .addClass('navbar-previous')\n      .removeClass('stacked')\n      .removeAttr('aria-hidden');\n  }\n\n\n  // Remove previous page in case of \"forced\"\n  var backIndex;\n  if (options.force) {\n    if ($oldPage.prev('.page-previous:not(.stacked)').length > 0 || $oldPage.prev('.page-previous').length === 0) {\n      if (router.history.indexOf(options.route.url) >= 0) {\n        backIndex = router.history.length - router.history.indexOf(options.route.url) - 1;\n        router.history = router.history.slice(0, router.history.indexOf(options.route.url) + 2);\n        view.history = router.history;\n      } else if (router.history[[router.history.length - 2]]) {\n        router.history[router.history.length - 2] = options.route.url;\n      } else {\n        router.history.unshift(router.url);\n      }\n\n      if (backIndex && router.params.stackPages) {\n        $oldPage.prevAll('.page-previous').each(function (index, pageToRemove) {\n          var $pageToRemove = $$1$1(pageToRemove);\n          var $navbarToRemove;\n          if (separateNavbar) {\n            // $navbarToRemove = $oldNavbarInner.prevAll('.navbar-previous').eq(index);\n            $navbarToRemove = $$1$1(app.navbar.getElByPage($pageToRemove));\n          }\n          if ($pageToRemove[0] !== $newPage[0] && $pageToRemove.index() > $newPage.index()) {\n            if (router.initialPages.indexOf($pageToRemove[0]) >= 0) {\n              $pageToRemove.addClass('stacked');\n              if (separateNavbar) {\n                $navbarToRemove.addClass('stacked');\n              }\n            } else {\n              router.pageCallback('beforeRemove', $pageToRemove, $navbarToRemove, 'previous', undefined, options);\n              router.removePage($pageToRemove);\n              if (separateNavbar && $navbarToRemove.length > 0) {\n                router.removeNavbar($navbarToRemove);\n              }\n            }\n          }\n        });\n      } else {\n        var $pageToRemove = $oldPage.prev('.page-previous:not(.stacked)');\n        var $navbarToRemove;\n        if (separateNavbar) {\n          // $navbarToRemove = $oldNavbarInner.prev('.navbar-inner:not(.stacked)');\n          $navbarToRemove = $$1$1(app.navbar.getElByPage($pageToRemove));\n        }\n        if (router.params.stackPages && router.initialPages.indexOf($pageToRemove[0]) >= 0) {\n          $pageToRemove.addClass('stacked');\n          $navbarToRemove.addClass('stacked');\n        } else if ($pageToRemove.length > 0) {\n          router.pageCallback('beforeRemove', $pageToRemove, $navbarToRemove, 'previous', undefined, options);\n          router.removePage($pageToRemove);\n          if (separateNavbar && $navbarToRemove.length) {\n            router.removeNavbar($navbarToRemove);\n          }\n        }\n      }\n    }\n  }\n\n  // Insert new page\n  var newPageInDom = $newPage.parents(document).length > 0;\n  var f7Component = $newPage[0].f7Component;\n\n  function insertPage() {\n    if ($newPage.next($oldPage).length === 0) {\n      if (!newPageInDom && f7Component) {\n        f7Component.mount(function (componentEl) {\n          $$1$1(componentEl).insertBefore($oldPage);\n        });\n      } else {\n        $newPage.insertBefore($oldPage);\n      }\n    }\n    if (separateNavbar && $newNavbarInner.length) {\n      $newNavbarInner.insertBefore($oldNavbarInner);\n      if ($oldNavbarInner.length > 0) {\n        $newNavbarInner.insertBefore($oldNavbarInner);\n      } else {\n        if (!router.$navbarEl.parents(document).length) {\n          router.$el.prepend(router.$navbarEl);\n        }\n        $navbarEl.append($newNavbarInner);\n      }\n    }\n    if (!newPageInDom) {\n      router.pageCallback('mounted', $newPage, $newNavbarInner, 'previous', 'current', options, $oldPage);\n    }\n  }\n\n  if (options.preload) {\n    // Insert Page\n    insertPage();\n    // Page init and before init events\n    router.pageCallback('init', $newPage, $newNavbarInner, 'previous', 'current', options, $oldPage);\n    if ($newPage.prevAll('.page-previous:not(.stacked)').length > 0) {\n      $newPage.prevAll('.page-previous:not(.stacked)').each(function (index, pageToRemove) {\n        var $pageToRemove = $$1$1(pageToRemove);\n        var $navbarToRemove;\n        if (separateNavbar) {\n          // $navbarToRemove = $newNavbarInner.prevAll('.navbar-previous:not(.stacked)').eq(index);\n          $navbarToRemove = $$1$1(app.navbar.getElByPage($pageToRemove));\n        }\n        if (router.params.stackPages && router.initialPages.indexOf(pageToRemove) >= 0) {\n          $pageToRemove.addClass('stacked');\n          if (separateNavbar) {\n            $navbarToRemove.addClass('stacked');\n          }\n        } else {\n          router.pageCallback('beforeRemove', $pageToRemove, $navbarToRemove, 'previous', undefined);\n          router.removePage($pageToRemove);\n          if (separateNavbar && $navbarToRemove.length) {\n            router.removeNavbar($navbarToRemove);\n          }\n        }\n      });\n    }\n    router.allowPageChange = true;\n    return router;\n  }\n\n  // History State\n  if (router.params.pushState && options.pushState) {\n    if (backIndex) { History.go(-backIndex); }\n    else { History.back(); }\n  }\n\n  // Update History\n  if (router.history.length === 1) {\n    router.history.unshift(router.url);\n  }\n  router.history.pop();\n  router.saveHistory();\n\n  // Current Page & Navbar\n  router.currentPageEl = $newPage[0];\n  if (dynamicNavbar && $newNavbarInner.length) {\n    router.currentNavbarEl = $newNavbarInner[0];\n  } else {\n    delete router.currentNavbarEl;\n  }\n\n  // Current Route\n  router.currentRoute = options.route;\n\n  // Insert Page\n  insertPage();\n\n  // Load Tab\n  if (options.route.route.tab) {\n    router.tabLoad(options.route.route.tab, Utils.extend({}, options, {\n      history: false,\n      pushState: false,\n    }));\n  }\n\n  // Page init and before init events\n  router.pageCallback('init', $newPage, $newNavbarInner, 'previous', 'current', options, $oldPage);\n\n  // Before animation callback\n  router.pageCallback('beforeIn', $newPage, $newNavbarInner, 'previous', 'current', options);\n  router.pageCallback('beforeOut', $oldPage, $oldNavbarInner, 'current', 'next', options);\n\n  // Animation\n  function afterAnimation() {\n    // Set classes\n    var pageClasses = 'page-previous page-current page-next';\n    var navbarClasses = 'navbar-previous navbar-current navbar-next';\n    $newPage.removeClass(pageClasses).addClass('page-current').removeAttr('aria-hidden');\n    $oldPage.removeClass(pageClasses).addClass('page-next').attr('aria-hidden', 'true');\n    if (dynamicNavbar) {\n      $newNavbarInner.removeClass(navbarClasses).addClass('navbar-current').removeAttr('aria-hidden');\n      $oldNavbarInner.removeClass(navbarClasses).addClass('navbar-next').attr('aria-hidden', 'true');\n    }\n\n    // After animation event\n    router.pageCallback('afterIn', $newPage, $newNavbarInner, 'previous', 'current', options);\n    router.pageCallback('afterOut', $oldPage, $oldNavbarInner, 'current', 'next', options);\n\n    // Remove Old Page\n    if (router.params.stackPages && router.initialPages.indexOf($oldPage[0]) >= 0) {\n      $oldPage.addClass('stacked');\n      if (separateNavbar) {\n        $oldNavbarInner.addClass('stacked');\n      }\n    } else {\n      router.pageCallback('beforeRemove', $oldPage, $oldNavbarInner, 'next', undefined, options);\n      router.removePage($oldPage);\n      if (separateNavbar && $oldNavbarInner.length) {\n        router.removeNavbar($oldNavbarInner);\n      }\n    }\n\n    router.allowPageChange = true;\n    router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n\n    // Preload previous page\n    var preloadPreviousPage = app.theme === 'ios' ? (router.params.preloadPreviousPage || router.params.iosSwipeBack) : router.params.preloadPreviousPage;\n    if (preloadPreviousPage) {\n      router.back(router.history[router.history.length - 2], { preload: true });\n    }\n    if (router.params.pushState) {\n      History.clearRouterQueue();\n    }\n  }\n\n  function setPositionClasses() {\n    var pageClasses = 'page-previous page-current page-next';\n    var navbarClasses = 'navbar-previous navbar-current navbar-next';\n    $oldPage.removeClass(pageClasses).addClass('page-current');\n    $newPage.removeClass(pageClasses).addClass('page-previous').removeAttr('aria-hidden');\n    if (dynamicNavbar) {\n      $oldNavbarInner.removeClass(navbarClasses).addClass('navbar-current');\n      $newNavbarInner.removeClass(navbarClasses).addClass('navbar-previous').removeAttr('aria-hidden');\n    }\n  }\n\n  if (options.animate) {\n    setPositionClasses();\n    router.animate($oldPage, $newPage, $oldNavbarInner, $newNavbarInner, 'backward', function () {\n      afterAnimation();\n    });\n  } else {\n    afterAnimation();\n  }\n\n  return router;\n}\nfunction loadBack(backParams, backOptions, ignorePageChange) {\n  var router = this;\n\n  if (!router.allowPageChange && !ignorePageChange) { return router; }\n  var params = backParams;\n  var options = backOptions;\n  var url = params.url;\n  var content = params.content;\n  var el = params.el;\n  var pageName = params.pageName;\n  var template = params.template;\n  var templateUrl = params.templateUrl;\n  var component = params.component;\n  var componentUrl = params.componentUrl;\n\n  if (\n    options.route.url &&\n    router.url === options.route.url &&\n    !(options.reloadCurrent || options.reloadPrevious) &&\n    !router.params.allowDuplicateUrls\n  ) {\n    return false;\n  }\n\n  if (!options.route && url) {\n    options.route = router.parseRouteUrl(url);\n  }\n\n  // Component Callbacks\n  function resolve(pageEl, newOptions) {\n    return router.backward(pageEl, Utils.extend(options, newOptions));\n  }\n  function reject() {\n    router.allowPageChange = true;\n    return router;\n  }\n\n  if (url || templateUrl || componentUrl) {\n    router.allowPageChange = false;\n  }\n\n  // Proceed\n  if (content) {\n    router.backward(router.getPageEl(content), options);\n  } else if (template || templateUrl) {\n    // Parse template and send page element\n    try {\n      router.pageTemplateLoader(template, templateUrl, options, resolve, reject);\n    } catch (err) {\n      router.allowPageChange = true;\n      throw err;\n    }\n  } else if (el) {\n    // Load page from specified HTMLElement or by page name in pages container\n    router.backward(router.getPageEl(el), options);\n  } else if (pageName) {\n    // Load page by page name in pages container\n    router.backward(router.$el.children((\".page[data-name=\\\"\" + pageName + \"\\\"]\")).eq(0), options);\n  } else if (component || componentUrl) {\n    // Load from component (F7/Vue/React/...)\n    try {\n      router.pageComponentLoader(router.el, component, componentUrl, options, resolve, reject);\n    } catch (err) {\n      router.allowPageChange = true;\n      throw err;\n    }\n  } else if (url) {\n    // Load using XHR\n    if (router.xhr) {\n      router.xhr.abort();\n      router.xhr = false;\n    }\n    router.xhrRequest(url, options)\n      .then(function (pageContent) {\n        router.backward(router.getPageEl(pageContent), options);\n      })\n      .catch(function () {\n        router.allowPageChange = true;\n      });\n  }\n  return router;\n}\nfunction back() {\n  var obj;\n\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n  var navigateUrl;\n  var navigateOptions;\n  if (typeof args[0] === 'object') {\n    navigateOptions = args[0] || {};\n  } else {\n    navigateUrl = args[0];\n    navigateOptions = args[1] || {};\n  }\n\n  var router = this;\n  var app = router.app;\n  if (!router.view) {\n    app.views.main.router.back(navigateUrl, navigateOptions);\n    return router;\n  }\n\n  var currentRouteIsModal = router.currentRoute.modal;\n  var modalType;\n  if (!currentRouteIsModal) {\n    ('popup popover sheet loginScreen actions customModal').split(' ').forEach(function (modalLoadProp) {\n      if (router.currentRoute.route[modalLoadProp]) {\n        currentRouteIsModal = true;\n        modalType = modalLoadProp;\n      }\n    });\n  }\n  if (currentRouteIsModal) {\n    var modalToClose = router.currentRoute.modal ||\n                         router.currentRoute.route.modalInstance ||\n                         app[modalType].get();\n    var previousUrl = router.history[router.history.length - 2];\n    var previousRoute = router.findMatchingRoute(previousUrl);\n    if (!previousRoute && previousUrl) {\n      previousRoute = {\n        url: previousUrl,\n        path: previousUrl.split('?')[0],\n        query: Utils.parseUrlQuery(previousUrl),\n        route: {\n          path: previousUrl.split('?')[0],\n          url: previousUrl,\n        },\n      };\n    }\n    if (!previousRoute || !modalToClose) {\n      return router;\n    }\n    if (router.params.pushState && navigateOptions.pushState !== false) {\n      History.back();\n    }\n    router.currentRoute = previousRoute;\n    router.history.pop();\n    router.saveHistory();\n    router.modalRemove(modalToClose);\n    return router;\n  }\n  var $previousPage = router.$el.children('.page-current').prevAll('.page-previous').eq(0);\n  if (!navigateOptions.force && $previousPage.length > 0) {\n    if (router.params.pushState && $previousPage[0].f7Page && router.history[router.history.length - 2] !== $previousPage[0].f7Page.route.url) {\n      router.back(router.history[router.history.length - 2], Utils.extend(navigateOptions, { force: true }));\n      return router;\n    }\n    router.loadBack({ el: $previousPage }, Utils.extend(navigateOptions, {\n      route: $previousPage[0].f7Page.route,\n    }));\n    return router;\n  }\n\n  // Navigate URL\n  if (navigateUrl === '#') {\n    navigateUrl = undefined;\n  }\n  if (navigateUrl && navigateUrl[0] !== '/' && navigateUrl.indexOf('#') !== 0) {\n    navigateUrl = ((router.path || '/') + navigateUrl).replace('//', '/');\n  }\n  if (!navigateUrl && router.history.length > 1) {\n    navigateUrl = router.history[router.history.length - 2];\n  }\n\n  // Find route to load\n  var route = router.findMatchingRoute(navigateUrl);\n  if (!route) {\n    if (navigateUrl) {\n      route = {\n        url: navigateUrl,\n        path: navigateUrl.split('?')[0],\n        query: Utils.parseUrlQuery(navigateUrl),\n        route: {\n          path: navigateUrl.split('?')[0],\n          url: navigateUrl,\n        },\n      };\n    }\n  }\n  if (!route) {\n    return router;\n  }\n\n  if (route.route.redirect) {\n    return redirect.call(router, 'back', route, navigateOptions);\n  }\n\n  var options = {};\n  if (route.route.options) {\n    Utils.extend(options, route.route.options, navigateOptions, { route: route });\n  } else {\n    Utils.extend(options, navigateOptions, { route: route });\n  }\n\n  if (options.force && router.params.stackPages) {\n    router.$el.children('.page-previous.stacked').each(function (index, pageEl) {\n      if (pageEl.f7Page && pageEl.f7Page.route && pageEl.f7Page.route.url === route.url) {\n        router.loadBack({ el: pageEl }, options);\n      }\n    });\n  }\n\n  ('url content component pageName el componentUrl template templateUrl').split(' ').forEach(function (pageLoadProp) {\n    if (route.route[pageLoadProp]) {\n      router.loadBack(( obj = {}, obj[pageLoadProp] = route.route[pageLoadProp], obj ), options);\n    }\n  });\n  // Async\n  function asyncResolve(resolveParams, resolveOptions) {\n    router.allowPageChange = false;\n    router.loadBack(resolveParams, Utils.extend(options, resolveOptions), true);\n  }\n  function asyncReject() {\n    router.allowPageChange = true;\n  }\n  if (route.route.async) {\n    router.allowPageChange = false;\n\n    route.route.async.call(router, route, router.currentRoute, asyncResolve, asyncReject);\n  }\n  // Return Router\n  return router;\n}\n\nvar Router$1 = (function (Framework7Class$$1) {\n  function Router(app, view) {\n    Framework7Class$$1.call(this, {}, [typeof view === 'undefined' ? app : view]);\n    var router = this;\n\n    // Is App Router\n    router.isAppRouter = typeof view === 'undefined';\n\n    if (router.isAppRouter) {\n      // App Router\n      Utils.extend(false, router, {\n        app: app,\n        params: app.params.view,\n        routes: app.routes || [],\n        cache: app.cache,\n      });\n    } else {\n      // View Router\n      Utils.extend(false, router, {\n        app: app,\n        view: view,\n        viewId: view.id,\n        params: view.params,\n        routes: view.routes,\n        $el: view.$el,\n        el: view.el,\n        $navbarEl: view.$navbarEl,\n        navbarEl: view.navbarEl,\n        history: view.history,\n        scrollHistory: view.scrollHistory,\n        cache: app.cache,\n        dynamicNavbar: app.theme === 'ios' && view.params.iosDynamicNavbar,\n        separateNavbar: app.theme === 'ios' && view.params.iosDynamicNavbar && view.params.iosSeparateDynamicNavbar,\n        initialPages: [],\n        initialNavbars: [],\n      });\n    }\n\n    // Install Modules\n    router.useModules();\n\n    // Temporary Dom\n    router.tempDom = document.createElement('div');\n\n    // AllowPageChage\n    router.allowPageChange = true;\n\n    // Current Route\n    var currentRoute = {};\n    var previousRoute = {};\n    Object.defineProperty(router, 'currentRoute', {\n      enumerable: true,\n      configurable: true,\n      set: function set(newRoute) {\n        if ( newRoute === void 0 ) newRoute = {};\n\n        previousRoute = Utils.extend({}, currentRoute);\n        currentRoute = newRoute;\n        if (!currentRoute) { return; }\n        router.url = currentRoute.url;\n        router.emit('routeChange', newRoute, previousRoute, router);\n      },\n      get: function get() {\n        return currentRoute;\n      },\n    });\n    Object.defineProperty(router, 'previousRoute', {\n      enumerable: true,\n      configurable: true,\n      get: function get() {\n        return previousRoute;\n      },\n      set: function set(newRoute) {\n        previousRoute = newRoute;\n      },\n    });\n\n    Utils.extend(router, {\n      // Load\n      forward: forward,\n      load: load,\n      navigate: navigate,\n      refreshPage: refreshPage,\n      // Tab\n      tabLoad: tabLoad,\n      tabRemove: tabRemove,\n      // Modal\n      modalLoad: modalLoad,\n      modalRemove: modalRemove,\n      // Back\n      backward: backward,\n      loadBack: loadBack,\n      back: back,\n    });\n\n    return router;\n  }\n\n  if ( Framework7Class$$1 ) Router.__proto__ = Framework7Class$$1;\n  Router.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n  Router.prototype.constructor = Router;\n  Router.prototype.animatableNavElements = function animatableNavElements (newNavbarInner, oldNavbarInner) {\n    var router = this;\n    var dynamicNavbar = router.dynamicNavbar;\n    var animateIcon = router.params.iosAnimateNavbarBackIcon;\n\n    var newNavEls;\n    var oldNavEls;\n    function animatableNavEl(el, navbarInner) {\n      var $el = $$1$1(el);\n      var isSliding = $el.hasClass('sliding') || navbarInner.hasClass('sliding');\n      var isSubnavbar = $el.hasClass('subnavbar');\n      var needsOpacityTransition = isSliding ? !isSubnavbar : true;\n      var hasIcon = isSliding && animateIcon && $el.hasClass('left') && $el.find('.back .icon').length > 0;\n      var $iconEl;\n      if (hasIcon) { $iconEl = $el.find('.back .icon'); }\n      return {\n        $el: $el,\n        $iconEl: $iconEl,\n        hasIcon: hasIcon,\n        leftOffset: $el[0].f7NavbarLeftOffset,\n        rightOffset: $el[0].f7NavbarRightOffset,\n        isSliding: isSliding,\n        isSubnavbar: isSubnavbar,\n        needsOpacityTransition: needsOpacityTransition,\n      };\n    }\n    if (dynamicNavbar) {\n      newNavEls = [];\n      oldNavEls = [];\n      newNavbarInner.children('.left, .right, .title, .subnavbar').each(function (index, navEl) {\n        newNavEls.push(animatableNavEl(navEl, newNavbarInner));\n      });\n      oldNavbarInner.children('.left, .right, .title, .subnavbar').each(function (index, navEl) {\n        oldNavEls.push(animatableNavEl(navEl, oldNavbarInner));\n      });\n      [oldNavEls, newNavEls].forEach(function (navEls) {\n        navEls.forEach(function (navEl) {\n          var n = navEl;\n          var isSliding = navEl.isSliding;\n          var $el = navEl.$el;\n          var otherEls = navEls === oldNavEls ? newNavEls : oldNavEls;\n          if (!(isSliding && $el.hasClass('title') && otherEls)) { return; }\n          otherEls.forEach(function (otherNavEl) {\n            if (otherNavEl.$el.hasClass('left') && otherNavEl.hasIcon) {\n              var iconTextEl = otherNavEl.$el.find('.back span')[0];\n              n.leftOffset += iconTextEl ? iconTextEl.offsetLeft : 0;\n            }\n          });\n        });\n      });\n    }\n\n    return { newNavEls: newNavEls, oldNavEls: oldNavEls };\n  };\n  Router.prototype.animateWithCSS = function animateWithCSS (oldPage, newPage, oldNavbarInner, newNavbarInner, direction, callback) {\n    var router = this;\n    var dynamicNavbar = router.dynamicNavbar;\n    var separateNavbar = router.separateNavbar;\n    var ios = router.app.theme === 'ios';\n    // Router Animation class\n    var routerTransitionClass = \"router-transition-\" + direction + \" router-transition-css-\" + direction;\n\n    var newNavEls;\n    var oldNavEls;\n    var navbarWidth = 0;\n\n    if (ios && dynamicNavbar) {\n      if (!separateNavbar) {\n        navbarWidth = newNavbarInner[0].offsetWidth;\n      }\n      var navEls = router.animatableNavElements(newNavbarInner, oldNavbarInner);\n      newNavEls = navEls.newNavEls;\n      oldNavEls = navEls.oldNavEls;\n    }\n\n    function animateNavbars(progress) {\n      if (ios && dynamicNavbar) {\n        newNavEls.forEach(function (navEl) {\n          var $el = navEl.$el;\n          var offset = direction === 'forward' ? navEl.rightOffset : navEl.leftOffset;\n          if (navEl.isSliding) {\n            $el.transform((\"translate3d(\" + (offset * (1 - progress)) + \"px,0,0)\"));\n          }\n          if (navEl.hasIcon) {\n            if (direction === 'forward') {\n              navEl.$iconEl.transform((\"translate3d(\" + ((-offset - navbarWidth) * (1 - progress)) + \"px,0,0)\"));\n            } else {\n              navEl.$iconEl.transform((\"translate3d(\" + ((-offset + (navbarWidth / 5)) * (1 - progress)) + \"px,0,0)\"));\n            }\n          }\n        });\n        oldNavEls.forEach(function (navEl) {\n          var $el = navEl.$el;\n          var offset = direction === 'forward' ? navEl.leftOffset : navEl.rightOffset;\n          if (navEl.isSliding) {\n            $el.transform((\"translate3d(\" + (offset * (progress)) + \"px,0,0)\"));\n          }\n          if (navEl.hasIcon) {\n            if (direction === 'forward') {\n              navEl.$iconEl.transform((\"translate3d(\" + ((-offset + (navbarWidth / 5)) * (progress)) + \"px,0,0)\"));\n            } else {\n              navEl.$iconEl.transform((\"translate3d(\" + ((-offset - navbarWidth) * (progress)) + \"px,0,0)\"));\n            }\n          }\n        });\n      }\n    }\n\n    // AnimationEnd Callback\n    function onDone() {\n      if (router.dynamicNavbar) {\n        if (newNavbarInner.hasClass('sliding')) {\n          newNavbarInner.find('.title, .left, .right, .left .icon, .subnavbar').transform('');\n        } else {\n          newNavbarInner.find('.sliding').transform('');\n        }\n        if (oldNavbarInner.hasClass('sliding')) {\n          oldNavbarInner.find('.title, .left, .right, .left .icon, .subnavbar').transform('');\n        } else {\n          oldNavbarInner.find('.sliding').transform('');\n        }\n      }\n      router.$el.removeClass(routerTransitionClass);\n      if (callback) { callback(); }\n    }\n\n    (direction === 'forward' ? newPage : oldPage).animationEnd(function () {\n      onDone();\n    });\n\n    // Animate\n    if (dynamicNavbar) {\n      // Prepare Navbars\n      animateNavbars(0);\n      Utils.nextTick(function () {\n        // Add class, start animation\n        animateNavbars(1);\n        router.$el.addClass(routerTransitionClass);\n      });\n    } else {\n      // Add class, start animation\n      router.$el.addClass(routerTransitionClass);\n    }\n  };\n  Router.prototype.animateWithJS = function animateWithJS (oldPage, newPage, oldNavbarInner, newNavbarInner, direction, callback) {\n    var router = this;\n    var dynamicNavbar = router.dynamicNavbar;\n    var separateNavbar = router.separateNavbar;\n    var ios = router.app.theme === 'ios';\n    var duration = ios ? 400 : 250;\n    var routerTransitionClass = \"router-transition-\" + direction + \" router-transition-js-\" + direction;\n\n    var startTime = null;\n    var done = false;\n\n    var newNavEls;\n    var oldNavEls;\n    var navbarWidth = 0;\n\n    if (ios && dynamicNavbar) {\n      if (!separateNavbar) {\n        navbarWidth = newNavbarInner[0].offsetWidth;\n      }\n      var navEls = router.animatableNavElements(newNavbarInner, oldNavbarInner);\n      newNavEls = navEls.newNavEls;\n      oldNavEls = navEls.oldNavEls;\n    }\n\n    var $shadowEl;\n    var $opacityEl;\n\n    if (ios) {\n      $shadowEl = $$1$1('<div class=\"page-shadow-effect\"></div>');\n      $opacityEl = $$1$1('<div class=\"page-opacity-effect\"></div>');\n\n      if (direction === 'forward') {\n        newPage.append($shadowEl);\n        oldPage.append($opacityEl);\n      } else {\n        newPage.append($opacityEl);\n        oldPage.append($shadowEl);\n      }\n    }\n    var easing = Utils.bezier(0.25, 0.1, 0.25, 1);\n\n    function onDone() {\n      newPage.transform('').css('opacity', '');\n      oldPage.transform('').css('opacity', '');\n      if (ios) {\n        $shadowEl.remove();\n        $opacityEl.remove();\n        if (dynamicNavbar) {\n          newNavEls.forEach(function (navEl) {\n            navEl.$el.transform('');\n            navEl.$el.css('opacity', '');\n          });\n          oldNavEls.forEach(function (navEl) {\n            navEl.$el.transform('');\n            navEl.$el.css('opacity', '');\n          });\n          newNavEls = [];\n          oldNavEls = [];\n        }\n      }\n\n      router.$el.removeClass(routerTransitionClass);\n\n      if (callback) { callback(); }\n    }\n\n    function render() {\n      var time = Utils.now();\n      if (!startTime) { startTime = time; }\n      var progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n      var easeProgress = easing(progress);\n\n      if (progress >= 1) {\n        done = true;\n      }\n      var inverter = router.app.rtl ? -1 : 1;\n      if (ios) {\n        if (direction === 'forward') {\n          newPage.transform((\"translate3d(\" + ((1 - easeProgress) * 100 * inverter) + \"%,0,0)\"));\n          oldPage.transform((\"translate3d(\" + (-easeProgress * 20 * inverter) + \"%,0,0)\"));\n          $shadowEl[0].style.opacity = easeProgress;\n          $opacityEl[0].style.opacity = easeProgress;\n        } else {\n          newPage.transform((\"translate3d(\" + (-(1 - easeProgress) * 20 * inverter) + \"%,0,0)\"));\n          oldPage.transform((\"translate3d(\" + (easeProgress * 100 * inverter) + \"%,0,0)\"));\n          $shadowEl[0].style.opacity = 1 - easeProgress;\n          $opacityEl[0].style.opacity = 1 - easeProgress;\n        }\n        if (dynamicNavbar) {\n          newNavEls.forEach(function (navEl) {\n            var $el = navEl.$el;\n            var offset = direction === 'forward' ? navEl.rightOffset : navEl.leftOffset;\n            if (navEl.needsOpacityTransition) {\n              $el[0].style.opacity = easeProgress;\n            }\n            if (navEl.isSliding) {\n              $el.transform((\"translate3d(\" + (offset * (1 - easeProgress)) + \"px,0,0)\"));\n            }\n            if (navEl.hasIcon) {\n              if (direction === 'forward') {\n                navEl.$iconEl.transform((\"translate3d(\" + ((-offset - navbarWidth) * (1 - easeProgress)) + \"px,0,0)\"));\n              } else {\n                navEl.$iconEl.transform((\"translate3d(\" + ((-offset + (navbarWidth / 5)) * (1 - easeProgress)) + \"px,0,0)\"));\n              }\n            }\n          });\n          oldNavEls.forEach(function (navEl) {\n            var $el = navEl.$el;\n            var offset = direction === 'forward' ? navEl.leftOffset : navEl.rightOffset;\n            if (navEl.needsOpacityTransition) {\n              $el[0].style.opacity = (1 - easeProgress);\n            }\n            if (navEl.isSliding) {\n              $el.transform((\"translate3d(\" + (offset * (easeProgress)) + \"px,0,0)\"));\n            }\n            if (navEl.hasIcon) {\n              if (direction === 'forward') {\n                navEl.$iconEl.transform((\"translate3d(\" + ((-offset + (navbarWidth / 5)) * (easeProgress)) + \"px,0,0)\"));\n              } else {\n                navEl.$iconEl.transform((\"translate3d(\" + ((-offset - navbarWidth) * (easeProgress)) + \"px,0,0)\"));\n              }\n            }\n          });\n        }\n      } else if (direction === 'forward') {\n        newPage.transform((\"translate3d(0, \" + ((1 - easeProgress) * 56) + \"px,0)\"));\n        newPage.css('opacity', easeProgress);\n      } else {\n        oldPage.transform((\"translate3d(0, \" + (easeProgress * 56) + \"px,0)\"));\n        oldPage.css('opacity', 1 - easeProgress);\n      }\n\n      if (done) {\n        onDone();\n        return;\n      }\n      Utils.nextFrame(render);\n    }\n\n    router.$el.addClass(routerTransitionClass);\n\n    Utils.nextFrame(render);\n  };\n  Router.prototype.animate = function animate () {\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n\n    // Args: oldPage, newPage, oldNavbarInner, newNavbarInner, direction, callback\n    var router = this;\n    if (router.params.animateCustom) {\n      router.params.animateCustom.apply(router, args);\n    } else if (router.params.animateWithJS) {\n      router.animateWithJS.apply(router, args);\n    } else {\n      router.animateWithCSS.apply(router, args);\n    }\n  };\n  Router.prototype.removeModal = function removeModal (modalEl) {\n    var router = this;\n    router.removeEl(modalEl);\n  };\n  // eslint-disable-next-line\n  Router.prototype.removeTabContent = function removeTabContent (tabEl) {\n    var $tabEl = $$1$1(tabEl);\n    $tabEl.html('');\n  };\n  Router.prototype.removeNavbar = function removeNavbar (el) {\n    var router = this;\n    router.removeEl(el);\n  };\n  Router.prototype.removePage = function removePage (el) {\n    var router = this;\n    router.removeEl(el);\n  };\n  Router.prototype.removeEl = function removeEl (el) {\n    if (!el) { return; }\n    var router = this;\n    var $el = $$1$1(el);\n    if ($el.length === 0) { return; }\n    if ($el[0].f7Component && $el[0].f7Component.destroy) {\n      $el[0].f7Component.destroy();\n    }\n    if (!router.params.removeElements) {\n      return;\n    }\n    if (router.params.removeElementsWithTimeout) {\n      setTimeout(function () {\n        $el.remove();\n      }, router.params.removeElementsTimeout);\n    } else {\n      $el.remove();\n    }\n  };\n  Router.prototype.getPageEl = function getPageEl (content) {\n    var router = this;\n    if (typeof content === 'string') {\n      router.tempDom.innerHTML = content;\n    } else {\n      if ($$1$1(content).hasClass('page')) {\n        return content;\n      }\n      router.tempDom.innerHTML = '';\n      $$1$1(router.tempDom).append(content);\n    }\n\n    return router.findElement('.page', router.tempDom);\n  };\n  Router.prototype.findElement = function findElement (stringSelector, container, notStacked) {\n    var router = this;\n    var view = router.view;\n    var app = router.app;\n\n    // Modals Selector\n    var modalsSelector = '.popup, .dialog, .popover, .actions-modal, .sheet-modal, .login-screen, .page';\n\n    var $container = $$1$1(container);\n    var selector = stringSelector;\n    if (notStacked) { selector += ':not(.stacked)'; }\n\n    var found = $container\n      .find(selector)\n      .filter(function (index, el) { return $$1$1(el).parents(modalsSelector).length === 0; });\n\n    if (found.length > 1) {\n      if (typeof view.selector === 'string') {\n        // Search in related view\n        found = $container.find(((view.selector) + \" \" + selector));\n      }\n      if (found.length > 1) {\n        // Search in main view\n        found = $container.find((\".\" + (app.params.viewMainClass) + \" \" + selector));\n      }\n    }\n    if (found.length === 1) { return found; }\n\n    // Try to find not stacked\n    if (!notStacked) { found = router.findElement(selector, $container, true); }\n    if (found && found.length === 1) { return found; }\n    if (found && found.length > 1) { return $$1$1(found[0]); }\n    return undefined;\n  };\n  Router.prototype.flattenRoutes = function flattenRoutes (routes) {\n    var this$1 = this;\n    if ( routes === void 0 ) routes = this.routes;\n\n    var flattenedRoutes = [];\n    routes.forEach(function (route) {\n      if ('routes' in route) {\n        var mergedPathsRoutes = route.routes.map(function (childRoute) {\n          var cRoute = Utils.extend({}, childRoute);\n          cRoute.path = (((route.path) + \"/\" + (cRoute.path))).replace('///', '/').replace('//', '/');\n          return cRoute;\n        });\n        flattenedRoutes = flattenedRoutes.concat(route, this$1.flattenRoutes(mergedPathsRoutes));\n      } else if ('tabs' in route && route.tabs) {\n        var mergedPathsRoutes$1 = route.tabs.map(function (tabRoute) {\n          var tRoute = Utils.extend({}, route, {\n            path: (((route.path) + \"/\" + (tabRoute.path))).replace('///', '/').replace('//', '/'),\n            parentPath: route.path,\n            tab: tabRoute,\n          });\n          delete tRoute.tabs;\n          return tRoute;\n        });\n        flattenedRoutes = flattenedRoutes.concat(this$1.flattenRoutes(mergedPathsRoutes$1));\n      } else {\n        flattenedRoutes.push(route);\n      }\n    });\n    return flattenedRoutes;\n  };\n  // eslint-disable-next-line\n  Router.prototype.parseRouteUrl = function parseRouteUrl (url) {\n    if (!url) { return {}; }\n    var query = Utils.parseUrlQuery(url);\n    var hash = url.split('#')[1];\n    var params = {};\n    var path = url.split('#')[0].split('?')[0];\n    return {\n      query: query,\n      hash: hash,\n      params: params,\n      url: url,\n      path: path,\n    };\n  };\n  Router.prototype.findTabRoute = function findTabRoute (tabEl) {\n    var router = this;\n    var $tabEl = $$1$1(tabEl);\n    var parentPath = router.currentRoute.route.parentPath;\n    var tabId = $tabEl.attr('id');\n    var flattenedRoutes = router.flattenRoutes(router.routes);\n    var foundTabRoute;\n    flattenedRoutes.forEach(function (route) {\n      if (\n        route.parentPath === parentPath &&\n        route.tab &&\n        route.tab.id === tabId\n      ) {\n        foundTabRoute = route;\n      }\n    });\n    return foundTabRoute;\n  };\n  Router.prototype.findRouteByKey = function findRouteByKey (key, value) {\n    var router = this;\n    var routes = router.routes;\n    var flattenedRoutes = router.flattenRoutes(routes);\n    var matchingRoute;\n\n    flattenedRoutes.forEach(function (route) {\n      if (matchingRoute) { return; }\n      if (route[key] === value) {\n        matchingRoute = route;\n      }\n    });\n    return matchingRoute;\n  };\n  Router.prototype.findMatchingRoute = function findMatchingRoute (url) {\n    if (!url) { return undefined; }\n    var router = this;\n    var routes = router.routes;\n    var flattenedRoutes = router.flattenRoutes(routes);\n    var ref = router.parseRouteUrl(url);\n    var path = ref.path;\n    var query = ref.query;\n    var hash = ref.hash;\n    var params = ref.params;\n    var matchingRoute;\n    flattenedRoutes.forEach(function (route) {\n      if (matchingRoute) { return; }\n      var keys = [];\n\n      var pathsToMatch = [route.path];\n      if (route.alias) {\n        if (typeof route.alias === 'string') { pathsToMatch.push(route.alias); }\n        else if (Array.isArray(route.alias)) {\n          route.alias.forEach(function (aliasPath) {\n            pathsToMatch.push(aliasPath);\n          });\n        }\n      }\n\n      var matched;\n      pathsToMatch.forEach(function (pathToMatch) {\n        if (matched) { return; }\n        matched = pathToRegexp_1(pathToMatch, keys).exec(path);\n      });\n\n      if (matched) {\n        keys.forEach(function (keyObj, index) {\n          var paramValue = matched[index + 1];\n          params[keyObj.name] = paramValue;\n        });\n\n        var parentPath;\n        if (route.parentPath) {\n          parentPath = path.split('/').slice(0, route.parentPath.split('/').length - 1).join('/');\n        }\n\n        matchingRoute = {\n          query: query,\n          hash: hash,\n          params: params,\n          url: url,\n          path: path,\n          parentPath: parentPath,\n          route: route,\n          name: route.name,\n        };\n      }\n    });\n    return matchingRoute;\n  };\n  Router.prototype.removeFromXhrCache = function removeFromXhrCache (url) {\n    var router = this;\n    var xhrCache = router.cache.xhr;\n    var index = false;\n    for (var i = 0; i < xhrCache.length; i += 1) {\n      if (xhrCache[i].url === url) { index = i; }\n    }\n    if (index !== false) { xhrCache.splice(index, 1); }\n  };\n  Router.prototype.xhrRequest = function xhrRequest (requestUrl, options) {\n    var router = this;\n    var params = router.params;\n    var ignoreCache = options.ignoreCache;\n    var url = requestUrl;\n\n    var hasQuery = url.indexOf('?') >= 0;\n    if (params.passRouteQueryToRequest &&\n      options &&\n      options.route &&\n      options.route.query &&\n      Object.keys(options.route.query).length\n    ) {\n      url += \"\" + (hasQuery ? '&' : '?') + (Utils.serializeObject(options.route.query));\n      hasQuery = true;\n    }\n\n    if (params.passRouteParamsToRequest &&\n      options &&\n      options.route &&\n      options.route.params &&\n      Object.keys(options.route.params).length\n    ) {\n      url += \"\" + (hasQuery ? '&' : '?') + (Utils.serializeObject(options.route.params));\n      hasQuery = true;\n    }\n\n    if (url.indexOf('{{') >= 0 &&\n      options &&\n      options.route &&\n      options.route.params &&\n      Object.keys(options.route.params).length\n    ) {\n      Object.keys(options.route.params).forEach(function (paramName) {\n        var regExp = new RegExp((\"{{\" + paramName + \"}}\"), 'g');\n        url = url.replace(regExp, options.route.params[paramName] || '');\n      });\n    }\n    // should we ignore get params or not\n    if (params.xhrCacheIgnoreGetParameters && url.indexOf('?') >= 0) {\n      url = url.split('?')[0];\n    }\n    return Utils.promise(function (resolve, reject) {\n      if (params.xhrCache && !ignoreCache && url.indexOf('nocache') < 0 && params.xhrCacheIgnore.indexOf(url) < 0) {\n        for (var i = 0; i < router.cache.xhr.length; i += 1) {\n          var cachedUrl = router.cache.xhr[i];\n          if (cachedUrl.url === url) {\n            // Check expiration\n            if (Utils.now() - cachedUrl.time < params.xhrCacheDuration) {\n              // Load from cache\n              resolve(cachedUrl.content);\n              return;\n            }\n          }\n        }\n      }\n      router.xhr = router.app.request({\n        url: url,\n        method: 'GET',\n        beforeSend: function beforeSend(xhr) {\n          router.emit('routerAjaxStart', xhr, options);\n        },\n        complete: function complete(xhr, status) {\n          router.emit('routerAjaxComplete', xhr);\n          if ((status !== 'error' && status !== 'timeout' && (xhr.status >= 200 && xhr.status < 300)) || xhr.status === 0) {\n            if (params.xhrCache && xhr.responseText !== '') {\n              router.removeFromXhrCache(url);\n              router.cache.xhr.push({\n                url: url,\n                time: Utils.now(),\n                content: xhr.responseText,\n              });\n            }\n            router.emit('routerAjaxSuccess', xhr, options);\n            resolve(xhr.responseText);\n          } else {\n            router.emit('routerAjaxError', xhr, options);\n            reject(xhr);\n          }\n        },\n        error: function error(xhr) {\n          router.emit('routerAjaxError', xhr, options);\n          reject(xhr);\n        },\n      });\n    });\n  };\n  // Remove theme elements\n  Router.prototype.removeThemeElements = function removeThemeElements (el) {\n    var router = this;\n    var theme = router.app.theme;\n    $$1$1(el).find((\".\" + (theme === 'md' ? 'ios' : 'md') + \"-only, .if-\" + (theme === 'md' ? 'ios' : 'md'))).remove();\n  };\n  Router.prototype.templateLoader = function templateLoader (template, templateUrl, options, resolve, reject) {\n    var router = this;\n    function compile(t) {\n      var compiledHtml;\n      var context;\n      try {\n        context = options.context || {};\n        if (typeof context === 'function') { context = context.call(router); }\n        else if (typeof context === 'string') {\n          try {\n            context = JSON.parse(context);\n          } catch (err) {\n            reject();\n            throw (err);\n          }\n        }\n        if (typeof t === 'function') {\n          compiledHtml = t(context);\n        } else {\n          compiledHtml = Template7.compile(t)(Utils.extend({}, context || {}, {\n            $app: router.app,\n            $root: Utils.extend({}, router.app.data, router.app.methods),\n            $route: options.route,\n            $router: router,\n            $theme: {\n              ios: router.app.theme === 'ios',\n              md: router.app.theme === 'md',\n            },\n          }));\n        }\n      } catch (err) {\n        reject();\n        throw (err);\n      }\n      resolve(compiledHtml, { context: context });\n    }\n    if (templateUrl) {\n      // Load via XHR\n      if (router.xhr) {\n        router.xhr.abort();\n        router.xhr = false;\n      }\n      router\n        .xhrRequest(templateUrl, options)\n        .then(function (templateContent) {\n          compile(templateContent);\n        })\n        .catch(function () {\n          reject();\n        });\n    } else {\n      compile(template);\n    }\n  };\n  Router.prototype.modalTemplateLoader = function modalTemplateLoader (template, templateUrl, options, resolve, reject) {\n    var router = this;\n    return router.templateLoader(template, templateUrl, options, function (html) {\n      resolve(html);\n    }, reject);\n  };\n  Router.prototype.tabTemplateLoader = function tabTemplateLoader (template, templateUrl, options, resolve, reject) {\n    var router = this;\n    return router.templateLoader(template, templateUrl, options, function (html) {\n      resolve(html);\n    }, reject);\n  };\n  Router.prototype.pageTemplateLoader = function pageTemplateLoader (template, templateUrl, options, resolve, reject) {\n    var router = this;\n    return router.templateLoader(template, templateUrl, options, function (html, newOptions) {\n      if ( newOptions === void 0 ) newOptions = {};\n\n      resolve(router.getPageEl(html), newOptions);\n    }, reject);\n  };\n  Router.prototype.componentLoader = function componentLoader (component, componentUrl, options, resolve, reject) {\n    if ( options === void 0 ) options = {};\n\n    var router = this;\n    var url = typeof component === 'string' ? component : componentUrl;\n    function compile(c) {\n      var extendContext = Utils.extend(\n        {},\n        options.context || {},\n        {\n          $: $$1$1,\n          $$: $$1$1,\n          $app: router.app,\n          $root: Utils.extend({}, router.app.data, router.app.methods),\n          $route: options.route,\n          $router: router,\n          $dom7: $$1$1,\n          $theme: {\n            ios: router.app.theme === 'ios',\n            md: router.app.theme === 'md',\n          },\n        }\n      );\n      var createdComponent = Component.create(c, extendContext);\n      resolve(createdComponent.el);\n    }\n    if (url) {\n      // Load via XHR\n      if (router.xhr) {\n        router.xhr.abort();\n        router.xhr = false;\n      }\n      router\n        .xhrRequest(url, options)\n        .then(function (loadedComponent) {\n          compile(Component.parse(loadedComponent));\n        })\n        .catch(function (err) {\n          reject();\n          throw (err);\n        });\n    } else {\n      compile(component);\n    }\n  };\n  Router.prototype.modalComponentLoader = function modalComponentLoader (rootEl, component, componentUrl, options, resolve, reject) {\n    var router = this;\n    router.componentLoader(component, componentUrl, options, function (el) {\n      resolve(el);\n    }, reject);\n  };\n  Router.prototype.tabComponentLoader = function tabComponentLoader (tabEl, component, componentUrl, options, resolve, reject) {\n    var router = this;\n    router.componentLoader(component, componentUrl, options, function (el) {\n      resolve(el);\n    }, reject);\n  };\n  Router.prototype.pageComponentLoader = function pageComponentLoader (routerEl, component, componentUrl, options, resolve, reject) {\n    var router = this;\n    router.componentLoader(component, componentUrl, options, function (el, newOptions) {\n      if ( newOptions === void 0 ) newOptions = {};\n\n      resolve(el, newOptions);\n    }, reject);\n  };\n  Router.prototype.getPageData = function getPageData (pageEl, navbarEl, from, to, route, pageFromEl) {\n    if ( route === void 0 ) route = {};\n\n    var router = this;\n    var $pageEl = $$1$1(pageEl);\n    var $navbarEl = $$1$1(navbarEl);\n    var currentPage = $pageEl[0].f7Page || {};\n    var direction;\n    var pageFrom;\n    if ((from === 'next' && to === 'current') || (from === 'current' && to === 'previous')) { direction = 'forward'; }\n    if ((from === 'current' && to === 'next') || (from === 'previous' && to === 'current')) { direction = 'backward'; }\n    if (currentPage && !currentPage.fromPage) {\n      var $pageFromEl = $$1$1(pageFromEl);\n      if ($pageFromEl.length) {\n        pageFrom = $pageFromEl[0].f7Page;\n      }\n    }\n    var page = {\n      app: router.app,\n      view: router.view,\n      router: router,\n      $el: $pageEl,\n      el: $pageEl[0],\n      $pageEl: $pageEl,\n      pageEl: $pageEl[0],\n      $navbarEl: $navbarEl,\n      navbarEl: $navbarEl[0],\n      name: $pageEl.attr('data-name'),\n      position: from,\n      from: from,\n      to: to,\n      direction: direction,\n      route: currentPage.route ? currentPage.route : route,\n      pageFrom: currentPage.pageFrom || pageFrom,\n    };\n\n    if ($navbarEl && $navbarEl[0]) {\n      $navbarEl[0].f7Page = page;\n    }\n    $pageEl[0].f7Page = page;\n    return page;\n  };\n  // Callbacks\n  Router.prototype.pageCallback = function pageCallback (callback, pageEl, navbarEl, from, to, options, pageFromEl) {\n    if ( options === void 0 ) options = {};\n\n    if (!pageEl) { return; }\n    var router = this;\n    var $pageEl = $$1$1(pageEl);\n    if (!$pageEl.length) { return; }\n    var route = options.route;\n    var restoreScrollTopOnBack = router.params.restoreScrollTopOnBack;\n\n    var camelName = \"page\" + (callback[0].toUpperCase() + callback.slice(1, callback.length));\n    var colonName = \"page:\" + (callback.toLowerCase());\n\n    var page = {};\n    if (callback === 'beforeRemove' && $pageEl[0].f7Page) {\n      page = Utils.extend($pageEl[0].f7Page, { from: from, to: to, position: from });\n    } else {\n      page = router.getPageData(pageEl, navbarEl, from, to, route, pageFromEl);\n    }\n\n    var ref = options.route ? options.route.route : {};\n    var on = ref.on; if ( on === void 0 ) on = {};\n    var once = ref.once; if ( once === void 0 ) once = {};\n    if (options.on) {\n      Utils.extend(on, options.on);\n    }\n    if (options.once) {\n      Utils.extend(once, options.once);\n    }\n\n    function attachEvents() {\n      if ($pageEl[0].f7RouteEventsAttached) { return; }\n      $pageEl[0].f7RouteEventsAttached = true;\n      if (on && Object.keys(on).length > 0) {\n        $pageEl[0].f7RouteEventsOn = on;\n        Object.keys(on).forEach(function (eventName) {\n          on[eventName] = on[eventName].bind(router);\n          $pageEl.on(Utils.eventNameToColonCase(eventName), on[eventName]);\n        });\n      }\n      if (once && Object.keys(once).length > 0) {\n        $pageEl[0].f7RouteEventsOnce = once;\n        Object.keys(once).forEach(function (eventName) {\n          once[eventName] = once[eventName].bind(router);\n          $pageEl.once(Utils.eventNameToColonCase(eventName), once[eventName]);\n        });\n      }\n    }\n\n    function detachEvents() {\n      if (!$pageEl[0].f7RouteEventsAttached) { return; }\n      if ($pageEl[0].f7RouteEventsOn) {\n        Object.keys($pageEl[0].f7RouteEventsOn).forEach(function (eventName) {\n          $pageEl.off(Utils.eventNameToColonCase(eventName), $pageEl[0].f7RouteEventsOn[eventName]);\n        });\n      }\n      if ($pageEl[0].f7RouteEventsOnce) {\n        Object.keys($pageEl[0].f7RouteEventsOnce).forEach(function (eventName) {\n          $pageEl.off(Utils.eventNameToColonCase(eventName), $pageEl[0].f7RouteEventsOnce[eventName]);\n        });\n      }\n      $pageEl[0].f7RouteEventsAttached = null;\n      $pageEl[0].f7RouteEventsOn = null;\n      $pageEl[0].f7RouteEventsOnce = null;\n      delete $pageEl[0].f7RouteEventsAttached;\n      delete $pageEl[0].f7RouteEventsOn;\n      delete $pageEl[0].f7RouteEventsOnce;\n    }\n\n    if (callback === 'mounted') {\n      attachEvents();\n    }\n    if (callback === 'init') {\n      if (restoreScrollTopOnBack && (from === 'previous' || !from) && to === 'current' && router.scrollHistory[page.route.url]) {\n        $pageEl.find('.page-content').scrollTop(router.scrollHistory[page.route.url]);\n      }\n      attachEvents();\n      if ($pageEl[0].f7PageInitialized) {\n        $pageEl.trigger('page:reinit', page);\n        router.emit('pageReinit', page);\n        return;\n      }\n      $pageEl[0].f7PageInitialized = true;\n    }\n    if (restoreScrollTopOnBack && callback === 'beforeOut' && from === 'current' && to === 'previous') {\n      // Save scroll position\n      router.scrollHistory[page.route.url] = $pageEl.find('.page-content').scrollTop();\n    }\n    if (restoreScrollTopOnBack && callback === 'beforeOut' && from === 'current' && to === 'next') {\n      // Delete scroll position\n      delete router.scrollHistory[page.route.url];\n    }\n\n    $pageEl.trigger(colonName, page);\n    router.emit(camelName, page);\n\n    if (callback === 'beforeRemove') {\n      detachEvents();\n      $pageEl[0].f7Page = null;\n    }\n  };\n  Router.prototype.saveHistory = function saveHistory () {\n    var router = this;\n    router.view.history = router.history;\n    if (router.params.pushState) {\n      window.localStorage[(\"f7router-\" + (router.view.id) + \"-history\")] = JSON.stringify(router.history);\n    }\n  };\n  Router.prototype.restoreHistory = function restoreHistory () {\n    var router = this;\n    if (router.params.pushState && window.localStorage[(\"f7router-\" + (router.view.id) + \"-history\")]) {\n      router.history = JSON.parse(window.localStorage[(\"f7router-\" + (router.view.id) + \"-history\")]);\n      router.view.history = router.history;\n    }\n  };\n  Router.prototype.clearHistory = function clearHistory () {\n    var router = this;\n    router.history = [];\n    router.saveHistory();\n  };\n  Router.prototype.init = function init () {\n    var router = this;\n    var app = router.app;\n    var view = router.view;\n\n    // Init Swipeback\n    {\n      if (view && router.params.iosSwipeBack && app.theme === 'ios') {\n        SwipeBack(router);\n      }\n    }\n\n    // Dynamic not separated navbbar\n    if (router.dynamicNavbar && !router.separateNavbar) {\n      router.$el.addClass('router-dynamic-navbar-inside');\n    }\n\n    var initUrl = router.params.url;\n    var documentUrl = document.location.href.split(document.location.origin)[1];\n    var historyRestored;\n    if (!router.params.pushState) {\n      if (!initUrl) {\n        initUrl = documentUrl;\n      }\n      if (document.location.search && initUrl.indexOf('?') < 0) {\n        initUrl += document.location.search;\n      }\n      if (document.location.hash && initUrl.indexOf('#') < 0) {\n        initUrl += document.location.hash;\n      }\n    } else {\n      if (router.params.pushStateRoot && documentUrl.indexOf(router.params.pushStateRoot) >= 0) {\n        documentUrl = documentUrl.split(router.params.pushStateRoot)[1];\n        if (documentUrl === '') { documentUrl = '/'; }\n      }\n      if (router.params.pushStateSeparator.length > 0 && documentUrl.indexOf(router.params.pushStateSeparator) >= 0) {\n        initUrl = documentUrl.split(router.params.pushStateSeparator)[1];\n      } else {\n        initUrl = documentUrl;\n      }\n      router.restoreHistory();\n      if (router.history.indexOf(initUrl) >= 0) {\n        router.history = router.history.slice(0, router.history.indexOf(initUrl) + 1);\n      } else if (router.params.url === initUrl) {\n        router.history = [initUrl];\n      } else if (History.state && History.state[view.id] && History.state[view.id].url === router.history[router.history.length - 1]) {\n        initUrl = router.history[router.history.length - 1];\n      } else {\n        router.history = [documentUrl.split(router.params.pushStateSeparator)[0] || '/', initUrl];\n      }\n      if (router.history.length > 1) {\n        historyRestored = true;\n      } else {\n        router.history = [];\n      }\n      router.saveHistory();\n    }\n    var currentRoute;\n    if (router.history.length > 1) {\n      // Will load page\n      currentRoute = router.findMatchingRoute(router.history[0]);\n      if (!currentRoute) {\n        currentRoute = Utils.extend(router.parseRouteUrl(router.history[0]), {\n          route: {\n            url: router.history[0],\n            path: router.history[0].split('?')[0],\n          },\n        });\n      }\n    } else {\n      // Don't load page\n      currentRoute = router.findMatchingRoute(initUrl);\n      if (!currentRoute) {\n        currentRoute = Utils.extend(router.parseRouteUrl(initUrl), {\n          route: {\n            url: initUrl,\n            path: initUrl.split('?')[0],\n          },\n        });\n      }\n    }\n\n    if (router.params.stackPages) {\n      router.$el.children('.page').each(function (index, pageEl) {\n        var $pageEl = $$1$1(pageEl);\n        router.initialPages.push($pageEl[0]);\n        if (router.separateNavbar && $pageEl.children('.navbar').length > 0) {\n          router.initialNavbars.push($pageEl.children('.navbar').find('.navbar-inner')[0]);\n        }\n      });\n    }\n\n    if (router.$el.children('.page:not(.stacked)').length === 0 && initUrl) {\n      // No pages presented in DOM, reload new page\n      router.navigate(initUrl, {\n        reloadCurrent: true,\n        pushState: false,\n      });\n    } else {\n      // Init current DOM page\n      router.currentRoute = currentRoute;\n      router.$el.children('.page:not(.stacked)').each(function (index, pageEl) {\n        var $pageEl = $$1$1(pageEl);\n        var $navbarInnerEl;\n        $pageEl.addClass('page-current');\n        if (router.separateNavbar) {\n          $navbarInnerEl = $pageEl.children('.navbar').children('.navbar-inner');\n          if ($navbarInnerEl.length > 0) {\n            if (!router.$navbarEl.parents(document).length) {\n              router.$el.prepend(router.$navbarEl);\n            }\n            router.$navbarEl.append($navbarInnerEl);\n            $pageEl.children('.navbar').remove();\n          } else {\n            router.$navbarEl.addClass('navbar-hidden');\n          }\n        }\n        var initOptions = {\n          route: router.currentRoute,\n        };\n        if (router.currentRoute && router.currentRoute.route && router.currentRoute.route.options) {\n          Utils.extend(initOptions, router.currentRoute.route.options);\n        }\n        router.currentPageEl = $pageEl[0];\n        if (router.dynamicNavbar && $navbarInnerEl.length) {\n          router.currentNavbarEl = $navbarInnerEl[0];\n        }\n        router.removeThemeElements($pageEl);\n        if (router.dynamicNavbar && $navbarInnerEl.length) {\n          router.removeThemeElements($navbarInnerEl);\n        }\n        if (initOptions.route.route.tab) {\n          router.tabLoad(initOptions.route.route.tab, Utils.extend({}, initOptions));\n        }\n        router.pageCallback('init', $pageEl, $navbarInnerEl, 'current', undefined, initOptions);\n      });\n      if (historyRestored) {\n        router.navigate(initUrl, {\n          pushState: false,\n          history: false,\n          animate: router.params.pushStateAnimateOnLoad,\n          once: {\n            pageAfterIn: function pageAfterIn() {\n              if (router.history.length > 2) {\n                router.back({ preload: true });\n              }\n            },\n          },\n        });\n      } else {\n        router.history.push(initUrl);\n        router.saveHistory();\n      }\n    }\n    router.emit('local::init routerInit', router);\n  };\n  Router.prototype.destroy = function destroy () {\n    var router = this;\n\n    router.emit('local::destroy routerDestroy', router);\n\n    // Delete props & methods\n    Object.keys(router).forEach(function (routerProp) {\n      router[routerProp] = null;\n      delete router[routerProp];\n    });\n\n    router = null;\n  };\n\n  return Router;\n}(Framework7Class));\n\nvar Router = {\n  name: 'router',\n  static: {\n    Router: Router$1,\n  },\n  instance: {\n    cache: {\n      xhr: [],\n      templates: [],\n      components: [],\n    },\n  },\n  create: function create() {\n    var instance = this;\n    if (instance.app) {\n      // View Router\n      if (instance.params.router) {\n        instance.router = new Router$1(instance.app, instance);\n      }\n    } else {\n      // App Router\n      instance.router = new Router$1(instance);\n    }\n  },\n};\n\nvar View = (function (Framework7Class$$1) {\n  function View(appInstance, el, viewParams) {\n    if ( viewParams === void 0 ) viewParams = {};\n\n    Framework7Class$$1.call(this, viewParams, [appInstance]);\n\n    var app = appInstance;\n    var $el = $$1$1(el);\n    var view = this;\n\n    var defaults = {\n      routes: [],\n      routesAdd: [],\n    };\n\n    // Default View params\n    view.params = Utils.extend(defaults, app.params.view, viewParams);\n\n    // Routes\n    if (view.params.routes.length > 0) {\n      view.routes = view.params.routes;\n    } else {\n      view.routes = [].concat(app.routes, view.params.routesAdd);\n    }\n\n    // Selector\n    var selector;\n    if (typeof el === 'string') { selector = el; }\n    else {\n      // Supposed to be HTMLElement or Dom7\n      selector = ($el.attr('id') ? (\"#\" + ($el.attr('id'))) : '') + ($el.attr('class') ? (\".\" + ($el.attr('class').replace(/ /g, '.').replace('.active', ''))) : '');\n    }\n\n    // DynamicNavbar\n    var $navbarEl;\n    if (app.theme === 'ios' && view.params.iosDynamicNavbar && view.params.iosSeparateDynamicNavbar) {\n      $navbarEl = $el.children('.navbar').eq(0);\n      if ($navbarEl.length === 0) {\n        $navbarEl = $$1$1('<div class=\"navbar\"></div>');\n      }\n    }\n\n    // View Props\n    Utils.extend(false, view, {\n      app: app,\n      $el: $el,\n      el: $el[0],\n      name: view.params.name,\n      main: view.params.main || $el.hasClass('view-main'),\n      $navbarEl: $navbarEl,\n      navbarEl: $navbarEl ? $navbarEl[0] : undefined,\n      selector: selector,\n      history: [],\n      scrollHistory: {},\n    });\n\n    // Save in DOM\n    $el[0].f7View = view;\n\n    // Install Modules\n    view.useModules();\n\n    // Add to app\n    app.views.push(view);\n    if (view.main) {\n      app.views.main = view;\n    }\n    if (view.name) {\n      app.views[view.name] = view;\n    }\n\n    // Index\n    view.index = app.views.indexOf(view);\n\n    // View ID\n    var viewId;\n    if (view.name) {\n      viewId = \"view_\" + (view.name);\n    } else if (view.main) {\n      viewId = 'view_main';\n    } else {\n      viewId = \"view_\" + (view.index);\n    }\n    view.id = viewId;\n\n    // Init View\n    if (app.initialized) {\n      view.init();\n    } else {\n      app.on('init', function () {\n        view.init();\n      });\n    }\n\n    return view;\n  }\n\n  if ( Framework7Class$$1 ) View.__proto__ = Framework7Class$$1;\n  View.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n  View.prototype.constructor = View;\n  View.prototype.destroy = function destroy () {\n    var view = this;\n    var app = view.app;\n\n    view.$el.trigger('view:beforedestroy', view);\n    view.emit('local::beforeDestroy viewBeforeDestroy', view);\n\n    if (view.main) {\n      app.views.main = null;\n      delete app.views.main;\n    } else if (view.name) {\n      app.views[view.name] = null;\n      delete app.views[view.name];\n    }\n    view.$el[0].f7View = null;\n    delete view.$el[0].f7View;\n\n    app.views.splice(app.views.indexOf(view), 1);\n\n    // Destroy Router\n    if (view.params.router && view.router) {\n      view.router.destroy();\n    }\n\n    view.emit('local::destroy viewDestroy', view);\n\n    // Delete props & methods\n    Object.keys(view).forEach(function (viewProp) {\n      view[viewProp] = null;\n      delete view[viewProp];\n    });\n\n    view = null;\n  };\n  View.prototype.init = function init () {\n    var view = this;\n    if (view.params.router) {\n      view.router.init();\n    }\n  };\n\n  return View;\n}(Framework7Class));\n\n// Use Router\nView.use(Router);\n\nfunction initClicks(app) {\n  function handleClicks(e) {\n    var clicked = $$1$1(e.target);\n    var clickedLink = clicked.closest('a');\n    var isLink = clickedLink.length > 0;\n    var url = isLink && clickedLink.attr('href');\n    var isTabLink = isLink && clickedLink.hasClass('tab-link') && (clickedLink.attr('data-tab') || (url && url.indexOf('#') === 0));\n\n    // Check if link is external\n    if (isLink) {\n      // eslint-disable-next-line\n      if (clickedLink.is(app.params.clicks.externalLinks) || (url && url.indexOf('javascript:') >= 0)) {\n        var target = clickedLink.attr('target');\n        if (url && (target === '_system' || target === '_blank')) {\n          e.preventDefault();\n          if (window.cordova && window.cordova.InAppBrowser) {\n            window.cordova.InAppBrowser.open(url, target);\n          } else {\n            window.open(url, target);\n          }\n        }\n        return;\n      }\n    }\n\n    // Modules Clicks\n    Object.keys(app.modules).forEach(function (moduleName) {\n      var moduleClicks = app.modules[moduleName].clicks;\n      if (!moduleClicks) { return; }\n      Object.keys(moduleClicks).forEach(function (clickSelector) {\n        var matchingClickedElement = clicked.closest(clickSelector).eq(0);\n        if (matchingClickedElement.length > 0) {\n          moduleClicks[clickSelector].call(app, matchingClickedElement, matchingClickedElement.dataset());\n        }\n      });\n    });\n\n    // Load Page\n    var clickedLinkData = {};\n    if (isLink) {\n      e.preventDefault();\n      clickedLinkData = clickedLink.dataset();\n    }\n    var validUrl = url && url.length > 0 && url !== '#' && !isTabLink;\n    var template = clickedLinkData.template;\n    if (validUrl || clickedLink.hasClass('back') || template) {\n      var view;\n      if (clickedLinkData.view) {\n        view = $$1$1(clickedLinkData.view)[0].f7View;\n      } else {\n        view = clicked.parents('.view')[0] && clicked.parents('.view')[0].f7View;\n        if (view && view.params.linksView) {\n          if (typeof view.params.linksView === 'string') { view = $$1$1(view.params.linksView)[0].f7View; }\n          else if (view.params.linksView instanceof View) { view = view.params.linksView; }\n        }\n      }\n      if (!view) {\n        if (app.views.main) { view = app.views.main; }\n      }\n      if (!view || !view.router) { return; }\n      if (clickedLink.hasClass('back')) { view.router.back(url, clickedLinkData); }\n      else { view.router.navigate(url, clickedLinkData); }\n    }\n  }\n\n  app.on('click', handleClicks);\n\n  // Prevent scrolling on overlays\n  function preventScrolling(e) {\n    e.preventDefault();\n  }\n  if (Support$1.touch && !Device.android) {\n    var activeListener = Support$1.passiveListener ? { passive: false, capture: false } : false;\n    $$1$1(document).on((app.params.fastClicks ? 'touchstart' : 'touchmove'), '.panel-backdrop, .dialog-backdrop, .preloader-backdrop, .popup-backdrop, .searchbar-backdrop', preventScrolling, activeListener);\n  }\n}\nvar Clicks = {\n  name: 'clicks',\n  params: {\n    clicks: {\n      // External Links\n      externalLinks: '.external',\n    },\n  },\n  on: {\n    init: function init() {\n      var app = this;\n      initClicks(app);\n    },\n  },\n};\n\nvar History$2 = {\n  name: 'history',\n  static: {\n    history: History,\n  },\n  on: {\n    init: function init() {\n      History.init(this);\n    },\n  },\n};\n\nvar keyPrefix = 'f7storage-';\nvar Storage = {\n  get: function get(key) {\n    return Utils.promise(function (resolve, reject) {\n      try {\n        var value = JSON.parse(window.localStorage.getItem((\"\" + keyPrefix + key)));\n        resolve(value);\n      } catch (e) {\n        reject(e);\n      }\n    });\n  },\n  set: function set(key, value) {\n    return Utils.promise(function (resolve, reject) {\n      try {\n        window.localStorage.setItem((\"\" + keyPrefix + key), JSON.stringify(value));\n        resolve();\n      } catch (e) {\n        reject(e);\n      }\n    });\n  },\n  remove: function remove(key) {\n    return Utils.promise(function (resolve, reject) {\n      try {\n        window.localStorage.removeItem((\"\" + keyPrefix + key));\n        resolve();\n      } catch (e) {\n        reject(e);\n      }\n    });\n  },\n  clear: function clear() {\n\n  },\n  length: function length() {\n\n  },\n  keys: function keys() {\n    return Utils.promise(function (resolve, reject) {\n      try {\n        var keys = Object.keys(window.localStorage)\n          .filter(function (keyName) { return keyName.indexOf(keyPrefix) === 0; })\n          .map(function (keyName) { return keyName.replace(keyPrefix, ''); });\n        resolve(keys);\n      } catch (e) {\n        reject(e);\n      }\n    });\n  },\n  forEach: function forEach(callback) {\n    return Utils.promise(function (resolve, reject) {\n      try {\n        Object.keys(window.localStorage)\n          .filter(function (keyName) { return keyName.indexOf(keyPrefix) === 0; })\n          .forEach(function (keyName, index) {\n            var key = keyName.replace(keyPrefix, '');\n            Storage.get(key).then(function (value) {\n              callback(key, value, index);\n            });\n          });\n        resolve();\n      } catch (e) {\n        reject(e);\n      }\n    });\n  },\n};\n\nvar Storage$1 = {\n  name: 'storage',\n  static: {\n    Storage: Storage,\n    storage: Storage,\n  },\n};\n\nvar Statusbar = {\n  hide: function hide() {\n    $$1$1('html').removeClass('with-statusbar');\n    if (Device.cordova && window.StatusBar) {\n      window.StatusBar.hide();\n    }\n  },\n  show: function show() {\n    if (Device.cordova && window.StatusBar) {\n      window.StatusBar.show();\n      Utils.nextTick(function () {\n        if (Device.needsStatusbarOverlay()) {\n          $$1$1('html').addClass('with-statusbar');\n        }\n      });\n      return;\n    }\n    $$1$1('html').addClass('with-statusbar');\n  },\n  onClick: function onClick() {\n    var app = this;\n    var pageContent;\n    if ($$1$1('.popup.modal-in').length > 0) {\n      // Check for opened popup\n      pageContent = $$1$1('.popup.modal-in').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n    } else if ($$1$1('.panel.panel-active').length > 0) {\n      // Check for opened panel\n      pageContent = $$1$1('.panel.panel-active').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n    } else if ($$1$1('.views > .view.tab-active').length > 0) {\n      // View in tab bar app layout\n      pageContent = $$1$1('.views > .view.tab-active').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n    } else if ($$1$1('.views').length > 0) {\n      pageContent = $$1$1('.views').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n    } else {\n      pageContent = app.root.children('.view').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n    }\n\n    if (pageContent && pageContent.length > 0) {\n      // Check for tab\n      if (pageContent.hasClass('tab')) {\n        pageContent = pageContent.parent('.tabs').children('.page-content.tab-active');\n      }\n      if (pageContent.length > 0) { pageContent.scrollTop(0, 300); }\n    }\n  },\n  setIosTextColor: function setIosTextColor(color) {\n    if (Device.cordova && window.StatusBar) {\n      if (color === 'white') {\n        window.StatusBar.styleLightContent();\n      } else {\n        window.StatusBar.styleDefault();\n      }\n    }\n  },\n  setBackgroundColor: function setBackgroundColor(color) {\n    $$1$1('.statusbar').css('background-color', color);\n    if (Device.cordova && window.StatusBar) {\n      window.StatusBar.backgroundColorByHexString(color);\n    }\n  },\n  isVisible: function isVisible() {\n    if (Device.cordova && window.StatusBar) {\n      return window.StatusBar.isVisible;\n    }\n    return false;\n  },\n  iosOverlaysWebView: function iosOverlaysWebView(overlays) {\n    if ( overlays === void 0 ) overlays = true;\n\n    if (!Device.ios) { return; }\n    if (Device.cordova && window.StatusBar) {\n      window.StatusBar.overlaysWebView(overlays);\n      if (overlays) {\n        $$1$1('html').addClass('with-statusbar');\n      } else {\n        $$1$1('html').removeClass('with-statusbar');\n      }\n    }\n  },\n  checkOverlay: function checkOverlay() {\n    if (Device.needsStatusbarOverlay()) {\n      $$1$1('html').addClass('with-statusbar');\n    } else {\n      $$1$1('html').removeClass('with-statusbar');\n    }\n  },\n  init: function init() {\n    var app = this;\n    var params = app.params.statusbar;\n    if (!params.enabled) { return; }\n\n    if (params.overlay === 'auto') {\n      if (Device.needsStatusbarOverlay()) {\n        $$1$1('html').addClass('with-statusbar');\n      }\n\n      if (Device.ios && (Device.cordova || Device.webView)) {\n        if (window.orientation === 0) {\n          app.once('resize', function () {\n            Statusbar.checkOverlay();\n          });\n        }\n\n        $$1$1(document).on('resume', function () {\n          Statusbar.checkOverlay();\n        }, false);\n\n        app.on('orientationchange resize', function () {\n          Statusbar.checkOverlay();\n        });\n      }\n    } else if (params.overlay === true) {\n      $$1$1('html').addClass('with-statusbar');\n    } else if (params.overlay === false) {\n      $$1$1('html').removeClass('with-statusbar');\n    }\n\n    if (Device.cordova && window.StatusBar) {\n      if (params.scrollTopOnClick) {\n        $$1$1(window).on('statusTap', Statusbar.onClick.bind(app));\n      }\n      if (params.iosOverlaysWebView) {\n        window.StatusBar.overlaysWebView(true);\n      } else {\n        window.StatusBar.overlaysWebView(false);\n      }\n\n      if (params.iosTextColor === 'white') {\n        window.StatusBar.styleLightContent();\n      } else {\n        window.StatusBar.styleDefault();\n      }\n    }\n    if (params.iosBackgroundColor && app.theme === 'ios') {\n      Statusbar.setBackgroundColor(params.iosBackgroundColor);\n    }\n    if (params.materialBackgroundColor && app.theme === 'md') {\n      Statusbar.setBackgroundColor(params.materialBackgroundColor);\n    }\n  },\n};\n\nvar Statusbar$1 = {\n  name: 'statusbar',\n  params: {\n    statusbar: {\n      enabled: true,\n      overlay: 'auto',\n      scrollTopOnClick: true,\n      iosOverlaysWebView: true,\n      iosTextColor: 'black',\n      iosBackgroundColor: null,\n      materialBackgroundColor: null,\n    },\n  },\n  create: function create() {\n    var app = this;\n    Utils.extend(app, {\n      statusbar: {\n        checkOverlay: Statusbar.checkOverlay,\n        hide: Statusbar.hide,\n        show: Statusbar.show,\n        iosOverlaysWebView: Statusbar.iosOverlaysWebView,\n        setIosTextColor: Statusbar.setIosTextColor,\n        setBackgroundColor: Statusbar.setBackgroundColor,\n        isVisible: Statusbar.isVisible,\n        init: Statusbar.init.bind(app),\n      },\n    });\n  },\n  on: {\n    init: function init() {\n      var app = this;\n      Statusbar.init.call(app);\n    },\n  },\n  clicks: {\n    '.statusbar': function onStatusbarClick() {\n      var app = this;\n      if (!app.params.statusbar.enabled) { return; }\n      if (!app.params.statusbar.scrollTopOnClick) { return; }\n      Statusbar.onClick.call(app);\n    },\n  },\n};\n\nfunction getCurrentView(app) {\n  var popoverView = $$1$1('.popover.modal-in .view');\n  var popupView = $$1$1('.popup.modal-in .view');\n  var panelView = $$1$1('.panel.panel-active .view');\n  var appViews = $$1$1('.views');\n  if (appViews.length === 0) { appViews = app.root; }\n  // Find active view as tab\n  var appView = appViews.children('.view');\n  // Propably in tabs or split view\n  if (appView.length > 1) {\n    if (appView.hasClass('tab')) {\n      // Tabs\n      appView = appViews.children('.view.tab-active');\n    } else {\n      // Split View, leave appView intact\n    }\n  }\n  if (popoverView.length > 0 && popoverView[0].f7View) { return popoverView[0].f7View; }\n  if (popupView.length > 0 && popupView[0].f7View) { return popupView[0].f7View; }\n  if (panelView.length > 0 && panelView[0].f7View) { return panelView[0].f7View; }\n  if (appView.length > 0) {\n    if (appView.length === 1 && appView[0].f7View) { return appView[0].f7View; }\n    if (appView.length > 1) {\n      return app.views.main;\n    }\n  }\n  return undefined;\n}\n\nvar View$2 = {\n  name: 'view',\n  params: {\n    view: {\n      name: undefined,\n      main: false,\n      router: true,\n      linksView: null,\n      stackPages: false,\n      xhrCache: true,\n      xhrCacheIgnore: [],\n      xhrCacheIgnoreGetParameters: false,\n      xhrCacheDuration: 1000 * 60 * 10, // Ten minutes\n      preloadPreviousPage: true,\n      uniqueHistory: false,\n      uniqueHistoryIgnoreGetParameters: false,\n      allowDuplicateUrls: false,\n      reloadPages: false,\n      removeElements: true,\n      removeElementsWithTimeout: false,\n      removeElementsTimeout: 0,\n      restoreScrollTopOnBack: true,\n      unloadTabContent: true,\n      passRouteQueryToRequest: true,\n      passRouteParamsToRequest: false,\n      // Swipe Back\n      iosSwipeBack: true,\n      iosSwipeBackAnimateShadow: true,\n      iosSwipeBackAnimateOpacity: true,\n      iosSwipeBackActiveArea: 30,\n      iosSwipeBackThreshold: 0,\n      // Push State\n      pushState: false,\n      pushStateRoot: undefined,\n      pushStateAnimate: true,\n      pushStateAnimateOnLoad: false,\n      pushStateSeparator: '#!',\n      pushStateOnLoad: true,\n      // Animate Pages\n      animate: true,\n      animateWithJS: false,\n      // iOS Dynamic Navbar\n      iosDynamicNavbar: true,\n      iosSeparateDynamicNavbar: true,\n      // Animate iOS Navbar Back Icon\n      iosAnimateNavbarBackIcon: true,\n      // Delays\n      iosPageLoadDelay: 0,\n      materialPageLoadDelay: 0,\n    },\n  },\n  static: {\n    View: View,\n  },\n  create: function create() {\n    var app = this;\n    Utils.extend(app, {\n      views: Utils.extend([], {\n        create: function create(el, params) {\n          return new View(app, el, params);\n        },\n        get: function get(viewEl) {\n          var $viewEl = $$1$1(viewEl);\n          if ($viewEl.length && $viewEl[0].f7View) { return $viewEl[0].f7View; }\n          return undefined;\n        },\n      }),\n    });\n    Object.defineProperty(app.views, 'current', {\n      enumerable: true,\n      configurable: true,\n      get: function get() {\n        return getCurrentView(app);\n      },\n    });\n    // Alias\n    app.view = app.views;\n  },\n  on: {\n    init: function init() {\n      var app = this;\n      $$1$1('.view-init').each(function (index, viewEl) {\n        if (viewEl.f7View) { return; }\n        var viewParams = $$1$1(viewEl).dataset();\n        app.views.create(viewEl, viewParams);\n      });\n    },\n    modalOpen: function modalOpen(modal) {\n      var app = this;\n      modal.$el.find('.view-init').each(function (index, viewEl) {\n        if (viewEl.f7View) { return; }\n        var viewParams = $$1$1(viewEl).dataset();\n        app.views.create(viewEl, viewParams);\n      });\n    },\n    modalBeforeDestroy: function modalBeforeDestroy(modal) {\n      if (!modal || !modal.$el) { return; }\n      modal.$el.find('.view-init').each(function (index, viewEl) {\n        var view = viewEl.f7View;\n        if (!view) { return; }\n        view.destroy();\n      });\n    },\n  },\n};\n\nvar Navbar = {\n  size: function size(el) {\n    var app = this;\n    if (app.theme !== 'ios') { return; }\n    var $el = $$1$1(el);\n    if ($el.hasClass('navbar')) {\n      $el = $el.children('.navbar-inner').each(function (index, navbarEl) {\n        app.navbar.size(navbarEl);\n      });\n      return;\n    }\n    if (\n      $el.hasClass('stacked') ||\n      $el.parents('.stacked').length > 0 ||\n      $el.parents('.tab:not(.tab-active)').length > 0 ||\n      $el.parents('.popup:not(.modal-in)').length > 0\n    ) {\n      return;\n    }\n    var $viewEl = $el.parents('.view').eq(0);\n    var left = app.rtl ? $el.children('.right') : $el.children('.left');\n    var right = app.rtl ? $el.children('.left') : $el.children('.right');\n    var title = $el.children('.title');\n    var subnavbar = $el.children('.subnavbar');\n    var noLeft = left.length === 0;\n    var noRight = right.length === 0;\n    var leftWidth = noLeft ? 0 : left.outerWidth(true);\n    var rightWidth = noRight ? 0 : right.outerWidth(true);\n    var titleWidth = title.outerWidth(true);\n    var navbarStyles = $el.styles();\n    var navbarWidth = $el[0].offsetWidth;\n    var navbarInnerWidth = navbarWidth - parseInt(navbarStyles.paddingLeft, 10) - parseInt(navbarStyles.paddingRight, 10);\n    var isPrevious = $el.hasClass('navbar-previous');\n    var sliding = $el.hasClass('sliding');\n\n    var router;\n    var dynamicNavbar;\n    var separateNavbar;\n    var separateNavbarRightOffset = 0;\n    var separateNavbarLeftOffset = 0;\n\n    if ($viewEl.length > 0 && $viewEl[0].f7View) {\n      router = $viewEl[0].f7View.router;\n      dynamicNavbar = router && router.dynamicNavbar;\n      separateNavbar = router && router.separateNavbar;\n      if (!separateNavbar) {\n        separateNavbarRightOffset = navbarWidth;\n        separateNavbarLeftOffset = navbarWidth / 5;\n      }\n    }\n\n    var currLeft;\n    var diff;\n    if (noRight) {\n      currLeft = navbarInnerWidth - titleWidth;\n    }\n    if (noLeft) {\n      currLeft = 0;\n    }\n    if (!noLeft && !noRight) {\n      currLeft = ((navbarInnerWidth - rightWidth - titleWidth) + leftWidth) / 2;\n    }\n    var requiredLeft = (navbarInnerWidth - titleWidth) / 2;\n    if (navbarInnerWidth - leftWidth - rightWidth > titleWidth) {\n      if (requiredLeft < leftWidth) {\n        requiredLeft = leftWidth;\n      }\n      if (requiredLeft + titleWidth > navbarInnerWidth - rightWidth) {\n        requiredLeft = navbarInnerWidth - rightWidth - titleWidth;\n      }\n      diff = requiredLeft - currLeft;\n    } else {\n      diff = 0;\n    }\n\n    // RTL inverter\n    var inverter = app.rtl ? -1 : 1;\n\n    if (dynamicNavbar) {\n      if (title.hasClass('sliding') || (title.length > 0 && sliding)) {\n        var titleLeftOffset = (-(currLeft + diff) * inverter) + separateNavbarLeftOffset;\n        var titleRightOffset = ((navbarInnerWidth - currLeft - diff - titleWidth) * inverter) - separateNavbarRightOffset;\n\n        if (isPrevious) {\n          if (router && router.params.iosAnimateNavbarBackIcon) {\n            var activeNavbarBackLink = $el.parent().find('.navbar-current').children('.left.sliding').find('.back .icon ~ span');\n            if (activeNavbarBackLink.length > 0) {\n              titleLeftOffset += activeNavbarBackLink[0].offsetLeft;\n            }\n          }\n        }\n        title[0].f7NavbarLeftOffset = titleLeftOffset;\n        title[0].f7NavbarRightOffset = titleRightOffset;\n      }\n      if (!noLeft && (left.hasClass('sliding') || sliding)) {\n        if (app.rtl) {\n          left[0].f7NavbarLeftOffset = (-(navbarInnerWidth - left[0].offsetWidth) / 2) * inverter;\n          left[0].f7NavbarRightOffset = leftWidth * inverter;\n        } else {\n          left[0].f7NavbarLeftOffset = -leftWidth + separateNavbarLeftOffset;\n          left[0].f7NavbarRightOffset = ((navbarInnerWidth - left[0].offsetWidth) / 2) - separateNavbarRightOffset;\n          if (router && router.params.iosAnimateNavbarBackIcon && left.find('.back .icon').length > 0) {\n            left[0].f7NavbarRightOffset -= left.find('.back .icon')[0].offsetWidth;\n          }\n        }\n      }\n      if (!noRight && (right.hasClass('sliding') || sliding)) {\n        if (app.rtl) {\n          right[0].f7NavbarLeftOffset = -rightWidth * inverter;\n          right[0].f7NavbarRightOffset = ((navbarInnerWidth - right[0].offsetWidth) / 2) * inverter;\n        } else {\n          right[0].f7NavbarLeftOffset = (-(navbarInnerWidth - right[0].offsetWidth) / 2) + separateNavbarLeftOffset;\n          right[0].f7NavbarRightOffset = rightWidth - separateNavbarRightOffset;\n        }\n      }\n      if (subnavbar.length && (subnavbar.hasClass('sliding') || sliding)) {\n        subnavbar[0].f7NavbarLeftOffset = app.rtl ? subnavbar[0].offsetWidth : (-subnavbar[0].offsetWidth + separateNavbarLeftOffset);\n        subnavbar[0].f7NavbarRightOffset = (-subnavbar[0].f7NavbarLeftOffset - separateNavbarRightOffset) + separateNavbarLeftOffset;\n      }\n    }\n\n    // Title left\n    if (app.params.navbar.iosCenterTitle) {\n      var titleLeft = diff;\n      if (app.rtl && noLeft && noRight && title.length > 0) { titleLeft = -titleLeft; }\n      title.css({ left: (titleLeft + \"px\") });\n    }\n  },\n  hide: function hide(el, animate) {\n    if ( animate === void 0 ) animate = true;\n\n    var $el = $$1$1(el);\n    if ($el.hasClass('navbar-inner')) { $el = $el.parents('.navbar'); }\n    if (!$el.length) { return; }\n    if ($el.hasClass('navbar-hidden')) { return; }\n    var className = \"navbar-hidden\" + (animate ? ' navbar-transitioning' : '');\n    $el.transitionEnd(function () {\n      $el.removeClass('navbar-transitioning');\n    });\n    $el.addClass(className);\n  },\n  show: function show(el, animate) {\n    if ( el === void 0 ) el = '.navbar-hidden';\n    if ( animate === void 0 ) animate = true;\n\n    var $el = $$1$1(el);\n    if ($el.hasClass('navbar-inner')) { $el = $el.parents('.navbar'); }\n    if (!$el.length) { return; }\n    if (!$el.hasClass('navbar-hidden')) { return; }\n    if (animate) {\n      $el.addClass('navbar-transitioning');\n      $el.transitionEnd(function () {\n        $el.removeClass('navbar-transitioning');\n      });\n    }\n    $el.removeClass('navbar-hidden');\n  },\n  getElByPage: function getElByPage(page) {\n    var $pageEl;\n    var $navbarEl;\n    var pageData;\n    if (page.$navbarEl || page.$el) {\n      pageData = page;\n      $pageEl = page.$el;\n    } else {\n      $pageEl = $$1$1(page);\n      if ($pageEl.length > 0) { pageData = $pageEl[0].f7Page; }\n    }\n    if (pageData && pageData.$navbarEl && pageData.$navbarEl.length > 0) {\n      $navbarEl = pageData.$navbarEl;\n    } else if ($pageEl) {\n      $navbarEl = $pageEl.children('.navbar').children('.navbar-inner');\n    }\n    if (!$navbarEl || ($navbarEl && $navbarEl.length === 0)) { return undefined; }\n    return $navbarEl[0];\n  },\n  getPageByEl: function getPageByEl(navbarInnerEl) {\n    var $navbarInnerEl = $$1$1(navbarInnerEl);\n    if ($navbarInnerEl.hasClass('navbar')) {\n      $navbarInnerEl = $navbarInnerEl.find('.navbar-inner');\n      if ($navbarInnerEl.length > 1) { return undefined; }\n    }\n    return $navbarInnerEl[0].f7Page;\n  },\n  initHideNavbarOnScroll: function initHideNavbarOnScroll(pageEl, navbarInnerEl) {\n    var app = this;\n    var $pageEl = $$1$1(pageEl);\n    var $navbarEl = $$1$1(navbarInnerEl || app.navbar.getElByPage(pageEl)).closest('.navbar');\n\n    var previousScrollTop;\n    var currentScrollTop;\n\n    var scrollHeight;\n    var offsetHeight;\n    var reachEnd;\n    var action;\n    var navbarHidden;\n    function handleScroll() {\n      var scrollContent = this;\n      if ($pageEl.hasClass('page-previous')) { return; }\n      currentScrollTop = scrollContent.scrollTop;\n      scrollHeight = scrollContent.scrollHeight;\n      offsetHeight = scrollContent.offsetHeight;\n      reachEnd = currentScrollTop + offsetHeight >= scrollHeight;\n      navbarHidden = $navbarEl.hasClass('navbar-hidden');\n\n      if (reachEnd) {\n        if (app.params.navbar.showOnPageScrollEnd) {\n          action = 'show';\n        }\n      } else if (previousScrollTop > currentScrollTop) {\n        if (app.params.navbar.showOnPageScrollTop || currentScrollTop <= 44) {\n          action = 'show';\n        } else {\n          action = 'hide';\n        }\n      } else if (currentScrollTop > 44) {\n        action = 'hide';\n      } else {\n        action = 'show';\n      }\n\n      if (action === 'show' && navbarHidden) {\n        app.navbar.show($navbarEl);\n        navbarHidden = false;\n      } else if (action === 'hide' && !navbarHidden) {\n        app.navbar.hide($navbarEl);\n        navbarHidden = true;\n      }\n\n      previousScrollTop = currentScrollTop;\n    }\n    $pageEl.on('scroll', '.page-content', handleScroll, true);\n    $pageEl[0].f7ScrollNavbarHandler = handleScroll;\n  },\n};\nvar Navbar$1 = {\n  name: 'navbar',\n  create: function create() {\n    var app = this;\n    Utils.extend(app, {\n      navbar: {\n        size: Navbar.size.bind(app),\n        hide: Navbar.hide.bind(app),\n        show: Navbar.show.bind(app),\n        getElByPage: Navbar.getElByPage.bind(app),\n        initHideNavbarOnScroll: Navbar.initHideNavbarOnScroll.bind(app),\n      },\n    });\n  },\n  params: {\n    navbar: {\n      scrollTopOnTitleClick: true,\n      iosCenterTitle: true,\n      hideOnPageScroll: false,\n      showOnPageScrollEnd: true,\n      showOnPageScrollTop: true,\n    },\n  },\n  on: {\n    'panelBreakpoint resize': function onResize() {\n      var app = this;\n      if (app.theme !== 'ios') { return; }\n      $$1$1('.navbar').each(function (index, navbarEl) {\n        app.navbar.size(navbarEl);\n      });\n    },\n    pageBeforeRemove: function pageBeforeRemove(page) {\n      if (page.$el[0].f7ScrollNavbarHandler) {\n        page.$el.off('scroll', '.page-content', page.$el[0].f7ScrollNavbarHandler, true);\n      }\n    },\n    pageBeforeIn: function pageBeforeIn(page) {\n      var app = this;\n      if (app.theme !== 'ios') { return; }\n      var $navbarEl;\n      var view = page.$el.parents('.view')[0].f7View;\n      var navbarInnerEl = app.navbar.getElByPage(page);\n      if (!navbarInnerEl) {\n        $navbarEl = page.$el.parents('.view').children('.navbar');\n      } else {\n        $navbarEl = $$1$1(navbarInnerEl).parents('.navbar');\n      }\n      if (page.$el.hasClass('no-navbar') || (view.router.dynamicNavbar && !navbarInnerEl)) {\n        var animate = !!(page.pageFrom && page.router.history.length > 0);\n        app.navbar.hide($navbarEl, animate);\n      } else {\n        app.navbar.show($navbarEl);\n      }\n    },\n    pageReinit: function pageReinit(page) {\n      var app = this;\n      if (app.theme !== 'ios') { return; }\n      var $navbarEl = $$1$1(app.navbar.getElByPage(page));\n      if (!$navbarEl || $navbarEl.length === 0) { return; }\n      app.navbar.size($navbarEl);\n    },\n    pageInit: function pageInit(page) {\n      var app = this;\n      var $navbarEl = $$1$1(app.navbar.getElByPage(page));\n      if (!$navbarEl || $navbarEl.length === 0) { return; }\n      if (app.theme === 'ios') {\n        app.navbar.size($navbarEl);\n      }\n      if (\n        app.params.navbar.hideOnPageScroll ||\n        page.$el.find('.hide-navbar-on-scroll').length ||\n        page.$el.hasClass('hide-navbar-on-scroll') ||\n        page.$el.find('.hide-bars-on-scroll').length ||\n        page.$el.hasClass('hide-bars-on-scroll')\n      ) {\n        if (\n          page.$el.find('.keep-navbar-on-scroll').length ||\n          page.$el.find('.keep-bars-on-scroll').length\n        ) {\n          return;\n        }\n        app.navbar.initHideNavbarOnScroll(page.el, $navbarEl[0]);\n      }\n    },\n    modalOpen: function modalOpen(modal) {\n      var app = this;\n      if (app.theme !== 'ios') { return; }\n      modal.$el.find('.navbar:not(.navbar-previous):not(.stacked)').each(function (index, navbarEl) {\n        app.navbar.size(navbarEl);\n      });\n    },\n    panelOpen: function panelOpen(panel) {\n      var app = this;\n      if (app.theme !== 'ios') { return; }\n      panel.$el.find('.navbar:not(.navbar-previous):not(.stacked)').each(function (index, navbarEl) {\n        app.navbar.size(navbarEl);\n      });\n    },\n    panelSwipeOpen: function panelSwipeOpen(panel) {\n      var app = this;\n      if (app.theme !== 'ios') { return; }\n      panel.$el.find('.navbar:not(.navbar-previous):not(.stacked)').each(function (index, navbarEl) {\n        app.navbar.size(navbarEl);\n      });\n    },\n    tabShow: function tabShow(tabEl) {\n      var app = this;\n      $$1$1(tabEl).find('.navbar:not(.navbar-previous):not(.stacked)').each(function (index, navbarEl) {\n        app.navbar.size(navbarEl);\n      });\n    },\n  },\n  clicks: {\n    '.navbar .title': function onTitleClick($clickedEl) {\n      var app = this;\n      if (!app.params.navbar.scrollTopOnTitleClick) { return; }\n      if ($clickedEl.closest('a').length > 0) {\n        return;\n      }\n      var pageContent;\n      // Find active page\n      var navbar = $clickedEl.parents('.navbar');\n\n      // Static Layout\n      pageContent = navbar.parents('.page-content');\n\n      if (pageContent.length === 0) {\n        // Fixed Layout\n        if (navbar.parents('.page').length > 0) {\n          pageContent = navbar.parents('.page').find('.page-content');\n        }\n        // Through Layout\n        if (pageContent.length === 0) {\n          if (navbar.nextAll('.page-current:not(.stacked)').length > 0) {\n            pageContent = navbar.nextAll('.page-current:not(.stacked)').find('.page-content');\n          }\n        }\n      }\n      if (pageContent && pageContent.length > 0) {\n        // Check for tab\n        if (pageContent.hasClass('tab')) {\n          pageContent = pageContent.parent('.tabs').children('.page-content.tab-active');\n        }\n        if (pageContent.length > 0) { pageContent.scrollTop(0, 300); }\n      }\n    },\n  },\n};\n\nvar Toolbar = {\n  setHighlight: function setHighlight(tabbarEl) {\n    var app = this;\n    if (app.theme !== 'md') { return; }\n\n    var $tabbarEl = $$1$1(tabbarEl);\n\n    if ($tabbarEl.length === 0 || !($tabbarEl.hasClass('tabbar') || $tabbarEl.hasClass('tabbar-labels'))) { return; }\n\n    if ($tabbarEl.find('.tab-link-highlight').length === 0) {\n      $tabbarEl.children('.toolbar-inner').append('<span class=\"tab-link-highlight\"></span>');\n    }\n\n    var $highlightEl = $tabbarEl.find('.tab-link-highlight');\n    var $activeLink = $tabbarEl.find('.tab-link-active');\n    var highlightWidth;\n    var highlightTranslate;\n\n    if ($tabbarEl.hasClass('tabbar-scrollable')) {\n      highlightWidth = ($activeLink[0].offsetWidth) + \"px\";\n      highlightTranslate = ($activeLink[0].offsetLeft) + \"px\";\n    } else {\n      var activeIndex = $activeLink.index();\n      var tabLinksCount = $tabbarEl.find('.tab-link').length;\n      highlightWidth = (100 / tabLinksCount) + \"%\";\n      highlightTranslate = ((app.rtl ? -activeIndex : activeIndex) * 100) + \"%\";\n    }\n\n    $highlightEl\n      .css('width', highlightWidth)\n      .transform((\"translate3d(\" + highlightTranslate + \",0,0)\"));\n  },\n  init: function init(tabbarEl) {\n    var app = this;\n    app.toolbar.setHighlight(tabbarEl);\n  },\n  hide: function hide(el, animate) {\n    if ( animate === void 0 ) animate = true;\n\n    var $el = $$1$1(el);\n    if ($el.hasClass('toolbar-hidden')) { return; }\n    var className = \"toolbar-hidden\" + (animate ? ' toolbar-transitioning' : '');\n    $el.transitionEnd(function () {\n      $el.removeClass('toolbar-transitioning');\n    });\n    $el.addClass(className);\n  },\n  show: function show(el, animate) {\n    if ( animate === void 0 ) animate = true;\n\n    var $el = $$1$1(el);\n    if (!$el.hasClass('toolbar-hidden')) { return; }\n    if (animate) {\n      $el.addClass('toolbar-transitioning');\n      $el.transitionEnd(function () {\n        $el.removeClass('toolbar-transitioning');\n      });\n    }\n    $el.removeClass('toolbar-hidden');\n  },\n  initHideToolbarOnScroll: function initHideToolbarOnScroll(pageEl) {\n    var app = this;\n    var $pageEl = $$1$1(pageEl);\n    var $toolbarEl = $pageEl.parents('.view').children('.toolbar');\n    if ($toolbarEl.length === 0) {\n      $toolbarEl = $pageEl.find('.toolbar');\n    }\n    if ($toolbarEl.length === 0) {\n      $toolbarEl = $pageEl.parents('.views').children('.tabbar, .tabbar-labels');\n    }\n    if ($toolbarEl.length === 0) {\n      return;\n    }\n\n    var previousScrollTop;\n    var currentScrollTop;\n\n    var scrollHeight;\n    var offsetHeight;\n    var reachEnd;\n    var action;\n    var toolbarHidden;\n    function handleScroll() {\n      var scrollContent = this;\n      if ($pageEl.hasClass('page-previous')) { return; }\n      currentScrollTop = scrollContent.scrollTop;\n      scrollHeight = scrollContent.scrollHeight;\n      offsetHeight = scrollContent.offsetHeight;\n      reachEnd = currentScrollTop + offsetHeight >= scrollHeight;\n      toolbarHidden = $toolbarEl.hasClass('toolbar-hidden');\n\n      if (reachEnd) {\n        if (app.params.toolbar.showOnPageScrollEnd) {\n          action = 'show';\n        }\n      } else if (previousScrollTop > currentScrollTop) {\n        if (app.params.toolbar.showOnPageScrollTop || currentScrollTop <= 44) {\n          action = 'show';\n        } else {\n          action = 'hide';\n        }\n      } else if (currentScrollTop > 44) {\n        action = 'hide';\n      } else {\n        action = 'show';\n      }\n\n      if (action === 'show' && toolbarHidden) {\n        app.toolbar.show($toolbarEl);\n        toolbarHidden = false;\n      } else if (action === 'hide' && !toolbarHidden) {\n        app.toolbar.hide($toolbarEl);\n        toolbarHidden = true;\n      }\n\n      previousScrollTop = currentScrollTop;\n    }\n    $pageEl.on('scroll', '.page-content', handleScroll, true);\n    $pageEl[0].f7ScrollToolbarHandler = handleScroll;\n  },\n};\nvar Toolbar$1 = {\n  name: 'toolbar',\n  create: function create() {\n    var app = this;\n    Utils.extend(app, {\n      toolbar: {\n        hide: Toolbar.hide.bind(app),\n        show: Toolbar.show.bind(app),\n        setHighlight: Toolbar.setHighlight.bind(app),\n        initHideToolbarOnScroll: Toolbar.initHideToolbarOnScroll.bind(app),\n        init: Toolbar.init.bind(app),\n      },\n    });\n  },\n  params: {\n    toolbar: {\n      hideOnPageScroll: false,\n      showOnPageScrollEnd: true,\n      showOnPageScrollTop: true,\n    },\n  },\n  on: {\n    pageBeforeRemove: function pageBeforeRemove(page) {\n      if (page.$el[0].f7ScrollToolbarHandler) {\n        page.$el.off('scroll', '.page-content', page.$el[0].f7ScrollToolbarHandler, true);\n      }\n    },\n    pageBeforeIn: function pageBeforeIn(page) {\n      var app = this;\n      if (app.theme !== 'ios') { return; }\n      var $toolbarEl = page.$el.parents('.view').children('.toolbar');\n      if ($toolbarEl.length === 0) {\n        $toolbarEl = page.$el.find('.toolbar');\n      }\n      if ($toolbarEl.length === 0) {\n        $toolbarEl = page.$el.parents('.views').children('.tabbar, .tabbar-labels');\n      }\n      if ($toolbarEl.length === 0) {\n        return;\n      }\n      if (page.$el.hasClass('no-toolbar')) {\n        app.toolbar.hide($toolbarEl);\n      } else {\n        app.toolbar.show($toolbarEl);\n      }\n    },\n    pageInit: function pageInit(page) {\n      var app = this;\n      page.$el.find('.tabbar, .tabbar-labels').each(function (index, tabbarEl) {\n        app.toolbar.init(tabbarEl);\n      });\n      if (\n        app.params.toolbar.hideOnPageScroll ||\n        page.$el.find('.hide-toolbar-on-scroll').length ||\n        page.$el.hasClass('hide-toolbar-on-scroll') ||\n        page.$el.find('.hide-bars-on-scroll').length ||\n        page.$el.hasClass('hide-bars-on-scroll')\n      ) {\n        if (\n          page.$el.find('.keep-toolbar-on-scroll').length ||\n          page.$el.find('.keep-bars-on-scroll').length\n        ) {\n          return;\n        }\n        app.toolbar.initHideToolbarOnScroll(page.el);\n      }\n    },\n    init: function init() {\n      var app = this;\n      app.root.find('.tabbar, .tabbar-labels').each(function (index, tabbarEl) {\n        app.toolbar.init(tabbarEl);\n      });\n    },\n  },\n};\n\nvar Subnavbar = {\n  name: 'subnavbar',\n  on: {\n    pageInit: function pageInit(page) {\n      if (page.$navbarEl && page.$navbarEl.length && page.$navbarEl.find('.subnavbar').length) {\n        page.$el.addClass('page-with-subnavbar');\n      }\n      if (page.$el.find('.subnavbar').length) {\n        page.$el.addClass('page-with-subnavbar');\n      }\n    },\n  },\n};\n\nvar TouchRipple$1 = function TouchRipple($el, x, y) {\n  var ripple = this;\n  if (!$el) { return undefined; }\n  var box = $el[0].getBoundingClientRect();\n  var center = {\n    x: x - box.left,\n    y: y - box.top,\n  };\n  var width = box.width;\n  var height = box.height;\n  var diameter = Math.max((Math.pow( ((Math.pow( height, 2 )) + (Math.pow( width, 2 ))), 0.5 )), 48);\n\n  ripple.$rippleWaveEl = $$1$1((\"<div class=\\\"ripple-wave\\\" style=\\\"width: \" + diameter + \"px; height: \" + diameter + \"px; margin-top:-\" + (diameter / 2) + \"px; margin-left:-\" + (diameter / 2) + \"px; left:\" + (center.x) + \"px; top:\" + (center.y) + \"px;\\\"></div>\"));\n\n  $el.prepend(ripple.$rippleWaveEl);\n\n  /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n  ripple._clientLeft = ripple.$rippleWaveEl[0].clientLeft;\n\n  ripple.rippleTransform = \"translate3d(\" + (-center.x + (width / 2)) + \"px, \" + (-center.y + (height / 2)) + \"px, 0) scale(1)\";\n\n  ripple.$rippleWaveEl.transform(ripple.rippleTransform);\n\n  return ripple;\n};\nTouchRipple$1.prototype.onRemove = function onRemove () {\n  var ripple = this;\n  ripple.$rippleWaveEl.remove();\n  Object.keys(ripple).forEach(function (key) {\n    ripple[key] = null;\n    delete ripple[key];\n  });\n  ripple = null;\n};\nTouchRipple$1.prototype.remove = function remove () {\n  var ripple = this;\n  if (ripple.removing) { return; }\n  var $rippleWaveEl = this.$rippleWaveEl;\n  var rippleTransform = this.rippleTransform;\n  var removeTimeout = Utils.nextTick(function () {\n    ripple.onRemove();\n  }, 400);\n  ripple.removing = true;\n  $rippleWaveEl\n    .addClass('ripple-wave-fill')\n    .transform(rippleTransform.replace('scale(1)', 'scale(1.01)'))\n    .transitionEnd(function () {\n      clearTimeout(removeTimeout);\n      Utils.nextFrame(function () {\n        $rippleWaveEl\n          .addClass('ripple-wave-out')\n          .transform(rippleTransform.replace('scale(1)', 'scale(1.01)'));\n\n        removeTimeout = Utils.nextTick(function () {\n          ripple.onRemove();\n        }, 700);\n\n        $rippleWaveEl.transitionEnd(function () {\n          clearTimeout(removeTimeout);\n          ripple.onRemove();\n        });\n      });\n    });\n};\n\nvar TouchRipple = {\n  name: 'touch-ripple',\n  static: {\n    TouchRipple: TouchRipple$1,\n  },\n  create: function create() {\n    var app = this;\n    app.touchRipple = {\n      create: function create() {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        return new (Function.prototype.bind.apply( TouchRipple$1, [ null ].concat( args) ));\n      },\n    };\n  },\n};\n\nvar openedModals = [];\nvar dialogsQueue = [];\nfunction clearDialogsQueue() {\n  if (dialogsQueue.length === 0) { return; }\n  var dialog = dialogsQueue.shift();\n  dialog.open();\n}\nvar Modal$1 = (function (Framework7Class$$1) {\n  function Modal(app, params) {\n    Framework7Class$$1.call(this, params, [app]);\n\n    var modal = this;\n\n    var defaults = {};\n\n    // Extend defaults with modules params\n    modal.useModulesParams(defaults);\n\n    modal.params = Utils.extend(defaults, params);\n\n    // Install Modules\n    modal.useModules();\n\n    return this;\n  }\n\n  if ( Framework7Class$$1 ) Modal.__proto__ = Framework7Class$$1;\n  Modal.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n  Modal.prototype.constructor = Modal;\n  Modal.prototype.onOpen = function onOpen () {\n    var modal = this;\n    openedModals.push(modal);\n    $$1$1('html').addClass((\"with-modal-\" + (modal.type.toLowerCase())));\n    modal.$el.trigger((\"modal:open \" + (modal.type.toLowerCase()) + \":open\"), modal);\n    modal.emit((\"local::open modalOpen \" + (modal.type) + \"Open\"), modal);\n  };\n  Modal.prototype.onOpened = function onOpened () {\n    var modal = this;\n    modal.$el.trigger((\"modal:opened \" + (modal.type.toLowerCase()) + \":opened\"), modal);\n    modal.emit((\"local::opened modalOpened \" + (modal.type) + \"Opened\"), modal);\n  };\n  Modal.prototype.onClose = function onClose () {\n    var modal = this;\n    if (!modal.type || !modal.$el) { return; }\n    openedModals.splice(openedModals.indexOf(modal), 1);\n    $$1$1('html').removeClass((\"with-modal-\" + (modal.type.toLowerCase())));\n    modal.$el.trigger((\"modal:close \" + (modal.type.toLowerCase()) + \":close\"), modal);\n    modal.emit((\"local::close modalClose \" + (modal.type) + \"Close\"), modal);\n  };\n  Modal.prototype.onClosed = function onClosed () {\n    var modal = this;\n    if (!modal.type || !modal.$el) { return; }\n    modal.$el.removeClass('modal-out');\n    modal.$el.hide();\n    modal.$el.trigger((\"modal:closed \" + (modal.type.toLowerCase()) + \":closed\"), modal);\n    modal.emit((\"local::closed modalClosed \" + (modal.type) + \"Closed\"), modal);\n  };\n  Modal.prototype.open = function open (animateModal) {\n    var modal = this;\n    var app = modal.app;\n    var $el = modal.$el;\n    var $backdropEl = modal.$backdropEl;\n    var type = modal.type;\n    var animate = true;\n    if (typeof animateModal !== 'undefined') { animate = animateModal; }\n    else if (typeof modal.params.animate !== 'undefined') {\n      animate = modal.params.animate;\n    }\n\n    if (!$el || $el.hasClass('modal-in')) {\n      return modal;\n    }\n\n    if (type === 'dialog' && app.params.modal.queueDialogs) {\n      var pushToQueue;\n      if ($$1$1('.dialog.modal-in').length > 0) {\n        pushToQueue = true;\n      } else if (openedModals.length > 0) {\n        openedModals.forEach(function (openedModal) {\n          if (openedModal.type === 'dialog') { pushToQueue = true; }\n        });\n      }\n      if (pushToQueue) {\n        dialogsQueue.push(modal);\n        return modal;\n      }\n    }\n\n    var $modalParentEl = $el.parent();\n    var wasInDom = $el.parents(document).length > 0;\n    if (app.params.modal.moveToRoot && !$modalParentEl.is(app.root)) {\n      app.root.append($el);\n      modal.once((type + \"Closed\"), function () {\n        if (wasInDom) {\n          $modalParentEl.append($el);\n        } else {\n          $el.remove();\n        }\n      });\n    }\n    // Show Modal\n    $el.show();\n\n    // Set Dialog offset\n    if (type === 'dialog') {\n      $el.css({\n        marginTop: ((-Math.round($el.outerHeight() / 2)) + \"px\"),\n      });\n    }\n\n    // Emit open\n    /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n    modal._clientLeft = $el[0].clientLeft;\n\n    // Backdrop\n    if ($backdropEl) {\n      $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n      $backdropEl.addClass('backdrop-in');\n    }\n    // Modal\n    function transitionEnd() {\n      if ($el.hasClass('modal-out')) {\n        modal.onClosed();\n      } else {\n        modal.onOpened();\n      }\n    }\n    if (animate) {\n      $el\n        .animationEnd(function () {\n          transitionEnd();\n        });\n      $el\n        .transitionEnd(function () {\n          transitionEnd();\n        });\n      $el\n        .removeClass('modal-out not-animated')\n        .addClass('modal-in');\n      modal.onOpen();\n    } else {\n      $el.removeClass('modal-out').addClass('modal-in not-animated');\n      modal.onOpen();\n      modal.onOpened();\n    }\n\n    return modal;\n  };\n  Modal.prototype.close = function close (animateModal) {\n    var modal = this;\n    var $el = modal.$el;\n    var $backdropEl = modal.$backdropEl;\n\n    var animate = true;\n    if (typeof animateModal !== 'undefined') { animate = animateModal; }\n    else if (typeof modal.params.animate !== 'undefined') {\n      animate = modal.params.animate;\n    }\n\n    if (!$el || !$el.hasClass('modal-in')) {\n      return modal;\n    }\n\n    // backdrop\n    if ($backdropEl) {\n      $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n      $backdropEl.removeClass('backdrop-in');\n    }\n\n    // Modal\n    $el[animate ? 'removeClass' : 'addClass']('not-animated');\n    function transitionEnd() {\n      if ($el.hasClass('modal-out')) {\n        modal.onClosed();\n      } else {\n        modal.onOpened();\n      }\n    }\n    if (animate) {\n      $el\n        .animationEnd(function () {\n          transitionEnd();\n        });\n      $el\n        .transitionEnd(function () {\n          transitionEnd();\n        });\n      $el\n        .removeClass('modal-in')\n        .addClass('modal-out');\n      // Emit close\n      modal.onClose();\n    } else {\n      $el\n        .addClass('not-animated')\n        .removeClass('modal-in')\n        .addClass('modal-out');\n      // Emit close\n      modal.onClose();\n      modal.onClosed();\n    }\n\n    if (modal.type === 'dialog') {\n      clearDialogsQueue();\n    }\n\n    return modal;\n  };\n  Modal.prototype.destroy = function destroy () {\n    var modal = this;\n    if (modal.destroyed) { return; }\n    modal.emit((\"local::beforeDestroy modalBeforeDestroy \" + (modal.type) + \"BeforeDestroy\"), modal);\n    if (modal.$el) {\n      modal.$el.trigger((\"modal:beforedestroy \" + (modal.type.toLowerCase()) + \":beforedestroy\"), modal);\n      if (modal.$el.length && modal.$el[0].f7Modal) {\n        delete modal.$el[0].f7Modal;\n      }\n    }\n    Utils.deleteProps(modal);\n    modal.destroyed = true;\n  };\n\n  return Modal;\n}(Framework7Class));\n\nvar CustomModal = (function (Modal) {\n  function CustomModal(app, params) {\n    var extendedParams = Utils.extend({\n      backdrop: true,\n      closeByBackdropClick: true,\n      on: {},\n    }, params);\n\n    // Extends with open/close Modal methods;\n    Modal.call(this, app, extendedParams);\n\n    var customModal = this;\n\n    customModal.params = extendedParams;\n\n    // Find Element\n    var $el;\n    if (!customModal.params.el) {\n      $el = $$1$1(customModal.params.content);\n    } else {\n      $el = $$1$1(customModal.params.el);\n    }\n\n    if ($el && $el.length > 0 && $el[0].f7Modal) {\n      return $el[0].f7Modal;\n    }\n\n    if ($el.length === 0) {\n      return customModal.destroy();\n    }\n    var $backdropEl;\n    if (customModal.params.backdrop) {\n      $backdropEl = app.root.children('.custom-modal-backdrop');\n      if ($backdropEl.length === 0) {\n        $backdropEl = $$1$1('<div class=\"custom-modal-backdrop\"></div>');\n        app.root.append($backdropEl);\n      }\n    }\n\n    function handleClick(e) {\n      if (!customModal || customModal.destroyed) { return; }\n      if ($backdropEl && e.target === $backdropEl[0]) {\n        customModal.close();\n      }\n    }\n\n    customModal.on('customModalOpened', function () {\n      if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {\n        app.on('click', handleClick);\n      }\n    });\n    customModal.on('customModalClose', function () {\n      if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {\n        app.off('click', handleClick);\n      }\n    });\n\n    Utils.extend(customModal, {\n      app: app,\n      $el: $el,\n      el: $el[0],\n      $backdropEl: $backdropEl,\n      backdropEl: $backdropEl && $backdropEl[0],\n      type: 'customModal',\n    });\n\n    $el[0].f7Modal = customModal;\n\n    return customModal;\n  }\n\n  if ( Modal ) CustomModal.__proto__ = Modal;\n  CustomModal.prototype = Object.create( Modal && Modal.prototype );\n  CustomModal.prototype.constructor = CustomModal;\n\n  return CustomModal;\n}(Modal$1));\n\nvar Modal = {\n  name: 'modal',\n  static: {\n    Modal: Modal$1,\n    CustomModal: CustomModal,\n  },\n  create: function create() {\n    var app = this;\n    app.customModal = {\n      create: function create(params) {\n        return new CustomModal(app, params);\n      },\n    };\n  },\n  params: {\n    modal: {\n      moveToRoot: true,\n      queueDialogs: true,\n    },\n  },\n};\n\nvar Dialog$1 = (function (Modal) {\n  function Dialog(app, params) {\n    var extendedParams = Utils.extend({\n      title: app.params.dialog.title,\n      text: undefined,\n      content: '',\n      buttons: [],\n      verticalButtons: false,\n      onClick: undefined,\n      cssClass: undefined,\n      on: {},\n    }, params);\n\n    // Extends with open/close Modal methods;\n    Modal.call(this, app, extendedParams);\n\n    var dialog = this;\n\n    var title = extendedParams.title;\n    var text = extendedParams.text;\n    var content = extendedParams.content;\n    var buttons = extendedParams.buttons;\n    var verticalButtons = extendedParams.verticalButtons;\n    var cssClass = extendedParams.cssClass;\n\n    dialog.params = extendedParams;\n\n    // Find Element\n    var $el;\n    if (!dialog.params.el) {\n      var dialogClasses = ['dialog'];\n      if (buttons.length === 0) { dialogClasses.push('dialog-no-buttons'); }\n      if (buttons.length > 0) { dialogClasses.push((\"dialog-buttons-\" + (buttons.length))); }\n      if (verticalButtons) { dialogClasses.push('dialog-buttons-vertical'); }\n      if (cssClass) { dialogClasses.push(cssClass); }\n\n      var buttonsHTML = '';\n      if (buttons.length > 0) {\n        buttonsHTML = \"\\n          <div class=\\\"dialog-buttons\\\">\\n            \" + (buttons.map(function (button) { return (\"\\n              <span class=\\\"dialog-button\" + (button.bold ? ' dialog-button-bold' : '') + (button.color ? (\" color-\" + (button.color)) : '') + (button.cssClass ? (\" \" + (button.cssClass)) : '') + \"\\\">\" + (button.text) + \"</span>\\n            \"); }).join('')) + \"\\n          </div>\\n        \";\n      }\n\n      var dialogHtml = \"\\n        <div class=\\\"\" + (dialogClasses.join(' ')) + \"\\\">\\n          <div class=\\\"dialog-inner\\\">\\n            \" + (title ? (\"<div class=\\\"dialog-title\\\">\" + title + \"</div>\") : '') + \"\\n            \" + (text ? (\"<div class=\\\"dialog-text\\\">\" + text + \"</div>\") : '') + \"\\n            \" + content + \"\\n          </div>\\n          \" + buttonsHTML + \"\\n        </div>\\n      \";\n      $el = $$1$1(dialogHtml);\n    } else {\n      $el = $$1$1(dialog.params.el);\n    }\n\n    if ($el && $el.length > 0 && $el[0].f7Modal) {\n      return $el[0].f7Modal;\n    }\n\n    if ($el.length === 0) {\n      return dialog.destroy();\n    }\n\n    var $backdropEl = app.root.children('.dialog-backdrop');\n    if ($backdropEl.length === 0) {\n      $backdropEl = $$1$1('<div class=\"dialog-backdrop\"></div>');\n      app.root.append($backdropEl);\n    }\n\n    // Assign events\n    function buttonOnClick(e) {\n      var buttonEl = this;\n      var index = $$1$1(buttonEl).index();\n      var button = buttons[index];\n      if (button.onClick) { button.onClick(dialog, e); }\n      if (dialog.params.onClick) { dialog.params.onClick(dialog, index); }\n      if (button.close !== false) { dialog.close(); }\n    }\n    if (buttons && buttons.length > 0) {\n      $el.find('.dialog-button').each(function (index, buttonEl) {\n        $$1$1(buttonEl).on('click', buttonOnClick);\n      });\n      dialog.on('close', function () {\n        $el.find('.dialog-button').each(function (index, buttonEl) {\n          $$1$1(buttonEl).off('click', buttonOnClick);\n        });\n      });\n    }\n    Utils.extend(dialog, {\n      app: app,\n      $el: $el,\n      el: $el[0],\n      $backdropEl: $backdropEl,\n      backdropEl: $backdropEl[0],\n      type: 'dialog',\n      setProgress: function setProgress(progress, duration) {\n        app.progressbar.set($el.find('.progressbar'), progress, duration);\n        return dialog;\n      },\n      setText: function setText(newText) {\n        var $textEl = $el.find('.dialog-text');\n        if ($textEl.length === 0) {\n          $textEl = $$1$1('<div class=\"dialog-text\"></div>');\n          if (typeof title !== 'undefined') {\n            $textEl.insertAfter($el.find('.dialog-title'));\n          } else {\n            $el.find('.dialog-inner').prepend($textEl);\n          }\n        }\n        $textEl.html(newText);\n        dialog.params.text = newText;\n        return dialog;\n      },\n      setTitle: function setTitle(newTitle) {\n        var $titleEl = $el.find('.dialog-title');\n        if ($titleEl.length === 0) {\n          $titleEl = $$1$1('<div class=\"dialog-title\"></div>');\n          $el.find('.dialog-inner').prepend($titleEl);\n        }\n        $titleEl.html(newTitle);\n        dialog.params.title = newTitle;\n        return dialog;\n      },\n    });\n\n    $el[0].f7Modal = dialog;\n\n    return dialog;\n  }\n\n  if ( Modal ) Dialog.__proto__ = Modal;\n  Dialog.prototype = Object.create( Modal && Modal.prototype );\n  Dialog.prototype.constructor = Dialog;\n\n  return Dialog;\n}(Modal$1));\n\nvar ConstructorMethods = function (parameters) {\n  if ( parameters === void 0 ) parameters = {};\n\n  var defaultSelector = parameters.defaultSelector;\n  var constructor = parameters.constructor;\n  var domProp = parameters.domProp;\n  var app = parameters.app;\n  var addMethods = parameters.addMethods;\n  var methods = {\n    create: function create() {\n      var args = [], len = arguments.length;\n      while ( len-- ) args[ len ] = arguments[ len ];\n\n      if (app) { return new (Function.prototype.bind.apply( constructor, [ null ].concat( [app], args) )); }\n      return new (Function.prototype.bind.apply( constructor, [ null ].concat( args) ));\n    },\n    get: function get(el) {\n      if ( el === void 0 ) el = defaultSelector;\n\n      if (el instanceof constructor) { return el; }\n      var $el = $$1$1(el);\n      if ($el.length === 0) { return undefined; }\n      return $el[0][domProp];\n    },\n    destroy: function destroy(el) {\n      var instance = methods.get(el);\n      if (instance && instance.destroy) { return instance.destroy(); }\n      return undefined;\n    },\n  };\n  if (addMethods && Array.isArray(addMethods)) {\n    addMethods.forEach(function (methodName) {\n      methods[methodName] = function (el) {\n        if ( el === void 0 ) el = defaultSelector;\n        var args = [], len = arguments.length - 1;\n        while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n        var instance = methods.get(el);\n        if (instance && instance[methodName]) { return instance[methodName].apply(instance, args); }\n        return undefined;\n      };\n    });\n  }\n  return methods;\n};\n\nvar ModalMethods = function (parameters) {\n  if ( parameters === void 0 ) parameters = {};\n\n  var defaultSelector = parameters.defaultSelector;\n  var constructor = parameters.constructor;\n  var app = parameters.app;\n  var methods = Utils.extend(\n    ConstructorMethods({\n      defaultSelector: defaultSelector,\n      constructor: constructor,\n      app: app,\n      domProp: 'f7Modal',\n    }),\n    {\n      open: function open(el, animate) {\n        var $el = $$1$1(el);\n        var instance = $el[0].f7Modal;\n        if (!instance) { instance = new constructor(app, { el: $el }); }\n        return instance.open(animate);\n      },\n      close: function close(el, animate) {\n        if ( el === void 0 ) el = defaultSelector;\n\n        var $el = $$1$1(el);\n        if ($el.length === 0) { return undefined; }\n        var instance = $el[0].f7Modal;\n        if (!instance) { instance = new constructor(app, { el: $el }); }\n        return instance.close(animate);\n      },\n    }\n  );\n  return methods;\n};\n\nvar Dialog = {\n  name: 'dialog',\n  params: {\n    dialog: {\n      title: undefined,\n      buttonOk: 'OK',\n      buttonCancel: 'Cancel',\n      usernamePlaceholder: 'Username',\n      passwordPlaceholder: 'Password',\n      preloaderTitle: 'Loading... ',\n      progressTitle: 'Loading... ',\n      closeByBackdropClick: false,\n    },\n  },\n  static: {\n    Dialog: Dialog$1,\n  },\n  create: function create() {\n    var app = this;\n    var defaultDialogTitle = app.params.dialog.title || app.name;\n    app.dialog = Utils.extend(\n      ModalMethods({\n        app: app,\n        constructor: Dialog$1,\n        defaultSelector: '.dialog.modal-in',\n      }),\n      {\n        // Shortcuts\n        alert: function alert() {\n          var args = [], len = arguments.length;\n          while ( len-- ) args[ len ] = arguments[ len ];\n\n          var text = args[0];\n          var title = args[1];\n          var callbackOk = args[2];\n          if (args.length === 2 && typeof args[1] === 'function') {\n            var assign;\n            (assign = args, text = assign[0], callbackOk = assign[1], title = assign[2]);\n          }\n          return new Dialog$1(app, {\n            title: typeof title === 'undefined' ? defaultDialogTitle : title,\n            text: text,\n            buttons: [{\n              text: app.params.dialog.buttonOk,\n              bold: true,\n              onClick: callbackOk,\n            }],\n          }).open();\n        },\n        prompt: function prompt() {\n          var args = [], len = arguments.length;\n          while ( len-- ) args[ len ] = arguments[ len ];\n\n          var text = args[0];\n          var title = args[1];\n          var callbackOk = args[2];\n          var callbackCancel = args[3];\n          if (typeof args[1] === 'function') {\n            var assign;\n            (assign = args, text = assign[0], callbackOk = assign[1], callbackCancel = assign[2], title = assign[3]);\n          }\n          return new Dialog$1(app, {\n            title: typeof title === 'undefined' ? defaultDialogTitle : title,\n            text: text,\n            content: '<div class=\"dialog-input-field item-input\"><div class=\"item-input-wrap\"><input type=\"text\" class=\"dialog-input\"></div></div>',\n            buttons: [\n              {\n                text: app.params.dialog.buttonCancel,\n              },\n              {\n                text: app.params.dialog.buttonOk,\n                bold: true,\n              } ],\n            onClick: function onClick(dialog, index) {\n              var inputValue = dialog.$el.find('.dialog-input').val();\n              if (index === 0 && callbackCancel) { callbackCancel(inputValue); }\n              if (index === 1 && callbackOk) { callbackOk(inputValue); }\n            },\n          }).open();\n        },\n        confirm: function confirm() {\n          var args = [], len = arguments.length;\n          while ( len-- ) args[ len ] = arguments[ len ];\n\n          var text = args[0];\n          var title = args[1];\n          var callbackOk = args[2];\n          var callbackCancel = args[3];\n          if (typeof args[1] === 'function') {\n            var assign;\n            (assign = args, text = assign[0], callbackOk = assign[1], callbackCancel = assign[2], title = assign[3]);\n          }\n          return new Dialog$1(app, {\n            title: typeof title === 'undefined' ? defaultDialogTitle : title,\n            text: text,\n            buttons: [\n              {\n                text: app.params.dialog.buttonCancel,\n                onClick: callbackCancel,\n              },\n              {\n                text: app.params.dialog.buttonOk,\n                bold: true,\n                onClick: callbackOk,\n              } ],\n          }).open();\n        },\n        login: function login() {\n          var args = [], len = arguments.length;\n          while ( len-- ) args[ len ] = arguments[ len ];\n\n          var text = args[0];\n          var title = args[1];\n          var callbackOk = args[2];\n          var callbackCancel = args[3];\n          if (typeof args[1] === 'function') {\n            var assign;\n            (assign = args, text = assign[0], callbackOk = assign[1], callbackCancel = assign[2], title = assign[3]);\n          }\n          return new Dialog$1(app, {\n            title: typeof title === 'undefined' ? defaultDialogTitle : title,\n            text: text,\n            content: (\"\\n              <div class=\\\"dialog-input-field dialog-input-double item-input\\\">\\n                <div class=\\\"item-input-wrap\\\">\\n                  <input type=\\\"text\\\" name=\\\"dialog-username\\\" placeholder=\\\"\" + (app.params.dialog.usernamePlaceholder) + \"\\\" class=\\\"dialog-input\\\">\\n                </div>\\n              </div>\\n              <div class=\\\"dialog-input-field dialog-input-double item-input\\\">\\n                <div class=\\\"item-input-wrap\\\">\\n                  <input type=\\\"password\\\" name=\\\"dialog-password\\\" placeholder=\\\"\" + (app.params.dialog.passwordPlaceholder) + \"\\\" class=\\\"dialog-input\\\">\\n                </div>\\n              </div>\"),\n            buttons: [\n              {\n                text: app.params.dialog.buttonCancel,\n              },\n              {\n                text: app.params.dialog.buttonOk,\n                bold: true,\n              } ],\n            onClick: function onClick(dialog, index) {\n              var username = dialog.$el.find('[name=\"dialog-username\"]').val();\n              var password = dialog.$el.find('[name=\"dialog-password\"]').val();\n              if (index === 0 && callbackCancel) { callbackCancel(username, password); }\n              if (index === 1 && callbackOk) { callbackOk(username, password); }\n            },\n          }).open();\n        },\n        password: function password() {\n          var args = [], len = arguments.length;\n          while ( len-- ) args[ len ] = arguments[ len ];\n\n          var text = args[0];\n          var title = args[1];\n          var callbackOk = args[2];\n          var callbackCancel = args[3];\n          if (typeof args[1] === 'function') {\n            var assign;\n            (assign = args, text = assign[0], callbackOk = assign[1], callbackCancel = assign[2], title = assign[3]);\n          }\n          return new Dialog$1(app, {\n            title: typeof title === 'undefined' ? defaultDialogTitle : title,\n            text: text,\n            content: (\"\\n              <div class=\\\"dialog-input-field item-input\\\">\\n                <div class=\\\"item-input-wrap\\\">\\n                  <input type=\\\"password\\\" name=\\\"dialog-password\\\" placeholder=\\\"\" + (app.params.dialog.passwordPlaceholder) + \"\\\" class=\\\"dialog-input\\\">\\n                </div>\\n              </div>\"),\n            buttons: [\n              {\n                text: app.params.dialog.buttonCancel,\n              },\n              {\n                text: app.params.dialog.buttonOk,\n                bold: true,\n              } ],\n            onClick: function onClick(dialog, index) {\n              var password = dialog.$el.find('[name=\"dialog-password\"]').val();\n              if (index === 0 && callbackCancel) { callbackCancel(password); }\n              if (index === 1 && callbackOk) { callbackOk(password); }\n            },\n          }).open();\n        },\n        preloader: function preloader(title) {\n          var preloaderInner = app.theme !== 'md' ? '' : Utils.mdPreloaderContent;\n          return new Dialog$1(app, {\n            title: typeof title === 'undefined' ? app.params.dialog.preloaderTitle : title,\n            content: (\"<div class=\\\"preloader\\\">\" + preloaderInner + \"</div>\"),\n            cssClass: 'dialog-preloader',\n          }).open();\n        },\n        progress: function progress() {\n          var args = [], len = arguments.length;\n          while ( len-- ) args[ len ] = arguments[ len ];\n\n          var title = args[0];\n          var progress = args[1];\n          var color = args[2];\n          if (args.length === 2) {\n            if (typeof args[0] === 'number') {\n              var assign;\n              (assign = args, progress = assign[0], color = assign[1], title = assign[2]);\n            } else if (typeof args[0] === 'string' && typeof args[1] === 'string') {\n              var assign$1;\n              (assign$1 = args, title = assign$1[0], color = assign$1[1], progress = assign$1[2]);\n            }\n          } else if (args.length === 1) {\n            if (typeof args[0] === 'number') {\n              var assign$2;\n              (assign$2 = args, progress = assign$2[0], title = assign$2[1], color = assign$2[2]);\n            }\n          }\n          var infinite = typeof progress === 'undefined';\n          var dialog = new Dialog$1(app, {\n            title: typeof title === 'undefined' ? app.params.dialog.progressTitle : title,\n            cssClass: 'dialog-progress',\n            content: (\"\\n              <div class=\\\"progressbar\" + (infinite ? '-infinite' : '') + (color ? (\" color-\" + color) : '') + \"\\\">\\n                \" + (!infinite ? '<span></span>' : '') + \"\\n              </div>\\n            \"),\n          });\n          if (!infinite) { dialog.setProgress(progress); }\n          return dialog.open();\n        },\n      }\n    );\n  },\n  clicks: {\n    '.dialog-backdrop': function closeDialog() {\n      var app = this;\n      if (!app.params.dialog.closeByBackdropClick) { return; }\n      app.dialog.close();\n    },\n  },\n};\n\nvar Popup$1 = (function (Modal) {\n  function Popup(app, params) {\n    var extendedParams = Utils.extend(\n      { on: {} },\n      app.params.popup,\n      params\n    );\n\n    // Extends with open/close Modal methods;\n    Modal.call(this, app, extendedParams);\n\n    var popup = this;\n\n    popup.params = extendedParams;\n\n    // Find Element\n    var $el;\n    if (!popup.params.el) {\n      $el = $$1$1(popup.params.content);\n    } else {\n      $el = $$1$1(popup.params.el);\n    }\n\n    if ($el && $el.length > 0 && $el[0].f7Modal) {\n      return $el[0].f7Modal;\n    }\n\n    if ($el.length === 0) {\n      return popup.destroy();\n    }\n\n    var $backdropEl;\n    if (popup.params.backdrop) {\n      $backdropEl = app.root.children('.popup-backdrop');\n      if ($backdropEl.length === 0) {\n        $backdropEl = $$1$1('<div class=\"popup-backdrop\"></div>');\n        app.root.append($backdropEl);\n      }\n    }\n\n    Utils.extend(popup, {\n      app: app,\n      $el: $el,\n      el: $el[0],\n      $backdropEl: $backdropEl,\n      backdropEl: $backdropEl && $backdropEl[0],\n      type: 'popup',\n    });\n\n    $el[0].f7Modal = popup;\n\n    return popup;\n  }\n\n  if ( Modal ) Popup.__proto__ = Modal;\n  Popup.prototype = Object.create( Modal && Modal.prototype );\n  Popup.prototype.constructor = Popup;\n\n  return Popup;\n}(Modal$1));\n\nvar Popup = {\n  name: 'popup',\n  params: {\n    popup: {\n      backdrop: true,\n      closeByBackdropClick: true,\n    },\n  },\n  static: {\n    Popup: Popup$1,\n  },\n  create: function create() {\n    var app = this;\n    app.popup = ModalMethods({\n      app: app,\n      constructor: Popup$1,\n      defaultSelector: '.popup.modal-in',\n    });\n  },\n  clicks: {\n    '.popup-open': function openPopup($clickedEl, data) {\n      if ( data === void 0 ) data = {};\n\n      var app = this;\n      app.popup.open(data.popup, data.animate);\n    },\n    '.popup-close': function closePopup($clickedEl, data) {\n      if ( data === void 0 ) data = {};\n\n      var app = this;\n      app.popup.close(data.popup, data.animate);\n    },\n    '.popup-backdrop': function closePopup() {\n      var app = this;\n      if (!app.params.popup.closeByBackdropClick) { return; }\n      app.popup.close();\n    },\n  },\n};\n\nvar LoginScreen$1 = (function (Modal) {\n  function LoginScreen(app, params) {\n    var extendedParams = Utils.extend({\n      on: {},\n    }, params);\n\n    // Extends with open/close Modal methods;\n    Modal.call(this, app, extendedParams);\n\n    var loginScreen = this;\n\n    loginScreen.params = extendedParams;\n\n    // Find Element\n    var $el;\n    if (!loginScreen.params.el) {\n      $el = $$1$1(loginScreen.params.content);\n    } else {\n      $el = $$1$1(loginScreen.params.el);\n    }\n\n    if ($el && $el.length > 0 && $el[0].f7Modal) {\n      return $el[0].f7Modal;\n    }\n\n    if ($el.length === 0) {\n      return loginScreen.destroy();\n    }\n\n    Utils.extend(loginScreen, {\n      app: app,\n      $el: $el,\n      el: $el[0],\n      type: 'loginScreen',\n    });\n\n    $el[0].f7Modal = loginScreen;\n\n    return loginScreen;\n  }\n\n  if ( Modal ) LoginScreen.__proto__ = Modal;\n  LoginScreen.prototype = Object.create( Modal && Modal.prototype );\n  LoginScreen.prototype.constructor = LoginScreen;\n\n  return LoginScreen;\n}(Modal$1));\n\nvar LoginScreen = {\n  name: 'loginScreen',\n  static: {\n    LoginScreen: LoginScreen$1,\n  },\n  create: function create() {\n    var app = this;\n    app.loginScreen = ModalMethods({\n      app: app,\n      constructor: LoginScreen$1,\n      defaultSelector: '.login-screen.modal-in',\n    });\n  },\n  clicks: {\n    '.login-screen-open': function openLoginScreen($clickedEl, data) {\n      if ( data === void 0 ) data = {};\n\n      var app = this;\n      app.loginScreen.open(data.loginScreen, data.animate);\n    },\n    '.login-screen-close': function closeLoginScreen($clickedEl, data) {\n      if ( data === void 0 ) data = {};\n\n      var app = this;\n      app.loginScreen.close(data.loginScreen, data.animate);\n    },\n  },\n};\n\nvar Popover$1 = (function (Modal) {\n  function Popover(app, params) {\n    var extendedParams = Utils.extend(\n      { on: {} },\n      app.params.popover,\n      params\n    );\n\n    // Extends with open/close Modal methods;\n    Modal.call(this, app, extendedParams);\n\n    var popover = this;\n\n    popover.params = extendedParams;\n\n    // Find Element\n    var $el;\n    if (!popover.params.el) {\n      $el = $$1$1(popover.params.content);\n    } else {\n      $el = $$1$1(popover.params.el);\n    }\n\n    if ($el && $el.length > 0 && $el[0].f7Modal) {\n      return $el[0].f7Modal;\n    }\n\n    // Find Target\n    var $targetEl = $$1$1(popover.params.targetEl).eq(0);\n\n    if ($el.length === 0) {\n      return popover.destroy();\n    }\n\n    // Backdrop\n    var $backdropEl;\n    if (popover.params.backdrop) {\n      $backdropEl = app.root.children('.popover-backdrop');\n      if ($backdropEl.length === 0) {\n        $backdropEl = $$1$1('<div class=\"popover-backdrop\"></div>');\n        app.root.append($backdropEl);\n      }\n    }\n\n    // Find Angle\n    var $angleEl;\n    if ($el.find('.popover-angle').length === 0) {\n      $angleEl = $$1$1('<div class=\"popover-angle\"></div>');\n      $el.prepend($angleEl);\n    } else {\n      $angleEl = $el.find('.popover-angle');\n    }\n\n    // Open\n    var originalOpen = popover.open;\n\n    Utils.extend(popover, {\n      app: app,\n      $el: $el,\n      el: $el[0],\n      $targetEl: $targetEl,\n      targetEl: $targetEl[0],\n      $angleEl: $angleEl,\n      angleEl: $angleEl[0],\n      $backdropEl: $backdropEl,\n      backdropEl: $backdropEl && $backdropEl[0],\n      type: 'popover',\n      open: function open() {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        var targetEl = args[0];\n        var animate = args[1];\n        if (typeof args[0] === 'boolean') { var assign;\n          (assign = args, animate = assign[0], targetEl = assign[1]); }\n        if (targetEl) {\n          popover.$targetEl = $$1$1(targetEl);\n          popover.targetEl = popover.$targetEl[0];\n        }\n        originalOpen.call(popover, animate);\n      },\n    });\n\n    function handleResize() {\n      popover.resize();\n    }\n    popover.on('popoverOpen', function () {\n      popover.resize();\n      app.on('resize', handleResize);\n      popover.on('popoverClose popoverBeforeDestroy', function () {\n        app.off('resize', handleResize);\n      });\n    });\n\n    function handleClick(e) {\n      var target = e.target;\n      if ($$1$1(target).closest(popover.el).length === 0) {\n        popover.close();\n      }\n    }\n\n    popover.on('popoverOpened', function () {\n      if (popover.params.closeByOutsideClick && !popover.params.backdrop) {\n        app.on('click', handleClick);\n      }\n    });\n    popover.on('popoverClose', function () {\n      if (popover.params.closeByOutsideClick && !popover.params.backdrop) {\n        app.off('click', handleClick);\n      }\n    });\n\n    $el[0].f7Modal = popover;\n\n    return popover;\n  }\n\n  if ( Modal ) Popover.__proto__ = Modal;\n  Popover.prototype = Object.create( Modal && Modal.prototype );\n  Popover.prototype.constructor = Popover;\n  Popover.prototype.resize = function resize () {\n    var popover = this;\n    var app = popover.app;\n    var $el = popover.$el;\n    var $targetEl = popover.$targetEl;\n    var $angleEl = popover.$angleEl;\n    var ref = popover.params;\n    var targetX = ref.targetX;\n    var targetY = ref.targetY;\n    $el.css({ left: '', top: '' });\n    var ref$1 = [$el.width(), $el.height()];\n    var width = ref$1[0];\n    var height = ref$1[1];\n    var angleSize = 0;\n    var angleLeft;\n    var angleTop;\n    if (app.theme === 'ios') {\n      $angleEl.removeClass('on-left on-right on-top on-bottom').css({ left: '', top: '' });\n      angleSize = $angleEl.width() / 2;\n    } else {\n      $el.removeClass('popover-on-left popover-on-right popover-on-top popover-on-bottom').css({ left: '', top: '' });\n    }\n\n    var targetWidth;\n    var targetHeight;\n    var targetOffsetLeft;\n    var targetOffsetTop;\n    if ($targetEl && $targetEl.length > 0) {\n      targetWidth = $targetEl.outerWidth();\n      targetHeight = $targetEl.outerHeight();\n\n      var targetOffset = $targetEl.offset();\n      targetOffsetLeft = targetOffset.left - app.left;\n      targetOffsetTop = targetOffset.top - app.top;\n\n      var targetParentPage = $targetEl.parents('.page');\n      if (targetParentPage.length > 0) {\n        targetOffsetTop -= targetParentPage[0].scrollTop;\n      }\n    } else if (typeof targetX !== 'undefined' && targetY !== 'undefined') {\n      targetOffsetLeft = targetX;\n      targetOffsetTop = targetY;\n      targetWidth = popover.params.targetWidth || 0;\n      targetHeight = popover.params.targetHeight || 0;\n    }\n\n    var ref$2 = [0, 0, 0];\n    var left = ref$2[0];\n    var top = ref$2[1];\n    var diff = ref$2[2];\n    // Top Position\n    var position = app.theme === 'md' ? 'bottom' : 'top';\n    if (app.theme === 'md') {\n      if (height < app.height - targetOffsetTop - targetHeight) {\n        // On bottom\n        position = 'bottom';\n        top = targetOffsetTop;\n      } else if (height < targetOffsetTop) {\n        // On top\n        top = (targetOffsetTop - height) + targetHeight;\n        position = 'top';\n      } else {\n        // On middle\n        position = 'bottom';\n        top = targetOffsetTop;\n      }\n\n      if (top <= 0) {\n        top = 8;\n      } else if (top + height >= app.height) {\n        top = app.height - height - 8;\n      }\n\n      // Horizontal Position\n      left = (targetOffsetLeft + targetWidth) - width - 8;\n      if (left + width >= app.width - 8) {\n        left = (targetOffsetLeft + targetWidth) - width - 8;\n      }\n      if (left < 8) {\n        left = 8;\n      }\n      if (position === 'top') {\n        $el.addClass('popover-on-top');\n      }\n      if (position === 'bottom') {\n        $el.addClass('popover-on-bottom');\n      }\n    } else {\n      if ((height + angleSize) < targetOffsetTop) {\n        // On top\n        top = targetOffsetTop - height - angleSize;\n      } else if ((height + angleSize) < app.height - targetOffsetTop - targetHeight) {\n        // On bottom\n        position = 'bottom';\n        top = targetOffsetTop + targetHeight + angleSize;\n      } else {\n        // On middle\n        position = 'middle';\n        top = ((targetHeight / 2) + targetOffsetTop) - (height / 2);\n        diff = top;\n        if (top <= 0) {\n          top = 5;\n        } else if (top + height >= app.height) {\n          top = app.height - height - 5;\n        }\n        diff -= top;\n      }\n\n      // Horizontal Position\n      if (position === 'top' || position === 'bottom') {\n        left = ((targetWidth / 2) + targetOffsetLeft) - (width / 2);\n        diff = left;\n        if (left < 5) { left = 5; }\n        if (left + width > app.width) { left = app.width - width - 5; }\n        if (left < 0) { left = 0; }\n        if (position === 'top') {\n          $angleEl.addClass('on-bottom');\n        }\n        if (position === 'bottom') {\n          $angleEl.addClass('on-top');\n        }\n        diff -= left;\n        angleLeft = ((width / 2) - angleSize) + diff;\n        angleLeft = Math.max(Math.min(angleLeft, width - (angleSize * 2) - 13), 13);\n        $angleEl.css({ left: (angleLeft + \"px\") });\n      } else if (position === 'middle') {\n        left = targetOffsetLeft - width - angleSize;\n        $angleEl.addClass('on-right');\n        if (left < 5 || (left + width > app.width)) {\n          if (left < 5) { left = targetOffsetLeft + targetWidth + angleSize; }\n          if (left + width > app.width) { left = app.width - width - 5; }\n          $angleEl.removeClass('on-right').addClass('on-left');\n        }\n        angleTop = ((height / 2) - angleSize) + diff;\n        angleTop = Math.max(Math.min(angleTop, height - (angleSize * 2) - 13), 13);\n        $angleEl.css({ top: (angleTop + \"px\") });\n      }\n    }\n\n    // Apply Styles\n    $el.css({ top: (top + \"px\"), left: (left + \"px\") });\n  };\n\n  return Popover;\n}(Modal$1));\n\nvar Popover = {\n  name: 'popover',\n  params: {\n    popover: {\n      closeByBackdropClick: true,\n      closeByOutsideClick: true,\n      backdrop: true,\n    },\n  },\n  static: {\n    Popover: Popover$1,\n  },\n  create: function create() {\n    var app = this;\n    app.popover = Utils.extend(\n      ModalMethods({\n        app: app,\n        constructor: Popover$1,\n        defaultSelector: '.popover.modal-in',\n      }),\n      {\n        open: function open(popoverEl, targetEl, animate) {\n          var $popoverEl = $$1$1(popoverEl);\n          var popover = $popoverEl[0].f7Modal;\n          if (!popover) { popover = new Popover$1(app, { el: $popoverEl, targetEl: targetEl }); }\n          return popover.open(targetEl, animate);\n        },\n      }\n    );\n  },\n  clicks: {\n    '.popover-open': function openPopover($clickedEl, data) {\n      if ( data === void 0 ) data = {};\n\n      var app = this;\n      app.popover.open(data.popover, $clickedEl, data.animate);\n    },\n    '.popover-close': function closePopover($clickedEl, data) {\n      if ( data === void 0 ) data = {};\n\n      var app = this;\n      app.popover.close(data.popover, data.animate);\n    },\n    '.popover-backdrop': function closePopover() {\n      var app = this;\n      if (!app.params.popover.closeByBackdropClick) { return; }\n      app.popover.close();\n    },\n  },\n};\n\n/* eslint indent: [\"off\"] */\nvar Actions$1 = (function (Modal) {\n  function Actions(app, params) {\n    var extendedParams = Utils.extend(\n      { on: {} },\n      app.params.actions,\n      params\n    );\n\n    // Extends with open/close Modal methods;\n    Modal.call(this, app, extendedParams);\n\n    var actions = this;\n\n    actions.params = extendedParams;\n\n    // Buttons\n    var groups;\n    if (actions.params.buttons) {\n      groups = actions.params.buttons;\n      if (!Array.isArray(groups[0])) { groups = [groups]; }\n    }\n    actions.groups = groups;\n\n    // Find Element\n    var $el;\n    if (actions.params.el) {\n      $el = $$1$1(actions.params.el);\n    } else if (actions.params.content) {\n      $el = $$1$1(actions.params.content);\n    } else if (actions.params.buttons) {\n      if (actions.params.convertToPopover) {\n        actions.popoverHtml = actions.renderPopover();\n      }\n      actions.actionsHtml = actions.render();\n    }\n\n    if ($el && $el.length > 0 && $el[0].f7Modal) {\n      return $el[0].f7Modal;\n    }\n\n    if ($el && $el.length === 0 && !(actions.actionsHtml || actions.popoverHtml)) {\n      return actions.destroy();\n    }\n\n    // Backdrop\n    var $backdropEl;\n    if (actions.params.backdrop) {\n      $backdropEl = app.root.children('.actions-backdrop');\n      if ($backdropEl.length === 0) {\n        $backdropEl = $$1$1('<div class=\"actions-backdrop\"></div>');\n        app.root.append($backdropEl);\n      }\n    }\n\n    var originalOpen = actions.open;\n    var originalClose = actions.close;\n\n    var popover;\n    function buttonOnClick(e) {\n      var buttonEl = this;\n      var buttonIndex;\n      var groupIndex;\n      if ($$1$1(buttonEl).hasClass('item-link')) {\n        buttonIndex = $$1$1(buttonEl).parents('li').index();\n        groupIndex = $$1$1(buttonEl).parents('.list').index();\n      } else {\n        buttonIndex = $$1$1(buttonEl).index();\n        groupIndex = $$1$1(buttonEl).parents('.actions-group').index();\n      }\n      var button = groups[groupIndex][buttonIndex];\n      if (button.onClick) { button.onClick(actions, e); }\n      if (actions.params.onClick) { actions.params.onClick(actions, e); }\n      if (button.close !== false) { actions.close(); }\n    }\n    actions.open = function open(animate) {\n      var convertToPopover = false;\n      var ref = actions.params;\n      var targetEl = ref.targetEl;\n      var targetX = ref.targetX;\n      var targetY = ref.targetY;\n      var targetWidth = ref.targetWidth;\n      var targetHeight = ref.targetHeight;\n      if (actions.params.convertToPopover && (targetEl || (targetX !== undefined && targetY !== undefined))) {\n        // Popover\n        if (\n          actions.params.forceToPopover ||\n          (app.device.ios && app.device.ipad) ||\n          app.width >= 768\n        ) {\n          convertToPopover = true;\n        }\n      }\n      if (convertToPopover && actions.popoverHtml) {\n        popover = app.popover.create({\n          content: actions.popoverHtml,\n          backdrop: actions.params.backdrop,\n          targetEl: targetEl,\n          targetX: targetX,\n          targetY: targetY,\n          targetWidth: targetWidth,\n          targetHeight: targetHeight,\n        });\n        popover.open(animate);\n        popover.once('popoverOpened', function () {\n          popover.$el.find('.item-link').each(function (groupIndex, buttonEl) {\n            $$1$1(buttonEl).on('click', buttonOnClick);\n          });\n        });\n        popover.once('popoverClosed', function () {\n          popover.$el.find('.item-link').each(function (groupIndex, buttonEl) {\n            $$1$1(buttonEl).off('click', buttonOnClick);\n          });\n          Utils.nextTick(function () {\n            popover.destroy();\n            popover = undefined;\n          });\n        });\n      } else {\n        actions.$el = actions.actionsHtml ? $$1$1(actions.actionsHtml) : actions.$el;\n        actions.$el[0].f7Modal = actions;\n        actions.$el.find('.actions-button').each(function (groupIndex, buttonEl) {\n          $$1$1(buttonEl).on('click', buttonOnClick);\n        });\n        actions.once('actionsClosed', function () {\n          actions.$el.find('.list-button').each(function (groupIndex, buttonEl) {\n            $$1$1(buttonEl).off('click', buttonOnClick);\n          });\n        });\n        originalOpen.call(actions, animate);\n      }\n      return actions;\n    };\n\n    actions.close = function close(animate) {\n      if (popover) {\n        popover.close(animate);\n      } else {\n        originalClose.call(actions, animate);\n      }\n      return actions;\n    };\n\n    Utils.extend(actions, {\n      app: app,\n      $el: $el,\n      el: $el ? $el[0] : undefined,\n      $backdropEl: $backdropEl,\n      backdropEl: $backdropEl && $backdropEl[0],\n      type: 'actions',\n    });\n\n    if ($el) {\n      $el[0].f7Modal = actions;\n    }\n\n    return actions;\n  }\n\n  if ( Modal ) Actions.__proto__ = Modal;\n  Actions.prototype = Object.create( Modal && Modal.prototype );\n  Actions.prototype.constructor = Actions;\n  Actions.prototype.render = function render () {\n    var actions = this;\n    if (actions.params.render) { return actions.params.render.call(actions, actions); }\n    var groups = actions.groups;\n    return (\"\\n      <div class=\\\"actions-modal\" + (actions.params.grid ? ' actions-grid' : '') + \"\\\">\\n        \" + (groups.map(function (group) { return (\"<div class=\\\"actions-group\\\">\\n            \" + (group.map(function (button) {\n              var buttonClasses = [(\"actions-\" + (button.label ? 'label' : 'button'))];\n              var color = button.color;\n              var bg = button.bg;\n              var bold = button.bold;\n              var disabled = button.disabled;\n              var label = button.label;\n              var text = button.text;\n              var icon = button.icon;\n              if (color) { buttonClasses.push((\"color-\" + color)); }\n              if (bg) { buttonClasses.push((\"bg-\" + color)); }\n              if (bold) { buttonClasses.push('actions-button-bold'); }\n              if (disabled) { buttonClasses.push('disabled'); }\n              if (label) {\n                return (\"<div class=\\\"\" + (buttonClasses.join(' ')) + \"\\\">\" + text + \"</div>\");\n              }\n              return (\"\\n                <div class=\\\"\" + (buttonClasses.join(' ')) + \"\\\">\\n                  \" + (icon ? (\"<div class=\\\"actions-button-media\\\">\" + icon + \"</div>\") : '') + \"\\n                  <div class=\\\"actions-button-text\\\">\" + text + \"</div>\\n                </div>\").trim();\n            }).join('')) + \"\\n          </div>\"); }).join('')) + \"\\n      </div>\\n    \").trim();\n  };\n  Actions.prototype.renderPopover = function renderPopover () {\n    var actions = this;\n    if (actions.params.renderPopover) { return actions.params.renderPopover.call(actions, actions); }\n    var groups = actions.groups;\n    return (\"\\n      <div class=\\\"popover popover-from-actions\\\">\\n        <div class=\\\"popover-inner\\\">\\n          \" + (groups.map(function (group) { return (\"\\n            <div class=\\\"list\\\">\\n              <ul>\\n                \" + (group.map(function (button) {\n                  var itemClasses = [];\n                  var color = button.color;\n                  var bg = button.bg;\n                  var bold = button.bold;\n                  var disabled = button.disabled;\n                  var label = button.label;\n                  var text = button.text;\n                  var icon = button.icon;\n                  if (color) { itemClasses.push((\"color-\" + color)); }\n                  if (bg) { itemClasses.push((\"bg-\" + bg)); }\n                  if (bold) { itemClasses.push('popover-from-actions-bold'); }\n                  if (disabled) { itemClasses.push('disabled'); }\n                  if (label) {\n                    itemClasses.push('popover-from-actions-label');\n                    return (\"<li class=\\\"\" + (itemClasses.join(' ')) + \"\\\">\" + text + \"</li>\");\n                  }\n                  itemClasses.push('item-link');\n                  if (icon) {\n                    itemClasses.push('item-content');\n                    return (\"\\n                      <li>\\n                        <a class=\\\"\" + (itemClasses.join(' ')) + \"\\\">\\n                          <div class=\\\"item-media\\\">\\n                            \" + icon + \"\\n                          </div>\\n                          <div class=\\\"item-inner\\\">\\n                            <div class=\\\"item-title\\\">\\n                              \" + text + \"\\n                            </div>\\n                          </div>\\n                        </a>\\n                      </li>\\n                    \");\n                  }\n                  itemClasses.push('list-button');\n                  return (\"\\n                    <li>\\n                      <a href=\\\"#\\\" class=\\\"list-button \" + (itemClasses.join(' ')) + \"\\\">\" + text + \"</a>\\n                    </li>\\n                  \");\n                }).join('')) + \"\\n              </ul>\\n            </div>\\n          \"); }).join('')) + \"\\n        </div>\\n      </div>\\n    \").trim();\n  };\n\n  return Actions;\n}(Modal$1));\n\nvar Actions = {\n  name: 'actions',\n  params: {\n    actions: {\n      convertToPopover: true,\n      forceToPopover: false,\n      closeByBackdropClick: true,\n      render: null,\n      renderPopover: null,\n      backdrop: true,\n    },\n  },\n  static: {\n    Actions: Actions$1,\n  },\n  create: function create() {\n    var app = this;\n    app.actions = ModalMethods({\n      app: app,\n      constructor: Actions$1,\n      defaultSelector: '.actions-modal.modal-in',\n    });\n  },\n  clicks: {\n    '.actions-open': function openActions($clickedEl, data) {\n      if ( data === void 0 ) data = {};\n\n      var app = this;\n      app.actions.open(data.actions, data.animate);\n    },\n    '.actions-close': function closeActions($clickedEl, data) {\n      if ( data === void 0 ) data = {};\n\n      var app = this;\n      app.actions.close(data.actions, data.animate);\n    },\n    '.actions-backdrop': function closeActions() {\n      var app = this;\n      if (!app.params.actions.closeByBackdropClick) { return; }\n      app.actions.close();\n    },\n  },\n};\n\nvar Sheet$1 = (function (Modal) {\n  function Sheet(app, params) {\n    var extendedParams = Utils.extend({\n      backdrop: app.theme === 'md',\n      closeByOutsideClick: app.params.sheet.closeByOutsideClick,\n      on: {},\n    }, params);\n\n    // Extends with open/close Modal methods;\n    Modal.call(this, app, extendedParams);\n\n    var sheet = this;\n\n    sheet.params = extendedParams;\n\n    // Find Element\n    var $el;\n    if (!sheet.params.el) {\n      $el = $$1$1(sheet.params.content);\n    } else {\n      $el = $$1$1(sheet.params.el);\n    }\n\n    if ($el && $el.length > 0 && $el[0].f7Modal) {\n      return $el[0].f7Modal;\n    }\n\n    if ($el.length === 0) {\n      return sheet.destroy();\n    }\n    var $backdropEl;\n    if (sheet.params.backdrop) {\n      $backdropEl = app.root.children('.sheet-backdrop');\n      if ($backdropEl.length === 0) {\n        $backdropEl = $$1$1('<div class=\"sheet-backdrop\"></div>');\n        app.root.append($backdropEl);\n      }\n    }\n\n    var $pageContentEl;\n    function scrollToOpen() {\n      var $scrollEl = $$1$1(sheet.params.scrollToEl).eq(0);\n      if ($scrollEl.length === 0) { return; }\n      $pageContentEl = $scrollEl.parents('.page-content');\n      if ($pageContentEl.length === 0) { return; }\n\n      var paddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n      var paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n      var pageHeight = $pageContentEl[0].offsetHeight - paddingTop - $el.height();\n      var pageScrollHeight = $pageContentEl[0].scrollHeight - paddingTop - $el.height();\n      var pageScroll = $pageContentEl.scrollTop();\n\n      var newPaddingBottom;\n\n      var scrollElTop = ($scrollEl.offset().top - paddingTop) + $scrollEl[0].offsetHeight;\n      if (scrollElTop > pageHeight) {\n        var scrollTop = (pageScroll + scrollElTop) - pageHeight;\n        if (scrollTop + pageHeight > pageScrollHeight) {\n          newPaddingBottom = ((scrollTop + pageHeight) - pageScrollHeight) + paddingBottom;\n          if (pageHeight === pageScrollHeight) {\n            newPaddingBottom = $el.height();\n          }\n          $pageContentEl.css({\n            'padding-bottom': (newPaddingBottom + \"px\"),\n          });\n        }\n        $pageContentEl.scrollTop(scrollTop, 300);\n      }\n    }\n\n    function scrollToClose() {\n      if ($pageContentEl && $pageContentEl.length > 0) {\n        $pageContentEl.css({\n          'padding-bottom': '',\n        });\n      }\n    }\n    function handleClick(e) {\n      var target = e.target;\n      if ($$1$1(target).closest(sheet.el).length === 0) {\n        sheet.close();\n      }\n    }\n\n    sheet.on('sheetOpen', function () {\n      if (sheet.params.scrollToEl) {\n        scrollToOpen();\n      }\n    });\n    sheet.on('sheetOpened', function () {\n      if (sheet.params.closeByOutsideClick && !sheet.params.backdrop) {\n        app.on('click', handleClick);\n      }\n    });\n    sheet.on('sheetClose', function () {\n      if (sheet.params.scrollToEl) {\n        scrollToClose();\n      }\n      if (sheet.params.closeByOutsideClick && !sheet.params.backdrop) {\n        app.off('click', handleClick);\n      }\n    });\n\n    Utils.extend(sheet, {\n      app: app,\n      $el: $el,\n      el: $el[0],\n      $backdropEl: $backdropEl,\n      backdropEl: $backdropEl && $backdropEl[0],\n      type: 'sheet',\n    });\n\n    $el[0].f7Modal = sheet;\n\n    return sheet;\n  }\n\n  if ( Modal ) Sheet.__proto__ = Modal;\n  Sheet.prototype = Object.create( Modal && Modal.prototype );\n  Sheet.prototype.constructor = Sheet;\n\n  return Sheet;\n}(Modal$1));\n\nvar Sheet = {\n  name: 'sheet',\n  params: {\n    sheet: {\n      closeByBackdropClick: true,\n      closeByOutsideClick: false,\n    },\n  },\n  static: {\n    Sheet: Sheet$1,\n  },\n  create: function create() {\n    var app = this;\n    app.sheet = Utils.extend(\n      {},\n      ModalMethods({\n        app: app,\n        constructor: Sheet$1,\n        defaultSelector: '.sheet-modal.modal-in',\n      })\n    );\n  },\n  clicks: {\n    '.sheet-open': function openSheet($clickedEl, data) {\n      if ( data === void 0 ) data = {};\n\n      var app = this;\n      if ($$1$1('.sheet-modal.modal-in').length > 0 && data.sheet && $$1$1(data.sheet)[0] !== $$1$1('.sheet-modal.modal-in')[0]) {\n        app.sheet.close('.sheet-modal.modal-in');\n      }\n      app.sheet.open(data.sheet, data.animate);\n    },\n    '.sheet-close': function closeSheet($clickedEl, data) {\n      if ( data === void 0 ) data = {};\n\n      var app = this;\n      app.sheet.close(data.sheet, data.animate);\n    },\n    '.sheet-backdrop': function closeSheet() {\n      var app = this;\n      if (!app.params.sheet.closeByBackdropClick) { return; }\n      app.sheet.close();\n    },\n  },\n};\n\nvar Toast$1 = (function (Modal) {\n  function Toast(app, params) {\n    var extendedParams = Utils.extend({\n      on: {},\n    }, app.params.toast, params);\n\n    // Extends with open/close Modal methods;\n    Modal.call(this, app, extendedParams);\n\n    var toast = this;\n\n    toast.app = app;\n\n    toast.params = extendedParams;\n\n    var ref = toast.params;\n    var closeButton = ref.closeButton;\n    var closeTimeout = ref.closeTimeout;\n\n    var $el;\n    if (!toast.params.el) {\n      // Find Element\n      var toastHtml = toast.render();\n\n      $el = $$1$1(toastHtml);\n    } else {\n      $el = $$1$1(toast.params.el);\n    }\n\n    if ($el && $el.length > 0 && $el[0].f7Modal) {\n      return $el[0].f7Modal;\n    }\n\n    if ($el.length === 0) {\n      return toast.destroy();\n    }\n\n    Utils.extend(toast, {\n      $el: $el,\n      el: $el[0],\n      type: 'toast',\n    });\n\n    $el[0].f7Modal = toast;\n\n    if (closeButton) {\n      $el.find('.toast-button').on('click', function () {\n        toast.emit('local::closeButtonClick toastCloseButtonClick', toast);\n        toast.close();\n      });\n\n      toast.on('beforeDestroy', function () {\n        $el.find('.toast-button').off('click');\n      });\n    }\n\n    var timeoutId;\n    toast.on('open', function () {\n      $$1$1('.toast.modal-in').each(function (index, openedEl) {\n        var toastInstance = app.toast.get(openedEl);\n        if (openedEl !== toast.el && toastInstance) {\n          toastInstance.close();\n        }\n      });\n      if (closeTimeout) {\n        timeoutId = Utils.nextTick(function () {\n          toast.close();\n        }, closeTimeout);\n      }\n    });\n    toast.on('close', function () {\n      window.clearTimeout(timeoutId);\n    });\n\n    return toast;\n  }\n\n  if ( Modal ) Toast.__proto__ = Modal;\n  Toast.prototype = Object.create( Modal && Modal.prototype );\n  Toast.prototype.constructor = Toast;\n  Toast.prototype.render = function render () {\n    var toast = this;\n    var app = toast.app;\n    if (toast.params.render) { return toast.params.render.call(toast, toast); }\n    var ref = toast.params;\n    var position = ref.position;\n    var cssClass = ref.cssClass;\n    var icon = ref.icon;\n    var text = ref.text;\n    var closeButton = ref.closeButton;\n    var closeButtonColor = ref.closeButtonColor;\n    var closeButtonText = ref.closeButtonText;\n    return (\"\\n      <div class=\\\"toast toast-\" + position + \" \" + (cssClass || '') + \" \" + (icon ? 'toast-with-icon' : '') + \"\\\">\\n        <div class=\\\"toast-content\\\">\\n          \" + (icon ? (\"<div class=\\\"toast-icon\\\">\" + icon + \"</div>\") : '') + \"\\n          <div class=\\\"toast-text\\\">\" + text + \"</div>\\n          \" + (closeButton && !icon ? (\"\\n          <a class=\\\"toast-button \" + (app.theme === 'md' ? 'button' : 'link') + \" \" + (closeButtonColor ? (\"color-\" + closeButtonColor) : '') + \"\\\">\" + closeButtonText + \"</a>\\n          \").trim() : '') + \"\\n        </div>\\n      </div>\\n    \").trim();\n  };\n\n  return Toast;\n}(Modal$1));\n\nvar Toast = {\n  name: 'toast',\n  static: {\n    Toast: Toast$1,\n  },\n  create: function create() {\n    var app = this;\n    app.toast = Utils.extend(\n      {},\n      ModalMethods({\n        app: app,\n        constructor: Toast$1,\n        defaultSelector: '.toast.modal-in',\n      })\n    );\n  },\n  params: {\n    toast: {\n      icon: null,\n      text: null,\n      position: 'bottom',\n      closeButton: false,\n      closeButtonColor: null,\n      closeButtonText: 'Ok',\n      closeTimeout: null,\n      cssClass: null,\n      render: null,\n    },\n  },\n};\n\nvar Preloader = {\n  init: function init(el) {\n    var app = this;\n    if (app.theme !== 'md') { return; }\n    var $el = $$1$1(el);\n    if ($el.length === 0 || $el.children('.preloader-inner').length > 0) { return; }\n    $el.append(Utils.mdPreloaderContent);\n  },\n  // Modal\n  visible: false,\n  show: function show(color) {\n    if ( color === void 0 ) color = 'white';\n\n    var app = this;\n    if (Preloader.visible) { return; }\n    var preloaderInner = app.theme !== 'md' ? '' : Utils.mdPreloaderContent;\n    $$1$1('html').addClass('with-modal-preloader');\n    app.root.append((\"\\n      <div class=\\\"preloader-backdrop\\\"></div>\\n      <div class=\\\"preloader-modal\\\">\\n        <div class=\\\"preloader color-\" + color + \"\\\">\" + preloaderInner + \"</div>\\n      </div>\\n    \"));\n    Preloader.visible = true;\n  },\n  hide: function hide() {\n    var app = this;\n    if (!Preloader.visible) { return; }\n    $$1$1('html').removeClass('with-modal-preloader');\n    app.root.find('.preloader-backdrop, .preloader-modal').remove();\n    Preloader.visible = false;\n  },\n};\nvar Preloader$1 = {\n  name: 'preloader',\n  create: function create() {\n    var app = this;\n    Utils.extend(app, {\n      preloader: {\n        init: Preloader.init.bind(app),\n        show: Preloader.show.bind(app),\n        hide: Preloader.hide.bind(app),\n      },\n    });\n  },\n  on: {\n    photoBrowserOpen: function photoBrowserOpen(pb) {\n      var app = this;\n      if (app.theme !== 'md') { return; }\n      pb.$el.find('.preloader').each(function (index, preloaderEl) {\n        app.preloader.init(preloaderEl);\n      });\n    },\n    pageInit: function pageInit(page) {\n      var app = this;\n      if (app.theme !== 'md') { return; }\n      page.$el.find('.preloader').each(function (index, preloaderEl) {\n        app.preloader.init(preloaderEl);\n      });\n    },\n  },\n};\n\nvar Progressbar = {\n  set: function set() {\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n\n    var app = this;\n    var el = args[0];\n    var progress = args[1];\n    var duration = args[2];\n    if (typeof args[0] === 'number') {\n      var assign;\n      (assign = args, progress = assign[0], duration = assign[1]);\n      el = app.root;\n    }\n    if (typeof progress === 'undefined' || progress === null) { return el; }\n    if (!progress) { progress = 0; }\n\n    var $el = $$1$1(el || app.root);\n    if ($el.length === 0) {\n      return el;\n    }\n    var progressNormalized = Math.min(Math.max(progress, 0), 100);\n    var $progressbarEl;\n    if ($el.hasClass('progressbar')) { $progressbarEl = $el.eq(0); }\n    else {\n      $progressbarEl = $el.children('.progressbar');\n    }\n    if ($progressbarEl.length === 0 || $progressbarEl.hasClass('progressbar-infinite')) {\n      return $progressbarEl;\n    }\n    var $progressbarLine = $progressbarEl.children('span');\n    if ($progressbarLine.length === 0) {\n      $progressbarLine = $$1$1('<span></span>');\n      $progressbarEl.append($progressbarLine);\n    }\n    $progressbarLine\n      .transition(typeof duration !== 'undefined' ? duration : '')\n      .transform((\"translate3d(\" + ((-100 + progressNormalized)) + \"%,0,0)\"));\n\n    return $progressbarEl[0];\n  },\n  show: function show() {\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n\n    var app = this;\n\n    // '.page', 50, 'multi'\n    var el = args[0];\n    var progress = args[1];\n    var color = args[2];\n    var type = 'determined';\n\n    if (args.length === 2) {\n      if ((typeof args[0] === 'string' || typeof args[0] === 'object') && typeof args[1] === 'string') {\n        // '.page', 'multi'\n        var assign;\n        (assign = args, el = assign[0], color = assign[1], progress = assign[2]);\n        type = 'infinite';\n      } else if (typeof args[0] === 'number' && typeof args[1] === 'string') {\n        // 50, 'multi'\n        var assign$1;\n        (assign$1 = args, progress = assign$1[0], color = assign$1[1]);\n        el = app.root;\n      }\n    } else if (args.length === 1) {\n      if (typeof args[0] === 'number') {\n        el = app.root;\n        progress = args[0];\n      } else if (typeof args[0] === 'string') {\n        type = 'infinite';\n        el = app.root;\n        color = args[0];\n      }\n    } else if (args.length === 0) {\n      type = 'infinite';\n      el = app.root;\n    }\n\n    var $el = $$1$1(el);\n    if ($el.length === 0) { return undefined; }\n\n    var $progressbarEl;\n    if ($el.hasClass('progressbar') || $el.hasClass('progressbar-infinite')) {\n      $progressbarEl = $el;\n    } else {\n      $progressbarEl = $el.children('.progressbar:not(.progressbar-out), .progressbar-infinite:not(.progressbar-out)');\n      if ($progressbarEl.length === 0) {\n        $progressbarEl = $$1$1((\"\\n          <span class=\\\"progressbar\" + (type === 'infinite' ? '-infinite' : '') + (color ? (\" color-\" + color) : '') + \" progressbar-in\\\">\\n            \" + (type === 'infinite' ? '' : '<span></span>') + \"\\n          </span>\"));\n        $el.append($progressbarEl);\n      }\n    }\n\n    if (typeof progress !== 'undefined') {\n      app.progressbar.set($progressbarEl, progress);\n    }\n\n    return $progressbarEl[0];\n  },\n  hide: function hide(el, removeAfterHide) {\n    if ( removeAfterHide === void 0 ) removeAfterHide = true;\n\n    var app = this;\n    var $el = $$1$1(el || app.root);\n    if ($el.length === 0) { return undefined; }\n    var $progressbarEl;\n    if ($el.hasClass('progressbar') || $el.hasClass('progressbar-infinite')) {\n      $progressbarEl = $el;\n    } else {\n      $progressbarEl = $el.children('.progressbar, .progressbar-infinite');\n    }\n    if ($progressbarEl.length === 0 || !$progressbarEl.hasClass('progressbar-in') || $progressbarEl.hasClass('progressbar-out')) {\n      return $progressbarEl;\n    }\n    $progressbarEl\n      .removeClass('progressbar-in')\n      .addClass('progressbar-out')\n      .animationEnd(function () {\n        if (removeAfterHide) {\n          $progressbarEl.remove();\n        }\n      });\n    return $progressbarEl;\n  },\n};\n\nvar Progressbar$1 = {\n  name: 'progressbar',\n  create: function create() {\n    var app = this;\n    Utils.extend(app, {\n      progressbar: {\n        set: Progressbar.set.bind(app),\n        show: Progressbar.show.bind(app),\n        hide: Progressbar.hide.bind(app),\n      },\n    });\n  },\n  on: {\n    pageInit: function pageInit(page) {\n      var app = this;\n      page.$el.find('.progressbar').each(function (index, progressbarEl) {\n        var $progressbarEl = $$1$1(progressbarEl);\n        app.progressbar.set($progressbarEl, $progressbarEl.attr('data-progress'));\n      });\n    },\n  },\n};\n\nvar Sortable = {\n  init: function init() {\n    var app = this;\n    var isTouched;\n    var isMoved;\n    var touchStartY;\n    var touchesDiff;\n    var $sortingEl;\n    var $sortingItems;\n    var $sortableContainer;\n    var sortingElHeight;\n    var minTop;\n    var maxTop;\n    var $insertAfterEl;\n    var $insertBeforeEl;\n    var indexFrom;\n    var $pageEl;\n    var $pageContentEl;\n    var pageHeight;\n    var pageOffset;\n    var sortingElOffsetLocal;\n    var sortingElOffsetTop;\n    var initialScrollTop;\n\n    function handleTouchStart(e) {\n      isMoved = false;\n      isTouched = true;\n      touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n      $sortingEl = $$1$1(this).parent('li');\n      indexFrom = $sortingEl.index();\n      $sortableContainer = $sortingEl.parents('.sortable');\n      $sortingItems = $sortableContainer.children('ul').children('li');\n      if (app.panel) { app.panel.allowOpen = false; }\n      if (app.swipeout) { app.swipeout.allow = false; }\n    }\n    function handleTouchMove(e) {\n      if (!isTouched || !$sortingEl) { return; }\n      var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n      if (!isMoved) {\n        $pageEl = $sortingEl.parents('.page');\n        $pageContentEl = $sortingEl.parents('.page-content');\n        var paddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n        var paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n        initialScrollTop = $pageContentEl[0].scrollTop;\n        pageOffset = $pageEl.offset().top + paddingTop;\n        pageHeight = $pageEl.height() - paddingTop - paddingBottom;\n        $sortingEl.addClass('sorting');\n        $sortableContainer.addClass('sortable-sorting');\n        sortingElOffsetLocal = $sortingEl[0].offsetTop;\n        minTop = $sortingEl[0].offsetTop;\n        maxTop = $sortingEl.parent().height() - sortingElOffsetLocal - $sortingEl.height();\n        sortingElHeight = $sortingEl[0].offsetHeight;\n        sortingElOffsetTop = $sortingEl.offset().top;\n      }\n      isMoved = true;\n\n      e.preventDefault();\n      e.f7PreventSwipePanel = true;\n\n      touchesDiff = pageY - touchStartY;\n\n      var translateScrollOffset = $pageContentEl[0].scrollTop - initialScrollTop;\n      var translate = Math.min(Math.max(touchesDiff + translateScrollOffset, -minTop), maxTop);\n      $sortingEl.transform((\"translate3d(0,\" + translate + \"px,0)\"));\n\n      var scrollAddition = 44;\n      var allowScroll = true;\n      if ((touchesDiff + translateScrollOffset) + scrollAddition < -minTop) {\n        allowScroll = false;\n      }\n      if ((touchesDiff + translateScrollOffset) - scrollAddition > maxTop) {\n        allowScroll = false;\n      }\n\n      $insertBeforeEl = undefined;\n      $insertAfterEl = undefined;\n\n      var scrollDiff;\n      if (allowScroll) {\n        if (sortingElOffsetTop + touchesDiff + sortingElHeight + scrollAddition > pageOffset + pageHeight) {\n          // To Bottom\n          scrollDiff = (sortingElOffsetTop + touchesDiff + sortingElHeight + scrollAddition) - (pageOffset + pageHeight);\n        }\n        if (sortingElOffsetTop + touchesDiff < pageOffset + scrollAddition) {\n          // To Top\n          scrollDiff = (sortingElOffsetTop + touchesDiff) - pageOffset - scrollAddition;\n        }\n        if (scrollDiff) {\n          $pageContentEl[0].scrollTop += scrollDiff;\n        }\n      }\n\n      $sortingItems.each(function (index, el) {\n        var $currentEl = $$1$1(el);\n        if ($currentEl[0] === $sortingEl[0]) { return; }\n        var currentElOffset = $currentEl[0].offsetTop;\n        var currentElHeight = $currentEl.height();\n        var sortingElOffset = sortingElOffsetLocal + translate;\n\n        if ((sortingElOffset >= currentElOffset - (currentElHeight / 2)) && $sortingEl.index() < $currentEl.index()) {\n          $currentEl.transform((\"translate3d(0, \" + (-sortingElHeight) + \"px,0)\"));\n          $insertAfterEl = $currentEl;\n          $insertBeforeEl = undefined;\n        } else if ((sortingElOffset <= currentElOffset + (currentElHeight / 2)) && $sortingEl.index() > $currentEl.index()) {\n          $currentEl.transform((\"translate3d(0, \" + sortingElHeight + \"px,0)\"));\n          $insertAfterEl = undefined;\n          if (!$insertBeforeEl) { $insertBeforeEl = $currentEl; }\n        } else {\n          $currentEl.transform('translate3d(0, 0%,0)');\n        }\n      });\n    }\n    function handleTouchEnd() {\n      if (!isTouched || !isMoved) {\n        isTouched = false;\n        isMoved = false;\n        if (isTouched && !isMoved) {\n          if (app.panel) { app.panel.allowOpen = true; }\n          if (app.swipeout) { app.swipeout.allow = true; }\n        }\n        return;\n      }\n      if (app.panel) { app.panel.allowOpen = true; }\n      if (app.swipeout) { app.swipeout.allow = true; }\n\n      $sortingItems.transform('');\n      $sortingEl.removeClass('sorting');\n      $sortableContainer.removeClass('sortable-sorting');\n\n      var virtualList;\n      var oldIndex;\n      var newIndex;\n      if ($insertAfterEl) {\n        $sortingEl.insertAfter($insertAfterEl);\n      }\n      if ($insertBeforeEl) {\n        $sortingEl.insertBefore($insertBeforeEl);\n      }\n\n      $sortingEl.trigger('sortable:sort', { from: indexFrom, to: $sortingEl.index() });\n      app.emit('sortableSort', $sortingEl[0], { from: indexFrom, to: $sortingEl.index() });\n\n      if (($insertAfterEl || $insertBeforeEl) && $sortableContainer.hasClass('virtual-list')) {\n        virtualList = $sortableContainer[0].f7VirtualList;\n        oldIndex = $sortingEl[0].f7VirtualListIndex;\n        newIndex = $insertBeforeEl ? $insertBeforeEl[0].f7VirtualListIndex : $insertAfterEl[0].f7VirtualListIndex;\n        if (virtualList) { virtualList.moveItem(oldIndex, newIndex); }\n      }\n      $insertBeforeEl = undefined;\n      $insertAfterEl = undefined;\n      isTouched = false;\n      isMoved = false;\n    }\n\n    var activeListener = app.support.passiveListener ? { passive: false, capture: false } : false;\n\n    $$1$1(document).on(app.touchEvents.start, '.list.sortable .sortable-handler', handleTouchStart, activeListener);\n    app.on('touchmove:active', handleTouchMove);\n    app.on('touchend:passive', handleTouchEnd);\n  },\n  enable: function enable(el) {\n    if ( el === void 0 ) el = '.list.sortable';\n\n    var app = this;\n    var $el = $$1$1(el);\n    if ($el.length === 0) { return; }\n    $el.addClass('sortable-enabled');\n    $el.trigger('sortable:enable');\n    app.emit('sortableEnable', $el[0]);\n  },\n  disable: function disable(el) {\n    if ( el === void 0 ) el = '.list.sortable';\n\n    var app = this;\n    var $el = $$1$1(el);\n    if ($el.length === 0) { return; }\n    $el.removeClass('sortable-enabled');\n    $el.trigger('sortable:disable');\n    app.emit('sortableDisable', $el[0]);\n  },\n  toggle: function toggle(el) {\n    if ( el === void 0 ) el = '.list.sortable';\n\n    var app = this;\n    var $el = $$1$1(el);\n    if ($el.length === 0) { return; }\n    if ($el.hasClass('sortable-enabled')) {\n      app.sortable.disable($el);\n    } else {\n      app.sortable.enable($el);\n    }\n  },\n};\nvar Sortable$1 = {\n  name: 'sortable',\n  params: {\n    sortable: true,\n  },\n  create: function create() {\n    var app = this;\n    Utils.extend(app, {\n      sortable: {\n        init: Sortable.init.bind(app),\n        enable: Sortable.enable.bind(app),\n        disable: Sortable.disable.bind(app),\n        toggle: Sortable.toggle.bind(app),\n      },\n    });\n  },\n  on: {\n    init: function init() {\n      var app = this;\n      if (app.params.sortable) { app.sortable.init(); }\n    },\n  },\n  clicks: {\n    '.sortable-enable': function enable($clickedEl, data) {\n      if ( data === void 0 ) data = {};\n\n      var app = this;\n      app.sortable.enable(data.sortable);\n    },\n    '.sortable-disable': function disable($clickedEl, data) {\n      if ( data === void 0 ) data = {};\n\n      var app = this;\n      app.sortable.disable(data.sortable);\n    },\n    '.sortable-toggle': function toggle($clickedEl, data) {\n      if ( data === void 0 ) data = {};\n\n      var app = this;\n      app.sortable.toggle(data.sortable);\n    },\n  },\n};\n\nvar Swipeout = {\n  init: function init() {\n    var app = this;\n    var touchesStart = {};\n    var isTouched;\n    var isMoved;\n    var isScrolling;\n    var touchStartTime;\n    var touchesDiff;\n    var $swipeoutEl;\n    var $swipeoutContent;\n    var $actionsRight;\n    var $actionsLeft;\n    var actionsLeftWidth;\n    var actionsRightWidth;\n    var translate;\n    var opened;\n    var openedActionsSide;\n    var $leftButtons;\n    var $rightButtons;\n    var direction;\n    var $overswipeLeftButton;\n    var $overswipeRightButton;\n    var overswipeLeft;\n    var overswipeRight;\n\n    function handleTouchStart(e) {\n      if (!Swipeout.allow) { return; }\n      isMoved = false;\n      isTouched = true;\n      isScrolling = undefined;\n      touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n      touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n      touchStartTime = (new Date()).getTime();\n      $swipeoutEl = $$1$1(this);\n    }\n    function handleTouchMove(e) {\n      if (!isTouched) { return; }\n      var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n      var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n      if (typeof isScrolling === 'undefined') {\n        isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n      }\n      if (isScrolling) {\n        isTouched = false;\n        return;\n      }\n\n      if (!isMoved) {\n        if ($$1$1('.list.sortable-opened').length > 0) { return; }\n        $swipeoutContent = $swipeoutEl.find('.swipeout-content');\n        $actionsRight = $swipeoutEl.find('.swipeout-actions-right');\n        $actionsLeft = $swipeoutEl.find('.swipeout-actions-left');\n        actionsLeftWidth = null;\n        actionsRightWidth = null;\n        $leftButtons = null;\n        $rightButtons = null;\n        $overswipeRightButton = null;\n        $overswipeLeftButton = null;\n        if ($actionsLeft.length > 0) {\n          actionsLeftWidth = $actionsLeft.outerWidth();\n          $leftButtons = $actionsLeft.children('a');\n          $overswipeLeftButton = $actionsLeft.find('.swipeout-overswipe');\n        }\n        if ($actionsRight.length > 0) {\n          actionsRightWidth = $actionsRight.outerWidth();\n          $rightButtons = $actionsRight.children('a');\n          $overswipeRightButton = $actionsRight.find('.swipeout-overswipe');\n        }\n        opened = $swipeoutEl.hasClass('swipeout-opened');\n        if (opened) {\n          openedActionsSide = $swipeoutEl.find('.swipeout-actions-left.swipeout-actions-opened').length > 0 ? 'left' : 'right';\n        }\n        $swipeoutEl.removeClass('swipeout-transitioning');\n        if (!app.params.swipeout.noFollow) {\n          $swipeoutEl.find('.swipeout-actions-opened').removeClass('swipeout-actions-opened');\n          $swipeoutEl.removeClass('swipeout-opened');\n        }\n      }\n      isMoved = true;\n      e.preventDefault();\n\n      touchesDiff = pageX - touchesStart.x;\n      translate = touchesDiff;\n\n      if (opened) {\n        if (openedActionsSide === 'right') { translate -= actionsRightWidth; }\n        else { translate += actionsLeftWidth; }\n      }\n\n      if (\n        (translate > 0 && $actionsLeft.length === 0)\n        ||\n        (translate < 0 && $actionsRight.length === 0)\n      ) {\n        if (!opened) {\n          isTouched = false;\n          isMoved = false;\n          $swipeoutContent.transform('');\n          if ($rightButtons && $rightButtons.length > 0) {\n            $rightButtons.transform('');\n          }\n          if ($leftButtons && $leftButtons.length > 0) {\n            $leftButtons.transform('');\n          }\n          return;\n        }\n        translate = 0;\n      }\n\n      if (translate < 0) { direction = 'to-left'; }\n      else if (translate > 0) { direction = 'to-right'; }\n      else if (!direction) { direction = 'to-left'; }\n\n      var buttonOffset;\n      var progress;\n\n      e.f7PreventSwipePanel = true;\n      if (app.params.swipeout.noFollow) {\n        if (opened) {\n          if (openedActionsSide === 'right' && touchesDiff > 0) {\n            app.swipeout.close($swipeoutEl);\n          }\n          if (openedActionsSide === 'left' && touchesDiff < 0) {\n            app.swipeout.close($swipeoutEl);\n          }\n        } else {\n          if (touchesDiff < 0 && $actionsRight.length > 0) {\n            app.swipeout.open($swipeoutEl, 'right');\n          }\n          if (touchesDiff > 0 && $actionsLeft.length > 0) {\n            app.swipeout.open($swipeoutEl, 'left');\n          }\n        }\n        isTouched = false;\n        isMoved = false;\n        return;\n      }\n      overswipeLeft = false;\n      overswipeRight = false;\n      if ($actionsRight.length > 0) {\n        // Show right actions\n        var buttonTranslate = translate;\n        progress = buttonTranslate / actionsRightWidth;\n        if (buttonTranslate < -actionsRightWidth) {\n          buttonTranslate = -actionsRightWidth - (Math.pow( (-buttonTranslate - actionsRightWidth), 0.8 ));\n          translate = buttonTranslate;\n          if ($overswipeRightButton.length > 0) {\n            overswipeRight = true;\n          }\n        }\n        if (direction !== 'to-left') {\n          progress = 0;\n          buttonTranslate = 0;\n        }\n        $rightButtons.each(function (index, buttonEl) {\n          var $buttonEl = $$1$1(buttonEl);\n          if (typeof buttonEl.f7SwipeoutButtonOffset === 'undefined') {\n            $buttonEl[0].f7SwipeoutButtonOffset = buttonEl.offsetLeft;\n          }\n          buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n          if ($overswipeRightButton.length > 0 && $buttonEl.hasClass('swipeout-overswipe') && direction === 'to-left') {\n            $buttonEl.css({ left: ((overswipeRight ? -buttonOffset : 0) + \"px\") });\n            if (overswipeRight) {\n              $buttonEl.addClass('swipeout-overswipe-active');\n            } else {\n              $buttonEl.removeClass('swipeout-overswipe-active');\n            }\n          }\n          $buttonEl.transform((\"translate3d(\" + (buttonTranslate - (buttonOffset * (1 + Math.max(progress, -1)))) + \"px,0,0)\"));\n        });\n      }\n      if ($actionsLeft.length > 0) {\n        // Show left actions\n        var buttonTranslate$1 = translate;\n        progress = buttonTranslate$1 / actionsLeftWidth;\n        if (buttonTranslate$1 > actionsLeftWidth) {\n          buttonTranslate$1 = actionsLeftWidth + (Math.pow( (buttonTranslate$1 - actionsLeftWidth), 0.8 ));\n          translate = buttonTranslate$1;\n          if ($overswipeLeftButton.length > 0) {\n            overswipeLeft = true;\n          }\n        }\n        if (direction !== 'to-right') {\n          buttonTranslate$1 = 0;\n          progress = 0;\n        }\n        $leftButtons.each(function (index, buttonEl) {\n          var $buttonEl = $$1$1(buttonEl);\n          if (typeof buttonEl.f7SwipeoutButtonOffset === 'undefined') {\n            $buttonEl[0].f7SwipeoutButtonOffset = actionsLeftWidth - buttonEl.offsetLeft - buttonEl.offsetWidth;\n          }\n          buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n          if ($overswipeLeftButton.length > 0 && $buttonEl.hasClass('swipeout-overswipe') && direction === 'to-right') {\n            $buttonEl.css({ left: ((overswipeLeft ? buttonOffset : 0) + \"px\") });\n            if (overswipeLeft) {\n              $buttonEl.addClass('swipeout-overswipe-active');\n            } else {\n              $buttonEl.removeClass('swipeout-overswipe-active');\n            }\n          }\n          if ($leftButtons.length > 1) {\n            $buttonEl.css('z-index', $leftButtons.length - index);\n          }\n          $buttonEl.transform((\"translate3d(\" + (buttonTranslate$1 + (buttonOffset * (1 - Math.min(progress, 1)))) + \"px,0,0)\"));\n        });\n      }\n      $swipeoutEl.trigger('swipeout', progress);\n      app.emit('swipeout', $swipeoutEl[0], progress);\n      $swipeoutContent.transform((\"translate3d(\" + translate + \"px,0,0)\"));\n    }\n    function handleTouchEnd() {\n      if (!isTouched || !isMoved) {\n        isTouched = false;\n        isMoved = false;\n        return;\n      }\n\n      isTouched = false;\n      isMoved = false;\n      var timeDiff = (new Date()).getTime() - touchStartTime;\n      var $actions = direction === 'to-left' ? $actionsRight : $actionsLeft;\n      var actionsWidth = direction === 'to-left' ? actionsRightWidth : actionsLeftWidth;\n      var action;\n      var $buttons;\n      var i;\n\n      if (\n        (\n          timeDiff < 300\n          &&\n          (\n            (touchesDiff < -10 && direction === 'to-left')\n            ||\n            (touchesDiff > 10 && direction === 'to-right')\n          )\n        )\n        ||\n        (\n          timeDiff >= 300\n          &&\n          (Math.abs(translate) > actionsWidth / 2)\n        )\n      ) {\n        action = 'open';\n      } else {\n        action = 'close';\n      }\n      if (timeDiff < 300) {\n        if (Math.abs(translate) === 0) { action = 'close'; }\n        if (Math.abs(translate) === actionsWidth) { action = 'open'; }\n      }\n\n      if (action === 'open') {\n        Swipeout.el = $swipeoutEl[0];\n        $swipeoutEl.trigger('swipeout:open');\n        app.emit('swipeoutOpen', $swipeoutEl[0]);\n        $swipeoutEl.addClass('swipeout-opened swipeout-transitioning');\n        var newTranslate = direction === 'to-left' ? -actionsWidth : actionsWidth;\n        $swipeoutContent.transform((\"translate3d(\" + newTranslate + \"px,0,0)\"));\n        $actions.addClass('swipeout-actions-opened');\n        $buttons = direction === 'to-left' ? $rightButtons : $leftButtons;\n        if ($buttons) {\n          for (i = 0; i < $buttons.length; i += 1) {\n            $$1$1($buttons[i]).transform((\"translate3d(\" + newTranslate + \"px,0,0)\"));\n          }\n        }\n        if (overswipeRight) {\n          $actionsRight.find('.swipeout-overswipe')[0].click();\n        }\n        if (overswipeLeft) {\n          $actionsLeft.find('.swipeout-overswipe')[0].click();\n        }\n      } else {\n        $swipeoutEl.trigger('swipeout:close');\n        app.emit('swipeoutClose', $swipeoutEl[0]);\n        Swipeout.el = undefined;\n        $swipeoutEl.addClass('swipeout-transitioning').removeClass('swipeout-opened');\n        $swipeoutContent.transform('');\n        $actions.removeClass('swipeout-actions-opened');\n      }\n\n      var buttonOffset;\n      if ($leftButtons && $leftButtons.length > 0 && $leftButtons !== $buttons) {\n        $leftButtons.each(function (index, buttonEl) {\n          var $buttonEl = $$1$1(buttonEl);\n          buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n          if (typeof buttonOffset === 'undefined') {\n            $buttonEl[0].f7SwipeoutButtonOffset = actionsLeftWidth - buttonEl.offsetLeft - buttonEl.offsetWidth;\n          }\n          $buttonEl.transform((\"translate3d(\" + buttonOffset + \"px,0,0)\"));\n        });\n      }\n      if ($rightButtons && $rightButtons.length > 0 && $rightButtons !== $buttons) {\n        $rightButtons.each(function (index, buttonEl) {\n          var $buttonEl = $$1$1(buttonEl);\n          buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n          if (typeof buttonOffset === 'undefined') {\n            $buttonEl[0].f7SwipeoutButtonOffset = buttonEl.offsetLeft;\n          }\n          $buttonEl.transform((\"translate3d(\" + (-buttonOffset) + \"px,0,0)\"));\n        });\n      }\n      $swipeoutContent.transitionEnd(function () {\n        if ((opened && action === 'open') || (!opened && action === 'close')) { return; }\n        $swipeoutEl.trigger(action === 'open' ? 'swipeout:opened' : 'swipeout:closed');\n        app.emit(action === 'open' ? 'swipeoutOpened' : 'swipeoutClosed', $swipeoutEl[0]);\n        $swipeoutEl.removeClass('swipeout-transitioning');\n        if (opened && action === 'close') {\n          if ($actionsRight.length > 0) {\n            $rightButtons.transform('');\n          }\n          if ($actionsLeft.length > 0) {\n            $leftButtons.transform('');\n          }\n        }\n      });\n    }\n\n    var passiveListener = app.support.passiveListener ? { passive: true } : false;\n\n    app.on('touchstart', function (e) {\n      if (Swipeout.el) {\n        var $targetEl = $$1$1(e.target);\n        if (!(\n          $$1$1(Swipeout.el).is($targetEl[0]) ||\n          $targetEl.parents('.swipeout').is(Swipeout.el) ||\n          $targetEl.hasClass('modal-in') ||\n          $targetEl[0].className.indexOf('-backdrop') > 0 ||\n          $targetEl.hasClass('actions-modal') ||\n          $targetEl.parents('.actions-modal.modal-in, .dialog.modal-in').length > 0\n        )) {\n          app.swipeout.close(Swipeout.el);\n        }\n      }\n    });\n    $$1$1(document).on(app.touchEvents.start, 'li.swipeout', handleTouchStart, passiveListener);\n    app.on('touchmove:active', handleTouchMove);\n    app.on('touchend:passive', handleTouchEnd);\n  },\n  allow: true,\n  el: undefined,\n  open: function open() {\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n\n    var app = this;\n    var el = args[0];\n    var side = args[1];\n    var callback = args[2];\n    if (typeof args[1] === 'function') {\n      var assign;\n      (assign = args, el = assign[0], callback = assign[1], side = assign[2]);\n    }\n    var $el = $$1$1(el).eq(0);\n\n    if ($el.length === 0) { return; }\n    if (!$el.hasClass('swipeout') || $el.hasClass('swipeout-opened')) { return; }\n    if (!side) {\n      if ($el.find('.swipeout-actions-right').length > 0) { side = 'right'; }\n      else { side = 'left'; }\n    }\n    var $swipeoutActions = $el.find((\".swipeout-actions-\" + side));\n    var $swipeoutContent = $el.find('.swipeout-content');\n    if ($swipeoutActions.length === 0) { return; }\n    $el.trigger('swipeout:open').addClass('swipeout-opened').removeClass('swipeout-transitioning');\n    app.emit('swipeoutOpen', $el[0]);\n    $swipeoutActions.addClass('swipeout-actions-opened');\n    var $buttons = $swipeoutActions.children('a');\n    var swipeoutActionsWidth = $swipeoutActions.outerWidth();\n    var translate = side === 'right' ? -swipeoutActionsWidth : swipeoutActionsWidth;\n    if ($buttons.length > 1) {\n      $buttons.each(function (buttonIndex, buttonEl) {\n        var $buttonEl = $$1$1(buttonEl);\n        if (side === 'right') {\n          $buttonEl.transform((\"translate3d(\" + (-buttonEl.offsetLeft) + \"px,0,0)\"));\n        } else {\n          $buttonEl.css('z-index', $buttons.length - buttonIndex).transform((\"translate3d(\" + (swipeoutActionsWidth - buttonEl.offsetWidth - buttonEl.offsetLeft) + \"px,0,0)\"));\n        }\n      });\n    }\n    $el.addClass('swipeout-transitioning');\n    $swipeoutContent.transitionEnd(function () {\n      $el.trigger('swipeout:opened');\n      app.emit('swipeoutOpened', $el[0]);\n      if (callback) { callback.call($el[0]); }\n    });\n    Utils.nextFrame(function () {\n      $buttons.transform((\"translate3d(\" + translate + \"px,0,0)\"));\n      $swipeoutContent.transform((\"translate3d(\" + translate + \"px,0,0)\"));\n    });\n    Swipeout.el = $el[0];\n  },\n  close: function close(el, callback) {\n    var app = this;\n    var $el = $$1$1(el).eq(0);\n    if ($el.length === 0) { return; }\n    if (!$el.hasClass('swipeout-opened')) { return; }\n    var side = $el.find('.swipeout-actions-opened').hasClass('swipeout-actions-right') ? 'right' : 'left';\n    var $swipeoutActions = $el.find('.swipeout-actions-opened').removeClass('swipeout-actions-opened');\n    var $buttons = $swipeoutActions.children('a');\n    var swipeoutActionsWidth = $swipeoutActions.outerWidth();\n    Swipeout.allow = false;\n    $el.trigger('swipeout:close');\n    app.emit('swipeoutClose', $el[0]);\n    $el.removeClass('swipeout-opened').addClass('swipeout-transitioning');\n\n    var closeTimeout;\n    function onSwipeoutClose() {\n      Swipeout.allow = true;\n      if ($el.hasClass('swipeout-opened')) { return; }\n      $el.removeClass('swipeout-transitioning');\n      $buttons.transform('');\n      $el.trigger('swipeout:closed');\n      app.emit('swipeoutClosed', $el[0]);\n      if (callback) { callback.call($el[0]); }\n      if (closeTimeout) { clearTimeout(closeTimeout); }\n    }\n    $el.find('.swipeout-content').transform('').transitionEnd(onSwipeoutClose);\n    closeTimeout = setTimeout(onSwipeoutClose, 500);\n\n    $buttons.each(function (index, buttonEl) {\n      var $buttonEl = $$1$1(buttonEl);\n      if (side === 'right') {\n        $buttonEl.transform((\"translate3d(\" + (-buttonEl.offsetLeft) + \"px,0,0)\"));\n      } else {\n        $buttonEl.transform((\"translate3d(\" + (swipeoutActionsWidth - buttonEl.offsetWidth - buttonEl.offsetLeft) + \"px,0,0)\"));\n      }\n      $buttonEl.css({ left: '0px' }).removeClass('swipeout-overswipe-active');\n    });\n    if (Swipeout.el && Swipeout.el === $el[0]) { Swipeout.el = undefined; }\n  },\n  delete: function delete$1(el, callback) {\n    var app = this;\n    var $el = $$1$1(el).eq(0);\n    if ($el.length === 0) { return; }\n    Swipeout.el = undefined;\n    $el.trigger('swipeout:delete');\n    app.emit('swipeoutDelete', $el[0]);\n    $el.css({ height: (($el.outerHeight()) + \"px\") });\n    $el.transitionEnd(function () {\n      $el.trigger('swipeout:deleted');\n      app.emit('swipeoutDeleted', $el[0]);\n      if (callback) { callback.call($el[0]); }\n      if ($el.parents('.virtual-list').length > 0) {\n        var virtualList = $el.parents('.virtual-list')[0].f7VirtualList;\n        var virtualIndex = $el[0].f7VirtualListIndex;\n        if (virtualList && typeof virtualIndex !== 'undefined') { virtualList.deleteItem(virtualIndex); }\n      } else if (app.params.swipeout.removeElements) {\n        if (app.params.swipeout.removeElementsWithTimeout) {\n          setTimeout(function () {\n            $el.remove();\n          }, app.params.swipeout.removeElementsTimeout);\n        } else {\n          $el.remove();\n        }\n      } else {\n        $el.removeClass('swipeout-deleting swipeout-transitioning');\n      }\n    });\n    Utils.nextFrame(function () {\n      $el\n        .addClass('swipeout-deleting swipeout-transitioning')\n        .css({ height: '0px' })\n        .find('.swipeout-content')\n        .transform('translate3d(-100%,0,0)');\n    });\n  },\n};\nvar Swipeout$1 = {\n  name: 'swipeout',\n  params: {\n    swipeout: {\n      actionsNoFold: false,\n      noFollow: false,\n      removeElements: true,\n      removeElementsWithTimeout: false,\n      removeElementsTimeout: 0,\n    },\n  },\n  create: function create() {\n    var app = this;\n    Utils.extend(app, {\n      swipeout: {\n        init: Swipeout.init.bind(app),\n        open: Swipeout.open.bind(app),\n        close: Swipeout.close.bind(app),\n        delete: Swipeout.delete.bind(app),\n      },\n    });\n    Object.defineProperty(app.swipeout, 'el', {\n      enumerable: true,\n      configurable: true,\n      get: function () { return Swipeout.el; },\n      set: function set(el) {\n        Swipeout.el = el;\n      },\n    });\n    Object.defineProperty(app.swipeout, 'allow', {\n      enumerable: true,\n      configurable: true,\n      get: function () { return Swipeout.allow; },\n      set: function set(allow) {\n        Swipeout.allow = allow;\n      },\n    });\n  },\n  clicks: {\n    '.swipeout-open': function openSwipeout($clickedEl, data) {\n      if ( data === void 0 ) data = {};\n\n      var app = this;\n      app.swipeout.open(data.swipeout, data.side);\n    },\n    '.swipeout-close': function closeSwipeout($clickedEl) {\n      var app = this;\n      var $swipeoutEl = $clickedEl.closest('.swipeout');\n      if ($swipeoutEl.length === 0) { return; }\n      app.swipeout.close($swipeoutEl);\n    },\n    '.swipeout-delete': function deleteSwipeout($clickedEl, data) {\n      if ( data === void 0 ) data = {};\n\n      var app = this;\n      var $swipeoutEl = $clickedEl.closest('.swipeout');\n      if ($swipeoutEl.length === 0) { return; }\n      var confirm = data.confirm;\n      var confirmTitle = data.confirmTitle;\n      if (data.confirm) {\n        app.dialog.confirm(confirm, confirmTitle, function () {\n          app.swipeout.delete($swipeoutEl);\n        });\n      } else {\n        app.swipeout.delete($swipeoutEl);\n      }\n    },\n  },\n  on: {\n    init: function init() {\n      var app = this;\n      if (!app.params.swipeout) { return; }\n      app.swipeout.init();\n    },\n  },\n};\n\nvar Accordion = {\n  toggleClicked: function toggleClicked($clickedEl) {\n    var app = this;\n    var $accordionItemEl = $clickedEl.closest('.accordion-item').eq(0);\n    if (!$accordionItemEl.length) { $accordionItemEl = $clickedEl.parents('li').eq(0); }\n    app.accordion.toggle($accordionItemEl);\n  },\n  open: function open(el) {\n    var app = this;\n    var $el = $$1$1(el);\n    var $list = $el.parents('.accordion-list').eq(0);\n    var $contentEl = $el.children('.accordion-item-content');\n    if ($contentEl.length === 0) { $contentEl = $el.find('.accordion-item-content'); }\n    if ($contentEl.length === 0) { return; }\n    var $openedItem = $list.length > 0 && $el.parent().children('.accordion-item-opened');\n    if ($openedItem.length > 0) {\n      app.accordion.close($openedItem);\n    }\n    $contentEl.transitionEnd(function () {\n      if ($el.hasClass('accordion-item-opened')) {\n        $contentEl.css('height', '');\n        $contentEl.transition('');\n        $el.trigger('accordion:opened');\n        app.emit('accordionOpened', $el[0]);\n      } else {\n        $contentEl.css('height', '');\n        $el.trigger('accordion:closed');\n        app.emit('accordionClosed', $el[0]);\n      }\n    });\n    $contentEl.css('height', (($contentEl[0].scrollHeight) + \"px\"));\n    $el.trigger('accordion:open');\n    $el.addClass('accordion-item-opened');\n    app.emit('accordionOpen', $el[0]);\n  },\n  close: function close(el) {\n    var app = this;\n    var $el = $$1$1(el);\n    var $contentEl = $el.children('.accordion-item-content');\n    if ($contentEl.length === 0) { $contentEl = $el.find('.accordion-item-content'); }\n    $el.removeClass('accordion-item-opened');\n    $contentEl.transition(0);\n    $contentEl.css('height', (($contentEl[0].scrollHeight) + \"px\"));\n    // Close\n    $contentEl.transitionEnd(function () {\n      if ($el.hasClass('accordion-item-opened')) {\n        $contentEl.css('height', '');\n        $contentEl.transition('');\n        $el.trigger('accordion:opened');\n        app.emit('accordionOpened', $el[0]);\n      } else {\n        $contentEl.css('height', '');\n        $el.trigger('accordion:closed');\n        app.emit('accordionClosed', $el[0]);\n      }\n    });\n    Utils.nextFrame(function () {\n      $contentEl.transition('');\n      $contentEl.css('height', '');\n      $el.trigger('accordion:close');\n      app.emit('accordionClose');\n    });\n  },\n  toggle: function toggle(el) {\n    var app = this;\n    var $el = $$1$1(el);\n    if ($el.length === 0) { return; }\n    if ($el.hasClass('accordion-item-opened')) { app.accordion.close(el); }\n    else { app.accordion.open(el); }\n  },\n};\n\nvar Accordion$1 = {\n  name: 'accordion',\n  create: function create() {\n    var app = this;\n    Utils.extend(app, {\n      accordion: {\n        open: Accordion.open.bind(app),\n        close: Accordion.close.bind(app),\n        toggle: Accordion.toggle.bind(app),\n      },\n    });\n  },\n  clicks: {\n    '.accordion-item .item-link, .accordion-item-toggle, .links-list.accordion-list > ul > li > a': function open($clickedEl) {\n      var app = this;\n      Accordion.toggleClicked.call(app, $clickedEl);\n    },\n  },\n};\n\nvar VirtualList$1 = (function (Framework7Class$$1) {\n  function VirtualList(app, params) {\n    if ( params === void 0 ) params = {};\n\n    Framework7Class$$1.call(this, params, [app]);\n    var vl = this;\n\n    var defaults = {\n      cols: 1,\n      height: app.theme === 'md' ? 48 : 44,\n      cache: true,\n      dynamicHeightBufferSize: 1,\n      showFilteredItemsOnly: false,\n      renderExternal: undefined,\n      setListHeight: true,\n      searchByItem: undefined,\n      searchAll: undefined,\n      itemTemplate: undefined,\n      renderItem: function renderItem(item) {\n        return (\"\\n          <li>\\n            <div class=\\\"item-content\\\">\\n              <div class=\\\"item-inner\\\">\\n                <div class=\\\"item-title\\\">\" + item + \"</div>\\n              </div>\\n            </div>\\n          </li>\\n        \").trim();\n      },\n      on: {},\n    };\n\n    // Extend defaults with modules params\n    vl.useModulesParams(defaults);\n\n    vl.params = Utils.extend(defaults, params);\n    if (vl.params.height === undefined || !vl.params.height) {\n      vl.params.height = app.theme === 'md' ? 48 : 44;\n    }\n\n    vl.$el = $$1$1(params.el);\n    vl.el = vl.$el[0];\n\n    if (vl.$el.length === 0) { return undefined; }\n    vl.$el[0].f7VirtualList = vl;\n\n    vl.items = vl.params.items;\n    if (vl.params.showFilteredItemsOnly) {\n      vl.filteredItems = [];\n    }\n    if (vl.params.itemTemplate) {\n      if (typeof vl.params.itemTemplate === 'string') { vl.renderItem = Template7.compile(vl.params.itemTemplate); }\n      else if (typeof vl.params.itemTemplate === 'function') { vl.renderItem = vl.params.itemTemplate; }\n    } else if (vl.params.renderItem) {\n      vl.renderItem = vl.params.renderItem;\n    }\n    vl.$pageContentEl = vl.$el.parents('.page-content');\n    vl.pageContentEl = vl.$pageContentEl[0];\n\n    // Bad scroll\n    if (typeof vl.params.updatableScroll !== 'undefined') {\n      vl.updatableScroll = vl.params.updatableScroll;\n    } else {\n      vl.updatableScroll = true;\n      if (Device.ios && Device.osVersion.split('.')[0] < 8) {\n        vl.updatableScroll = false;\n      }\n    }\n\n    // Append <ul>\n    vl.$ul = vl.params.ul ? $$1$1(vl.params.ul) : vl.$el.children('ul');\n    if (vl.$ul.length === 0) {\n      vl.$el.append('<ul></ul>');\n      vl.$ul = vl.$el.children('ul');\n    }\n    vl.ul = vl.$ul[0];\n\n    Utils.extend(vl, {\n      // DOM cached items\n      domCache: {},\n      displayDomCache: {},\n      // Temporary DOM Element\n      tempDomElement: document.createElement('ul'),\n      // Last repain position\n      lastRepaintY: null,\n      // Fragment\n      fragment: document.createDocumentFragment(),\n      // Props\n      pageHeight: undefined,\n      rowsPerScreen: undefined,\n      rowsBefore: undefined,\n      rowsAfter: undefined,\n      rowsToRender: undefined,\n      maxBufferHeight: 0,\n      listHeight: undefined,\n      dynamicHeight: typeof vl.params.height === 'function',\n    });\n\n    // Install Modules\n    vl.useModules();\n\n    // Attach events\n    var handleScrollBound = vl.handleScroll.bind(vl);\n    var handleResizeBound = vl.handleResize.bind(vl);\n    var $pageEl;\n    var $tabEl;\n    var $panelEl;\n    var $popupEl;\n    vl.attachEvents = function attachEvents() {\n      $pageEl = vl.$el.parents('.page').eq(0);\n      $tabEl = vl.$el.parents('.tab').eq(0);\n      $panelEl = vl.$el.parents('.panel').eq(0);\n      $popupEl = vl.$el.parents('.popup').eq(0);\n\n      vl.$pageContentEl.on('scroll', handleScrollBound);\n      if ($pageEl) { $pageEl.on('page:reinit', handleResizeBound); }\n      if ($tabEl) { $tabEl.on('tab:show', handleResizeBound); }\n      if ($panelEl) { $panelEl.on('panel:open', handleResizeBound); }\n      if ($popupEl) { $popupEl.on('popup:open', handleResizeBound); }\n      app.on('resize', handleResizeBound);\n    };\n    vl.detachEvents = function attachEvents() {\n      vl.$pageContentEl.off('scroll', handleScrollBound);\n      if ($pageEl) { $pageEl.off('page:reinit', handleResizeBound); }\n      if ($tabEl) { $tabEl.off('tab:show', handleResizeBound); }\n      if ($panelEl) { $panelEl.off('panel:open', handleResizeBound); }\n      if ($popupEl) { $popupEl.off('popup:open', handleResizeBound); }\n      app.off('resize', handleResizeBound);\n    };\n    // Init\n    vl.init();\n\n    return vl;\n  }\n\n  if ( Framework7Class$$1 ) VirtualList.__proto__ = Framework7Class$$1;\n  VirtualList.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n  VirtualList.prototype.constructor = VirtualList;\n  VirtualList.prototype.setListSize = function setListSize () {\n    var vl = this;\n    var items = vl.filteredItems || vl.items;\n    vl.pageHeight = vl.$pageContentEl[0].offsetHeight;\n    if (vl.dynamicHeight) {\n      vl.listHeight = 0;\n      vl.heights = [];\n      for (var i = 0; i < items.length; i += 1) {\n        var itemHeight = vl.params.height(items[i]);\n        vl.listHeight += itemHeight;\n        vl.heights.push(itemHeight);\n      }\n    } else {\n      vl.listHeight = Math.ceil(items.length / vl.params.cols) * vl.params.height;\n      vl.rowsPerScreen = Math.ceil(vl.pageHeight / vl.params.height);\n      vl.rowsBefore = vl.params.rowsBefore || vl.rowsPerScreen * 2;\n      vl.rowsAfter = vl.params.rowsAfter || vl.rowsPerScreen;\n      vl.rowsToRender = (vl.rowsPerScreen + vl.rowsBefore + vl.rowsAfter);\n      vl.maxBufferHeight = (vl.rowsBefore / 2) * vl.params.height;\n    }\n\n    if (vl.updatableScroll || vl.params.setListHeight) {\n      vl.$ul.css({ height: ((vl.listHeight) + \"px\") });\n    }\n  };\n  VirtualList.prototype.render = function render (force, forceScrollTop) {\n    var vl = this;\n    if (force) { vl.lastRepaintY = null; }\n\n    var scrollTop = -(vl.$el[0].getBoundingClientRect().top - vl.$pageContentEl[0].getBoundingClientRect().top);\n\n    if (typeof forceScrollTop !== 'undefined') { scrollTop = forceScrollTop; }\n    if (vl.lastRepaintY === null || Math.abs(scrollTop - vl.lastRepaintY) > vl.maxBufferHeight || (!vl.updatableScroll && (vl.$pageContentEl[0].scrollTop + vl.pageHeight >= vl.$pageContentEl[0].scrollHeight))) {\n      vl.lastRepaintY = scrollTop;\n    } else {\n      return;\n    }\n\n    var items = vl.filteredItems || vl.items;\n    var fromIndex;\n    var toIndex;\n    var heightBeforeFirstItem = 0;\n    var heightBeforeLastItem = 0;\n    if (vl.dynamicHeight) {\n      var itemTop = 0;\n      var itemHeight;\n      vl.maxBufferHeight = vl.pageHeight;\n\n      for (var j = 0; j < vl.heights.length; j += 1) {\n        itemHeight = vl.heights[j];\n        if (typeof fromIndex === 'undefined') {\n          if (itemTop + itemHeight >= scrollTop - (vl.pageHeight * 2 * vl.params.dynamicHeightBufferSize)) { fromIndex = j; }\n          else { heightBeforeFirstItem += itemHeight; }\n        }\n\n        if (typeof toIndex === 'undefined') {\n          if (itemTop + itemHeight >= scrollTop + (vl.pageHeight * 2 * vl.params.dynamicHeightBufferSize) || j === vl.heights.length - 1) { toIndex = j + 1; }\n          heightBeforeLastItem += itemHeight;\n        }\n        itemTop += itemHeight;\n      }\n      toIndex = Math.min(toIndex, items.length);\n    } else {\n      fromIndex = (parseInt(scrollTop / vl.params.height, 10) - vl.rowsBefore) * vl.params.cols;\n      if (fromIndex < 0) {\n        fromIndex = 0;\n      }\n      toIndex = Math.min(fromIndex + (vl.rowsToRender * vl.params.cols), items.length);\n    }\n\n    var topPosition;\n    var renderExternalItems = [];\n    vl.reachEnd = false;\n    var i;\n    for (i = fromIndex; i < toIndex; i += 1) {\n      var itemEl = (void 0);\n      // Define real item index\n      var index = vl.items.indexOf(items[i]);\n\n      if (i === fromIndex) { vl.currentFromIndex = index; }\n      if (i === toIndex - 1) { vl.currentToIndex = index; }\n      if (vl.filteredItems) {\n        if (vl.items[index] === vl.filteredItems[vl.filteredItems.length - 1]) { vl.reachEnd = true; }\n      } else if (index === vl.items.length - 1) { vl.reachEnd = true; }\n\n      // Find items\n      if (vl.params.renderExternal) {\n        renderExternalItems.push(items[i]);\n      } else if (vl.domCache[index]) {\n        itemEl = vl.domCache[index];\n        itemEl.f7VirtualListIndex = index;\n      } else {\n        if (vl.renderItem) {\n          vl.tempDomElement.innerHTML = vl.renderItem(items[i], index).trim();\n        } else {\n          vl.tempDomElement.innerHTML = items[i].toString().trim();\n        }\n        itemEl = vl.tempDomElement.childNodes[0];\n        if (vl.params.cache) { vl.domCache[index] = itemEl; }\n        itemEl.f7VirtualListIndex = index;\n      }\n\n      // Set item top position\n      if (i === fromIndex) {\n        if (vl.dynamicHeight) {\n          topPosition = heightBeforeFirstItem;\n        } else {\n          topPosition = ((i * vl.params.height) / vl.params.cols);\n        }\n      }\n      if (!vl.params.renderExternal) {\n        itemEl.style.top = topPosition + \"px\";\n\n        // Before item insert\n        vl.emit('local::itemBeforeInsert vlItemBeforeInsert', vl, itemEl, items[i]);\n\n        // Append item to fragment\n        vl.fragment.appendChild(itemEl);\n      }\n    }\n\n    // Update list height with not updatable scroll\n    if (!vl.updatableScroll) {\n      if (vl.dynamicHeight) {\n        vl.ul.style.height = heightBeforeLastItem + \"px\";\n      } else {\n        vl.ul.style.height = ((i * vl.params.height) / vl.params.cols) + \"px\";\n      }\n    }\n\n    // Update list html\n    if (vl.params.renderExternal) {\n      if (items && items.length === 0) {\n        vl.reachEnd = true;\n      }\n    } else {\n      vl.emit('local::beforeClear vlBeforeClear', vl, vl.fragment);\n      vl.ul.innerHTML = '';\n\n      vl.emit('local::itemsBeforeInsert vlItemsBeforeInsert', vl, vl.fragment);\n\n      if (items && items.length === 0) {\n        vl.reachEnd = true;\n        if (vl.params.emptyTemplate) { vl.ul.innerHTML = vl.params.emptyTemplate; }\n      } else {\n        vl.ul.appendChild(vl.fragment);\n      }\n\n      vl.emit('local::itemsAfterInsert vlItemsAfterInsert', vl, vl.fragment);\n    }\n\n    if (typeof forceScrollTop !== 'undefined' && force) {\n      vl.$pageContentEl.scrollTop(forceScrollTop, 0);\n    }\n    if (vl.params.renderExternal) {\n      vl.params.renderExternal(vl, {\n        fromIndex: fromIndex,\n        toIndex: toIndex,\n        listHeight: vl.listHeight,\n        topPosition: topPosition,\n        items: renderExternalItems,\n      });\n    }\n  };\n  // Filter\n  VirtualList.prototype.filterItems = function filterItems (indexes, resetScrollTop) {\n    if ( resetScrollTop === void 0 ) resetScrollTop = true;\n\n    var vl = this;\n    vl.filteredItems = [];\n    for (var i = 0; i < indexes.length; i += 1) {\n      vl.filteredItems.push(vl.items[indexes[i]]);\n    }\n    if (resetScrollTop) {\n      vl.$pageContentEl[0].scrollTop = 0;\n    }\n    vl.update();\n  };\n  VirtualList.prototype.resetFilter = function resetFilter () {\n    var vl = this;\n    if (vl.params.showFilteredItemsOnly) {\n      vl.filteredItems = [];\n    } else {\n      vl.filteredItems = null;\n      delete vl.filteredItems;\n    }\n    vl.update();\n  };\n  VirtualList.prototype.scrollToItem = function scrollToItem (index) {\n    var vl = this;\n    if (index > vl.items.length) { return false; }\n    var itemTop = 0;\n    if (vl.dynamicHeight) {\n      for (var i = 0; i < index; i += 1) {\n        itemTop += vl.heights[i];\n      }\n    } else {\n      itemTop = index * vl.params.height;\n    }\n    var listTop = vl.$el[0].offsetTop;\n    vl.render(true, (listTop + itemTop) - parseInt(vl.$pageContentEl.css('padding-top'), 10));\n    return true;\n  };\n  VirtualList.prototype.handleScroll = function handleScroll () {\n    var vl = this;\n    vl.render();\n  };\n  // Handle resize event\n  VirtualList.prototype.isVisible = function isVisible () {\n    var vl = this;\n    return !!(vl.el.offsetWidth || vl.el.offsetHeight || vl.el.getClientRects().length);\n  };\n  VirtualList.prototype.handleResize = function handleResize () {\n    var vl = this;\n    if (vl.isVisible()) {\n      vl.setListSize();\n      vl.render(true);\n    }\n  };\n  // Append\n  VirtualList.prototype.appendItems = function appendItems (items) {\n    var vl = this;\n    for (var i = 0; i < items.length; i += 1) {\n      vl.items.push(items[i]);\n    }\n    vl.update();\n  };\n  VirtualList.prototype.appendItem = function appendItem (item) {\n    var vl = this;\n    vl.appendItems([item]);\n  };\n  // Replace\n  VirtualList.prototype.replaceAllItems = function replaceAllItems (items) {\n    var vl = this;\n    vl.items = items;\n    delete vl.filteredItems;\n    vl.domCache = {};\n    vl.update();\n  };\n  VirtualList.prototype.replaceItem = function replaceItem (index, item) {\n    var vl = this;\n    vl.items[index] = item;\n    if (vl.params.cache) { delete vl.domCache[index]; }\n    vl.update();\n  };\n  // Prepend\n  VirtualList.prototype.prependItems = function prependItems (items) {\n    var vl = this;\n    for (var i = items.length - 1; i >= 0; i -= 1) {\n      vl.items.unshift(items[i]);\n    }\n    if (vl.params.cache) {\n      var newCache = {};\n      Object.keys(vl.domCache).forEach(function (cached) {\n        newCache[parseInt(cached, 10) + items.length] = vl.domCache[cached];\n      });\n      vl.domCache = newCache;\n    }\n    vl.update();\n  };\n  VirtualList.prototype.prependItem = function prependItem (item) {\n    var vl = this;\n    vl.prependItems([item]);\n  };\n\n  // Move\n  VirtualList.prototype.moveItem = function moveItem (from, to) {\n    var vl = this;\n    var fromIndex = from;\n    var toIndex = to;\n    if (fromIndex === toIndex) { return; }\n    // remove item from array\n    var item = vl.items.splice(fromIndex, 1)[0];\n    if (toIndex >= vl.items.length) {\n      // Add item to the end\n      vl.items.push(item);\n      toIndex = vl.items.length - 1;\n    } else {\n    // Add item to new index\n      vl.items.splice(toIndex, 0, item);\n    }\n    // Update cache\n    if (vl.params.cache) {\n      var newCache = {};\n      Object.keys(vl.domCache).forEach(function (cached) {\n        var cachedIndex = parseInt(cached, 10);\n        var leftIndex = fromIndex < toIndex ? fromIndex : toIndex;\n        var rightIndex = fromIndex < toIndex ? toIndex : fromIndex;\n        var indexShift = fromIndex < toIndex ? -1 : 1;\n        if (cachedIndex < leftIndex || cachedIndex > rightIndex) { newCache[cachedIndex] = vl.domCache[cachedIndex]; }\n        if (cachedIndex === leftIndex) { newCache[rightIndex] = vl.domCache[cachedIndex]; }\n        if (cachedIndex > leftIndex && cachedIndex <= rightIndex) { newCache[cachedIndex + indexShift] = vl.domCache[cachedIndex]; }\n      });\n      vl.domCache = newCache;\n    }\n    vl.update();\n  };\n  // Insert before\n  VirtualList.prototype.insertItemBefore = function insertItemBefore (index, item) {\n    var vl = this;\n    if (index === 0) {\n      vl.prependItem(item);\n      return;\n    }\n    if (index >= vl.items.length) {\n      vl.appendItem(item);\n      return;\n    }\n    vl.items.splice(index, 0, item);\n    // Update cache\n    if (vl.params.cache) {\n      var newCache = {};\n      Object.keys(vl.domCache).forEach(function (cached) {\n        var cachedIndex = parseInt(cached, 10);\n        if (cachedIndex >= index) {\n          newCache[cachedIndex + 1] = vl.domCache[cachedIndex];\n        }\n      });\n      vl.domCache = newCache;\n    }\n    vl.update();\n  };\n  // Delete\n  VirtualList.prototype.deleteItems = function deleteItems (indexes) {\n    var vl = this;\n    var prevIndex;\n    var indexShift = 0;\n    var loop = function ( i ) {\n      var index = indexes[i];\n      if (typeof prevIndex !== 'undefined') {\n        if (index > prevIndex) {\n          indexShift = -i;\n        }\n      }\n      index += indexShift;\n      prevIndex = indexes[i];\n      // Delete item\n      var deletedItem = vl.items.splice(index, 1)[0];\n\n      // Delete from filtered\n      if (vl.filteredItems && vl.filteredItems.indexOf(deletedItem) >= 0) {\n        vl.filteredItems.splice(vl.filteredItems.indexOf(deletedItem), 1);\n      }\n      // Update cache\n      if (vl.params.cache) {\n        var newCache = {};\n        Object.keys(vl.domCache).forEach(function (cached) {\n          var cachedIndex = parseInt(cached, 10);\n          if (cachedIndex === index) {\n            delete vl.domCache[index];\n          } else if (parseInt(cached, 10) > index) {\n            newCache[cachedIndex - 1] = vl.domCache[cached];\n          } else {\n            newCache[cachedIndex] = vl.domCache[cached];\n          }\n        });\n        vl.domCache = newCache;\n      }\n    };\n\n    for (var i = 0; i < indexes.length; i += 1) loop( i );\n    vl.update();\n  };\n  VirtualList.prototype.deleteAllItems = function deleteAllItems () {\n    var vl = this;\n    vl.items = [];\n    delete vl.filteredItems;\n    if (vl.params.cache) { vl.domCache = {}; }\n    vl.update();\n  };\n  VirtualList.prototype.deleteItem = function deleteItem (index) {\n    var vl = this;\n    vl.deleteItems([index]);\n  };\n  // Clear cache\n  VirtualList.prototype.clearCachefunction = function clearCachefunction () {\n    var vl = this;\n    vl.domCache = {};\n  };\n  // Update Virtual List\n  VirtualList.prototype.update = function update () {\n    var vl = this;\n    vl.setListSize();\n    vl.render(true);\n  };\n  VirtualList.prototype.init = function init () {\n    var vl = this;\n    vl.attachEvents();\n    vl.setListSize();\n    vl.render();\n  };\n  VirtualList.prototype.destroy = function destroy () {\n    var vl = this;\n    vl.detachEvents();\n    vl.$el[0].f7VirtualList = null;\n    delete vl.$el[0].f7VirtualList;\n    Utils.deleteProps(vl);\n    vl = null;\n  };\n\n  return VirtualList;\n}(Framework7Class));\n\nvar VirtualList = {\n  name: 'virtualList',\n  static: {\n    VirtualList: VirtualList$1,\n  },\n  create: function create() {\n    var app = this;\n    app.virtualList = ConstructorMethods({\n      defaultSelector: '.virtual-list',\n      constructor: VirtualList$1,\n      app: app,\n      domProp: 'f7VirtualList',\n    });\n  },\n};\n\nvar Timeline = {\n  name: 'timeline',\n};\n\nvar Tab = {\n  show: function show() {\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n\n    var app = this;\n    var tabEl;\n    var tabLinkEl;\n    var animate;\n    var tabRoute;\n    if (args.length === 1 && args[0].constructor === Object) {\n      tabEl = args[0].tabEl;\n      tabLinkEl = args[0].tabLinkEl;\n      animate = args[0].animate;\n      tabRoute = args[0].tabRoute;\n    } else {\n      var assign;\n      (assign = args, tabEl = assign[0], tabLinkEl = assign[1], animate = assign[2], tabRoute = assign[3]);\n      if (typeof args[1] === 'boolean') {\n        var assign$1;\n        (assign$1 = args, tabEl = assign$1[0], animate = assign$1[1], tabLinkEl = assign$1[2], tabRoute = assign$1[3]);\n        if (args.length > 2 && tabLinkEl.constructor === Object) {\n          var assign$2;\n          (assign$2 = args, tabEl = assign$2[0], animate = assign$2[1], tabRoute = assign$2[2], tabLinkEl = assign$2[3]);\n        }\n      }\n    }\n    if (typeof animate === 'undefined') { animate = true; }\n\n    var $newTabEl = $$1$1(tabEl);\n\n    if ($newTabEl.length === 0 || $newTabEl.hasClass('tab-active')) {\n      return {\n        $newTabEl: $newTabEl,\n        newTabEl: $newTabEl[0],\n      };\n    }\n\n    var $tabLinkEl;\n    if (tabLinkEl) { $tabLinkEl = $$1$1(tabLinkEl); }\n\n    var $tabsEl = $newTabEl.parent('.tabs');\n    if ($tabsEl.length === 0) {\n      return {\n        $newTabEl: $newTabEl,\n        newTabEl: $newTabEl[0],\n      };\n    }\n\n    // Release swipeouts in hidden tabs\n    if (app.swipeout) { app.swipeout.allowOpen = true; }\n\n    // Animated tabs\n    var tabsChangedCallbacks = [];\n\n    function onTabsChanged(callback) {\n      tabsChangedCallbacks.push(callback);\n    }\n    function tabsChanged() {\n      tabsChangedCallbacks.forEach(function (callback) {\n        callback();\n      });\n    }\n\n    var animated = false;\n\n    if ($tabsEl.parent().hasClass('tabs-animated-wrap')) {\n      $tabsEl.parent()[animate ? 'removeClass' : 'addClass']('not-animated');\n\n      var transitionDuration = parseFloat($tabsEl.css('transition-duration').replace(',', '.'));\n      if (animate && transitionDuration) {\n        $tabsEl.transitionEnd(tabsChanged);\n        animated = true;\n      }\n\n      var tabsTranslate = (app.rtl ? $newTabEl.index() : -$newTabEl.index()) * 100;\n      $tabsEl.transform((\"translate3d(\" + tabsTranslate + \"%,0,0)\"));\n    }\n\n    // Swipeable tabs\n    if ($tabsEl.parent().hasClass('tabs-swipeable-wrap') && app.swiper) {\n      var swiper = $tabsEl.parent()[0].swiper;\n      if (swiper && swiper.activeIndex !== $newTabEl.index()) {\n        animated = true;\n        swiper\n          .once('slideChangeTransitionEnd', function () {\n            tabsChanged();\n          })\n          .slideTo($newTabEl.index(), animate ? undefined : 0);\n      }\n    }\n\n    // Remove active class from old tabs\n    var $oldTabEl = $tabsEl.children('.tab-active');\n    $oldTabEl\n      .removeClass('tab-active')\n      .trigger('tab:hide');\n    app.emit('tabHide', $oldTabEl[0]);\n\n    // Trigger 'show' event on new tab\n    $newTabEl\n      .addClass('tab-active')\n      .trigger('tab:show');\n    app.emit('tabShow', $newTabEl[0]);\n\n    // Find related link for new tab\n    if (!$tabLinkEl) {\n      // Search by id\n      if (typeof tabEl === 'string') { $tabLinkEl = $$1$1((\".tab-link[href=\\\"\" + tabEl + \"\\\"]\")); }\n      else { $tabLinkEl = $$1$1((\".tab-link[href=\\\"#\" + ($newTabEl.attr('id')) + \"\\\"]\")); }\n      // Search by data-tab\n      if (!$tabLinkEl || ($tabLinkEl && $tabLinkEl.length === 0)) {\n        $$1$1('[data-tab]').each(function (index, el) {\n          if ($newTabEl.is($$1$1(el).attr('data-tab'))) { $tabLinkEl = $$1$1(el); }\n        });\n      }\n      if (tabRoute && (!$tabLinkEl || ($tabLinkEl && $tabLinkEl.length === 0))) {\n        $tabLinkEl = $$1$1((\"[data-route-tab-id=\\\"\" + (tabRoute.route.tab.id) + \"\\\"]\"));\n        if ($tabLinkEl.length === 0) {\n          $tabLinkEl = $$1$1((\".tab-link[href=\\\"\" + (tabRoute.url) + \"\\\"]\"));\n        }\n      }\n      if ($tabLinkEl.length > 1 && $newTabEl.parents('.page').length) {\n        // eslint-disable-next-line\n        $tabLinkEl = $tabLinkEl.filter(function (index, tabLinkElement) {\n          return $$1$1(tabLinkElement).parents('.page')[0] === $newTabEl.parents('.page')[0];\n        });\n        if (app.theme === 'ios' && $tabLinkEl.length === 0 && tabRoute) {\n          var $pageEl = $newTabEl.parents('.page');\n          var $navbarEl = $$1$1(app.navbar.getElByPage($pageEl));\n          $tabLinkEl = $navbarEl.find((\"[data-route-tab-id=\\\"\" + (tabRoute.route.tab.id) + \"\\\"]\"));\n          if ($tabLinkEl.length === 0) {\n            $tabLinkEl = $navbarEl.find((\".tab-link[href=\\\"\" + (tabRoute.url) + \"\\\"]\"));\n          }\n        }\n      }\n    }\n    if ($tabLinkEl.length > 0) {\n      // Find related link for old tab\n      var $oldTabLinkEl;\n      if ($oldTabEl && $oldTabEl.length > 0) {\n        // Search by id\n        var oldTabId = $oldTabEl.attr('id');\n        if (oldTabId) { $oldTabLinkEl = $$1$1((\".tab-link[href=\\\"#\" + oldTabId + \"\\\"]\")); }\n        // Search by data-tab\n        if (!$oldTabLinkEl || ($oldTabLinkEl && $oldTabLinkEl.length === 0)) {\n          $$1$1('[data-tab]').each(function (index, tabLinkElement) {\n            if ($oldTabEl.is($$1$1(tabLinkElement).attr('data-tab'))) { $oldTabLinkEl = $$1$1(tabLinkElement); }\n          });\n        }\n        if (!$oldTabLinkEl || ($oldTabLinkEl && $oldTabLinkEl.length === 0)) {\n          $oldTabLinkEl = $tabLinkEl.siblings('.tab-link-active');\n        }\n      } else if (tabRoute) {\n        $oldTabLinkEl = $tabLinkEl.siblings('.tab-link-active');\n      }\n\n      if ($oldTabLinkEl && $oldTabLinkEl.length > 1 && $oldTabEl && $oldTabEl.parents('.page').length) {\n        // eslint-disable-next-line\n        $oldTabLinkEl = $oldTabLinkEl.filter(function (index, tabLinkElement) {\n          return $$1$1(tabLinkElement).parents('.page')[0] === $oldTabEl.parents('.page')[0];\n        });\n      }\n\n      if ($oldTabLinkEl && $oldTabLinkEl.length > 0) { $oldTabLinkEl.removeClass('tab-link-active'); }\n\n      // Update links' classes\n      if ($tabLinkEl && $tabLinkEl.length > 0) {\n        $tabLinkEl.addClass('tab-link-active');\n        // Material Highlight\n        if (app.theme === 'md' && app.toolbar) {\n          var $tabbarEl = $tabLinkEl.parents('.tabbar, .tabbar-labels');\n          if ($tabbarEl.length > 0) {\n            app.toolbar.setHighlight($tabbarEl);\n          }\n        }\n      }\n    }\n    return {\n      $newTabEl: $newTabEl,\n      newTabEl: $newTabEl[0],\n      $oldTabEl: $oldTabEl,\n      oldTabEl: $oldTabEl[0],\n      onTabsChanged: onTabsChanged,\n      animated: animated,\n    };\n  },\n};\nvar Tabs = {\n  name: 'tabs',\n  create: function create() {\n    var app = this;\n    Utils.extend(app, {\n      tab: {\n        show: Tab.show.bind(app),\n      },\n    });\n  },\n  clicks: {\n    '.tab-link': function tabLinkClick($clickedEl, data) {\n      if ( data === void 0 ) data = {};\n\n      var app = this;\n      if (($clickedEl.attr('href') && $clickedEl.attr('href').indexOf('#') === 0) || $clickedEl.attr('data-tab')) {\n        app.tab.show({\n          tabEl: data.tab || $clickedEl.attr('href'),\n          tabLinkEl: $clickedEl,\n          animate: data.animate,\n        });\n      }\n    },\n  },\n};\n\nfunction swipePanel$1(panel) {\n  var app = panel.app;\n  Utils.extend(panel, {\n    swipeable: true,\n    swipeInitialized: true,\n  });\n  var params = app.params.panel;\n  var $el = panel.$el;\n  var $backdropEl = panel.$backdropEl;\n  var side = panel.side;\n  var effect = panel.effect;\n  var otherPanel;\n\n  var isTouched;\n  var isMoved;\n  var isScrolling;\n  var touchesStart = {};\n  var touchStartTime;\n  var touchesDiff;\n  var translate;\n  var backdropOpacity;\n  var panelWidth;\n  var direction;\n\n  var $viewEl;\n\n  var touchMoves = 0;\n  function handleTouchStart(e) {\n    if (!panel.swipeable) { return; }\n    if (!app.panel.allowOpen || (!params.swipe && !params.swipeOnlyClose) || isTouched) { return; }\n    if ($$1$1('.modal-in, .photo-browser-in').length > 0) { return; }\n    otherPanel = app.panel[side === 'left' ? 'right' : 'left'] || {};\n    if (!panel.opened && otherPanel.opened) { return; }\n    if (!(params.swipeCloseOpposite || params.swipeOnlyClose)) {\n      if (otherPanel.opened) { return; }\n    }\n    if (e.target && e.target.nodeName.toLowerCase() === 'input' && e.target.type === 'range') { return; }\n    if ($$1$1(e.target).closest('.range-slider, .tabs-swipeable-wrap, .calendar-months, .no-swipe-panel').length > 0) { return; }\n    touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n    touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n    if (params.swipeOnlyClose && !panel.opened) {\n      return;\n    }\n    if (params.swipe !== 'both' && params.swipeCloseOpposite && params.swipe !== side && !panel.opened) {\n      return;\n    }\n    if (params.swipeActiveArea && !panel.opened) {\n      if (side === 'left') {\n        if (touchesStart.x > params.swipeActiveArea) { return; }\n      }\n      if (side === 'right') {\n        if (touchesStart.x < app.width - params.swipeActiveArea) { return; }\n      }\n    }\n    touchMoves = 0;\n    $viewEl = $$1$1(panel.getViewEl());\n    isMoved = false;\n    isTouched = true;\n    isScrolling = undefined;\n\n    touchStartTime = Utils.now();\n    direction = undefined;\n  }\n  function handleTouchMove(e) {\n    if (!isTouched) { return; }\n    touchMoves += 1;\n    if (touchMoves < 2) { return; }\n    if (e.f7PreventSwipePanel || app.preventSwipePanelBySwipeBack || app.preventSwipePanel) {\n      isTouched = false;\n      return;\n    }\n    var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n    var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n    if (typeof isScrolling === 'undefined') {\n      isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n    }\n    if (isScrolling) {\n      isTouched = false;\n      return;\n    }\n    if (!direction) {\n      if (pageX > touchesStart.x) {\n        direction = 'to-right';\n      } else {\n        direction = 'to-left';\n      }\n\n      if (params.swipe === 'both') {\n        if (params.swipeActiveArea > 0) {\n          if (side === 'left' && touchesStart.x > params.swipeActiveArea) {\n            isTouched = false;\n            return;\n          }\n          if (side === 'right' && touchesStart.x < app.width - params.swipeActiveArea) {\n            isTouched = false;\n            return;\n          }\n        }\n      }\n      if ($el.hasClass('panel-visible-by-breakpoint')) {\n        isTouched = false;\n        return;\n      }\n\n      if (\n        (side === 'left' &&\n          (\n            direction === 'to-left' && !$el.hasClass('panel-active')\n          )\n        )\n        ||\n        (side === 'right' &&\n          (\n            direction === 'to-right' && !$el.hasClass('panel-active')\n          )\n        )\n      ) {\n        isTouched = false;\n        return;\n      }\n    }\n\n    if (params.swipeNoFollow) {\n      var timeDiff = (new Date()).getTime() - touchStartTime;\n      if (timeDiff < 300) {\n        if (direction === 'to-left') {\n          if (side === 'right') { app.panel.open(side); }\n          if (side === 'left' && $el.hasClass('panel-active')) { app.panel.close(); }\n        }\n        if (direction === 'to-right') {\n          if (side === 'left') { app.panel.open(side); }\n          if (side === 'right' && $el.hasClass('panel-active')) { app.panel.close(); }\n        }\n      }\n      isTouched = false;\n      isMoved = false;\n      return;\n    }\n\n    if (!isMoved) {\n      if (!panel.opened) {\n        $el.show();\n        $backdropEl.show();\n        $el.trigger('panel:swipeopen', panel);\n        panel.emit('local::swipeOpen panelSwipeOpen', panel);\n      }\n      panelWidth = $el[0].offsetWidth;\n      $el.transition(0);\n    }\n\n    isMoved = true;\n\n    e.preventDefault();\n    var threshold = panel.opened ? 0 : -params.swipeThreshold;\n    if (side === 'right') { threshold = -threshold; }\n\n    touchesDiff = (pageX - touchesStart.x) + threshold;\n\n    if (side === 'right') {\n      if (effect === 'cover') {\n        translate = touchesDiff + (panel.opened ? 0 : panelWidth);\n        if (translate < 0) { translate = 0; }\n        if (translate > panelWidth) {\n          translate = panelWidth;\n        }\n      } else {\n        translate = touchesDiff - (panel.opened ? panelWidth : 0);\n        if (translate > 0) { translate = 0; }\n        if (translate < -panelWidth) {\n          translate = -panelWidth;\n        }\n      }\n    } else {\n      translate = touchesDiff + (panel.opened ? panelWidth : 0);\n      if (translate < 0) { translate = 0; }\n      if (translate > panelWidth) {\n        translate = panelWidth;\n      }\n    }\n    if (effect === 'reveal') {\n      $viewEl.transform((\"translate3d(\" + translate + \"px,0,0)\")).transition(0);\n      $backdropEl.transform((\"translate3d(\" + translate + \"px,0,0)\")).transition(0);\n\n      $el.trigger('panel:swipe', panel, Math.abs(translate / panelWidth));\n      panel.emit('local::swipe panelSwipe', panel, Math.abs(translate / panelWidth));\n    } else {\n      if (side === 'left') { translate -= panelWidth; }\n      $el.transform((\"translate3d(\" + translate + \"px,0,0)\")).transition(0);\n\n      $backdropEl.transition(0);\n      backdropOpacity = 1 - Math.abs(translate / panelWidth);\n      $backdropEl.css({ opacity: backdropOpacity });\n\n      $el.trigger('panel:swipe', panel, Math.abs(translate / panelWidth));\n      panel.emit('local::swipe panelSwipe', panel, Math.abs(translate / panelWidth));\n    }\n  }\n  function handleTouchEnd() {\n    if (!isTouched || !isMoved) {\n      isTouched = false;\n      isMoved = false;\n      return;\n    }\n    isTouched = false;\n    isMoved = false;\n    var timeDiff = (new Date()).getTime() - touchStartTime;\n    var action;\n    var edge = (translate === 0 || Math.abs(translate) === panelWidth);\n\n    if (!panel.opened) {\n      if (effect === 'cover') {\n        if (translate === 0) {\n          action = 'swap'; // open\n        } else if (timeDiff < 300 && Math.abs(translate) > 0) {\n          action = 'swap'; // open\n        } else if (timeDiff >= 300 && Math.abs(translate) < panelWidth / 2) {\n          action = 'swap'; // open\n        } else {\n          action = 'reset'; // close\n        }\n      } else if (translate === 0) {\n        action = 'reset';\n      } else if (\n        (timeDiff < 300 && Math.abs(translate) > 0)\n        ||\n        (timeDiff >= 300 && (Math.abs(translate) >= panelWidth / 2))\n      ) {\n        action = 'swap';\n      } else {\n        action = 'reset';\n      }\n    } else if (effect === 'cover') {\n      if (translate === 0) {\n        action = 'reset'; // open\n      } else if (timeDiff < 300 && Math.abs(translate) > 0) {\n        action = 'swap'; // open\n      } else if (timeDiff >= 300 && Math.abs(translate) < panelWidth / 2) {\n        action = 'reset'; // open\n      } else {\n        action = 'swap'; // close\n      }\n    } else if (translate === -panelWidth) {\n      action = 'reset';\n    } else if (\n      (timeDiff < 300 && Math.abs(translate) >= 0)\n      ||\n      (timeDiff >= 300 && (Math.abs(translate) <= panelWidth / 2))\n    ) {\n      if (side === 'left' && translate === panelWidth) { action = 'reset'; }\n      else { action = 'swap'; }\n    } else {\n      action = 'reset';\n    }\n    if (action === 'swap') {\n      if (panel.opened) {\n        panel.close(!edge);\n      } else {\n        panel.open(!edge);\n      }\n    }\n    if (action === 'reset') {\n      if (!panel.opened) {\n        if (edge) {\n          $el.css({ display: '' });\n        } else {\n          var target = effect === 'reveal' ? $viewEl : $el;\n          $$1$1('html').addClass('with-panel-transitioning');\n          target.transitionEnd(function () {\n            if ($el.hasClass('panel-active')) { return; }\n            $el.css({ display: '' });\n            $$1$1('html').removeClass('with-panel-transitioning');\n          });\n        }\n      }\n    }\n    if (effect === 'reveal') {\n      Utils.nextFrame(function () {\n        $viewEl.transition('');\n        $viewEl.transform('');\n      });\n    }\n    $el.transition('').transform('');\n    $backdropEl.css({ display: '' }).transform('').transition('').css('opacity', '');\n  }\n\n  // Add Events\n  app.on('touchstart:passive', handleTouchStart);\n  app.on('touchmove:active', handleTouchMove);\n  app.on('touchend:passive', handleTouchEnd);\n  panel.on('panelDestroy', function () {\n    app.off('touchstart:passive', handleTouchStart);\n    app.off('touchmove:active', handleTouchMove);\n    app.off('touchend:passive', handleTouchEnd);\n  });\n}\n\nvar Panel$1 = (function (Framework7Class$$1) {\n  function Panel(app, params) {\n    var obj;\n\n    if ( params === void 0 ) params = {};\n    Framework7Class$$1.call(this, params, [app]);\n    var panel = this;\n\n    var el = params.el;\n    var $el = $$1$1(el);\n    if ($el.length === 0) { return panel; }\n    if ($el[0].f7Panel) { return $el[0].f7Panel; }\n\n    $el[0].f7Panel = panel;\n\n    var opened = params.opened;\n    var side = params.side;\n    var effect = params.effect;\n    if (typeof opened === 'undefined') { opened = $el.hasClass('panel-active'); }\n    if (typeof side === 'undefined') { side = $el.hasClass('panel-left') ? 'left' : 'right'; }\n    if (typeof effect === 'undefined') { effect = $el.hasClass('panel-cover') ? 'cover' : 'reveal'; }\n\n    if (!app.panel[side]) {\n      Utils.extend(app.panel, ( obj = {}, obj[side] = panel, obj ));\n    }\n\n    var $backdropEl = $$1$1('.panel-backdrop');\n    if ($backdropEl.length === 0) {\n      $backdropEl = $$1$1('<div class=\"panel-backdrop\"></div>');\n      $backdropEl.insertBefore($el);\n    }\n\n    Utils.extend(panel, {\n      app: app,\n      side: side,\n      effect: effect,\n      $el: $el,\n      el: $el[0],\n      opened: opened,\n      $backdropEl: $backdropEl,\n      backdropEl: $backdropEl[0],\n    });\n\n    // Install Modules\n    panel.useModules();\n\n    // Init\n    panel.init();\n\n    return panel;\n  }\n\n  if ( Framework7Class$$1 ) Panel.__proto__ = Framework7Class$$1;\n  Panel.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n  Panel.prototype.constructor = Panel;\n  Panel.prototype.init = function init () {\n    var panel = this;\n    var app = panel.app;\n    if (app.params.panel[((panel.side) + \"Breakpoint\")]) {\n      panel.initBreakpoints();\n    }\n    {\n      if (\n        (app.params.panel.swipe === panel.side)\n        ||\n        (app.params.panel.swipe === 'both')\n        ||\n        (app.params.panel.swipe && app.params.panel.swipe !== panel.side && app.params.panel.swipeCloseOpposite)\n      ) {\n        panel.initSwipePanel();\n      }\n    }\n  };\n  Panel.prototype.getViewEl = function getViewEl () {\n    var panel = this;\n    var app = panel.app;\n    var viewEl;\n    if (app.root.children('.views').length > 0) {\n      viewEl = app.root.children('.views')[0];\n    } else {\n      viewEl = app.root.children('.view')[0];\n    }\n    return viewEl;\n  };\n  Panel.prototype.setBreakpoint = function setBreakpoint () {\n    var obj, obj$1;\n\n    var panel = this;\n    var app = panel.app;\n    var side = panel.side;\n    var $el = panel.$el;\n    var $viewEl = $$1$1(panel.getViewEl());\n    var breakpoint = app.params.panel[(side + \"Breakpoint\")];\n    var wasVisible = $el.hasClass('panel-visible-by-breakpoint');\n\n    if (app.width >= breakpoint) {\n      if (!wasVisible) {\n        $$1$1('html').removeClass((\"with-panel-\" + side + \"-reveal with-panel-\" + side + \"-cover with-panel\"));\n        $el.css('display', '').addClass('panel-visible-by-breakpoint').removeClass('panel-active');\n        panel.onOpen();\n        panel.onOpened();\n        $viewEl.css(( obj = {}, obj[(\"margin-\" + side)] = (($el.width()) + \"px\"), obj ));\n        app.allowPanelOpen = true;\n        app.emit('local::breakpoint panelBreakpoint');\n        panel.$el.trigger('panel:breakpoint', panel);\n      }\n    } else if (wasVisible) {\n      $el.css('display', '').removeClass('panel-visible-by-breakpoint panel-active');\n      panel.onClose();\n      panel.onClosed();\n      $viewEl.css(( obj$1 = {}, obj$1[(\"margin-\" + side)] = '', obj$1 ));\n      app.emit('local::breakpoint panelBreakpoint');\n      panel.$el.trigger('panel:breakpoint', panel);\n    }\n  };\n  Panel.prototype.initBreakpoints = function initBreakpoints () {\n    var panel = this;\n    var app = panel.app;\n    panel.resizeHandler = function resizeHandler() {\n      panel.setBreakpoint();\n    };\n    if (app.params.panel[((panel.side) + \"Breakpoint\")]) {\n      app.on('resize', panel.resizeHandler);\n    }\n    panel.setBreakpoint();\n    return panel;\n  };\n  Panel.prototype.initSwipePanel = function initSwipePanel () {\n    {\n      swipePanel$1(this);\n    }\n  };\n  Panel.prototype.destroy = function destroy () {\n    var panel = this;\n    var app = panel.app;\n\n    panel.emit('local::beforeDestroy panelBeforeDestroy', panel);\n    panel.$el.trigger('panel:beforedestroy', panel);\n\n    if (panel.resizeHandler) {\n      app.off('resize', panel.resizeHandler);\n    }\n    panel.$el.trigger('panel:destroy', panel);\n    panel.emit('local::destroy panelDestroy');\n    delete app.panel[panel.side];\n    delete panel.el.f7Panel;\n    Utils.deleteProps(panel);\n    panel = null;\n  };\n  Panel.prototype.open = function open (animate) {\n    if ( animate === void 0 ) animate = true;\n\n    var panel = this;\n    var app = panel.app;\n    if (!app.panel.allowOpen) { return false; }\n\n    var side = panel.side;\n    var effect = panel.effect;\n    var $el = panel.$el;\n    var $backdropEl = panel.$backdropEl;\n    var opened = panel.opened;\n\n    // Ignore if opened\n    if (opened || $el.hasClass('panel-visible-by-breakpoint') || $el.hasClass('panel-active')) { return false; }\n\n    // Close if some panel is opened\n    app.panel.close(side === 'left' ? 'right' : 'left', animate);\n\n    app.panel.allowOpen = false;\n\n    $el[animate ? 'removeClass' : 'addClass']('not-animated');\n    $el\n      .css({ display: 'block' })\n      .addClass('panel-active');\n\n    $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n    $backdropEl.show();\n\n    /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n    panel._clientLeft = $el[0].clientLeft;\n\n    $$1$1('html').addClass((\"with-panel with-panel-\" + side + \"-\" + effect));\n    panel.onOpen();\n\n    // Transition End;\n    var transitionEndTarget = effect === 'reveal' ? $el.nextAll('.view, .views').eq(0) : $el;\n\n    function panelTransitionEnd() {\n      transitionEndTarget.transitionEnd(function (e) {\n        if ($$1$1(e.target).is(transitionEndTarget)) {\n          if ($el.hasClass('panel-active')) {\n            panel.onOpened();\n            $backdropEl.css({ display: '' });\n          } else {\n            panel.onClosed();\n            $backdropEl.css({ display: '' });\n          }\n        } else { panelTransitionEnd(); }\n      });\n    }\n    if (animate) {\n      panelTransitionEnd();\n    } else {\n      panel.onOpened();\n      $backdropEl.css({ display: '' });\n    }\n\n    return true;\n  };\n  Panel.prototype.close = function close (animate) {\n    if ( animate === void 0 ) animate = true;\n\n    var panel = this;\n    var app = panel.app;\n\n    var side = panel.side;\n    var effect = panel.effect;\n    var $el = panel.$el;\n    var $backdropEl = panel.$backdropEl;\n    var opened = panel.opened;\n\n    if (!opened || $el.hasClass('panel-visible-by-breakpoint') || !$el.hasClass('panel-active')) { return false; }\n\n    $el[animate ? 'removeClass' : 'addClass']('not-animated');\n    $el.removeClass('panel-active');\n\n    $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n\n    var transitionEndTarget = effect === 'reveal' ? $el.nextAll('.view, .views').eq(0) : $el;\n\n    panel.onClose();\n    app.panel.allowOpen = false;\n\n    if (animate) {\n      transitionEndTarget.transitionEnd(function () {\n        if ($el.hasClass('panel-active')) { return; }\n        $el.css({ display: '' });\n        $$1$1('html').removeClass('with-panel-transitioning');\n        panel.onClosed();\n      });\n      $$1$1('html')\n        .removeClass((\"with-panel with-panel-\" + side + \"-\" + effect))\n        .addClass('with-panel-transitioning');\n    } else {\n      $el.css({ display: '' });\n      $el.removeClass('not-animated');\n      $$1$1('html').removeClass((\"with-panel with-panel-transitioning with-panel-\" + side + \"-\" + effect));\n      panel.onClosed();\n    }\n    return true;\n  };\n  Panel.prototype.onOpen = function onOpen () {\n    var panel = this;\n    panel.opened = true;\n    panel.$el.trigger('panel:open', panel);\n    panel.emit('local::open panelOpen', panel);\n  };\n  Panel.prototype.onOpened = function onOpened () {\n    var panel = this;\n    var app = panel.app;\n    app.panel.allowOpen = true;\n\n    panel.$el.trigger('panel:opened', panel);\n    panel.emit('local::opened panelOpened', panel);\n  };\n  Panel.prototype.onClose = function onClose () {\n    var panel = this;\n    panel.opened = false;\n    panel.$el.addClass('panel-closing');\n    panel.$el.trigger('panel:close', panel);\n    panel.emit('local::close panelClose', panel);\n  };\n  Panel.prototype.onClosed = function onClosed () {\n    var panel = this;\n    var app = panel.app;\n    app.panel.allowOpen = true;\n    panel.$el.removeClass('panel-closing');\n    panel.$el.trigger('panel:closed', panel);\n    panel.emit('local::closed panelClosed', panel);\n  };\n\n  return Panel;\n}(Framework7Class));\n\nvar Panel = {\n  name: 'panel',\n  params: {\n    panel: {\n      leftBreakpoint: 0,\n      rightBreakpoint: 0,\n      swipe: undefined, // or 'left' or 'right' or 'both'\n      swipeActiveArea: 0,\n      swipeCloseOpposite: true,\n      swipeOnlyClose: false,\n      swipeNoFollow: false,\n      swipeThreshold: 0,\n      closeByBackdropClick: true,\n    },\n  },\n  static: {\n    Panel: Panel$1,\n  },\n  instance: {\n    panel: {\n      allowOpen: true,\n    },\n  },\n  create: function create() {\n    var app = this;\n    Utils.extend(app.panel, {\n      disableSwipe: function disableSwipe(panel) {\n        if ( panel === void 0 ) panel = 'both';\n\n        var side;\n        var panels = [];\n        if (typeof panel === 'string') {\n          if (panel === 'both') {\n            side = 'both';\n            panels = [app.panel.left, app.panel.right];\n          } else {\n            side = panel;\n            panels = app.panel[side];\n          }\n        } else {\n          panels = [panel];\n        }\n        panels.forEach(function (panelInstance) {\n          if (panelInstance) { Utils.extend(panelInstance, { swipeable: false }); }\n        });\n      },\n      enableSwipe: function enableSwipe(panel) {\n        if ( panel === void 0 ) panel = 'both';\n\n        var panels = [];\n        var side;\n        if (typeof panel === 'string') {\n          side = panel;\n          if (\n            (app.params.panel.swipe === 'left' && side === 'right') ||\n            (app.params.panel.swipe === 'right' && side === 'left') ||\n            side === 'both'\n          ) {\n            side = 'both';\n            app.params.panel.swipe = side;\n            panels = [app.panel.left, app.panel.right];\n          } else {\n            app.params.panel.swipe = side;\n            panels.push(app.panel[side]);\n          }\n        } else if (panel) {\n          panels.push(panel);\n        }\n        if (panels.length) {\n          panels.forEach(function (panelInstance) {\n            if (!panelInstance) { return; }\n            if (!panelInstance.swipeInitialized) {\n              panelInstance.initSwipePanel();\n            } else {\n              Utils.extend(panelInstance, { swipeable: true });\n            }\n          });\n        }\n      },\n      create: function create(params) {\n        return new Panel$1(app, params);\n      },\n      open: function open(side, animate) {\n        var panelSide = side;\n        if (!panelSide) {\n          if ($$1$1('.panel').length > 1) {\n            return false;\n          }\n          panelSide = $$1$1('.panel').hasClass('panel-left') ? 'left' : 'right';\n        }\n        if (!panelSide) { return false; }\n        if (app.panel[panelSide]) {\n          return app.panel[panelSide].open(animate);\n        }\n        var $panelEl = $$1$1((\".panel-\" + panelSide));\n        if ($panelEl.length > 0) {\n          return app.panel.create({ el: $panelEl }).open(animate);\n        }\n        return false;\n      },\n      close: function close(side, animate) {\n        var $panelEl;\n        var panelSide;\n        if (panelSide) {\n          panelSide = side;\n          $panelEl = $$1$1((\".panel-\" + panelSide));\n        } else {\n          $panelEl = $$1$1('.panel.panel-active');\n          panelSide = $panelEl.hasClass('panel-left') ? 'left' : 'right';\n        }\n        if (!panelSide) { return false; }\n        if (app.panel[panelSide]) {\n          return app.panel[panelSide].close(animate);\n        }\n        if ($panelEl.length > 0) {\n          return app.panel.create({ el: $panelEl }).close(animate);\n        }\n        return false;\n      },\n      get: function get(side) {\n        var panelSide = side;\n        if (!panelSide) {\n          if ($$1$1('.panel').length > 1) {\n            return undefined;\n          }\n          panelSide = $$1$1('.panel').hasClass('panel-left') ? 'left' : 'right';\n        }\n        if (!panelSide) { return undefined; }\n        if (app.panel[panelSide]) {\n          return app.panel[panelSide];\n        }\n        var $panelEl = $$1$1((\".panel-\" + panelSide));\n        if ($panelEl.length > 0) {\n          return app.panel.create({ el: $panelEl });\n        }\n        return undefined;\n      },\n    });\n  },\n  on: {\n    init: function init() {\n      var app = this;\n\n      // Create Panels\n      $$1$1('.panel').each(function (index, panelEl) {\n        var side = $$1$1(panelEl).hasClass('panel-left') ? 'left' : 'right';\n        app.panel[side] = app.panel.create({ el: panelEl, side: side });\n      });\n    },\n  },\n  clicks: {\n    '.panel-open': function open(clickedEl, data) {\n      if ( data === void 0 ) data = {};\n\n      var app = this;\n      var side = 'left';\n      if (data.panel === 'right' || ($$1$1('.panel').length === 1 && $$1$1('.panel').hasClass('panel-right'))) {\n        side = 'right';\n      }\n      app.panel.open(side, data.animate);\n    },\n    '.panel-close': function close(clickedEl, data) {\n      if ( data === void 0 ) data = {};\n\n      var app = this;\n      var side = data.panel;\n      app.panel.close(side, data.animate);\n    },\n    '.panel-backdrop': function close() {\n      var app = this;\n      var $panelEl = $$1$1('.panel-active');\n      var instance = $panelEl[0] && $panelEl[0].f7Panel;\n      $panelEl.trigger('panel:backdrop-click');\n      if (instance) {\n        instance.emit('backdropClick', instance);\n      }\n      app.emit('panelBackdropClick', instance || $panelEl[0]);\n      if (app.params.panel.closeByBackdropClick) { app.panel.close(); }\n    },\n  },\n};\n\nvar Card = {\n  name: 'card',\n};\n\nvar Chip = {\n  name: 'chip',\n};\n\n// Form Data\nvar FormData$1 = {\n  store: function store(form, data) {\n    var app = this;\n    var formId = form;\n\n    var $formEl = $$1$1(form);\n    if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {\n      formId = $formEl.attr('id');\n    }\n    // Store form data in app.formsData\n    app.form.data[(\"form-\" + formId)] = data;\n\n    // Store form data in local storage also\n    try {\n      window.localStorage[(\"f7form-\" + formId)] = JSON.stringify(data);\n    } catch (e) {\n      throw e;\n    }\n  },\n  get: function get(form) {\n    var app = this;\n    var formId = form;\n\n    var $formEl = $$1$1(form);\n    if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {\n      formId = $formEl.attr('id');\n    }\n\n    try {\n      if (window.localStorage[(\"f7form-\" + formId)]) {\n        return JSON.parse(window.localStorage[(\"f7form-\" + formId)]);\n      }\n    } catch (e) {\n      throw e;\n    }\n    if (app.form.data[(\"form-\" + formId)]) {\n      return app.form.data[(\"form-\" + formId)];\n    }\n    return undefined;\n  },\n  remove: function remove(form) {\n    var app = this;\n    var formId = form;\n\n    var $formEl = $$1$1(form);\n    if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {\n      formId = $formEl.attr('id');\n    }\n\n    // Delete form data from app.formsData\n    if (app.form.data[(\"form-\" + formId)]) {\n      app.form.data[(\"form-\" + formId)] = '';\n      delete app.form.data[(\"form-\" + formId)];\n    }\n\n    // Delete form data from local storage also\n    try {\n      if (window.localStorage[(\"f7form-\" + formId)]) {\n        window.localStorage[(\"f7form-\" + formId)] = '';\n        window.localStorage.removeItem((\"f7form-\" + formId));\n      }\n    } catch (e) {\n      throw e;\n    }\n  },\n};\n\n// Form Storage\nvar FormStorage = {\n  init: function init(formEl) {\n    var app = this;\n    var $formEl = $$1$1(formEl);\n    var formId = $formEl.attr('id');\n    if (!formId) { return; }\n    var initialData = app.form.getFormData(formId);\n    if (initialData) {\n      app.form.fillFromData($formEl, initialData);\n    }\n    function store() {\n      var data = app.form.convertToData($formEl);\n      if (!data) { return; }\n      app.form.storeFormData(formId, data);\n      $formEl.trigger('form:storedata', data);\n      app.emit('formStoreData', $formEl[0], data);\n    }\n    $formEl.on('change submit', store);\n  },\n  destroy: function destroy(formEl) {\n    var $formEl = $$1$1(formEl);\n    $formEl.off('change submit');\n  },\n};\n\n// Form To/From Data\nfunction formToData(formEl) {\n  var app = this;\n  var $formEl = $$1$1(formEl).eq(0);\n  if ($formEl.length === 0) { return undefined; }\n\n  // Form data\n  var data = {};\n\n  // Skip input types\n  var skipTypes = ['submit', 'image', 'button', 'file'];\n  var skipNames = [];\n  $formEl.find('input, select, textarea').each(function (inputIndex, inputEl) {\n    var $inputEl = $$1$1(inputEl);\n    var name = $inputEl.attr('name');\n    var type = $inputEl.attr('type');\n    var tag = inputEl.nodeName.toLowerCase();\n    if (skipTypes.indexOf(type) >= 0) { return; }\n    if (skipNames.indexOf(name) >= 0 || !name) { return; }\n    if (tag === 'select' && $inputEl.prop('multiple')) {\n      skipNames.push(name);\n      data[name] = [];\n      $formEl.find((\"select[name=\\\"\" + name + \"\\\"] option\")).each(function (index, el) {\n        if (el.selected) { data[name].push(el.value); }\n      });\n    } else {\n      switch (type) {\n        case 'checkbox':\n          skipNames.push(name);\n          data[name] = [];\n          $formEl.find((\"input[name=\\\"\" + name + \"\\\"]\")).each(function (index, el) {\n            if (el.checked) { data[name].push(el.value); }\n          });\n          break;\n        case 'radio':\n          skipNames.push(name);\n          $formEl.find((\"input[name=\\\"\" + name + \"\\\"]\")).each(function (index, el) {\n            if (el.checked) { data[name] = el.value; }\n          });\n          break;\n        default:\n          data[name] = $inputEl.val();\n          break;\n      }\n    }\n  });\n  $formEl.trigger('form:todata', data);\n  app.emit('formToData', $formEl[0], data);\n\n  return data;\n}\nfunction formFromData(formEl, formData) {\n  var app = this;\n  var $formEl = $$1$1(formEl).eq(0);\n  if (!$formEl.length) { return; }\n\n  var data = formData;\n  var formId = $formEl.attr('id');\n\n  if (!data && formId) {\n    data = app.form.getFormData(formId);\n  }\n\n  if (!data) { return; }\n\n  // Skip input types\n  var skipTypes = ['submit', 'image', 'button', 'file'];\n  var skipNames = [];\n\n  $formEl.find('input, select, textarea').each(function (inputIndex, inputEl) {\n    var $inputEl = $$1$1(inputEl);\n    var name = $inputEl.attr('name');\n    var type = $inputEl.attr('type');\n    var tag = inputEl.nodeName.toLowerCase();\n    if (typeof data[name] === 'undefined' || data[name] === null) { return; }\n    if (skipTypes.indexOf(type) >= 0) { return; }\n    if (skipNames.indexOf(name) >= 0 || !name) { return; }\n    if (tag === 'select' && $inputEl.prop('multiple')) {\n      skipNames.push(name);\n      $formEl.find((\"select[name=\\\"\" + name + \"\\\"] option\")).each(function (index, el) {\n        var selectEl = el;\n        if (data[name].indexOf(el.value) >= 0) { selectEl.selected = true; }\n        else { selectEl.selected = false; }\n      });\n    } else {\n      switch (type) {\n        case 'checkbox':\n          skipNames.push(name);\n          $formEl.find((\"input[name=\\\"\" + name + \"\\\"]\")).each(function (index, el) {\n            var checkboxEl = el;\n            if (data[name].indexOf(el.value) >= 0) { checkboxEl.checked = true; }\n            else { checkboxEl.checked = false; }\n          });\n          break;\n        case 'radio':\n          skipNames.push(name);\n          $formEl.find((\"input[name=\\\"\" + name + \"\\\"]\")).each(function (index, el) {\n            var radioEl = el;\n            if (data[name] === el.value) { radioEl.checked = true; }\n            else { radioEl.checked = false; }\n          });\n          break;\n        default:\n          $inputEl.val(data[name]);\n          break;\n      }\n    }\n    if (tag === 'select' || tag === 'input' || tag === 'textarea') {\n      $inputEl.trigger('change', 'fromdata');\n    }\n  });\n  $formEl.trigger('form:fromdata', data);\n  app.emit('formFromData', $formEl[0], data);\n}\n\nfunction initAjaxForm() {\n  var app = this;\n\n  function onSubmitChange(e, fromData) {\n    var $formEl = $$1$1(this);\n    if (e.type === 'change' && !$formEl.hasClass('form-ajax-submit-onchange')) { return; }\n    if (e.type === 'submit') { e.preventDefault(); }\n\n    if (e.type === 'change' && fromData === 'fromdata') { return; }\n\n    var method = ($formEl.attr('method') || 'GET').toUpperCase();\n    var contentType = $formEl.prop('enctype') || $formEl.attr('enctype');\n\n    var url = $formEl.attr('action');\n    if (!url) { return; }\n\n    var data;\n    if (method === 'POST') { data = new window.FormData($formEl[0]); }\n    else { data = Utils.serializeObject(app.form.convertToData($formEl[0])); }\n\n    var xhr = app.request({\n      method: method,\n      url: url,\n      contentType: contentType,\n      data: data,\n      beforeSend: function beforeSend() {\n        $formEl.trigger('formajax:beforesend', data, xhr);\n        app.emit('formAjaxBeforeSend', $formEl[0], data, xhr);\n      },\n      error: function error() {\n        $formEl.trigger('formajax:error', data, xhr);\n        app.emit('formAjaxError', $formEl[0], data, xhr);\n      },\n      complete: function complete() {\n        $formEl.trigger('formajax:complete', data, xhr);\n        app.emit('formAjaxComplete', $formEl[0], data, xhr);\n      },\n      success: function success() {\n        $formEl.trigger('formajax:success', data, xhr);\n        app.emit('formAjaxSuccess', $formEl[0], data, xhr);\n      },\n    });\n  }\n  $$1$1(document).on('submit change', 'form.form-ajax-submit, form.form-ajax-submit-onchange', onSubmitChange);\n}\n\nvar Form = {\n  name: 'form',\n  create: function create() {\n    var app = this;\n    Utils.extend(app, {\n      form: {\n        data: {},\n        storeFormData: FormData$1.store.bind(app),\n        getFormData: FormData$1.get.bind(app),\n        removeFormData: FormData$1.remove.bind(app),\n        convertToData: formToData.bind(app),\n        fillFromData: formFromData.bind(app),\n        storage: {\n          init: FormStorage.init.bind(app),\n          destroy: FormStorage.destroy.bind(app),\n        },\n      },\n    });\n  },\n  on: {\n    init: function init() {\n      var app = this;\n      initAjaxForm.call(app);\n    },\n    tabBeforeRemove: function tabBeforeRemove(tabEl) {\n      var app = this;\n      $$1$1(tabEl).find('.form-store-data').each(function (index, formEl) {\n        app.form.storage.destroy(formEl);\n      });\n    },\n    tabMounted: function tabMounted(tabEl) {\n      var app = this;\n      $$1$1(tabEl).find('.form-store-data').each(function (index, formEl) {\n        app.form.storage.init(formEl);\n      });\n    },\n    pageBeforeRemove: function pageBeforeRemove(page) {\n      var app = this;\n      page.$el.find('.form-store-data').each(function (index, formEl) {\n        app.form.storage.destroy(formEl);\n      });\n    },\n    pageInit: function pageInit(page) {\n      var app = this;\n      page.$el.find('.form-store-data').each(function (index, formEl) {\n        app.form.storage.init(formEl);\n      });\n    },\n  },\n};\n\nvar Input = {\n  ignoreTypes: ['checkbox', 'button', 'submit', 'range', 'radio', 'image'],\n  createTextareaResizableShadow: function createTextareaResizableShadow() {\n    var $shadowEl = $$1$1(document.createElement('textarea'));\n    $shadowEl.addClass('textarea-resizable-shadow');\n    $shadowEl.prop({\n      disabled: true,\n      readonly: true,\n    });\n    Input.textareaResizableShadow = $shadowEl;\n  },\n  textareaResizableShadow: undefined,\n  resizeTextarea: function resizeTextarea(textareaEl) {\n    var app = this;\n    var $textareaEl = $$1$1(textareaEl);\n    if (!Input.textareaResizableShadow) {\n      Input.createTextareaResizableShadow();\n    }\n    var $shadowEl = Input.textareaResizableShadow;\n    if (!$textareaEl.length) { return; }\n    if (!$textareaEl.hasClass('resizable')) { return; }\n    if (Input.textareaResizableShadow.parents().length === 0) {\n      app.root.append($shadowEl);\n    }\n\n    var styles = window.getComputedStyle($textareaEl[0]);\n    ('padding margin width font-size font-family font-style font-weight line-height font-variant text-transform letter-spacing border box-sizing display').split(' ').forEach(function (style) {\n      var styleValue = styles[style];\n      if (('font-size line-height letter-spacing width').split(' ').indexOf(style) >= 0) {\n        styleValue = styleValue.replace(',', '.');\n      }\n      $shadowEl.css(style, styleValue);\n    });\n    var currentHeight = $textareaEl[0].clientHeight;\n\n    $shadowEl.val('');\n    var initialHeight = $shadowEl[0].scrollHeight;\n\n    $shadowEl.val($textareaEl.val());\n    $shadowEl.css('height', 0);\n    var scrollHeight = $shadowEl[0].scrollHeight;\n\n    if (currentHeight !== scrollHeight) {\n      if (scrollHeight > initialHeight) {\n        $textareaEl.css('height', (scrollHeight + \"px\"));\n        $textareaEl.trigger('textarea:resize', { initialHeight: initialHeight, currentHeight: currentHeight, scrollHeight: scrollHeight });\n      } else if (scrollHeight < currentHeight) {\n        $textareaEl.css('height', '');\n        $textareaEl.trigger('textarea:resize', { initialHeight: initialHeight, currentHeight: currentHeight, scrollHeight: scrollHeight });\n      }\n    }\n  },\n  validate: function validate(inputEl) {\n    var $inputEl = $$1$1(inputEl);\n    if (!$inputEl.length) { return; }\n    var $itemInputEl = $inputEl.parents('.item-input');\n    var validity = $inputEl[0].validity;\n    var validationMessage = $inputEl.dataset().errorMessage || $inputEl[0].validationMessage || '';\n    if (!validity) { return; }\n    if (!validity.valid) {\n      var $errorEl = $inputEl.nextAll('.item-input-error-message');\n      if (validationMessage) {\n        if ($errorEl.length === 0) {\n          $errorEl = $$1$1('<div class=\"item-input-error-message\"></div>');\n          $errorEl.insertAfter($inputEl);\n        }\n        $errorEl.text(validationMessage);\n      }\n      if ($errorEl.length > 0) {\n        $itemInputEl.addClass('item-input-with-error-message');\n      }\n      $itemInputEl.addClass('item-input-invalid');\n      $inputEl.addClass('input-invalid');\n    } else {\n      $itemInputEl.removeClass('item-input-invalid item-input-with-error-message');\n      $inputEl.removeClass('input-invalid');\n    }\n  },\n  validateInputs: function validateInputs(el) {\n    var app = this;\n    $$1$1(el).find('input, textarea, select').each(function (index, inputEl) {\n      app.input.validate(inputEl);\n    });\n  },\n  focus: function focus(inputEl) {\n    var $inputEl = $$1$1(inputEl);\n    var type = $inputEl.attr('type');\n    if (Input.ignoreTypes.indexOf(type) >= 0) { return; }\n    var $itemInputEl = $inputEl.parents('.item-input');\n    $itemInputEl.addClass('item-input-focused');\n    $inputEl.addClass('input-focused');\n  },\n  blur: function blur(inputEl) {\n    $$1$1(inputEl).parents('.item-input').removeClass('item-input-focused');\n    $$1$1(inputEl).removeClass('input-focused');\n  },\n  checkEmptyState: function checkEmptyState(inputEl) {\n    var $inputEl = $$1$1(inputEl);\n    var value = $inputEl.val();\n    var $itemInputEl = $inputEl.parents('.item-input');\n    if ((value && (typeof value === 'string' && value.trim() !== '')) || (Array.isArray(value) && value.length > 0)) {\n      $itemInputEl.addClass('item-input-with-value');\n      $inputEl.addClass('input-with-value');\n      $inputEl.trigger('input:notempty');\n    } else {\n      $itemInputEl.removeClass('item-input-with-value');\n      $inputEl.removeClass('input-with-value');\n      $inputEl.trigger('input:empty');\n    }\n  },\n  scrollIntoView: function scrollIntoView(inputEl, duration, centered) {\n    if ( duration === void 0 ) duration = 0;\n\n    var $inputEl = $$1$1(inputEl);\n    var $scrollableEl = $inputEl.parents('.page-content, .panel').eq(0);\n    if (!$scrollableEl.length) {\n      return false;\n    }\n    var contentHeight = $scrollableEl[0].offsetHeight;\n    var contentScrollTop = $scrollableEl[0].scrollTop;\n    var contentPaddingTop = parseInt($scrollableEl.css('padding-top'), 10);\n    var contentPaddingBottom = parseInt($scrollableEl.css('padding-bottom'), 10);\n    var contentOffsetTop = $scrollableEl.offset().top - contentScrollTop;\n\n    var inputOffsetTop = $inputEl.offset().top - contentOffsetTop;\n    var inputHeight = $inputEl[0].offsetHeight;\n\n    var min = (inputOffsetTop + contentScrollTop) - contentPaddingTop;\n    var max = ((inputOffsetTop + contentScrollTop) - contentHeight) + contentPaddingBottom + inputHeight;\n    var centeredPosition = min + ((max - min) / 2);\n\n    if (contentScrollTop > min) {\n      $scrollableEl.scrollTop(centered ? centeredPosition : min, duration);\n      return true;\n    } else if (contentScrollTop < max) {\n      $scrollableEl.scrollTop(centered ? centeredPosition : max, duration);\n      return true;\n    }\n    return false;\n  },\n  init: function init() {\n    var app = this;\n    Input.createTextareaResizableShadow();\n    function onFocus() {\n      var inputEl = this;\n      if (app.params.input.scrollIntoViewOnFocus) {\n        if (Device.android) {\n          $$1$1(window).once('resize', function () {\n            if (document && document.activeElement === inputEl) {\n              app.input.scrollIntoView(inputEl, app.params.input.scrollIntoViewCentered);\n            }\n          });\n        } else {\n          app.input.scrollIntoView(inputEl, app.params.input.scrollIntoViewCentered);\n        }\n      }\n      app.input.focus(inputEl);\n    }\n    function onBlur() {\n      var $inputEl = $$1$1(this);\n      var tag = $inputEl[0].nodeName.toLowerCase();\n      app.input.blur($inputEl);\n      if ($inputEl.dataset().validate || $inputEl.attr('validate') !== null) {\n        app.input.validate($inputEl);\n      }\n      // Resize textarea\n      if (tag === 'textarea' && $inputEl.hasClass('resizable')) {\n        if (Input.textareaResizableShadow) { Input.textareaResizableShadow.remove(); }\n      }\n    }\n    function onChange() {\n      var $inputEl = $$1$1(this);\n      var type = $inputEl.attr('type');\n      var tag = $inputEl[0].nodeName.toLowerCase();\n      if (Input.ignoreTypes.indexOf(type) >= 0) { return; }\n\n      // Check Empty State\n      app.input.checkEmptyState($inputEl);\n\n      // Check validation\n      if ($inputEl.dataset().validate || $inputEl.attr('validate') !== null) {\n        app.input.validate($inputEl);\n      }\n\n      // Resize textarea\n      if (tag === 'textarea' && $inputEl.hasClass('resizable')) {\n        app.input.resizeTextarea($inputEl);\n      }\n    }\n    function onInvalid(e) {\n      var $inputEl = $$1$1(this);\n      if ($inputEl.dataset().validate || $inputEl.attr('validate') !== null) {\n        e.preventDefault();\n        app.input.validate($inputEl);\n      }\n    }\n    function clearInput() {\n      var $clicked = $$1$1(this);\n      var $inputEl = $clicked.siblings('input, textarea').eq(0);\n      var previousValue = $inputEl.val();\n      $inputEl\n        .val('')\n        .trigger('change')\n        .focus()\n        .trigger('input:clear', previousValue);\n    }\n    $$1$1(document).on('click', '.input-clear-button', clearInput);\n    $$1$1(document).on('change input', 'input, textarea, select', onChange, true);\n    $$1$1(document).on('focus', 'input, textarea, select', onFocus, true);\n    $$1$1(document).on('blur', 'input, textarea, select', onBlur, true);\n    $$1$1(document).on('invalid', 'input, textarea, select', onInvalid, true);\n  },\n};\n\nvar Input$1 = {\n  name: 'input',\n  params: {\n    input: {\n      scrollIntoViewOnFocus: Device.android,\n      scrollIntoViewCentered: false,\n    },\n  },\n  create: function create() {\n    var app = this;\n    Utils.extend(app, {\n      input: {\n        scrollIntoView: Input.scrollIntoView.bind(app),\n        focus: Input.focus.bind(app),\n        blur: Input.blur.bind(app),\n        validate: Input.validate.bind(app),\n        validateInputs: Input.validate.bind(app),\n        checkEmptyState: Input.checkEmptyState.bind(app),\n        resizeTextarea: Input.resizeTextarea.bind(app),\n        init: Input.init.bind(app),\n      },\n    });\n  },\n  on: {\n    init: function init() {\n      var app = this;\n      app.input.init();\n    },\n    tabMounted: function tabMounted(tabEl) {\n      var app = this;\n      var $tabEl = $$1$1(tabEl);\n      $tabEl.find('.item-input').each(function (itemInputIndex, itemInputEl) {\n        var $itemInputEl = $$1$1(itemInputEl);\n        $itemInputEl.find('input, select, textarea').each(function (inputIndex, inputEl) {\n          var $inputEl = $$1$1(inputEl);\n          if (Input.ignoreTypes.indexOf($inputEl.attr('type')) >= 0) { return; }\n          app.input.checkEmptyState($inputEl);\n        });\n      });\n      $tabEl.find('textarea.resizable').each(function (textareaIndex, textareaEl) {\n        app.input.resizeTextarea(textareaEl);\n      });\n    },\n    pageInit: function pageInit(page) {\n      var app = this;\n      var $pageEl = page.$el;\n      $pageEl.find('.item-input').each(function (itemInputIndex, itemInputEl) {\n        var $itemInputEl = $$1$1(itemInputEl);\n        $itemInputEl.find('input, select, textarea').each(function (inputIndex, inputEl) {\n          var $inputEl = $$1$1(inputEl);\n          if (Input.ignoreTypes.indexOf($inputEl.attr('type')) >= 0) { return; }\n          app.input.checkEmptyState($inputEl);\n        });\n      });\n      $pageEl.find('textarea.resizable').each(function (textareaIndex, textareaEl) {\n        app.input.resizeTextarea(textareaEl);\n      });\n    },\n  },\n};\n\nvar Checkbox = {\n  name: 'checkbox',\n};\n\nvar Radio = {\n  name: 'radio',\n};\n\nvar Toggle$1 = (function (Framework7Class$$1) {\n  function Toggle(app, params) {\n    if ( params === void 0 ) params = {};\n\n    Framework7Class$$1.call(this, params, [app]);\n    var toggle = this;\n\n    var defaults = {};\n\n    // Extend defaults with modules params\n    toggle.useModulesParams(defaults);\n\n    toggle.params = Utils.extend(defaults, params);\n\n    var el = toggle.params.el;\n    if (!el) { return toggle; }\n\n    var $el = $$1$1(el);\n    if ($el.length === 0) { return toggle; }\n\n\n    var $inputEl = $el.children('input[type=\"checkbox\"]');\n\n    Utils.extend(toggle, {\n      app: app,\n      $el: $el,\n      el: $el[0],\n      $inputEl: $inputEl,\n      inputEl: $inputEl[0],\n      disabled: $el.hasClass('disabled') || $inputEl.hasClass('disabled') || $inputEl.attr('disabled') || $inputEl[0].disabled,\n    });\n\n    Object.defineProperty(toggle, 'checked', {\n      enumerable: true,\n      configurable: true,\n      set: function set(checked) {\n        if (!toggle || typeof toggle.$inputEl === 'undefined') { return; }\n        if (toggle.checked === checked) { return; }\n        $inputEl[0].checked = checked;\n        toggle.$inputEl.trigger('change');\n      },\n      get: function get() {\n        return $inputEl[0].checked;\n      },\n    });\n\n    $el[0].f7Toggle = toggle;\n\n    var isTouched;\n    var touchesStart = {};\n    var isScrolling;\n    var touchesDiff;\n    var toggleWidth;\n    var touchStartTime;\n    var touchStartChecked;\n    function handleTouchStart(e) {\n      if (isTouched || toggle.disabled) { return; }\n      touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n      touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n      touchesDiff = 0;\n\n      isTouched = true;\n      isScrolling = undefined;\n      touchStartTime = Utils.now();\n      touchStartChecked = toggle.checked;\n\n      toggleWidth = $el[0].offsetWidth;\n      Utils.nextTick(function () {\n        if (isTouched) {\n          $el.addClass('toggle-active-state');\n        }\n      });\n    }\n    function handleTouchMove(e) {\n      if (!isTouched || toggle.disabled) { return; }\n      var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n      var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n      var inverter = app.rtl ? -1 : 1;\n\n      if (typeof isScrolling === 'undefined') {\n        isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n      }\n      if (isScrolling) {\n        isTouched = false;\n        return;\n      }\n      e.preventDefault();\n\n      touchesDiff = pageX - touchesStart.x;\n\n\n      var changed;\n      if (touchesDiff * inverter < 0 && Math.abs(touchesDiff) > toggleWidth / 3 && touchStartChecked) {\n        changed = true;\n      }\n      if (touchesDiff * inverter > 0 && Math.abs(touchesDiff) > toggleWidth / 3 && !touchStartChecked) {\n        changed = true;\n      }\n      if (changed) {\n        touchesStart.x = pageX;\n        toggle.checked = !touchStartChecked;\n        touchStartChecked = !touchStartChecked;\n      }\n    }\n    function handleTouchEnd() {\n      if (!isTouched || toggle.disabled) {\n        if (isScrolling) { $el.removeClass('toggle-active-state'); }\n        isTouched = false;\n        return;\n      }\n      var inverter = app.rtl ? -1 : 1;\n      isTouched = false;\n\n      $el.removeClass('toggle-active-state');\n\n      var changed;\n      if ((Utils.now() - touchStartTime) < 300) {\n        if (touchesDiff * inverter < 0 && touchStartChecked) {\n          changed = true;\n        }\n        if (touchesDiff * inverter > 0 && !touchStartChecked) {\n          changed = true;\n        }\n        if (changed) {\n          toggle.checked = !touchStartChecked;\n        }\n      }\n    }\n    function handleInputChange() {\n      toggle.$el.trigger('toggle:change', toggle);\n      toggle.emit('local::change toggleChange', toggle);\n    }\n    toggle.attachEvents = function attachEvents() {\n      {\n        if (!Support$1.touch) { return; }\n        var passive = Support$1.passiveListener ? { passive: true } : false;\n        $el.on(app.touchEvents.start, handleTouchStart, passive);\n        app.on('touchmove', handleTouchMove);\n        app.on('touchend:passive', handleTouchEnd);\n      }\n      toggle.$inputEl.on('change', handleInputChange);\n    };\n    toggle.detachEvents = function detachEvents() {\n      {\n        if (!Support$1.touch) { return; }\n        var passive = Support$1.passiveListener ? { passive: true } : false;\n        $el.off(app.touchEvents.start, handleTouchStart, passive);\n        app.off('touchmove', handleTouchMove);\n        app.off('touchend:passive', handleTouchEnd);\n      }\n      toggle.$inputEl.off('change', handleInputChange);\n    };\n\n\n    // Install Modules\n    toggle.useModules();\n\n    // Init\n    toggle.init();\n  }\n\n  if ( Framework7Class$$1 ) Toggle.__proto__ = Framework7Class$$1;\n  Toggle.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n  Toggle.prototype.constructor = Toggle;\n  Toggle.prototype.toggle = function toggle () {\n    var toggle = this;\n    toggle.checked = !toggle.checked;\n  };\n  Toggle.prototype.init = function init () {\n    var toggle = this;\n    toggle.attachEvents();\n  };\n  Toggle.prototype.destroy = function destroy () {\n    var toggle = this;\n    toggle.$el.trigger('toggle:beforedestroy', toggle);\n    toggle.emit('local::beforeDestroy toggleBeforeDestroy', toggle);\n    delete toggle.$el[0].f7Toggle;\n    toggle.detachEvents();\n    Utils.deleteProps(toggle);\n    toggle = null;\n  };\n\n  return Toggle;\n}(Framework7Class));\n\nvar Toggle = {\n  name: 'toggle',\n  create: function create() {\n    var app = this;\n    app.toggle = ConstructorMethods({\n      defaultSelector: '.toggle',\n      constructor: Toggle$1,\n      app: app,\n      domProp: 'f7Toggle',\n    });\n  },\n  static: {\n    Toggle: Toggle$1,\n  },\n  on: {\n    tabMounted: function tabMounted(tabEl) {\n      var app = this;\n      $$1$1(tabEl).find('.toggle-init').each(function (index, toggleEl) { return app.toggle.create({ el: toggleEl }); });\n    },\n    tabBeforeRemove: function tabBeforeRemove(tabEl) {\n      $$1$1(tabEl).find('.toggle-init').each(function (index, toggleEl) {\n        if (toggleEl.f7Toggle) { toggleEl.f7Toggle.destroy(); }\n      });\n    },\n    pageInit: function pageInit(page) {\n      var app = this;\n      page.$el.find('.toggle-init').each(function (index, toggleEl) { return app.toggle.create({ el: toggleEl }); });\n    },\n    pageBeforeRemove: function pageBeforeRemove(page) {\n      page.$el.find('.toggle-init').each(function (index, toggleEl) {\n        if (toggleEl.f7Toggle) { toggleEl.f7Toggle.destroy(); }\n      });\n    },\n  },\n};\n\nvar Range$1 = (function (Framework7Class$$1) {\n  function Range(app, params) {\n    Framework7Class$$1.call(this, params, [app]);\n    var range = this;\n    var defaults = {\n      dual: false,\n      step: 1,\n      label: false,\n    };\n\n    // Extend defaults with modules params\n    range.useModulesParams(defaults);\n\n    range.params = Utils.extend(defaults, params);\n\n    var el = range.params.el;\n    if (!el) { return range; }\n\n    var $el = $$1$1(el);\n    if ($el.length === 0) { return range; }\n\n    var dataset = $el.dataset();\n\n    ('step min max value').split(' ').forEach(function (paramName) {\n      if (typeof params[paramName] === 'undefined' && typeof dataset[paramName] !== 'undefined') {\n        range.params[paramName] = parseFloat(dataset[paramName]);\n      }\n    });\n    ('dual label').split(' ').forEach(function (paramName) {\n      if (typeof params[paramName] === 'undefined' && typeof dataset[paramName] !== 'undefined') {\n        range.params[paramName] = dataset[paramName];\n      }\n    });\n\n\n    if (!range.params.value) {\n      if (typeof dataset.value !== 'undefined') { range.params.value = dataset.value; }\n      if (typeof dataset.valueLeft !== 'undefined' && typeof dataset.valueRight !== 'undefined') {\n        range.params.value = [parseFloat(dataset.valueLeft), parseFloat(dataset.valueRight)];\n      }\n    }\n\n    var $inputEl;\n    if (!range.params.dual) {\n      if (range.params.inputEl) {\n        $inputEl = $$1$1(range.params.inputEl);\n      } else if ($el.find('input[type=\"range\"]').length) {\n        $inputEl = $el.find('input[type=\"range\"]').eq(0);\n      }\n    }\n\n\n    Utils.extend(range, range.params, {\n      $el: $el,\n      el: $el[0],\n      $inputEl: $inputEl,\n      inputEl: $inputEl ? $inputEl[0] : undefined,\n    });\n\n    if ($inputEl) {\n      ('step min max').split(' ').forEach(function (paramName) {\n        if (!params[paramName] && $inputEl.attr(paramName)) {\n          range.params[paramName] = parseFloat($inputEl.attr(paramName));\n          range[paramName] = parseFloat($inputEl.attr(paramName));\n        }\n        if (typeof $inputEl.val() !== 'undefined') {\n          range.params.value = parseFloat($inputEl.val());\n          range.value = parseFloat($inputEl.val());\n        }\n      });\n    }\n\n    // Dual\n    if (range.dual) {\n      $el.addClass('range-slider-dual');\n    }\n    if (range.label) {\n      $el.addClass('range-slider-label');\n    }\n\n    // Check for layout\n    var $barEl = $$1$1('<div class=\"range-bar\"></div>');\n    var $barActiveEl = $$1$1('<div class=\"range-bar-active\"></div>');\n    $barEl.append($barActiveEl);\n\n    // Create Knobs\n    var knobHTML = \"\\n      <div class=\\\"range-knob-wrap\\\">\\n        <div class=\\\"range-knob\\\"></div>\\n        \" + (range.label ? '<div class=\"range-knob-label\"></div>' : '') + \"\\n      </div>\\n    \";\n    var knobs = [$$1$1(knobHTML)];\n    var labels = [];\n\n    if (range.dual) {\n      knobs.push($$1$1(knobHTML));\n    }\n\n    $el.append($barEl);\n    knobs.forEach(function ($knobEl) {\n      $el.append($knobEl);\n    });\n\n    // Labels\n    if (range.label) {\n      labels.push(knobs[0].find('.range-knob-label'));\n      if (range.dual) {\n        labels.push(knobs[1].find('.range-knob-label'));\n      }\n    }\n\n    Utils.extend(range, {\n      app: app,\n      knobs: knobs,\n      labels: labels,\n      $barEl: $barEl,\n      $barActiveEl: $barActiveEl,\n    });\n\n    $el[0].f7Range = range;\n\n    // Touch Events\n    var isTouched;\n    var touchesStart = {};\n    var isScrolling;\n    var rangeOffsetLeft;\n    var $touchedKnobEl;\n    var dualValueIndex;\n\n    function handleTouchStart(e) {\n      if (isTouched) { return; }\n      touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n      touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n\n      isTouched = true;\n      isScrolling = undefined;\n      rangeOffsetLeft = $el.offset().left;\n\n      var progress;\n      if (range.app.rtl) {\n        progress = ((rangeOffsetLeft + range.rangeWidth) - touchesStart.x) / range.rangeWidth;\n      } else {\n        progress = (touchesStart.x - rangeOffsetLeft) / range.rangeWidth;\n      }\n\n      var newValue = (progress * (range.max - range.min)) + range.min;\n      if (range.dual) {\n        if (Math.abs(range.value[0] - newValue) < Math.abs(range.value[1] - newValue)) {\n          dualValueIndex = 0;\n          $touchedKnobEl = range.knobs[0];\n          newValue = [newValue, range.value[1]];\n        } else {\n          dualValueIndex = 1;\n          $touchedKnobEl = range.knobs[1];\n          newValue = [range.value[0], newValue];\n        }\n      } else {\n        $touchedKnobEl = range.knobs[0];\n        newValue = (progress * (range.max - range.min)) + range.min;\n      }\n      Utils.nextTick(function () {\n        if (isTouched) { $touchedKnobEl.addClass('range-knob-active-state'); }\n      }, 70);\n      range.setValue(newValue);\n    }\n    function handleTouchMove(e) {\n      if (!isTouched) { return; }\n      var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n      var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n      if (typeof isScrolling === 'undefined') {\n        isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n      }\n      if (isScrolling) {\n        isTouched = false;\n        return;\n      }\n      e.preventDefault();\n\n      var progress;\n      if (range.app.rtl) {\n        progress = ((rangeOffsetLeft + range.rangeWidth) - pageX) / range.rangeWidth;\n      } else {\n        progress = (pageX - rangeOffsetLeft) / range.rangeWidth;\n      }\n\n      var newValue = (progress * (range.max - range.min)) + range.min;\n      if (range.dual) {\n        var leftValue;\n        var rightValue;\n        if (dualValueIndex === 0) {\n          leftValue = newValue;\n          rightValue = range.value[1];\n          if (leftValue > rightValue) {\n            rightValue = leftValue;\n          }\n        } else {\n          leftValue = range.value[0];\n          rightValue = newValue;\n          if (rightValue < leftValue) {\n            leftValue = rightValue;\n          }\n        }\n        newValue = [leftValue, rightValue];\n      }\n      range.setValue(newValue);\n    }\n    function handleTouchEnd() {\n      if (!isTouched) {\n        if (isScrolling) { $touchedKnobEl.removeClass('range-knob-active-state'); }\n        isTouched = false;\n        return;\n      }\n      isTouched = false;\n      $touchedKnobEl.removeClass('range-knob-active-state');\n    }\n\n    function handleResize() {\n      range.calcSize();\n      range.layout();\n    }\n    range.attachEvents = function attachEvents() {\n      var passive = Support$1.passiveListener ? { passive: true } : false;\n      range.$el.on(app.touchEvents.start, handleTouchStart, passive);\n      app.on('touchmove', handleTouchMove);\n      app.on('touchend:passive', handleTouchEnd);\n      app.on('tabShow', handleResize);\n      app.on('resize', handleResize);\n    };\n    range.detachEvents = function detachEvents() {\n      var passive = Support$1.passiveListener ? { passive: true } : false;\n      range.$el.off(app.touchEvents.start, handleTouchStart, passive);\n      app.off('touchmove', handleTouchMove);\n      app.off('touchend:passive', handleTouchEnd);\n      app.off('tabShow', handleResize);\n      app.off('resize', handleResize);\n    };\n\n    // Install Modules\n    range.useModules();\n\n    // Init\n    range.init();\n\n    return range;\n  }\n\n  if ( Framework7Class$$1 ) Range.__proto__ = Framework7Class$$1;\n  Range.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n  Range.prototype.constructor = Range;\n  Range.prototype.calcSize = function calcSize () {\n    var range = this;\n    var width = range.$el.outerWidth();\n    if (width === 0) { return; }\n    range.rangeWidth = width;\n    range.knobWidth = range.knobs[0].outerWidth();\n  };\n  Range.prototype.layout = function layout () {\n    var obj;\n\n    var range = this;\n    var app = range.app;\n    var knobWidth = range.knobWidth;\n    var rangeWidth = range.rangeWidth;\n    var min = range.min;\n    var max = range.max;\n    var knobs = range.knobs;\n    var $barActiveEl = range.$barActiveEl;\n    var value = range.value;\n    var label = range.label;\n    var labels = range.labels;\n    var positionProperty = app.rtl ? 'right' : 'left';\n    if (range.dual) {\n      var progress = [((value[0] - min) / (max - min)), ((value[1] - min) / (max - min))];\n      $barActiveEl.css(( obj = {}, obj[positionProperty] = ((progress[0] * 100) + \"%\"), obj.width = (((progress[1] - progress[0]) * 100) + \"%\"), obj ));\n      knobs.forEach(function ($knobEl, knobIndex) {\n        var leftPos = rangeWidth * progress[knobIndex];\n        var realLeft = (rangeWidth * progress[knobIndex]) - (knobWidth / 2);\n        if (realLeft < 0) { leftPos = knobWidth / 2; }\n        if ((realLeft + knobWidth) > rangeWidth) { leftPos = rangeWidth - (knobWidth / 2); }\n        $knobEl.css(positionProperty, (leftPos + \"px\"));\n        if (label) { labels[knobIndex].text(value[knobIndex]); }\n      });\n    } else {\n      var progress$1 = ((value - min) / (max - min));\n      $barActiveEl.css('width', ((progress$1 * 100) + \"%\"));\n\n      var leftPos = rangeWidth * progress$1;\n      var realLeft = (rangeWidth * progress$1) - (knobWidth / 2);\n      if (realLeft < 0) { leftPos = knobWidth / 2; }\n      if ((realLeft + knobWidth) > rangeWidth) { leftPos = rangeWidth - (knobWidth / 2); }\n      knobs[0].css(positionProperty, (leftPos + \"px\"));\n      if (label) { labels[0].text(value); }\n    }\n    if ((range.dual && value.indexOf(min) >= 0) || (!range.dual && value === min)) {\n      range.$el.addClass('range-slider-min');\n    } else {\n      range.$el.removeClass('range-slider-min');\n    }\n    if ((range.dual && value.indexOf(max) >= 0) || (!range.dual && value === max)) {\n      range.$el.addClass('range-slider-max');\n    } else {\n      range.$el.removeClass('range-slider-max');\n    }\n  };\n  Range.prototype.setValue = function setValue (newValue) {\n    var range = this;\n    var step = range.step;\n    var min = range.min;\n    var max = range.max;\n    if (range.dual) {\n      var newValues = newValue;\n      if (!Array.isArray(newValues)) { newValues = [newValue, newValue]; }\n      if (newValue[0] > newValue[1]) {\n        newValues = [newValues[0], newValues[0]];\n      }\n      newValues = newValues.map(function (value) { return Math.max(Math.min(Math.round(value / step) * step, max), min); });\n      if (newValues[0] === range.value[0] && newValues[1] === range.value[1]) {\n        return range;\n      }\n      newValues.forEach(function (value, valueIndex) {\n        range.value[valueIndex] = value;\n      });\n      range.layout();\n    } else {\n      var value = Math.max(Math.min(Math.round(newValue / step) * step, max), min);\n      range.value = value;\n      range.layout();\n    }\n    // Events\n    range.$el.trigger('range:change', range, range.value);\n    if (range.$inputEl && !range.dual) {\n      range.$inputEl.val(range.value).trigger('input change');\n    }\n    range.emit('local::change rangeChange', range, range.value);\n    return range;\n  };\n  Range.prototype.getValue = function getValue () {\n    return this.value;\n  };\n  Range.prototype.init = function init () {\n    var range = this;\n    range.calcSize();\n    range.layout();\n    range.attachEvents();\n    return range;\n  };\n  Range.prototype.destroy = function destroy () {\n    var range = this;\n    range.$el.trigger('range:beforedestroy', range);\n    range.emit('local::beforeDestroy rangeBeforeDestroy', range);\n    delete range.$el[0].f7Range;\n    range.detachEvents();\n    Utils.deleteProps(range);\n    range = null;\n  };\n\n  return Range;\n}(Framework7Class));\n\nvar Range = {\n  name: 'range',\n  create: function create() {\n    var app = this;\n    app.range = Utils.extend(\n      ConstructorMethods({\n        defaultSelector: '.range-slider',\n        constructor: Range$1,\n        app: app,\n        domProp: 'f7Range',\n      }),\n      {\n        getValue: function getValue(el) {\n          if ( el === void 0 ) el = '.range-slider';\n\n          var range = app.range.get(el);\n          if (range) { return range.getValue(); }\n          return undefined;\n        },\n        setValue: function setValue(el, value) {\n          if ( el === void 0 ) el = '.range-slider';\n\n          var range = app.range.get(el);\n          if (range) { return range.setValue(value); }\n          return undefined;\n        },\n      }\n    );\n  },\n  static: {\n    Range: Range$1,\n  },\n  on: {\n    tabMounted: function tabMounted(tabEl) {\n      var app = this;\n      $$1$1(tabEl).find('.range-slider-init').each(function (index, rangeEl) { return new Range$1(app, {\n        el: rangeEl,\n      }); });\n    },\n    tabBeforeRemove: function tabBeforeRemove(tabEl) {\n      $$1$1(tabEl).find('.range-slider-init').each(function (index, rangeEl) {\n        if (rangeEl.f7Range) { rangeEl.f7Range.destroy(); }\n      });\n    },\n    pageInit: function pageInit(page) {\n      var app = this;\n      page.$el.find('.range-slider-init').each(function (index, rangeEl) { return new Range$1(app, {\n        el: rangeEl,\n      }); });\n    },\n    pageBeforeRemove: function pageBeforeRemove(page) {\n      page.$el.find('.range-slider-init').each(function (index, rangeEl) {\n        if (rangeEl.f7Range) { rangeEl.f7Range.destroy(); }\n      });\n    },\n  },\n};\n\nvar SmartSelect$1 = (function (Framework7Class$$1) {\n  function SmartSelect(app, params) {\n    if ( params === void 0 ) params = {};\n\n    Framework7Class$$1.call(this, params, [app]);\n    var ss = this;\n    ss.app = app;\n    var defaults = Utils.extend({\n      on: {},\n    }, app.params.smartSelect);\n\n    var $el = $$1$1(params.el).eq(0);\n    if ($el.length === 0) { return ss; }\n\n    var $selectEl = $el.find('select').eq(0);\n    if ($selectEl.length === 0) { return ss; }\n\n    var $valueEl = $$1$1(params.valueEl);\n    if ($valueEl.length === 0) {\n      $valueEl = $$1$1('<div class=\"item-after\"></div>');\n      $valueEl.insertAfter($el.find('.item-title'));\n    }\n\n    // Extend defaults with modules params\n    ss.useModulesParams(defaults);\n\n    // View\n    var view = $el.parents('.view').length && $el.parents('.view')[0].f7View;\n    if (!view) {\n      throw Error('Smart Select requires initialized View');\n    }\n\n    // Url\n    var url = params.url;\n    if (!url) {\n      if ($el.attr('href') && $el.attr('href') !== '#') { url = $el.attr('href'); }\n      else { url = ($selectEl.attr('name').toLowerCase()) + \"-select/\"; }\n    }\n    if (!url) { url = ss.params.url; }\n\n    var multiple = $selectEl[0].multiple;\n    var inputType = multiple ? 'checkbox' : 'radio';\n    var id = Utils.now();\n    Utils.extend(ss, {\n      params: Utils.extend(defaults, params),\n      $el: $el,\n      el: $el[0],\n      $selectEl: $selectEl,\n      selectEl: $selectEl[0],\n      $valueEl: $valueEl,\n      valueEl: $valueEl[0],\n      url: url,\n      multiple: multiple,\n      inputType: inputType,\n      id: id,\n      view: view,\n      inputName: (inputType + \"-\" + id),\n      selectName: $selectEl.attr('name'),\n      maxLength: $selectEl.attr('maxlength') || params.maxLength,\n    });\n    $el[0].f7SmartSelect = ss;\n\n    // Events\n    function onClick() {\n      ss.open();\n    }\n    function onChange() {\n      ss.setValue();\n    }\n    ss.attachEvents = function attachEvents() {\n      $el.on('click', onClick);\n      $el.on('change', 'input[type=\"checkbox\"], input[type=\"radio\"]', onChange);\n    };\n    ss.detachEvents = function detachEvents() {\n      $el.off('click', onClick);\n      $el.off('change', 'input[type=\"checkbox\"], input[type=\"radio\"]', onChange);\n    };\n\n    function handleInputChange() {\n      var optionEl;\n      var text;\n      var inputEl = this;\n      var value = inputEl.value;\n      var optionText = [];\n      var displayAs;\n      if (inputEl.type === 'checkbox') {\n        for (var i = 0; i < ss.selectEl.options.length; i += 1) {\n          optionEl = ss.selectEl.options[i];\n          if (optionEl.value === value) {\n            optionEl.selected = inputEl.checked;\n          }\n          if (optionEl.selected) {\n            displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $$1$1(optionEl).data('display-value-as');\n            text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n            optionText.push(text.trim());\n          }\n        }\n        if (ss.maxLength) {\n          ss.checkMaxLength();\n        }\n      } else {\n        optionEl = ss.$selectEl.find((\"option[value=\\\"\" + value + \"\\\"]\"))[0];\n        displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $$1$1(optionEl).data('display-as');\n        text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n        optionText = [text];\n        ss.selectEl.value = value;\n      }\n\n      ss.$selectEl.trigger('change');\n      ss.$valueEl.text(optionText.join(', '));\n      if (ss.params.closeOnSelect && ss.inputType === 'radio') {\n        ss.close();\n      }\n    }\n\n    ss.attachInputsEvents = function attachInputsEvents() {\n      ss.$containerEl.on('change', 'input[type=\"checkbox\"], input[type=\"radio\"]', handleInputChange);\n    };\n    ss.detachInputsEvents = function detachInputsEvents() {\n      ss.$containerEl.off('change', 'input[type=\"checkbox\"], input[type=\"radio\"]', handleInputChange);\n    };\n\n    // Install Modules\n    ss.useModules();\n\n    // Init\n    ss.init();\n\n    return ss;\n  }\n\n  if ( Framework7Class$$1 ) SmartSelect.__proto__ = Framework7Class$$1;\n  SmartSelect.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n  SmartSelect.prototype.constructor = SmartSelect;\n  SmartSelect.prototype.checkMaxLength = function checkMaxLength () {\n    var ss = this;\n    var $containerEl = ss.$containerEl;\n    if (ss.selectEl.selectedOptions.length >= ss.maxLength) {\n      $containerEl.find('input[type=\"checkbox\"]').each(function (index, inputEl) {\n        if (!inputEl.checked) {\n          $$1$1(inputEl).parents('li').addClass('disabled');\n        } else {\n          $$1$1(inputEl).parents('li').removeClass('disabled');\n        }\n      });\n    } else {\n      $containerEl.find('.disabled').removeClass('disabled');\n    }\n  };\n  SmartSelect.prototype.setValue = function setValue (value) {\n    var ss = this;\n    var valueArray = [];\n    if (typeof value !== 'undefined') {\n      if (Array.isArray(value)) {\n        valueArray = value;\n      } else {\n        valueArray = [value];\n      }\n    } else {\n      ss.$selectEl.find('option').each(function (optionIndex, optionEl) {\n        var $optionEl = $$1$1(optionEl);\n        if (optionEl.selected) {\n          var displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $optionEl.data('display-value-as');\n          if (displayAs && typeof displayAs !== 'undefined') {\n            valueArray.push(displayAs);\n          } else {\n            valueArray.push(optionEl.textContent.trim());\n          }\n        }\n      });\n    }\n    ss.$valueEl.text(valueArray.join(', '));\n  };\n  SmartSelect.prototype.getItemsData = function getItemsData () {\n    var ss = this;\n    var items = [];\n    var previousGroupEl;\n    ss.$selectEl.find('option').each(function (index, optionEl) {\n      var $optionEl = $$1$1(optionEl);\n      var optionData = $optionEl.dataset();\n      var optionImage = optionData.optionImage || ss.params.optionImage;\n      var optionIcon = optionData.optionIcon || ss.params.optionIcon;\n      var optionHasMedia = optionImage || optionIcon;\n      // if (material) optionHasMedia = optionImage || optionIcon;\n      var optionColor = optionData.optionColor;\n\n      var optionClassName = optionData.optionClass || '';\n      if ($optionEl[0].disabled) { optionClassName += ' disabled'; }\n\n      var optionGroupEl = $optionEl.parent('optgroup')[0];\n      var optionGroupLabel = optionGroupEl && optionGroupEl.label;\n      var optionIsLabel = false;\n      if (optionGroupEl && optionGroupEl !== previousGroupEl) {\n        optionIsLabel = true;\n        previousGroupEl = optionGroupEl;\n        items.push({\n          groupLabel: optionGroupLabel,\n          isLabel: optionIsLabel,\n        });\n      }\n      items.push({\n        value: $optionEl[0].value,\n        text: $optionEl[0].textContent.trim(),\n        selected: $optionEl[0].selected,\n        groupEl: optionGroupEl,\n        groupLabel: optionGroupLabel,\n        image: optionImage,\n        icon: optionIcon,\n        color: optionColor,\n        className: optionClassName,\n        disabled: $optionEl[0].disabled,\n        id: ss.id,\n        hasMedia: optionHasMedia,\n        checkbox: ss.inputType === 'checkbox',\n        radio: ss.inputType === 'radio',\n        inputName: ss.inputName,\n        inputType: ss.inputType,\n      });\n    });\n    ss.items = items;\n    return items;\n  };\n  SmartSelect.prototype.renderSearchbar = function renderSearchbar () {\n    var ss = this;\n    if (ss.params.renderSearchbar) { return ss.params.renderSearchbar.call(ss); }\n    var searchbarHTML = \"\\n      <form class=\\\"searchbar\\\">\\n        <div class=\\\"searchbar-inner\\\">\\n          <div class=\\\"searchbar-input-wrap\\\">\\n            <input type=\\\"search\\\" placeholder=\\\"\" + (ss.params.searchbarPlaceholder) + \"\\\"/>\\n            <i class=\\\"searchbar-icon\\\"></i>\\n            <span class=\\\"input-clear-button\\\"></span>\\n          </div>\\n          <span class=\\\"searchbar-disable-button\\\">\" + (ss.params.searchbarDisableText) + \"</span>\\n        </div>\\n      </form>\\n    \";\n    return searchbarHTML;\n  };\n  SmartSelect.prototype.renderItem = function renderItem (item, index) {\n    var ss = this;\n    if (ss.params.renderItem) { return ss.params.renderItem.call(ss, item, index); }\n    var itemHtml;\n    if (item.isLabel) {\n      itemHtml = \"<li class=\\\"item-divider\\\">\" + (item.groupLabel) + \"</li>\";\n    } else {\n      itemHtml = \"\\n        <li class=\\\"\" + (item.className || '') + \"\\\">\\n          <label class=\\\"item-\" + (item.inputType) + \" item-content\\\">\\n            <input type=\\\"\" + (item.inputType) + \"\\\" name=\\\"\" + (item.inputName) + \"\\\" value=\\\"\" + (item.value) + \"\\\" \" + (item.selected ? 'checked' : '') + \"/>\\n            <i class=\\\"icon icon-\" + (item.inputType) + \"\\\"></i>\\n            \" + (item.hasMedia ? (\"\\n              <div class=\\\"item-media\\\">\\n                \" + (item.icon ? (\"<i class=\\\"icon \" + (item.icon) + \"\\\"></i>\") : '') + \"\\n                \" + (item.image ? (\"<img src=\\\"\" + (item.image) + \"\\\">\") : '') + \"\\n              </div>\\n            \") : '') + \"\\n            <div class=\\\"item-inner\\\">\\n              <div class=\\\"item-title\" + (item.color ? (\" color-\" + (item.color)) : '') + \"\\\">\" + (item.text) + \"</div>\\n            </div>\\n          </label>\\n        </li>\\n      \";\n    }\n    return itemHtml;\n  };\n  SmartSelect.prototype.renderItems = function renderItems () {\n    var ss = this;\n    if (ss.params.renderItems) { return ss.params.renderItems.call(ss, ss.items); }\n    var itemsHtml = \"\\n      \" + (ss.items.map(function (item, index) { return (\"\" + (ss.renderItem(item, index))); }).join('')) + \"\\n    \";\n    return itemsHtml;\n  };\n  SmartSelect.prototype.renderPage = function renderPage () {\n    var ss = this;\n    if (ss.params.renderPage) { return ss.params.renderPage.call(ss, ss.items); }\n    var pageTitle = ss.params.pageTitle;\n    if (typeof pageTitle === 'undefined') {\n      pageTitle = ss.$el.find('.item-title').text().trim();\n    }\n    var pageHtml = \"\\n      <div class=\\\"page smart-select-page\\\" data-name=\\\"smart-select-page\\\" data-select-name=\\\"\" + (ss.selectName) + \"\\\">\\n        <div class=\\\"navbar \" + (ss.params.navbarColorTheme ? (\"color-theme-\" + (ss.params.navbarColorTheme)) : '') + \"\\\">\\n          <div class=\\\"navbar-inner sliding \" + (ss.params.navbarColorTheme ? (\"color-theme-\" + (ss.params.navbarColorTheme)) : '') + \"\\\">\\n            <div class=\\\"left\\\">\\n              <a href=\\\"#\\\" class=\\\"link back\\\">\\n                <i class=\\\"icon icon-back\\\"></i>\\n                <span class=\\\"ios-only\\\">\" + (ss.params.pageBackLinkText) + \"</span>\\n              </a>\\n            </div>\\n            \" + (pageTitle ? (\"<div class=\\\"title\\\">\" + pageTitle + \"</div>\") : '') + \"\\n            \" + (ss.params.searchbar ? (\"<div class=\\\"subnavbar\\\">\" + (ss.renderSearchbar()) + \"</div>\") : '') + \"\\n          </div>\\n        </div>\\n        \" + (ss.params.searchbar ? '<div class=\"searchbar-backdrop\"></div>' : '') + \"\\n        <div class=\\\"page-content\\\">\\n          <div class=\\\"list smart-select-list-\" + (ss.id) + \" \" + (ss.params.virtualList ? ' virtual-list' : '') + \" \" + (ss.params.formColorTheme ? (\"color-theme-\" + (ss.params.formColorTheme)) : '') + \"\\\">\\n            <ul>\" + (!ss.params.virtualList && ss.renderItems(ss.items)) + \"</ul>\\n          </div>\\n        </div>\\n      </div>\\n    \";\n    return pageHtml;\n  };\n  SmartSelect.prototype.renderPopup = function renderPopup () {\n    var ss = this;\n    if (ss.params.renderPopup) { return ss.params.renderPopup.call(ss, ss.items); }\n    var pageTitle = ss.params.pageTitle;\n    if (typeof pageTitle === 'undefined') {\n      pageTitle = ss.$el.find('.item-title').text().trim();\n    }\n    var popupHtml = \"\\n      <div class=\\\"popup smart-select-popup\\\" data-select-name=\\\"\" + (ss.selectName) + \"\\\">\\n        <div class=\\\"view\\\">\\n          <div class=\\\"page smart-select-page \" + (ss.params.searchbar ? 'page-with-subnavbar' : '') + \"\\\" data-name=\\\"smart-select-page\\\">\\n            <div class=\\\"navbar\" + (ss.params.navbarColorTheme ? (\"theme-\" + (ss.params.navbarColorTheme)) : '') + \"\\\">\\n              <div class=\\\"navbar-inner sliding\\\">\\n                <div class=\\\"left\\\">\\n                  <a href=\\\"#\\\" class=\\\"link popup-close\\\">\\n                    <i class=\\\"icon icon-back\\\"></i>\\n                    <span class=\\\"ios-only\\\">\" + (ss.params.popupCloseLinkText) + \"</span>\\n                  </a>\\n                </div>\\n                \" + (pageTitle ? (\"<div class=\\\"title\\\">\" + pageTitle + \"</div>\") : '') + \"\\n                \" + (ss.params.searchbar ? (\"<div class=\\\"subnavbar\\\">\" + (ss.renderSearchbar()) + \"</div>\") : '') + \"\\n              </div>\\n            </div>\\n            \" + (ss.params.searchbar ? '<div class=\"searchbar-backdrop\"></div>' : '') + \"\\n            <div class=\\\"page-content\\\">\\n              <div class=\\\"list smart-select-list-\" + (ss.id) + \" \" + (ss.params.virtualList ? ' virtual-list' : '') + (ss.params.formColorTheme ? (\"theme-\" + (ss.params.formColorTheme)) : '') + \"\\\">\\n                <ul>\" + (!ss.params.virtualList && ss.renderItems(ss.items)) + \"</ul>\\n              </div>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    \";\n    return popupHtml;\n  };\n  SmartSelect.prototype.renderSheet = function renderSheet () {\n    var ss = this;\n    if (ss.params.renderSheet) { return ss.params.renderSheet.call(ss, ss.items); }\n    var sheetHtml = \"\\n      <div class=\\\"sheet-modal smart-select-sheet\\\" data-select-name=\\\"\" + (ss.selectName) + \"\\\">\\n        <div class=\\\"toolbar \" + (ss.params.toolbarColorTheme ? (\"theme-\" + (ss.params.toolbarColorTheme)) : '') + \"\\\">\\n          <div class=\\\"toolbar-inner\\\">\\n            <div class=\\\"left\\\"></div>\\n            <div class=\\\"right\\\">\\n              <a class=\\\"link sheet-close\\\">\" + (ss.params.sheetCloseLinkText) + \"</a>\\n            </div>\\n          </div>\\n        </div>\\n        <div class=\\\"sheet-modal-inner\\\">\\n          <div class=\\\"page-content\\\">\\n            <div class=\\\"list smart-select-list-\" + (ss.id) + \" \" + (ss.params.virtualList ? ' virtual-list' : '') + (ss.params.formColorTheme ? (\"theme-\" + (ss.params.formColorTheme)) : '') + \"\\\">\\n              <ul>\" + (!ss.params.virtualList && ss.renderItems(ss.items)) + \"</ul>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    \";\n    return sheetHtml;\n  };\n  SmartSelect.prototype.renderPopover = function renderPopover () {\n    var ss = this;\n    if (ss.params.renderPopover) { return ss.params.renderPopover.call(ss, ss.items); }\n    var popoverHtml = \"\\n      <div class=\\\"popover smart-select-popover\\\" data-select-name=\\\"\" + (ss.selectName) + \"\\\">\\n        <div class=\\\"popover-inner\\\">\\n          <div class=\\\"list smart-select-list-\" + (ss.id) + \" \" + (ss.params.virtualList ? ' virtual-list' : '') + (ss.params.formColorTheme ? (\"theme-\" + (ss.params.formColorTheme)) : '') + \"\\\">\\n            <ul>\" + (!ss.params.virtualList && ss.renderItems(ss.items)) + \"</ul>\\n          </div>\\n        </div>\\n      </div>\\n    \";\n    return popoverHtml;\n  };\n  SmartSelect.prototype.onOpen = function onOpen (type, containerEl) {\n    var ss = this;\n    var app = ss.app;\n    var $containerEl = $$1$1(containerEl);\n    ss.$containerEl = $containerEl;\n    ss.openedIn = type;\n    ss.opened = true;\n\n    // Init VL\n    if (ss.params.virtualList) {\n      ss.vl = app.virtualList.create({\n        el: $containerEl.find('.virtual-list'),\n        items: ss.items,\n        renderItem: ss.renderItem.bind(ss),\n        height: ss.params.virtualListHeight,\n        searchByItem: function searchByItem(query, item) {\n          if (item.text && item.text.toLowerCase().indexOf(query.trim().toLowerCase()) >= 0) { return true; }\n          return false;\n        },\n      });\n    }\n\n    // Init SB\n    if (ss.params.searchbar) {\n      ss.searchbar = app.searchbar.create({\n        el: $containerEl.find('.searchbar'),\n        backdropEl: $containerEl.find('.searchbar-backdrop'),\n        searchContainer: (\".smart-select-list-\" + (ss.id)),\n        searchIn: '.item-title',\n      });\n    }\n\n    // Check for max length\n    if (ss.maxLength) {\n      ss.checkMaxLength();\n    }\n\n    // Close on select\n    if (ss.params.closeOnSelect) {\n      ss.$containerEl.find((\"input[type=\\\"radio\\\"][name=\\\"\" + (ss.inputName) + \"\\\"]:checked\")).parents('label').once('click', function () {\n        ss.close();\n      });\n    }\n\n    // Attach input events\n    ss.attachInputsEvents();\n\n    ss.$el.trigger('smartselect:open', ss);\n    ss.emit('local::open smartSelectOpen', ss);\n  };\n  SmartSelect.prototype.onOpened = function onOpened () {\n    var ss = this;\n\n    ss.$el.trigger('smartselect:opened', ss);\n    ss.emit('local::opened smartSelectOpened', ss);\n  };\n  SmartSelect.prototype.onClose = function onClose () {\n    var ss = this;\n    if (ss.destroyed) { return; }\n\n    // Destroy VL\n    if (ss.vl && ss.vl.destroy) {\n      ss.vl.destroy();\n      ss.vl = null;\n      delete ss.vl;\n    }\n\n    // Destroy SB\n    if (ss.searchbar && ss.searchbar.destroy) {\n      ss.searchbar.destroy();\n      ss.searchbar = null;\n      delete ss.searchbar;\n    }\n    // Detach events\n    ss.detachInputsEvents();\n\n    ss.$el.trigger('smartselect:close', ss);\n    ss.emit('local::close smartSelectClose', ss);\n  };\n  SmartSelect.prototype.onClosed = function onClosed () {\n    var ss = this;\n    if (ss.destroyed) { return; }\n    ss.opened = false;\n    ss.$containerEl = null;\n    delete ss.$containerEl;\n\n    ss.$el.trigger('smartselect:closed', ss);\n    ss.emit('local::closed smartSelectClosed', ss);\n  };\n  SmartSelect.prototype.openPage = function openPage () {\n    var ss = this;\n    if (ss.opened) { return ss; }\n    ss.getItemsData();\n    var pageHtml = ss.renderPage(ss.items);\n\n    ss.view.router.navigate({\n      url: ss.url,\n      route: {\n        content: pageHtml,\n        path: ss.url,\n        on: {\n          pageBeforeIn: function pageBeforeIn(e, page) {\n            ss.onOpen('page', page.el);\n          },\n          pageAfterIn: function pageAfterIn(e, page) {\n            ss.onOpened('page', page.el);\n          },\n          pageBeforeOut: function pageBeforeOut(e, page) {\n            ss.onClose('page', page.el);\n          },\n          pageAfterOut: function pageAfterOut(e, page) {\n            ss.onClosed('page', page.el);\n          },\n        },\n      },\n    });\n    return ss;\n  };\n  SmartSelect.prototype.openPopup = function openPopup () {\n    var ss = this;\n    if (ss.opened) { return ss; }\n    ss.getItemsData();\n    var popupHtml = ss.renderPopup(ss.items);\n\n    var popupParams = {\n      content: popupHtml,\n      on: {\n        popupOpen: function popupOpen(popup) {\n          ss.onOpen('popup', popup.el);\n        },\n        popupOpened: function popupOpened(popup) {\n          ss.onOpened('popup', popup.el);\n        },\n        popupClose: function popupClose(popup) {\n          ss.onClose('popup', popup.el);\n        },\n        popupClosed: function popupClosed(popup) {\n          ss.onClosed('popup', popup.el);\n        },\n      },\n    };\n\n    if (ss.params.routableModals) {\n      ss.view.router.navigate({\n        url: ss.url,\n        route: {\n          path: ss.url,\n          popup: popupParams,\n        },\n      });\n    } else {\n      ss.modal = ss.app.popup.create(popupParams).open();\n    }\n    return ss;\n  };\n  SmartSelect.prototype.openSheet = function openSheet () {\n    var ss = this;\n    if (ss.opened) { return ss; }\n    ss.getItemsData();\n    var sheetHtml = ss.renderSheet(ss.items);\n\n    var sheetParams = {\n      content: sheetHtml,\n      backdrop: false,\n      scrollToEl: ss.$el,\n      closeByOutsideClick: true,\n      on: {\n        sheetOpen: function sheetOpen(sheet) {\n          ss.onOpen('sheet', sheet.el);\n        },\n        sheetOpened: function sheetOpened(sheet) {\n          ss.onOpened('sheet', sheet.el);\n        },\n        sheetClose: function sheetClose(sheet) {\n          ss.onClose('sheet', sheet.el);\n        },\n        sheetClosed: function sheetClosed(sheet) {\n          ss.onClosed('sheet', sheet.el);\n        },\n      },\n    };\n\n    if (ss.params.routableModals) {\n      ss.view.router.navigate({\n        url: ss.url,\n        route: {\n          path: ss.url,\n          sheet: sheetParams,\n        },\n      });\n    } else {\n      ss.modal = ss.app.sheet.create(sheetParams).open();\n    }\n    return ss;\n  };\n  SmartSelect.prototype.openPopover = function openPopover () {\n    var ss = this;\n    if (ss.opened) { return ss; }\n    ss.getItemsData();\n    var popoverHtml = ss.renderPopover(ss.items);\n    var popoverParams = {\n      content: popoverHtml,\n      targetEl: ss.$el,\n      on: {\n        popoverOpen: function popoverOpen(popover) {\n          ss.onOpen('popover', popover.el);\n        },\n        popoverOpened: function popoverOpened(popover) {\n          ss.onOpened('popover', popover.el);\n        },\n        popoverClose: function popoverClose(popover) {\n          ss.onClose('popover', popover.el);\n        },\n        popoverClosed: function popoverClosed(popover) {\n          ss.onClosed('popover', popover.el);\n        },\n      },\n    };\n    if (ss.params.routableModals) {\n      ss.view.router.navigate({\n        url: ss.url,\n        route: {\n          path: ss.url,\n          popover: popoverParams,\n        },\n      });\n    } else {\n      ss.modal = ss.app.popover.create(popoverParams).open();\n    }\n    return ss;\n  };\n  SmartSelect.prototype.open = function open (type) {\n    var ss = this;\n    if (ss.opened) { return ss; }\n    var openIn = type || ss.params.openIn;\n    ss[(\"open\" + (openIn.split('').map(function (el, index) {\n      if (index === 0) { return el.toUpperCase(); }\n      return el;\n    }).join('')))]();\n    return ss;\n  };\n  SmartSelect.prototype.close = function close () {\n    var ss = this;\n    if (!ss.opened) { return ss; }\n    if (ss.params.routableModals || ss.openedIn === 'page') {\n      ss.view.router.back();\n    } else {\n      ss.modal.once('modalClosed', function () {\n        Utils.nextTick(function () {\n          ss.modal.destroy();\n          delete ss.modal;\n        });\n      });\n      ss.modal.close();\n    }\n    return ss;\n  };\n  SmartSelect.prototype.init = function init () {\n    var ss = this;\n    ss.attachEvents();\n    ss.setValue();\n  };\n  SmartSelect.prototype.destroy = function destroy () {\n    var ss = this;\n    ss.emit('local::beforeDestroy smartSelectBeforeDestroy', ss);\n    ss.$el.trigger('smartselect:beforedestroy', ss);\n    ss.detachEvents();\n    delete ss.$el[0].f7SmartSelect;\n    Utils.deleteProps(ss);\n    ss.destroyed = true;\n  };\n\n  return SmartSelect;\n}(Framework7Class));\n\nvar SmartSelect = {\n  name: 'smartSelect',\n  params: {\n    smartSelect: {\n      el: undefined,\n      valueEl: undefined,\n      openIn: 'page', // or 'popup' or 'sheet' or 'popover'\n      pageTitle: undefined,\n      pageBackLinkText: 'Back',\n      popupCloseLinkText: 'Close',\n      sheetCloseLinkText: 'Done',\n      searchbar: false,\n      searchbarPlaceholder: 'Search',\n      searchbarDisableText: 'Cancel',\n      closeOnSelect: false,\n      virtualList: false,\n      virtualListHeight: undefined,\n      formColorTheme: undefined,\n      navbarColorTheme: undefined,\n      routableModals: true,\n      url: 'select/',\n      /*\n        Custom render functions\n      */\n      renderPage: undefined,\n      renderPopup: undefined,\n      renderSheet: undefined,\n      renderPopover: undefined,\n      renderItems: undefined,\n      renderItem: undefined,\n      renderSearchbar: undefined,\n    },\n  },\n  static: {\n    SmartSelect: SmartSelect$1,\n  },\n  create: function create() {\n    var app = this;\n    app.smartSelect = Utils.extend(\n      ConstructorMethods({\n        defaultSelector: '.smart-select',\n        constructor: SmartSelect$1,\n        app: app,\n        domProp: 'f7SmartSelect',\n      }),\n      {\n        open: function open(smartSelectEl) {\n          var ss = app.smartSelect.get(smartSelectEl);\n          if (ss && ss.open) { return ss.open(); }\n          return undefined;\n        },\n        close: function close(smartSelectEl) {\n          var ss = app.smartSelect.get(smartSelectEl);\n          if (ss && ss.close) { return ss.close(); }\n          return undefined;\n        },\n      }\n    );\n  },\n\n  on: {\n    tabMounted: function tabMounted(tabEl) {\n      var app = this;\n      $$1$1(tabEl).find('.smart-select-init').each(function (index, smartSelectEl) {\n        app.smartSelect.create(Utils.extend({ el: smartSelectEl }, $$1$1(smartSelectEl).dataset()));\n      });\n    },\n    tabBeforeRemove: function tabBeforeRemove(tabEl) {\n      $$1$1(tabEl).find('.smart-select-init').each(function (index, smartSelectEl) {\n        if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {\n          smartSelectEl.f7SmartSelect.destroy();\n        }\n      });\n    },\n    pageInit: function pageInit(page) {\n      var app = this;\n      page.$el.find('.smart-select-init').each(function (index, smartSelectEl) {\n        app.smartSelect.create(Utils.extend({ el: smartSelectEl }, $$1$1(smartSelectEl).dataset()));\n      });\n    },\n    pageBeforeRemove: function pageBeforeRemove(page) {\n      page.$el.find('.smart-select-init').each(function (index, smartSelectEl) {\n        if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {\n          smartSelectEl.f7SmartSelect.destroy();\n        }\n      });\n    },\n  },\n  clicks: {\n    '.smart-select': function open($clickedEl, data) {\n      var app = this;\n      if (!$clickedEl[0].f7SmartSelect) {\n        var ss = app.smartSelect.create(Utils.extend({ el: $clickedEl }, data));\n        ss.open();\n      }\n    },\n  },\n};\n\nvar Grid = {\n  name: 'grid',\n};\n\nvar Calendar$1 = (function (Framework7Class$$1) {\n  function Calendar(app, params) {\n    if ( params === void 0 ) params = {};\n\n    Framework7Class$$1.call(this, params, [app]);\n    var calendar = this;\n    calendar.params = Utils.extend({}, app.params.calendar, params);\n\n    var $containerEl;\n    if (calendar.params.containerEl) {\n      $containerEl = $$1$1(calendar.params.containerEl);\n      if ($containerEl.length === 0) { return calendar; }\n    }\n\n    var $inputEl;\n    if (calendar.params.inputEl) {\n      $inputEl = $$1$1(calendar.params.inputEl);\n    }\n\n    var view;\n    if ($inputEl) {\n      view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;\n    }\n    if (!view) { view = app.views.main; }\n\n    var isHorizontal = calendar.params.direction === 'horizontal';\n\n    var inverter = 1;\n    if (isHorizontal) {\n      inverter = app.rtl ? -1 : 1;\n    }\n\n    Utils.extend(calendar, {\n      app: app,\n      $containerEl: $containerEl,\n      containerEl: $containerEl && $containerEl[0],\n      inline: $containerEl && $containerEl.length > 0,\n      $inputEl: $inputEl,\n      inputEl: $inputEl && $inputEl[0],\n      initialized: false,\n      opened: false,\n      url: calendar.params.url,\n      isHorizontal: isHorizontal,\n      inverter: inverter,\n      view: view,\n      animating: false,\n    });\n\n    function onInputClick() {\n      calendar.open();\n    }\n    function onInputFocus(e) {\n      e.preventDefault();\n    }\n    function onHtmlClick(e) {\n      var $targetEl = $$1$1(e.target);\n      if (calendar.isPopover()) { return; }\n      if (!calendar.opened) { return; }\n      if ($targetEl.closest('[class*=\"backdrop\"]').length) { return; }\n      if ($inputEl && $inputEl.length > 0) {\n        if ($targetEl[0] !== $inputEl[0] && $targetEl.closest('.sheet-modal, .calendar-modal').length === 0) {\n          calendar.close();\n        }\n      } else if ($$1$1(e.target).closest('.sheet-modal, .calendar-modal').length === 0) {\n        calendar.close();\n      }\n    }\n\n    // Events\n    Utils.extend(calendar, {\n      attachInputEvents: function attachInputEvents() {\n        calendar.$inputEl.on('click', onInputClick);\n        if (calendar.params.inputReadOnly) {\n          calendar.$inputEl.on('focus mousedown', onInputFocus);\n        }\n      },\n      detachInputEvents: function detachInputEvents() {\n        calendar.$inputEl.off('click', onInputClick);\n        if (calendar.params.inputReadOnly) {\n          calendar.$inputEl.off('focus mousedown', onInputFocus);\n        }\n      },\n      attachHtmlEvents: function attachHtmlEvents() {\n        app.on('click', onHtmlClick);\n      },\n      detachHtmlEvents: function detachHtmlEvents() {\n        app.off('click', onHtmlClick);\n      },\n    });\n    calendar.attachCalendarEvents = function attachCalendarEvents() {\n      var allowItemClick = true;\n      var isTouched;\n      var isMoved;\n      var touchStartX;\n      var touchStartY;\n      var touchCurrentX;\n      var touchCurrentY;\n      var touchStartTime;\n      var touchEndTime;\n      var currentTranslate;\n      var wrapperWidth;\n      var wrapperHeight;\n      var percentage;\n      var touchesDiff;\n      var isScrolling;\n\n      var $el = calendar.$el;\n      var $wrapperEl = calendar.$wrapperEl;\n\n      function handleTouchStart(e) {\n        if (isMoved || isTouched) { return; }\n        isTouched = true;\n        touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n        touchCurrentX = touchStartX;\n        touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n        touchCurrentY = touchStartY;\n        touchStartTime = (new Date()).getTime();\n        percentage = 0;\n        allowItemClick = true;\n        isScrolling = undefined;\n        currentTranslate = calendar.monthsTranslate;\n      }\n      function handleTouchMove(e) {\n        if (!isTouched) { return; }\n        var isH = calendar.isHorizontal;\n\n        touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n        touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n        if (typeof isScrolling === 'undefined') {\n          isScrolling = !!(isScrolling || Math.abs(touchCurrentY - touchStartY) > Math.abs(touchCurrentX - touchStartX));\n        }\n        if (isH && isScrolling) {\n          isTouched = false;\n          return;\n        }\n        e.preventDefault();\n        if (calendar.animating) {\n          isTouched = false;\n          return;\n        }\n        allowItemClick = false;\n        if (!isMoved) {\n          // First move\n          isMoved = true;\n          wrapperWidth = $wrapperEl[0].offsetWidth;\n          wrapperHeight = $wrapperEl[0].offsetHeight;\n          $wrapperEl.transition(0);\n        }\n\n        touchesDiff = isH ? touchCurrentX - touchStartX : touchCurrentY - touchStartY;\n        percentage = touchesDiff / (isH ? wrapperWidth : wrapperHeight);\n        currentTranslate = ((calendar.monthsTranslate * calendar.inverter) + percentage) * 100;\n\n        // Transform wrapper\n        $wrapperEl.transform((\"translate3d(\" + (isH ? currentTranslate : 0) + \"%, \" + (isH ? 0 : currentTranslate) + \"%, 0)\"));\n      }\n      function handleTouchEnd() {\n        if (!isTouched || !isMoved) {\n          isTouched = false;\n          isMoved = false;\n          return;\n        }\n        isTouched = false;\n        isMoved = false;\n\n        touchEndTime = new Date().getTime();\n        if (touchEndTime - touchStartTime < 300) {\n          if (Math.abs(touchesDiff) < 10) {\n            calendar.resetMonth();\n          } else if (touchesDiff >= 10) {\n            if (app.rtl) { calendar.nextMonth(); }\n            else { calendar.prevMonth(); }\n          } else if (app.rtl) { calendar.prevMonth(); }\n          else { calendar.nextMonth(); }\n        } else if (percentage <= -0.5) {\n          if (app.rtl) { calendar.prevMonth(); }\n          else { calendar.nextMonth(); }\n        } else if (percentage >= 0.5) {\n          if (app.rtl) { calendar.nextMonth(); }\n          else { calendar.prevMonth(); }\n        } else {\n          calendar.resetMonth();\n        }\n\n        // Allow click\n        setTimeout(function () {\n          allowItemClick = true;\n        }, 100);\n      }\n\n      function handleDayClick(e) {\n        if (!allowItemClick) { return; }\n        var $dayEl = $$1$1(e.target).parents('.calendar-day');\n        if ($dayEl.length === 0 && $$1$1(e.target).hasClass('calendar-day')) {\n          $dayEl = $$1$1(e.target);\n        }\n        if ($dayEl.length === 0) { return; }\n        if ($dayEl.hasClass('calendar-day-disabled')) { return; }\n        if (!calendar.params.rangePicker) {\n          if ($dayEl.hasClass('calendar-day-next')) { calendar.nextMonth(); }\n          if ($dayEl.hasClass('calendar-day-prev')) { calendar.prevMonth(); }\n        }\n        var dateYear = $dayEl.attr('data-year');\n        var dateMonth = $dayEl.attr('data-month');\n        var dateDay = $dayEl.attr('data-day');\n        calendar.emit(\n          'local::dayClick calendarDayClick',\n          calendar,\n          $dayEl[0],\n          dateYear,\n          dateMonth,\n          dateDay\n        );\n        if (!$dayEl.hasClass('calendar-day-selected') || calendar.params.multiple || calendar.params.rangePicker) {\n          calendar.addValue(new Date(dateYear, dateMonth, dateDay, 0, 0, 0));\n        }\n        if (calendar.params.closeOnSelect) {\n          if (\n            (calendar.params.rangePicker && calendar.value.length === 2) ||\n            !calendar.params.rangePicker\n          ) {\n            calendar.close();\n          }\n        }\n      }\n      function onNextMonthClick() {\n        calendar.nextMonth();\n      }\n      function onPrevMonthClick() {\n        calendar.prevMonth();\n      }\n      function onNextYearClick() {\n        calendar.nextYear();\n      }\n      function onPrevYearClick() {\n        calendar.prevYear();\n      }\n\n      var passiveListener = app.touchEvents.start === 'touchstart' && app.support.passiveListener ? { passive: true, capture: false } : false;\n      // Selectors clicks\n      $el.find('.calendar-prev-month-button').on('click', onPrevMonthClick);\n      $el.find('.calendar-next-month-button').on('click', onNextMonthClick);\n      $el.find('.calendar-prev-year-button').on('click', onPrevYearClick);\n      $el.find('.calendar-next-year-button').on('click', onNextYearClick);\n      // Day clicks\n      $wrapperEl.on('click', handleDayClick);\n      // Touch events\n      {\n        if (calendar.params.touchMove) {\n          $wrapperEl.on(app.touchEvents.start, handleTouchStart, passiveListener);\n          app.on('touchmove:active', handleTouchMove);\n          app.on('touchend:passive', handleTouchEnd);\n        }\n      }\n\n      calendar.detachCalendarEvents = function detachCalendarEvents() {\n        $el.find('.calendar-prev-month-button').off('click', onPrevMonthClick);\n        $el.find('.calendar-next-month-button').off('click', onNextMonthClick);\n        $el.find('.calendar-prev-year-button').off('click', onPrevYearClick);\n        $el.find('.calendar-next-year-button').off('click', onNextYearClick);\n        $wrapperEl.off('click', handleDayClick);\n        {\n          if (calendar.params.touchMove) {\n            $wrapperEl.off(app.touchEvents.start, handleTouchStart, passiveListener);\n            app.off('touchmove:active', handleTouchMove);\n            app.off('touchend:passive', handleTouchEnd);\n          }\n        }\n      };\n    };\n\n    calendar.init();\n\n    return calendar;\n  }\n\n  if ( Framework7Class$$1 ) Calendar.__proto__ = Framework7Class$$1;\n  Calendar.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n  Calendar.prototype.constructor = Calendar;\n  Calendar.prototype.initInput = function initInput () {\n    var calendar = this;\n    if (!calendar.$inputEl) { return; }\n    if (calendar.params.inputReadOnly) { calendar.$inputEl.prop('readOnly', true); }\n  };\n  Calendar.prototype.isPopover = function isPopover () {\n    var calendar = this;\n    var app = calendar.app;\n    var modal = calendar.modal;\n    var params = calendar.params;\n    if (params.openIn === 'sheet') { return false; }\n    if (modal && modal.type !== 'popover') { return false; }\n\n    if (!calendar.inline && calendar.inputEl) {\n      if (params.openIn === 'popover') { return true; }\n      else if (app.device.ios) {\n        return !!app.device.ipad;\n      } else if (app.width >= 768) {\n        return true;\n      }\n    }\n    return false;\n  };\n  Calendar.prototype.formatDate = function formatDate (d) {\n    var calendar = this;\n    var date = new Date(d);\n    var year = date.getFullYear();\n    var month = date.getMonth();\n    var month1 = month + 1;\n    var day = date.getDate();\n    var weekDay = date.getDay();\n    var ref = calendar.params;\n    var dateFormat = ref.dateFormat;\n    var monthNames = ref.monthNames;\n    var monthNamesShort = ref.monthNamesShort;\n    var dayNames = ref.dayNames;\n    var dayNamesShort = ref.dayNamesShort;\n\n    return dateFormat\n      .replace(/yyyy/g, year)\n      .replace(/yy/g, String(year).substring(2))\n      .replace(/mm/g, month1 < 10 ? (\"0\" + month1) : month1)\n      .replace(/m(\\W+)/g, (month1 + \"$1\"))\n      .replace(/MM/g, monthNames[month])\n      .replace(/M(\\W+)/g, ((monthNamesShort[month]) + \"$1\"))\n      .replace(/dd/g, day < 10 ? (\"0\" + day) : day)\n      .replace(/d(\\W+)/g, (day + \"$1\"))\n      .replace(/DD/g, dayNames[weekDay])\n      .replace(/D(\\W+)/g, ((dayNamesShort[weekDay]) + \"$1\"));\n  };\n  Calendar.prototype.formatValue = function formatValue () {\n    var calendar = this;\n    var value = calendar.value;\n    if (calendar.params.formatValue) {\n      return calendar.params.formatValue.call(calendar, value);\n    }\n    return value\n      .map(function (v) { return calendar.formatDate(v); })\n      .join(calendar.params.rangePicker ? ' - ' : ', ');\n  };\n  Calendar.prototype.addValue = function addValue (newValue) {\n    var calendar = this;\n    var ref = calendar.params;\n    var multiple = ref.multiple;\n    var rangePicker = ref.rangePicker;\n    if (multiple) {\n      if (!calendar.value) { calendar.value = []; }\n      var inValuesIndex;\n      for (var i = 0; i < calendar.value.length; i += 1) {\n        if (new Date(newValue).getTime() === new Date(calendar.value[i]).getTime()) {\n          inValuesIndex = i;\n        }\n      }\n      if (typeof inValuesIndex === 'undefined') {\n        calendar.value.push(newValue);\n      } else {\n        calendar.value.splice(inValuesIndex, 1);\n      }\n      calendar.updateValue();\n    } else if (rangePicker) {\n      if (!calendar.value) { calendar.value = []; }\n      if (calendar.value.length === 2 || calendar.value.length === 0) {\n        calendar.value = [];\n      }\n      if (calendar.value[0] !== newValue) { calendar.value.push(newValue); }\n      else { calendar.value = []; }\n      calendar.value.sort(function (a, b) { return a - b; });\n      calendar.updateValue();\n    } else {\n      calendar.value = [newValue];\n      calendar.updateValue();\n    }\n  };\n  Calendar.prototype.setValue = function setValue (values) {\n    var calendar = this;\n    calendar.value = values;\n    calendar.updateValue();\n  };\n  Calendar.prototype.getValue = function getValue () {\n    var calendar = this;\n    return calendar.value;\n  };\n  Calendar.prototype.updateValue = function updateValue (onlyHeader) {\n    var calendar = this;\n    var $el = calendar.$el;\n    var $wrapperEl = calendar.$wrapperEl;\n    var $inputEl = calendar.$inputEl;\n    var value = calendar.value;\n    var params = calendar.params;\n    var i;\n    if ($el && $el.length > 0) {\n      $wrapperEl.find('.calendar-day-selected').removeClass('calendar-day-selected');\n      var valueDate;\n      if (params.rangePicker && value.length === 2) {\n        for (i = new Date(value[0]).getTime(); i <= new Date(value[1]).getTime(); i += 24 * 60 * 60 * 1000) {\n          valueDate = new Date(i);\n          $wrapperEl.find((\".calendar-day[data-date=\\\"\" + (valueDate.getFullYear()) + \"-\" + (valueDate.getMonth()) + \"-\" + (valueDate.getDate()) + \"\\\"]\")).addClass('calendar-day-selected');\n        }\n      } else {\n        for (i = 0; i < calendar.value.length; i += 1) {\n          valueDate = new Date(value[i]);\n          $wrapperEl.find((\".calendar-day[data-date=\\\"\" + (valueDate.getFullYear()) + \"-\" + (valueDate.getMonth()) + \"-\" + (valueDate.getDate()) + \"\\\"]\")).addClass('calendar-day-selected');\n        }\n      }\n    }\n\n    calendar.emit('local::change calendarChange', calendar, value);\n\n    if (($inputEl && $inputEl.length) || params.header) {\n      var inputValue = calendar.formatValue(value);\n      if (params.header && $el && $el.length) {\n        $el.find('.calendar-selected-date').text(inputValue);\n      }\n      if ($inputEl && $inputEl.length && !onlyHeader) {\n        $inputEl.val(inputValue);\n        $inputEl.trigger('change');\n      }\n    }\n  };\n  Calendar.prototype.updateCurrentMonthYear = function updateCurrentMonthYear (dir) {\n    var calendar = this;\n    var $months = calendar.$months;\n    var $el = calendar.$el;\n    var params = calendar.params;\n    if (typeof dir === 'undefined') {\n      calendar.currentMonth = parseInt($months.eq(1).attr('data-month'), 10);\n      calendar.currentYear = parseInt($months.eq(1).attr('data-year'), 10);\n    } else {\n      calendar.currentMonth = parseInt($months.eq(dir === 'next' ? ($months.length - 1) : 0).attr('data-month'), 10);\n      calendar.currentYear = parseInt($months.eq(dir === 'next' ? ($months.length - 1) : 0).attr('data-year'), 10);\n    }\n    $el.find('.current-month-value').text(params.monthNames[calendar.currentMonth]);\n    $el.find('.current-year-value').text(calendar.currentYear);\n  };\n  Calendar.prototype.update = function update () {\n    var calendar = this;\n    var currentYear = calendar.currentYear;\n    var currentMonth = calendar.currentMonth;\n    var $wrapperEl = calendar.$wrapperEl;\n    var currentDate = new Date(currentYear, currentMonth);\n    var prevMonthHtml = calendar.renderMonth(currentDate, 'prev');\n    var currentMonthHtml = calendar.renderMonth(currentDate);\n    var nextMonthHtml = calendar.renderMonth(currentDate, 'next');\n\n    $wrapperEl\n      .html((\"\" + prevMonthHtml + currentMonthHtml + nextMonthHtml))\n      .transform('translate3d(0,0,0)');\n    calendar.$months = $wrapperEl.find('.calendar-month');\n    calendar.monthsTranslate = 0;\n    calendar.setMonthsTranslate();\n    calendar.$months.each(function (index, monthEl) {\n      calendar.emit(\n        'local::monthAdd calendarMonthAdd',\n        monthEl\n      );\n    });\n  };\n  Calendar.prototype.onMonthChangeStart = function onMonthChangeStart (dir) {\n    var calendar = this;\n    var $months = calendar.$months;\n    var currentYear = calendar.currentYear;\n    var currentMonth = calendar.currentMonth;\n    calendar.updateCurrentMonthYear(dir);\n    $months.removeClass('calendar-month-current calendar-month-prev calendar-month-next');\n    var currentIndex = dir === 'next' ? $months.length - 1 : 0;\n\n    $months.eq(currentIndex).addClass('calendar-month-current');\n    $months.eq(dir === 'next' ? currentIndex - 1 : currentIndex + 1).addClass(dir === 'next' ? 'calendar-month-prev' : 'calendar-month-next');\n\n    calendar.emit(\n      'local::monthYearChangeStart calendarMonthYearChangeStart',\n      calendar,\n      currentYear,\n      currentMonth\n    );\n  };\n  Calendar.prototype.onMonthChangeEnd = function onMonthChangeEnd (dir, rebuildBoth) {\n    var calendar = this;\n    var currentYear = calendar.currentYear;\n    var currentMonth = calendar.currentMonth;\n    var $wrapperEl = calendar.$wrapperEl;\n    var monthsTranslate = calendar.monthsTranslate;\n    calendar.animating = false;\n    var nextMonthHtml;\n    var prevMonthHtml;\n    var currentMonthHtml;\n    $wrapperEl\n      .find('.calendar-month:not(.calendar-month-prev):not(.calendar-month-current):not(.calendar-month-next)')\n      .remove();\n\n    if (typeof dir === 'undefined') {\n      dir = 'next'; // eslint-disable-line\n      rebuildBoth = true; // eslint-disable-line\n    }\n    if (!rebuildBoth) {\n      currentMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), dir);\n    } else {\n      $wrapperEl.find('.calendar-month-next, .calendar-month-prev').remove();\n      prevMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), 'prev');\n      nextMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), 'next');\n    }\n    if (dir === 'next' || rebuildBoth) {\n      $wrapperEl.append(currentMonthHtml || nextMonthHtml);\n    }\n    if (dir === 'prev' || rebuildBoth) {\n      $wrapperEl.prepend(currentMonthHtml || prevMonthHtml);\n    }\n    var $months = $wrapperEl.find('.calendar-month');\n    calendar.$months = $months;\n    calendar.setMonthsTranslate(monthsTranslate);\n    calendar.emit(\n      'local::monthAdd calendarMonthAdd',\n      calendar,\n      dir === 'next' ? $months.eq($months.length - 1)[0] : $months.eq(0)[0]\n    );\n    calendar.emit(\n      'local::monthYearChangeEnd calendarMonthYearChangeEnd',\n      calendar,\n      currentYear,\n      currentMonth\n    );\n  };\n  Calendar.prototype.setMonthsTranslate = function setMonthsTranslate (translate) {\n    var calendar = this;\n    var $months = calendar.$months;\n    var isH = calendar.isHorizontal;\n    var inverter = calendar.inverter;\n    // eslint-disable-next-line\n    translate = translate || calendar.monthsTranslate || 0;\n    if (typeof calendar.monthsTranslate === 'undefined') {\n      calendar.monthsTranslate = translate;\n    }\n    $months.removeClass('calendar-month-current calendar-month-prev calendar-month-next');\n    var prevMonthTranslate = -(translate + 1) * 100 * inverter;\n    var currentMonthTranslate = -translate * 100 * inverter;\n    var nextMonthTranslate = -(translate - 1) * 100 * inverter;\n    $months.eq(0)\n      .transform((\"translate3d(\" + (isH ? prevMonthTranslate : 0) + \"%, \" + (isH ? 0 : prevMonthTranslate) + \"%, 0)\"))\n      .addClass('calendar-month-prev');\n    $months.eq(1)\n      .transform((\"translate3d(\" + (isH ? currentMonthTranslate : 0) + \"%, \" + (isH ? 0 : currentMonthTranslate) + \"%, 0)\"))\n      .addClass('calendar-month-current');\n    $months.eq(2)\n      .transform((\"translate3d(\" + (isH ? nextMonthTranslate : 0) + \"%, \" + (isH ? 0 : nextMonthTranslate) + \"%, 0)\"))\n      .addClass('calendar-month-next');\n  };\n  Calendar.prototype.nextMonth = function nextMonth (transition) {\n    var calendar = this;\n    var params = calendar.params;\n    var $wrapperEl = calendar.$wrapperEl;\n    var inverter = calendar.inverter;\n    var isH = calendar.isHorizontal;\n    if (typeof transition === 'undefined' || typeof transition === 'object') {\n      transition = ''; // eslint-disable-line\n      if (!params.animate) { transition = 0; } // eslint-disable-line\n    }\n    var nextMonth = parseInt(calendar.$months.eq(calendar.$months.length - 1).attr('data-month'), 10);\n    var nextYear = parseInt(calendar.$months.eq(calendar.$months.length - 1).attr('data-year'), 10);\n    var nextDate = new Date(nextYear, nextMonth);\n    var nextDateTime = nextDate.getTime();\n    var transitionEndCallback = !calendar.animating;\n    if (params.maxDate) {\n      if (nextDateTime > new Date(params.maxDate).getTime()) {\n        calendar.resetMonth();\n        return;\n      }\n    }\n    calendar.monthsTranslate -= 1;\n    if (nextMonth === calendar.currentMonth) {\n      var nextMonthTranslate = -(calendar.monthsTranslate) * 100 * inverter;\n      var nextMonthHtml = $$1$1(calendar.renderMonth(nextDateTime, 'next'))\n        .transform((\"translate3d(\" + (isH ? nextMonthTranslate : 0) + \"%, \" + (isH ? 0 : nextMonthTranslate) + \"%, 0)\"))\n        .addClass('calendar-month-next');\n      $wrapperEl.append(nextMonthHtml[0]);\n      calendar.$months = $wrapperEl.find('.calendar-month');\n      calendar.emit(\n        'local::monthAdd calendarMonthAdd',\n        calendar.$months.eq(calendar.$months.length - 1)[0]\n      );\n    }\n    calendar.animating = true;\n    calendar.onMonthChangeStart('next');\n    var translate = (calendar.monthsTranslate * 100) * inverter;\n\n    $wrapperEl.transition(transition).transform((\"translate3d(\" + (isH ? translate : 0) + \"%, \" + (isH ? 0 : translate) + \"%, 0)\"));\n    if (transitionEndCallback) {\n      $wrapperEl.transitionEnd(function () {\n        calendar.onMonthChangeEnd('next');\n      });\n    }\n    if (!params.animate) {\n      calendar.onMonthChangeEnd('next');\n    }\n  };\n  Calendar.prototype.prevMonth = function prevMonth (transition) {\n    var calendar = this;\n    var params = calendar.params;\n    var $wrapperEl = calendar.$wrapperEl;\n    var inverter = calendar.inverter;\n    var isH = calendar.isHorizontal;\n    if (typeof transition === 'undefined' || typeof transition === 'object') {\n      transition = ''; // eslint-disable-line\n      if (!params.animate) { transition = 0; } // eslint-disable-line\n    }\n    var prevMonth = parseInt(calendar.$months.eq(0).attr('data-month'), 10);\n    var prevYear = parseInt(calendar.$months.eq(0).attr('data-year'), 10);\n    var prevDate = new Date(prevYear, prevMonth + 1, -1);\n    var prevDateTime = prevDate.getTime();\n    var transitionEndCallback = !calendar.animating;\n    if (params.minDate) {\n      if (prevDateTime < new Date(params.minDate).getTime()) {\n        calendar.resetMonth();\n        return;\n      }\n    }\n    calendar.monthsTranslate += 1;\n    if (prevMonth === calendar.currentMonth) {\n      var prevMonthTranslate = -(calendar.monthsTranslate) * 100 * inverter;\n      var prevMonthHtml = $$1$1(calendar.renderMonth(prevDateTime, 'prev'))\n        .transform((\"translate3d(\" + (isH ? prevMonthTranslate : 0) + \"%, \" + (isH ? 0 : prevMonthTranslate) + \"%, 0)\"))\n        .addClass('calendar-month-prev');\n      $wrapperEl.prepend(prevMonthHtml[0]);\n      calendar.$months = $wrapperEl.find('.calendar-month');\n      calendar.emit(\n        'local::monthAdd calendarMonthAdd',\n        calendar.$months.eq(0)[0]\n      );\n    }\n    calendar.animating = true;\n    calendar.onMonthChangeStart('prev');\n    var translate = (calendar.monthsTranslate * 100) * inverter;\n    $wrapperEl\n      .transition(transition)\n      .transform((\"translate3d(\" + (isH ? translate : 0) + \"%, \" + (isH ? 0 : translate) + \"%, 0)\"));\n    if (transitionEndCallback) {\n      $wrapperEl.transitionEnd(function () {\n        calendar.onMonthChangeEnd('prev');\n      });\n    }\n    if (!params.animate) {\n      calendar.onMonthChangeEnd('prev');\n    }\n  };\n  Calendar.prototype.resetMonth = function resetMonth (transition) {\n    if ( transition === void 0 ) transition = '';\n\n    var calendar = this;\n    var $wrapperEl = calendar.$wrapperEl;\n    var inverter = calendar.inverter;\n    var isH = calendar.isHorizontal;\n    var monthsTranslate = calendar.monthsTranslate;\n    var translate = (monthsTranslate * 100) * inverter;\n    $wrapperEl\n      .transition(transition)\n      .transform((\"translate3d(\" + (isH ? translate : 0) + \"%, \" + (isH ? 0 : translate) + \"%, 0)\"));\n  };\n  // eslint-disable-next-line\n  Calendar.prototype.setYearMonth = function setYearMonth (year, month, transition) {\n    var calendar = this;\n    var params = calendar.params;\n    var isH = calendar.isHorizontal;\n    var $wrapperEl = calendar.$wrapperEl;\n    var inverter = calendar.inverter;\n    // eslint-disable-next-line\n    if (typeof year === 'undefined') { year = calendar.currentYear; }\n    // eslint-disable-next-line\n    if (typeof month === 'undefined') { month = calendar.currentMonth; }\n    if (typeof transition === 'undefined' || typeof transition === 'object') {\n      // eslint-disable-next-line\n      transition = '';\n      // eslint-disable-next-line\n      if (!params.animate) { transition = 0; }\n    }\n    var targetDate;\n    if (year < calendar.currentYear) {\n      targetDate = new Date(year, month + 1, -1).getTime();\n    } else {\n      targetDate = new Date(year, month).getTime();\n    }\n    if (params.maxDate && targetDate > new Date(params.maxDate).getTime()) {\n      return false;\n    }\n    if (params.minDate && targetDate < new Date(params.minDate).getTime()) {\n      return false;\n    }\n    var currentDate = new Date(calendar.currentYear, calendar.currentMonth).getTime();\n    var dir = targetDate > currentDate ? 'next' : 'prev';\n    var newMonthHTML = calendar.renderMonth(new Date(year, month));\n    calendar.monthsTranslate = calendar.monthsTranslate || 0;\n    var prevTranslate = calendar.monthsTranslate;\n    var monthTranslate;\n    var transitionEndCallback = !calendar.animating;\n    if (targetDate > currentDate) {\n      // To next\n      calendar.monthsTranslate -= 1;\n      if (!calendar.animating) { calendar.$months.eq(calendar.$months.length - 1).remove(); }\n      $wrapperEl.append(newMonthHTML);\n      calendar.$months = $wrapperEl.find('.calendar-month');\n      monthTranslate = -(prevTranslate - 1) * 100 * inverter;\n      calendar.$months\n        .eq(calendar.$months.length - 1)\n        .transform((\"translate3d(\" + (isH ? monthTranslate : 0) + \"%, \" + (isH ? 0 : monthTranslate) + \"%, 0)\"))\n        .addClass('calendar-month-next');\n    } else {\n      // To prev\n      calendar.monthsTranslate += 1;\n      if (!calendar.animating) { calendar.$months.eq(0).remove(); }\n      $wrapperEl.prepend(newMonthHTML);\n      calendar.$months = $wrapperEl.find('.calendar-month');\n      monthTranslate = -(prevTranslate + 1) * 100 * inverter;\n      calendar.$months\n        .eq(0)\n        .transform((\"translate3d(\" + (isH ? monthTranslate : 0) + \"%, \" + (isH ? 0 : monthTranslate) + \"%, 0)\"))\n        .addClass('calendar-month-prev');\n    }\n    calendar.emit(\n      'local::monthAdd calendarMonthAdd',\n      dir === 'next'\n        ? calendar.$months.eq(calendar.$months.length - 1)[0]\n        : calendar.$months.eq(0)[0]\n    );\n\n    calendar.animating = true;\n    calendar.onMonthChangeStart(dir);\n    var wrapperTranslate = (calendar.monthsTranslate * 100) * inverter;\n    $wrapperEl\n      .transition(transition)\n      .transform((\"translate3d(\" + (isH ? wrapperTranslate : 0) + \"%, \" + (isH ? 0 : wrapperTranslate) + \"%, 0)\"));\n    if (transitionEndCallback) {\n      $wrapperEl.transitionEnd(function () {\n        calendar.onMonthChangeEnd(dir, true);\n      });\n    }\n    if (!params.animate) {\n      calendar.onMonthChangeEnd(dir);\n    }\n  };\n  Calendar.prototype.nextYear = function nextYear () {\n    var calendar = this;\n    calendar.setYearMonth(calendar.currentYear + 1);\n  };\n  Calendar.prototype.prevYear = function prevYear () {\n    var calendar = this;\n    calendar.setYearMonth(calendar.currentYear - 1);\n  };\n  // eslint-disable-next-line\n  Calendar.prototype.dateInRange = function dateInRange (dayDate, range) {\n    var match = false;\n    var i;\n    if (!range) { return false; }\n    if (Array.isArray(range)) {\n      for (i = 0; i < range.length; i += 1) {\n        if (range[i].from || range[i].to) {\n          if (range[i].from && range[i].to) {\n            if ((dayDate <= new Date(range[i].to).getTime()) && (dayDate >= new Date(range[i].from).getTime())) {\n              match = true;\n            }\n          } else if (range[i].from) {\n            if (dayDate >= new Date(range[i].from).getTime()) {\n              match = true;\n            }\n          } else if (range[i].to) {\n            if (dayDate <= new Date(range[i].to).getTime()) {\n              match = true;\n            }\n          }\n        } else if (dayDate === new Date(range[i]).getTime()) {\n          match = true;\n        }\n      }\n    } else if (range.from || range.to) {\n      if (range.from && range.to) {\n        if ((dayDate <= new Date(range.to).getTime()) && (dayDate >= new Date(range.from).getTime())) {\n          match = true;\n        }\n      } else if (range.from) {\n        if (dayDate >= new Date(range.from).getTime()) {\n          match = true;\n        }\n      } else if (range.to) {\n        if (dayDate <= new Date(range.to).getTime()) {\n          match = true;\n        }\n      }\n    } else if (typeof range === 'function') {\n      match = range(new Date(dayDate));\n    }\n    return match;\n  };\n  // eslint-disable-next-line\n  Calendar.prototype.daysInMonth = function daysInMonth (date) {\n    var d = new Date(date);\n    return new Date(d.getFullYear(), d.getMonth() + 1, 0).getDate();\n  };\n  Calendar.prototype.renderMonths = function renderMonths (date) {\n    var calendar = this;\n    if (calendar.params.renderMonths) {\n      return calendar.params.renderMonths.call(calendar, date);\n    }\n    return (\"\\n      <div class=\\\"calendar-months-wrapper\\\">\\n        \" + (calendar.renderMonth(date, 'prev')) + \"\\n        \" + (calendar.renderMonth(date)) + \"\\n        \" + (calendar.renderMonth(date, 'next')) + \"\\n      </div>\\n    \").trim();\n  };\n  Calendar.prototype.renderMonth = function renderMonth (d, offset) {\n    var calendar = this;\n    var params = calendar.params;\n    var value = calendar.value;\n    if (params.renderMonth) {\n      return params.renderMonth.call(calendar, d, offset);\n    }\n    var date = new Date(d);\n    var year = date.getFullYear();\n    var month = date.getMonth();\n\n    if (offset === 'next') {\n      if (month === 11) { date = new Date(year + 1, 0); }\n      else { date = new Date(year, month + 1, 1); }\n    }\n    if (offset === 'prev') {\n      if (month === 0) { date = new Date(year - 1, 11); }\n      else { date = new Date(year, month - 1, 1); }\n    }\n    if (offset === 'next' || offset === 'prev') {\n      month = date.getMonth();\n      year = date.getFullYear();\n    }\n\n    var currentValues = [];\n    var today = new Date().setHours(0, 0, 0, 0);\n    var minDate = params.minDate ? new Date(params.minDate).getTime() : null;\n    var maxDate = params.maxDate ? new Date(params.maxDate).getTime() : null;\n    var rows = 6;\n    var cols = 7;\n    var daysInPrevMonth = calendar.daysInMonth(new Date(date.getFullYear(), date.getMonth()).getTime() - (10 * 24 * 60 * 60 * 1000));\n    var daysInMonth = calendar.daysInMonth(date);\n    var minDayNumber = params.firstDay === 6 ? 0 : 1;\n\n    var monthHtml = '';\n    var dayIndex = 0 + (params.firstDay - 1);\n    var disabled;\n    var hasEvent;\n    var firstDayOfMonthIndex = new Date(date.getFullYear(), date.getMonth()).getDay();\n    if (firstDayOfMonthIndex === 0) { firstDayOfMonthIndex = 7; }\n\n    if (value && value.length) {\n      for (var i = 0; i < value.length; i += 1) {\n        currentValues.push(new Date(value[i]).setHours(0, 0, 0, 0));\n      }\n    }\n\n    for (var row = 1; row <= rows; row += 1) {\n      var rowHtml = '';\n      for (var col = 1; col <= cols; col += 1) {\n        dayIndex += 1;\n        var dayDate = (void 0);\n        var dayNumber = dayIndex - firstDayOfMonthIndex;\n        var addClass = '';\n        if (row === 1 && col === 1 && dayNumber > minDayNumber && params.firstDay !== 1) {\n          dayIndex -= 7;\n          dayNumber = dayIndex - firstDayOfMonthIndex;\n        }\n\n        var weekDayIndex = ((col - 1) + params.firstDay > 6)\n          ? ((col - 1 - 7) + params.firstDay)\n          : ((col - 1) + params.firstDay);\n\n        if (dayNumber < 0) {\n          dayNumber = daysInPrevMonth + dayNumber + 1;\n          addClass += ' calendar-day-prev';\n          dayDate = new Date(month - 1 < 0 ? year - 1 : year, month - 1 < 0 ? 11 : month - 1, dayNumber).getTime();\n        } else {\n          dayNumber += 1;\n          if (dayNumber > daysInMonth) {\n            dayNumber -= daysInMonth;\n            addClass += ' calendar-day-next';\n            dayDate = new Date(month + 1 > 11 ? year + 1 : year, month + 1 > 11 ? 0 : month + 1, dayNumber).getTime();\n          } else {\n            dayDate = new Date(year, month, dayNumber).getTime();\n          }\n        }\n        // Today\n        if (dayDate === today) { addClass += ' calendar-day-today'; }\n\n        // Selected\n        if (params.rangePicker && currentValues.length === 2) {\n          if (dayDate >= currentValues[0] && dayDate <= currentValues[1]) { addClass += ' calendar-day-selected'; }\n        } else if (currentValues.indexOf(dayDate) >= 0) { addClass += ' calendar-day-selected'; }\n        // Weekend\n        if (params.weekendDays.indexOf(weekDayIndex) >= 0) {\n          addClass += ' calendar-day-weekend';\n        }\n        // Has Events\n        hasEvent = false;\n        if (params.events) {\n          if (calendar.dateInRange(dayDate, params.events)) {\n            hasEvent = true;\n          }\n        }\n        if (hasEvent) {\n          addClass += ' calendar-day-has-events';\n        }\n        // Custom Ranges\n        if (params.rangesClasses) {\n          for (var k = 0; k < params.rangesClasses.length; k += 1) {\n            if (calendar.dateInRange(dayDate, params.rangesClasses[k].range)) {\n              addClass += \" \" + (params.rangesClasses[k].cssClass);\n            }\n          }\n        }\n        // Disabled\n        disabled = false;\n        if ((minDate && dayDate < minDate) || (maxDate && dayDate > maxDate)) {\n          disabled = true;\n        }\n        if (params.disabled) {\n          if (calendar.dateInRange(dayDate, params.disabled)) {\n            disabled = true;\n          }\n        }\n        if (disabled) {\n          addClass += ' calendar-day-disabled';\n        }\n\n        dayDate = new Date(dayDate);\n        var dayYear = dayDate.getFullYear();\n        var dayMonth = dayDate.getMonth();\n        rowHtml += (\"\\n          <div data-year=\\\"\" + dayYear + \"\\\" data-month=\\\"\" + dayMonth + \"\\\" data-day=\\\"\" + dayNumber + \"\\\" class=\\\"calendar-day\" + addClass + \"\\\" data-date=\\\"\" + dayYear + \"-\" + dayMonth + \"-\" + dayNumber + \"\\\">\\n            <span>\" + dayNumber + \"</span>\\n          </div>\").trim();\n      }\n      monthHtml += \"<div class=\\\"calendar-row\\\">\" + rowHtml + \"</div>\";\n    }\n    monthHtml = \"<div class=\\\"calendar-month\\\" data-year=\\\"\" + year + \"\\\" data-month=\\\"\" + month + \"\\\">\" + monthHtml + \"</div>\";\n    return monthHtml;\n  };\n  Calendar.prototype.renderWeekHeader = function renderWeekHeader () {\n    var calendar = this;\n    if (calendar.params.renderWeekHeader) {\n      return calendar.params.renderWeekHeader.call(calendar);\n    }\n    var params = calendar.params;\n    var weekDaysHtml = '';\n    for (var i = 0; i < 7; i += 1) {\n      var dayIndex = (i + params.firstDay > 6)\n        ? ((i - 7) + params.firstDay)\n        : (i + params.firstDay);\n      var dayName = params.dayNamesShort[dayIndex];\n      weekDaysHtml += \"<div class=\\\"calendar-week-day\\\">\" + dayName + \"</div>\";\n    }\n    return (\"\\n      <div class=\\\"calendar-week-header\\\">\\n        \" + weekDaysHtml + \"\\n      </div>\\n    \").trim();\n  };\n  Calendar.prototype.renderMonthSelector = function renderMonthSelector () {\n    var calendar = this;\n    var app = calendar.app;\n    if (calendar.params.renderMonthSelector) {\n      return calendar.params.renderMonthSelector.call(calendar);\n    }\n\n    var needsBlackIcon;\n    if (calendar.inline && calendar.$containerEl.closest('.theme-dark').length === 0) {\n      needsBlackIcon = true;\n    } else if (app.root.closest('.theme-dark').length === 0) {\n      needsBlackIcon = true;\n    }\n\n    var iconColor = app.theme === 'md' && needsBlackIcon ? 'color-black' : '';\n    return (\"\\n      <div class=\\\"calendar-month-selector\\\">\\n        <a href=\\\"#\\\" class=\\\"link icon-only calendar-prev-month-button\\\">\\n          <i class=\\\"icon icon-prev \" + iconColor + \"\\\"></i>\\n        </a>\\n        <span class=\\\"current-month-value\\\"></span>\\n        <a href=\\\"#\\\" class=\\\"link icon-only calendar-next-month-button\\\">\\n          <i class=\\\"icon icon-next \" + iconColor + \"\\\"></i>\\n        </a>\\n      </div>\\n    \").trim();\n  };\n  Calendar.prototype.renderYearSelector = function renderYearSelector () {\n    var calendar = this;\n    var app = calendar.app;\n    if (calendar.params.renderYearSelector) {\n      return calendar.params.renderYearSelector.call(calendar);\n    }\n\n    var needsBlackIcon;\n    if (calendar.inline && calendar.$containerEl.closest('.theme-dark').length === 0) {\n      needsBlackIcon = true;\n    } else if (app.root.closest('.theme-dark').length === 0) {\n      needsBlackIcon = true;\n    }\n\n    var iconColor = app.theme === 'md' && needsBlackIcon ? 'color-black' : '';\n    return (\"\\n      <div class=\\\"calendar-year-selector\\\">\\n        <a href=\\\"#\\\" class=\\\"link icon-only calendar-prev-year-button\\\">\\n          <i class=\\\"icon icon-prev \" + iconColor + \"\\\"></i>\\n        </a>\\n        <span class=\\\"current-year-value\\\"></span>\\n        <a href=\\\"#\\\" class=\\\"link icon-only calendar-next-year-button\\\">\\n          <i class=\\\"icon icon-next \" + iconColor + \"\\\"></i>\\n        </a>\\n      </div>\\n    \").trim();\n  };\n  Calendar.prototype.renderHeader = function renderHeader () {\n    var calendar = this;\n    if (calendar.params.renderHeader) {\n      return calendar.params.renderHeader.call(calendar);\n    }\n    return (\"\\n      <div class=\\\"calendar-header\\\">\\n        <div class=\\\"calendar-selected-date\\\">\" + (calendar.params.headerPlaceholder) + \"</div>\\n      </div>\\n    \").trim();\n  };\n  Calendar.prototype.renderFooter = function renderFooter () {\n    var calendar = this;\n    var app = calendar.app;\n    if (calendar.params.renderFooter) {\n      return calendar.params.renderFooter.call(calendar);\n    }\n    return (\"\\n      <div class=\\\"calendar-footer\\\">\\n        <a href=\\\"#\\\" class=\\\"\" + (app.theme === 'md' ? 'button' : 'link') + \" calendar-close sheet-close popover-close\\\">\" + (calendar.params.toolbarCloseText) + \"</a>\\n      </div>\\n    \").trim();\n  };\n  Calendar.prototype.renderToolbar = function renderToolbar () {\n    var calendar = this;\n    if (calendar.params.renderToolbar) {\n      return calendar.params.renderToolbar.call(calendar, calendar);\n    }\n    return (\"\\n      <div class=\\\"toolbar no-shadow\\\">\\n        <div class=\\\"toolbar-inner\\\">\\n          \" + (calendar.renderMonthSelector()) + \"\\n          \" + (calendar.renderYearSelector()) + \"\\n        </div>\\n      </div>\\n    \").trim();\n  };\n  // eslint-disable-next-line\n  Calendar.prototype.renderInline = function renderInline () {\n    var calendar = this;\n    var ref = calendar.params;\n    var cssClass = ref.cssClass;\n    var toolbar = ref.toolbar;\n    var header = ref.header;\n    var footer = ref.footer;\n    var rangePicker = ref.rangePicker;\n    var weekHeader = ref.weekHeader;\n    var value = calendar.value;\n    var date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n    var inlineHtml = (\"\\n      <div class=\\\"calendar calendar-inline \" + (rangePicker ? 'calendar-range' : '') + \" \" + (cssClass || '') + \"\\\">\\n        \" + (header ? calendar.renderHeader() : '') + \"\\n        \" + (toolbar ? calendar.renderToolbar() : '') + \"\\n        \" + (weekHeader ? calendar.renderWeekHeader() : '') + \"\\n        <div class=\\\"calendar-months\\\">\\n          \" + (calendar.renderMonths(date)) + \"\\n        </div>\\n        \" + (footer ? calendar.renderFooter() : '') + \"\\n      </div>\\n    \").trim();\n\n    return inlineHtml;\n  };\n  Calendar.prototype.renderCustomModal = function renderCustomModal () {\n    var calendar = this;\n    var ref = calendar.params;\n    var cssClass = ref.cssClass;\n    var toolbar = ref.toolbar;\n    var header = ref.header;\n    var footer = ref.footer;\n    var rangePicker = ref.rangePicker;\n    var weekHeader = ref.weekHeader;\n    var value = calendar.value;\n    var date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n    var sheetHtml = (\"\\n      <div class=\\\"calendar calendar-modal \" + (rangePicker ? 'calendar-range' : '') + \" \" + (cssClass || '') + \"\\\">\\n        \" + (header ? calendar.renderHeader() : '') + \"\\n        \" + (toolbar ? calendar.renderToolbar() : '') + \"\\n        \" + (weekHeader ? calendar.renderWeekHeader() : '') + \"\\n        <div class=\\\"calendar-months\\\">\\n          \" + (calendar.renderMonths(date)) + \"\\n        </div>\\n        \" + (footer ? calendar.renderFooter() : '') + \"\\n      </div>\\n    \").trim();\n\n    return sheetHtml;\n  };\n  Calendar.prototype.renderSheet = function renderSheet () {\n    var calendar = this;\n    var ref = calendar.params;\n    var cssClass = ref.cssClass;\n    var toolbar = ref.toolbar;\n    var header = ref.header;\n    var footer = ref.footer;\n    var rangePicker = ref.rangePicker;\n    var weekHeader = ref.weekHeader;\n    var value = calendar.value;\n    var date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n    var sheetHtml = (\"\\n      <div class=\\\"sheet-modal calendar calendar-sheet \" + (rangePicker ? 'calendar-range' : '') + \" \" + (cssClass || '') + \"\\\">\\n        \" + (header ? calendar.renderHeader() : '') + \"\\n        \" + (toolbar ? calendar.renderToolbar() : '') + \"\\n        \" + (weekHeader ? calendar.renderWeekHeader() : '') + \"\\n        <div class=\\\"sheet-modal-inner calendar-months\\\">\\n          \" + (calendar.renderMonths(date)) + \"\\n        </div>\\n        \" + (footer ? calendar.renderFooter() : '') + \"\\n      </div>\\n    \").trim();\n\n    return sheetHtml;\n  };\n  Calendar.prototype.renderPopover = function renderPopover () {\n    var calendar = this;\n    var ref = calendar.params;\n    var cssClass = ref.cssClass;\n    var toolbar = ref.toolbar;\n    var header = ref.header;\n    var footer = ref.footer;\n    var rangePicker = ref.rangePicker;\n    var weekHeader = ref.weekHeader;\n    var value = calendar.value;\n    var date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n    var popoverHtml = (\"\\n      <div class=\\\"popover calendar-popover\\\">\\n        <div class=\\\"popover-inner\\\">\\n          <div class=\\\"calendar \" + (rangePicker ? 'calendar-range' : '') + \" \" + (cssClass || '') + \"\\\">\\n            \" + (header ? calendar.renderHeader() : '') + \"\\n            \" + (toolbar ? calendar.renderToolbar() : '') + \"\\n            \" + (weekHeader ? calendar.renderWeekHeader() : '') + \"\\n            <div class=\\\"calendar-months\\\">\\n              \" + (calendar.renderMonths(date)) + \"\\n            </div>\\n            \" + (footer ? calendar.renderFooter() : '') + \"\\n          </div>\\n        </div>\\n      </div>\\n    \").trim();\n\n    return popoverHtml;\n  };\n  Calendar.prototype.render = function render () {\n    var calendar = this;\n    var params = calendar.params;\n    if (params.render) { return params.render.call(calendar); }\n    if (!calendar.inline) {\n      var modalType = params.openIn;\n      if (modalType === 'auto') { modalType = calendar.isPopover() ? 'popover' : 'sheet'; }\n\n      if (modalType === 'popover') { return calendar.renderPopover(); }\n      else if (modalType === 'sheet') { return calendar.renderSheet(); }\n      return calendar.renderCustomModal();\n    }\n    return calendar.renderInline();\n  };\n  Calendar.prototype.onOpen = function onOpen () {\n    var calendar = this;\n    var initialized = calendar.initialized;\n    var $el = calendar.$el;\n    var app = calendar.app;\n    var $inputEl = calendar.$inputEl;\n    var inline = calendar.inline;\n    var value = calendar.value;\n    var params = calendar.params;\n    calendar.opened = true;\n\n    // Init main events\n    calendar.attachCalendarEvents();\n\n    var updateValue = !value && params.value;\n\n    // Set value\n    if (!initialized) {\n      if (value) { calendar.setValue(value, 0); }\n      else if (params.value) {\n        calendar.setValue(params.value, 0);\n      }\n    } else if (value) {\n      calendar.setValue(value, 0);\n    }\n\n    // Update current month and year\n    calendar.updateCurrentMonthYear();\n\n    // Set initial translate\n    calendar.monthsTranslate = 0;\n    calendar.setMonthsTranslate();\n\n    // Update input value\n    if (updateValue) { calendar.updateValue(); }\n    else if (app.theme === 'md' && value) { calendar.updateValue(true); }\n\n    // Extra focus\n    if (!inline && $inputEl.length && app.theme === 'md') {\n      $inputEl.trigger('focus');\n    }\n\n    calendar.initialized = true;\n\n    calendar.$months.each(function (index, monthEl) {\n      calendar.emit('local::monthAdd calendarMonthAdd', monthEl);\n    });\n\n    // Trigger events\n    if ($el) {\n      $el.trigger('calendar:open', calendar);\n    }\n    if ($inputEl) {\n      $inputEl.trigger('calendar:open', calendar);\n    }\n    calendar.emit('local::open calendarOpen', calendar);\n  };\n  Calendar.prototype.onOpened = function onOpened () {\n    var calendar = this;\n    if (calendar.$el) {\n      calendar.$el.trigger('calendar:opened', calendar);\n    }\n    if (calendar.$inputEl) {\n      calendar.$inputEl.trigger('calendar:opened', calendar);\n    }\n    calendar.emit('local::opened calendarOpened', calendar);\n  };\n  Calendar.prototype.onClose = function onClose () {\n    var calendar = this;\n    var app = calendar.app;\n\n    if (calendar.$inputEl && app.theme === 'md') {\n      calendar.$inputEl.trigger('blur');\n    }\n    if (calendar.detachCalendarEvents) {\n      calendar.detachCalendarEvents();\n    }\n\n    if (calendar.$el) {\n      calendar.$el.trigger('calendar:close', calendar);\n    }\n    if (calendar.$inputEl) {\n      calendar.$inputEl.trigger('calendar:close', calendar);\n    }\n    calendar.emit('local::close calendarClose', calendar);\n  };\n  Calendar.prototype.onClosed = function onClosed () {\n    var calendar = this;\n    calendar.opened = false;\n\n    if (!calendar.inline) {\n      Utils.nextTick(function () {\n        if (calendar.modal && calendar.modal.el && calendar.modal.destroy) {\n          if (!calendar.params.routableModals) {\n            calendar.modal.destroy();\n          }\n        }\n        delete calendar.modal;\n      });\n    }\n    if (calendar.$el) {\n      calendar.$el.trigger('calendar:closed', calendar);\n    }\n    if (calendar.$inputEl) {\n      calendar.$inputEl.trigger('calendar:closed', calendar);\n    }\n    calendar.emit('local::closed calendarClosed', calendar);\n  };\n  Calendar.prototype.open = function open () {\n    var obj;\n\n    var calendar = this;\n    var app = calendar.app;\n    var opened = calendar.opened;\n    var inline = calendar.inline;\n    var $inputEl = calendar.$inputEl;\n    var params = calendar.params;\n    if (opened) { return; }\n\n    if (inline) {\n      calendar.$el = $$1$1(calendar.render());\n      calendar.$el[0].f7Calendar = calendar;\n      calendar.$wrapperEl = calendar.$el.find('.calendar-months-wrapper');\n      calendar.$months = calendar.$wrapperEl.find('.calendar-month');\n      calendar.$containerEl.append(calendar.$el);\n      calendar.onOpen();\n      calendar.onOpened();\n      return;\n    }\n    var modalType = params.openIn;\n    if (modalType === 'auto') {\n      modalType = calendar.isPopover() ? 'popover' : 'sheet';\n    }\n    var modalContent = calendar.render();\n\n    var modalParams = {\n      targetEl: $inputEl,\n      scrollToEl: calendar.params.scrollToInput ? $inputEl : undefined,\n      content: modalContent,\n      backdrop: modalType !== 'sheet',\n      on: {\n        open: function open() {\n          var modal = this;\n          calendar.modal = modal;\n          calendar.$el = modalType === 'popover' ? modal.$el.find('.calendar') : modal.$el;\n          calendar.$wrapperEl = calendar.$el.find('.calendar-months-wrapper');\n          calendar.$months = calendar.$wrapperEl.find('.calendar-month');\n          calendar.$el[0].f7Calendar = calendar;\n          if (modalType === 'customModal') {\n            $$1$1(calendar.$el).find('.calendar-close').once('click', function () {\n              calendar.close();\n            });\n          }\n          calendar.onOpen();\n        },\n        opened: function opened() { calendar.onOpened(); },\n        close: function close() { calendar.onClose(); },\n        closed: function closed() { calendar.onClosed(); },\n      },\n    };\n    if (calendar.params.routableModals) {\n      calendar.view.router.navigate({\n        url: calendar.url,\n        route: ( obj = {\n          path: calendar.url\n        }, obj[modalType] = modalParams, obj ),\n      });\n    } else {\n      calendar.modal = app[modalType].create(modalParams);\n      calendar.modal.open();\n    }\n  };\n  Calendar.prototype.close = function close () {\n    var calendar = this;\n    var opened = calendar.opened;\n    var inline = calendar.inline;\n    if (!opened) { return; }\n    if (inline) {\n      calendar.onClose();\n      calendar.onClosed();\n      return;\n    }\n    if (calendar.params.routableModals) {\n      calendar.view.router.back();\n    } else {\n      calendar.modal.close();\n    }\n  };\n  Calendar.prototype.init = function init () {\n    var calendar = this;\n\n    calendar.initInput();\n\n    if (calendar.inline) {\n      calendar.open();\n      calendar.emit('local::init calendarInit', calendar);\n      return;\n    }\n\n    if (!calendar.initialized && calendar.params.value) {\n      calendar.setValue(calendar.params.value);\n    }\n\n    // Attach input Events\n    if (calendar.$inputEl) {\n      calendar.attachInputEvents();\n    }\n    if (calendar.params.closeByOutsideClick) {\n      calendar.attachHtmlEvents();\n    }\n    calendar.emit('local::init calendarInit', calendar);\n  };\n  Calendar.prototype.destroy = function destroy () {\n    var calendar = this;\n    if (calendar.destroyed) { return; }\n    var $el = calendar.$el;\n    calendar.emit('local::beforeDestroy calendarBeforeDestroy', calendar);\n    if ($el) { $el.trigger('calendar:beforedestroy', calendar); }\n\n    calendar.close();\n\n    // Detach Events\n    if (calendar.$inputEl) {\n      calendar.detachInputEvents();\n    }\n    if (calendar.params.closeByOutsideClick) {\n      calendar.detachHtmlEvents();\n    }\n\n    if ($el && $el.length) { delete calendar.$el[0].f7Calendar; }\n    Utils.deleteProps(calendar);\n    calendar.destroyed = true;\n  };\n\n  return Calendar;\n}(Framework7Class));\n\nvar Calendar = {\n  name: 'calendar',\n  static: {\n    Calendar: Calendar$1,\n  },\n  create: function create() {\n    var app = this;\n    app.calendar = ConstructorMethods({\n      defaultSelector: '.calendar',\n      constructor: Calendar$1,\n      app: app,\n      domProp: 'f7Calendar',\n    });\n    app.calendar.close = function close(el) {\n      if ( el === void 0 ) el = '.calendar';\n\n      var $el = $$1$1(el);\n      if ($el.length === 0) { return; }\n      var calendar = $el[0].f7Calendar;\n      if (!calendar || (calendar && !calendar.opened)) { return; }\n      calendar.close();\n    };\n  },\n  params: {\n    calendar: {\n      // Calendar settings\n      monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n      monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n      dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n      dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n      firstDay: 1, // First day of the week, Monday\n      weekendDays: [0, 6], // Sunday and Saturday\n      multiple: false,\n      rangePicker: false,\n      dateFormat: 'yyyy-mm-dd',\n      direction: 'horizontal', // or 'vertical'\n      minDate: null,\n      maxDate: null,\n      disabled: null, // dates range of disabled days\n      events: null, // dates range of days with events\n      rangesClasses: null, // array with custom classes date ranges\n      touchMove: true,\n      animate: true,\n      closeOnSelect: false,\n      monthSelector: true,\n      yearSelector: true,\n      weekHeader: true,\n      value: null,\n      // Common opener settings\n      containerEl: null,\n      openIn: 'auto', // or 'popover' or 'sheet' or 'customModal'\n      formatValue: null,\n      inputEl: null,\n      inputReadOnly: true,\n      closeByOutsideClick: true,\n      scrollToInput: true,\n      header: false,\n      headerPlaceholder: 'Select date',\n      footer: false,\n      toolbar: true,\n      toolbarCloseText: 'Done',\n      cssClass: null,\n      routableModals: true,\n      view: null,\n      url: 'date/',\n      // Render functions\n      renderWeekHeader: null,\n      renderMonths: null,\n      renderMonth: null,\n      renderMonthSelector: null,\n      renderYearSelector: null,\n      renderHeader: null,\n      renderFooter: null,\n      renderToolbar: null,\n      renderInline: null,\n      renderPopover: null,\n      renderSheet: null,\n      render: null,\n    },\n  },\n};\n\nvar pickerColumn = function (colEl, updateItems) {\n  var picker = this;\n  var app = picker.app;\n  var $colEl = $$1$1(colEl);\n  var colIndex = $colEl.index();\n  var col = picker.cols[colIndex];\n  if (col.divider) { return; }\n\n  col.$el = $colEl;\n  col.el = $colEl[0];\n  col.$itemsEl = col.$el.find('.picker-items');\n  col.items = col.$itemsEl.find('.picker-item');\n\n  var itemHeight;\n  var itemsHeight;\n  var minTranslate;\n  var maxTranslate;\n  var animationFrameId;\n\n  function updateDuringScroll() {\n    animationFrameId = Utils.requestAnimationFrame(function () {\n      col.updateItems(undefined, undefined, 0);\n      updateDuringScroll();\n    });\n  }\n\n  col.replaceValues = function replaceColValues(values, displayValues) {\n    col.detachEvents();\n    col.values = values;\n    col.displayValues = displayValues;\n    col.$itemsEl.html(picker.renderColumn(col, true));\n    col.items = col.$itemsEl.find('.picker-item');\n    col.calcSize();\n    col.setValue(col.values[0], 0, true);\n    col.attachEvents();\n  };\n  col.calcSize = function calcColSize() {\n    if (picker.params.rotateEffect) {\n      col.$el.removeClass('picker-column-absolute');\n      if (!col.width) { col.$el.css({ width: '' }); }\n    }\n    var colWidth = 0;\n    var colHeight = col.$el[0].offsetHeight;\n    itemHeight = col.items[0].offsetHeight;\n    itemsHeight = itemHeight * col.items.length;\n    minTranslate = ((colHeight / 2) - itemsHeight) + (itemHeight / 2);\n    maxTranslate = (colHeight / 2) - (itemHeight / 2);\n    if (col.width) {\n      colWidth = col.width;\n      if (parseInt(colWidth, 10) === colWidth) { colWidth += 'px'; }\n      col.$el.css({ width: colWidth });\n    }\n    if (picker.params.rotateEffect) {\n      if (!col.width) {\n        col.items.each(function (index, itemEl) {\n          var item = $$1$1(itemEl).children('span');\n          colWidth = Math.max(colWidth, item[0].offsetWidth);\n        });\n        col.$el.css({ width: ((colWidth + 2) + \"px\") });\n      }\n      col.$el.addClass('picker-column-absolute');\n    }\n  };\n\n  col.setValue = function setColValue(newValue, transition, valueCallbacks) {\n    if ( transition === void 0 ) transition = '';\n\n    var newActiveIndex = col.$itemsEl.find((\".picker-item[data-picker-value=\\\"\" + newValue + \"\\\"]\")).index();\n    if (typeof newActiveIndex === 'undefined' || newActiveIndex === -1) {\n      return;\n    }\n    var newTranslate = (-newActiveIndex * itemHeight) + maxTranslate;\n    // Update wrapper\n    col.$itemsEl.transition(transition);\n    col.$itemsEl.transform((\"translate3d(0,\" + newTranslate + \"px,0)\"));\n\n    // Watch items\n    if (picker.params.updateValuesOnMomentum && col.activeIndex && col.activeIndex !== newActiveIndex) {\n      Utils.cancelAnimationFrame(animationFrameId);\n      col.$itemsEl.transitionEnd(function () {\n        Utils.cancelAnimationFrame(animationFrameId);\n      });\n      updateDuringScroll();\n    }\n\n    // Update items\n    col.updateItems(newActiveIndex, newTranslate, transition, valueCallbacks);\n  };\n\n  col.updateItems = function updateColItems(activeIndex, translate, transition, valueCallbacks) {\n    if (typeof translate === 'undefined') {\n      // eslint-disable-next-line\n      translate = Utils.getTranslate(col.$itemsEl[0], 'y');\n    }\n    // eslint-disable-next-line\n    if (typeof activeIndex === 'undefined') { activeIndex = -Math.round((translate - maxTranslate) / itemHeight); }\n    // eslint-disable-next-line\n    if (activeIndex < 0) { activeIndex = 0; }\n    // eslint-disable-next-line\n    if (activeIndex >= col.items.length) { activeIndex = col.items.length - 1; }\n    var previousActiveIndex = col.activeIndex;\n    col.activeIndex = activeIndex;\n    col.$itemsEl.find('.picker-item-selected').removeClass('picker-item-selected');\n\n    col.items.transition(transition);\n\n    var selectedItem = col.items.eq(activeIndex).addClass('picker-item-selected').transform('');\n\n    // Set 3D rotate effect\n    if (picker.params.rotateEffect) {\n      col.items.each(function (index, itemEl) {\n        var $itemEl = $$1$1(itemEl);\n        var itemOffsetTop = $itemEl.index() * itemHeight;\n        var translateOffset = maxTranslate - translate;\n        var itemOffset = itemOffsetTop - translateOffset;\n        var percentage = itemOffset / itemHeight;\n        var itemsFit = Math.ceil(col.height / itemHeight / 2) + 1;\n\n        var angle = (-18 * percentage);\n        if (angle > 180) { angle = 180; }\n        if (angle < -180) { angle = -180; }\n        if (Math.abs(percentage) > itemsFit) {\n          $itemEl.addClass('picker-item-far');\n        } else {\n          $itemEl.removeClass('picker-item-far');\n        }\n        $itemEl.transform((\"translate3d(0, \" + (-translate + maxTranslate) + \"px, \" + (picker.needsOriginFix ? -110 : 0) + \"px) rotateX(\" + angle + \"deg)\"));\n      });\n    }\n\n    if (valueCallbacks || typeof valueCallbacks === 'undefined') {\n      // Update values\n      col.value = selectedItem.attr('data-picker-value');\n      col.displayValue = col.displayValues ? col.displayValues[activeIndex] : col.value;\n      // On change callback\n      if (previousActiveIndex !== activeIndex) {\n        if (col.onChange) {\n          col.onChange(picker, col.value, col.displayValue);\n        }\n        picker.updateValue();\n      }\n    }\n  };\n\n  var allowItemClick = true;\n  var isTouched;\n  var isMoved;\n  var touchStartY;\n  var touchCurrentY;\n  var touchStartTime;\n  var touchEndTime;\n  var startTranslate;\n  var returnTo;\n  var currentTranslate;\n  var prevTranslate;\n  var velocityTranslate;\n  function handleTouchStart(e) {\n    if (isMoved || isTouched) { return; }\n    e.preventDefault();\n    isTouched = true;\n    touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n    touchCurrentY = touchStartY;\n    touchStartTime = (new Date()).getTime();\n\n    allowItemClick = true;\n    startTranslate = Utils.getTranslate(col.$itemsEl[0], 'y');\n    currentTranslate = startTranslate;\n  }\n  function handleTouchMove(e) {\n    if (!isTouched) { return; }\n    e.preventDefault();\n    allowItemClick = false;\n    touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n    if (!isMoved) {\n      // First move\n      Utils.cancelAnimationFrame(animationFrameId);\n      isMoved = true;\n      startTranslate = Utils.getTranslate(col.$itemsEl[0], 'y');\n      currentTranslate = startTranslate;\n      col.$itemsEl.transition(0);\n    }\n\n    var diff = touchCurrentY - touchStartY;\n    currentTranslate = startTranslate + diff;\n    returnTo = undefined;\n\n    // Normalize translate\n    if (currentTranslate < minTranslate) {\n      currentTranslate = minTranslate - (Math.pow( (minTranslate - currentTranslate), 0.8 ));\n      returnTo = 'min';\n    }\n    if (currentTranslate > maxTranslate) {\n      currentTranslate = maxTranslate + (Math.pow( (currentTranslate - maxTranslate), 0.8 ));\n      returnTo = 'max';\n    }\n    // Transform wrapper\n    col.$itemsEl.transform((\"translate3d(0,\" + currentTranslate + \"px,0)\"));\n\n    // Update items\n    col.updateItems(undefined, currentTranslate, 0, picker.params.updateValuesOnTouchmove);\n\n    // Calc velocity\n    velocityTranslate = currentTranslate - prevTranslate || currentTranslate;\n    prevTranslate = currentTranslate;\n  }\n  function handleTouchEnd() {\n    if (!isTouched || !isMoved) {\n      isTouched = false;\n      isMoved = false;\n      return;\n    }\n    isTouched = false;\n    isMoved = false;\n    col.$itemsEl.transition('');\n    if (returnTo) {\n      if (returnTo === 'min') {\n        col.$itemsEl.transform((\"translate3d(0,\" + minTranslate + \"px,0)\"));\n      } else { col.$itemsEl.transform((\"translate3d(0,\" + maxTranslate + \"px,0)\")); }\n    }\n    touchEndTime = new Date().getTime();\n    var newTranslate;\n    if (touchEndTime - touchStartTime > 300) {\n      newTranslate = currentTranslate;\n    } else {\n      newTranslate = currentTranslate + (velocityTranslate * picker.params.momentumRatio);\n    }\n\n    newTranslate = Math.max(Math.min(newTranslate, maxTranslate), minTranslate);\n\n    // Active Index\n    var activeIndex = -Math.floor((newTranslate - maxTranslate) / itemHeight);\n\n    // Normalize translate\n    if (!picker.params.freeMode) { newTranslate = (-activeIndex * itemHeight) + maxTranslate; }\n\n    // Transform wrapper\n    col.$itemsEl.transform((\"translate3d(0,\" + (parseInt(newTranslate, 10)) + \"px,0)\"));\n\n    // Update items\n    col.updateItems(activeIndex, newTranslate, '', true);\n\n    // Watch items\n    if (picker.params.updateValuesOnMomentum) {\n      updateDuringScroll();\n      col.$itemsEl.transitionEnd(function () {\n        Utils.cancelAnimationFrame(animationFrameId);\n      });\n    }\n\n    // Allow click\n    setTimeout(function () {\n      allowItemClick = true;\n    }, 100);\n  }\n\n  function handleClick() {\n    if (!allowItemClick) { return; }\n    Utils.cancelAnimationFrame(animationFrameId);\n    var value = $$1$1(this).attr('data-picker-value');\n    col.setValue(value);\n  }\n\n  var activeListener = app.support.passiveListener ? { passive: false, capture: false } : false;\n  col.attachEvents = function attachColEvents() {\n    col.$el.on(app.touchEvents.start, handleTouchStart, activeListener);\n    app.on('touchmove:active', handleTouchMove);\n    app.on('touchend:passive', handleTouchEnd);\n    col.items.on('click', handleClick);\n  };\n  col.detachEvents = function detachColEvents() {\n    col.$el.off(app.touchEvents.start, handleTouchStart, activeListener);\n    app.off('touchmove:active', handleTouchMove);\n    app.off('touchend:passive', handleTouchEnd);\n    col.items.off('click', handleClick);\n  };\n\n  col.init = function initCol() {\n    col.calcSize();\n    col.$itemsEl.transform((\"translate3d(0,\" + maxTranslate + \"px,0)\")).transition(0);\n    if (colIndex === 0) { col.$el.addClass('picker-column-first'); }\n    if (colIndex === picker.cols.length - 1) { col.$el.addClass('picker-column-last'); }\n    // Update items on init\n    if (updateItems) { col.updateItems(0, maxTranslate, 0); }\n\n    col.attachEvents();\n  };\n\n  col.destroy = function destroyCol() {\n    col.detachEvents();\n  };\n\n  col.init();\n};\n\nvar Picker$1 = (function (Framework7Class$$1) {\n  function Picker(app, params) {\n    if ( params === void 0 ) params = {};\n\n    Framework7Class$$1.call(this, params, [app]);\n    var picker = this;\n    picker.params = Utils.extend({}, app.params.picker, params);\n\n    var $containerEl;\n    if (picker.params.containerEl) {\n      $containerEl = $$1$1(picker.params.containerEl);\n      if ($containerEl.length === 0) { return picker; }\n    }\n\n    var $inputEl;\n    if (picker.params.inputEl) {\n      $inputEl = $$1$1(picker.params.inputEl);\n    }\n\n    var view;\n    if ($inputEl) {\n      view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;\n    }\n    if (!view) { view = app.views.main; }\n\n    Utils.extend(picker, {\n      app: app,\n      $containerEl: $containerEl,\n      containerEl: $containerEl && $containerEl[0],\n      inline: $containerEl && $containerEl.length > 0,\n      needsOriginFix: app.device.ios || ((window.navigator.userAgent.toLowerCase().indexOf('safari') >= 0 && window.navigator.userAgent.toLowerCase().indexOf('chrome') < 0) && !app.device.android),\n      cols: [],\n      $inputEl: $inputEl,\n      inputEl: $inputEl && $inputEl[0],\n      initialized: false,\n      opened: false,\n      url: picker.params.url,\n      view: view,\n    });\n\n    function onResize() {\n      picker.resizeCols();\n    }\n    function onInputClick() {\n      picker.open();\n    }\n    function onInputFocus(e) {\n      e.preventDefault();\n    }\n    function onHtmlClick(e) {\n      var $targetEl = $$1$1(e.target);\n      if (picker.isPopover()) { return; }\n      if (!picker.opened) { return; }\n      if ($targetEl.closest('[class*=\"backdrop\"]').length) { return; }\n      if ($inputEl && $inputEl.length > 0) {\n        if ($targetEl[0] !== $inputEl[0] && $targetEl.closest('.sheet-modal').length === 0) {\n          picker.close();\n        }\n      } else if ($$1$1(e.target).closest('.sheet-modal').length === 0) {\n        picker.close();\n      }\n    }\n\n    // Events\n    Utils.extend(picker, {\n      attachResizeEvent: function attachResizeEvent() {\n        app.on('resize', onResize);\n      },\n      detachResizeEvent: function detachResizeEvent() {\n        app.off('resize', onResize);\n      },\n      attachInputEvents: function attachInputEvents() {\n        picker.$inputEl.on('click', onInputClick);\n        if (picker.params.inputReadOnly) {\n          picker.$inputEl.on('focus mousedown', onInputFocus);\n        }\n      },\n      detachInputEvents: function detachInputEvents() {\n        picker.$inputEl.off('click', onInputClick);\n        if (picker.params.inputReadOnly) {\n          picker.$inputEl.off('focus mousedown', onInputFocus);\n        }\n      },\n      attachHtmlEvents: function attachHtmlEvents() {\n        app.on('click', onHtmlClick);\n      },\n      detachHtmlEvents: function detachHtmlEvents() {\n        app.off('click', onHtmlClick);\n      },\n    });\n\n    picker.init();\n\n    return picker;\n  }\n\n  if ( Framework7Class$$1 ) Picker.__proto__ = Framework7Class$$1;\n  Picker.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n  Picker.prototype.constructor = Picker;\n  Picker.prototype.initInput = function initInput () {\n    var picker = this;\n    if (!picker.$inputEl) { return; }\n    if (picker.params.inputReadOnly) { picker.$inputEl.prop('readOnly', true); }\n  };\n  Picker.prototype.resizeCols = function resizeCols () {\n    var picker = this;\n    if (!picker.opened) { return; }\n    for (var i = 0; i < picker.cols.length; i += 1) {\n      if (!picker.cols[i].divider) {\n        picker.cols[i].calcSize();\n        picker.cols[i].setValue(picker.cols[i].value, 0, false);\n      }\n    }\n  };\n  Picker.prototype.isPopover = function isPopover () {\n    var picker = this;\n    var app = picker.app;\n    var modal = picker.modal;\n    var params = picker.params;\n    if (params.openIn === 'sheet') { return false; }\n    if (modal && modal.type !== 'popover') { return false; }\n\n    if (!picker.inline && picker.inputEl) {\n      if (params.openIn === 'popover') { return true; }\n      else if (app.device.ios) {\n        return !!app.device.ipad;\n      } else if (app.width >= 768) {\n        return true;\n      }\n    }\n    return false;\n  };\n  Picker.prototype.formatValue = function formatValue () {\n    var picker = this;\n    var value = picker.value;\n    var displayValue = picker.displayValue;\n    if (picker.params.formatValue) {\n      return picker.params.formatValue.call(picker, value, displayValue);\n    }\n    return value.join(' ');\n  };\n  Picker.prototype.setValue = function setValue (values, transition) {\n    var picker = this;\n    var valueIndex = 0;\n    if (picker.cols.length === 0) {\n      picker.value = values;\n      picker.updateValue(values);\n      return;\n    }\n    for (var i = 0; i < picker.cols.length; i += 1) {\n      if (picker.cols[i] && !picker.cols[i].divider) {\n        picker.cols[i].setValue(values[valueIndex], transition);\n        valueIndex += 1;\n      }\n    }\n  };\n  Picker.prototype.getValue = function getValue () {\n    var picker = this;\n    return picker.value;\n  };\n  Picker.prototype.updateValue = function updateValue (forceValues) {\n    var picker = this;\n    var newValue = forceValues || [];\n    var newDisplayValue = [];\n    var column;\n    if (picker.cols.length === 0) {\n      var noDividerColumns = picker.params.cols.filter(function (c) { return !c.divider; });\n      for (var i = 0; i < noDividerColumns.length; i += 1) {\n        column = noDividerColumns[i];\n        if (column.displayValues !== undefined && column.values !== undefined && column.values.indexOf(newValue[i]) !== -1) {\n          newDisplayValue.push(column.displayValues[column.values.indexOf(newValue[i])]);\n        } else {\n          newDisplayValue.push(newValue[i]);\n        }\n      }\n    } else {\n      for (var i$1 = 0; i$1 < picker.cols.length; i$1 += 1) {\n        if (!picker.cols[i$1].divider) {\n          newValue.push(picker.cols[i$1].value);\n          newDisplayValue.push(picker.cols[i$1].displayValue);\n        }\n      }\n    }\n\n    if (newValue.indexOf(undefined) >= 0) {\n      return;\n    }\n    picker.value = newValue;\n    picker.displayValue = newDisplayValue;\n    if (picker.params.onChange) {\n      picker.emit('local::change pickerChange', picker, picker.value, picker.displayValue);\n    }\n    if (picker.inputEl) {\n      picker.$inputEl.val(picker.formatValue());\n      picker.$inputEl.trigger('change');\n    }\n  };\n  Picker.prototype.initColumn = function initColumn (colEl, updateItems) {\n    var picker = this;\n    pickerColumn.call(picker, colEl, updateItems);\n  };\n  // eslint-disable-next-line\n  Picker.prototype.destroyColumn = function destroyColumn (colEl) {\n    var picker = this;\n    var $colEl = $$1$1(colEl);\n    var index = $colEl.index();\n    if (picker.cols[index] && picker.cols[index].destroy) {\n      picker.cols[index].destroy();\n    }\n  };\n  Picker.prototype.renderToolbar = function renderToolbar () {\n    var picker = this;\n    if (picker.params.renderToolbar) { return picker.params.renderToolbar.call(picker, picker); }\n    return (\"\\n      <div class=\\\"toolbar no-shadow\\\">\\n        <div class=\\\"toolbar-inner\\\">\\n          <div class=\\\"left\\\"></div>\\n          <div class=\\\"right\\\">\\n            <a href=\\\"#\\\" class=\\\"link sheet-close popover-close\\\">\" + (picker.params.toolbarCloseText) + \"</a>\\n          </div>\\n        </div>\\n      </div>\\n    \").trim();\n  };\n  // eslint-disable-next-line\n  Picker.prototype.renderColumn = function renderColumn (col, onlyItems) {\n    var colClasses = \"picker-column \" + (col.textAlign ? (\"picker-column-\" + (col.textAlign)) : '') + \" \" + (col.cssClass || '');\n    var columnHtml;\n    var columnItemsHtml;\n\n    if (col.divider) {\n      columnHtml = \"\\n        <div class=\\\"\" + colClasses + \" picker-column-divider\\\">\" + (col.content) + \"</div>\\n      \";\n    } else {\n      columnItemsHtml = col.values.map(function (value, index) { return (\"\\n        <div class=\\\"picker-item\\\" data-picker-value=\\\"\" + value + \"\\\">\\n          <span>\" + (col.displayValues ? col.displayValues[index] : value) + \"</span>\\n        </div>\\n      \"); }).join('');\n      columnHtml = \"\\n        <div class=\\\"\" + colClasses + \"\\\">\\n          <div class=\\\"picker-items\\\">\" + columnItemsHtml + \"</div>\\n        </div>\\n      \";\n    }\n\n    return onlyItems ? columnItemsHtml.trim() : columnHtml.trim();\n  };\n  Picker.prototype.renderInline = function renderInline () {\n    var picker = this;\n    var ref = picker.params;\n    var rotateEffect = ref.rotateEffect;\n    var cssClass = ref.cssClass;\n    var toolbar = ref.toolbar;\n    var inlineHtml = (\"\\n      <div class=\\\"picker picker-inline \" + (rotateEffect ? 'picker-3d' : '') + \" \" + (cssClass || '') + \"\\\">\\n        \" + (toolbar ? picker.renderToolbar() : '') + \"\\n        <div class=\\\"picker-columns\\\">\\n          \" + (picker.cols.map(function (col) { return picker.renderColumn(col); }).join('')) + \"\\n          <div class=\\\"picker-center-highlight\\\"></div>\\n        </div>\\n      </div>\\n    \").trim();\n\n    return inlineHtml;\n  };\n  Picker.prototype.renderSheet = function renderSheet () {\n    var picker = this;\n    var ref = picker.params;\n    var rotateEffect = ref.rotateEffect;\n    var cssClass = ref.cssClass;\n    var toolbar = ref.toolbar;\n    var sheetHtml = (\"\\n      <div class=\\\"sheet-modal picker picker-sheet \" + (rotateEffect ? 'picker-3d' : '') + \" \" + (cssClass || '') + \"\\\">\\n        \" + (toolbar ? picker.renderToolbar() : '') + \"\\n        <div class=\\\"sheet-modal-inner picker-columns\\\">\\n          \" + (picker.cols.map(function (col) { return picker.renderColumn(col); }).join('')) + \"\\n          <div class=\\\"picker-center-highlight\\\"></div>\\n        </div>\\n      </div>\\n    \").trim();\n\n    return sheetHtml;\n  };\n  Picker.prototype.renderPopover = function renderPopover () {\n    var picker = this;\n    var ref = picker.params;\n    var rotateEffect = ref.rotateEffect;\n    var cssClass = ref.cssClass;\n    var toolbar = ref.toolbar;\n    var popoverHtml = (\"\\n      <div class=\\\"popover picker-popover\\\">\\n        <div class=\\\"popover-inner\\\">\\n          <div class=\\\"picker \" + (rotateEffect ? 'picker-3d' : '') + \" \" + (cssClass || '') + \"\\\">\\n            \" + (toolbar ? picker.renderToolbar() : '') + \"\\n            <div class=\\\"picker-columns\\\">\\n              \" + (picker.cols.map(function (col) { return picker.renderColumn(col); }).join('')) + \"\\n              <div class=\\\"picker-center-highlight\\\"></div>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    \").trim();\n\n    return popoverHtml;\n  };\n  Picker.prototype.render = function render () {\n    var picker = this;\n    if (picker.params.render) { return picker.params.render.call(picker); }\n    if (!picker.inline) {\n      if (picker.isPopover()) { return picker.renderPopover(); }\n      return picker.renderSheet();\n    }\n    return picker.renderInline();\n  };\n  Picker.prototype.onOpen = function onOpen () {\n    var picker = this;\n    var initialized = picker.initialized;\n    var $el = picker.$el;\n    var app = picker.app;\n    var $inputEl = picker.$inputEl;\n    var inline = picker.inline;\n    var value = picker.value;\n    var params = picker.params;\n    picker.opened = true;\n\n    // Init main events\n    picker.attachResizeEvent();\n\n    // Init cols\n    $el.find('.picker-column').each(function (index, colEl) {\n      var updateItems = true;\n      if (\n        (!initialized && params.value) ||\n        (initialized && value)\n      ) {\n        updateItems = false;\n      }\n      picker.initColumn(colEl, updateItems);\n    });\n\n    // Set value\n    if (!initialized) {\n      if (value) { picker.setValue(value, 0); }\n      else if (params.value) {\n        picker.setValue(params.value, 0);\n      }\n    } else if (value) {\n      picker.setValue(value, 0);\n    }\n\n    // Extra focus\n    if (!inline && $inputEl.length && app.theme === 'md') {\n      $inputEl.trigger('focus');\n    }\n\n    picker.initialized = true;\n\n    // Trigger events\n    if ($el) {\n      $el.trigger('picker:open', picker);\n    }\n    if ($inputEl) {\n      $inputEl.trigger('picker:open', picker);\n    }\n    picker.emit('local::open pickerOpen', picker);\n  };\n  Picker.prototype.onOpened = function onOpened () {\n    var picker = this;\n\n    if (picker.$el) {\n      picker.$el.trigger('picker:opened', picker);\n    }\n    if (picker.$inputEl) {\n      picker.$inputEl.trigger('picker:opened', picker);\n    }\n    picker.emit('local::opened pickerOpened', picker);\n  };\n  Picker.prototype.onClose = function onClose () {\n    var picker = this;\n    var app = picker.app;\n\n    // Detach events\n    picker.detachResizeEvent();\n\n    picker.cols.forEach(function (col) {\n      if (col.destroy) { col.destroy(); }\n    });\n    if (picker.$inputEl && app.theme === 'md') {\n      picker.$inputEl.trigger('blur');\n    }\n\n    if (picker.$el) {\n      picker.$el.trigger('picker:close', picker);\n    }\n    if (picker.$inputEl) {\n      picker.$inputEl.trigger('picker:close', picker);\n    }\n    picker.emit('local::close pickerClose', picker);\n  };\n  Picker.prototype.onClosed = function onClosed () {\n    var picker = this;\n    picker.opened = false;\n\n    if (!picker.inline) {\n      Utils.nextTick(function () {\n        if (picker.modal && picker.modal.el && picker.modal.destroy) {\n          if (!picker.params.routableModals) {\n            picker.modal.destroy();\n          }\n        }\n        delete picker.modal;\n      });\n    }\n\n    if (picker.$el) {\n      picker.$el.trigger('picker:closed', picker);\n    }\n    if (picker.$inputEl) {\n      picker.$inputEl.trigger('picker:closed', picker);\n    }\n    picker.emit('local::closed pickerClosed', picker);\n  };\n  Picker.prototype.open = function open () {\n    var obj;\n\n    var picker = this;\n    var app = picker.app;\n    var opened = picker.opened;\n    var inline = picker.inline;\n    var $inputEl = picker.$inputEl;\n    if (opened) { return; }\n    if (picker.cols.length === 0 && picker.params.cols.length) {\n      picker.params.cols.forEach(function (col) {\n        picker.cols.push(col);\n      });\n    }\n    if (inline) {\n      picker.$el = $$1$1(picker.render());\n      picker.$el[0].f7Picker = picker;\n      picker.$containerEl.append(picker.$el);\n      picker.onOpen();\n      picker.onOpened();\n      return;\n    }\n    var isPopover = picker.isPopover();\n    var modalType = isPopover ? 'popover' : 'sheet';\n    var modalParams = {\n      targetEl: $inputEl,\n      scrollToEl: picker.params.scrollToInput ? $inputEl : undefined,\n      content: picker.render(),\n      backdrop: isPopover,\n      on: {\n        open: function open() {\n          var modal = this;\n          picker.modal = modal;\n          picker.$el = isPopover ? modal.$el.find('.picker') : modal.$el;\n          picker.$el[0].f7Picker = picker;\n          picker.onOpen();\n        },\n        opened: function opened() { picker.onOpened(); },\n        close: function close() { picker.onClose(); },\n        closed: function closed() { picker.onClosed(); },\n      },\n    };\n    if (picker.params.routableModals) {\n      picker.view.router.navigate({\n        url: picker.url,\n        route: ( obj = {\n          path: picker.url\n        }, obj[modalType] = modalParams, obj ),\n      });\n    } else {\n      picker.modal = app[modalType].create(modalParams);\n      picker.modal.open();\n    }\n  };\n  Picker.prototype.close = function close () {\n    var picker = this;\n    var opened = picker.opened;\n    var inline = picker.inline;\n    if (!opened) { return; }\n    if (inline) {\n      picker.onClose();\n      picker.onClosed();\n      return;\n    }\n    if (picker.params.routableModals) {\n      picker.view.router.back();\n    } else {\n      picker.modal.close();\n    }\n  };\n  Picker.prototype.init = function init () {\n    var picker = this;\n\n    picker.initInput();\n\n    if (picker.inline) {\n      picker.open();\n      picker.emit('local::init pickerInit', picker);\n      return;\n    }\n\n    if (!picker.initialized && picker.params.value) {\n      picker.setValue(picker.params.value);\n    }\n\n    // Attach input Events\n    if (picker.$inputEl) {\n      picker.attachInputEvents();\n    }\n    if (picker.params.closeByOutsideClick) {\n      picker.attachHtmlEvents();\n    }\n    picker.emit('local::init pickerInit', picker);\n  };\n  Picker.prototype.destroy = function destroy () {\n    var picker = this;\n    if (picker.destroyed) { return; }\n    var $el = picker.$el;\n    picker.emit('local::beforeDestroy pickerBeforeDestroy', picker);\n    if ($el) { $el.trigger('picker:beforedestroy', picker); }\n\n    picker.close();\n\n    // Detach Events\n    if (picker.$inputEl) {\n      picker.detachInputEvents();\n    }\n    if (picker.params.closeByOutsideClick) {\n      picker.detachHtmlEvents();\n    }\n\n    if ($el && $el.length) { delete picker.$el[0].f7Picker; }\n    Utils.deleteProps(picker);\n    picker.destroyed = true;\n  };\n\n  return Picker;\n}(Framework7Class));\n\nvar Picker = {\n  name: 'picker',\n  static: {\n    Picker: Picker$1,\n  },\n  create: function create() {\n    var app = this;\n    app.picker = ConstructorMethods({\n      defaultSelector: '.picker',\n      constructor: Picker$1,\n      app: app,\n      domProp: 'f7Picker',\n    });\n    app.picker.close = function close(el) {\n      if ( el === void 0 ) el = '.picker';\n\n      var $el = $$1$1(el);\n      if ($el.length === 0) { return; }\n      var picker = $el[0].f7Picker;\n      if (!picker || (picker && !picker.opened)) { return; }\n      picker.close();\n    };\n  },\n  params: {\n    picker: {\n      // Picker settings\n      updateValuesOnMomentum: false,\n      updateValuesOnTouchmove: true,\n      rotateEffect: false,\n      momentumRatio: 7,\n      freeMode: false,\n      cols: [],\n      // Common opener settings\n      containerEl: null,\n      openIn: 'auto', // or 'popover' or 'sheet'\n      formatValue: null,\n      inputEl: null,\n      inputReadOnly: true,\n      closeByOutsideClick: true,\n      scrollToInput: true,\n      toolbar: true,\n      toolbarCloseText: 'Done',\n      cssClass: null,\n      routableModals: true,\n      view: null,\n      url: 'select/',\n      // Render functions\n      renderToolbar: null,\n      render: null,\n    },\n  },\n};\n\nvar InfiniteScroll = {\n  handleScroll: function handleScroll(el, e) {\n    var app = this;\n    var $el = $$1$1(el);\n    var scrollTop = $el[0].scrollTop;\n    var scrollHeight = $el[0].scrollHeight;\n    var height = $el[0].offsetHeight;\n    var distance = $el[0].getAttribute('data-infinite-distance');\n\n    var virtualListContainer = $el.find('.virtual-list');\n    var virtualList;\n\n    var onTop = $el.hasClass('infinite-scroll-top');\n    if (!distance) { distance = 50; }\n    if (typeof distance === 'string' && distance.indexOf('%') >= 0) {\n      distance = (parseInt(distance, 10) / 100) * height;\n    }\n    if (distance > height) { distance = height; }\n    if (onTop) {\n      if (scrollTop < distance) {\n        $el.trigger('infinite', e);\n        app.emit('infinite', $el[0], e);\n      }\n    } else if (scrollTop + height >= scrollHeight - distance) {\n      if (virtualListContainer.length > 0) {\n        virtualList = virtualListContainer.eq(-1)[0].f7VirtualList;\n        if (virtualList && !virtualList.reachEnd && !virtualList.params.updatableScroll) {\n          return;\n        }\n      }\n      $el.trigger('infinite', e);\n      app.emit('infinite', $el[0], e);\n    }\n  },\n  create: function create(el) {\n    var $el = $$1$1(el);\n    var app = this;\n    $el.on('scroll', function handle(e) {\n      app.infiniteScroll.handle(this, e);\n    });\n  },\n  destroy: function destroy(el) {\n    var $el = $$1$1(el);\n    $el.off('scroll');\n  },\n};\nvar InfiniteScroll$1 = {\n  name: 'infiniteScroll',\n  create: function create() {\n    var app = this;\n    Utils.extend(app, {\n      infiniteScroll: {\n        handle: InfiniteScroll.handleScroll.bind(app),\n        create: InfiniteScroll.create.bind(app),\n        destroy: InfiniteScroll.destroy.bind(app),\n      },\n    });\n  },\n  on: {\n    tabMounted: function tabMounted(tabEl) {\n      var app = this;\n      var $tabEl = $$1$1(tabEl);\n      $tabEl.find('.infinite-scroll-content').each(function (index, el) {\n        app.infiniteScroll.create(el);\n      });\n    },\n    tabBeforeRemove: function tabBeforeRemove(tabEl) {\n      var $tabEl = $$1$1(tabEl);\n      var app = this;\n      $tabEl.find('.infinite-scroll-content').each(function (index, el) {\n        app.infiniteScroll.destroy(el);\n      });\n    },\n    pageInit: function pageInit(page) {\n      var app = this;\n      page.$el.find('.infinite-scroll-content').each(function (index, el) {\n        app.infiniteScroll.create(el);\n      });\n    },\n    pageBeforeRemove: function pageBeforeRemove(page) {\n      var app = this;\n      page.$el.find('.infinite-scroll-content').each(function (index, el) {\n        app.infiniteScroll.destroy(el);\n      });\n    },\n  },\n};\n\nvar PullToRefresh$1 = (function (Framework7Class$$1) {\n  function PullToRefresh(app, el) {\n    Framework7Class$$1.call(this, {}, [app]);\n    var ptr = this;\n    var $el = $$1$1(el);\n    var $preloaderEl = $el.find('.ptr-preloader');\n\n    ptr.$el = $el;\n    ptr.el = $el[0];\n    ptr.app = app;\n\n    // Extend defaults with modules params\n    ptr.useModulesParams({});\n\n    var isMaterial = app.theme === 'md';\n\n    // Done\n    ptr.done = function done() {\n      var $transitionTarget = isMaterial ? $preloaderEl : $el;\n      $transitionTarget.transitionEnd(function () {\n        $el.removeClass('ptr-transitioning ptr-pull-up ptr-pull-down');\n        $el.trigger('ptr:done');\n        ptr.emit('local::done ptrDone', $el[0]);\n      });\n      $el.removeClass('ptr-refreshing').addClass('ptr-transitioning');\n      return ptr;\n    };\n\n    ptr.refresh = function refresh() {\n      if ($el.hasClass('ptr-refreshing')) { return ptr; }\n      $el.addClass('ptr-transitioning ptr-refreshing');\n      $el.trigger('ptr:refresh', ptr.done);\n      ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);\n      return ptr;\n    };\n\n    // Events handling\n    var touchId;\n    var isTouched;\n    var isMoved;\n    var touchesStart = {};\n    var isScrolling;\n    var touchesDiff;\n    var refresh = false;\n    var useTranslate = false;\n    var startTranslate = 0;\n    var translate;\n    var scrollTop;\n    var wasScrolled;\n    var triggerDistance;\n    var dynamicTriggerDistance;\n    var pullStarted;\n    var hasNavbar = false;\n    var $pageEl = $el.parents('.page');\n\n    if ($pageEl.find('.navbar').length > 0 || $pageEl.parents('.view').children('.navbar').length > 0) { hasNavbar = true; }\n    if ($pageEl.hasClass('no-navbar')) { hasNavbar = false; }\n    if (!hasNavbar) { $el.addClass('ptr-no-navbar'); }\n\n    // Define trigger distance\n    if ($el.attr('data-ptr-distance')) {\n      dynamicTriggerDistance = true;\n    } else {\n      triggerDistance = isMaterial ? 66 : 44;\n    }\n\n    function handleTouchStart(e) {\n      if (isTouched) {\n        if (Device.os === 'android') {\n          if ('targetTouches' in e && e.targetTouches.length > 1) { return; }\n        } else { return; }\n      }\n\n      if ($el.hasClass('ptr-refreshing')) {\n        return;\n      }\n      if ($$1$1(e.target).closest('.sortable-handler').length) { return; }\n\n      isMoved = false;\n      pullStarted = false;\n      isTouched = true;\n      isScrolling = undefined;\n      wasScrolled = undefined;\n      if (e.type === 'touchstart') { touchId = e.targetTouches[0].identifier; }\n      touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n      touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n    }\n\n    function handleTouchMove(e) {\n      if (!isTouched) { return; }\n      var pageX;\n      var pageY;\n      var touch;\n      if (e.type === 'touchmove') {\n        if (touchId && e.touches) {\n          for (var i = 0; i < e.touches.length; i += 1) {\n            if (e.touches[i].identifier === touchId) {\n              touch = e.touches[i];\n            }\n          }\n        }\n        if (!touch) { touch = e.targetTouches[0]; }\n        pageX = touch.pageX;\n        pageY = touch.pageY;\n      } else {\n        pageX = e.pageX;\n        pageY = e.pageY;\n      }\n      if (!pageX || !pageY) { return; }\n\n\n      if (typeof isScrolling === 'undefined') {\n        isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n      }\n      if (!isScrolling) {\n        isTouched = false;\n        return;\n      }\n\n      scrollTop = $el[0].scrollTop;\n      if (typeof wasScrolled === 'undefined' && scrollTop !== 0) { wasScrolled = true; }\n\n      if (!isMoved) {\n        $el.removeClass('ptr-transitioning');\n        if (scrollTop > $el[0].offsetHeight) {\n          isTouched = false;\n          return;\n        }\n        if (dynamicTriggerDistance) {\n          triggerDistance = $el.attr('data-ptr-distance');\n          if (triggerDistance.indexOf('%') >= 0) { triggerDistance = ($el[0].offsetHeight * parseInt(triggerDistance, 10)) / 100; }\n        }\n        startTranslate = $el.hasClass('ptr-refreshing') ? triggerDistance : 0;\n        if ($el[0].scrollHeight === $el[0].offsetHeight || Device.os !== 'ios' || isMaterial) {\n          useTranslate = true;\n        } else {\n          useTranslate = false;\n        }\n      }\n      isMoved = true;\n      touchesDiff = pageY - touchesStart.y;\n\n      if ((touchesDiff > 0 && scrollTop <= 0) || scrollTop < 0) {\n        // iOS 8 fix\n        if (Device.os === 'ios' && parseInt(Device.osVersion.split('.')[0], 10) > 7 && scrollTop === 0 && !wasScrolled) { useTranslate = true; }\n\n        if (useTranslate) {\n          e.preventDefault();\n          translate = (Math.pow( touchesDiff, 0.85 )) + startTranslate;\n          if (isMaterial) {\n            $preloaderEl.transform((\"translate3d(0,\" + translate + \"px,0)\"))\n              .find('.ptr-arrow').transform((\"rotate(\" + ((180 * (touchesDiff / 66)) + 100) + \"deg)\"));\n          } else {\n            $el.transform((\"translate3d(0,\" + translate + \"px,0)\"));\n          }\n        }\n        if ((useTranslate && (Math.pow( touchesDiff, 0.85 )) > triggerDistance) || (!useTranslate && touchesDiff >= triggerDistance * 2)) {\n          refresh = true;\n          $el.addClass('ptr-pull-up').removeClass('ptr-pull-down');\n        } else {\n          refresh = false;\n          $el.removeClass('ptr-pull-up').addClass('ptr-pull-down');\n        }\n        if (!pullStarted) {\n          $el.trigger('ptr:pullstart');\n          ptr.emit('local::pullStart ptrPullStart', $el[0]);\n          pullStarted = true;\n        }\n        $el.trigger('ptr:pullmove', {\n          event: e,\n          scrollTop: scrollTop,\n          translate: translate,\n          touchesDiff: touchesDiff,\n        });\n        ptr.emit('local::pullMove ptrPullMove', $el[0], {\n          event: e,\n          scrollTop: scrollTop,\n          translate: translate,\n          touchesDiff: touchesDiff,\n        });\n      } else {\n        pullStarted = false;\n        $el.removeClass('ptr-pull-up ptr-pull-down');\n        refresh = false;\n      }\n    }\n    function handleTouchEnd(e) {\n      if (e.type === 'touchend' && e.changedTouches && e.changedTouches.length > 0 && touchId) {\n        if (e.changedTouches[0].identifier !== touchId) {\n          isTouched = false;\n          isScrolling = false;\n          isMoved = false;\n          touchId = null;\n          return;\n        }\n      }\n      if (!isTouched || !isMoved) {\n        isTouched = false;\n        isMoved = false;\n        return;\n      }\n      if (translate) {\n        $el.addClass('ptr-transitioning');\n        translate = 0;\n      }\n      if (isMaterial) {\n        $preloaderEl.transform('')\n          .find('.ptr-arrow').transform('');\n      } else {\n        $el.transform('');\n      }\n\n      if (refresh) {\n        $el.addClass('ptr-refreshing');\n        $el.trigger('ptr:refresh', ptr.done);\n        ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);\n      } else {\n        $el.removeClass('ptr-pull-down');\n      }\n      isTouched = false;\n      isMoved = false;\n      if (pullStarted) {\n        $el.trigger('ptr:pullend');\n        ptr.emit('local::pullEnd ptrPullEnd', $el[0]);\n      }\n    }\n\n    if (!$pageEl.length || !$el.length) { return ptr; }\n\n    $el[0].f7PullToRefresh = ptr;\n\n    // Events\n    ptr.attachEvents = function attachEvents() {\n      var passive = Support$1.passiveListener ? { passive: true } : false;\n      $el.on(app.touchEvents.start, handleTouchStart, passive);\n      app.on('touchmove', handleTouchMove);\n      app.on('touchend:passive', handleTouchEnd);\n    };\n    ptr.detachEvents = function detachEvents() {\n      var passive = Support$1.passiveListener ? { passive: true } : false;\n      $el.off(app.touchEvents.start, handleTouchStart, passive);\n      app.off('touchmove', handleTouchMove);\n      app.off('touchend:passive', handleTouchEnd);\n    };\n\n    // Install Modules\n    ptr.useModules();\n\n    // Init\n    ptr.init();\n\n    return ptr;\n  }\n\n  if ( Framework7Class$$1 ) PullToRefresh.__proto__ = Framework7Class$$1;\n  PullToRefresh.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n  PullToRefresh.prototype.constructor = PullToRefresh;\n  PullToRefresh.prototype.init = function init () {\n    var ptr = this;\n    ptr.attachEvents();\n  };\n  PullToRefresh.prototype.destroy = function destroy () {\n    var ptr = this;\n    ptr.emit('local::beforeDestroy ptrBeforeDestroy', ptr);\n    ptr.$el.trigger('ptr:beforedestroy', ptr);\n    delete ptr.el.f7PullToRefresh;\n    ptr.detachEvents();\n    Utils.deleteProps(ptr);\n    ptr = null;\n  };\n\n  return PullToRefresh;\n}(Framework7Class));\n\nvar PullToRefresh = {\n  name: 'pullToRefresh',\n  create: function create() {\n    var app = this;\n    app.ptr = Utils.extend(\n      ConstructorMethods({\n        defaultSelector: '.ptr-content',\n        constructor: PullToRefresh$1,\n        app: app,\n        domProp: 'f7PullToRefresh',\n      }),\n      {\n        done: function done(el) {\n          var ptr = app.ptr.get(el);\n          if (ptr) { return ptr.done(); }\n          return undefined;\n        },\n        refresh: function refresh(el) {\n          var ptr = app.ptr.get(el);\n          if (ptr) { return ptr.refresh(); }\n          return undefined;\n        },\n      }\n    );\n  },\n  static: {\n    PullToRefresh: PullToRefresh$1,\n  },\n  on: {\n    tabMounted: function tabMounted(tabEl) {\n      var app = this;\n      var $tabEl = $$1$1(tabEl);\n      $tabEl.find('.ptr-content').each(function (index, el) {\n        app.ptr.create(el);\n      });\n    },\n    tabBeforeRemove: function tabBeforeRemove(tabEl) {\n      var $tabEl = $$1$1(tabEl);\n      var app = this;\n      $tabEl.find('.ptr-content').each(function (index, el) {\n        app.ptr.destroy(el);\n      });\n    },\n    pageInit: function pageInit(page) {\n      var app = this;\n      page.$el.find('.ptr-content').each(function (index, el) {\n        app.ptr.create(el);\n      });\n    },\n    pageBeforeRemove: function pageBeforeRemove(page) {\n      var app = this;\n      page.$el.find('.ptr-content').each(function (index, el) {\n        app.ptr.destroy(el);\n      });\n    },\n  },\n};\n\nvar Lazy = {\n  destroy: function destroy(pageEl) {\n    var $pageEl = $$1$1(pageEl).closest('.page');\n    if (!$pageEl.length) { return; }\n    if ($pageEl[0].f7LazyDestroy) {\n      $pageEl[0].f7LazyDestroy();\n    }\n  },\n  create: function create(pageEl) {\n    var app = this;\n    var $pageEl = $$1$1(pageEl).closest('.page').eq(0);\n\n    // Lazy images\n    var lazyLoadImages = $pageEl.find('.lazy');\n    if (lazyLoadImages.length === 0 && !$pageEl.hasClass('lazy')) { return; }\n\n    // Placeholder\n    var placeholderSrc = app.params.lazy.placeholder;\n\n    if (placeholderSrc !== false) {\n      lazyLoadImages.each(function (index, lazyEl) {\n        if ($$1$1(lazyEl).attr('data-src') && !$$1$1(lazyEl).attr('src')) { $$1$1(lazyEl).attr('src', placeholderSrc); }\n      });\n    }\n\n    // load image\n    var imagesSequence = [];\n    var imageIsLoading = false;\n\n    function onImageComplete(lazyEl) {\n      if (imagesSequence.indexOf(lazyEl) >= 0) {\n        imagesSequence.splice(imagesSequence.indexOf(lazyEl), 1);\n      }\n      imageIsLoading = false;\n      if (app.params.lazy.sequential && imagesSequence.length > 0) {\n        imageIsLoading = true;\n        app.lazy.loadImage(imagesSequence[0], onImageComplete);\n      }\n    }\n\n    function lazyHandler() {\n      app.lazy.load($pageEl, function (lazyEl) {\n        if (app.params.lazy.sequential && imageIsLoading) {\n          if (imagesSequence.indexOf(lazyEl) < 0) { imagesSequence.push(lazyEl); }\n          return;\n        }\n        imageIsLoading = true;\n        app.lazy.loadImage(lazyEl, onImageComplete);\n      });\n    }\n\n    function attachEvents() {\n      $pageEl[0].f7LazyAttached = true;\n      $pageEl.on('lazy', lazyHandler);\n      $pageEl.on('scroll', lazyHandler, true);\n      $pageEl.find('.tab').on('tab:mounted tab:show', lazyHandler);\n      app.on('resize', lazyHandler);\n    }\n    function detachEvents() {\n      $pageEl[0].f7LazyAttached = false;\n      delete $pageEl[0].f7LazyAttached;\n      $pageEl.off('lazy', lazyHandler);\n      $pageEl.off('scroll', lazyHandler, true);\n      $pageEl.find('.tab').off('tab:mounted tab:show', lazyHandler);\n      app.off('resize', lazyHandler);\n    }\n\n    // Store detach function\n    if (!$pageEl[0].f7LazyDestroy) {\n      $pageEl[0].f7LazyDestroy = detachEvents;\n    }\n\n    // Attach events\n    if (!$pageEl[0].f7LazyAttached) {\n      attachEvents();\n    }\n\n    // Run loader on page load/init\n    lazyHandler();\n  },\n  isInViewport: function isInViewport(lazyEl) {\n    var app = this;\n    var rect = lazyEl.getBoundingClientRect();\n    var threshold = app.params.lazy.threshold || 0;\n\n    return (\n      rect.top >= (0 - threshold) &&\n      rect.left >= (0 - threshold) &&\n      rect.top <= (app.height + threshold) &&\n      rect.left <= (app.width + threshold)\n    );\n  },\n  loadImage: function loadImage(imageEl, callback) {\n    var app = this;\n    var $imageEl = $$1$1(imageEl);\n\n    var bg = $imageEl.attr('data-background');\n    var src = bg || $imageEl.attr('data-src');\n    if (!src) { return; }\n    function onLoad() {\n      $imageEl.removeClass('lazy').addClass('lazy-loaded');\n      if (bg) {\n        $imageEl.css('background-image', (\"url(\" + src + \")\"));\n      } else {\n        $imageEl.attr('src', src);\n      }\n      if (callback) { callback(imageEl); }\n      $imageEl.trigger('lazy:loaded');\n      app.emit('lazyLoaded', $imageEl[0]);\n    }\n\n    function onError() {\n      $imageEl.removeClass('lazy').addClass('lazy-loaded');\n      if (bg) {\n        $imageEl.css('background-image', (\"url(\" + (app.params.lazy.placeholder || '') + \")\"));\n      } else {\n        $imageEl.attr('src', app.params.lazy.placeholder || '');\n      }\n      if (callback) { callback(imageEl); }\n      $imageEl.trigger('lazy:error');\n      app.emit('lazyError', $imageEl[0]);\n    }\n    var image = new window.Image();\n    image.onload = onLoad;\n    image.onerror = onError;\n    image.src = src;\n\n    $imageEl.removeAttr('data-src').removeAttr('data-background');\n\n    // Add loaded callback and events\n    $imageEl.trigger('lazy:load');\n    app.emit('lazyLoad', $imageEl[0]);\n  },\n  load: function load(pageEl, callback) {\n    var app = this;\n    var $pageEl = $$1$1(pageEl);\n    if (!$pageEl.hasClass('page')) { $pageEl = $pageEl.parents('.page').eq(0); }\n    if ($pageEl.length === 0) {\n      return;\n    }\n    $pageEl.find('.lazy').each(function (index, lazyEl) {\n      var $lazyEl = $$1$1(lazyEl);\n      if ($lazyEl.parents('.tab:not(.tab-active)').length > 0) {\n        return;\n      }\n      if (app.lazy.isInViewport(lazyEl)) {\n        if (callback) { callback(lazyEl); }\n        else { app.lazy.loadImage(lazyEl); }\n      }\n    });\n  },\n\n};\nvar Lazy$1 = {\n  name: 'lazy',\n  params: {\n    lazy: {\n      placeholder: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEXCwsK592mkAAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==',\n      threshold: 0,\n      sequential: true,\n    },\n  },\n  create: function create() {\n    var app = this;\n    Utils.extend(app, {\n      lazy: {\n        create: Lazy.create.bind(app),\n        destroy: Lazy.destroy.bind(app),\n        loadImage: Lazy.loadImage.bind(app),\n        load: Lazy.load.bind(app),\n        isInViewport: Lazy.isInViewport.bind(app),\n      },\n    });\n  },\n  on: {\n    pageInit: function pageInit(page) {\n      var app = this;\n      if (page.$el.find('.lazy').length > 0 || page.$el.hasClass('lazy')) {\n        app.lazy.create(page.$el);\n      }\n    },\n    pageAfterIn: function pageAfterIn(page) {\n      var app = this;\n      if (page.$el.find('.lazy').length > 0 || page.$el.hasClass('lazy')) {\n        app.lazy.create(page.$el);\n      }\n    },\n    pageBeforeRemove: function pageBeforeRemove(page) {\n      var app = this;\n      if (page.$el.find('.lazy').length > 0 || page.$el.hasClass('lazy')) {\n        app.lazy.destroy(page.$el);\n      }\n    },\n    tabMounted: function tabMounted(tabEl) {\n      var app = this;\n      var $tabEl = $$1$1(tabEl);\n      if ($tabEl.find('.lazy').length > 0 || $tabEl.hasClass('lazy')) {\n        app.lazy.create($tabEl);\n      }\n    },\n    tabBeforeRemove: function tabBeforeRemove(tabEl) {\n      var app = this;\n      var $tabEl = $$1$1(tabEl);\n      if ($tabEl.find('.lazy').length > 0 || $tabEl.hasClass('lazy')) {\n        app.lazy.destroy($tabEl);\n      }\n    },\n  },\n};\n\nvar DataTable$1 = (function (Framework7Class$$1) {\n  function DataTable(app, params) {\n    if ( params === void 0 ) params = {};\n\n    Framework7Class$$1.call(this, params, [app]);\n\n    var table = this;\n\n    var defaults = {\n\n    };\n\n    // Extend defaults with modules params\n    table.useModulesParams(defaults);\n\n    table.params = Utils.extend(defaults, params);\n\n    // El\n    var $el = $$1$1(table.params.el);\n    if ($el.length === 0) { return undefined; }\n\n    table.$el = $el;\n    table.el = $el[0];\n\n    if (table.$el[0].f7DataTable) {\n      var instance = table.$el[0].f7DataTable;\n      table.destroy();\n      return instance;\n    }\n\n    table.$el[0].f7DataTable = table;\n\n    Utils.extend(table, {\n      collapsible: $el.hasClass('data-table-collapsible'),\n      // Headers\n      $headerEl: $el.find('.data-table-header'),\n      $headerSelectedEl: $el.find('.data-table-header-selected'),\n    });\n\n    // Events\n    function handleChange(e) {\n      if (e.detail && e.detail.sentByF7DataTable) {\n        // Scripted event, don't do anything\n        return;\n      }\n      var $inputEl = $$1$1(this);\n      var checked = $inputEl[0].checked;\n      var columnIndex = $inputEl.parents('td,th').index();\n\n      if ($inputEl.parents('thead').length > 0) {\n        if (columnIndex === 0) {\n          $el\n            .find('tbody tr')[checked ? 'addClass' : 'removeClass']('data-table-row-selected');\n        }\n        $el\n          .find((\"tbody tr td:nth-child(\" + (columnIndex + 1) + \") input\"))\n          .prop('checked', checked)\n          .trigger('change', { sentByF7DataTable: true });\n      } else {\n        if (columnIndex === 0) {\n          $inputEl.parents('tr')[checked ? 'addClass' : 'removeClass']('data-table-row-selected');\n        }\n\n        if (!checked) {\n          $el.find((\"thead .checkbox-cell:nth-child(\" + (columnIndex + 1) + \") input[type=\\\"checkbox\\\"]\")).prop('checked', false);\n        } else if ($el.find((\"tbody .checkbox-cell:nth-child(\" + (columnIndex + 1) + \") input[type=\\\"checkbox\\\"]:checked\")).length === $el.find('tbody tr').length) {\n          $el.find((\"thead .checkbox-cell:nth-child(\" + (columnIndex + 1) + \") input[type=\\\"checkbox\\\"]\")).prop('checked', true).trigger('change', { sentByF7DataTable: true });\n        }\n      }\n      table.checkSelectedHeader();\n    }\n    function handleSortableClick() {\n      var $cellEl = $$1$1(this);\n      var isActive = $cellEl.hasClass('sortable-cell-active');\n      var currentSort;\n      if (isActive) {\n        currentSort = $cellEl.hasClass('sortable-desc') ? 'desc' : 'asc';\n        $cellEl.removeClass('sortable-desc sortable-asc').addClass((\"sortable-\" + (currentSort === 'desc' ? 'asc' : 'desc')));\n      } else {\n        $el.find('thead .sortable-cell-active').removeClass('sortable-cell-active');\n        $cellEl.addClass('sortable-cell-active');\n      }\n    }\n    table.attachEvents = function attachEvents() {\n      table.$el.on('change', '.checkbox-cell input[type=\"checkbox\"]', handleChange);\n      table.$el.find('thead .sortable-cell').on('click', handleSortableClick);\n    };\n    table.detachEvents = function detachEvents() {\n      table.$el.off('change', '.checkbox-cell input[type=\"checkbox\"]', handleChange);\n      table.$el.find('thead .sortable-cell').off('click', handleSortableClick);\n    };\n\n    // Install Modules\n    table.useModules();\n\n    // Init\n    table.init();\n\n    return table;\n  }\n\n  if ( Framework7Class$$1 ) DataTable.__proto__ = Framework7Class$$1;\n  DataTable.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n  DataTable.prototype.constructor = DataTable;\n  DataTable.prototype.setCollapsibleLabels = function setCollapsibleLabels () {\n    var table = this;\n    if (!table.collapsible) { return; }\n    table.$el.find('tbody td:not(.checkbox-cell)').each(function (index, el) {\n      var $el = $$1$1(el);\n      var elIndex = $el.index();\n      var collpsibleTitle = $el.attr('data-collapsible-title');\n      if (!collpsibleTitle && collpsibleTitle !== '') {\n        $el.attr('data-collapsible-title', table.$el.find('thead th').eq(elIndex).text());\n      }\n    });\n  };\n  DataTable.prototype.checkSelectedHeader = function checkSelectedHeader () {\n    var table = this;\n    if (table.$headerEl.length > 0 && table.$headerSelectedEl.length > 0) {\n      var checkedItems = table.$el.find('tbody .checkbox-cell input:checked').length;\n      table.$el[checkedItems > 0 ? 'addClass' : 'removeClass']('data-table-has-checked');\n      table.$headerSelectedEl.find('.data-table-selected-count').text(checkedItems);\n    }\n  };\n  DataTable.prototype.init = function init () {\n    var table = this;\n    table.attachEvents();\n    table.setCollapsibleLabels();\n    table.checkSelectedHeader();\n  };\n  DataTable.prototype.destroy = function destroy () {\n    var table = this;\n\n    table.$el.trigger('datatable:beforedestroy', table);\n    table.emit('local::beforeDestroy datatableBeforeDestroy', table);\n\n    table.attachEvents();\n    table.$el[0].f7DataTable = null;\n    delete table.$el[0].f7DataTable;\n    Utils.deleteProps(table);\n    table = null;\n  };\n\n  return DataTable;\n}(Framework7Class));\n\nvar DataTable = {\n  name: 'dataTable',\n  static: {\n    DataTable: DataTable$1,\n  },\n  create: function create() {\n    var app = this;\n    app.dataTable = ConstructorMethods({\n      defaultSelector: '.data-table',\n      constructor: DataTable$1,\n      app: app,\n      domProp: 'f7DataTable',\n    });\n  },\n  on: {\n    tabBeforeRemove: function tabBeforeRemove(tabEl) {\n      var app = this;\n      $$1$1(tabEl).find('.data-table-init').each(function (index, tableEl) {\n        app.dataTable.destroy(tableEl);\n      });\n    },\n    tabMounted: function tabMounted(tabEl) {\n      var app = this;\n      $$1$1(tabEl).find('.data-table-init').each(function (index, tableEl) {\n        app.dataTable.create({ el: tableEl });\n      });\n    },\n    pageBeforeRemove: function pageBeforeRemove(page) {\n      var app = this;\n      page.$el.find('.data-table-init').each(function (index, tableEl) {\n        app.dataTable.destroy(tableEl);\n      });\n    },\n    pageInit: function pageInit(page) {\n      var app = this;\n      page.$el.find('.data-table-init').each(function (index, tableEl) {\n        app.dataTable.create({ el: tableEl });\n      });\n    },\n  },\n  clicks: {\n\n  },\n};\n\nvar Fab = {\n  morphOpen: function morphOpen(fabEl, targetEl) {\n    var app = this;\n    var $fabEl = $$1$1(fabEl);\n    var $targetEl = $$1$1(targetEl);\n    if ($targetEl.length === 0) { return; }\n\n    $targetEl.transition(0).addClass('fab-morph-target-visible');\n    var target = {\n      width: $targetEl[0].offsetWidth,\n      height: $targetEl[0].offsetHeight,\n      offset: $targetEl.offset(),\n      borderRadius: $targetEl.css('border-radius'),\n      zIndex: $targetEl.css('z-index'),\n    };\n    var fab = {\n      width: $fabEl[0].offsetWidth,\n      height: $fabEl[0].offsetHeight,\n      offset: $fabEl.offset(),\n      translateX: Utils.getTranslate($fabEl[0], 'x'),\n      translateY: Utils.getTranslate($fabEl[0], 'y'),\n    };\n\n    $fabEl[0].f7FabMorphData = {\n      $targetEl: $targetEl,\n      target: target,\n      fab: fab,\n    };\n\n    var diffX = (fab.offset.left + (fab.width / 2)) -\n                  (target.offset.left + (target.width / 2)) -\n                  fab.translateX;\n    var diffY = (fab.offset.top + (fab.height / 2)) -\n                  (target.offset.top + (target.height / 2)) -\n                  fab.translateY;\n    var scaleX = target.width / fab.width;\n    var scaleY = target.height / fab.height;\n\n    var borderRadius = Math.ceil(parseInt(target.borderRadius, 10) / Math.max(scaleX, scaleY));\n    if (borderRadius > 0) { borderRadius += 2; }\n\n    $fabEl[0].f7FabMorphResizeHandler = function resizeHandler() {\n      $fabEl.transition(0).transform('');\n      $targetEl.transition(0);\n      target.width = $targetEl[0].offsetWidth;\n      target.height = $targetEl[0].offsetHeight;\n      target.offset = $targetEl.offset();\n      fab.offset = $fabEl.offset();\n\n      var diffXNew = (fab.offset.left + (fab.width / 2)) -\n                      (target.offset.left + (target.width / 2)) -\n                      fab.translateX;\n      var diffYNew = (fab.offset.top + (fab.height / 2)) -\n                      (target.offset.top + (target.height / 2)) -\n                      fab.translateY;\n      var scaleXNew = target.width / fab.width;\n      var scaleYNew = target.height / fab.height;\n\n      $fabEl.transform((\"translate3d(\" + (-diffXNew) + \"px, \" + (-diffYNew) + \"px, 0) scale(\" + scaleXNew + \", \" + scaleYNew + \")\"));\n    };\n\n    $targetEl\n      .css('opacity', 0)\n      .transform((\"scale(\" + (1 / scaleX) + \", \" + (1 / scaleY) + \")\"));\n    $fabEl\n      .addClass('fab-opened')\n      .css('z-index', target.zIndex - 1)\n      .transform((\"translate3d(\" + (-diffX) + \"px, \" + (-diffY) + \"px, 0)\"));\n    $fabEl.transitionEnd(function () {\n      $targetEl.transition('');\n      Utils.nextTick(function () {\n        $targetEl.css('opacity', 1).transform('scale(1,1)');\n      });\n      $fabEl.transform((\"translate3d(\" + (-diffX) + \"px, \" + (-diffY) + \"px, 0) scale(\" + scaleX + \", \" + scaleY + \")\"))\n        .css('border-radius', (borderRadius + \"px\"))\n        .css('box-shadow', 'none');\n      app.on('resize', $fabEl[0].f7FabMorphResizeHandler);\n      if ($targetEl.parents('.page-content').length > 0) {\n        $targetEl.parents('.page-content').on('scroll', $fabEl[0].f7FabMorphResizeHandler);\n      }\n    });\n  },\n  morphClose: function morphClose(fabEl) {\n    var app = this;\n    var $fabEl = $$1$1(fabEl);\n    var morphData = $fabEl[0].f7FabMorphData;\n    if (!morphData) { return; }\n    var $targetEl = morphData.$targetEl;\n    var target = morphData.target;\n    var fab = morphData.fab;\n    if ($targetEl.length === 0) { return; }\n\n    var diffX = (fab.offset.left + (fab.width / 2)) -\n                  (target.offset.left + (target.width / 2)) -\n                  fab.translateX;\n    var diffY = (fab.offset.top + (fab.height / 2)) -\n                  (target.offset.top + (target.height / 2)) -\n                  fab.translateY;\n    var scaleX = target.width / fab.width;\n    var scaleY = target.height / fab.height;\n\n    app.off('resize', $fabEl[0].f7FabMorphResizeHandler);\n    if ($targetEl.parents('.page-content').length > 0) {\n      $targetEl.parents('.page-content').off('scroll', $fabEl[0].f7FabMorphResizeHandler);\n    }\n\n    $targetEl\n      .css('opacity', 0)\n      .transform((\"scale(\" + (1 / scaleX) + \", \" + (1 / scaleY) + \")\"));\n    $fabEl\n      .transition('')\n      .css('box-shadow', '')\n      .css('border-radius', '')\n      .transform((\"translate3d(\" + (-diffX) + \"px, \" + (-diffY) + \"px, 0)\"));\n    $fabEl.transitionEnd(function () {\n      $fabEl\n        .css('z-index', '')\n        .removeClass('fab-opened')\n        .transform('');\n      Utils.nextTick(function () {\n        $fabEl.transitionEnd(function () {\n          $targetEl\n            .removeClass('fab-morph-target-visible')\n            .css('opacity', '')\n            .transform('')\n            .transition('');\n        });\n      });\n    });\n  },\n  open: function open(fabEl, targetEl) {\n    var app = this;\n    var $fabEl = $$1$1(fabEl).eq(0);\n    var $buttonsEl = $fabEl.find('.fab-buttons');\n    if (!$fabEl.length) { return; }\n    if ($fabEl.hasClass('fab-opened')) { return; }\n    if (!$buttonsEl.length && !$fabEl.hasClass('fab-morph')) { return; }\n\n    if (app.fab.openedEl) {\n      if (app.fab.openedEl === $fabEl[0]) { return; }\n      app.fab.close(app.fab.openedEl);\n    }\n    app.fab.openedEl = $fabEl[0];\n    if ($fabEl.hasClass('fab-morph')) {\n      app.fab.morphOpen($fabEl, targetEl || $fabEl.attr('data-morph-to'));\n    } else {\n      $fabEl.addClass('fab-opened');\n    }\n    $fabEl.trigger('fab:open');\n  },\n  close: function close(fabEl) {\n    if ( fabEl === void 0 ) fabEl = '.fab-opened';\n\n    var app = this;\n    var $fabEl = $$1$1(fabEl).eq(0);\n    var $buttonsEl = $fabEl.find('.fab-buttons');\n    if (!$fabEl.length) { return; }\n    if (!$fabEl.hasClass('fab-opened')) { return; }\n    if (!$buttonsEl.length && !$fabEl.hasClass('fab-morph')) { return; }\n    app.fab.openedEl = null;\n    if ($fabEl.hasClass('fab-morph')) {\n      app.fab.morphClose($fabEl);\n    } else {\n      $fabEl.removeClass('fab-opened');\n    }\n    $fabEl.trigger('fab:close');\n  },\n  toggle: function toggle(fabEl) {\n    var app = this;\n    var $fabEl = $$1$1(fabEl);\n    if (!$fabEl.hasClass('fab-opened')) { app.fab.open(fabEl); }\n    else { app.fab.close(fabEl); }\n  },\n};\n\nvar Fab$1 = {\n  name: 'fab',\n  create: function create() {\n    var app = this;\n    Utils.extend(app, {\n      fab: {\n        openedEl: null,\n        morphOpen: Fab.morphOpen.bind(app),\n        morphClose: Fab.morphClose.bind(app),\n        open: Fab.open.bind(app),\n        close: Fab.close.bind(app),\n        toggle: Fab.toggle.bind(app),\n      },\n    });\n  },\n  clicks: {\n    '.fab > a': function open($clickedEl) {\n      var app = this;\n      app.fab.toggle($clickedEl.parents('.fab'));\n    },\n    '.fab-open': function open($clickedEl, data) {\n      if ( data === void 0 ) data = {};\n\n      var app = this;\n      app.fab.open(data.fab);\n    },\n    '.fab-close': function close($clickedEl, data) {\n      if ( data === void 0 ) data = {};\n\n      var app = this;\n      app.fab.close(data.fab);\n    },\n  },\n};\n\nvar Searchbar$1 = (function (FrameworkClass) {\n  function Searchbar(app, params) {\n    if ( params === void 0 ) params = {};\n\n    FrameworkClass.call(this, params, [app]);\n\n    var sb = this;\n\n    var defaults = {\n      el: undefined,\n      inputEl: undefined,\n      disableButton: true,\n      disableButtonEl: undefined,\n      backdropEl: undefined,\n      searchContainer: undefined, // container to search, HTMLElement or CSS selector\n      searchItem: 'li', // single item selector, CSS selector\n      searchIn: undefined, // where to search in item, CSS selector\n      ignore: '.searchbar-ignore',\n      foundEl: '.searchbar-found',\n      notFoundEl: '.searchbar-not-found',\n      hideOnEnableEl: '.searchbar-hide-on-enable',\n      hideOnSearchEl: '.searchbar-hide-on-search',\n      backdrop: true,\n      removeDiacritics: true,\n      customSearch: false,\n      hideDividers: true,\n      hideGroups: true,\n      disableOnBackdropClick: true,\n      expandable: false,\n    };\n\n    // Extend defaults with modules params\n    sb.useModulesParams(defaults);\n\n    sb.params = Utils.extend(defaults, params);\n\n    var $el = $$1$1(sb.params.el);\n    if ($el.length === 0) { return sb; }\n\n    $el[0].f7Searchbar = sb;\n\n    var $pageEl;\n    var $navbarEl;\n    if ($el.parents('.page').length > 0) {\n      $pageEl = $el.parents('.page');\n    } else {\n      $navbarEl = $el.parents('.navbar-inner');\n      if ($navbarEl.length > 0) {\n        if ($navbarEl[0].f7Page) {\n          $pageEl = $navbarEl[0].f7Page.$el;\n        } else {\n          var $currentPageEl = $el.parents('.view').find('.page-current');\n          if ($currentPageEl[0] && $currentPageEl[0].f7Page && $currentPageEl[0].f7Page.navbarEl === $navbarEl[0]) {\n            $pageEl = $currentPageEl;\n          }\n        }\n      }\n    }\n\n    var $foundEl;\n    if (params.foundEl) {\n      $foundEl = $$1$1(params.foundEl);\n    } else if (typeof sb.params.foundEl === 'string' && $pageEl) {\n      $foundEl = $pageEl.find(sb.params.foundEl);\n    }\n\n    var $notFoundEl;\n    if (params.notFoundEl) {\n      $notFoundEl = $$1$1(params.notFoundEl);\n    } else if (typeof sb.params.notFoundEl === 'string' && $pageEl) {\n      $notFoundEl = $pageEl.find(sb.params.notFoundEl);\n    }\n\n    var $hideOnEnableEl;\n    if (params.hideOnEnableEl) {\n      $hideOnEnableEl = $$1$1(params.hideOnEnableEl);\n    } else if (typeof sb.params.hideOnEnableEl === 'string' && $pageEl) {\n      $hideOnEnableEl = $pageEl.find(sb.params.hideOnEnableEl);\n    }\n\n    var $hideOnSearchEl;\n    if (params.hideOnSearchEl) {\n      $hideOnSearchEl = $$1$1(params.hideOnSearchEl);\n    } else if (typeof sb.params.hideOnSearchEl === 'string' && $pageEl) {\n      $hideOnSearchEl = $pageEl.find(sb.params.hideOnSearchEl);\n    }\n\n    var $backdropEl;\n    if (sb.params.backdrop) {\n      if (sb.params.backdropEl) {\n        $backdropEl = $$1$1(sb.params.backdropEl);\n      } else if ($pageEl && $pageEl.length > 0) {\n        $backdropEl = $pageEl.find('.searchbar-backdrop');\n      } else {\n        $backdropEl = $el.siblings('.searchbar-backdrop');\n      }\n      if ($backdropEl.length === 0) {\n        $backdropEl = $$1$1('<div class=\"searchbar-backdrop\"></div>');\n        if ($pageEl && $pageEl.length) {\n          if ($el.parents($pageEl).length > 0 && $navbarEl && $el.parents($navbarEl).length === 0) {\n            $backdropEl.insertBefore($el);\n          } else {\n            $backdropEl.insertBefore($pageEl.find('.page-content').eq(0));\n          }\n        } else {\n          $backdropEl.insertBefore($el);\n        }\n      }\n    }\n\n    var $searchContainer;\n    if (sb.params.searchContainer) {\n      $searchContainer = $$1$1(sb.params.searchContainer);\n    }\n\n    var $inputEl;\n    if (sb.params.inputEl) {\n      $inputEl = $$1$1(sb.params.inputEl);\n    } else {\n      $inputEl = $el.find('input[type=\"search\"]').eq(0);\n    }\n\n    var $disableButtonEl;\n    if (sb.params.disableButton) {\n      if (sb.params.disableButtonEl) {\n        $disableButtonEl = $$1$1(sb.params.disableButtonEl);\n      } else {\n        $disableButtonEl = $el.find('.searchbar-disable-button');\n      }\n    }\n\n    Utils.extend(sb, {\n      app: app,\n      view: app.views.get($el.parents('.view')),\n      $el: $el,\n      el: $el[0],\n      $backdropEl: $backdropEl,\n      backdropEl: $backdropEl && $backdropEl[0],\n      $searchContainer: $searchContainer,\n      searchContainer: $searchContainer && $searchContainer[0],\n      $inputEl: $inputEl,\n      inputEl: $inputEl[0],\n      $disableButtonEl: $disableButtonEl,\n      disableButtonEl: $disableButtonEl[0],\n      disableButtonHasMargin: false,\n      $pageEl: $pageEl,\n      pageEl: $pageEl && $pageEl[0],\n      $navbarEl: $navbarEl,\n      navbarEl: $navbarEl && $navbarEl[0],\n      $foundEl: $foundEl,\n      foundEl: $foundEl && $foundEl[0],\n      $notFoundEl: $notFoundEl,\n      notFoundEl: $notFoundEl && $notFoundEl[0],\n      $hideOnEnableEl: $hideOnEnableEl,\n      hideOnEnableEl: $hideOnEnableEl && $hideOnEnableEl[0],\n      $hideOnSearchEl: $hideOnSearchEl,\n      hideOnSearchEl: $hideOnSearchEl && $hideOnSearchEl[0],\n      previousQuery: '',\n      query: '',\n      isVirtualList: $searchContainer && $searchContainer.hasClass('virtual-list'),\n      virtualList: undefined,\n      enabled: false,\n      expandable: sb.params.expandable || $el.hasClass('searchbar-expandable'),\n    });\n\n    // Events\n    function preventSubmit(e) {\n      e.preventDefault();\n    }\n    function onInputFocus(e) {\n      sb.enable(e);\n      sb.$el.addClass('searchbar-focused');\n    }\n    function onInputBlur() {\n      sb.$el.removeClass('searchbar-focused');\n    }\n    function onInputChange() {\n      var value = sb.$inputEl.val().trim();\n      if (\n        (\n          (sb.$searchContainer && sb.$searchContainer.length > 0) &&\n          (sb.params.searchIn || sb.isVirtualList || sb.params.searchIn === sb.params.searchItem)\n        ) ||\n        sb.params.customSearch\n      ) {\n        sb.search(value, true);\n      }\n    }\n    function onInputClear(e, previousValue) {\n      sb.$el.trigger('searchbar:clear', previousValue);\n      sb.emit('local::clear searchbarClear', sb, previousValue);\n    }\n    function disableOnClick(e) {\n      sb.disable(e);\n    }\n    function onPageBeforeOut() {\n      if (!sb || (sb && !sb.$el)) { return; }\n      if (sb.enabled) {\n        sb.$el.removeClass('searchbar-enabled');\n      }\n    }\n    function onPageBeforeIn() {\n      if (!sb || (sb && !sb.$el)) { return; }\n      if (sb.enabled) {\n        sb.$el.addClass('searchbar-enabled');\n      }\n    }\n    sb.attachEvents = function attachEvents() {\n      $el.on('submit', preventSubmit);\n      if (sb.params.disableButton) {\n        sb.$disableButtonEl.on('click', disableOnClick);\n      }\n      if (sb.params.disableOnBackdropClick && sb.$backdropEl) {\n        sb.$backdropEl.on('click', disableOnClick);\n      }\n      if (sb.expandable && app.theme === 'ios' && sb.view && $navbarEl && sb.$pageEl) {\n        sb.$pageEl.on('page:beforeout', onPageBeforeOut);\n        sb.$pageEl.on('page:beforein', onPageBeforeIn);\n      }\n      sb.$inputEl.on('focus', onInputFocus);\n      sb.$inputEl.on('blur', onInputBlur);\n      sb.$inputEl.on('change input compositionend', onInputChange);\n      sb.$inputEl.on('input:clear', onInputClear);\n    };\n    sb.detachEvents = function detachEvents() {\n      $el.off('submit', preventSubmit);\n      if (sb.params.disableButton) {\n        sb.$disableButtonEl.off('click', disableOnClick);\n      }\n      if (sb.params.disableOnBackdropClick && sb.$backdropEl) {\n        sb.$backdropEl.off('click', disableOnClick);\n      }\n      if (sb.expandable && app.theme === 'ios' && sb.view && $navbarEl && sb.$pageEl) {\n        sb.$pageEl.on('page:beforeout', onPageBeforeOut);\n        sb.$pageEl.on('page:beforein', onPageBeforeIn);\n      }\n      sb.$inputEl.off('focus', onInputFocus);\n      sb.$inputEl.off('blur', onInputBlur);\n      sb.$inputEl.off('change input compositionend', onInputChange);\n      sb.$inputEl.off('input:clear', onInputClear);\n    };\n\n    // Install Modules\n    sb.useModules();\n\n    // Init\n    sb.init();\n\n    return sb;\n  }\n\n  if ( FrameworkClass ) Searchbar.__proto__ = FrameworkClass;\n  Searchbar.prototype = Object.create( FrameworkClass && FrameworkClass.prototype );\n  Searchbar.prototype.constructor = Searchbar;\n  Searchbar.prototype.clear = function clear (e) {\n    var sb = this;\n    if (!sb.query && e && $$1$1(e.target).hasClass('searchbar-clear')) {\n      sb.disable();\n      return sb;\n    }\n    var previousQuery = sb.value;\n    sb.$inputEl.val('').trigger('change').focus();\n    sb.$el.trigger('searchbar:clear', previousQuery);\n    sb.emit('local::clear searchbarClear', sb, previousQuery);\n    return sb;\n  };\n  Searchbar.prototype.setDisableButtonMargin = function setDisableButtonMargin () {\n    var sb = this;\n    if (sb.expandable) { return; }\n    var app = sb.app;\n    sb.$disableButtonEl.transition(0).show();\n    sb.$disableButtonEl.css((\"margin-\" + (app.rtl ? 'left' : 'right')), ((-sb.disableButtonEl.offsetWidth) + \"px\"));\n    /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n    sb._clientLeft = sb.$disableButtonEl[0].clientLeft;\n    sb.$disableButtonEl.transition('');\n    sb.disableButtonHasMargin = true;\n  };\n  Searchbar.prototype.enable = function enable (setFocus) {\n    var sb = this;\n    if (sb.enabled) { return sb; }\n    var app = sb.app;\n    sb.enabled = true;\n    function enable() {\n      if (sb.$backdropEl && ((sb.$searchContainer && sb.$searchContainer.length) || sb.params.customSearch) && !sb.$el.hasClass('searchbar-enabled') && !sb.query) {\n        sb.backdropShow();\n      }\n      sb.$el.addClass('searchbar-enabled');\n      if (!sb.expandable && sb.$disableButtonEl && sb.$disableButtonEl.length > 0 && app.theme === 'ios') {\n        if (!sb.disableButtonHasMargin) {\n          sb.setDisableButtonMargin();\n        }\n        sb.$disableButtonEl.css((\"margin-\" + (app.rtl ? 'left' : 'right')), '0px');\n      }\n      if (sb.$hideOnEnableEl) { sb.$hideOnEnableEl.hide(); }\n      sb.$el.trigger('searchbar:enable');\n      sb.emit('local::enable searchbarEnable', sb);\n    }\n    var needsFocus = false;\n    if (setFocus === true) {\n      if (document.activeElement !== sb.inputEl) {\n        needsFocus = true;\n      }\n    }\n    var isIos = app.device.ios && app.theme === 'ios';\n    if (isIos) {\n      if (sb.expandable) {\n        if (needsFocus) { sb.$inputEl.focus(); }\n        enable();\n      } else {\n        if (needsFocus) { sb.$inputEl.focus(); }\n        if (setFocus && (setFocus.type === 'focus' || setFocus === true)) {\n          Utils.nextTick(function () {\n            enable();\n          }, 400);\n        } else {\n          enable();\n        }\n      }\n    } else {\n      if (needsFocus) { sb.$inputEl.focus(); }\n      if (app.theme === 'md' && sb.expandable) {\n        sb.$el.parents('.navbar-inner').scrollLeft(0);\n      }\n      enable();\n    }\n    return sb;\n  };\n  Searchbar.prototype.disable = function disable () {\n    var sb = this;\n    if (!sb.enabled) { return sb; }\n    var app = sb.app;\n    sb.$inputEl.val('').trigger('change');\n    sb.$el.removeClass('searchbar-enabled');\n    sb.$el.removeClass('searchbar-focused');\n    if (!sb.expandable && sb.$disableButtonEl && sb.$disableButtonEl.length > 0 && app.theme === 'ios') {\n      sb.$disableButtonEl.css((\"margin-\" + (app.rtl ? 'left' : 'right')), ((-sb.disableButtonEl.offsetWidth) + \"px\"));\n    }\n\n    if (sb.$backdropEl && ((sb.$searchContainer && sb.$searchContainer.length) || sb.params.customSearch)) {\n      sb.backdropHide();\n    }\n\n    sb.enabled = false;\n\n    sb.$inputEl.blur();\n\n    if (sb.$hideOnEnableEl) { sb.$hideOnEnableEl.show(); }\n\n    sb.$el.trigger('searchbar:disable');\n    sb.emit('local::disable searchbarDisable', sb);\n    return sb;\n  };\n  Searchbar.prototype.toggle = function toggle () {\n    var sb = this;\n    if (sb.enabled) { sb.disable(); }\n    else { sb.enable(true); }\n    return sb;\n  };\n  Searchbar.prototype.backdropShow = function backdropShow () {\n    var sb = this;\n    if (sb.$backdropEl) {\n      sb.$backdropEl.addClass('searchbar-backdrop-in');\n    }\n    return sb;\n  };\n  Searchbar.prototype.backdropHide = function backdropHide () {\n    var sb = this;\n    if (sb.$backdropEl) {\n      sb.$backdropEl.removeClass('searchbar-backdrop-in');\n    }\n    return sb;\n  };\n  Searchbar.prototype.search = function search (query, internal) {\n    var sb = this;\n    if (sb.previousQuery && query.trim() === sb.previousQuery) { return sb; }\n    if (typeof (sb.previousQuery) !== 'undefined' && sb.previousQuery.trim() === '' && query.trim() === '') { return sb; }\n    sb.previousQuery = query.trim();\n\n    if (!internal) {\n      if (!sb.enabled) {\n        sb.enable();\n      }\n      sb.$inputEl.val(query);\n    }\n    sb.query = query;\n    sb.value = query;\n\n    var $searchContainer = sb.$searchContainer;\n    var $el = sb.$el;\n    var $backdropEl = sb.$backdropEl;\n    var $foundEl = sb.$foundEl;\n    var $notFoundEl = sb.$notFoundEl;\n    var $hideOnSearchEl = sb.$hideOnSearchEl;\n    var isVirtualList = sb.isVirtualList;\n\n    // Hide on search element\n    if (query.length > 0 && $hideOnSearchEl) {\n      $hideOnSearchEl.hide();\n    } else if ($hideOnSearchEl) {\n      $hideOnSearchEl.show();\n    }\n    // Add active/inactive classes on overlay\n    if (query.length === 0) {\n      if ($searchContainer && $searchContainer.length && $el.hasClass('searchbar-enabled') && $backdropEl) { sb.backdropShow(); }\n    } else if ($searchContainer && $searchContainer.length && $el.hasClass('searchbar-enabled')) {\n      sb.backdropHide();\n    }\n\n    if (sb.params.customSearch) {\n      $el.trigger('searchbar:search', query, sb.previousQuery);\n      sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery);\n      return sb;\n    }\n\n    var foundItems = [];\n    var vlQuery;\n    if (isVirtualList) {\n      sb.virtualList = $searchContainer[0].f7VirtualList;\n      if (query.trim() === '') {\n        sb.virtualList.resetFilter();\n        if ($notFoundEl) { $notFoundEl.hide(); }\n        if ($foundEl) { $foundEl.show(); }\n        return sb;\n      }\n      vlQuery = sb.params.removeDiacritics ? Utils.removeDiacritics(query) : query;\n      if (sb.virtualList.params.searchAll) {\n        foundItems = sb.virtualList.params.searchAll(vlQuery, sb.virtualList.items) || [];\n      } else if (sb.virtualList.params.searchByItem) {\n        for (var i = 0; i < sb.virtualList.items.length; i += 1) {\n          if (sb.virtualList.params.searchByItem(vlQuery, sb.virtualList.params.items[i], i)) {\n            foundItems.push(i);\n          }\n        }\n      }\n    } else {\n      var values;\n      if (sb.params.removeDiacritics) { values = Utils.removeDiacritics(query.trim().toLowerCase()).split(' '); }\n      else {\n        values = query.trim().toLowerCase().split(' ');\n      }\n      $searchContainer.find(sb.params.searchItem).removeClass('hidden-by-searchbar').each(function (itemIndex, itemEl) {\n        var $itemEl = $$1$1(itemEl);\n        var compareWithText = [];\n        var $searchIn = sb.params.searchIn ? $itemEl.find(sb.params.searchIn) : $itemEl;\n        if (sb.params.searchIn === sb.params.searchItem) {\n          $searchIn = $itemEl;\n        }\n        $searchIn.each(function (searchInIndex, searchInEl) {\n          var itemText = $$1$1(searchInEl).text().trim().toLowerCase();\n          if (sb.params.removeDiacritics) { itemText = Utils.removeDiacritics(itemText); }\n          compareWithText.push(itemText);\n        });\n        compareWithText = compareWithText.join(' ');\n        var wordsMatch = 0;\n        for (var i = 0; i < values.length; i += 1) {\n          if (compareWithText.indexOf(values[i]) >= 0) { wordsMatch += 1; }\n        }\n        if (wordsMatch !== values.length && !(sb.params.ignore && $itemEl.is(sb.params.ignore))) {\n          $itemEl.addClass('hidden-by-searchbar');\n        } else {\n          foundItems.push($itemEl[0]);\n        }\n      });\n\n      if (sb.params.hideDividers) {\n        $searchContainer.find('.item-divider, .list-group-title').each(function (titleIndex, titleEl) {\n          var $titleEl = $$1$1(titleEl);\n          var $nextElements = $titleEl.nextAll('li');\n          var hide = true;\n          for (var i = 0; i < $nextElements.length; i += 1) {\n            var $nextEl = $nextElements.eq(i);\n            if ($nextEl.hasClass('list-group-title') || $nextEl.hasClass('item-divider')) { break; }\n            if (!$nextEl.hasClass('hidden-by-searchbar')) {\n              hide = false;\n            }\n          }\n          var ignore = sb.params.ignore && $titleEl.is(sb.params.ignore);\n          if (hide && !ignore) { $titleEl.addClass('hidden-by-searchbar'); }\n          else { $titleEl.removeClass('hidden-by-searchbar'); }\n        });\n      }\n      if (sb.params.hideGroups) {\n        $searchContainer.find('.list-group').each(function (groupIndex, groupEl) {\n          var $groupEl = $$1$1(groupEl);\n          var ignore = sb.params.ignore && $groupEl.is(sb.params.ignore);\n          var notHidden = $groupEl.find('li:not(.hidden-by-searchbar)');\n          if (notHidden.length === 0 && !ignore) {\n            $groupEl.addClass('hidden-by-searchbar');\n          } else {\n            $groupEl.removeClass('hidden-by-searchbar');\n          }\n        });\n      }\n    }\n\n    if (foundItems.length === 0) {\n      if ($notFoundEl) { $notFoundEl.show(); }\n      if ($foundEl) { $foundEl.hide(); }\n    } else {\n      if ($notFoundEl) { $notFoundEl.hide(); }\n      if ($foundEl) { $foundEl.show(); }\n    }\n    if (isVirtualList && sb.virtualList) {\n      sb.virtualList.filterItems(foundItems);\n    }\n\n    $el.trigger('searchbar:search', query, sb.previousQuery, foundItems);\n    sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery, foundItems);\n\n    return sb;\n  };\n  Searchbar.prototype.init = function init () {\n    var sb = this;\n    sb.attachEvents();\n  };\n  Searchbar.prototype.destroy = function destroy () {\n    var sb = this;\n    sb.emit('local::beforeDestroy searchbarBeforeDestroy', sb);\n    sb.$el.trigger('searchbar:beforedestroy', sb);\n    sb.detachEvents();\n    delete sb.$el.f7Searchbar;\n    Utils.deleteProps(sb);\n  };\n\n  return Searchbar;\n}(Framework7Class));\n\nvar Searchbar = {\n  name: 'searchbar',\n  static: {\n    Searchbar: Searchbar$1,\n  },\n  create: function create() {\n    var app = this;\n    app.searchbar = ConstructorMethods({\n      defaultSelector: '.searchbar',\n      constructor: Searchbar$1,\n      app: app,\n      domProp: 'f7Searchbar',\n      addMethods: 'clear enable disable toggle search'.split(' '),\n    });\n  },\n  on: {\n    tabMounted: function tabMounted(tabEl) {\n      var app = this;\n      $$1$1(tabEl).find('.searchbar-init').each(function (index, searchbarEl) {\n        var $searchbarEl = $$1$1(searchbarEl);\n        app.searchbar.create(Utils.extend($searchbarEl.dataset(), { el: searchbarEl }));\n      });\n    },\n    tabBeforeRemove: function tabBeforeRemove(tabEl) {\n      $$1$1(tabEl).find('.searchbar-init').each(function (index, searchbarEl) {\n        if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n          searchbarEl.f7Searchbar.destroy();\n        }\n      });\n    },\n    pageInit: function pageInit(page) {\n      var app = this;\n      page.$el.find('.searchbar-init').each(function (index, searchbarEl) {\n        var $searchbarEl = $$1$1(searchbarEl);\n        app.searchbar.create(Utils.extend($searchbarEl.dataset(), { el: searchbarEl }));\n      });\n      if (app.theme === 'ios' && page.view && page.view.router.separateNavbar && page.$navbarEl && page.$navbarEl.length > 0) {\n        page.$navbarEl.find('.searchbar-init').each(function (index, searchbarEl) {\n          var $searchbarEl = $$1$1(searchbarEl);\n          app.searchbar.create(Utils.extend($searchbarEl.dataset(), { el: searchbarEl }));\n        });\n      }\n    },\n    pageBeforeRemove: function pageBeforeRemove(page) {\n      var app = this;\n      page.$el.find('.searchbar-init').each(function (index, searchbarEl) {\n        if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n          searchbarEl.f7Searchbar.destroy();\n        }\n      });\n      if (app.theme === 'ios' && page.view && page.view.router.separateNavbar && page.$navbarEl && page.$navbarEl.length > 0) {\n        page.$navbarEl.find('.searchbar-init').each(function (index, searchbarEl) {\n          if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n            searchbarEl.f7Searchbar.destroy();\n          }\n        });\n      }\n    },\n  },\n  clicks: {\n    '.searchbar-clear': function clear($clickedEl, data) {\n      if ( data === void 0 ) data = {};\n\n      var app = this;\n      var sb = app.searchbar.get(data.searchbar);\n      if (sb) { sb.clear(); }\n    },\n    '.searchbar-enable': function enable($clickedEl, data) {\n      if ( data === void 0 ) data = {};\n\n      var app = this;\n      var sb = app.searchbar.get(data.searchbar);\n      if (sb) { sb.enable(true); }\n    },\n    '.searchbar-disable': function disable($clickedEl, data) {\n      if ( data === void 0 ) data = {};\n\n      var app = this;\n      var sb = app.searchbar.get(data.searchbar);\n      if (sb) { sb.disable(); }\n    },\n    '.searchbar-toggle': function toggle($clickedEl, data) {\n      if ( data === void 0 ) data = {};\n\n      var app = this;\n      var sb = app.searchbar.get(data.searchbar);\n      if (sb) { sb.toggle(); }\n    },\n  },\n};\n\nvar Messages$1 = (function (Framework7Class$$1) {\n  function Messages(app, params) {\n    if ( params === void 0 ) params = {};\n\n    Framework7Class$$1.call(this, params, [app]);\n\n    var m = this;\n\n    var defaults = {\n      autoLayout: true,\n      messages: [],\n      newMessagesFirst: false,\n      scrollMessages: true,\n      scrollMessagesOnEdge: true,\n      firstMessageRule: undefined,\n      lastMessageRule: undefined,\n      tailMessageRule: undefined,\n      sameNameMessageRule: undefined,\n      sameHeaderMessageRule: undefined,\n      sameFooterMessageRule: undefined,\n      sameAvatarMessageRule: undefined,\n      customClassMessageRule: undefined,\n      renderMessage: undefined,\n    };\n\n    // Extend defaults with modules params\n    m.useModulesParams(defaults);\n\n    m.params = Utils.extend(defaults, params);\n\n    var $el = $$1$1(params.el).eq(0);\n    if ($el.length === 0) { return m; }\n\n    $el[0].f7Messages = m;\n\n    var $pageContentEl = $el.closest('.page-content').eq(0);\n\n    Utils.extend(m, {\n      messages: m.params.messages,\n      $el: $el,\n      el: $el[0],\n      $pageContentEl: $pageContentEl,\n      pageContentEl: $pageContentEl[0],\n\n    });\n    // Install Modules\n    m.useModules();\n\n    // Init\n    m.init();\n\n    return m;\n  }\n\n  if ( Framework7Class$$1 ) Messages.__proto__ = Framework7Class$$1;\n  Messages.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n  Messages.prototype.constructor = Messages;\n  // eslint-disable-next-line\n  Messages.prototype.getMessageData = function getMessageData (messageEl) {\n    var $messageEl = $$1$1(messageEl);\n    var data = {\n      name: $messageEl.find('.message-name').html(),\n      header: $messageEl.find('.message-header').html(),\n      textHeader: $messageEl.find('.message-text-header').html(),\n      textFooter: $messageEl.find('.message-text-footer').html(),\n      footer: $messageEl.find('.message-footer').html(),\n      isTitle: $messageEl.hasClass('messages-title'),\n      type: $messageEl.hasClass('message-sent') ? 'sent' : 'received',\n      text: $messageEl.find('.message-text').html(),\n      image: $messageEl.find('.message-image').html(),\n      imageSrc: $messageEl.find('.message-image img').attr('src'),\n      typing: $messageEl.hasClass('message-typing'),\n    };\n    if (data.isTitle) {\n      data.text = $messageEl.html();\n    }\n    if (data.text && data.textHeader) {\n      data.text = data.text.replace((\"<div class=\\\"message-text-header\\\">\" + (data.textHeader) + \"</div>\"), '');\n    }\n    if (data.text && data.textFooter) {\n      data.text = data.text.replace((\"<div class=\\\"message-text-footer\\\">\" + (data.textFooter) + \"</div>\"), '');\n    }\n    var avatar = $messageEl.find('.message-avatar').css('background-image');\n    if (avatar === 'none' || avatar === '') { avatar = undefined; }\n    if (avatar && typeof avatar === 'string') {\n      avatar = avatar.replace('url(', '').replace(')', '').replace(/\"/g, '').replace(/'/g, '');\n    } else {\n      avatar = undefined;\n    }\n    data.avatar = avatar;\n\n    return data;\n  };\n  Messages.prototype.getMessagesData = function getMessagesData () {\n    var m = this;\n    var data = [];\n    m.$el.find('.message, .messages-title').each(function (index, messageEl) {\n      data.push(m.getMessageData(messageEl));\n    });\n    return data;\n  };\n  Messages.prototype.renderMessage = function renderMessage (messageToRender) {\n    var m = this;\n    var message = Utils.extend({\n      type: 'sent',\n    }, messageToRender);\n    if (m.params.renderMessage) {\n      return m.params.renderMessage.call(m, message);\n    }\n    if (message.isTitle) {\n      return (\"<div class=\\\"messages-title\\\">\" + (message.text) + \"</div>\");\n    }\n    return (\"\\n      <div class=\\\"message message-\" + (message.type) + \" \" + (message.isTyping ? 'message-typing' : '') + \"\\\">\\n        \" + (message.avatar ? (\"\\n        <div class=\\\"message-avatar\\\" style=\\\"background-image:url(\" + (message.avatar) + \")\\\"></div>\\n        \") : '') + \"\\n        <div class=\\\"message-content\\\">\\n          \" + (message.name ? (\"<div class=\\\"message-name\\\">\" + (message.name) + \"</div>\") : '') + \"\\n          \" + (message.header ? (\"<div class=\\\"message-header\\\">\" + (message.header) + \"</div>\") : '') + \"\\n          <div class=\\\"message-bubble\\\">\\n            \" + (message.textHeader ? (\"<div class=\\\"message-text-header\\\">\" + (message.textHeader) + \"</div>\") : '') + \"\\n            \" + (message.image ? (\"<div class=\\\"message-image\\\">\" + (message.image) + \"</div>\") : '') + \"\\n            \" + (message.imageSrc && !message.image ? (\"<div class=\\\"message-image\\\"><img src=\\\"\" + (message.imageSrc) + \"\\\"></div>\") : '') + \"\\n            \" + (message.text || message.isTyping ? (\"<div class=\\\"message-text\\\">\" + (message.text || '') + (message.isTyping ? '<div class=\"message-typing-indicator\"><div></div><div></div><div></div></div>' : '') + \"</div>\") : '') + \"\\n            \" + (message.textFooter ? (\"<div class=\\\"message-text-footer\\\">\" + (message.textFooter) + \"</div>\") : '') + \"\\n          </div>\\n          \" + (message.footer ? (\"<div class=\\\"message-footer\\\">\" + (message.footer) + \"</div>\") : '') + \"\\n        </div>\\n      </div>\\n    \");\n  };\n  Messages.prototype.renderMessages = function renderMessages (messagesToRender, method) {\n    if ( messagesToRender === void 0 ) messagesToRender = this.messages;\n    if ( method === void 0 ) method = this.params.newMessagesFirst ? 'prepend' : 'append';\n\n    var m = this;\n    var html = messagesToRender.map(function (message) { return m.renderMessage(message); }).join('');\n    m.$el[method](html);\n  };\n  Messages.prototype.isFirstMessage = function isFirstMessage () {\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n\n    var m = this;\n    if (m.params.firstMessageRule) { return (ref = m.params).firstMessageRule.apply(ref, args); }\n    return false;\n    var ref;\n  };\n  Messages.prototype.isLastMessage = function isLastMessage () {\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n\n    var m = this;\n    if (m.params.lastMessageRule) { return (ref = m.params).lastMessageRule.apply(ref, args); }\n    return false;\n    var ref;\n  };\n  Messages.prototype.isTailMessage = function isTailMessage () {\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n\n    var m = this;\n    if (m.params.tailMessageRule) { return (ref = m.params).tailMessageRule.apply(ref, args); }\n    return false;\n    var ref;\n  };\n  Messages.prototype.isSameNameMessage = function isSameNameMessage () {\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n\n    var m = this;\n    if (m.params.sameNameMessageRule) { return (ref = m.params).sameNameMessageRule.apply(ref, args); }\n    return false;\n    var ref;\n  };\n  Messages.prototype.isSameHeaderMessage = function isSameHeaderMessage () {\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n\n    var m = this;\n    if (m.params.sameHeaderMessageRule) { return (ref = m.params).sameHeaderMessageRule.apply(ref, args); }\n    return false;\n    var ref;\n  };\n  Messages.prototype.isSameFooterMessage = function isSameFooterMessage () {\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n\n    var m = this;\n    if (m.params.sameFooterMessageRule) { return (ref = m.params).sameFooterMessageRule.apply(ref, args); }\n    return false;\n    var ref;\n  };\n  Messages.prototype.isSameAvatarMessage = function isSameAvatarMessage () {\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n\n    var m = this;\n    if (m.params.sameAvatarMessageRule) { return (ref = m.params).sameAvatarMessageRule.apply(ref, args); }\n    return false;\n    var ref;\n  };\n  Messages.prototype.isCustomClassMessage = function isCustomClassMessage () {\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n\n    var m = this;\n    if (m.params.customClassMessageRule) { return (ref = m.params).customClassMessageRule.apply(ref, args); }\n    return undefined;\n    var ref;\n  };\n  Messages.prototype.layout = function layout () {\n    var m = this;\n    m.$el.find('.message, .messages-title').each(function (index, messageEl) {\n      var $messageEl = $$1$1(messageEl);\n      if (!m.messages) {\n        m.messages = m.getMessagesData();\n      }\n      var classes = [];\n      var message = m.messages[index];\n      var previousMessage = m.messages[index - 1];\n      var nextMessage = m.messages[index + 1];\n      if (m.isFirstMessage(message, previousMessage, nextMessage)) {\n        classes.push('message-first');\n      }\n      if (m.isLastMessage(message, previousMessage, nextMessage)) {\n        classes.push('message-last');\n      }\n      if (m.isTailMessage(message, previousMessage, nextMessage)) {\n        classes.push('message-tail');\n      }\n      if (m.isSameNameMessage(message, previousMessage, nextMessage)) {\n        classes.push('message-same-name');\n      }\n      if (m.isSameHeaderMessage(message, previousMessage, nextMessage)) {\n        classes.push('message-same-header');\n      }\n      if (m.isSameFooterMessage(message, previousMessage, nextMessage)) {\n        classes.push('message-same-footer');\n      }\n      if (m.isSameAvatarMessage(message, previousMessage, nextMessage)) {\n        classes.push('message-same-avatar');\n      }\n      var customMessageClasses = m.isCustomClassMessage(message, previousMessage, nextMessage);\n      if (customMessageClasses && customMessageClasses.length) {\n        if (typeof customMessageClasses === 'string') {\n          customMessageClasses = customMessageClasses.split(' ');\n        }\n        customMessageClasses.forEach(function (customClass) {\n          classes.push(customClass);\n        });\n      }\n      $messageEl.removeClass('message-first message-last message-tail message-same-name message-same-header message-same-footer message-same-avatar');\n      classes.forEach(function (className) {\n        $messageEl.addClass(className);\n      });\n    });\n  };\n  Messages.prototype.clear = function clear () {\n    var m = this;\n    m.messages = [];\n    m.$el.html('');\n  };\n  Messages.prototype.removeMessage = function removeMessage (messageToRemove, layout) {\n    if ( layout === void 0 ) layout = true;\n\n    var m = this;\n    // Index or El\n    var index;\n    var $el;\n    if (typeof messageToRemove === 'number') {\n      index = messageToRemove;\n      $el = m.$el.find('.message, .messages-title').eq(index);\n    } else if (m.messages && m.messages.indexOf(messageToRemove) >= 0) {\n      index = m.messages.indexOf(messageToRemove);\n      $el = m.$el.children().eq(index);\n    } else {\n      $el = $$1$1(messageToRemove);\n      index = $el.index();\n    }\n    if ($el.length === 0) {\n      return m;\n    }\n    $el.remove();\n    m.messages.splice(index, 1);\n    if (m.params.autoLayout && layout) { m.layout(); }\n    return m;\n  };\n  Messages.prototype.removeMessages = function removeMessages (messagesToRemove, layout) {\n    if ( layout === void 0 ) layout = true;\n\n    var m = this;\n    if (Array.isArray(messagesToRemove)) {\n      var messagesToRemoveEls = [];\n      messagesToRemove.forEach(function (messageToRemoveIndex) {\n        messagesToRemoveEls.push(m.$el.find('.message, .messages-title').eq(messageToRemoveIndex));\n      });\n      messagesToRemoveEls.forEach(function (messageToRemove) {\n        m.removeMessage(messageToRemove, false);\n      });\n    } else {\n      $$1$1(messagesToRemove).each(function (index, messageToRemove) {\n        m.removeMessage(messageToRemove, false);\n      });\n    }\n    if (m.params.autoLayout && layout) { m.layout(); }\n    return m;\n  };\n\n  Messages.prototype.addMessage = function addMessage () {\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n\n    var m = this;\n    var messageToAdd;\n    var animate;\n    var method;\n    if (typeof args[1] === 'boolean') {\n      var assign;\n      (assign = args, messageToAdd = assign[0], animate = assign[1], method = assign[2]);\n    } else {\n      var assign$1;\n      (assign$1 = args, messageToAdd = assign$1[0], method = assign$1[1], animate = assign$1[2]);\n    }\n    if (typeof animate === 'undefined') {\n      animate = true;\n    }\n    if (typeof method === 'undefined') {\n      method = m.params.newMessagesFirst ? 'prepend' : 'append';\n    }\n\n    return m.addMessages([messageToAdd], animate, method);\n  };\n  Messages.prototype.addMessages = function addMessages () {\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n\n    var m = this;\n    var messagesToAdd;\n    var animate;\n    var method;\n    if (typeof args[1] === 'boolean') {\n      var assign;\n      (assign = args, messagesToAdd = assign[0], animate = assign[1], method = assign[2]);\n    } else {\n      var assign$1;\n      (assign$1 = args, messagesToAdd = assign$1[0], method = assign$1[1], animate = assign$1[2]);\n    }\n    if (typeof animate === 'undefined') {\n      animate = true;\n    }\n    if (typeof method === 'undefined') {\n      method = m.params.newMessagesFirst ? 'prepend' : 'append';\n    }\n\n    // Define scroll positions before new messages added\n    var scrollHeightBefore = m.pageContentEl.scrollHeight;\n    var heightBefore = m.pageContentEl.offsetHeight;\n    var scrollBefore = m.pageContentEl.scrollTop;\n\n    // Add message to DOM and data\n    var messagesHTML = '';\n    var typingMessage = m.messages.filter(function (el) { return el.isTyping; })[0];\n    messagesToAdd.forEach(function (messageToAdd) {\n      if (typingMessage) {\n        if (method === 'append') {\n          m.messages.splice(m.messages.indexOf(typingMessage), 0, messageToAdd);\n        } else {\n          m.messages.splice(m.messages.indexOf(typingMessage) + 1, 0, messageToAdd);\n        }\n      } else {\n        m.messages[method === 'append' ? 'push' : 'unshift'](messageToAdd);\n      }\n      messagesHTML += m.renderMessage(messageToAdd);\n    });\n    var $messagesEls = $$1$1(messagesHTML);\n    if (animate) {\n      if (method === 'append' && !m.params.newMessagesFirst) {\n        $messagesEls.addClass('message-appear-from-bottom');\n      }\n      if (method === 'prepend' && m.params.newMessagesFirst) {\n        $messagesEls.addClass('message-appear-from-top');\n      }\n    }\n    if (typingMessage) {\n      if (method === 'append') {\n        $messagesEls.insertBefore(m.$el.find('.message-typing'));\n      } else {\n        $messagesEls.insertAfter(m.$el.find('.message-typing'));\n      }\n    } else {\n      m.$el[method]($messagesEls);\n    }\n\n    // Layout\n    if (m.params.autoLayout) { m.layout(); }\n\n    if (method === 'prepend' && !typingMessage) {\n      m.pageContentEl.scrollTop = scrollBefore + (m.pageContentEl.scrollHeight - scrollHeightBefore);\n    }\n\n    if (m.params.scrollMessages && ((method === 'append' && !m.params.newMessagesFirst) || (method === 'prepend' && m.params.newMessagesFirst && !typingMessage))) {\n      if (m.params.scrollMessagesOnEdge) {\n        var onEdge = false;\n        if (m.params.newMessagesFirst && scrollBefore === 0) {\n          onEdge = true;\n        }\n        if (!m.params.newMessagesFirst && (scrollBefore - (scrollHeightBefore - heightBefore) >= -10)) {\n          onEdge = true;\n        }\n        if (onEdge) { m.scroll(animate ? undefined : 0); }\n      } else {\n        m.scroll(animate ? undefined : 0);\n      }\n    }\n\n    return m;\n  };\n  Messages.prototype.showTyping = function showTyping (message) {\n    if ( message === void 0 ) message = {};\n\n    var m = this;\n    var typingMessage = m.messages.filter(function (el) { return el.isTyping; })[0];\n    if (typingMessage) {\n      m.removeMessage(m.messages.indexOf(typingMessage));\n    }\n    m.addMessage(Utils.extend({\n      type: 'received',\n      isTyping: true,\n    }, message));\n    return m;\n  };\n  Messages.prototype.hideTyping = function hideTyping () {\n    var m = this;\n    var typingMessageIndex;\n    var typingFound;\n    m.messages.forEach(function (message, index) {\n      if (message.isTyping) { typingMessageIndex = index; }\n    });\n    if (typeof typingMessageIndex !== 'undefined') {\n      if (m.$el.find('.message').eq(typingMessageIndex).hasClass('message-typing')) {\n        typingFound = true;\n        m.removeMessage(typingMessageIndex);\n      }\n    }\n    if (!typingFound) {\n      var $typingMessageEl = m.$el.find('.message-typing');\n      if ($typingMessageEl.length) {\n        m.removeMessage($typingMessageEl);\n      }\n    }\n    return m;\n  };\n  Messages.prototype.scroll = function scroll (duration, scrollTop) {\n    if ( duration === void 0 ) duration = 300;\n\n    var m = this;\n    var currentScroll = m.pageContentEl.scrollTop;\n    var newScrollTop;\n    if (typeof scrollTop !== 'undefined') { newScrollTop = scrollTop; }\n    else {\n      newScrollTop = m.params.newMessagesFirst ? 0 : m.pageContentEl.scrollHeight - m.pageContentEl.offsetHeight;\n      if (newScrollTop === currentScroll) { return m; }\n    }\n    m.$pageContentEl.scrollTop(newScrollTop, duration);\n    return m;\n  };\n  Messages.prototype.init = function init () {\n    var m = this;\n    if (!m.messages || m.messages.length === 0) {\n      m.messages = m.getMessagesData();\n    }\n    if (m.params.messages && m.params.messages.length) {\n      m.renderMessages();\n    }\n    if (m.params.autoLayout) { m.layout(); }\n    if (m.params.scrollMessages) { m.scroll(0); }\n  };\n  Messages.prototype.destroy = function destroy () {\n    var m = this;\n    m.emit('local::beforeDestroy messagesBeforeDestroy', m);\n    m.$el.trigger('messages:beforedestroy', m);\n    m.$el[0].f7Messages = null;\n    delete m.$el[0].f7Messages;\n    Utils.deleteProps(m);\n  };\n\n  return Messages;\n}(Framework7Class));\n\nvar Messages = {\n  name: 'messages',\n  static: {\n    Messages: Messages$1,\n  },\n  create: function create() {\n    var app = this;\n    app.messages = ConstructorMethods({\n      defaultSelector: '.messages',\n      constructor: Messages$1,\n      app: app,\n      domProp: 'f7Messages',\n      addMethods: 'renderMessages layout scroll clear removeMessage removeMessages addMessage addMessages'.split(' '),\n    });\n  },\n  on: {\n    tabBeforeRemove: function tabBeforeRemove(tabEl) {\n      var app = this;\n      $$1$1(tabEl).find('.messages-init').each(function (index, messagesEl) {\n        app.messages.destroy(messagesEl);\n      });\n    },\n    tabMounted: function tabMounted(tabEl) {\n      var app = this;\n      $$1$1(tabEl).find('.messages-init').each(function (index, messagesEl) {\n        app.messages.create({ el: messagesEl });\n      });\n    },\n    pageBeforeRemove: function pageBeforeRemove(page) {\n      var app = this;\n      page.$el.find('.messages-init').each(function (index, messagesEl) {\n        app.messages.destroy(messagesEl);\n      });\n    },\n    pageInit: function pageInit(page) {\n      var app = this;\n      page.$el.find('.messages-init').each(function (index, messagesEl) {\n        app.messages.create({ el: messagesEl });\n      });\n    },\n  },\n  clicks: {\n\n  },\n};\n\nvar Messagebar$1 = (function (Framework7Class$$1) {\n  function Messagebar(app, params) {\n    if ( params === void 0 ) params = {};\n\n    Framework7Class$$1.call(this, params, [app]);\n\n    var messagebar = this;\n\n    var defaults = {\n      top: false,\n      topOffset: 0,\n      bottomOffset: 0,\n      attachments: [],\n      renderAttachments: undefined,\n      renderAttachment: undefined,\n      maxHeight: null,\n      resizePage: true,\n    };\n\n    // Extend defaults with modules params\n    messagebar.useModulesParams(defaults);\n\n    messagebar.params = Utils.extend(defaults, params);\n\n    // El\n    var $el = $$1$1(messagebar.params.el);\n    if ($el.length === 0) { return messagebar; }\n\n    $el[0].f7Messagebar = messagebar;\n\n    // Page and PageContent\n    var $pageEl = $el.parents('.page').eq(0);\n    var $pageContentEl = $pageEl.find('.page-content').eq(0);\n\n    // Area\n    var $areaEl = $el.find('.messagebar-area');\n\n    // Textarea\n    var $textareaEl;\n    if (messagebar.params.textareaEl) {\n      $textareaEl = $$1$1(messagebar.params.textareaEl);\n    } else {\n      $textareaEl = $el.find('textarea');\n    }\n\n    // Attachments & Library\n    var $attachmentsEl = $el.find('.messagebar-attachments');\n    var $sheetEl = $el.find('.messagebar-sheet');\n\n    if (messagebar.params.top) {\n      $el.addClass('messagebar-top');\n    }\n\n    Utils.extend(messagebar, {\n      $el: $el,\n      el: $el[0],\n      $areaEl: $areaEl,\n      areaEl: $areaEl[0],\n      $textareaEl: $textareaEl,\n      textareaEl: $textareaEl[0],\n      $attachmentsEl: $attachmentsEl,\n      attachmentsEl: $attachmentsEl[0],\n      attachmentsVisible: $attachmentsEl.hasClass('messagebar-attachments-visible'),\n      $sheetEl: $sheetEl,\n      sheetEl: $sheetEl[0],\n      sheetVisible: $sheetEl.hasClass('messagebar-sheet-visible'),\n      $pageEl: $pageEl,\n      pageEl: $pageEl[0],\n      $pageContentEl: $pageContentEl,\n      pageContentEl: $pageContentEl,\n      top: $el.hasClass('messagebar-top') || messagebar.params.top,\n      attachments: [],\n    });\n\n    // Events\n    function onAppResize() {\n      if (messagebar.params.resizePage) {\n        messagebar.resizePage();\n      }\n    }\n    function onSubmit(e) {\n      e.preventDefault();\n    }\n    function onAttachmentClick(e) {\n      var index = $$1$1(this).index();\n      if ($$1$1(e.target).closest('.messagebar-attachment-delete').length) {\n        $$1$1(this).trigger('messagebar:attachmentdelete', index);\n        messagebar.emit('local::attachmentDelete messagebarAttachmentDelete', messagebar, this, index);\n      } else {\n        $$1$1(this).trigger('messagebar:attachmentclick', index);\n        messagebar.emit('local::attachmentClick messagebarAttachmentClick', messagebar, this, index);\n      }\n    }\n    function onTextareaChange() {\n      messagebar.checkEmptyState();\n      messagebar.$el.trigger('messagebar:change');\n      messagebar.emit('local::change messagebarChange', messagebar);\n    }\n    function onTextareaFocus() {\n      messagebar.sheetHide();\n      messagebar.$el.trigger('messagebar:focus');\n      messagebar.emit('local::focus messagebarFocus', messagebar);\n    }\n    function onTextareaBlur() {\n      messagebar.$el.trigger('messagebar:blur');\n      messagebar.emit('local::blur messagebarBlur', messagebar);\n    }\n\n    messagebar.attachEvents = function attachEvents() {\n      $el.on('textarea:resize', onAppResize);\n      $el.on('submit', onSubmit);\n      $el.on('click', '.messagebar-attachment', onAttachmentClick);\n      $textareaEl.on('change input', onTextareaChange);\n      $textareaEl.on('focus', onTextareaFocus);\n      $textareaEl.on('blur', onTextareaBlur);\n      app.on('resize', onAppResize);\n    };\n    messagebar.detachEvents = function detachEvents() {\n      $el.off('textarea:resize', onAppResize);\n      $el.off('submit', onSubmit);\n      $el.off('click', '.messagebar-attachment', onAttachmentClick);\n      $textareaEl.off('change input', onTextareaChange);\n      $textareaEl.off('focus', onTextareaFocus);\n      $textareaEl.off('blur', onTextareaBlur);\n      app.off('resize', onAppResize);\n    };\n\n\n    // Install Modules\n    messagebar.useModules();\n\n    // Init\n    messagebar.init();\n\n    return messagebar;\n  }\n\n  if ( Framework7Class$$1 ) Messagebar.__proto__ = Framework7Class$$1;\n  Messagebar.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n  Messagebar.prototype.constructor = Messagebar;\n  Messagebar.prototype.focus = function focus () {\n    var messagebar = this;\n    messagebar.$textareaEl.focus();\n    return messagebar;\n  };\n  Messagebar.prototype.blur = function blur () {\n    var messagebar = this;\n    messagebar.$textareaEl.blur();\n    return messagebar;\n  };\n  Messagebar.prototype.clear = function clear () {\n    var messagebar = this;\n    messagebar.$textareaEl.val('').trigger('change');\n    return messagebar;\n  };\n  Messagebar.prototype.getValue = function getValue () {\n    var messagebar = this;\n    return messagebar.$textareaEl.val().trim();\n  };\n  Messagebar.prototype.setValue = function setValue (value) {\n    var messagebar = this;\n    messagebar.$textareaEl.val(value).trigger('change');\n    return messagebar;\n  };\n  Messagebar.prototype.setPlaceholder = function setPlaceholder (placeholder) {\n    var messagebar = this;\n    messagebar.$textareaEl.attr('placeholder', placeholder);\n    return messagebar;\n  };\n  Messagebar.prototype.resizePage = function resizePage () {\n    var messagebar = this;\n    var params = messagebar.params;\n    var $el = messagebar.$el;\n    var top = messagebar.top;\n    var $pageEl = messagebar.$pageEl;\n    var $pageContentEl = messagebar.$pageContentEl;\n    var $areaEl = messagebar.$areaEl;\n    var $textareaEl = messagebar.$textareaEl;\n    var $sheetEl = messagebar.$sheetEl;\n    var $attachmentsEl = messagebar.$attachmentsEl;\n    var elHeight = $el[0].offsetHeight;\n    var maxHeight = params.maxHeight;\n    if (top) {\n      /*\n      Disable at the moment\n      const requiredPaddingTop = elHeight + params.topOffset;\n      const currentPaddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n      if (requiredPaddingTop !== currentPaddingTop) {\n        if (!maxHeight) {\n          maxHeight = $pageEl[0].offsetHeight - currentPaddingTop - $sheetEl.outerHeight() - $attachmentsEl.outerHeight() - parseInt($areaEl.css('margin-top'), 10) - parseInt($areaEl.css('margin-bottom'), 10);\n        }\n        $textareaEl.css('max-height', `${maxHeight}px`);\n        $pageContentEl.css('padding-top', `${requiredPaddingTop}px`);\n        $el.trigger('messagebar:resizePage');\n        messagebar.emit('local::resizepage messagebarResizePage');\n      }\n      */\n    } else {\n      var currentPaddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n      var requiredPaddingBottom = elHeight + params.bottomOffset;\n      if (requiredPaddingBottom !== currentPaddingBottom && $pageContentEl.length) {\n        var currentPaddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n        var pageScrollHeight = $pageContentEl[0].scrollHeight;\n        var pageOffsetHeight = $pageContentEl[0].offsetHeight;\n        var pageScrollTop = $pageContentEl[0].scrollTop;\n        var scrollOnBottom = (pageScrollTop === pageScrollHeight - pageOffsetHeight);\n        if (!maxHeight) {\n          maxHeight = $pageEl[0].offsetHeight - currentPaddingTop - $sheetEl.outerHeight() - $attachmentsEl.outerHeight() - parseInt($areaEl.css('margin-top'), 10) - parseInt($areaEl.css('margin-bottom'), 10);\n        }\n        $textareaEl.css('max-height', (maxHeight + \"px\"));\n        $pageContentEl.css('padding-bottom', (requiredPaddingBottom + \"px\"));\n        if (scrollOnBottom) {\n          $pageContentEl.scrollTop($pageContentEl[0].scrollHeight - pageOffsetHeight);\n        }\n        $el.trigger('messagebar:resizepage');\n        messagebar.emit('local::resizePage messagebarResizePage', messagebar);\n      }\n    }\n  };\n  Messagebar.prototype.checkEmptyState = function checkEmptyState () {\n    var messagebar = this;\n    var $el = messagebar.$el;\n    var $textareaEl = messagebar.$textareaEl;\n    var value = $textareaEl.val().trim();\n    if (value && value.length) {\n      $el.addClass('messagebar-with-value');\n    } else {\n      $el.removeClass('messagebar-with-value');\n    }\n  };\n  Messagebar.prototype.attachmentsCreate = function attachmentsCreate (innerHTML) {\n    if ( innerHTML === void 0 ) innerHTML = '';\n\n    var messagebar = this;\n    var $attachmentsEl = $$1$1((\"<div class=\\\"messagebar-attachments\\\">\" + innerHTML + \"</div>\"));\n    $attachmentsEl.insertBefore(messagebar.$textareaEl);\n    Utils.extend(messagebar, {\n      $attachmentsEl: $attachmentsEl,\n      attachmentsEl: $attachmentsEl[0],\n    });\n    return messagebar;\n  };\n  Messagebar.prototype.attachmentsShow = function attachmentsShow (innerHTML) {\n    if ( innerHTML === void 0 ) innerHTML = '';\n\n    var messagebar = this;\n    messagebar.$attachmentsEl = messagebar.$el.find('.messagebar-attachments');\n    if (messagebar.$attachmentsEl.length === 0) {\n      messagebar.attachmentsCreate(innerHTML);\n    }\n    messagebar.$el.addClass('messagebar-attachments-visible');\n    messagebar.attachmentsVisible = true;\n    if (messagebar.params.resizePage) {\n      messagebar.resizePage();\n    }\n    return messagebar;\n  };\n  Messagebar.prototype.attachmentsHide = function attachmentsHide () {\n    var messagebar = this;\n    messagebar.$el.removeClass('messagebar-attachments-visible');\n    messagebar.attachmentsVisible = false;\n    if (messagebar.params.resizePage) {\n      messagebar.resizePage();\n    }\n    return messagebar;\n  };\n  Messagebar.prototype.attachmentsToggle = function attachmentsToggle () {\n    var messagebar = this;\n    if (messagebar.attachmentsVisible) {\n      messagebar.attachmentsHide();\n    } else {\n      messagebar.attachmentsShow();\n    }\n    return messagebar;\n  };\n  Messagebar.prototype.renderAttachment = function renderAttachment (attachment) {\n    var messagebar = this;\n    if (messagebar.params.renderAttachment) {\n      return messagebar.params.renderAttachment.call(messagebar, attachment);\n    }\n    return (\"\\n      <div class=\\\"messagebar-attachment\\\">\\n        <img src=\\\"\" + attachment + \"\\\">\\n        <span class=\\\"messagebar-attachment-delete\\\"></span>\\n      </div>\\n    \");\n  };\n  Messagebar.prototype.renderAttachments = function renderAttachments () {\n    var messagebar = this;\n    var html;\n    if (messagebar.params.renderAttachments) {\n      html = messagebar.params.renderAttachments.call(messagebar, messagebar.attachments);\n    } else {\n      html = \"\" + (messagebar.attachments.map(function (attachment) { return messagebar.renderAttachment(attachment); }).join(''));\n    }\n    if (messagebar.$attachmentsEl.length === 0) {\n      messagebar.attachmentsCreate(html);\n    } else {\n      messagebar.$attachmentsEl.html(html);\n    }\n  };\n  Messagebar.prototype.sheetCreate = function sheetCreate (innerHTML) {\n    if ( innerHTML === void 0 ) innerHTML = '';\n\n    var messagebar = this;\n    var $sheetEl = $$1$1((\"<div class=\\\"messagebar-sheet\\\">\" + innerHTML + \"</div>\"));\n    messagebar.$el.append($sheetEl);\n    Utils.extend(messagebar, {\n      $sheetEl: $sheetEl,\n      sheetEl: $sheetEl[0],\n    });\n    return messagebar;\n  };\n  Messagebar.prototype.sheetShow = function sheetShow (innerHTML) {\n    if ( innerHTML === void 0 ) innerHTML = '';\n\n    var messagebar = this;\n    messagebar.$sheetEl = messagebar.$el.find('.messagebar-sheet');\n    if (messagebar.$sheetEl.length === 0) {\n      messagebar.sheetCreate(innerHTML);\n    }\n    messagebar.$el.addClass('messagebar-sheet-visible');\n    messagebar.sheetVisible = true;\n    if (messagebar.params.resizePage) {\n      messagebar.resizePage();\n    }\n    return messagebar;\n  };\n  Messagebar.prototype.sheetHide = function sheetHide () {\n    var messagebar = this;\n    messagebar.$el.removeClass('messagebar-sheet-visible');\n    messagebar.sheetVisible = false;\n    if (messagebar.params.resizePage) {\n      messagebar.resizePage();\n    }\n    return messagebar;\n  };\n  Messagebar.prototype.sheetToggle = function sheetToggle () {\n    var messagebar = this;\n    if (messagebar.sheetVisible) {\n      messagebar.sheetHide();\n    } else {\n      messagebar.sheetShow();\n    }\n    return messagebar;\n  };\n  Messagebar.prototype.init = function init () {\n    var messagebar = this;\n    messagebar.attachEvents();\n    messagebar.checkEmptyState();\n    return messagebar;\n  };\n  Messagebar.prototype.destroy = function destroy () {\n    var messagebar = this;\n    messagebar.emit('local::beforeDestroy messagebarBeforeDestroy', messagebar);\n    messagebar.$el.trigger('messagebar:beforedestroy', messagebar);\n    messagebar.detachEvents();\n    messagebar.$el[0].f7Messagebar = null;\n    delete messagebar.$el[0].f7Messagebar;\n    Utils.deleteProps(messagebar);\n  };\n\n  return Messagebar;\n}(Framework7Class));\n\nvar Messagebar = {\n  name: 'messagebar',\n  static: {\n    Messagebar: Messagebar$1,\n  },\n  create: function create() {\n    var app = this;\n    app.messagebar = ConstructorMethods({\n      defaultSelector: '.messagebar',\n      constructor: Messagebar$1,\n      app: app,\n      domProp: 'f7Messagebar',\n      addMethods: 'clear getValue setValue setPlaceholder resizePage focus blur attachmentsCreate attachmentsShow attachmentsHide attachmentsToggle renderAttachments sheetCreate sheetShow sheetHide sheetToggle'.split(' '),\n    });\n  },\n  on: {\n    tabBeforeRemove: function tabBeforeRemove(tabEl) {\n      var app = this;\n      $$1$1(tabEl).find('.messagebar-init').each(function (index, messagebarEl) {\n        app.messagebar.destroy(messagebarEl);\n      });\n    },\n    tabMounted: function tabMounted(tabEl) {\n      var app = this;\n      $$1$1(tabEl).find('.messagebar-init').each(function (index, messagebarEl) {\n        app.messagebar.create(Utils.extend({ el: messagebarEl }, $$1$1(messagebarEl).dataset()));\n      });\n    },\n    pageBeforeRemove: function pageBeforeRemove(page) {\n      var app = this;\n      page.$el.find('.messagebar-init').each(function (index, messagebarEl) {\n        app.messagebar.destroy(messagebarEl);\n      });\n    },\n    pageInit: function pageInit(page) {\n      var app = this;\n      page.$el.find('.messagebar-init').each(function (index, messagebarEl) {\n        app.messagebar.create(Utils.extend({ el: messagebarEl }, $$1$1(messagebarEl).dataset()));\n      });\n    },\n  },\n};\n\nvar updateSize = function () {\n  var swiper = this;\n  var width;\n  var height;\n  var $el = swiper.$el;\n  if (typeof swiper.params.width !== 'undefined') {\n    width = swiper.params.width;\n  } else {\n    width = $el[0].clientWidth;\n  }\n  if (typeof swiper.params.height !== 'undefined') {\n    height = swiper.params.height;\n  } else {\n    height = $el[0].clientHeight;\n  }\n  if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n    return;\n  }\n\n  // Subtract paddings\n  width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);\n  height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);\n\n  Utils.extend(swiper, {\n    width: width,\n    height: height,\n    size: swiper.isHorizontal() ? width : height,\n  });\n};\n\nvar updateSlides = function () {\n  var swiper = this;\n  var params = swiper.params;\n\n  var $wrapperEl = swiper.$wrapperEl;\n  var swiperSize = swiper.size;\n  var rtl = swiper.rtl;\n  var wrongRTL = swiper.wrongRTL;\n  var slides = $wrapperEl.children((\".\" + (swiper.params.slideClass)));\n  var isVirtual = swiper.virtual && params.virtual.enabled;\n  var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n  var snapGrid = [];\n  var slidesGrid = [];\n  var slidesSizesGrid = [];\n\n  var offsetBefore = params.slidesOffsetBefore;\n  if (typeof offsetBefore === 'function') {\n    offsetBefore = params.slidesOffsetBefore.call(swiper);\n  }\n\n  var offsetAfter = params.slidesOffsetAfter;\n  if (typeof offsetAfter === 'function') {\n    offsetAfter = params.slidesOffsetAfter.call(swiper);\n  }\n\n  var previousSlidesLength = slidesLength;\n  var previousSnapGridLength = swiper.snapGrid.length;\n  var previousSlidesGridLength = swiper.snapGrid.length;\n\n  var spaceBetween = params.spaceBetween;\n  var slidePosition = -offsetBefore;\n  var prevSlideSize = 0;\n  var index = 0;\n  if (typeof swiperSize === 'undefined') {\n    return;\n  }\n  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n    spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n  }\n\n  swiper.virtualSize = -spaceBetween;\n\n  // reset margins\n  if (rtl) { slides.css({ marginLeft: '', marginTop: '' }); }\n  else { slides.css({ marginRight: '', marginBottom: '' }); }\n\n  var slidesNumberEvenToRows;\n  if (params.slidesPerColumn > 1) {\n    if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\n      slidesNumberEvenToRows = slidesLength;\n    } else {\n      slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n    }\n    if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n    }\n  }\n\n  // Calc slides\n  var slideSize;\n  var slidesPerColumn = params.slidesPerColumn;\n  var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n  var numFullColumns = slidesPerRow - ((params.slidesPerColumn * slidesPerRow) - slidesLength);\n  for (var i = 0; i < slidesLength; i += 1) {\n    slideSize = 0;\n    var slide = slides.eq(i);\n    if (params.slidesPerColumn > 1) {\n      // Set slides order\n      var newSlideOrderIndex = (void 0);\n      var column = (void 0);\n      var row = (void 0);\n      if (params.slidesPerColumnFill === 'column') {\n        column = Math.floor(i / slidesPerColumn);\n        row = i - (column * slidesPerColumn);\n        if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {\n          row += 1;\n          if (row >= slidesPerColumn) {\n            row = 0;\n            column += 1;\n          }\n        }\n        newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);\n        slide\n          .css({\n            '-webkit-box-ordinal-group': newSlideOrderIndex,\n            '-moz-box-ordinal-group': newSlideOrderIndex,\n            '-ms-flex-order': newSlideOrderIndex,\n            '-webkit-order': newSlideOrderIndex,\n            order: newSlideOrderIndex,\n          });\n      } else {\n        row = Math.floor(i / slidesPerRow);\n        column = i - (row * slidesPerRow);\n      }\n      slide\n        .css(\n          (\"margin-\" + (swiper.isHorizontal() ? 'top' : 'left')),\n          (row !== 0 && params.spaceBetween) && (((params.spaceBetween) + \"px\"))\n        )\n        .attr('data-swiper-column', column)\n        .attr('data-swiper-row', row);\n    }\n    if (slide.css('display') === 'none') { continue; } // eslint-disable-line\n    if (params.slidesPerView === 'auto') {\n      slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n      if (params.roundLengths) { slideSize = Math.floor(slideSize); }\n    } else {\n      slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView;\n      if (params.roundLengths) { slideSize = Math.floor(slideSize); }\n\n      if (slides[i]) {\n        if (swiper.isHorizontal()) {\n          slides[i].style.width = slideSize + \"px\";\n        } else {\n          slides[i].style.height = slideSize + \"px\";\n        }\n      }\n    }\n    if (slides[i]) {\n      slides[i].swiperSlideSize = slideSize;\n    }\n    slidesSizesGrid.push(slideSize);\n\n\n    if (params.centeredSlides) {\n      slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween;\n      if (prevSlideSize === 0 && i !== 0) { slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; }\n      if (i === 0) { slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; }\n      if (Math.abs(slidePosition) < 1 / 1000) { slidePosition = 0; }\n      if ((index) % params.slidesPerGroup === 0) { snapGrid.push(slidePosition); }\n      slidesGrid.push(slidePosition);\n    } else {\n      if ((index) % params.slidesPerGroup === 0) { snapGrid.push(slidePosition); }\n      slidesGrid.push(slidePosition);\n      slidePosition = slidePosition + slideSize + spaceBetween;\n    }\n\n    swiper.virtualSize += slideSize + spaceBetween;\n\n    prevSlideSize = slideSize;\n\n    index += 1;\n  }\n  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n  var newSlidesGrid;\n\n  if (\n    rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n    $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + \"px\") });\n  }\n  if (!Support$1.flexbox || params.setWrapperSize) {\n    if (swiper.isHorizontal()) { $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + \"px\") }); }\n    else { $wrapperEl.css({ height: ((swiper.virtualSize + params.spaceBetween) + \"px\") }); }\n  }\n\n  if (params.slidesPerColumn > 1) {\n    swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n    swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n    if (swiper.isHorizontal()) { $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + \"px\") }); }\n    else { $wrapperEl.css({ height: ((swiper.virtualSize + params.spaceBetween) + \"px\") }); }\n    if (params.centeredSlides) {\n      newSlidesGrid = [];\n      for (var i$1 = 0; i$1 < snapGrid.length; i$1 += 1) {\n        if (snapGrid[i$1] < swiper.virtualSize + snapGrid[0]) { newSlidesGrid.push(snapGrid[i$1]); }\n      }\n      snapGrid = newSlidesGrid;\n    }\n  }\n\n  // Remove last grid elements depending on width\n  if (!params.centeredSlides) {\n    newSlidesGrid = [];\n    for (var i$2 = 0; i$2 < snapGrid.length; i$2 += 1) {\n      if (snapGrid[i$2] <= swiper.virtualSize - swiperSize) {\n        newSlidesGrid.push(snapGrid[i$2]);\n      }\n    }\n    snapGrid = newSlidesGrid;\n    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n      snapGrid.push(swiper.virtualSize - swiperSize);\n    }\n  }\n  if (snapGrid.length === 0) { snapGrid = [0]; }\n\n  if (params.spaceBetween !== 0) {\n    if (swiper.isHorizontal()) {\n      if (rtl) { slides.css({ marginLeft: (spaceBetween + \"px\") }); }\n      else { slides.css({ marginRight: (spaceBetween + \"px\") }); }\n    } else { slides.css({ marginBottom: (spaceBetween + \"px\") }); }\n  }\n\n  Utils.extend(swiper, {\n    slides: slides,\n    snapGrid: snapGrid,\n    slidesGrid: slidesGrid,\n    slidesSizesGrid: slidesSizesGrid,\n  });\n\n  if (slidesLength !== previousSlidesLength) {\n    swiper.emit('slidesLengthChange');\n  }\n  if (snapGrid.length !== previousSnapGridLength) {\n    swiper.emit('snapGridLengthChange');\n  }\n  if (slidesGrid.length !== previousSlidesGridLength) {\n    swiper.emit('slidesGridLengthChange');\n  }\n\n  if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n    swiper.updateSlidesOffset();\n  }\n};\n\nvar updateAutoHeight = function () {\n  var swiper = this;\n  var activeSlides = [];\n  var newHeight = 0;\n  var i;\n\n  // Find slides currently in view\n  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n    for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n      var index = swiper.activeIndex + i;\n      if (index > swiper.slides.length) { break; }\n      activeSlides.push(swiper.slides.eq(index)[0]);\n    }\n  } else {\n    activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);\n  }\n\n  // Find new height from highest slide in view\n  for (i = 0; i < activeSlides.length; i += 1) {\n    if (typeof activeSlides[i] !== 'undefined') {\n      var height = activeSlides[i].offsetHeight;\n      newHeight = height > newHeight ? height : newHeight;\n    }\n  }\n\n  // Update Height\n  if (newHeight) { swiper.$wrapperEl.css('height', (newHeight + \"px\")); }\n};\n\nvar updateSlidesOffset = function () {\n  var swiper = this;\n  var slides = swiper.slides;\n  for (var i = 0; i < slides.length; i += 1) {\n    slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n  }\n};\n\nvar updateSlidesProgress = function (translate) {\n  if ( translate === void 0 ) translate = this.translate || 0;\n\n  var swiper = this;\n  var params = swiper.params;\n\n  var slides = swiper.slides;\n  var rtl = swiper.rtl;\n\n  if (slides.length === 0) { return; }\n  if (typeof slides[0].swiperSlideOffset === 'undefined') { swiper.updateSlidesOffset(); }\n\n  var offsetCenter = -translate;\n  if (rtl) { offsetCenter = translate; }\n\n  // Visible Slides\n  slides.removeClass(params.slideVisibleClass);\n\n  for (var i = 0; i < slides.length; i += 1) {\n    var slide = slides[i];\n    var slideProgress =\n      (\n        (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset\n      ) / (slide.swiperSlideSize + params.spaceBetween);\n    if (params.watchSlidesVisibility) {\n      var slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n      var slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n      var isVisible =\n                (slideBefore >= 0 && slideBefore < swiper.size) ||\n                (slideAfter > 0 && slideAfter <= swiper.size) ||\n                (slideBefore <= 0 && slideAfter >= swiper.size);\n      if (isVisible) {\n        slides.eq(i).addClass(params.slideVisibleClass);\n      }\n    }\n    slide.progress = rtl ? -slideProgress : slideProgress;\n  }\n};\n\nvar updateProgress = function (translate) {\n  if ( translate === void 0 ) translate = this.translate || 0;\n\n  var swiper = this;\n  var params = swiper.params;\n\n  var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  var progress = swiper.progress;\n  var isBeginning = swiper.isBeginning;\n  var isEnd = swiper.isEnd;\n  var wasBeginning = isBeginning;\n  var wasEnd = isEnd;\n  if (translatesDiff === 0) {\n    progress = 0;\n    isBeginning = true;\n    isEnd = true;\n  } else {\n    progress = (translate - swiper.minTranslate()) / (translatesDiff);\n    isBeginning = progress <= 0;\n    isEnd = progress >= 1;\n  }\n  Utils.extend(swiper, {\n    progress: progress,\n    isBeginning: isBeginning,\n    isEnd: isEnd,\n  });\n\n  if (params.watchSlidesProgress || params.watchSlidesVisibility) { swiper.updateSlidesProgress(translate); }\n\n  if (isBeginning && !wasBeginning) {\n    swiper.emit('reachBeginning toEdge');\n  }\n  if (isEnd && !wasEnd) {\n    swiper.emit('reachEnd toEdge');\n  }\n  if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n    swiper.emit('fromEdge');\n  }\n\n  swiper.emit('progress', progress);\n};\n\nvar updateSlidesClasses = function () {\n  var swiper = this;\n\n  var slides = swiper.slides;\n  var params = swiper.params;\n  var $wrapperEl = swiper.$wrapperEl;\n  var activeIndex = swiper.activeIndex;\n  var realIndex = swiper.realIndex;\n  var isVirtual = swiper.virtual && params.virtual.enabled;\n\n  slides.removeClass(((params.slideActiveClass) + \" \" + (params.slideNextClass) + \" \" + (params.slidePrevClass) + \" \" + (params.slideDuplicateActiveClass) + \" \" + (params.slideDuplicateNextClass) + \" \" + (params.slideDuplicatePrevClass)));\n\n  var activeSlide;\n  if (isVirtual) {\n    activeSlide = swiper.$wrapperEl.find((\".\" + (params.slideClass) + \"[data-swiper-slide-index=\\\"\" + activeIndex + \"\\\"]\"));\n  } else {\n    activeSlide = slides.eq(activeIndex);\n  }\n\n  // Active classes\n  activeSlide.addClass(params.slideActiveClass);\n\n  if (params.loop) {\n    // Duplicate to all looped slides\n    if (activeSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl\n        .children((\".\" + (params.slideClass) + \":not(.\" + (params.slideDuplicateClass) + \")[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]\"))\n        .addClass(params.slideDuplicateActiveClass);\n    } else {\n      $wrapperEl\n        .children((\".\" + (params.slideClass) + \".\" + (params.slideDuplicateClass) + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]\"))\n        .addClass(params.slideDuplicateActiveClass);\n    }\n  }\n  // Next Slide\n  var nextSlide = activeSlide.nextAll((\".\" + (params.slideClass))).eq(0).addClass(params.slideNextClass);\n  if (params.loop && nextSlide.length === 0) {\n    nextSlide = slides.eq(0);\n    nextSlide.addClass(params.slideNextClass);\n  }\n  // Prev Slide\n  var prevSlide = activeSlide.prevAll((\".\" + (params.slideClass))).eq(0).addClass(params.slidePrevClass);\n  if (params.loop && prevSlide.length === 0) {\n    prevSlide = slides.eq(-1);\n    prevSlide.addClass(params.slidePrevClass);\n  }\n  if (params.loop) {\n    // Duplicate to all looped slides\n    if (nextSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl\n        .children((\".\" + (params.slideClass) + \":not(.\" + (params.slideDuplicateClass) + \")[data-swiper-slide-index=\\\"\" + (nextSlide.attr('data-swiper-slide-index')) + \"\\\"]\"))\n        .addClass(params.slideDuplicateNextClass);\n    } else {\n      $wrapperEl\n        .children((\".\" + (params.slideClass) + \".\" + (params.slideDuplicateClass) + \"[data-swiper-slide-index=\\\"\" + (nextSlide.attr('data-swiper-slide-index')) + \"\\\"]\"))\n        .addClass(params.slideDuplicateNextClass);\n    }\n    if (prevSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl\n        .children((\".\" + (params.slideClass) + \":not(.\" + (params.slideDuplicateClass) + \")[data-swiper-slide-index=\\\"\" + (prevSlide.attr('data-swiper-slide-index')) + \"\\\"]\"))\n        .addClass(params.slideDuplicatePrevClass);\n    } else {\n      $wrapperEl\n        .children((\".\" + (params.slideClass) + \".\" + (params.slideDuplicateClass) + \"[data-swiper-slide-index=\\\"\" + (prevSlide.attr('data-swiper-slide-index')) + \"\\\"]\"))\n        .addClass(params.slideDuplicatePrevClass);\n    }\n  }\n};\n\nvar updateActiveIndex = function (newActiveIndex) {\n  var swiper = this;\n  var translate = swiper.rtl ? swiper.translate : -swiper.translate;\n  var slidesGrid = swiper.slidesGrid;\n  var snapGrid = swiper.snapGrid;\n  var params = swiper.params;\n  var previousIndex = swiper.activeIndex;\n  var previousRealIndex = swiper.realIndex;\n  var previousSnapIndex = swiper.snapIndex;\n  var activeIndex = newActiveIndex;\n  var snapIndex;\n  if (typeof activeIndex === 'undefined') {\n    for (var i = 0; i < slidesGrid.length; i += 1) {\n      if (typeof slidesGrid[i + 1] !== 'undefined') {\n        if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) {\n          activeIndex = i;\n        } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n          activeIndex = i + 1;\n        }\n      } else if (translate >= slidesGrid[i]) {\n        activeIndex = i;\n      }\n    }\n    // Normalize slideIndex\n    if (params.normalizeSlideIndex) {\n      if (activeIndex < 0 || typeof activeIndex === 'undefined') { activeIndex = 0; }\n    }\n  }\n  if (snapGrid.indexOf(translate) >= 0) {\n    snapIndex = snapGrid.indexOf(translate);\n  } else {\n    snapIndex = Math.floor(activeIndex / params.slidesPerGroup);\n  }\n  if (snapIndex >= snapGrid.length) { snapIndex = snapGrid.length - 1; }\n  if (activeIndex === previousIndex) {\n    if (snapIndex !== previousSnapIndex) {\n      swiper.snapIndex = snapIndex;\n      swiper.emit('snapIndexChange');\n    }\n    return;\n  }\n\n  // Get real index\n  var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n\n  Utils.extend(swiper, {\n    snapIndex: snapIndex,\n    realIndex: realIndex,\n    previousIndex: previousIndex,\n    activeIndex: activeIndex,\n  });\n  swiper.emit('activeIndexChange');\n  swiper.emit('snapIndexChange');\n  if (previousRealIndex !== realIndex) {\n    swiper.emit('realIndexChange');\n  }\n  swiper.emit('slideChange');\n};\n\nvar updateClickedSlide = function (e) {\n  var swiper = this;\n  var params = swiper.params;\n  var slide = $$1$1(e.target).closest((\".\" + (params.slideClass)))[0];\n  var slideFound = false;\n  if (slide) {\n    for (var i = 0; i < swiper.slides.length; i += 1) {\n      if (swiper.slides[i] === slide) { slideFound = true; }\n    }\n  }\n\n  if (slide && slideFound) {\n    swiper.clickedSlide = slide;\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      swiper.clickedIndex = parseInt($$1$1(slide).attr('data-swiper-slide-index'), 10);\n    } else {\n      swiper.clickedIndex = $$1$1(slide).index();\n    }\n  } else {\n    swiper.clickedSlide = undefined;\n    swiper.clickedIndex = undefined;\n    return;\n  }\n  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n    swiper.slideToClickedSlide();\n  }\n};\n\nvar update = {\n  updateSize: updateSize,\n  updateSlides: updateSlides,\n  updateAutoHeight: updateAutoHeight,\n  updateSlidesOffset: updateSlidesOffset,\n  updateSlidesProgress: updateSlidesProgress,\n  updateProgress: updateProgress,\n  updateSlidesClasses: updateSlidesClasses,\n  updateActiveIndex: updateActiveIndex,\n  updateClickedSlide: updateClickedSlide,\n};\n\nvar getTranslate = function (axis) {\n  if ( axis === void 0 ) axis = this.isHorizontal() ? 'x' : 'y';\n\n  var swiper = this;\n\n  var params = swiper.params;\n  var rtl = swiper.rtl;\n  var translate = swiper.translate;\n  var $wrapperEl = swiper.$wrapperEl;\n\n  if (params.virtualTranslate) {\n    return rtl ? -translate : translate;\n  }\n\n  var currentTranslate = Utils.getTranslate($wrapperEl[0], axis);\n  if (rtl) { currentTranslate = -currentTranslate; }\n\n  return currentTranslate || 0;\n};\n\nvar setTranslate = function (translate, byController) {\n  var swiper = this;\n  var rtl = swiper.rtl;\n  var params = swiper.params;\n  var $wrapperEl = swiper.$wrapperEl;\n  var progress = swiper.progress;\n  var x = 0;\n  var y = 0;\n  var z = 0;\n\n  if (swiper.isHorizontal()) {\n    x = rtl ? -translate : translate;\n  } else {\n    y = translate;\n  }\n\n  if (params.roundLengths) {\n    x = Math.floor(x);\n    y = Math.floor(y);\n  }\n\n  if (!params.virtualTranslate) {\n    if (Support$1.transforms3d) { $wrapperEl.transform((\"translate3d(\" + x + \"px, \" + y + \"px, \" + z + \"px)\")); }\n    else { $wrapperEl.transform((\"translate(\" + x + \"px, \" + y + \"px)\")); }\n  }\n\n  swiper.translate = swiper.isHorizontal() ? x : y;\n\n  // Check if we need to update progress\n  var newProgress;\n  var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (translate - swiper.minTranslate()) / (translatesDiff);\n  }\n  if (newProgress !== progress) {\n    swiper.updateProgress(translate);\n  }\n\n  swiper.emit('setTranslate', swiper.translate, byController);\n};\n\nvar minTranslate = function () {\n  return (-this.snapGrid[0]);\n};\n\nvar maxTranslate = function () {\n  return (-this.snapGrid[this.snapGrid.length - 1]);\n};\n\nvar translate = {\n  getTranslate: getTranslate,\n  setTranslate: setTranslate,\n  minTranslate: minTranslate,\n  maxTranslate: maxTranslate,\n};\n\nvar setTransition = function (duration, byController) {\n  var swiper = this;\n\n  swiper.$wrapperEl.transition(duration);\n\n  swiper.emit('setTransition', duration, byController);\n};\n\nvar transitionStart = function (runCallbacks) {\n  if ( runCallbacks === void 0 ) runCallbacks = true;\n\n  var swiper = this;\n  var activeIndex = swiper.activeIndex;\n  var params = swiper.params;\n  var previousIndex = swiper.previousIndex;\n  if (params.autoHeight) {\n    swiper.updateAutoHeight();\n  }\n  swiper.emit('transitionStart');\n\n  if (!runCallbacks) { return; }\n  if (activeIndex !== previousIndex) {\n    swiper.emit('slideChangeTransitionStart');\n    if (activeIndex > previousIndex) {\n      swiper.emit('slideNextTransitionStart');\n    } else {\n      swiper.emit('slidePrevTransitionStart');\n    }\n  }\n};\n\nvar transitionEnd$1 = function (runCallbacks) {\n  if ( runCallbacks === void 0 ) runCallbacks = true;\n\n  var swiper = this;\n  var activeIndex = swiper.activeIndex;\n  var previousIndex = swiper.previousIndex;\n  swiper.animating = false;\n  swiper.setTransition(0);\n\n  swiper.emit('transitionEnd');\n  if (runCallbacks) {\n    if (activeIndex !== previousIndex) {\n      swiper.emit('slideChangeTransitionEnd');\n      if (activeIndex > previousIndex) {\n        swiper.emit('slideNextTransitionEnd');\n      } else {\n        swiper.emit('slidePrevTransitionEnd');\n      }\n    }\n  }\n};\n\nvar transition$1 = {\n  setTransition: setTransition,\n  transitionStart: transitionStart,\n  transitionEnd: transitionEnd$1,\n};\n\nvar Browser = (function Browser() {\n  function isIE9() {\n    // create temporary DIV\n    var div = document.createElement('div');\n    // add content to tmp DIV which is wrapped into the IE HTML conditional statement\n    div.innerHTML = '<!--[if lte IE 9]><i></i><![endif]-->';\n    // return true / false value based on what will browser render\n    return div.getElementsByTagName('i').length === 1;\n  }\n  function isSafari() {\n    var ua = window.navigator.userAgent.toLowerCase();\n    return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n  }\n  return {\n    isSafari: isSafari(),\n    isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n    ie: window.navigator.pointerEnabled || window.navigator.msPointerEnabled,\n    ieTouch: (window.navigator.msPointerEnabled && window.navigator.msMaxTouchPoints > 1) ||\n             (window.navigator.pointerEnabled && window.navigator.maxTouchPoints > 1),\n    lteIE9: isIE9(),\n  };\n}());\n\nvar slideTo = function (index, speed, runCallbacks, internal) {\n  if ( index === void 0 ) index = 0;\n  if ( speed === void 0 ) speed = this.params.speed;\n  if ( runCallbacks === void 0 ) runCallbacks = true;\n\n  var swiper = this;\n  var slideIndex = index;\n  if (slideIndex < 0) { slideIndex = 0; }\n\n  var params = swiper.params;\n  var snapGrid = swiper.snapGrid;\n  var slidesGrid = swiper.slidesGrid;\n  var previousIndex = swiper.previousIndex;\n  var activeIndex = swiper.activeIndex;\n  var rtl = swiper.rtl;\n  var $wrapperEl = swiper.$wrapperEl;\n\n  var snapIndex = Math.floor(slideIndex / params.slidesPerGroup);\n  if (snapIndex >= snapGrid.length) { snapIndex = snapGrid.length - 1; }\n\n  if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n    swiper.emit('beforeSlideChangeStart');\n  }\n\n  var translate = -snapGrid[snapIndex];\n\n  // Update progress\n  swiper.updateProgress(translate);\n\n  // Normalize slideIndex\n  if (params.normalizeSlideIndex) {\n    for (var i = 0; i < slidesGrid.length; i += 1) {\n      if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {\n        slideIndex = i;\n      }\n    }\n  }\n\n  // Directions locks\n  if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n    return false;\n  }\n  if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n    if ((activeIndex || 0) !== slideIndex) { return false; }\n  }\n\n  // Update Index\n  if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n    swiper.updateActiveIndex(slideIndex);\n    // Update Height\n    if (params.autoHeight) {\n      swiper.updateAutoHeight();\n    }\n    swiper.updateSlidesClasses();\n    if (params.effect !== 'slide') {\n      swiper.setTranslate(translate);\n    }\n    return false;\n  }\n\n  if (speed === 0 || Browser.lteIE9) {\n    swiper.setTransition(0);\n    swiper.setTranslate(translate);\n    swiper.updateActiveIndex(slideIndex);\n    swiper.updateSlidesClasses();\n    swiper.emit('beforeTransitionStart', speed, internal);\n    swiper.transitionStart(runCallbacks);\n    swiper.transitionEnd(runCallbacks);\n  } else {\n    swiper.setTransition(speed);\n    swiper.setTranslate(translate);\n    swiper.updateActiveIndex(slideIndex);\n    swiper.updateSlidesClasses();\n    swiper.emit('beforeTransitionStart', speed, internal);\n    swiper.transitionStart(runCallbacks);\n    if (!swiper.animating) {\n      swiper.animating = true;\n      $wrapperEl.transitionEnd(function () {\n        if (!swiper || swiper.destroyed) { return; }\n        swiper.transitionEnd(runCallbacks);\n      });\n    }\n  }\n\n  return true;\n};\n\n/* eslint no-unused-vars: \"off\" */\nvar slideNext = function (speed, runCallbacks, internal) {\n  if ( speed === void 0 ) speed = this.params.speed;\n  if ( runCallbacks === void 0 ) runCallbacks = true;\n\n  var swiper = this;\n  var params = swiper.params;\n  var animating = swiper.animating;\n  if (params.loop) {\n    if (animating) { return false; }\n    swiper.loopFix();\n    // eslint-disable-next-line\n    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n    return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);\n  }\n  return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);\n};\n\n/* eslint no-unused-vars: \"off\" */\nvar slidePrev = function (speed, runCallbacks, internal) {\n  if ( speed === void 0 ) speed = this.params.speed;\n  if ( runCallbacks === void 0 ) runCallbacks = true;\n\n  var swiper = this;\n  var params = swiper.params;\n  var animating = swiper.animating;\n\n  if (params.loop) {\n    if (animating) { return false; }\n    swiper.loopFix();\n    // eslint-disable-next-line\n    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n    return swiper.slideTo(swiper.activeIndex - 1, speed, runCallbacks, internal);\n  }\n  return swiper.slideTo(swiper.activeIndex - 1, speed, runCallbacks, internal);\n};\n\n/* eslint no-unused-vars: \"off\" */\nvar slideReset = function (speed, runCallbacks, internal) {\n  if ( speed === void 0 ) speed = this.params.speed;\n  if ( runCallbacks === void 0 ) runCallbacks = true;\n\n  var swiper = this;\n  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n};\n\nvar slideToClickedSlide = function () {\n  var swiper = this;\n  var params = swiper.params;\n  var $wrapperEl = swiper.$wrapperEl;\n\n  var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n  var slideToIndex = swiper.clickedIndex;\n  var realIndex;\n  if (params.loop) {\n    if (swiper.animating) { return; }\n    realIndex = parseInt($$1$1(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n    if (params.centeredSlides) {\n      if (\n        (slideToIndex < swiper.loopedSlides - (slidesPerView / 2)) ||\n        (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))\n      ) {\n        swiper.loopFix();\n        slideToIndex = $wrapperEl\n          .children((\".\" + (params.slideClass) + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]:not(.\" + (params.slideDuplicateClass) + \")\"))\n          .eq(0)\n          .index();\n\n        Utils.nextTick(function () {\n          swiper.slideTo(slideToIndex);\n        });\n      } else {\n        swiper.slideTo(slideToIndex);\n      }\n    } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n      swiper.loopFix();\n      slideToIndex = $wrapperEl\n        .children((\".\" + (params.slideClass) + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]:not(.\" + (params.slideDuplicateClass) + \")\"))\n        .eq(0)\n        .index();\n\n      Utils.nextTick(function () {\n        swiper.slideTo(slideToIndex);\n      });\n    } else {\n      swiper.slideTo(slideToIndex);\n    }\n  } else {\n    swiper.slideTo(slideToIndex);\n  }\n};\n\nvar slide = {\n  slideTo: slideTo,\n  slideNext: slideNext,\n  slidePrev: slidePrev,\n  slideReset: slideReset,\n  slideToClickedSlide: slideToClickedSlide,\n};\n\nvar loopCreate = function () {\n  var swiper = this;\n  var params = swiper.params;\n  var $wrapperEl = swiper.$wrapperEl;\n  // Remove duplicated slides\n  $wrapperEl.children((\".\" + (params.slideClass) + \".\" + (params.slideDuplicateClass))).remove();\n\n  var slides = $wrapperEl.children((\".\" + (params.slideClass)));\n\n  if (params.loopFillGroupWithBlank) {\n    var blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n    if (blankSlidesNum !== params.slidesPerGroup) {\n      for (var i = 0; i < blankSlidesNum; i += 1) {\n        var blankNode = $$1$1(document.createElement('div')).addClass(((params.slideClass) + \" \" + (params.slideBlankClass)));\n        $wrapperEl.append(blankNode);\n      }\n      slides = $wrapperEl.children((\".\" + (params.slideClass)));\n    }\n  }\n\n  if (params.slidesPerView === 'auto' && !params.loopedSlides) { params.loopedSlides = slides.length; }\n\n  swiper.loopedSlides = parseInt(params.loopedSlides || params.slidesPerView, 10);\n  swiper.loopedSlides += params.loopAdditionalSlides;\n  if (swiper.loopedSlides > slides.length) {\n    swiper.loopedSlides = slides.length;\n  }\n\n  var prependSlides = [];\n  var appendSlides = [];\n  slides.each(function (index, el) {\n    var slide = $$1$1(el);\n    if (index < swiper.loopedSlides) { appendSlides.push(el); }\n    if (index < slides.length && index >= slides.length - swiper.loopedSlides) { prependSlides.push(el); }\n    slide.attr('data-swiper-slide-index', index);\n  });\n  for (var i$1 = 0; i$1 < appendSlides.length; i$1 += 1) {\n    $wrapperEl.append($$1$1(appendSlides[i$1].cloneNode(true)).addClass(params.slideDuplicateClass));\n  }\n  for (var i$2 = prependSlides.length - 1; i$2 >= 0; i$2 -= 1) {\n    $wrapperEl.prepend($$1$1(prependSlides[i$2].cloneNode(true)).addClass(params.slideDuplicateClass));\n  }\n};\n\nvar loopFix = function () {\n  var swiper = this;\n  var params = swiper.params;\n  var activeIndex = swiper.activeIndex;\n  var slides = swiper.slides;\n  var loopedSlides = swiper.loopedSlides;\n  var allowSlidePrev = swiper.allowSlidePrev;\n  var allowSlideNext = swiper.allowSlideNext;\n  var newIndex;\n  swiper.allowSlidePrev = true;\n  swiper.allowSlideNext = true;\n  // Fix For Negative Oversliding\n  if (activeIndex < loopedSlides) {\n    newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;\n    newIndex += loopedSlides;\n    swiper.slideTo(newIndex, 0, false, true);\n  } else if ((params.slidesPerView === 'auto' && activeIndex >= loopedSlides * 2) || (activeIndex > slides.length - (params.slidesPerView * 2))) {\n    // Fix For Positive Oversliding\n    newIndex = -slides.length + activeIndex + loopedSlides;\n    newIndex += loopedSlides;\n    swiper.slideTo(newIndex, 0, false, true);\n  }\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n};\n\nvar loopDestroy = function () {\n  var swiper = this;\n  var $wrapperEl = swiper.$wrapperEl;\n  var params = swiper.params;\n  var slides = swiper.slides;\n  $wrapperEl.children((\".\" + (params.slideClass) + \".\" + (params.slideDuplicateClass))).remove();\n  slides.removeAttr('data-swiper-slide-index');\n};\n\nvar loop = {\n  loopCreate: loopCreate,\n  loopFix: loopFix,\n  loopDestroy: loopDestroy,\n};\n\nvar setGrabCursor = function (moving) {\n  var swiper = this;\n  if (Support$1.touch || !swiper.params.simulateTouch) { return; }\n  var el = swiper.el;\n  el.style.cursor = 'move';\n  el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n  el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n  el.style.cursor = moving ? 'grabbing' : 'grab';\n};\n\nvar unsetGrabCursor = function () {\n  var swiper = this;\n  if (Support$1.touch) { return; }\n  swiper.el.style.cursor = '';\n};\n\nvar grabCursor = {\n  setGrabCursor: setGrabCursor,\n  unsetGrabCursor: unsetGrabCursor,\n};\n\nvar appendSlide = function (slides) {\n  var swiper = this;\n  var $wrapperEl = swiper.$wrapperEl;\n  var params = swiper.params;\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (var i = 0; i < slides.length; i += 1) {\n      if (slides[i]) { $wrapperEl.append(slides[i]); }\n    }\n  } else {\n    $wrapperEl.append(slides);\n  }\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!(params.observer && Support$1.observer)) {\n    swiper.update();\n  }\n};\n\nvar prependSlide = function (slides) {\n  var swiper = this;\n  var params = swiper.params;\n  var $wrapperEl = swiper.$wrapperEl;\n  var activeIndex = swiper.activeIndex;\n\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n  var newActiveIndex = activeIndex + 1;\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (var i = 0; i < slides.length; i += 1) {\n      if (slides[i]) { $wrapperEl.prepend(slides[i]); }\n    }\n    newActiveIndex = activeIndex + slides.length;\n  } else {\n    $wrapperEl.prepend(slides);\n  }\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!(params.observer && Support$1.observer)) {\n    swiper.update();\n  }\n  swiper.slideTo(newActiveIndex, 0, false);\n};\n\nvar removeSlide = function (slidesIndexes) {\n  var swiper = this;\n  var params = swiper.params;\n  var $wrapperEl = swiper.$wrapperEl;\n  var activeIndex = swiper.activeIndex;\n\n  if (params.loop) {\n    swiper.loopDestroy();\n    swiper.slides = $wrapperEl.children((\".\" + (params.slideClass)));\n  }\n  var newActiveIndex = activeIndex;\n  var indexToRemove;\n\n  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n    for (var i = 0; i < slidesIndexes.length; i += 1) {\n      indexToRemove = slidesIndexes[i];\n      if (swiper.slides[indexToRemove]) { swiper.slides.eq(indexToRemove).remove(); }\n      if (indexToRemove < newActiveIndex) { newActiveIndex -= 1; }\n    }\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  } else {\n    indexToRemove = slidesIndexes;\n    if (swiper.slides[indexToRemove]) { swiper.slides.eq(indexToRemove).remove(); }\n    if (indexToRemove < newActiveIndex) { newActiveIndex -= 1; }\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  }\n\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n\n  if (!(params.observer && Support$1.observer)) {\n    swiper.update();\n  }\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n};\n\nvar removeAllSlides = function () {\n  var swiper = this;\n\n  var slidesIndexes = [];\n  for (var i = 0; i < swiper.slides.length; i += 1) {\n    slidesIndexes.push(i);\n  }\n  swiper.removeSlide(slidesIndexes);\n};\n\nvar manipulation = {\n  appendSlide: appendSlide,\n  prependSlide: prependSlide,\n  removeSlide: removeSlide,\n  removeAllSlides: removeAllSlides,\n};\n\nvar onTouchStart = function (event) {\n  var swiper = this;\n  var data = swiper.touchEventsData;\n  var params = swiper.params;\n  var touches = swiper.touches;\n  var e = event;\n  if (e.originalEvent) { e = e.originalEvent; }\n  data.isTouchEvent = e.type === 'touchstart';\n  if (!data.isTouchEvent && 'which' in e && e.which === 3) { return; }\n  if (data.isTouched && data.isMoved) { return; }\n  if (params.noSwiping && $$1$1(e.target).closest((\".\" + (params.noSwipingClass)))[0]) {\n    swiper.allowClick = true;\n    return;\n  }\n  if (params.swipeHandler) {\n    if (!$$1$1(e).closest(params.swipeHandler)[0]) { return; }\n  }\n\n  touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n  touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n  var startX = touches.currentX;\n  var startY = touches.currentY;\n\n  // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore\n\n  if (\n    Device.ios &&\n    !Device.cordova &&\n    params.iOSEdgeSwipeDetection &&\n    (startX <= params.iOSEdgeSwipeThreshold) &&\n    (startX >= window.screen.width - params.iOSEdgeSwipeThreshold)\n  ) {\n    return;\n  }\n\n  Utils.extend(data, {\n    isTouched: true,\n    isMoved: false,\n    allowTouchCallbacks: true,\n    isScrolling: undefined,\n    startMoving: undefined,\n  });\n\n  touches.startX = startX;\n  touches.startY = startY;\n  data.touchStartTime = Utils.now();\n  swiper.allowClick = true;\n  swiper.updateSize();\n  swiper.swipeDirection = undefined;\n  if (params.threshold > 0) { data.allowThresholdMove = false; }\n  if (e.type !== 'touchstart') {\n    var preventDefault = true;\n    if ($$1$1(e.target).is(data.formElements)) { preventDefault = false; }\n    if (document.activeElement && $$1$1(document.activeElement).is(data.formElements)) {\n      document.activeElement.blur();\n    }\n    if (preventDefault && swiper.allowTouchMove) {\n      e.preventDefault();\n    }\n  }\n  swiper.emit('touchStart', e);\n};\n\nvar onTouchMove = function (event) {\n  var swiper = this;\n  var data = swiper.touchEventsData;\n  var params = swiper.params;\n  var touches = swiper.touches;\n  var rtl = swiper.rtl;\n  var e = event;\n  if (e.originalEvent) { e = e.originalEvent; }\n  if (data.isTouchEvent && e.type === 'mousemove') { return; }\n  var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n  var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n  if (e.preventedByNestedSwiper) {\n    touches.startX = pageX;\n    touches.startY = pageY;\n    return;\n  }\n  if (!swiper.allowTouchMove) {\n    // isMoved = true;\n    swiper.allowClick = false;\n    if (data.isTouched) {\n      Utils.extend(touches, {\n        startX: pageX,\n        startY: pageY,\n        currentX: pageX,\n        currentY: pageY,\n      });\n      data.touchStartTime = Utils.now();\n    }\n    return;\n  }\n  if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n    if (swiper.isVertical()) {\n      // Vertical\n      if (\n        (pageY < touches.startY && swiper.translate <= swiper.maxTranslate()) ||\n        (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n      ) {\n        data.isTouched = false;\n        data.isMoved = false;\n        return;\n      }\n    } else if (\n      (pageX < touches.startX && swiper.translate <= swiper.maxTranslate()) ||\n      (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n    ) {\n      return;\n    }\n  }\n  if (data.isTouchEvent && document.activeElement) {\n    if (e.target === document.activeElement && $$1$1(e.target).is(data.formElements)) {\n      data.isMoved = true;\n      swiper.allowClick = false;\n      return;\n    }\n  }\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchMove', e);\n  }\n  if (e.targetTouches && e.targetTouches.length > 1) { return; }\n\n  touches.currentX = pageX;\n  touches.currentY = pageY;\n\n  var diffX = touches.currentX - touches.startX;\n  var diffY = touches.currentY - touches.startY;\n\n  if (typeof data.isScrolling === 'undefined') {\n    var touchAngle;\n    if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) {\n      data.isScrolling = false;\n    } else {\n      // eslint-disable-next-line\n      if ((diffX * diffX) + (diffY * diffY) >= 25) {\n        touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle);\n      }\n    }\n  }\n  if (data.isScrolling) {\n    swiper.emit('touchMoveOpposite', e);\n  }\n  if (typeof startMoving === 'undefined') {\n    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n      data.startMoving = true;\n    }\n  }\n  if (!data.isTouched) { return; }\n  if (data.isScrolling) {\n    data.isTouched = false;\n    return;\n  }\n  if (!data.startMoving) {\n    return;\n  }\n  swiper.allowClick = false;\n  e.preventDefault();\n  if (params.touchMoveStopPropagation && !params.nested) {\n    e.stopPropagation();\n  }\n\n  if (!data.isMoved) {\n    if (params.loop) {\n      swiper.loopFix();\n    }\n    data.startTranslate = swiper.getTranslate();\n    swiper.setTransition(0);\n    if (swiper.animating) {\n      swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n    }\n    data.allowMomentumBounce = false;\n    // Grab Cursor\n    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n      swiper.setGrabCursor(true);\n    }\n    swiper.emit('sliderFirstMove', e);\n  }\n  swiper.emit('sliderMove', e);\n  data.isMoved = true;\n\n  var diff = swiper.isHorizontal() ? diffX : diffY;\n  touches.diff = diff;\n\n  diff *= params.touchRatio;\n  if (rtl) { diff = -diff; }\n\n  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n  data.currentTranslate = diff + data.startTranslate;\n\n  var disableParentSwiper = true;\n  var resistanceRatio = params.resistanceRatio;\n  if (params.touchReleaseOnEdges) {\n    resistanceRatio = 0;\n  }\n  if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) {\n    disableParentSwiper = false;\n    if (params.resistance) { data.currentTranslate = (swiper.minTranslate() - 1) + (Math.pow( (-swiper.minTranslate() + data.startTranslate + diff), resistanceRatio )); }\n  } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n    disableParentSwiper = false;\n    if (params.resistance) { data.currentTranslate = (swiper.maxTranslate() + 1) - (Math.pow( (swiper.maxTranslate() - data.startTranslate - diff), resistanceRatio )); }\n  }\n\n  if (disableParentSwiper) {\n    e.preventedByNestedSwiper = true;\n  }\n\n  // Directions locks\n  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n\n\n  // Threshold\n  if (params.threshold > 0) {\n    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n      if (!data.allowThresholdMove) {\n        data.allowThresholdMove = true;\n        touches.startX = touches.currentX;\n        touches.startY = touches.currentY;\n        data.currentTranslate = data.startTranslate;\n        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n        return;\n      }\n    } else {\n      data.currentTranslate = data.startTranslate;\n      return;\n    }\n  }\n\n  if (!params.followFinger) { return; }\n\n  // Update active index in free mode\n  if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n  if (params.freeMode) {\n    // Velocity\n    if (data.velocities.length === 0) {\n      data.velocities.push({\n        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n        time: data.touchStartTime,\n      });\n    }\n    data.velocities.push({\n      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n      time: Utils.now(),\n    });\n  }\n  // Update progress\n  swiper.updateProgress(data.currentTranslate);\n  // Update translate\n  swiper.setTranslate(data.currentTranslate);\n};\n\nvar onTouchEnd = function (event) {\n  var swiper = this;\n  var data = swiper.touchEventsData;\n\n  var params = swiper.params;\n  var touches = swiper.touches;\n  var rtl = swiper.rtl;\n  var $wrapperEl = swiper.$wrapperEl;\n  var slidesGrid = swiper.slidesGrid;\n  var snapGrid = swiper.snapGrid;\n  var e = event;\n  if (e.originalEvent) { e = e.originalEvent; }\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchEnd', e);\n  }\n  data.allowTouchCallbacks = false;\n  if (!data.isTouched) { return; }\n  // Return Grab Cursor\n  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n    swiper.setGrabCursor(false);\n  }\n\n  // Time diff\n  var touchEndTime = Utils.now();\n  var timeDiff = touchEndTime - data.touchStartTime;\n\n  // Tap, doubleTap, Click\n  if (swiper.allowClick) {\n    swiper.updateClickedSlide(e);\n    swiper.emit('tap', e);\n    if (timeDiff < 300 && (touchEndTime - data.lastClickTime) > 300) {\n      if (data.clickTimeout) { clearTimeout(data.clickTimeout); }\n      data.clickTimeout = Utils.nextTick(function () {\n        if (!swiper || swiper.destroyed) { return; }\n        swiper.emit('click', e);\n      }, 300);\n    }\n    if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {\n      if (data.clickTimeout) { clearTimeout(data.clickTimeout); }\n      swiper.emit('doubleTap', e);\n    }\n  }\n\n  data.lastClickTime = Utils.now();\n  Utils.nextTick(function () {\n    if (!swiper.destroyed) { swiper.allowClick = true; }\n  });\n\n  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n    data.isTouched = false;\n    data.isMoved = false;\n    return;\n  }\n  data.isTouched = false;\n  data.isMoved = false;\n\n  var currentPos;\n  if (params.followFinger) {\n    currentPos = rtl ? swiper.translate : -swiper.translate;\n  } else {\n    currentPos = -data.currentTranslate;\n  }\n  if (params.freeMode) {\n    if (currentPos < -swiper.minTranslate()) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    } else if (currentPos > -swiper.maxTranslate()) {\n      if (swiper.slides.length < snapGrid.length) {\n        swiper.slideTo(snapGrid.length - 1);\n      } else {\n        swiper.slideTo(swiper.slides.length - 1);\n      }\n      return;\n    }\n\n    if (params.freeModeMomentum) {\n      if (data.velocities.length > 1) {\n        var lastMoveEvent = data.velocities.pop();\n        var velocityEvent = data.velocities.pop();\n\n        var distance = lastMoveEvent.position - velocityEvent.position;\n        var time = lastMoveEvent.time - velocityEvent.time;\n        swiper.velocity = distance / time;\n        swiper.velocity /= 2;\n        if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n          swiper.velocity = 0;\n        }\n        // this implies that the user stopped moving a finger then released.\n        // There would be no events with distance zero, so the last event is stale.\n        if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {\n          swiper.velocity = 0;\n        }\n      } else {\n        swiper.velocity = 0;\n      }\n      swiper.velocity *= params.freeModeMomentumVelocityRatio;\n\n      data.velocities.length = 0;\n      var momentumDuration = 1000 * params.freeModeMomentumRatio;\n      var momentumDistance = swiper.velocity * momentumDuration;\n\n      var newPosition = swiper.translate + momentumDistance;\n      if (rtl) { newPosition = -newPosition; }\n      var doBounce = false;\n      var afterBouncePosition;\n      var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n      if (newPosition < swiper.maxTranslate()) {\n        if (params.freeModeMomentumBounce) {\n          if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n            newPosition = swiper.maxTranslate() - bounceAmount;\n          }\n          afterBouncePosition = swiper.maxTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.maxTranslate();\n        }\n      } else if (newPosition > swiper.minTranslate()) {\n        if (params.freeModeMomentumBounce) {\n          if (newPosition - swiper.minTranslate() > bounceAmount) {\n            newPosition = swiper.minTranslate() + bounceAmount;\n          }\n          afterBouncePosition = swiper.minTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.minTranslate();\n        }\n      } else if (params.freeModeSticky) {\n        var nextSlide;\n        for (var j = 0; j < snapGrid.length; j += 1) {\n          if (snapGrid[j] > -newPosition) {\n            nextSlide = j;\n            break;\n          }\n        }\n        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n          newPosition = snapGrid[nextSlide];\n        } else {\n          newPosition = snapGrid[nextSlide - 1];\n        }\n        newPosition = -newPosition;\n      }\n      // Fix duration\n      if (swiper.velocity !== 0) {\n        if (rtl) {\n          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n        } else {\n          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n        }\n      } else if (params.freeModeSticky) {\n        swiper.slideReset();\n        return;\n      }\n\n      if (params.freeModeMomentumBounce && doBounce) {\n        swiper.updateProgress(afterBouncePosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart();\n        swiper.animating = true;\n        $wrapperEl.transitionEnd(function () {\n          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) { return; }\n          swiper.emit('momentumBounce');\n\n          swiper.setTransition(params.speed);\n          swiper.setTranslate(afterBouncePosition);\n          $wrapperEl.transitionEnd(function () {\n            if (!swiper || swiper.destroyed) { return; }\n            swiper.transitionEnd();\n          });\n        });\n      } else if (swiper.velocity) {\n        swiper.updateProgress(newPosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart();\n        if (!swiper.animating) {\n          swiper.animating = true;\n          $wrapperEl.transitionEnd(function () {\n            if (!swiper || swiper.destroyed) { return; }\n            swiper.transitionEnd();\n          });\n        }\n      } else {\n        swiper.updateProgress(newPosition);\n      }\n\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n    if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n      swiper.updateProgress();\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n    return;\n  }\n\n  // Find current slide\n  var stopIndex = 0;\n  var groupSize = swiper.slidesSizesGrid[0];\n  for (var i = 0; i < slidesGrid.length; i += params.slidesPerGroup) {\n    if (typeof slidesGrid[i + params.slidesPerGroup] !== 'undefined') {\n      if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + params.slidesPerGroup]) {\n        stopIndex = i;\n        groupSize = slidesGrid[i + params.slidesPerGroup] - slidesGrid[i];\n      }\n    } else if (currentPos >= slidesGrid[i]) {\n      stopIndex = i;\n      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n    }\n  }\n\n  // Find current slide size\n  var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n\n  if (timeDiff > params.longSwipesMs) {\n    // Long touches\n    if (!params.longSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    if (swiper.swipeDirection === 'next') {\n      if (ratio >= params.longSwipesRatio) { swiper.slideTo(stopIndex + params.slidesPerGroup); }\n      else { swiper.slideTo(stopIndex); }\n    }\n    if (swiper.swipeDirection === 'prev') {\n      if (ratio > (1 - params.longSwipesRatio)) { swiper.slideTo(stopIndex + params.slidesPerGroup); }\n      else { swiper.slideTo(stopIndex); }\n    }\n  } else {\n    // Short swipes\n    if (!params.shortSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    if (swiper.swipeDirection === 'next') {\n      swiper.slideTo(stopIndex + params.slidesPerGroup);\n    }\n    if (swiper.swipeDirection === 'prev') {\n      swiper.slideTo(stopIndex);\n    }\n  }\n};\n\nvar onResize = function () {\n  var swiper = this;\n\n  var params = swiper.params;\n  var el = swiper.el;\n\n  if (el && el.offsetWidth === 0) { return; }\n\n  // Breakpoints\n  if (params.breakpoints) {\n    swiper.setBreakpoint();\n  }\n\n  // Save locks\n  var allowSlideNext = swiper.allowSlideNext;\n  var allowSlidePrev = swiper.allowSlidePrev;\n\n  // Disable locks on resize\n  swiper.allowSlideNext = true;\n  swiper.allowSlidePrev = true;\n\n  swiper.updateSize();\n  swiper.updateSlides();\n\n  if (params.freeMode) {\n    var newTranslate = Math.min(Math.max(swiper.translate, swiper.maxTranslate()), swiper.minTranslate());\n    swiper.setTranslate(newTranslate);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n\n    if (params.autoHeight) {\n      swiper.updateAutoHeight();\n    }\n  } else {\n    swiper.updateSlidesClasses();\n    if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n      swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n    } else {\n      swiper.slideTo(swiper.activeIndex, 0, false, true);\n    }\n  }\n  // Return locks after resize\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n};\n\nvar onClick = function (e) {\n  var swiper = this;\n  if (!swiper.allowClick) {\n    if (swiper.params.preventClicks) { e.preventDefault(); }\n    if (swiper.params.preventClicksPropagation && swiper.animating) {\n      e.stopPropagation();\n      e.stopImmediatePropagation();\n    }\n  }\n};\n\nfunction attachEvents() {\n  var swiper = this;\n\n  var params = swiper.params;\n  var touchEvents = swiper.touchEvents;\n  var el = swiper.el;\n  var wrapperEl = swiper.wrapperEl;\n\n  {\n    swiper.onTouchStart = onTouchStart.bind(swiper);\n    swiper.onTouchMove = onTouchMove.bind(swiper);\n    swiper.onTouchEnd = onTouchEnd.bind(swiper);\n  }\n\n  swiper.onClick = onClick.bind(swiper);\n\n  var target = params.touchEventsTarget === 'container' ? el : wrapperEl;\n  var capture = !!params.nested;\n\n  // Touch Events\n  {\n    if (Browser.ie) {\n      target.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n      (Support$1.touch ? target : document).addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n      (Support$1.touch ? target : document).addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n    } else {\n      if (Support$1.touch) {\n        var passiveListener = touchEvents.start === 'touchstart' && Support$1.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n        target.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n        target.addEventListener(touchEvents.move, swiper.onTouchMove, Support$1.passiveListener ? { passive: false, capture: capture } : capture);\n        target.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n      }\n      if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support$1.touch && Device.ios)) {\n        target.addEventListener('mousedown', swiper.onTouchStart, false);\n        document.addEventListener('mousemove', swiper.onTouchMove, capture);\n        document.addEventListener('mouseup', swiper.onTouchEnd, false);\n      }\n    }\n    // Prevent Links Clicks\n    if (params.preventClicks || params.preventClicksPropagation) {\n      target.addEventListener('click', swiper.onClick, true);\n    }\n  }\n\n  // Resize handler\n  swiper.on('resize observerUpdate', onResize);\n}\n\nfunction detachEvents() {\n  var swiper = this;\n\n  var params = swiper.params;\n  var touchEvents = swiper.touchEvents;\n  var el = swiper.el;\n  var wrapperEl = swiper.wrapperEl;\n\n  var target = params.touchEventsTarget === 'container' ? el : wrapperEl;\n  var capture = !!params.nested;\n\n  // Touch Events\n  {\n    if (Browser.ie) {\n      target.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n      (Support$1.touch ? target : document).removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n      (Support$1.touch ? target : document).removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n    } else {\n      if (Support$1.touch) {\n        var passiveListener = touchEvents.start === 'onTouchStart' && Support$1.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n        target.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n        target.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n        target.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n      }\n      if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support$1.touch && Device.ios)) {\n        target.removeEventListener('mousedown', swiper.onTouchStart, false);\n        document.removeEventListener('mousemove', swiper.onTouchMove, capture);\n        document.removeEventListener('mouseup', swiper.onTouchEnd, false);\n      }\n    }\n    // Prevent Links Clicks\n    if (params.preventClicks || params.preventClicksPropagation) {\n      target.removeEventListener('click', swiper.onClick, true);\n    }\n  }\n\n  // Resize handler\n  swiper.off('resize observerUpdate', onResize);\n}\n\nvar events = {\n  attachEvents: attachEvents,\n  detachEvents: detachEvents,\n};\n\nvar setBreakpoint = function () {\n  var swiper = this;\n  var activeIndex = swiper.activeIndex;\n  var loopedSlides = swiper.loopedSlides; if ( loopedSlides === void 0 ) loopedSlides = 0;\n  var params = swiper.params;\n  var breakpoints = params.breakpoints;\n  if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) { return; }\n  // Set breakpoint for window width and update parameters\n  var breakpoint = swiper.getBreakpoint(breakpoints);\n  if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n    var breakPointsParams = breakpoint in breakpoints ? breakpoints[breakpoint] : swiper.originalParams;\n    var needsReLoop = params.loop && (breakPointsParams.slidesPerView !== params.slidesPerView);\n\n    Utils.extend(swiper.params, breakPointsParams);\n\n    Utils.extend(swiper, {\n      allowTouchMove: swiper.params.allowTouchMove,\n      allowSlideNext: swiper.params.allowSlideNext,\n      allowSlidePrev: swiper.params.allowSlidePrev,\n    });\n\n    swiper.currentBreakpoint = breakpoint;\n\n    if (needsReLoop) {\n      swiper.loopDestroy();\n      swiper.loopCreate();\n      swiper.updateSlides();\n      swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);\n    }\n    swiper.emit('breakpoint', breakPointsParams);\n  }\n};\n\nvar getBreakpoint = function (breakpoints) {\n  // Get breakpoint for window width\n  if (!breakpoints) { return undefined; }\n  var breakpoint = false;\n  var points = [];\n  Object.keys(breakpoints).forEach(function (point) {\n    points.push(point);\n  });\n  points.sort(function (a, b) { return parseInt(a, 10) - parseInt(b, 10); });\n  for (var i = 0; i < points.length; i += 1) {\n    var point = points[i];\n    if (point >= window.innerWidth && !breakpoint) {\n      breakpoint = point;\n    }\n  }\n  return breakpoint || 'max';\n};\n\nvar breakpoints = { setBreakpoint: setBreakpoint, getBreakpoint: getBreakpoint };\n\nvar addClasses = function () {\n  var swiper = this;\n  var classNames = swiper.classNames;\n  var params = swiper.params;\n  var rtl = swiper.rtl;\n  var $el = swiper.$el;\n  var suffixes = [];\n\n  suffixes.push(params.direction);\n\n  if (params.freeMode) {\n    suffixes.push('free-mode');\n  }\n  if (!Support$1.flexbox) {\n    suffixes.push('no-flexbox');\n  }\n  if (params.autoHeight) {\n    suffixes.push('autoheight');\n  }\n  if (rtl) {\n    suffixes.push('rtl');\n  }\n  if (params.slidesPerColumn > 1) {\n    suffixes.push('multirow');\n  }\n  if (Device.android) {\n    suffixes.push('android');\n  }\n  if (Device.ios) {\n    suffixes.push('ios');\n  }\n  // WP8 Touch Events Fix\n  if (window.navigator.pointerEnabled || window.navigator.msPointerEnabled) {\n    suffixes.push((\"wp8-\" + (params.direction)));\n  }\n\n  suffixes.forEach(function (suffix) {\n    classNames.push(params.containerModifierClass + suffix);\n  });\n\n  $el.addClass(classNames.join(' '));\n};\n\nvar removeClasses = function () {\n  var swiper = this;\n  var $el = swiper.$el;\n  var classNames = swiper.classNames;\n\n  $el.removeClass(classNames.join(' '));\n};\n\nvar classes = { addClasses: addClasses, removeClasses: removeClasses };\n\nvar loadImage = function (imageEl, src, srcset, sizes, checkForComplete, callback) {\n  var image;\n  function onReady() {\n    if (callback) { callback(); }\n  }\n  if (!imageEl.complete || !checkForComplete) {\n    if (src) {\n      image = new window.Image();\n      image.onload = onReady;\n      image.onerror = onReady;\n      if (sizes) {\n        image.sizes = sizes;\n      }\n      if (srcset) {\n        image.srcset = srcset;\n      }\n      if (src) {\n        image.src = src;\n      }\n    } else {\n      onReady();\n    }\n  } else {\n    // image already loaded...\n    onReady();\n  }\n};\n\nvar preloadImages = function () {\n  var swiper = this;\n  swiper.imagesToLoad = swiper.$el.find('img');\n  function onReady() {\n    if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) { return; }\n    if (swiper.imagesLoaded !== undefined) { swiper.imagesLoaded += 1; }\n    if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n      if (swiper.params.updateOnImagesReady) { swiper.update(); }\n      swiper.emit('imagesReady');\n    }\n  }\n  for (var i = 0; i < swiper.imagesToLoad.length; i += 1) {\n    var imageEl = swiper.imagesToLoad[i];\n    swiper.loadImage(\n      imageEl,\n      imageEl.currentSrc || imageEl.getAttribute('src'),\n      imageEl.srcset || imageEl.getAttribute('srcset'),\n      imageEl.sizes || imageEl.getAttribute('sizes'),\n      true,\n      onReady\n    );\n  }\n};\n\nvar images = {\n  loadImage: loadImage,\n  preloadImages: preloadImages,\n};\n\nvar defaults = {\n  init: true,\n  direction: 'horizontal',\n  touchEventsTarget: 'container',\n  initialSlide: 0,\n  speed: 300,\n\n  // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).\n  iOSEdgeSwipeDetection: false,\n  iOSEdgeSwipeThreshold: 20,\n\n  // Free mode\n  freeMode: false,\n  freeModeMomentum: true,\n  freeModeMomentumRatio: 1,\n  freeModeMomentumBounce: true,\n  freeModeMomentumBounceRatio: 1,\n  freeModeMomentumVelocityRatio: 1,\n  freeModeSticky: false,\n  freeModeMinimumVelocity: 0.02,\n\n  // Autoheight\n  autoHeight: false,\n\n  // Set wrapper width\n  setWrapperSize: false,\n\n  // Virtual Translate\n  virtualTranslate: false,\n\n  // Effects\n  effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n  // Breakpoints\n  breakpoints: undefined,\n\n  // Slides grid\n  spaceBetween: 0,\n  slidesPerView: 1,\n  slidesPerColumn: 1,\n  slidesPerColumnFill: 'column',\n  slidesPerGroup: 1,\n  centeredSlides: false,\n  slidesOffsetBefore: 0, // in px\n  slidesOffsetAfter: 0, // in px\n  normalizeSlideIndex: true,\n\n  // Round length\n  roundLengths: false,\n\n  // Touches\n  touchRatio: 1,\n  touchAngle: 45,\n  simulateTouch: true,\n  shortSwipes: true,\n  longSwipes: true,\n  longSwipesRatio: 0.5,\n  longSwipesMs: 300,\n  followFinger: true,\n  allowTouchMove: true,\n  threshold: 0,\n  touchMoveStopPropagation: true,\n  touchReleaseOnEdges: false,\n\n  // Unique Navigation Elements\n  uniqueNavElements: true,\n\n  // Resistance\n  resistance: true,\n  resistanceRatio: 0.85,\n\n  // Progress\n  watchSlidesProgress: false,\n  watchSlidesVisibility: false,\n\n  // Cursor\n  grabCursor: false,\n\n  // Clicks\n  preventClicks: true,\n  preventClicksPropagation: true,\n  slideToClickedSlide: false,\n\n  // Images\n  preloadImages: true,\n  updateOnImagesReady: true,\n\n  // loop\n  loop: false,\n  loopAdditionalSlides: 0,\n  loopedSlides: null,\n  loopFillGroupWithBlank: false,\n\n  // Swiping/no swiping\n  allowSlidePrev: true,\n  allowSlideNext: true,\n  swipeHandler: null, // '.swipe-handler',\n  noSwiping: true,\n  noSwipingClass: 'swiper-no-swiping',\n\n  // Passive Listeners\n  passiveListeners: true,\n\n  // NS\n  containerModifierClass: 'swiper-container-', // NEW\n  slideClass: 'swiper-slide',\n  slideBlankClass: 'swiper-slide-invisible-blank',\n  slideActiveClass: 'swiper-slide-active',\n  slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n  slideVisibleClass: 'swiper-slide-visible',\n  slideDuplicateClass: 'swiper-slide-duplicate',\n  slideNextClass: 'swiper-slide-next',\n  slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n  slidePrevClass: 'swiper-slide-prev',\n  slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n  wrapperClass: 'swiper-wrapper',\n\n  // Callbacks\n  runCallbacksOnInit: true,\n};\n\nvar prototypes = {\n  update: update,\n  translate: translate,\n  transition: transition$1,\n  slide: slide,\n  loop: loop,\n  grabCursor: grabCursor,\n  manipulation: manipulation,\n  events: events,\n  breakpoints: breakpoints,\n  classes: classes,\n  images: images,\n};\n\nvar extendedDefaults = {};\n\nvar Swiper$2 = (function (SwiperClass$$1) {\n  function Swiper() {\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n\n    var el;\n    var params;\n    if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {\n      params = args[0];\n    } else {\n      var assign;\n      (assign = args, el = assign[0], params = assign[1]);\n    }\n    if (!params) { params = {}; }\n\n    params = Utils.extend({}, params);\n    if (el && !params.el) { params.el = el; }\n\n    SwiperClass$$1.call(this, params);\n\n    Object.keys(prototypes).forEach(function (prototypeGroup) {\n      Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) {\n        if (!Swiper.prototype[protoMethod]) {\n          Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n        }\n      });\n    });\n\n    // Swiper Instance\n    var swiper = this;\n    if (typeof swiper.modules === 'undefined') {\n      swiper.modules = {};\n    }\n    Object.keys(swiper.modules).forEach(function (moduleName) {\n      var module = swiper.modules[moduleName];\n      if (module.params) {\n        var moduleParamName = Object.keys(module.params)[0];\n        var moduleParams = module.params[moduleParamName];\n        if (typeof moduleParams !== 'object') { return; }\n        if (!(moduleParamName in params && 'enabled' in moduleParams)) { return; }\n        if (params[moduleParamName] === true) {\n          params[moduleParamName] = { enabled: true };\n        }\n        if (\n          typeof params[moduleParamName] === 'object' &&\n          !('enabled' in params[moduleParamName])\n        ) {\n          params[moduleParamName].enabled = true;\n        }\n        if (!params[moduleParamName]) { params[moduleParamName] = { enabled: false }; }\n      }\n    });\n\n    // Extend defaults with modules params\n    var swiperParams = Utils.extend({}, defaults);\n    swiper.useModulesParams(swiperParams);\n\n    // Extend defaults with passed params\n    swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);\n    swiper.originalParams = Utils.extend({}, swiper.params);\n    swiper.passedParams = Utils.extend({}, params);\n\n    // Find el\n    var $el = $$1$1(swiper.params.el);\n    el = $el[0];\n\n    if (!el) {\n      return undefined;\n    }\n\n    if ($el.length > 1) {\n      var swipers = [];\n      $el.each(function (index, containerEl) {\n        var newParams = Utils.extend({}, params, { el: containerEl });\n        swipers.push(new Swiper(newParams));\n      });\n      return swipers;\n    }\n\n    el.swiper = swiper;\n    $el.data('swiper', swiper);\n\n    // Find Wrapper\n    var $wrapperEl = $el.children((\".\" + (swiper.params.wrapperClass)));\n\n    // Extend Swiper\n    Utils.extend(swiper, {\n      $el: $el,\n      el: el,\n      $wrapperEl: $wrapperEl,\n      wrapperEl: $wrapperEl[0],\n\n      // Classes\n      classNames: [],\n\n      // Slides\n      slides: $$1$1(),\n      slidesGrid: [],\n      snapGrid: [],\n      slidesSizesGrid: [],\n\n      // isDirection\n      isHorizontal: function isHorizontal() {\n        return swiper.params.direction === 'horizontal';\n      },\n      isVertical: function isVertical() {\n        return swiper.params.direction === 'vertical';\n      },\n      // RTL\n      rtl: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n      wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n\n      // Indexes\n      activeIndex: 0,\n      realIndex: 0,\n\n      //\n      isBeginning: true,\n      isEnd: false,\n\n      // Props\n      translate: 0,\n      progress: 0,\n      velocity: 0,\n      animating: false,\n\n      // Locks\n      allowSlideNext: swiper.params.allowSlideNext,\n      allowSlidePrev: swiper.params.allowSlidePrev,\n\n      // Touch Events\n      touchEvents: (function touchEvents() {\n        var touch = ['touchstart', 'touchmove', 'touchend'];\n        var desktop = ['mousedown', 'mousemove', 'mouseup'];\n        if (window.navigator.pointerEnabled) {\n          desktop = ['pointerdown', 'pointermove', 'pointerup'];\n        } else if (window.navigator.msPointerEnabled) {\n          desktop = ['MSPointerDown', 'MsPointerMove', 'MsPointerUp'];\n        }\n\n        return {\n          start: Support$1.touch || !swiper.params.simulateTouch ? touch[0] : desktop[0],\n          move: Support$1.touch || !swiper.params.simulateTouch ? touch[1] : desktop[1],\n          end: Support$1.touch || !swiper.params.simulateTouch ? touch[2] : desktop[2],\n        };\n      }()),\n      touchEventsData: {\n        isTouched: undefined,\n        isMoved: undefined,\n        allowTouchCallbacks: undefined,\n        touchStartTime: undefined,\n        isScrolling: undefined,\n        currentTranslate: undefined,\n        startTranslate: undefined,\n        allowThresholdMove: undefined,\n        // Form elements to match\n        formElements: 'input, select, option, textarea, button, video',\n        // Last click time\n        lastClickTime: Utils.now(),\n        clickTimeout: undefined,\n        // Velocities\n        velocities: [],\n        allowMomentumBounce: undefined,\n        isTouchEvent: undefined,\n        startMoving: undefined,\n      },\n\n      // Clicks\n      allowClick: true,\n\n      // Touches\n      allowTouchMove: swiper.params.allowTouchMove,\n\n      touches: {\n        startX: 0,\n        startY: 0,\n        currentX: 0,\n        currentY: 0,\n        diff: 0,\n      },\n\n      // Images\n      imagesToLoad: [],\n      imagesLoaded: 0,\n\n    });\n\n    // Install Modules\n    swiper.useModules();\n\n    // Init\n    if (swiper.params.init) {\n      swiper.init();\n    }\n\n    // Return app instance\n    return swiper;\n  }\n\n  if ( SwiperClass$$1 ) Swiper.__proto__ = SwiperClass$$1;\n  Swiper.prototype = Object.create( SwiperClass$$1 && SwiperClass$$1.prototype );\n  Swiper.prototype.constructor = Swiper;\n\n  var staticAccessors = { extendedDefaults: { configurable: true },defaults: { configurable: true },Class: { configurable: true },$: { configurable: true } };\n  Swiper.prototype.slidesPerViewDynamic = function slidesPerViewDynamic () {\n    var swiper = this;\n    var params = swiper.params;\n    var slides = swiper.slides;\n    var slidesGrid = swiper.slidesGrid;\n    var swiperSize = swiper.size;\n    var activeIndex = swiper.activeIndex;\n    var spv = 1;\n    if (params.centeredSlides) {\n      var slideSize = slides[activeIndex].swiperSlideSize;\n      var breakLoop;\n      for (var i = activeIndex + 1; i < slides.length; i += 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) { breakLoop = true; }\n        }\n      }\n      for (var i$1 = activeIndex - 1; i$1 >= 0; i$1 -= 1) {\n        if (slides[i$1] && !breakLoop) {\n          slideSize += slides[i$1].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) { breakLoop = true; }\n        }\n      }\n    } else {\n      for (var i$2 = activeIndex + 1; i$2 < slides.length; i$2 += 1) {\n        if (slidesGrid[i$2] - slidesGrid[activeIndex] < swiperSize) {\n          spv += 1;\n        }\n      }\n    }\n    return spv;\n  };\n  Swiper.prototype.update = function update$$1 () {\n    var swiper = this;\n    if (!swiper || swiper.destroyed) { return; }\n    swiper.updateSize();\n    swiper.updateSlides();\n    swiper.updateProgress();\n    swiper.updateSlidesClasses();\n\n    var newTranslate;\n    function setTranslate() {\n      newTranslate = Math.min(Math.max(swiper.translate, swiper.maxTranslate()), swiper.minTranslate());\n      swiper.setTranslate(newTranslate);\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n    var translated;\n    if (swiper.params.freeMode) {\n      setTranslate();\n      if (swiper.params.autoHeight) {\n        swiper.updateAutoHeight();\n      }\n    } else {\n      if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n        translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n      } else {\n        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n      }\n      if (!translated) {\n        setTranslate();\n      }\n    }\n    swiper.emit('update');\n  };\n  Swiper.prototype.init = function init () {\n    var swiper = this;\n    if (swiper.initialized) { return; }\n\n    swiper.emit('beforeInit');\n\n    // Set breakpoint\n    if (swiper.params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n\n    // Add Classes\n    swiper.addClasses();\n\n    // Create loop\n    if (swiper.params.loop) {\n      swiper.loopCreate();\n    }\n\n    // Update size\n    swiper.updateSize();\n\n    // Update slides\n    swiper.updateSlides();\n\n    // Set Grab Cursor\n    if (swiper.params.grabCursor) {\n      swiper.setGrabCursor();\n    }\n\n    if (swiper.params.preloadImages) {\n      swiper.preloadImages();\n    }\n\n    // Slide To Initial Slide\n    if (swiper.params.loop) {\n      swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);\n    } else {\n      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);\n    }\n\n    // Attach events\n    swiper.attachEvents();\n\n    // Init Flag\n    swiper.initialized = true;\n\n    // Emit\n    swiper.emit('init');\n  };\n  Swiper.prototype.destroy = function destroy (deleteInstance, cleanStyles) {\n    if ( deleteInstance === void 0 ) deleteInstance = true;\n    if ( cleanStyles === void 0 ) cleanStyles = true;\n\n    var swiper = this;\n    var params = swiper.params;\n    var $el = swiper.$el;\n    var $wrapperEl = swiper.$wrapperEl;\n    var slides = swiper.slides;\n    swiper.emit('beforeDestroy');\n\n    // Init Flag\n    swiper.initialized = false;\n\n    // Detach events\n    swiper.detachEvents();\n\n    // Destroy loop\n    if (params.loop) {\n      swiper.loopDestroy();\n    }\n\n    // Cleanup styles\n    if (cleanStyles) {\n      swiper.removeClasses();\n      $el.removeAttr('style');\n      $wrapperEl.removeAttr('style');\n      if (slides && slides.length) {\n        slides\n          .removeClass([\n            params.slideVisibleClass,\n            params.slideActiveClass,\n            params.slideNextClass,\n            params.slidePrevClass ].join(' '))\n          .removeAttr('style')\n          .removeAttr('data-swiper-slide-index')\n          .removeAttr('data-swiper-column')\n          .removeAttr('data-swiper-row');\n      }\n    }\n\n    swiper.emit('destroy');\n\n    // Detach emitter events\n    Object.keys(swiper.eventsListeners).forEach(function (eventName) {\n      swiper.off(eventName);\n    });\n\n    if (deleteInstance !== false) {\n      swiper.$el[0].swiper = null;\n      swiper.$el.data('swiper', null);\n      Utils.deleteProps(swiper);\n    }\n    swiper.destroyed = true;\n  };\n  Swiper.extendDefaults = function extendDefaults (newDefaults) {\n    Utils.extend(extendedDefaults, newDefaults);\n  };\n  staticAccessors.extendedDefaults.get = function () {\n    return extendedDefaults;\n  };\n  staticAccessors.defaults.get = function () {\n    return defaults;\n  };\n  staticAccessors.Class.get = function () {\n    return SwiperClass$$1;\n  };\n  staticAccessors.$.get = function () {\n    return $$1$1;\n  };\n\n  Object.defineProperties( Swiper, staticAccessors );\n\n  return Swiper;\n}(Framework7Class));\n\nvar Device$4 = {\n  name: 'device',\n  proto: {\n    device: Device,\n  },\n  static: {\n    device: Device,\n  },\n};\n\nvar Support$4 = {\n  name: 'support',\n  proto: {\n    support: Support$1,\n  },\n  static: {\n    support: Support$1,\n  },\n};\n\nvar Browser$2 = {\n  name: 'browser',\n  proto: {\n    browser: Browser,\n  },\n  static: {\n    browser: Browser,\n  },\n};\n\nvar Resize$1 = {\n  name: 'resize',\n  create: function create() {\n    var swiper = this;\n    Utils.extend(swiper, {\n      resize: {\n        resizeHandler: function resizeHandler() {\n          if (!swiper || !swiper.initialized) { return; }\n          swiper.emit('resize');\n        },\n        orientationChangeHandler: function orientationChangeHandler() {\n          if (!swiper || !swiper.initialized) { return; }\n          swiper.emit('orientationchange');\n        },\n      },\n    });\n  },\n  on: {\n    init: function init() {\n      var swiper = this;\n      // Emit resize\n      window.addEventListener('resize', swiper.resize.resizeHandler);\n\n      // Emit orientationchange\n      window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n    },\n    destroy: function destroy() {\n      var swiper = this;\n      window.removeEventListener('resize', swiper.resize.resizeHandler);\n      window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n    },\n  },\n};\n\nvar Observer = {\n  func: window.MutationObserver || window.WebkitMutationObserver,\n  attach: function attach(target, options) {\n    if ( options === void 0 ) options = {};\n\n    var swiper = this;\n\n    var ObserverFunc = Observer.func;\n    var observer = new ObserverFunc(function (mutations) {\n      mutations.forEach(function (mutation) {\n        swiper.emit('observerUpdate', mutation);\n      });\n    });\n\n    observer.observe(target, {\n      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n      childList: typeof options.childList === 'undefined' ? true : options.childList,\n      characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n    });\n\n    swiper.observer.observers.push(observer);\n  },\n  init: function init() {\n    var swiper = this;\n    if (!Support$1.observer || !swiper.params.observer) { return; }\n    if (swiper.params.observeParents) {\n      var containerParents = swiper.$el.parents();\n      for (var i = 0; i < containerParents.length; i += 1) {\n        swiper.observer.attach(containerParents[i]);\n      }\n    }\n    // Observe container\n    swiper.observer.attach(swiper.$el[0], { childList: false });\n\n    // Observe wrapper\n    swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });\n  },\n  destroy: function destroy() {\n    var swiper = this;\n    swiper.observer.observers.forEach(function (observer) {\n      observer.disconnect();\n    });\n    swiper.observer.observers = [];\n  },\n};\n\nvar Observer$1 = {\n  name: 'observer',\n  params: {\n    observer: false,\n    observeParents: false,\n  },\n  create: function create() {\n    var swiper = this;\n    Utils.extend(swiper, {\n      observer: {\n        init: Observer.init.bind(swiper),\n        attach: Observer.attach.bind(swiper),\n        destroy: Observer.destroy.bind(swiper),\n        observers: [],\n      },\n    });\n  },\n  on: {\n    init: function init() {\n      var swiper = this;\n      swiper.observer.init();\n    },\n    destroy: function destroy() {\n      var swiper = this;\n      swiper.observer.destroy();\n    },\n  },\n};\n\nvar Virtual = {\n  update: function update(force) {\n    var swiper = this;\n    var ref = swiper.params;\n    var slidesPerView = ref.slidesPerView;\n    var slidesPerGroup = ref.slidesPerGroup;\n    var centeredSlides = ref.centeredSlides;\n    var ref$1 = swiper.virtual;\n    var previousFrom = ref$1.from;\n    var previousTo = ref$1.to;\n    var slides = ref$1.slides;\n    var previousSlidesGrid = ref$1.slidesGrid;\n    var renderSlide = ref$1.renderSlide;\n    var previousOffset = ref$1.offset;\n    swiper.updateActiveIndex();\n    var activeIndex = swiper.activeIndex || 0;\n\n    var offsetProp;\n    if (swiper.rtl && swiper.isHorizontal()) { offsetProp = 'right'; }\n    else { offsetProp = swiper.isHorizontal() ? 'left' : 'top'; }\n\n    var slidesAfter;\n    var slidesBefore;\n    if (centeredSlides) {\n      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup;\n      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup;\n    } else {\n      slidesAfter = slidesPerView + (slidesPerGroup - 1);\n      slidesBefore = slidesPerGroup;\n    }\n    var from = Math.max((activeIndex || 0) - slidesBefore, 0);\n    var to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n    var offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n    Utils.extend(swiper.virtual, {\n      from: from,\n      to: to,\n      offset: offset,\n      slidesGrid: swiper.slidesGrid,\n    });\n\n    function onRendered() {\n      swiper.updateSlides();\n      swiper.updateProgress();\n      swiper.updateSlidesClasses();\n      if (swiper.lazy && swiper.params.lazy.enabled) {\n        swiper.lazy.load();\n      }\n    }\n\n    if (previousFrom === from && previousTo === to && !force) {\n      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n        swiper.slides.css(offsetProp, (offset + \"px\"));\n      }\n      swiper.updateProgress();\n      return;\n    }\n    if (swiper.params.virtual.renderExternal) {\n      swiper.params.virtual.renderExternal.call(swiper, {\n        offset: offset,\n        from: from,\n        to: to,\n        slides: (function getSlides() {\n          var slidesToRender = [];\n          for (var i = from; i <= to; i += 1) {\n            slidesToRender.push(slides[i]);\n          }\n          return slidesToRender;\n        }()),\n      });\n      onRendered();\n      return;\n    }\n    var prependIndexes = [];\n    var appendIndexes = [];\n    if (force) {\n      swiper.$wrapperEl.find((\".\" + (swiper.params.slideClass))).remove();\n    } else {\n      for (var i = previousFrom; i <= previousTo; i += 1) {\n        if (i < from || i > to) {\n          swiper.$wrapperEl.find((\".\" + (swiper.params.slideClass) + \"[data-swiper-slide-index=\\\"\" + i + \"\\\"]\")).remove();\n        }\n      }\n    }\n    for (var i$1 = 0; i$1 < slides.length; i$1 += 1) {\n      if (i$1 >= from && i$1 <= to) {\n        if (typeof previousTo === 'undefined' || force) {\n          appendIndexes.push(i$1);\n        } else {\n          if (i$1 > previousTo) { appendIndexes.push(i$1); }\n          if (i$1 < previousFrom) { prependIndexes.push(i$1); }\n        }\n      }\n    }\n    appendIndexes.forEach(function (index) {\n      swiper.$wrapperEl.append(renderSlide(slides[index], index));\n    });\n    prependIndexes.sort(function (a, b) { return a < b; }).forEach(function (index) {\n      swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n    });\n    swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, (offset + \"px\"));\n    onRendered();\n  },\n  renderSlide: function renderSlide(slide, index) {\n    var swiper = this;\n    var params = swiper.params.virtual;\n    if (params.cache && swiper.virtual.cache[index]) {\n      return swiper.virtual.cache[index];\n    }\n    var $slideEl = params.renderSlide\n      ? $$1$1(params.renderSlide.call(swiper, slide, index))\n      : $$1$1((\"<div class=\\\"\" + (swiper.params.slideClass) + \"\\\" data-swiper-slide-index=\\\"\" + index + \"\\\">\" + slide + \"</div>\"));\n    if (!$slideEl.attr('data-swiper-slide-index')) { $slideEl.attr('data-swiper-slide-index', index); }\n    if (params.cache) { swiper.virtual.cache[index] = $slideEl; }\n    return $slideEl;\n  },\n  appendSlide: function appendSlide(slide) {\n    var swiper = this;\n    swiper.virtual.slides.push(slide);\n    swiper.virtual.update(true);\n  },\n  prependSlide: function prependSlide(slide) {\n    var swiper = this;\n    swiper.virtual.slides.unshift(slide);\n    if (swiper.params.virtual.cache) {\n      var cache = swiper.virtual.cache;\n      var newCache = {};\n      Object.keys(cache).forEach(function (cachedIndex) {\n        newCache[cachedIndex + 1] = cache[cachedIndex];\n      });\n      swiper.virtual.cache = newCache;\n    }\n    swiper.virtual.update(true);\n    swiper.slideNext(0);\n  },\n};\n\nvar Virtual$1 = {\n  name: 'virtual',\n  params: {\n    virtual: {\n      enabled: false,\n      slides: [],\n      cache: true,\n      renderSlide: null,\n      renderExternal: null,\n    },\n  },\n  create: function create() {\n    var swiper = this;\n    Utils.extend(swiper, {\n      virtual: {\n        update: Virtual.update.bind(swiper),\n        appendSlide: Virtual.appendSlide.bind(swiper),\n        prependSlide: Virtual.prependSlide.bind(swiper),\n        renderSlide: Virtual.renderSlide.bind(swiper),\n        slides: swiper.params.virtual.slides,\n        cache: {},\n      },\n    });\n  },\n  on: {\n    beforeInit: function beforeInit() {\n      var swiper = this;\n      if (!swiper.params.virtual.enabled) { return; }\n      swiper.classNames.push(((swiper.params.containerModifierClass) + \"virtual\"));\n      var overwriteParams = {\n        watchSlidesProgress: true,\n      };\n      Utils.extend(swiper.params, overwriteParams);\n      Utils.extend(swiper.originalParams, overwriteParams);\n\n      swiper.virtual.update();\n    },\n    setTranslate: function setTranslate() {\n      var swiper = this;\n      if (!swiper.params.virtual.enabled) { return; }\n      swiper.virtual.update();\n    },\n  },\n};\n\nvar Navigation = {\n  update: function update() {\n    // Update Navigation Buttons\n    var swiper = this;\n    var params = swiper.params.navigation;\n\n    if (swiper.params.loop) { return; }\n    var ref = swiper.navigation;\n    var $nextEl = ref.$nextEl;\n    var $prevEl = ref.$prevEl;\n\n    if ($prevEl && $prevEl.length > 0) {\n      if (swiper.isBeginning) {\n        $prevEl.addClass(params.disabledClass);\n      } else {\n        $prevEl.removeClass(params.disabledClass);\n      }\n    }\n    if ($nextEl && $nextEl.length > 0) {\n      if (swiper.isEnd) {\n        $nextEl.addClass(params.disabledClass);\n      } else {\n        $nextEl.removeClass(params.disabledClass);\n      }\n    }\n  },\n  init: function init() {\n    var swiper = this;\n    var params = swiper.params.navigation;\n    if (!(params.nextEl || params.prevEl)) { return; }\n\n    var $nextEl;\n    var $prevEl;\n    if (params.nextEl) {\n      $nextEl = $$1$1(params.nextEl);\n      if (\n        swiper.params.uniqueNavElements &&\n        typeof params.nextEl === 'string' &&\n        $nextEl.length > 1 &&\n        swiper.$el.find(params.nextEl).length === 1\n      ) {\n        $nextEl = swiper.$el.find(params.nextEl);\n      }\n    }\n    if (params.prevEl) {\n      $prevEl = $$1$1(params.prevEl);\n      if (\n        swiper.params.uniqueNavElements &&\n        typeof params.prevEl === 'string' &&\n        $prevEl.length > 1 &&\n        swiper.$el.find(params.prevEl).length === 1\n      ) {\n        $prevEl = swiper.$el.find(params.prevEl);\n      }\n    }\n\n    if ($nextEl && $nextEl.length > 0) {\n      $nextEl.on('click', function (e) {\n        e.preventDefault();\n        if (swiper.isEnd && !swiper.params.loop) { return; }\n        swiper.slideNext();\n      });\n    }\n    if ($prevEl && $prevEl.length > 0) {\n      $prevEl.on('click', function (e) {\n        e.preventDefault();\n        if (swiper.isBeginning && !swiper.params.loop) { return; }\n        swiper.slidePrev();\n      });\n    }\n\n    Utils.extend(swiper.navigation, {\n      $nextEl: $nextEl,\n      nextEl: $nextEl && $nextEl[0],\n      $prevEl: $prevEl,\n      prevEl: $prevEl && $prevEl[0],\n    });\n  },\n  destroy: function destroy() {\n    var swiper = this;\n    var ref = swiper.navigation;\n    var $nextEl = ref.$nextEl;\n    var $prevEl = ref.$prevEl;\n    if ($nextEl && $nextEl.length) {\n      $nextEl.off('click');\n      $nextEl.removeClass(swiper.params.navigation.disabledClass);\n    }\n    if ($prevEl && $prevEl.length) {\n      $prevEl.off('click');\n      $prevEl.removeClass(swiper.params.navigation.disabledClass);\n    }\n  },\n};\n\nvar Navigation$1 = {\n  name: 'navigation',\n  params: {\n    navigation: {\n      nextEl: null,\n      prevEl: null,\n\n      hideOnClick: false,\n      disabledClass: 'swiper-button-disabled',\n      hiddenClass: 'swiper-button-hidden',\n    },\n  },\n  create: function create() {\n    var swiper = this;\n    Utils.extend(swiper, {\n      navigation: {\n        init: Navigation.init.bind(swiper),\n        update: Navigation.update.bind(swiper),\n        destroy: Navigation.destroy.bind(swiper),\n      },\n    });\n  },\n  on: {\n    init: function init() {\n      var swiper = this;\n      swiper.navigation.init();\n      swiper.navigation.update();\n    },\n    toEdge: function toEdge() {\n      var swiper = this;\n      swiper.navigation.update();\n    },\n    fromEdge: function fromEdge() {\n      var swiper = this;\n      swiper.navigation.update();\n    },\n    destroy: function destroy() {\n      var swiper = this;\n      swiper.navigation.destroy();\n    },\n    click: function click(e) {\n      var swiper = this;\n      var ref = swiper.navigation;\n      var $nextEl = ref.$nextEl;\n      var $prevEl = ref.$prevEl;\n      if (\n        swiper.params.navigation.hideOnClick &&\n        !$$1$1(e.target).is($prevEl) &&\n        !$$1$1(e.target).is($nextEl)\n      ) {\n        if ($nextEl) { $nextEl.toggleClass(swiper.params.navigation.hiddenClass); }\n        if ($prevEl) { $prevEl.toggleClass(swiper.params.navigation.hiddenClass); }\n      }\n    },\n  },\n};\n\nvar Pagination = {\n  update: function update() {\n    // Render || Update Pagination bullets/items\n    var swiper = this;\n    var rtl = swiper.rtl;\n    var params = swiper.params.pagination;\n    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }\n    var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n    var $el = swiper.pagination.$el;\n    // Current/Total\n    var current;\n    var total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n    if (swiper.params.loop) {\n      current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n      if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {\n        current -= (slidesLength - (swiper.loopedSlides * 2));\n      }\n      if (current > total - 1) { current -= total; }\n      if (current < 0 && swiper.params.paginationType !== 'bullets') { current = total + current; }\n    } else if (typeof swiper.snapIndex !== 'undefined') {\n      current = swiper.snapIndex;\n    } else {\n      current = swiper.activeIndex || 0;\n    }\n    // Types\n    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n      var bullets = swiper.pagination.bullets;\n      if (params.dynamicBullets) {\n        swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n        $el.css(swiper.isHorizontal() ? 'width' : 'height', ((swiper.pagination.bulletSize * 5) + \"px\"));\n      }\n      bullets.removeClass(((params.bulletActiveClass) + \" \" + (params.bulletActiveClass) + \"-next \" + (params.bulletActiveClass) + \"-next-next \" + (params.bulletActiveClass) + \"-prev \" + (params.bulletActiveClass) + \"-prev-prev\"));\n      if ($el.length > 1) {\n        bullets.each(function (index, bullet) {\n          var $bullet = $$1$1(bullet);\n          if ($bullet.index() === current) {\n            $bullet.addClass(params.bulletActiveClass);\n            if (params.dynamicBullets) {\n              $bullet\n                .prev()\n                .addClass(((params.bulletActiveClass) + \"-prev\"))\n                .prev()\n                .addClass(((params.bulletActiveClass) + \"-prev-prev\"));\n              $bullet\n                .next()\n                .addClass(((params.bulletActiveClass) + \"-next\"))\n                .next()\n                .addClass(((params.bulletActiveClass) + \"-next-next\"));\n            }\n          }\n        });\n      } else {\n        var $bullet = bullets.eq(current);\n        $bullet.addClass(params.bulletActiveClass);\n        if (params.dynamicBullets) {\n          $bullet\n            .prev()\n            .addClass(((params.bulletActiveClass) + \"-prev\"))\n            .prev()\n            .addClass(((params.bulletActiveClass) + \"-prev-prev\"));\n          $bullet\n            .next()\n            .addClass(((params.bulletActiveClass) + \"-next\"))\n            .next()\n            .addClass(((params.bulletActiveClass) + \"-next-next\"));\n        }\n      }\n      if (params.dynamicBullets) {\n        var dynamicBulletsLength = Math.min(bullets.length, 5);\n        var bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (current * swiper.pagination.bulletSize);\n        var offsetProp = rtl ? 'right' : 'left';\n        bullets.css(swiper.isHorizontal() ? offsetProp : 'top', (bulletsOffset + \"px\"));\n      }\n    }\n    if (params.type === 'fraction') {\n      $el.find((\".\" + (params.currentClass))).text(current + 1);\n      $el.find((\".\" + (params.totalClass))).text(total);\n    }\n    if (params.type === 'progressbar') {\n      var scale = (current + 1) / total;\n      var scaleX = scale;\n      var scaleY = 1;\n      if (!swiper.isHorizontal()) {\n        scaleY = scale;\n        scaleX = 1;\n      }\n      $el.find((\".\" + (params.progressbarFillClass))).transform((\"translate3d(0,0,0) scaleX(\" + scaleX + \") scaleY(\" + scaleY + \")\")).transition(swiper.params.speed);\n    }\n    if (params.type === 'custom' && params.renderCustom) {\n      $el.html(params.renderCustom(swiper, current + 1, total));\n      swiper.emit('paginationRender', swiper, $el[0]);\n    } else {\n      swiper.emit('paginationUpdate', swiper, $el[0]);\n    }\n  },\n  render: function render() {\n    // Render Container\n    var swiper = this;\n    var params = swiper.params.pagination;\n    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }\n    var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n\n    var $el = swiper.pagination.$el;\n    var paginationHTML = '';\n    if (params.type === 'bullets') {\n      var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n      for (var i = 0; i < numberOfBullets; i += 1) {\n        if (params.renderBullet) {\n          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n        } else {\n          paginationHTML += \"<\" + (params.bulletElement) + \" class=\\\"\" + (params.bulletClass) + \"\\\"></\" + (params.bulletElement) + \">\";\n        }\n      }\n      $el.html(paginationHTML);\n      swiper.pagination.bullets = $el.find((\".\" + (params.bulletClass)));\n    }\n    if (params.type === 'fraction') {\n      if (params.renderFraction) {\n        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n      } else {\n        paginationHTML =\n        \"<span class=\\\"\" + (params.currentClass) + \"\\\"></span>\" +\n        ' / ' +\n        \"<span class=\\\"\" + (params.totalClass) + \"\\\"></span>\";\n      }\n      $el.html(paginationHTML);\n    }\n    if (params.type === 'progressbar') {\n      if (params.renderProgressbar) {\n        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n      } else {\n        paginationHTML = \"<span class=\\\"\" + (params.progressbarFillClass) + \"\\\"></span>\";\n      }\n      $el.html(paginationHTML);\n    }\n    if (params.type !== 'custom') {\n      swiper.emit('paginationRender', swiper.pagination.$el[0]);\n    }\n  },\n  init: function init() {\n    var swiper = this;\n    var params = swiper.params.pagination;\n    if (!params.el) { return; }\n\n    var $el = $$1$1(params.el);\n    if ($el.length === 0) { return; }\n\n    if (\n      swiper.params.uniqueNavElements &&\n      typeof params.el === 'string' &&\n      $el.length > 1 &&\n      swiper.$el.find(params.el).length === 1\n    ) {\n      $el = swiper.$el.find(params.el);\n    }\n\n    if (params.type === 'bullets' && params.clickable) {\n      $el.addClass(params.clickableClass);\n    }\n\n    $el.addClass(params.modifierClass + params.type);\n\n    if (params.type === 'bullets' && params.dynamicBullets) {\n      $el.addClass((\"\" + (params.modifierClass) + (params.type) + \"-dynamic\"));\n    }\n\n    if (params.clickable) {\n      $el.on('click', (\".\" + (params.bulletClass)), function onClick(e) {\n        e.preventDefault();\n        var index = $$1$1(this).index() * swiper.params.slidesPerGroup;\n        if (swiper.params.loop) { index += swiper.loopedSlides; }\n        swiper.slideTo(index);\n      });\n    }\n\n    Utils.extend(swiper.pagination, {\n      $el: $el,\n      el: $el[0],\n    });\n  },\n  destroy: function destroy() {\n    var swiper = this;\n    var params = swiper.params.pagination;\n    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }\n    var $el = swiper.pagination.$el;\n\n    $el.removeClass(params.hiddenClass);\n    $el.removeClass(params.modifierClass + params.type);\n    if (swiper.pagination.bullets) { swiper.pagination.bullets.removeClass(params.bulletActiveClass); }\n    if (params.clickable) {\n      $el.off('click', (\".\" + (params.bulletClass)));\n    }\n  },\n};\n\nvar Pagination$1 = {\n  name: 'pagination',\n  params: {\n    pagination: {\n      el: null,\n      bulletElement: 'span',\n      clickable: false,\n      hideOnClick: false,\n      renderBullet: null,\n      renderProgressbar: null,\n      renderFraction: null,\n      renderCustom: null,\n      type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n      dynamicBullets: false,\n\n      bulletClass: 'swiper-pagination-bullet',\n      bulletActiveClass: 'swiper-pagination-bullet-active',\n      modifierClass: 'swiper-pagination-', // NEW\n      currentClass: 'swiper-pagination-current',\n      totalClass: 'swiper-pagination-total',\n      hiddenClass: 'swiper-pagination-hidden',\n      progressbarFillClass: 'swiper-pagination-progressbar-fill',\n      clickableClass: 'swiper-pagination-clickable', // NEW\n    },\n  },\n  create: function create() {\n    var swiper = this;\n    Utils.extend(swiper, {\n      pagination: {\n        init: Pagination.init.bind(swiper),\n        render: Pagination.render.bind(swiper),\n        update: Pagination.update.bind(swiper),\n        destroy: Pagination.destroy.bind(swiper),\n      },\n    });\n  },\n  on: {\n    init: function init() {\n      var swiper = this;\n      swiper.pagination.init();\n      swiper.pagination.render();\n      swiper.pagination.update();\n    },\n    activeIndexChange: function activeIndexChange() {\n      var swiper = this;\n      if (swiper.params.loop) {\n        swiper.pagination.update();\n      } else if (typeof swiper.snapIndex === 'undefined') {\n        swiper.pagination.update();\n      }\n    },\n    snapIndexChange: function snapIndexChange() {\n      var swiper = this;\n      if (!swiper.params.loop) {\n        swiper.pagination.update();\n      }\n    },\n    slidesLengthChange: function slidesLengthChange() {\n      var swiper = this;\n      if (swiper.params.loop) {\n        swiper.pagination.render();\n        swiper.pagination.update();\n      }\n    },\n    snapGridLengthChange: function snapGridLengthChange() {\n      var swiper = this;\n      if (!swiper.params.loop) {\n        swiper.pagination.render();\n        swiper.pagination.update();\n      }\n    },\n    destroy: function destroy() {\n      var swiper = this;\n      swiper.pagination.destroy();\n    },\n    click: function click(e) {\n      var swiper = this;\n      if (\n        swiper.params.pagination.el &&\n        swiper.params.pagination.hideOnClick &&\n        swiper.pagination.$el.length > 0 &&\n        !$$1$1(e.target).hasClass(swiper.params.pagination.bulletClass)\n      ) {\n        swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n      }\n    },\n  },\n};\n\nvar Scrollbar = {\n  setTranslate: function setTranslate() {\n    var swiper = this;\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }\n    var scrollbar = swiper.scrollbar;\n    var rtl = swiper.rtl;\n    var progress = swiper.progress;\n    var dragSize = scrollbar.dragSize;\n    var trackSize = scrollbar.trackSize;\n    var $dragEl = scrollbar.$dragEl;\n    var $el = scrollbar.$el;\n    var params = swiper.params.scrollbar;\n\n    var newSize = dragSize;\n    var newPos = (trackSize - dragSize) * progress;\n    if (rtl && swiper.isHorizontal()) {\n      newPos = -newPos;\n      if (newPos > 0) {\n        newSize = dragSize - newPos;\n        newPos = 0;\n      } else if (-newPos + dragSize > trackSize) {\n        newSize = trackSize + newPos;\n      }\n    } else if (newPos < 0) {\n      newSize = dragSize + newPos;\n      newPos = 0;\n    } else if (newPos + dragSize > trackSize) {\n      newSize = trackSize - newPos;\n    }\n    if (swiper.isHorizontal()) {\n      if (Support$1.transforms3d) {\n        $dragEl.transform((\"translate3d(\" + newPos + \"px, 0, 0)\"));\n      } else {\n        $dragEl.transform((\"translateX(\" + newPos + \"px)\"));\n      }\n      $dragEl[0].style.width = newSize + \"px\";\n    } else {\n      if (Support$1.transforms3d) {\n        $dragEl.transform((\"translate3d(0px, \" + newPos + \"px, 0)\"));\n      } else {\n        $dragEl.transform((\"translateY(\" + newPos + \"px)\"));\n      }\n      $dragEl[0].style.height = newSize + \"px\";\n    }\n    if (params.hide) {\n      clearTimeout(swiper.scrollbar.timeout);\n      $el[0].style.opacity = 1;\n      swiper.scrollbar.timeout = setTimeout(function () {\n        $el[0].style.opacity = 0;\n        $el.transition(400);\n      }, 1000);\n    }\n  },\n  setTransition: function setTransition(duration) {\n    var swiper = this;\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }\n    swiper.scrollbar.$dragEl.transition(duration);\n  },\n  updateSize: function updateSize() {\n    var swiper = this;\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }\n\n    var scrollbar = swiper.scrollbar;\n    var $dragEl = scrollbar.$dragEl;\n    var $el = scrollbar.$el;\n\n    $dragEl[0].style.width = '';\n    $dragEl[0].style.height = '';\n    var trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n    var divider = swiper.size / swiper.virtualSize;\n    var moveDivider = divider * (trackSize / swiper.size);\n    var dragSize;\n    if (swiper.params.scrollbar.dragSize === 'auto') {\n      dragSize = trackSize * divider;\n    } else {\n      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n    }\n\n    if (swiper.isHorizontal()) {\n      $dragEl[0].style.width = dragSize + \"px\";\n    } else {\n      $dragEl[0].style.height = dragSize + \"px\";\n    }\n\n    if (divider >= 1) {\n      $el[0].style.display = 'none';\n    } else {\n      $el[0].style.display = '';\n    }\n    if (swiper.params.scrollbarHide) {\n      $el[0].style.opacity = 0;\n    }\n    Utils.extend(scrollbar, {\n      trackSize: trackSize,\n      divider: divider,\n      moveDivider: moveDivider,\n      dragSize: dragSize,\n    });\n  },\n  setDragPosition: function setDragPosition(e) {\n    var swiper = this;\n    var scrollbar = swiper.scrollbar;\n    var $el = scrollbar.$el;\n    var dragSize = scrollbar.dragSize;\n    var trackSize = scrollbar.trackSize;\n\n    var pointerPosition;\n    if (swiper.isHorizontal()) {\n      pointerPosition = ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageX : e.pageX || e.clientX);\n    } else {\n      pointerPosition = ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageY : e.pageY || e.clientY);\n    }\n    var positionRatio;\n    positionRatio = ((pointerPosition) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragSize / 2)) / (trackSize - dragSize);\n    positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n    if (swiper.rtl) {\n      positionRatio = 1 - positionRatio;\n    }\n\n    var position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);\n\n    swiper.updateProgress(position);\n    swiper.setTranslate(position);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  },\n  onDragStart: function onDragStart(e) {\n    var swiper = this;\n    var params = swiper.params.scrollbar;\n    var scrollbar = swiper.scrollbar;\n    var $wrapperEl = swiper.$wrapperEl;\n    var $el = scrollbar.$el;\n    var $dragEl = scrollbar.$dragEl;\n    swiper.scrollbar.isTouched = true;\n    e.preventDefault();\n    e.stopPropagation();\n\n    $wrapperEl.transition(100);\n    $dragEl.transition(100);\n    scrollbar.setDragPosition(e);\n\n    clearTimeout(swiper.scrollbar.dragTimeout);\n\n    $el.transition(0);\n    if (params.hide) {\n      $el.css('opacity', 1);\n    }\n    swiper.emit('scrollbarDragStart', e);\n  },\n  onDragMove: function onDragMove(e) {\n    var swiper = this;\n    var scrollbar = swiper.scrollbar;\n    var $wrapperEl = swiper.$wrapperEl;\n    var $el = scrollbar.$el;\n    var $dragEl = scrollbar.$dragEl;\n\n    if (!swiper.scrollbar.isTouched) { return; }\n    if (e.preventDefault) { e.preventDefault(); }\n    else { e.returnValue = false; }\n    scrollbar.setDragPosition(e);\n    $wrapperEl.transition(0);\n    $el.transition(0);\n    $dragEl.transition(0);\n    swiper.emit('scrollbarDragMove', e);\n  },\n  onDragEnd: function onDragEnd(e) {\n    var swiper = this;\n\n    var params = swiper.params.scrollbar;\n    var scrollbar = swiper.scrollbar;\n    var $el = scrollbar.$el;\n\n    if (!swiper.scrollbar.isTouched) { return; }\n    swiper.scrollbar.isTouched = false;\n    if (params.hide) {\n      clearTimeout(swiper.scrollbar.dragTimeout);\n      swiper.scrollbar.dragTimeout = Utils.nextTick(function () {\n        $el.css('opacity', 0);\n        $el.transition(400);\n      }, 1000);\n    }\n    swiper.emit('scrollbarDragEnd', e);\n    if (params.snapOnRelease) {\n      swiper.slideReset();\n    }\n  },\n  enableDraggable: function enableDraggable() {\n    var swiper = this;\n    if (!swiper.params.scrollbar.el) { return; }\n    var scrollbar = swiper.scrollbar;\n    var $el = scrollbar.$el;\n    var target = Support$1.touch ? $el[0] : document;\n    $el.on(swiper.scrollbar.dragEvents.start, swiper.scrollbar.onDragStart);\n    $$1$1(target).on(swiper.scrollbar.dragEvents.move, swiper.scrollbar.onDragMove);\n    $$1$1(target).on(swiper.scrollbar.dragEvents.end, swiper.scrollbar.onDragEnd);\n  },\n  disableDraggable: function disableDraggable() {\n    var swiper = this;\n    if (!swiper.params.scrollbar.el) { return; }\n    var scrollbar = swiper.scrollbar;\n    var $el = scrollbar.$el;\n    var target = Support$1.touch ? $el[0] : document;\n    $el.off(swiper.scrollbar.dragEvents.start);\n    $$1$1(target).off(swiper.scrollbar.dragEvents.move);\n    $$1$1(target).off(swiper.scrollbar.dragEvents.end);\n  },\n  init: function init() {\n    var swiper = this;\n    if (!swiper.params.scrollbar.el) { return; }\n    var scrollbar = swiper.scrollbar;\n    var $swiperEl = swiper.$el;\n    var touchEvents = swiper.touchEvents;\n    var params = swiper.params.scrollbar;\n\n    var $el = $$1$1(params.el);\n    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n      $el = $swiperEl.find(params.el);\n    }\n\n    var $dragEl = $el.find('.swiper-scrollbar-drag');\n    if ($dragEl.length === 0) {\n      $dragEl = $$1$1('<div class=\"swiper-scrollbar-drag\"></div>');\n      $el.append($dragEl);\n    }\n\n    swiper.scrollbar.dragEvents = (function dragEvents() {\n      if ((swiper.params.simulateTouch === false && !Support$1.touch)) {\n        return {\n          start: 'mousedown',\n          move: 'mousemove',\n          end: 'mouseup',\n        };\n      }\n      return touchEvents;\n    }());\n\n    Utils.extend(scrollbar, {\n      $el: $el,\n      el: $el[0],\n      $dragEl: $dragEl,\n      dragEl: $dragEl[0],\n    });\n\n    if (params.draggable) {\n      scrollbar.enableDraggable();\n    }\n  },\n  destroy: function destroy() {\n    var swiper = this;\n    swiper.scrollbar.disableDraggable();\n  },\n};\n\nvar Scrollbar$1 = {\n  name: 'scrollbar',\n  params: {\n    scrollbar: {\n      el: null,\n      dragSize: 'auto',\n      hide: false,\n      draggable: false,\n      snapOnRelease: true,\n    },\n  },\n  create: function create() {\n    var swiper = this;\n    Utils.extend(swiper, {\n      scrollbar: {\n        init: Scrollbar.init.bind(swiper),\n        destroy: Scrollbar.destroy.bind(swiper),\n        updateSize: Scrollbar.updateSize.bind(swiper),\n        setTranslate: Scrollbar.setTranslate.bind(swiper),\n        setTransition: Scrollbar.setTransition.bind(swiper),\n        enableDraggable: Scrollbar.enableDraggable.bind(swiper),\n        disableDraggable: Scrollbar.disableDraggable.bind(swiper),\n        setDragPosition: Scrollbar.setDragPosition.bind(swiper),\n        onDragStart: Scrollbar.onDragStart.bind(swiper),\n        onDragMove: Scrollbar.onDragMove.bind(swiper),\n        onDragEnd: Scrollbar.onDragEnd.bind(swiper),\n        isTouched: false,\n        timeout: null,\n        dragTimeout: null,\n      },\n    });\n  },\n  on: {\n    init: function init() {\n      var swiper = this;\n      swiper.scrollbar.init();\n      swiper.scrollbar.updateSize();\n      swiper.scrollbar.setTranslate();\n    },\n    update: function update() {\n      var swiper = this;\n      swiper.scrollbar.updateSize();\n    },\n    resize: function resize() {\n      var swiper = this;\n      swiper.scrollbar.updateSize();\n    },\n    observerUpdate: function observerUpdate() {\n      var swiper = this;\n      swiper.scrollbar.updateSize();\n    },\n    setTranslate: function setTranslate() {\n      var swiper = this;\n      swiper.scrollbar.setTranslate();\n    },\n    setTransition: function setTransition(duration) {\n      var swiper = this;\n      swiper.scrollbar.setTransition(duration);\n    },\n    destroy: function destroy() {\n      var swiper = this;\n      swiper.scrollbar.destroy();\n    },\n  },\n};\n\nvar Parallax = {\n  setTransform: function setTransform(el, progress) {\n    var swiper = this;\n    var rtl = swiper.rtl;\n\n    var $el = $$1$1(el);\n    var rtlFactor = rtl ? -1 : 1;\n\n    var p = $el.attr('data-swiper-parallax') || '0';\n    var x = $el.attr('data-swiper-parallax-x');\n    var y = $el.attr('data-swiper-parallax-y');\n    var scale = $el.attr('data-swiper-parallax-scale');\n    var opacity = $el.attr('data-swiper-parallax-opacity');\n\n    if (x || y) {\n      x = x || '0';\n      y = y || '0';\n    } else if (swiper.isHorizontal()) {\n      x = p;\n      y = '0';\n    } else {\n      y = p;\n      x = '0';\n    }\n\n    if ((x).indexOf('%') >= 0) {\n      x = (parseInt(x, 10) * progress * rtlFactor) + \"%\";\n    } else {\n      x = (x * progress * rtlFactor) + \"px\";\n    }\n    if ((y).indexOf('%') >= 0) {\n      y = (parseInt(y, 10) * progress) + \"%\";\n    } else {\n      y = (y * progress) + \"px\";\n    }\n\n    if (typeof opacity !== 'undefined' && opacity !== null) {\n      var currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress)));\n      $el[0].style.opacity = currentOpacity;\n    }\n    if (typeof scale === 'undefined' || scale === null) {\n      $el.transform((\"translate3d(\" + x + \", \" + y + \", 0px)\"));\n    } else {\n      var currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));\n      $el.transform((\"translate3d(\" + x + \", \" + y + \", 0px) scale(\" + currentScale + \")\"));\n    }\n  },\n  setTranslate: function setTranslate() {\n    var swiper = this;\n    var $el = swiper.$el;\n    var slides = swiper.slides;\n    var progress = swiper.progress;\n    var snapGrid = swiper.snapGrid;\n    $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]')\n      .each(function (index, el) {\n        swiper.parallax.setTransform(el, progress);\n      });\n    slides.each(function (slideIndex, slideEl) {\n      var slideProgress = slideEl.progress;\n      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n        slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));\n      }\n      slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n      $$1$1(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]')\n        .each(function (index, el) {\n          swiper.parallax.setTransform(el, slideProgress);\n        });\n    });\n  },\n  setTransition: function setTransition(duration) {\n    if ( duration === void 0 ) duration = this.params.speed;\n\n    var swiper = this;\n    var $el = swiper.$el;\n    $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]')\n      .each(function (index, parallaxEl) {\n        var $parallaxEl = $$1$1(parallaxEl);\n        var parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n        if (duration === 0) { parallaxDuration = 0; }\n        $parallaxEl.transition(parallaxDuration);\n      });\n  },\n};\n\nvar Parallax$1 = {\n  name: 'parallax',\n  params: {\n    parallax: {\n      enabled: false,\n    },\n  },\n  create: function create() {\n    var swiper = this;\n    Utils.extend(swiper, {\n      parallax: {\n        setTransform: Parallax.setTransform.bind(swiper),\n        setTranslate: Parallax.setTranslate.bind(swiper),\n        setTransition: Parallax.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit: function beforeInit() {\n      var swiper = this;\n      swiper.params.watchSlidesProgress = true;\n    },\n    init: function init() {\n      var swiper = this;\n      if (!swiper.params.parallax) { return; }\n      swiper.parallax.setTranslate();\n    },\n    setTranslate: function setTranslate() {\n      var swiper = this;\n      if (!swiper.params.parallax) { return; }\n      swiper.parallax.setTranslate();\n    },\n    setTransition: function setTransition(duration) {\n      var swiper = this;\n      if (!swiper.params.parallax) { return; }\n      swiper.parallax.setTransition(duration);\n    },\n  },\n};\n\nvar Zoom = {\n  // Calc Scale From Multi-touches\n  getDistanceBetweenTouches: function getDistanceBetweenTouches(e) {\n    if (e.targetTouches.length < 2) { return 1; }\n    var x1 = e.targetTouches[0].pageX;\n    var y1 = e.targetTouches[0].pageY;\n    var x2 = e.targetTouches[1].pageX;\n    var y2 = e.targetTouches[1].pageY;\n    var distance = Math.sqrt((Math.pow( (x2 - x1), 2 )) + (Math.pow( (y2 - y1), 2 )));\n    return distance;\n  },\n  // Events\n  onGestureStart: function onGestureStart(e) {\n    var swiper = this;\n    var params = swiper.params.zoom;\n    var zoom = swiper.zoom;\n    var gesture = zoom.gesture;\n    zoom.fakeGestureTouched = false;\n    zoom.fakeGestureMoved = false;\n    if (!Support$1.gestures) {\n      if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n        return;\n      }\n      zoom.fakeGestureTouched = true;\n      gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\n    }\n    if (!gesture.$slideEl || !gesture.$slideEl.length) {\n      gesture.$slideEl = $$1$1(this);\n      if (gesture.$slideEl.length === 0) { gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); }\n      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\n      gesture.$imageWrapEl = gesture.$imageEl.parent((\".\" + (params.containerClass)));\n      gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n      if (gesture.$imageWrapEl.length === 0) {\n        gesture.$imageEl = undefined;\n        return;\n      }\n    }\n    gesture.$imageEl.transition(0);\n    swiper.zoom.isScaling = true;\n  },\n  onGestureChange: function onGestureChange(e) {\n    var swiper = this;\n    var params = swiper.params.zoom;\n    var zoom = swiper.zoom;\n    var gesture = zoom.gesture;\n    if (!Support$1.gestures) {\n      if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n        return;\n      }\n      zoom.fakeGestureMoved = true;\n      gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n    }\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }\n    if (Support$1.gestures) {\n      swiper.zoom.scale = e.scale * zoom.currentScale;\n    } else {\n      zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;\n    }\n    if (zoom.scale > gesture.maxRatio) {\n      zoom.scale = (gesture.maxRatio - 1) + (Math.pow( ((zoom.scale - gesture.maxRatio) + 1), 0.5 ));\n    }\n    if (zoom.scale < params.minRatio) {\n      zoom.scale = (params.minRatio + 1) - (Math.pow( ((params.minRatio - zoom.scale) + 1), 0.5 ));\n    }\n    gesture.$imageEl.transform((\"translate3d(0,0,0) scale(\" + (zoom.scale) + \")\"));\n  },\n  onGestureEnd: function onGestureEnd(e) {\n    var swiper = this;\n    var params = swiper.params.zoom;\n    var zoom = swiper.zoom;\n    var gesture = zoom.gesture;\n    if (!Support$1.gestures) {\n      if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\n        return;\n      }\n      if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {\n        return;\n      }\n      zoom.fakeGestureTouched = false;\n      zoom.fakeGestureMoved = false;\n    }\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }\n    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n    gesture.$imageEl.transition(swiper.params.speed).transform((\"translate3d(0,0,0) scale(\" + (zoom.scale) + \")\"));\n    zoom.currentScale = zoom.scale;\n    zoom.isScaling = false;\n    if (zoom.scale === 1) { gesture.$slideEl = undefined; }\n  },\n  onTouchStart: function onTouchStart(e) {\n    var swiper = this;\n    var zoom = swiper.zoom;\n    var gesture = zoom.gesture;\n    var image = zoom.image;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }\n    if (image.isTouched) { return; }\n    if (Device.android) { e.preventDefault(); }\n    image.isTouched = true;\n    image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n    image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n  },\n  onTouchMove: function onTouchMove(e) {\n    var swiper = this;\n    var zoom = swiper.zoom;\n    var gesture = zoom.gesture;\n    var image = zoom.image;\n    var velocity = zoom.velocity;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }\n    swiper.allowClick = false;\n    if (!image.isTouched || !gesture.$slideEl) { return; }\n\n    if (!image.isMoved) {\n      image.width = gesture.$imageEl[0].offsetWidth;\n      image.height = gesture.$imageEl[0].offsetHeight;\n      image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n      image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n      gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n      gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n      gesture.$imageWrapEl.transition(0);\n      if (swiper.rtl) { image.startX = -image.startX; }\n      if (swiper.rtl) { image.startY = -image.startY; }\n    }\n    // Define if we need image drag\n    var scaledWidth = image.width * zoom.scale;\n    var scaledHeight = image.height * zoom.scale;\n\n    if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) { return; }\n\n    image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n    image.maxY = -image.minY;\n\n    image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n    image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n    if (!image.isMoved && !zoom.isScaling) {\n      if (\n        swiper.isHorizontal() &&\n        (\n          (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x) ||\n          (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)\n        )\n      ) {\n        image.isTouched = false;\n        return;\n      } else if (\n        !swiper.isHorizontal() &&\n        (\n          (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y) ||\n          (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)\n        )\n      ) {\n        image.isTouched = false;\n        return;\n      }\n    }\n    e.preventDefault();\n    e.stopPropagation();\n\n    image.isMoved = true;\n    image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX;\n    image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY;\n\n    if (image.currentX < image.minX) {\n      image.currentX = (image.minX + 1) - (Math.pow( ((image.minX - image.currentX) + 1), 0.8 ));\n    }\n    if (image.currentX > image.maxX) {\n      image.currentX = (image.maxX - 1) + (Math.pow( ((image.currentX - image.maxX) + 1), 0.8 ));\n    }\n\n    if (image.currentY < image.minY) {\n      image.currentY = (image.minY + 1) - (Math.pow( ((image.minY - image.currentY) + 1), 0.8 ));\n    }\n    if (image.currentY > image.maxY) {\n      image.currentY = (image.maxY - 1) + (Math.pow( ((image.currentY - image.maxY) + 1), 0.8 ));\n    }\n\n    // Velocity\n    if (!velocity.prevPositionX) { velocity.prevPositionX = image.touchesCurrent.x; }\n    if (!velocity.prevPositionY) { velocity.prevPositionY = image.touchesCurrent.y; }\n    if (!velocity.prevTime) { velocity.prevTime = Date.now(); }\n    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) { velocity.x = 0; }\n    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) { velocity.y = 0; }\n    velocity.prevPositionX = image.touchesCurrent.x;\n    velocity.prevPositionY = image.touchesCurrent.y;\n    velocity.prevTime = Date.now();\n\n    gesture.$imageWrapEl.transform((\"translate3d(\" + (image.currentX) + \"px, \" + (image.currentY) + \"px,0)\"));\n  },\n  onTouchEnd: function onTouchEnd() {\n    var swiper = this;\n    var zoom = swiper.zoom;\n    var gesture = zoom.gesture;\n    var image = zoom.image;\n    var velocity = zoom.velocity;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }\n    if (!image.isTouched || !image.isMoved) {\n      image.isTouched = false;\n      image.isMoved = false;\n      return;\n    }\n    image.isTouched = false;\n    image.isMoved = false;\n    var momentumDurationX = 300;\n    var momentumDurationY = 300;\n    var momentumDistanceX = velocity.x * momentumDurationX;\n    var newPositionX = image.currentX + momentumDistanceX;\n    var momentumDistanceY = velocity.y * momentumDurationY;\n    var newPositionY = image.currentY + momentumDistanceY;\n\n    // Fix duration\n    if (velocity.x !== 0) { momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); }\n    if (velocity.y !== 0) { momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); }\n    var momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n    image.currentX = newPositionX;\n    image.currentY = newPositionY;\n\n    // Define if we need image drag\n    var scaledWidth = image.width * zoom.scale;\n    var scaledHeight = image.height * zoom.scale;\n    image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n    image.maxY = -image.minY;\n    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n    gesture.$imageWrapEl.transition(momentumDuration).transform((\"translate3d(\" + (image.currentX) + \"px, \" + (image.currentY) + \"px,0)\"));\n  },\n  onTransitionEnd: function onTransitionEnd() {\n    var swiper = this;\n    var zoom = swiper.zoom;\n    var gesture = zoom.gesture;\n    if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n      gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n      gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n      gesture.$slideEl = undefined;\n      gesture.$imageEl = undefined;\n      gesture.$imageWrapEl = undefined;\n\n      zoom.scale = 1;\n      zoom.currentScale = 1;\n    }\n  },\n  // Toggle Zoom\n  toggle: function toggle(e) {\n    var swiper = this;\n    var zoom = swiper.zoom;\n\n    if (zoom.scale && zoom.scale !== 1) {\n      // Zoom Out\n      zoom.out();\n    } else {\n      // Zoom In\n      zoom.in(e);\n    }\n  },\n  in: function in$1(e) {\n    var swiper = this;\n\n    var zoom = swiper.zoom;\n    var params = swiper.params.zoom;\n    var gesture = zoom.gesture;\n    var image = zoom.image;\n\n    if (!gesture.$slideEl) {\n      gesture.$slideEl = swiper.clickedSlide ? $$1$1(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex);\n      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\n      gesture.$imageWrapEl = gesture.$imageEl.parent((\".\" + (params.containerClass)));\n    }\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }\n\n    gesture.$slideEl.addClass((\"\" + (params.zoomedSlideClass)));\n\n    var touchX;\n    var touchY;\n    var offsetX;\n    var offsetY;\n    var diffX;\n    var diffY;\n    var translateX;\n    var translateY;\n    var imageWidth;\n    var imageHeight;\n    var scaledWidth;\n    var scaledHeight;\n    var translateMinX;\n    var translateMinY;\n    var translateMaxX;\n    var translateMaxY;\n    var slideWidth;\n    var slideHeight;\n\n    if (typeof image.touchesStart.x === 'undefined' && e) {\n      touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n      touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n    } else {\n      touchX = image.touchesStart.x;\n      touchY = image.touchesStart.y;\n    }\n\n    zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n    zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n    if (e) {\n      slideWidth = gesture.$slideEl[0].offsetWidth;\n      slideHeight = gesture.$slideEl[0].offsetHeight;\n      offsetX = gesture.$slideEl.offset().left;\n      offsetY = gesture.$slideEl.offset().top;\n      diffX = (offsetX + (slideWidth / 2)) - touchX;\n      diffY = (offsetY + (slideHeight / 2)) - touchY;\n\n      imageWidth = gesture.$imageEl[0].offsetWidth;\n      imageHeight = gesture.$imageEl[0].offsetHeight;\n      scaledWidth = imageWidth * zoom.scale;\n      scaledHeight = imageHeight * zoom.scale;\n\n      translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0);\n      translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0);\n      translateMaxX = -translateMinX;\n      translateMaxY = -translateMinY;\n\n      translateX = diffX * zoom.scale;\n      translateY = diffY * zoom.scale;\n\n      if (translateX < translateMinX) {\n        translateX = translateMinX;\n      }\n      if (translateX > translateMaxX) {\n        translateX = translateMaxX;\n      }\n\n      if (translateY < translateMinY) {\n        translateY = translateMinY;\n      }\n      if (translateY > translateMaxY) {\n        translateY = translateMaxY;\n      }\n    } else {\n      translateX = 0;\n      translateY = 0;\n    }\n    gesture.$imageWrapEl.transition(300).transform((\"translate3d(\" + translateX + \"px, \" + translateY + \"px,0)\"));\n    gesture.$imageEl.transition(300).transform((\"translate3d(0,0,0) scale(\" + (zoom.scale) + \")\"));\n  },\n  out: function out() {\n    var swiper = this;\n\n    var zoom = swiper.zoom;\n    var params = swiper.params.zoom;\n    var gesture = zoom.gesture;\n\n    if (!gesture.$slideEl) {\n      gesture.$slideEl = swiper.clickedSlide ? $$1$1(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex);\n      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\n      gesture.$imageWrapEl = gesture.$imageEl.parent((\".\" + (params.containerClass)));\n    }\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }\n\n    zoom.scale = 1;\n    zoom.currentScale = 1;\n    gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n    gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n    gesture.$slideEl.removeClass((\"\" + (params.zoomedSlideClass)));\n    gesture.$slideEl = undefined;\n  },\n  // Attach/Detach Events\n  enable: function enable() {\n    var swiper = this;\n    var zoom = swiper.zoom;\n    if (zoom.enabled) { return; }\n    zoom.enabled = true;\n\n    var slides = swiper.slides;\n\n    var passiveListener = swiper.touchEvents.start === 'touchstart' && Support$1.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n\n    // Scale image\n    if (Support$1.gestures) {\n      slides.on('gesturestart', zoom.onGestureStart, passiveListener);\n      slides.on('gesturechange', zoom.onGestureChange, passiveListener);\n      slides.on('gestureend', zoom.onGestureEnd, passiveListener);\n    } else if (swiper.touchEvents.start === 'touchstart') {\n      slides.on(swiper.touchEvents.start, zoom.onGestureStart, passiveListener);\n      slides.on(swiper.touchEvents.move, zoom.onGestureChange, passiveListener);\n      slides.on(swiper.touchEvents.end, zoom.onGestureEnd, passiveListener);\n    }\n\n    // Move image\n    swiper.slides.each(function (index, slideEl) {\n      var $slideEl = $$1$1(slideEl);\n      if ($slideEl.find((\".\" + (swiper.params.zoom.containerClass))).length > 0) {\n        $slideEl.on(swiper.touchEvents.move, zoom.onTouchMove);\n      }\n    });\n  },\n  disable: function disable() {\n    var swiper = this;\n    var zoom = swiper.zoom;\n    if (!zoom.enabled) { return; }\n\n    swiper.zoom.enabled = false;\n\n    var slides = swiper.slides;\n\n    var passiveListener = swiper.touchEvents.start === 'touchstart' && Support$1.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n\n    // Scale image\n    if (Support$1.gestures) {\n      slides.off('gesturestart', zoom.onGestureStart, passiveListener);\n      slides.off('gesturechange', zoom.onGestureChange, passiveListener);\n      slides.off('gestureend', zoom.onGestureEnd, passiveListener);\n    } else if (swiper.touchEvents.start === 'touchstart') {\n      slides.off(swiper.touchEvents.start, zoom.onGestureStart, passiveListener);\n      slides.off(swiper.touchEvents.move, zoom.onGestureChange, passiveListener);\n      slides.off(swiper.touchEvents.end, zoom.onGestureEnd, passiveListener);\n    }\n\n    // Move image\n    swiper.slides.each(function (index, slideEl) {\n      var $slideEl = $$1$1(slideEl);\n      if ($slideEl.find((\".\" + (swiper.params.zoom.containerClass))).length > 0) {\n        $slideEl.off(swiper.touchEvents.move, zoom.onTouchMove);\n      }\n    });\n  },\n};\n\nvar Zoom$1 = {\n  name: 'zoom',\n  params: {\n    zoom: {\n      enabled: false,\n      maxRatio: 3,\n      minRatio: 1,\n      toggle: true,\n      containerClass: 'swiper-zoom-container',\n      zoomedSlideClass: 'swiper-slide-zoomed',\n    },\n  },\n  create: function create() {\n    var swiper = this;\n    var zoom = {\n      enabled: false,\n      scale: 1,\n      currentScale: 1,\n      isScaling: false,\n      gesture: {\n        $slideEl: undefined,\n        slideWidth: undefined,\n        slideHeight: undefined,\n        $imageEl: undefined,\n        $imageWrapEl: undefined,\n        maxRatio: 3,\n      },\n      image: {\n        isTouched: undefined,\n        isMoved: undefined,\n        currentX: undefined,\n        currentY: undefined,\n        minX: undefined,\n        minY: undefined,\n        maxX: undefined,\n        maxY: undefined,\n        width: undefined,\n        height: undefined,\n        startX: undefined,\n        startY: undefined,\n        touchesStart: {},\n        touchesCurrent: {},\n      },\n      velocity: {\n        x: undefined,\n        y: undefined,\n        prevPositionX: undefined,\n        prevPositionY: undefined,\n        prevTime: undefined,\n      },\n    };\n    ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach(function (methodName) {\n      zoom[methodName] = Zoom[methodName].bind(swiper);\n    });\n    Utils.extend(swiper, {\n      zoom: zoom,\n    });\n  },\n  on: {\n    init: function init() {\n      var swiper = this;\n      if (swiper.params.zoom.enabled) {\n        swiper.zoom.enable();\n      }\n    },\n    destroy: function destroy() {\n      var swiper = this;\n      swiper.zoom.disable();\n    },\n    touchStart: function touchStart(e) {\n      var swiper = this;\n      if (!swiper.zoom.enabled) { return; }\n      swiper.zoom.onTouchStart(e);\n    },\n    touchEnd: function touchEnd(e) {\n      var swiper = this;\n      if (!swiper.zoom.enabled) { return; }\n      swiper.zoom.onTouchEnd(e);\n    },\n    doubleTap: function doubleTap(e) {\n      var swiper = this;\n      if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n        swiper.zoom.toggle(e);\n      }\n    },\n    transitionEnd: function transitionEnd() {\n      var swiper = this;\n      if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n        swiper.zoom.onTransitionEnd();\n      }\n    },\n  },\n};\n\nvar Lazy$2 = {\n  loadInSlide: function loadInSlide(index, loadInDuplicate) {\n    if ( loadInDuplicate === void 0 ) loadInDuplicate = true;\n\n    var swiper = this;\n    var params = swiper.params.lazy;\n    if (typeof index === 'undefined') { return; }\n    if (swiper.slides.length === 0) { return; }\n    var isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n    var $slideEl = isVirtual\n      ? swiper.$wrapperEl.children((\".\" + (swiper.params.slideClass) + \"[data-swiper-slide-index=\\\"\" + index + \"\\\"]\"))\n      : swiper.slides.eq(index);\n\n    var $images = $slideEl.find((\".\" + (params.elementClass) + \":not(.\" + (params.loadedClass) + \"):not(.\" + (params.loadingClass) + \")\"));\n    if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n      $images = $images.add($slideEl[0]);\n    }\n    if ($images.length === 0) { return; }\n\n    $images.each(function (imageIndex, imageEl) {\n      var $imageEl = $$1$1(imageEl);\n      $imageEl.addClass(params.loadingClass);\n\n      var background = $imageEl.attr('data-background');\n      var src = $imageEl.attr('data-src');\n      var srcset = $imageEl.attr('data-srcset');\n      var sizes = $imageEl.attr('data-sizes');\n\n      swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, function () {\n        if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) { return; }\n        if (background) {\n          $imageEl.css('background-image', (\"url(\\\"\" + background + \"\\\")\"));\n          $imageEl.removeAttr('data-background');\n        } else {\n          if (srcset) {\n            $imageEl.attr('srcset', srcset);\n            $imageEl.removeAttr('data-srcset');\n          }\n          if (sizes) {\n            $imageEl.attr('sizes', sizes);\n            $imageEl.removeAttr('data-sizes');\n          }\n          if (src) {\n            $imageEl.attr('src', src);\n            $imageEl.removeAttr('data-src');\n          }\n        }\n\n        $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n        $slideEl.find((\".\" + (params.preloaderClass))).remove();\n        if (swiper.params.loop && loadInDuplicate) {\n          var slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n          if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n            var originalSlide = swiper.$wrapperEl.children((\"[data-swiper-slide-index=\\\"\" + slideOriginalIndex + \"\\\"]:not(.\" + (swiper.params.slideDuplicateClass) + \")\"));\n            swiper.lazy.loadInSlide(originalSlide.index(), false);\n          } else {\n            var duplicatedSlide = swiper.$wrapperEl.children((\".\" + (swiper.params.slideDuplicateClass) + \"[data-swiper-slide-index=\\\"\" + slideOriginalIndex + \"\\\"]\"));\n            swiper.lazy.loadInSlide(duplicatedSlide.index(), false);\n          }\n        }\n        swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n      });\n\n      swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n    });\n  },\n  load: function load() {\n    var swiper = this;\n    var $wrapperEl = swiper.$wrapperEl;\n    var swiperParams = swiper.params;\n    var slides = swiper.slides;\n    var activeIndex = swiper.activeIndex;\n    var isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n    var params = swiperParams.lazy;\n\n    var slidesPerView = swiperParams.slidesPerView;\n    if (slidesPerView === 'auto') {\n      slidesPerView = 0;\n    }\n\n    function slideExist(index) {\n      if (isVirtual) {\n        if ($wrapperEl.children((\".\" + (swiperParams.slideClass) + \"[data-swiper-slide-index=\\\"\" + index + \"\\\"]\")).length) {\n          return true;\n        }\n      } else if (slides[index]) { return true; }\n      return false;\n    }\n    function slideIndex(slideEl) {\n      if (isVirtual) {\n        return $$1$1(slideEl).attr('data-swiper-slide-index');\n      }\n      return $$1$1(slideEl).index();\n    }\n\n    if (!swiper.lazy.initialImageLoaded) { swiper.lazy.initialImageLoaded = true; }\n    if (swiper.params.watchSlidesVisibility) {\n      $wrapperEl.children((\".\" + (swiperParams.slideVisibleClass))).each(function (elIndex, slideEl) {\n        var index = isVirtual ? $$1$1(slideEl).attr('data-swiper-slide-index') : $$1$1(slideEl).index();\n        swiper.lazy.loadInSlide(index);\n      });\n    } else if (slidesPerView > 1) {\n      for (var i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n        if (slideExist(i)) { swiper.lazy.loadInSlide(i); }\n      }\n    } else {\n      swiper.lazy.loadInSlide(activeIndex);\n    }\n    if (params.loadPrevNext) {\n      if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n        var amount = params.loadPrevNextAmount;\n        var spv = slidesPerView;\n        var maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n        var minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n        // Next Slides\n        for (var i$1 = activeIndex + slidesPerView; i$1 < maxIndex; i$1 += 1) {\n          if (slideExist(i$1)) { swiper.lazy.loadInSlide(i$1); }\n        }\n        // Prev Slides\n        for (var i$2 = minIndex; i$2 < activeIndex; i$2 += 1) {\n          if (slideExist(i$2)) { swiper.lazy.loadInSlide(i$2); }\n        }\n      } else {\n        var nextSlide = $wrapperEl.children((\".\" + (swiperParams.slideNextClass)));\n        if (nextSlide.length > 0) { swiper.lazy.loadInSlide(slideIndex(nextSlide)); }\n\n        var prevSlide = $wrapperEl.children((\".\" + (swiperParams.slidePrevClass)));\n        if (prevSlide.length > 0) { swiper.lazy.loadInSlide(slideIndex(prevSlide)); }\n      }\n    }\n  },\n};\n\nvar Lazy$3 = {\n  name: 'lazy',\n  params: {\n    lazy: {\n      enabled: false,\n      loadPrevNext: false,\n      loadPrevNextAmount: 1,\n      loadOnTransitionStart: false,\n\n      elementClass: 'swiper-lazy',\n      loadingClass: 'swiper-lazy-loading',\n      loadedClass: 'swiper-lazy-loaded',\n      preloaderClass: 'swiper-lazy-preloader',\n    },\n  },\n  create: function create() {\n    var swiper = this;\n    Utils.extend(swiper, {\n      lazy: {\n        initialImageLoaded: false,\n        load: Lazy$2.load.bind(swiper),\n        loadInSlide: Lazy$2.loadInSlide.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit: function beforeInit() {\n      var swiper = this;\n      if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n        swiper.params.preloadImages = false;\n      }\n    },\n    init: function init() {\n      var swiper = this;\n      if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\n        swiper.lazy.load();\n      }\n    },\n    scroll: function scroll() {\n      var swiper = this;\n      if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n        swiper.lazy.load();\n      }\n    },\n    resize: function resize() {\n      var swiper = this;\n      if (swiper.params.lazy.enabled) {\n        swiper.lazy.load();\n      }\n    },\n    scrollbarDragMove: function scrollbarDragMove() {\n      var swiper = this;\n      if (swiper.params.lazy.enabled) {\n        swiper.lazy.load();\n      }\n    },\n    transitionStart: function transitionStart() {\n      var swiper = this;\n      if (swiper.params.lazy.enabled) {\n        if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) {\n          swiper.lazy.load();\n        }\n      }\n    },\n    transitionEnd: function transitionEnd() {\n      var swiper = this;\n      if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n        swiper.lazy.load();\n      }\n    },\n  },\n};\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nvar Controller = {\n  LinearSpline: function LinearSpline(x, y) {\n    var binarySearch = (function search() {\n      var maxIndex;\n      var minIndex;\n      var guess;\n      return function (array, val) {\n        minIndex = -1;\n        maxIndex = array.length;\n        while (maxIndex - minIndex > 1) {\n          guess = maxIndex + minIndex >> 1;\n          if (array[guess] <= val) {\n            minIndex = guess;\n          } else {\n            maxIndex = guess;\n          }\n        }\n        return maxIndex;\n      };\n    }());\n    this.x = x;\n    this.y = y;\n    this.lastIndex = x.length - 1;\n    // Given an x value (x2), return the expected y2 value:\n    // (x1,y1) is the known point before given value,\n    // (x3,y3) is the known point after given value.\n    var i1;\n    var i3;\n\n    this.interpolate = function interpolate(x2) {\n      if (!x2) { return 0; }\n\n      // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n      i3 = binarySearch(this.x, x2);\n      i1 = i3 - 1;\n\n      // We have our indexes i1 & i3, so we can calculate already:\n      // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n      return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];\n    };\n    return this;\n  },\n  // xxx: for now i will just save one spline function to to\n  getInterpolateFunction: function getInterpolateFunction(c) {\n    var swiper = this;\n    if (!swiper.controller.spline) {\n      swiper.controller.spline = swiper.params.loop ?\n        new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid) :\n        new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);\n    }\n  },\n  setTranslate: function setTranslate(setTranslate$1, byController) {\n    var swiper = this;\n    var controlled = swiper.controller.control;\n    var multiplier;\n    var controlledTranslate;\n    function setControlledTranslate(c) {\n      // this will create an Interpolate function based on the snapGrids\n      // x is the Grid of the scrolled scroller and y will be the controlled scroller\n      // it makes sense to create this only once and recall it for the interpolation\n      // the function does a lot of value caching for performance\n      var translate = c.rtl && c.params.direction === 'horizontal' ? -swiper.translate : swiper.translate;\n      if (swiper.params.controller.by === 'slide') {\n        swiper.controller.getInterpolateFunction(c);\n        // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n        // but it did not work out\n        controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n      }\n\n      if (!controlledTranslate || swiper.params.controller.by === 'container') {\n        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n        controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate();\n      }\n\n      if (swiper.params.controller.inverse) {\n        controlledTranslate = c.maxTranslate() - controlledTranslate;\n      }\n      c.updateProgress(controlledTranslate);\n      c.setTranslate(controlledTranslate, swiper);\n      c.updateActiveIndex();\n      c.updateSlidesClasses();\n    }\n    if (Array.isArray(controlled)) {\n      for (var i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper$2) {\n          setControlledTranslate(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper$2 && byController !== controlled) {\n      setControlledTranslate(controlled);\n    }\n  },\n  setTransition: function setTransition(duration, byController) {\n    var swiper = this;\n    var controlled = swiper.controller.control;\n    var i;\n    function setControlledTransition(c) {\n      c.setTransition(duration, swiper);\n      if (duration !== 0) {\n        c.transitionStart();\n        c.$wrapperEl.transitionEnd(function () {\n          if (!controlled) { return; }\n          if (c.params.loop && swiper.params.controller.by === 'slide') {\n            c.loopFix();\n          }\n          c.transitionEnd();\n        });\n      }\n    }\n    if (Array.isArray(controlled)) {\n      for (i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper$2) {\n          setControlledTransition(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper$2 && byController !== controlled) {\n      setControlledTransition(controlled);\n    }\n  },\n};\nvar Controller$1 = {\n  name: 'controller',\n  params: {\n    controller: {\n      control: undefined,\n      inverse: false,\n      by: 'slide', // or 'container'\n    },\n  },\n  create: function create() {\n    var swiper = this;\n    Utils.extend(swiper, {\n      controller: {\n        control: swiper.params.controller.control,\n        getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),\n        setTranslate: Controller.setTranslate.bind(swiper),\n        setTransition: Controller.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    update: function update() {\n      var swiper = this;\n      if (!swiper.controller.control) { return; }\n      if (swiper.controller.spline) {\n        swiper.controller.spline = undefined;\n        delete swiper.controller.spline;\n      }\n    },\n    resize: function resize() {\n      var swiper = this;\n      if (!swiper.controller.control) { return; }\n      if (swiper.controller.spline) {\n        swiper.controller.spline = undefined;\n        delete swiper.controller.spline;\n      }\n    },\n    observerUpdate: function observerUpdate() {\n      var swiper = this;\n      if (!swiper.controller.control) { return; }\n      if (swiper.controller.spline) {\n        swiper.controller.spline = undefined;\n        delete swiper.controller.spline;\n      }\n    },\n    setTranslate: function setTranslate(translate, byController) {\n      var swiper = this;\n      if (!swiper.controller.control) { return; }\n      swiper.controller.setTranslate(translate, byController);\n    },\n    setTransition: function setTransition(duration, byController) {\n      var swiper = this;\n      if (!swiper.controller.control) { return; }\n      swiper.controller.setTransition(duration, byController);\n    },\n  },\n};\n\nvar a11y = {\n  makeElFocusable: function makeElFocusable($el) {\n    $el.attr('tabIndex', '0');\n    return $el;\n  },\n  addElRole: function addElRole($el, role) {\n    $el.attr('role', role);\n    return $el;\n  },\n  addElLabel: function addElLabel($el, label) {\n    $el.attr('aria-label', label);\n    return $el;\n  },\n  disableEl: function disableEl($el) {\n    $el.attr('aria-disabled', true);\n    return $el;\n  },\n  enableEl: function enableEl($el) {\n    $el.attr('aria-disabled', false);\n    return $el;\n  },\n  onEnterKey: function onEnterKey(e) {\n    var swiper = this;\n    var params = swiper.params.a11y;\n    if (e.keyCode !== 13) { return; }\n    var $targetEl = $$1$1(e.target);\n    if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n      if (!(swiper.isEnd && !swiper.params.loop)) {\n        swiper.slideNext();\n      }\n      if (swiper.isEnd) {\n        swiper.a11y.notify(params.lastSlideMessage);\n      } else {\n        swiper.a11y.notify(params.nextSlideMessage);\n      }\n    }\n    if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n      if (!(swiper.isBeginning && !swiper.params.loop)) {\n        swiper.slidePrev();\n      }\n      if (swiper.isBeginning) {\n        swiper.a11y.notify(params.firstSlideMessage);\n      } else {\n        swiper.a11y.notify(params.prevSlideMessage);\n      }\n    }\n    if (swiper.pagination && $targetEl.is((\".\" + (swiper.params.pagination.bulletClass)))) {\n      $targetEl[0].click();\n    }\n  },\n  notify: function notify(message) {\n    var swiper = this;\n    var notification = swiper.a11y.liveRegion;\n    if (notification.length === 0) { return; }\n    notification.html('');\n    notification.html(message);\n  },\n  updateNavigation: function updateNavigation() {\n    var swiper = this;\n\n    if (swiper.params.loop) { return; }\n    var ref = swiper.navigation;\n    var $nextEl = ref.$nextEl;\n    var $prevEl = ref.$prevEl;\n\n    if ($prevEl && $prevEl.length > 0) {\n      if (swiper.isBeginning) {\n        swiper.a11y.disableEl($prevEl);\n      } else {\n        swiper.a11y.enableEl($prevEl);\n      }\n    }\n    if ($nextEl && $nextEl.length > 0) {\n      if (swiper.isEnd) {\n        swiper.a11y.disableEl($nextEl);\n      } else {\n        swiper.a11y.enableEl($nextEl);\n      }\n    }\n  },\n  updatePagination: function updatePagination() {\n    var swiper = this;\n    var params = swiper.params.a11y;\n    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n      swiper.pagination.bullets.each(function (bulletIndex, bulletEl) {\n        var $bulletEl = $$1$1(bulletEl);\n        swiper.a11y.makeElFocusable($bulletEl);\n        swiper.a11y.addElRole($bulletEl, 'button');\n        swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/{{index}}/, $bulletEl.index() + 1));\n      });\n    }\n  },\n  init: function init() {\n    var swiper = this;\n\n    swiper.$el.append(swiper.a11y.liveRegion);\n\n    // Navigation\n    var params = swiper.params.a11y;\n    var $nextEl;\n    var $prevEl;\n    if (swiper.navigation && swiper.navigation.$nextEl) {\n      $nextEl = swiper.navigation.$nextEl;\n    }\n    if (swiper.navigation && swiper.navigation.$prevEl) {\n      $prevEl = swiper.navigation.$prevEl;\n    }\n    if ($nextEl) {\n      swiper.a11y.makeElFocusable($nextEl);\n      swiper.a11y.addElRole($nextEl, 'button');\n      swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);\n      $nextEl.on('keydown', swiper.a11y.onEnterKey);\n    }\n    if ($prevEl) {\n      swiper.a11y.makeElFocusable($prevEl);\n      swiper.a11y.addElRole($prevEl, 'button');\n      swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);\n      $prevEl.on('keydown', swiper.a11y.onEnterKey);\n    }\n\n    // Pagination\n    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n      swiper.pagination.$el.on('keydown', (\".\" + (swiper.params.pagination.bulletClass)), swiper.a11y.onEnterKey);\n    }\n  },\n  destroy: function destroy() {\n    var swiper = this;\n    if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) { swiper.a11y.liveRegion.remove(); }\n\n    var $nextEl;\n    var $prevEl;\n    if (swiper.navigation && swiper.navigation.$nextEl) {\n      $nextEl = swiper.navigation.$nextEl;\n    }\n    if (swiper.navigation && swiper.navigation.$prevEl) {\n      $prevEl = swiper.navigation.$prevEl;\n    }\n    if ($nextEl) {\n      $nextEl.off('keydown', swiper.a11y.onEnterKey);\n    }\n    if ($prevEl) {\n      $prevEl.off('keydown', swiper.a11y.onEnterKey);\n    }\n\n    // Pagination\n    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n      swiper.pagination.$el.off('keydown', (\".\" + (swiper.params.pagination.bulletClass)), swiper.a11y.onEnterKey);\n    }\n  },\n};\nvar A11y = {\n  name: 'a11y',\n  params: {\n    a11y: {\n      enabled: false,\n      notificationClass: 'swiper-notification',\n      prevSlideMessage: 'Previous slide',\n      nextSlideMessage: 'Next slide',\n      firstSlideMessage: 'This is the first slide',\n      lastSlideMessage: 'This is the last slide',\n      paginationBulletMessage: 'Go to slide {{index}}',\n    },\n  },\n  create: function create() {\n    var swiper = this;\n    Utils.extend(swiper, {\n      a11y: {\n        liveRegion: $$1$1((\"<span class=\\\"\" + (swiper.params.a11y.notificationClass) + \"\\\" aria-live=\\\"assertive\\\" aria-atomic=\\\"true\\\"></span>\")),\n      },\n    });\n    Object.keys(a11y).forEach(function (methodName) {\n      swiper.a11y[methodName] = a11y[methodName].bind(swiper);\n    });\n  },\n  on: {\n    init: function init() {\n      var swiper = this;\n      if (!swiper.params.a11y.enabled) { return; }\n      swiper.a11y.init();\n      swiper.a11y.updateNavigation();\n    },\n    toEdge: function toEdge() {\n      var swiper = this;\n      if (!swiper.params.a11y.enabled) { return; }\n      swiper.a11y.updateNavigation();\n    },\n    fromEdge: function fromEdge() {\n      var swiper = this;\n      if (!swiper.params.a11y.enabled) { return; }\n      swiper.a11y.updateNavigation();\n    },\n    paginationUpdate: function paginationUpdate() {\n      var swiper = this;\n      if (!swiper.params.a11y.enabled) { return; }\n      swiper.a11y.updatePagination();\n    },\n    destroy: function destroy() {\n      var swiper = this;\n      if (!swiper.params.a11y.enabled) { return; }\n      swiper.a11y.destroy();\n    },\n  },\n};\n\nvar Autoplay = {\n  run: function run() {\n    var swiper = this;\n    var $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n    var delay = swiper.params.autoplay.delay;\n    if ($activeSlideEl.attr('data-swiper-autoplay')) {\n      delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n    }\n    swiper.autoplay.timeout = Utils.nextTick(function () {\n      if (swiper.params.loop) {\n        swiper.loopFix();\n        swiper.slideNext(swiper.params.speed, true, true);\n        swiper.emit('autoplay');\n      } else if (!swiper.isEnd) {\n        swiper.slideNext(swiper.params.speed, true, true);\n        swiper.emit('autoplay');\n      } else if (!swiper.params.autoplay.stopOnLastSlide) {\n        swiper.slideTo(0, swiper.params.speed, true, true);\n        swiper.emit('autoplay');\n      } else {\n        swiper.autoplay.stop();\n      }\n    }, delay);\n  },\n  start: function start() {\n    var swiper = this;\n    if (typeof swiper.autoplay.timeout !== 'undefined') { return false; }\n    if (swiper.autoplay.running) { return false; }\n    swiper.autoplay.running = true;\n    swiper.emit('autoplayStart');\n    swiper.autoplay.run();\n    return true;\n  },\n  stop: function stop() {\n    var swiper = this;\n    if (!swiper.autoplay.running) { return false; }\n    if (typeof swiper.autoplay.timeout === 'undefined') { return false; }\n\n    if (swiper.autoplay.timeout) {\n      clearTimeout(swiper.autoplay.timeout);\n      swiper.autoplay.timeout = undefined;\n    }\n    swiper.autoplay.running = false;\n    swiper.emit('autoplayStop');\n    return true;\n  },\n  pause: function pause(speed) {\n    var swiper = this;\n    if (!swiper.autoplay.running) { return; }\n    if (swiper.autoplay.paused) { return; }\n    if (swiper.autoplay.timeout) { clearTimeout(swiper.autoplay.timeout); }\n    swiper.autoplay.paused = true;\n    if (speed === 0) {\n      swiper.autoplay.paused = false;\n      swiper.autoplay.run();\n    } else {\n      swiper.$wrapperEl.transitionEnd(function () {\n        if (!swiper || swiper.destroyed) { return; }\n        swiper.autoplay.paused = false;\n        if (!swiper.autoplay.running) {\n          swiper.autoplay.stop();\n        } else {\n          swiper.autoplay.run();\n        }\n      });\n    }\n  },\n};\n\nvar Autoplay$1 = {\n  name: 'autoplay',\n  params: {\n    autoplay: {\n      enabled: false,\n      delay: 3000,\n      disableOnInteraction: true,\n      stopOnLastSlide: false,\n    },\n  },\n  create: function create() {\n    var swiper = this;\n    Utils.extend(swiper, {\n      autoplay: {\n        running: false,\n        paused: false,\n        run: Autoplay.run.bind(swiper),\n        start: Autoplay.start.bind(swiper),\n        stop: Autoplay.stop.bind(swiper),\n        pause: Autoplay.pause.bind(swiper),\n      },\n    });\n  },\n  on: {\n    init: function init() {\n      var swiper = this;\n      if (swiper.params.autoplay.enabled) {\n        swiper.autoplay.start();\n      }\n    },\n    beforeTransitionStart: function beforeTransitionStart(speed, internal) {\n      var swiper = this;\n      if (swiper.autoplay.running) {\n        if (internal || !swiper.params.autoplay.disableOnInteraction) {\n          swiper.autoplay.pause(speed);\n        } else {\n          swiper.autoplay.stop();\n        }\n      }\n    },\n    sliderFirstMove: function sliderFirstMove() {\n      var swiper = this;\n      if (swiper.autoplay.running) {\n        if (swiper.params.autoplay.disableOnInteraction) {\n          swiper.autoplay.stop();\n        } else {\n          swiper.autoplay.pause();\n        }\n      }\n    },\n    destroy: function destroy() {\n      var swiper = this;\n      if (swiper.autoplay.running) {\n        swiper.autoplay.stop();\n      }\n    },\n  },\n};\n\nvar Fade = {\n  setTranslate: function setTranslate() {\n    var swiper = this;\n    var slides = swiper.slides;\n    for (var i = 0; i < slides.length; i += 1) {\n      var $slideEl = swiper.slides.eq(i);\n      var offset = $slideEl[0].swiperSlideOffset;\n      var tx = -offset;\n      if (!swiper.params.virtualTranslate) { tx -= swiper.translate; }\n      var ty = 0;\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n      }\n      var slideOpacity = swiper.params.fadeEffect.crossFade ?\n        Math.max(1 - Math.abs($slideEl[0].progress), 0) :\n        1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n      $slideEl\n        .css({\n          opacity: slideOpacity,\n        })\n        .transform((\"translate3d(\" + tx + \"px, \" + ty + \"px, 0px)\"));\n    }\n  },\n  setTransition: function setTransition(duration) {\n    var swiper = this;\n    var slides = swiper.slides;\n    var $wrapperEl = swiper.$wrapperEl;\n    slides.transition(duration);\n    if (swiper.params.virtualTranslate && duration !== 0) {\n      var eventTriggered = false;\n      slides.transitionEnd(function () {\n        if (eventTriggered) { return; }\n        if (!swiper || swiper.destroyed) { return; }\n        eventTriggered = true;\n        swiper.animating = false;\n        var triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n        for (var i = 0; i < triggerEvents.length; i += 1) {\n          $wrapperEl.trigger(triggerEvents[i]);\n        }\n      });\n    }\n  },\n};\n\nvar EffectFade = {\n  name: 'effect-fade',\n  params: {\n    fadeEffect: {\n      crossFade: false,\n    },\n  },\n  create: function create() {\n    var swiper = this;\n    Utils.extend(swiper, {\n      fadeEffect: {\n        setTranslate: Fade.setTranslate.bind(swiper),\n        setTransition: Fade.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit: function beforeInit() {\n      var swiper = this;\n      if (swiper.params.effect !== 'fade') { return; }\n      swiper.classNames.push(((swiper.params.containerModifierClass) + \"fade\"));\n      var overwriteParams = {\n        slidesPerView: 1,\n        slidesPerColumn: 1,\n        slidesPerGroup: 1,\n        watchSlidesProgress: true,\n        spaceBetween: 0,\n        virtualTranslate: true,\n      };\n      Utils.extend(swiper.params, overwriteParams);\n      Utils.extend(swiper.originalParams, overwriteParams);\n    },\n    setTranslate: function setTranslate() {\n      var swiper = this;\n      if (swiper.params.effect !== 'fade') { return; }\n      swiper.fadeEffect.setTranslate();\n    },\n    setTransition: function setTransition(duration) {\n      var swiper = this;\n      if (swiper.params.effect !== 'fade') { return; }\n      swiper.fadeEffect.setTransition(duration);\n    },\n  },\n};\n\nvar Cube = {\n  setTranslate: function setTranslate() {\n    var swiper = this;\n    var $el = swiper.$el;\n    var $wrapperEl = swiper.$wrapperEl;\n    var slides = swiper.slides;\n    var swiperWidth = swiper.width;\n    var swiperHeight = swiper.height;\n    var rtl = swiper.rtl;\n    var swiperSize = swiper.size;\n    var params = swiper.params.cubeEffect;\n    var isHorizontal = swiper.isHorizontal();\n    var isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n    var wrapperRotate = 0;\n    var $cubeShadowEl;\n    if (params.shadow) {\n      if (isHorizontal) {\n        $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n        if ($cubeShadowEl.length === 0) {\n          $cubeShadowEl = $$1$1('<div class=\"swiper-cube-shadow\"></div>');\n          $wrapperEl.append($cubeShadowEl);\n        }\n        $cubeShadowEl.css({ height: (swiperWidth + \"px\") });\n      } else {\n        $cubeShadowEl = $el.find('.swiper-cube-shadow');\n        if ($cubeShadowEl.length === 0) {\n          $cubeShadowEl = $$1$1('<div class=\"swiper-cube-shadow\"></div>');\n          $el.append($cubeShadowEl);\n        }\n      }\n    }\n    for (var i = 0; i < slides.length; i += 1) {\n      var $slideEl = slides.eq(i);\n      var slideIndex = i;\n      if (isVirtual) {\n        slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n      }\n      var slideAngle = slideIndex * 90;\n      var round = Math.floor(slideAngle / 360);\n      if (rtl) {\n        slideAngle = -slideAngle;\n        round = Math.floor(-slideAngle / 360);\n      }\n      var progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n      var tx = 0;\n      var ty = 0;\n      var tz = 0;\n      if (slideIndex % 4 === 0) {\n        tx = -round * 4 * swiperSize;\n        tz = 0;\n      } else if ((slideIndex - 1) % 4 === 0) {\n        tx = 0;\n        tz = -round * 4 * swiperSize;\n      } else if ((slideIndex - 2) % 4 === 0) {\n        tx = swiperSize + (round * 4 * swiperSize);\n        tz = swiperSize;\n      } else if ((slideIndex - 3) % 4 === 0) {\n        tx = -swiperSize;\n        tz = (3 * swiperSize) + (swiperSize * 4 * round);\n      }\n      if (rtl) {\n        tx = -tx;\n      }\n\n      if (!isHorizontal) {\n        ty = tx;\n        tx = 0;\n      }\n\n      var transform = \"rotateX(\" + (isHorizontal ? 0 : -slideAngle) + \"deg) rotateY(\" + (isHorizontal ? slideAngle : 0) + \"deg) translate3d(\" + tx + \"px, \" + ty + \"px, \" + tz + \"px)\";\n      if (progress <= 1 && progress > -1) {\n        wrapperRotate = (slideIndex * 90) + (progress * 90);\n        if (rtl) { wrapperRotate = (-slideIndex * 90) - (progress * 90); }\n      }\n      $slideEl.transform(transform);\n      if (params.slideShadows) {\n        // Set shadows\n        var shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n        var shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n        if (shadowBefore.length === 0) {\n          shadowBefore = $$1$1((\"<div class=\\\"swiper-slide-shadow-\" + (isHorizontal ? 'left' : 'top') + \"\\\"></div>\"));\n          $slideEl.append(shadowBefore);\n        }\n        if (shadowAfter.length === 0) {\n          shadowAfter = $$1$1((\"<div class=\\\"swiper-slide-shadow-\" + (isHorizontal ? 'right' : 'bottom') + \"\\\"></div>\"));\n          $slideEl.append(shadowAfter);\n        }\n        if (shadowBefore.length) { shadowBefore[0].style.opacity = Math.max(-progress, 0); }\n        if (shadowAfter.length) { shadowAfter[0].style.opacity = Math.max(progress, 0); }\n      }\n    }\n    $wrapperEl.css({\n      '-webkit-transform-origin': (\"50% 50% -\" + (swiperSize / 2) + \"px\"),\n      '-moz-transform-origin': (\"50% 50% -\" + (swiperSize / 2) + \"px\"),\n      '-ms-transform-origin': (\"50% 50% -\" + (swiperSize / 2) + \"px\"),\n      'transform-origin': (\"50% 50% -\" + (swiperSize / 2) + \"px\"),\n    });\n\n    if (params.shadow) {\n      if (isHorizontal) {\n        $cubeShadowEl.transform((\"translate3d(0px, \" + ((swiperWidth / 2) + params.shadowOffset) + \"px, \" + (-swiperWidth / 2) + \"px) rotateX(90deg) rotateZ(0deg) scale(\" + (params.shadowScale) + \")\"));\n      } else {\n        var shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);\n        var multiplier = 1.5 - (\n          (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2) +\n          (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)\n        );\n        var scale1 = params.shadowScale;\n        var scale2 = params.shadowScale / multiplier;\n        var offset = params.shadowOffset;\n        $cubeShadowEl.transform((\"scale3d(\" + scale1 + \", 1, \" + scale2 + \") translate3d(0px, \" + ((swiperHeight / 2) + offset) + \"px, \" + (-swiperHeight / 2 / scale2) + \"px) rotateX(-90deg)\"));\n      }\n    }\n    var zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0;\n    $wrapperEl\n      .transform((\"translate3d(0px,0,\" + zFactor + \"px) rotateX(\" + (swiper.isHorizontal() ? 0 : wrapperRotate) + \"deg) rotateY(\" + (swiper.isHorizontal() ? -wrapperRotate : 0) + \"deg)\"));\n  },\n  setTransition: function setTransition(duration) {\n    var swiper = this;\n    var $el = swiper.$el;\n    var slides = swiper.slides;\n    slides\n      .transition(duration)\n      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n      .transition(duration);\n    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n      $el.find('.swiper-cube-shadow').transition(duration);\n    }\n  },\n};\n\nvar EffectCube = {\n  name: 'effect-cube',\n  params: {\n    cubeEffect: {\n      slideShadows: true,\n      shadow: true,\n      shadowOffset: 20,\n      shadowScale: 0.94,\n    },\n  },\n  create: function create() {\n    var swiper = this;\n    Utils.extend(swiper, {\n      cubeEffect: {\n        setTranslate: Cube.setTranslate.bind(swiper),\n        setTransition: Cube.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit: function beforeInit() {\n      var swiper = this;\n      if (swiper.params.effect !== 'cube') { return; }\n      swiper.classNames.push(((swiper.params.containerModifierClass) + \"cube\"));\n      swiper.classNames.push(((swiper.params.containerModifierClass) + \"3d\"));\n      var overwriteParams = {\n        slidesPerView: 1,\n        slidesPerColumn: 1,\n        slidesPerGroup: 1,\n        watchSlidesProgress: true,\n        resistanceRatio: 0,\n        spaceBetween: 0,\n        centeredSlides: false,\n        virtualTranslate: true,\n      };\n      Utils.extend(swiper.params, overwriteParams);\n      Utils.extend(swiper.originalParams, overwriteParams);\n    },\n    setTranslate: function setTranslate() {\n      var swiper = this;\n      if (swiper.params.effect !== 'cube') { return; }\n      swiper.cubeEffect.setTranslate();\n    },\n    setTransition: function setTransition(duration) {\n      var swiper = this;\n      if (swiper.params.effect !== 'cube') { return; }\n      swiper.cubeEffect.setTransition(duration);\n    },\n  },\n};\n\nvar Flip = {\n  setTranslate: function setTranslate() {\n    var swiper = this;\n    var slides = swiper.slides;\n    for (var i = 0; i < slides.length; i += 1) {\n      var $slideEl = slides.eq(i);\n      var progress = $slideEl[0].progress;\n      if (swiper.params.flipEffect.limitRotation) {\n        progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n      }\n      var offset = $slideEl[0].swiperSlideOffset;\n      var rotate = -180 * progress;\n      var rotateY = rotate;\n      var rotateX = 0;\n      var tx = -offset;\n      var ty = 0;\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n        rotateX = -rotateY;\n        rotateY = 0;\n      } else if (swiper.rtl) {\n        rotateY = -rotateY;\n      }\n\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n      if (swiper.params.flipEffect.slideShadows) {\n        // Set shadows\n        var shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n        var shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n        if (shadowBefore.length === 0) {\n          shadowBefore = $$1$1((\"<div class=\\\"swiper-slide-shadow-\" + (swiper.isHorizontal() ? 'left' : 'top') + \"\\\"></div>\"));\n          $slideEl.append(shadowBefore);\n        }\n        if (shadowAfter.length === 0) {\n          shadowAfter = $$1$1((\"<div class=\\\"swiper-slide-shadow-\" + (swiper.isHorizontal() ? 'right' : 'bottom') + \"\\\"></div>\"));\n          $slideEl.append(shadowAfter);\n        }\n        if (shadowBefore.length) { shadowBefore[0].style.opacity = Math.max(-progress, 0); }\n        if (shadowAfter.length) { shadowAfter[0].style.opacity = Math.max(progress, 0); }\n      }\n      $slideEl\n        .transform((\"translate3d(\" + tx + \"px, \" + ty + \"px, 0px) rotateX(\" + rotateX + \"deg) rotateY(\" + rotateY + \"deg)\"));\n    }\n  },\n  setTransition: function setTransition(duration) {\n    var swiper = this;\n    var slides = swiper.slides;\n    var activeIndex = swiper.activeIndex;\n    var $wrapperEl = swiper.$wrapperEl;\n    slides\n      .transition(duration)\n      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n      .transition(duration);\n    if (swiper.params.virtualTranslate && duration !== 0) {\n      var eventTriggered = false;\n      // eslint-disable-next-line\n      slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {\n        if (eventTriggered) { return; }\n        if (!swiper || swiper.destroyed) { return; }\n        // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;\n        eventTriggered = true;\n        swiper.animating = false;\n        var triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n        for (var i = 0; i < triggerEvents.length; i += 1) {\n          $wrapperEl.trigger(triggerEvents[i]);\n        }\n      });\n    }\n  },\n};\n\nvar EffectFlip = {\n  name: 'effect-flip',\n  params: {\n    flipEffect: {\n      slideShadows: true,\n      limitRotation: true,\n    },\n  },\n  create: function create() {\n    var swiper = this;\n    Utils.extend(swiper, {\n      flipEffect: {\n        setTranslate: Flip.setTranslate.bind(swiper),\n        setTransition: Flip.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit: function beforeInit() {\n      var swiper = this;\n      if (swiper.params.effect !== 'flip') { return; }\n      swiper.classNames.push(((swiper.params.containerModifierClass) + \"flip\"));\n      swiper.classNames.push(((swiper.params.containerModifierClass) + \"3d\"));\n      var overwriteParams = {\n        slidesPerView: 1,\n        slidesPerColumn: 1,\n        slidesPerGroup: 1,\n        watchSlidesProgress: true,\n        spaceBetween: 0,\n        virtualTranslate: true,\n      };\n      Utils.extend(swiper.params, overwriteParams);\n      Utils.extend(swiper.originalParams, overwriteParams);\n    },\n    setTranslate: function setTranslate() {\n      var swiper = this;\n      if (swiper.params.effect !== 'flip') { return; }\n      swiper.flipEffect.setTranslate();\n    },\n    setTransition: function setTransition(duration) {\n      var swiper = this;\n      if (swiper.params.effect !== 'flip') { return; }\n      swiper.flipEffect.setTransition(duration);\n    },\n  },\n};\n\nvar Coverflow = {\n  setTranslate: function setTranslate() {\n    var swiper = this;\n    var swiperWidth = swiper.width;\n    var swiperHeight = swiper.height;\n    var slides = swiper.slides;\n    var $wrapperEl = swiper.$wrapperEl;\n    var slidesSizesGrid = swiper.slidesSizesGrid;\n    var params = swiper.params.coverflowEffect;\n    var isHorizontal = swiper.isHorizontal();\n    var transform = swiper.translate;\n    var center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2);\n    var rotate = isHorizontal ? params.rotate : -params.rotate;\n    var translate = params.depth;\n    // Each slide offset from center\n    for (var i = 0, length = slides.length; i < length; i += 1) {\n      var $slideEl = slides.eq(i);\n      var slideSize = slidesSizesGrid[i];\n      var slideOffset = $slideEl[0].swiperSlideOffset;\n      var offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;\n\n      var rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n      var rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n      // var rotateZ = 0\n      var translateZ = -translate * Math.abs(offsetMultiplier);\n\n      var translateY = isHorizontal ? 0 : params.stretch * (offsetMultiplier);\n      var translateX = isHorizontal ? params.stretch * (offsetMultiplier) : 0;\n\n      // Fix for ultra small values\n      if (Math.abs(translateX) < 0.001) { translateX = 0; }\n      if (Math.abs(translateY) < 0.001) { translateY = 0; }\n      if (Math.abs(translateZ) < 0.001) { translateZ = 0; }\n      if (Math.abs(rotateY) < 0.001) { rotateY = 0; }\n      if (Math.abs(rotateX) < 0.001) { rotateX = 0; }\n\n      var slideTransform = \"translate3d(\" + translateX + \"px,\" + translateY + \"px,\" + translateZ + \"px)  rotateX(\" + rotateX + \"deg) rotateY(\" + rotateY + \"deg)\";\n\n      $slideEl.transform(slideTransform);\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n      if (params.slideShadows) {\n        // Set shadows\n        var $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n        var $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n        if ($shadowBeforeEl.length === 0) {\n          $shadowBeforeEl = $$1$1((\"<div class=\\\"swiper-slide-shadow-\" + (isHorizontal ? 'left' : 'top') + \"\\\"></div>\"));\n          $slideEl.append($shadowBeforeEl);\n        }\n        if ($shadowAfterEl.length === 0) {\n          $shadowAfterEl = $$1$1((\"<div class=\\\"swiper-slide-shadow-\" + (isHorizontal ? 'right' : 'bottom') + \"\\\"></div>\"));\n          $slideEl.append($shadowAfterEl);\n        }\n        if ($shadowBeforeEl.length) { $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; }\n        if ($shadowAfterEl.length) { $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0; }\n      }\n    }\n\n    // Set correct perspective for IE10\n    if (Browser.ie) {\n      var ws = $wrapperEl[0].style;\n      ws.perspectiveOrigin = center + \"px 50%\";\n    }\n  },\n  setTransition: function setTransition(duration) {\n    var swiper = this;\n    swiper.slides\n      .transition(duration)\n      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n      .transition(duration);\n  },\n};\n\nvar EffectCoverflow = {\n  name: 'effect-coverflow',\n  params: {\n    coverflowEffect: {\n      rotate: 50,\n      stretch: 0,\n      depth: 100,\n      modifier: 1,\n      slideShadows: true,\n    },\n  },\n  create: function create() {\n    var swiper = this;\n    Utils.extend(swiper, {\n      coverflowEffect: {\n        setTranslate: Coverflow.setTranslate.bind(swiper),\n        setTransition: Coverflow.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit: function beforeInit() {\n      var swiper = this;\n      if (swiper.params.effect !== 'coverflow') { return; }\n\n      swiper.classNames.push(((swiper.params.containerModifierClass) + \"coverflow\"));\n      swiper.classNames.push(((swiper.params.containerModifierClass) + \"3d\"));\n\n      swiper.params.watchSlidesProgress = true;\n      swiper.originalParams.watchSlidesProgress = true;\n    },\n    setTranslate: function setTranslate() {\n      var swiper = this;\n      if (swiper.params.effect !== 'coverflow') { return; }\n      swiper.coverflowEffect.setTranslate();\n    },\n    setTransition: function setTransition(duration) {\n      var swiper = this;\n      if (swiper.params.effect !== 'coverflow') { return; }\n      swiper.coverflowEffect.setTransition(duration);\n    },\n  },\n};\n\n// Swiper Class\n// Core Modules\n// Components\nSwiper$2.use([\n  Device$4,\n  Browser$2,\n  Support$4,\n  Resize$1,\n  Observer$1,\n  Virtual$1,\n  Navigation$1,\n  Pagination$1,\n  Scrollbar$1,\n  Parallax$1,\n  Zoom$1,\n  Lazy$3,\n  Controller$1,\n  A11y,\n  Autoplay$1,\n  EffectFade,\n  EffectCube,\n  EffectFlip,\n  EffectCoverflow ]);\n\n{\n  if (!window.Swiper) {\n    window.Swiper = Swiper$2;\n  }\n}\n\nfunction initSwipers(swiperEl) {\n  var app = this;\n  var $swiperEl = $$1$1(swiperEl);\n  if ($swiperEl.length === 0) { return; }\n  if ($swiperEl[0].swiper) { return; }\n  var initialSlide;\n  var params = {};\n  var isTabs;\n  var isRoutableTabs;\n  if ($swiperEl.hasClass('tabs-swipeable-wrap')) {\n    $swiperEl\n      .addClass('swiper-container')\n      .children('.tabs')\n      .addClass('swiper-wrapper')\n      .children('.tab')\n      .addClass('swiper-slide');\n    initialSlide = $swiperEl.children('.tabs').children('.tab-active').index();\n    isTabs = true;\n    isRoutableTabs = $swiperEl.find('.tabs-routable').length > 0;\n  }\n  if ($swiperEl.attr('data-swiper')) {\n    params = JSON.parse($swiperEl.attr('data-swiper'));\n  } else {\n    params = $swiperEl.dataset();\n    Object.keys(params).forEach(function (key) {\n      var value = params[key];\n      if (typeof value === 'string' && value.indexOf('{') === 0 && value.indexOf('}') > 0) {\n        try {\n          params[key] = JSON.parse(value);\n        } catch (e) {\n          // not JSON\n        }\n      }\n    });\n  }\n  if (typeof params.initialSlide === 'undefined' && typeof initialSlide !== 'undefined') {\n    params.initialSlide = initialSlide;\n  }\n\n  var swiper = app.swiper.create($swiperEl[0], params);\n  if (isTabs) {\n    swiper.on('slideChange', function () {\n      if (isRoutableTabs) {\n        var view = app.views.get($swiperEl.parents('.view'));\n        if (!view) { view = app.views.main; }\n        var router = view.router;\n        var tabRoute = router.findTabRoute(swiper.slides.eq(swiper.activeIndex)[0]);\n        if (tabRoute) { router.navigate(tabRoute.path); }\n      } else {\n        app.tab.show({\n          tabEl: swiper.slides.eq(swiper.activeIndex),\n        });\n      }\n    });\n  }\n}\n\nvar Swiper = {\n  name: 'swiper',\n  static: {\n    Swiper: Swiper$2,\n  },\n  create: function create() {\n    var app = this;\n    app.swiper = ConstructorMethods({\n      defaultSelector: '.swiper-container',\n      constructor: Swiper$2,\n      domProp: 'swiper',\n    });\n  },\n  on: {\n    pageBeforeRemove: function pageBeforeRemove(page) {\n      var app = this;\n      page.$el.find('.swiper-init, .tabs-swipeable-wrap').each(function (index, swiperEl) {\n        app.swiper.destroy(swiperEl);\n      });\n    },\n    pageMounted: function pageMounted(page) {\n      var app = this;\n      page.$el.find('.tabs-swipeable-wrap').each(function (index, swiperEl) {\n        initSwipers.call(app, swiperEl);\n      });\n    },\n    pageInit: function pageInit(page) {\n      var app = this;\n      page.$el.find('.swiper-init, .tabs-swipeable-wrap').each(function (index, swiperEl) {\n        initSwipers.call(app, swiperEl);\n      });\n    },\n    pageReinit: function pageReinit(page) {\n      var app = this;\n      page.$el.find('.swiper-init, .tabs-swipeable-wrap').each(function (index, swiperEl) {\n        var swiper = app.swiper.get(swiperEl);\n        if (swiper && swiper.update) { swiper.update(); }\n      });\n    },\n  },\n};\n\n/* eslint indent: [\"off\"] */\nvar PhotoBrowser$1 = (function (Framework7Class$$1) {\n  function PhotoBrowser(app, params) {\n    if ( params === void 0 ) params = {};\n\n    Framework7Class$$1.call(this, params, [app]);\n\n    var pb = this;\n    pb.app = app;\n\n    var defaults = Utils.extend({\n      on: {},\n    }, app.params.photoBrowser);\n\n    // Extend defaults with modules params\n    pb.useModulesParams(defaults);\n\n    pb.params = Utils.extend(defaults, params);\n\n    Utils.extend(pb, {\n      exposed: false,\n      opened: false,\n      activeIndex: pb.params.swiper.initialSlide,\n      url: pb.params.url,\n      view: pb.params.view || app.views.main,\n      swipeToClose: {\n        allow: true,\n        isTouched: false,\n        diff: undefined,\n        start: undefined,\n        current: undefined,\n        started: false,\n        activeSlide: undefined,\n        timeStart: undefined,\n      },\n    });\n\n    // Install Modules\n    pb.useModules();\n\n    // Init\n    pb.init();\n  }\n\n  if ( Framework7Class$$1 ) PhotoBrowser.__proto__ = Framework7Class$$1;\n  PhotoBrowser.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n  PhotoBrowser.prototype.constructor = PhotoBrowser;\n  PhotoBrowser.prototype.onSlideChange = function onSlideChange (swiper) {\n    var pb = this;\n    pb.activeIndex = swiper.activeIndex;\n\n    var current = swiper.activeIndex + 1;\n    var total = pb.params.virtualSlides ? pb.params.photos.length : swiper.slides.length;\n    if (swiper.params.loop) {\n      total -= 2;\n      current -= swiper.loopedSlides;\n      if (current < 1) { current = total + current; }\n      if (current > total) { current -= total; }\n    }\n\n    var $activeSlideEl = pb.params.virtualSlides\n      ? swiper.$wrapperEl.find((\".swiper-slide[data-swiper-slide-index=\\\"\" + (swiper.activeIndex) + \"\\\"]\"))\n      : swiper.slides.eq(swiper.activeIndex);\n    var $previousSlideEl = pb.params.virtualSlides\n      ? swiper.$wrapperEl.find((\".swiper-slide[data-swiper-slide-index=\\\"\" + (swiper.previousIndex) + \"\\\"]\"))\n      : swiper.slides.eq(swiper.previousIndex);\n\n    var $currentEl = pb.$el.find('.photo-browser-current');\n    var $totalEl = pb.$el.find('.photo-browser-total');\n    if (pb.params.type === 'page' && pb.params.navbar && $currentEl.length === 0 && pb.app.theme === 'ios') {\n      var navbarEl = pb.app.navbar.getElByPage(pb.$el);\n      if (navbarEl) {\n        $currentEl = $$1$1(navbarEl).find('.photo-browser-current');\n        $totalEl = $$1$1(navbarEl).find('.photo-browser-total');\n      }\n    }\n    $currentEl.text(current);\n    $totalEl.text(total);\n\n    // Update captions\n    if (pb.captions.length > 0) {\n      var captionIndex = swiper.params.loop ? $activeSlideEl.attr('data-swiper-slide-index') : pb.activeIndex;\n      pb.$captionsContainerEl.find('.photo-browser-caption-active').removeClass('photo-browser-caption-active');\n      pb.$captionsContainerEl.find((\"[data-caption-index=\\\"\" + captionIndex + \"\\\"]\")).addClass('photo-browser-caption-active');\n    }\n\n    // Stop Video\n    var previousSlideVideo = $previousSlideEl.find('video');\n    if (previousSlideVideo.length > 0) {\n      if ('pause' in previousSlideVideo[0]) { previousSlideVideo[0].pause(); }\n    }\n  };\n  PhotoBrowser.prototype.onTouchStart = function onTouchStart () {\n    var pb = this;\n    var swipeToClose = pb.swipeToClose;\n    if (!swipeToClose.allow) { return; }\n    swipeToClose.isTouched = true;\n  };\n  PhotoBrowser.prototype.onTouchMove = function onTouchMove (e) {\n    var pb = this;\n    var swipeToClose = pb.swipeToClose;\n\n    if (!swipeToClose.isTouched) { return; }\n    if (!swipeToClose.started) {\n      swipeToClose.started = true;\n      swipeToClose.start = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n      if (pb.params.virtualSlides) {\n        swipeToClose.activeSlide = pb.swiper.$wrapperEl.children('.swiper-slide-active');\n      } else {\n        swipeToClose.activeSlide = pb.swiper.slides.eq(pb.swiper.activeIndex);\n      }\n      swipeToClose.timeStart = Utils.now();\n    }\n    e.preventDefault();\n    swipeToClose.current = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n    swipeToClose.diff = swipeToClose.start - swipeToClose.current;\n    var opacity = 1 - (Math.abs(swipeToClose.diff) / 300);\n    var color = pb.exposed || pb.params.theme === 'dark' ? 0 : 255;\n    swipeToClose.activeSlide.transform((\"translate3d(0,\" + (-swipeToClose.diff) + \"px,0)\"));\n    pb.swiper.$el.css('background-color', (\"rgba(\" + color + \", \" + color + \", \" + color + \", \" + opacity + \")\")).transition(0);\n  };\n  PhotoBrowser.prototype.onTouchEnd = function onTouchEnd () {\n    var pb = this;\n    var swipeToClose = pb.swipeToClose;\n    swipeToClose.isTouched = false;\n    if (!swipeToClose.started) {\n      swipeToClose.started = false;\n      return;\n    }\n    swipeToClose.started = false;\n    swipeToClose.allow = false;\n    var diff = Math.abs(swipeToClose.diff);\n    var timeDiff = (new Date()).getTime() - swipeToClose.timeStart;\n    if ((timeDiff < 300 && diff > 20) || (timeDiff >= 300 && diff > 100)) {\n      Utils.nextTick(function () {\n        if (pb.$el) {\n          if (swipeToClose.diff < 0) { pb.$el.addClass('swipe-close-to-bottom'); }\n          else { pb.$el.addClass('swipe-close-to-top'); }\n        }\n        pb.emit('local::swipeToClose', pb);\n        pb.close();\n        swipeToClose.allow = true;\n      });\n      return;\n    }\n    if (diff !== 0) {\n      swipeToClose.activeSlide.addClass('photo-browser-transitioning').transitionEnd(function () {\n        swipeToClose.allow = true;\n        swipeToClose.activeSlide.removeClass('photo-browser-transitioning');\n      });\n    } else {\n      swipeToClose.allow = true;\n    }\n    pb.swiper.$el.transition('').css('background-color', '');\n    swipeToClose.activeSlide.transform('');\n  };\n\n  // Render Functions\n  PhotoBrowser.prototype.renderNavbar = function renderNavbar () {\n    var pb = this;\n    if (pb.params.renderNavbar) { return pb.params.renderNavbar.call(pb); }\n\n    var iconsColor = pb.params.iconsColor;\n    if (!pb.params.iconsColor && pb.params.theme === 'dark') { iconsColor = 'white'; }\n\n    var backLinkText = pb.app.theme === 'ios' && pb.params.backLinkText ? pb.params.backLinkText : '';\n\n    var isPopup = pb.params.type !== 'page';\n    var navbarHtml = (\"\\n      <div class=\\\"navbar\\\">\\n        <div class=\\\"navbar-inner sliding\\\">\\n          <div class=\\\"left\\\">\\n            <a href=\\\"#\\\" class=\\\"link \" + (isPopup ? 'popup-close' : '') + \" \" + (!backLinkText ? 'icon-only' : '') + \" \" + (!isPopup ? 'back' : '') + \"\\\" \" + (isPopup ? 'data-popup=\".photo-browser-popup\"' : '') + \">\\n              <i class=\\\"icon icon-back \" + (iconsColor ? (\"color-\" + iconsColor) : '') + \"\\\"></i>\\n              \" + (backLinkText ? (\"<span>\" + backLinkText + \"</span>\") : '') + \"\\n            </a>\\n          </div>\\n          <div class=\\\"title\\\">\\n            <span class=\\\"photo-browser-current\\\"></span>\\n            <span class=\\\"photo-browser-of\\\">\" + (pb.params.navbarOfText) + \"</span>\\n            <span class=\\\"photo-browser-total\\\"></span>\\n          </div>\\n          <div class=\\\"right\\\"></div>\\n        </div>\\n      </div>\\n    \").trim();\n    return navbarHtml;\n  };\n  PhotoBrowser.prototype.renderToolbar = function renderToolbar () {\n    var pb = this;\n    if (pb.params.renderToolbar) { return pb.params.renderToolbar.call(pb); }\n\n    var iconsColor = pb.params.iconsColor;\n    if (!pb.params.iconsColor && pb.params.theme === 'dark') { iconsColor = 'white'; }\n\n    var toolbarHtml = (\"\\n      <div class=\\\"toolbar tabbar toolbar-bottom-md\\\">\\n        <div class=\\\"toolbar-inner\\\">\\n          <a href=\\\"#\\\" class=\\\"link photo-browser-prev\\\">\\n            <i class=\\\"icon icon-back \" + (iconsColor ? (\"color-\" + iconsColor) : '') + \"\\\"></i>\\n          </a>\\n          <a href=\\\"#\\\" class=\\\"link photo-browser-next\\\">\\n            <i class=\\\"icon icon-forward \" + (iconsColor ? (\"color-\" + iconsColor) : '') + \"\\\"></i>\\n          </a>\\n        </div>\\n      </div>\\n    \").trim();\n    return toolbarHtml;\n  };\n  PhotoBrowser.prototype.renderCaption = function renderCaption (caption, index) {\n    var pb = this;\n    if (pb.params.renderCaption) { return pb.params.renderCaption.call(pb, caption, index); }\n    var captionHtml = (\"\\n      <div class=\\\"photo-browser-caption\\\" data-caption-index=\\\"\" + index + \"\\\">\\n        \" + caption + \"\\n      </div>\\n    \").trim();\n    return captionHtml;\n  };\n  PhotoBrowser.prototype.renderObject = function renderObject (photo, index) {\n    var pb = this;\n    if (pb.params.renderObject) { return pb.params.renderObject.call(pb, photo, index); }\n    var objHtml = \"\\n      <div class=\\\"photo-browser-slide photo-browser-object-slide swiper-slide\\\" data-swiper-slide-index=\\\"\" + index + \"\\\">\" + (photo.html ? photo.html : photo) + \"</div>\\n    \";\n    return objHtml;\n  };\n  PhotoBrowser.prototype.renderLazyPhoto = function renderLazyPhoto (photo, index) {\n    var pb = this;\n    if (pb.params.renderLazyPhoto) { return pb.params.renderLazyPhoto.call(pb, photo, index); }\n    var photoHtml = (\"\\n      <div class=\\\"photo-browser-slide photo-browser-slide-lazy swiper-slide\\\" data-swiper-slide-index=\\\"\" + index + \"\\\">\\n          <div class=\\\"preloader swiper-lazy-preloader \" + (pb.params.theme === 'dark' ? 'color-white' : '') + \"\\\">\" + (pb.app.theme === 'md' ? Utils.mdPreloaderContent : '') + \"</div>\\n          <span class=\\\"swiper-zoom-container\\\">\\n              <img data-src=\\\"\" + (photo.url ? photo.url : photo) + \"\\\" class=\\\"swiper-lazy\\\">\\n          </span>\\n      </div>\\n    \").trim();\n    return photoHtml;\n  };\n  PhotoBrowser.prototype.renderPhoto = function renderPhoto (photo, index) {\n    var pb = this;\n    if (pb.params.renderPhoto) { return pb.params.renderPhoto.call(pb, photo, index); }\n    var photoHtml = (\"\\n      <div class=\\\"photo-browser-slide swiper-slide\\\" data-swiper-slide-index=\\\"\" + index + \"\\\">\\n        <span class=\\\"swiper-zoom-container\\\">\\n          <img src=\\\"\" + (photo.url ? photo.url : photo) + \"\\\">\\n        </span>\\n      </div>\\n    \").trim();\n    return photoHtml;\n  };\n  PhotoBrowser.prototype.render = function render () {\n    var pb = this;\n    if (pb.params.render) { return pb.params.render.call(pb, pb.params); }\n    var html = (\"\\n      <div class=\\\"photo-browser photo-browser-\" + (pb.params.theme) + \"\\\">\\n        <div class=\\\"view\\\">\\n          <div class=\\\"page photo-browser-page photo-browser-page-\" + (pb.params.theme) + \" no-toolbar \" + (!pb.params.navbar ? 'no-navbar' : '') + \"\\\" data-name=\\\"photo-browser-page\\\">\\n            \" + (pb.params.navbar ? pb.renderNavbar() : '') + \"\\n            \" + (pb.params.toolbar ? pb.renderToolbar() : '') + \"\\n            <div class=\\\"photo-browser-captions photo-browser-captions-\" + (pb.params.captionsTheme || pb.params.theme) + \"\\\">\\n              \" + (pb.params.photos.map(function (photo, index) {\n                if (photo.caption) { return pb.renderCaption(photo.caption, index); }\n                return '';\n              }).join(' ')) + \"\\n            </div>\\n            <div class=\\\"photo-browser-swiper-container swiper-container\\\">\\n              <div class=\\\"photo-browser-swiper-wrapper swiper-wrapper\\\">\\n                \" + (pb.params.virtualSlides ? '' : pb.params.photos.map(function (photo, index) {\n                  if (photo.html || ((typeof photo === 'string' || photo instanceof String) && photo.indexOf('<') >= 0 && photo.indexOf('>') >= 0)) {\n                    return pb.renderObject(photo, index);\n                  } else if (pb.params.swiper.lazy === true || (pb.params.swiper.lazy && pb.params.swiper.lazy.enabled)) {\n                    return pb.renderLazyPhoto(photo, index);\n                  }\n                  return pb.renderPhoto(photo, index);\n                }).join(' ')) + \"\\n              </div>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    \").trim();\n    return html;\n  };\n  PhotoBrowser.prototype.renderStandalone = function renderStandalone () {\n    var pb = this;\n    if (pb.params.renderStandalone) { return pb.params.renderStandalone.call(pb); }\n    var standaloneHtml = \"<div class=\\\"popup photo-browser-popup photo-browser-standalone popup-tablet-fullscreen\\\">\" + (pb.render()) + \"</div>\";\n    return standaloneHtml;\n  };\n  PhotoBrowser.prototype.renderPage = function renderPage () {\n    var pb = this;\n    if (pb.params.renderPage) { return pb.params.renderPage.call(pb); }\n    var pageHtml = pb.render();\n\n    return pageHtml;\n  };\n  PhotoBrowser.prototype.renderPopup = function renderPopup () {\n    var pb = this;\n    if (pb.params.renderPopup) { return pb.params.renderPopup.call(pb); }\n    var popupHtml = \"<div class=\\\"popup photo-browser-popup\\\">\" + (pb.render()) + \"</div>\";\n\n    return popupHtml;\n  };\n\n  // Callbacks\n  PhotoBrowser.prototype.onOpen = function onOpen (type, el) {\n    var pb = this;\n    var app = pb.app;\n    var $el = $$1$1(el);\n\n    $el[0].f7PhotoBrowser = pb;\n\n    pb.$el = $el;\n    pb.el = $el[0];\n    pb.openedIn = type;\n    pb.opened = true;\n\n    pb.$swiperContainerEl = pb.$el.find('.photo-browser-swiper-container');\n    pb.$swiperWrapperEl = pb.$el.find('.photo-browser-swiper-wrapper');\n    pb.slides = pb.$el.find('.photo-browser-slide');\n    pb.$captionsContainerEl = pb.$el.find('.photo-browser-captions');\n    pb.captions = pb.$el.find('.photo-browser-caption');\n\n    // Init Swiper\n    var swiperParams = Utils.extend({}, pb.params.swiper, {\n      initialSlide: pb.activeIndex,\n      on: {\n        tap: function tap(e) {\n          pb.emit('local::tap', e);\n        },\n        click: function click(e) {\n          if (pb.params.exposition) {\n            pb.expositionToggle();\n          }\n          pb.emit('local::click', e);\n        },\n        doubleTap: function doubleTap(e) {\n          pb.emit('local::doubleTap', e);\n        },\n        slideChange: function slideChange() {\n          var args = [], len = arguments.length;\n          while ( len-- ) args[ len ] = arguments[ len ];\n\n          var swiper = this;\n          pb.onSlideChange(swiper);\n          pb.emit.apply(pb, [ 'local::slideChange' ].concat( args ));\n        },\n        transitionStart: function transitionStart() {\n          var args = [], len = arguments.length;\n          while ( len-- ) args[ len ] = arguments[ len ];\n\n          pb.emit.apply(pb, [ 'local::transitionStart' ].concat( args ));\n        },\n        transitionEnd: function transitionEnd() {\n          var args = [], len = arguments.length;\n          while ( len-- ) args[ len ] = arguments[ len ];\n\n          pb.emit.apply(pb, [ 'local::transitionEnd' ].concat( args ));\n        },\n        slideChangeStart: function slideChangeStart() {\n          var args = [], len = arguments.length;\n          while ( len-- ) args[ len ] = arguments[ len ];\n\n          pb.emit.apply(pb, [ 'local::slideChangeTransitionStart' ].concat( args ));\n        },\n        slideChangeEnd: function slideChangeEnd() {\n          var args = [], len = arguments.length;\n          while ( len-- ) args[ len ] = arguments[ len ];\n\n          pb.emit.apply(pb, [ 'local::slideChangeTransitionEnd' ].concat( args ));\n        },\n        lazyImageLoad: function lazyImageLoad() {\n          var args = [], len = arguments.length;\n          while ( len-- ) args[ len ] = arguments[ len ];\n\n          pb.emit.apply(pb, [ 'local::lazyImageLoad' ].concat( args ));\n        },\n        lazyImageReady: function lazyImageReady() {\n          var args = [], len = arguments.length;\n          while ( len-- ) args[ len ] = arguments[ len ];\n\n          var slideEl = args[0];\n          $$1$1(slideEl).removeClass('photo-browser-slide-lazy');\n          pb.emit.apply(pb, [ 'local::lazyImageReady' ].concat( args ));\n        },\n      },\n    });\n    if (pb.params.swipeToClose && pb.params.type !== 'page') {\n      Utils.extend(swiperParams.on, {\n        touchStart: function touchStart(e) {\n          pb.onTouchStart(e);\n          pb.emit('local::touchStart', e);\n        },\n        touchMoveOpposite: function touchMoveOpposite(e) {\n          pb.onTouchMove(e);\n          pb.emit('local::touchMoveOpposite', e);\n        },\n        touchEnd: function touchEnd(e) {\n          pb.onTouchEnd(e);\n          pb.emit('local::touchEnd', e);\n        },\n      });\n    }\n    if (pb.params.virtualSlides) {\n      Utils.extend(swiperParams, {\n        virtual: {\n          slides: pb.params.photos,\n          renderSlide: function renderSlide(photo, index) {\n            if (photo.html || ((typeof photo === 'string' || photo instanceof String) && photo.indexOf('<') >= 0 && photo.indexOf('>') >= 0)) {\n              return pb.renderObject(photo, index);\n            } else if (pb.params.swiper.lazy === true || (pb.params.swiper.lazy && pb.params.swiper.lazy.enabled)) {\n              return pb.renderLazyPhoto(photo, index);\n            }\n            return pb.renderPhoto(photo, index);\n          },\n        },\n      });\n    }\n\n    pb.swiper = app.swiper.create(pb.$swiperContainerEl, swiperParams);\n\n    if (pb.activeIndex === 0) {\n      pb.onSlideChange(pb.swiper);\n    }\n    if (pb.$el) {\n      pb.$el.trigger('photobrowser:open');\n    }\n    pb.emit('local::open photoBrowserOpen', pb);\n  };\n  PhotoBrowser.prototype.onOpened = function onOpened () {\n    var pb = this;\n\n    if (pb.$el) {\n      pb.$el.trigger('photobrowser:opened');\n    }\n    pb.emit('local::opened photoBrowserOpened', pb);\n  };\n  PhotoBrowser.prototype.onClose = function onClose () {\n    var pb = this;\n    if (pb.destroyed) { return; }\n\n    // Destroy Swiper\n    if (pb.swiper && pb.swiper.destroy) {\n      pb.swiper.destroy(true, false);\n      pb.swiper = null;\n      delete pb.swiper;\n    }\n    if (pb.$el) {\n      pb.$el.trigger('photobrowser:close');\n    }\n    pb.emit('local::close photoBrowserClose', pb);\n  };\n  PhotoBrowser.prototype.onClosed = function onClosed () {\n    var pb = this;\n    if (pb.destroyed) { return; }\n    pb.opened = false;\n    pb.$el = null;\n    pb.el = null;\n    delete pb.$el;\n    delete pb.el;\n    if (pb.$el) {\n      pb.$el.trigger('photobrowser:closed');\n    }\n    pb.emit('local::closed photoBrowserClosed', pb);\n  };\n\n  // Open\n  PhotoBrowser.prototype.openPage = function openPage () {\n    var pb = this;\n    if (pb.opened) { return pb; }\n\n    var pageHtml = pb.renderPage();\n\n    pb.view.router.navigate({\n      url: pb.url,\n      route: {\n        content: pageHtml,\n        path: pb.url,\n        on: {\n          pageBeforeIn: function pageBeforeIn(e, page) {\n            pb.view.$el.addClass((\"with-photo-browser-page with-photo-browser-page-\" + (pb.params.theme)));\n            pb.onOpen('page', page.el);\n          },\n          pageAfterIn: function pageAfterIn(e, page) {\n            pb.onOpened('page', page.el);\n          },\n          pageBeforeOut: function pageBeforeOut(e, page) {\n            pb.view.$el.removeClass((\"with-photo-browser-page with-photo-browser-page-exposed with-photo-browser-page-\" + (pb.params.theme)));\n            pb.onClose('page', page.el);\n          },\n          pageAfterOut: function pageAfterOut(e, page) {\n            pb.onClosed('page', page.el);\n          },\n        },\n      },\n    });\n    return pb;\n  };\n\n  PhotoBrowser.prototype.openStandalone = function openStandalone () {\n    var pb = this;\n    if (pb.opened) { return pb; }\n\n    var standaloneHtml = pb.renderStandalone();\n\n    var popupParams = {\n      backdrop: false,\n      content: standaloneHtml,\n      on: {\n        popupOpen: function popupOpen(popup) {\n          pb.onOpen('popup', popup.el);\n        },\n        popupOpened: function popupOpened(popup) {\n          pb.onOpened('popup', popup.el);\n        },\n        popupClose: function popupClose(popup) {\n          pb.onClose('popup', popup.el);\n        },\n        popupClosed: function popupClosed(popup) {\n          pb.onClosed('popup', popup.el);\n        },\n      },\n    };\n\n    if (pb.params.routableModals) {\n      pb.view.router.navigate({\n        url: pb.url,\n        route: {\n          path: pb.url,\n          popup: popupParams,\n        },\n      });\n    } else {\n      pb.modal = pb.app.popup.create(popupParams).open();\n    }\n    return pb;\n  };\n\n  PhotoBrowser.prototype.openPopup = function openPopup () {\n    var pb = this;\n    if (pb.opened) { return pb; }\n\n    var popupHtml = pb.renderPopup();\n\n    var popupParams = {\n      content: popupHtml,\n      on: {\n        popupOpen: function popupOpen(popup) {\n          pb.onOpen('popup', popup.el);\n        },\n        popupOpened: function popupOpened(popup) {\n          pb.onOpened('popup', popup.el);\n        },\n        popupClose: function popupClose(popup) {\n          pb.onClose('popup', popup.el);\n        },\n        popupClosed: function popupClosed(popup) {\n          pb.onClosed('popup', popup.el);\n        },\n      },\n    };\n\n    if (pb.params.routableModals) {\n      pb.view.router.navigate({\n        url: pb.url,\n        route: {\n          path: pb.url,\n          popup: popupParams,\n        },\n      });\n    } else {\n      pb.modal = pb.app.popup.create(popupParams).open();\n    }\n    return pb;\n  };\n\n  // Exposition\n  PhotoBrowser.prototype.expositionEnable = function expositionEnable () {\n    var pb = this;\n    if (pb.params.type === 'page') {\n      pb.view.$el.addClass('with-photo-browser-page-exposed');\n    }\n    if (pb.$el) { pb.$el.addClass('photo-browser-exposed'); }\n    if (pb.params.expositionHideCaptions) { pb.$captionsContainerEl.addClass('photo-browser-captions-exposed'); }\n    pb.exposed = true;\n    return pb;\n  };\n  PhotoBrowser.prototype.expositionDisable = function expositionDisable () {\n    var pb = this;\n    if (pb.params.type === 'page') {\n      pb.view.$el.removeClass('with-photo-browser-page-exposed');\n    }\n    if (pb.$el) { pb.$el.removeClass('photo-browser-exposed'); }\n    if (pb.params.expositionHideCaptions) { pb.$captionsContainerEl.removeClass('photo-browser-captions-exposed'); }\n    pb.exposed = false;\n    return pb;\n  };\n  PhotoBrowser.prototype.expositionToggle = function expositionToggle () {\n    var pb = this;\n    if (pb.params.type === 'page') {\n      pb.view.$el.toggleClass('with-photo-browser-page-exposed');\n    }\n    if (pb.$el) { pb.$el.toggleClass('photo-browser-exposed'); }\n    if (pb.params.expositionHideCaptions) { pb.$captionsContainerEl.toggleClass('photo-browser-captions-exposed'); }\n    pb.exposed = !pb.exposed;\n    return pb;\n  };\n  PhotoBrowser.prototype.open = function open (index) {\n    var pb = this;\n    var type = pb.params.type;\n    if (pb.opened) {\n      if (pb.swiper && typeof index !== 'undefined') {\n        pb.swiper.slideTo(parseInt(index, 10));\n      }\n      return pb;\n    } else if (typeof index !== 'undefined') {\n      pb.activeIndex = index;\n    }\n    if (type === 'standalone') {\n      pb.openStandalone();\n    }\n    if (type === 'page') {\n      pb.openPage();\n    }\n    if (type === 'popup') {\n      pb.openPopup();\n    }\n    return pb;\n  };\n  PhotoBrowser.prototype.close = function close () {\n    var pb = this;\n    if (!pb.opened) { return pb; }\n    if (pb.params.routableModals || pb.openedIn === 'page') {\n      if (pb.view) { pb.view.router.back(); }\n    } else {\n      pb.modal.once('modalClosed', function () {\n        Utils.nextTick(function () {\n          pb.modal.destroy();\n          delete pb.modal;\n        });\n      });\n      pb.modal.close();\n    }\n    return pb;\n  };\n  // eslint-disable-next-line\n  PhotoBrowser.prototype.init = function init () {};\n  PhotoBrowser.prototype.destroy = function destroy () {\n    var pb = this;\n    pb.emit('local::beforeDestroy photoBrowserBeforeDestroy', pb);\n    if (pb.$el) {\n      pb.$el.trigger('photobrowser:beforedestroy');\n      delete pb.$el[0].f7PhotoBrowser;\n    }\n    Utils.deleteProps(pb);\n    pb = null;\n  };\n\n  return PhotoBrowser;\n}(Framework7Class));\n\nvar PhotoBrowser = {\n  name: 'photoBrowser',\n  params: {\n    photoBrowser: {\n      photos: [],\n      exposition: true,\n      expositionHideCaptions: false,\n      type: 'standalone',\n      navbar: true,\n      toolbar: true,\n      theme: 'light',\n      captionsTheme: undefined,\n      iconsColor: undefined,\n      swipeToClose: true,\n      backLinkText: 'Close',\n      navbarOfText: 'of',\n      view: undefined,\n      url: 'photos/',\n      routableModals: true,\n      virtualSlides: true,\n\n      renderNavbar: undefined,\n      renderToolbar: undefined,\n      renderCaption: undefined,\n      renderObject: undefined,\n      renderLazyPhoto: undefined,\n      renderPhoto: undefined,\n      renderPage: undefined,\n      renderPopup: undefined,\n      renderStandalone: undefined,\n\n      swiper: {\n        initialSlide: 0,\n        spaceBetween: 20,\n        speed: 300,\n        loop: false,\n        preloadImages: true,\n        navigation: {\n          nextEl: '.photo-browser-next',\n          prevEl: '.photo-browser-prev',\n        },\n        zoom: {\n          enabled: true,\n          maxRatio: 3,\n          minRatio: 1,\n        },\n        lazy: {\n          enabled: true,\n        },\n      },\n    },\n  },\n  create: function create() {\n    var app = this;\n    app.photoBrowser = ConstructorMethods({\n      defaultSelector: '.photo-browser',\n      constructor: PhotoBrowser$1,\n      app: app,\n      domProp: 'f7PhotoBrowser',\n    });\n  },\n  static: {\n    PhotoBrowser: PhotoBrowser$1,\n  },\n};\n\nvar Notification$1 = (function (Modal) {\n  function Notification(app, params) {\n    var extendedParams = Utils.extend({\n      on: {},\n    }, app.params.notification, params);\n\n    // Extends with open/close Modal methods;\n    Modal.call(this, app, extendedParams);\n\n    var notification = this;\n\n    notification.app = app;\n\n    notification.params = extendedParams;\n\n    var ref = notification.params;\n    var icon = ref.icon;\n    var title = ref.title;\n    var titleRightText = ref.titleRightText;\n    var subtitle = ref.subtitle;\n    var text = ref.text;\n    var closeButton = ref.closeButton;\n    var closeTimeout = ref.closeTimeout;\n    var cssClass = ref.cssClass;\n    var closeOnClick = ref.closeOnClick;\n\n    var $el;\n    if (!notification.params.el) {\n      // Find Element\n      var notificationHtml = notification.render({\n        icon: icon,\n        title: title,\n        titleRightText: titleRightText,\n        subtitle: subtitle,\n        text: text,\n        closeButton: closeButton,\n        cssClass: cssClass,\n      });\n\n      $el = $$1$1(notificationHtml);\n    } else {\n      $el = $$1$1(notification.params.el);\n    }\n\n    if ($el && $el.length > 0 && $el[0].f7Modal) {\n      return $el[0].f7Modal;\n    }\n\n    if ($el.length === 0) {\n      return notification.destroy();\n    }\n\n    Utils.extend(notification, {\n      $el: $el,\n      el: $el[0],\n      type: 'notification',\n    });\n\n    $el[0].f7Modal = notification;\n\n    if (closeButton) {\n      $el.find('.notification-close-button').on('click', function () {\n        notification.close();\n      });\n    }\n    $el.on('click', function (e) {\n      if (closeButton && $$1$1(e.target).closest('.notification-close-button').length) {\n        return;\n      }\n      notification.emit('local::click notificationClick', notification);\n      if (closeOnClick) { notification.close(); }\n    });\n\n    notification.on('beforeDestroy', function () {\n      $el.off('click');\n    });\n\n    /* Touch Events */\n    var isTouched;\n    var isMoved;\n    var isScrolling;\n    var touchesDiff;\n    var touchStartTime;\n    var notificationHeight;\n    var touchesStart = {};\n    function handleTouchStart(e) {\n      if (isTouched) { return; }\n      isTouched = true;\n      isMoved = false;\n      isScrolling = undefined;\n      touchStartTime = Utils.now();\n      touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n      touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n    }\n    function handleTouchMove(e) {\n      if (!isTouched) { return; }\n      var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n      var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n      if (typeof isScrolling === 'undefined') {\n        isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) < Math.abs(pageX - touchesStart.x));\n      }\n      if (isScrolling) {\n        isTouched = false;\n        return;\n      }\n      e.preventDefault();\n      if (!isMoved) {\n        notification.$el.removeClass('notification-transitioning');\n        notification.$el.transition(0);\n        notificationHeight = notification.$el[0].offsetHeight / 2;\n      }\n      isMoved = true;\n      touchesDiff = (pageY - touchesStart.y);\n      var newTranslate = touchesDiff;\n      if (touchesDiff > 0) {\n        newTranslate = Math.pow( touchesDiff, 0.8 );\n      }\n      notification.$el.transform((\"translate3d(0, \" + newTranslate + \"px, 0)\"));\n    }\n    function handleTouchEnd() {\n      if (!isTouched || !isMoved) {\n        isTouched = false;\n        isMoved = false;\n        return;\n      }\n      isTouched = false;\n      isMoved = false;\n      if (touchesDiff === 0) {\n        return;\n      }\n\n      var timeDiff = Utils.now() - touchStartTime;\n      notification.$el.transition('');\n      notification.$el.addClass('notification-transitioning');\n      notification.$el.transform('');\n\n      if (\n        (touchesDiff < -10 && timeDiff < 300) ||\n        (-touchesDiff >= notificationHeight / 1)\n      ) {\n        notification.close();\n      }\n    }\n\n    function attachTouchEvents() {\n      {\n        notification.$el.on(app.touchEvents.start, handleTouchStart, { passive: true });\n        app.on('touchmove:active', handleTouchMove);\n        app.on('touchend:passive', handleTouchEnd);\n      }\n    }\n    function detachTouchEvents() {\n      {\n        notification.$el.off(app.touchEvents.start, handleTouchStart, { passive: true });\n        app.off('touchmove:active', handleTouchMove);\n        app.off('touchend:passive', handleTouchEnd);\n      }\n    }\n\n    var timeoutId;\n    function closeOnTimeout() {\n      timeoutId = Utils.nextTick(function () {\n        if (isTouched && isMoved) {\n          closeOnTimeout();\n          return;\n        }\n        notification.close();\n      }, closeTimeout);\n    }\n    notification.on('open', function () {\n      if (notification.params.swipeToClose) {\n        attachTouchEvents();\n      }\n      $$1$1('.notification.modal-in').each(function (index, openedEl) {\n        var notificationInstance = app.notification.get(openedEl);\n        if (openedEl !== notification.el && notificationInstance) {\n          notificationInstance.close();\n        }\n      });\n      if (closeTimeout) {\n        closeOnTimeout();\n      }\n    });\n    notification.on('close beforeDestroy', function () {\n      if (notification.params.swipeToClose) {\n        detachTouchEvents();\n      }\n      window.clearTimeout(timeoutId);\n    });\n\n    return notification;\n  }\n\n  if ( Modal ) Notification.__proto__ = Modal;\n  Notification.prototype = Object.create( Modal && Modal.prototype );\n  Notification.prototype.constructor = Notification;\n  Notification.prototype.render = function render () {\n    var notification = this;\n    if (notification.params.render) { return notification.params.render.call(notification, notification); }\n    var ref = notification.params;\n    var icon = ref.icon;\n    var title = ref.title;\n    var titleRightText = ref.titleRightText;\n    var subtitle = ref.subtitle;\n    var text = ref.text;\n    var closeButton = ref.closeButton;\n    var cssClass = ref.cssClass;\n    return (\"\\n      <div class=\\\"notification \" + (cssClass || '') + \"\\\">\\n        <div class=\\\"notification-header\\\">\\n          \" + (icon ? (\"<div class=\\\"notification-icon\\\">\" + icon + \"</div>\") : '') + \"\\n          \" + (title ? (\"<div class=\\\"notification-title\\\">\" + title + \"</div>\") : '') + \"\\n          \" + (titleRightText ? (\"<div class=\\\"notification-title-right-text\\\">\" + titleRightText + \"</div>\") : '') + \"\\n          \" + (closeButton ? '<span class=\"notification-close-button\"></span>' : '') + \"\\n        </div>\\n        <div class=\\\"notification-content\\\">\\n          \" + (subtitle ? (\"<div class=\\\"notification-subtitle\\\">\" + subtitle + \"</div>\") : '') + \"\\n          \" + (text ? (\"<div class=\\\"notification-text\\\">\" + text + \"</div>\") : '') + \"\\n        </div>\\n      </div>\\n    \").trim();\n  };\n\n  return Notification;\n}(Modal$1));\n\nvar Notification = {\n  name: 'notification',\n  static: {\n    Notification: Notification$1,\n  },\n  create: function create() {\n    var app = this;\n    app.notification = Utils.extend(\n      {},\n      ModalMethods({\n        app: app,\n        constructor: Notification$1,\n        defaultSelector: '.notification.modal-in',\n      })\n    );\n  },\n  params: {\n    notification: {\n      icon: null,\n      title: null,\n      titleRightText: null,\n      subtitle: null,\n      text: null,\n      closeButton: false,\n      closeTimeout: null,\n      closeOnClick: false,\n      swipeToClose: true,\n      cssClass: null,\n      render: null,\n    },\n  },\n};\n\n/* eslint \"no-useless-escape\": \"off\" */\nvar Autocomplete$1 = (function (Framework7Class$$1) {\n  function Autocomplete(app, params) {\n    if ( params === void 0 ) params = {};\n\n    Framework7Class$$1.call(this, params, [app]);\n\n    var ac = this;\n    ac.app = app;\n\n    var defaults = Utils.extend({\n      on: {},\n    }, app.params.autocomplete);\n\n\n    // Extend defaults with modules params\n    ac.useModulesParams(defaults);\n\n    ac.params = Utils.extend(defaults, params);\n\n    var $openerEl;\n    if (ac.params.openerEl) {\n      $openerEl = $$1$1(ac.params.openerEl);\n      if ($openerEl.length) { $openerEl[0].f7Autocomplete = ac; }\n    }\n\n    var $inputEl;\n    if (ac.params.inputEl) {\n      $inputEl = $$1$1(ac.params.inputEl);\n      if ($inputEl.length) { $inputEl[0].f7Autocomplete = ac; }\n    }\n\n    var view;\n    if (ac.params.view) {\n      view = ac.params.view;\n    } else if ($openerEl || $inputEl) {\n      view = app.views.get($openerEl || $inputEl);\n    }\n    if (!view) { view = app.views.main; }\n\n    var id = Utils.now();\n\n    var url = params.url;\n    if (!url && $openerEl && $openerEl.length) {\n      if ($openerEl.attr('href')) { url = $openerEl.attr('href'); }\n      else if ($openerEl.find('a').length > 0) {\n        url = $openerEl.find('a').attr('href');\n      }\n    }\n    if (!url || url === '#' || url === '') { url = ac.params.url; }\n\n    var inputType = ac.params.multiple ? 'checkbox' : 'radio';\n\n    Utils.extend(ac, {\n      $openerEl: $openerEl,\n      openerEl: $openerEl && $openerEl[0],\n      $inputEl: $inputEl,\n      inputEl: $inputEl && $inputEl[0],\n      id: id,\n      view: view,\n      url: url,\n      value: ac.params.value || [],\n      inputType: inputType,\n      inputName: (inputType + \"-\" + id),\n      $modalEl: undefined,\n      $dropdownEl: undefined,\n    });\n\n    var previousQuery = '';\n    function onInputChange() {\n      var query = ac.$inputEl.val().trim();\n\n      if (!ac.params.source) { return; }\n      ac.params.source.call(ac, query, function (items) {\n        var itemsHTML = '';\n        var limit = ac.params.limit ? Math.min(ac.params.limit, items.length) : items.length;\n        ac.items = items;\n        var regExp;\n        if (ac.params.highlightMatches) {\n          query = query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n          regExp = new RegExp((\"(\" + query + \")\"), 'i');\n        }\n\n        var firstValue;\n        var firstItem;\n        for (var i = 0; i < limit; i += 1) {\n          var itemValue = typeof items[i] === 'object' ? items[i][ac.params.valueProperty] : items[i];\n          var itemText = typeof items[i] === 'object' ? items[i][ac.params.textProperty] : items[i];\n          if (i === 0) {\n            firstValue = itemValue;\n            firstItem = ac.items[i];\n          }\n          itemsHTML += ac.renderItem({\n            value: itemValue,\n            text: ac.params.highlightMatches ? itemText.replace(regExp, '<b>$1</b>') : itemText,\n          }, i);\n        }\n        if (itemsHTML === '' && query === '' && ac.params.dropdownPlaceholderText) {\n          itemsHTML += ac.renderItem({\n            placeholder: true,\n            text: ac.params.dropdownPlaceholderText,\n          });\n        }\n        ac.$dropdownEl.find('ul').html(itemsHTML);\n        if (ac.params.typeahead) {\n          if (!firstValue || !firstItem) {\n            return;\n          }\n          if (firstValue.toLowerCase().indexOf(query.toLowerCase()) !== 0) {\n            return;\n          }\n          if (previousQuery.toLowerCase() === query.toLowerCase()) {\n            ac.value = [];\n            return;\n          }\n\n          if (previousQuery.toLowerCase().indexOf(query.toLowerCase()) === 0) {\n            previousQuery = query;\n            ac.value = [];\n            return;\n          }\n          $inputEl.val(firstValue);\n          $inputEl[0].setSelectionRange(query.length, firstValue.length);\n\n          var previousValue = typeof ac.value[0] === 'object' ? ac.value[0][ac.params.valueProperty] : ac.value[0];\n          if (!previousValue || firstValue.toLowerCase() !== previousValue.toLowerCase()) {\n            ac.value = [firstItem];\n            ac.emit('local::change autocompleteChange', [firstItem]);\n          }\n        }\n\n        previousQuery = query;\n      });\n    }\n    function onPageInputChange() {\n      var input = this;\n      var value = input.value;\n      var isValues = $$1$1(input).parents('.autocomplete-values').length > 0;\n      var item;\n      var itemValue;\n      var aValue;\n      if (isValues) {\n        if (ac.inputType === 'checkbox' && !input.checked) {\n          for (var i = 0; i < ac.value.length; i += 1) {\n            aValue = typeof ac.value[i] === 'string' ? ac.value[i] : ac.value[i][ac.params.valueProperty];\n            if (aValue === value || aValue * 1 === value * 1) {\n              ac.value.splice(i, 1);\n            }\n          }\n          ac.updateValues();\n          ac.emit('local::change autocompleteChange', ac.value);\n        }\n        return;\n      }\n\n      // Find Related Item\n      for (var i$1 = 0; i$1 < ac.items.length; i$1 += 1) {\n        itemValue = typeof ac.items[i$1] === 'object' ? ac.items[i$1][ac.params.valueProperty] : ac.items[i$1];\n        if (itemValue === value || itemValue * 1 === value * 1) { item = ac.items[i$1]; }\n      }\n      if (ac.inputType === 'radio') {\n        ac.value = [item];\n      } else if (input.checked) {\n        ac.value.push(item);\n      } else {\n        for (var i$2 = 0; i$2 < ac.value.length; i$2 += 1) {\n          aValue = typeof ac.value[i$2] === 'object' ? ac.value[i$2][ac.params.valueProperty] : ac.value[i$2];\n          if (aValue === value || aValue * 1 === value * 1) {\n            ac.value.splice(i$2, 1);\n          }\n        }\n      }\n\n      // Update Values Block\n      ac.updateValues();\n\n      // On Select Callback\n      if (((ac.inputType === 'radio' && input.checked) || ac.inputType === 'checkbox')) {\n        ac.emit('local::change autocompleteChange', ac.value);\n      }\n    }\n    function onHtmlClick(e) {\n      var $targetEl = $$1$1(e.target);\n      if ($targetEl.is(ac.$inputEl[0]) || ($targetEl.closest(ac.$dropdownEl[0]).length)) { return; }\n      ac.close();\n    }\n    function onOpenerClick() {\n      ac.open();\n    }\n    function onInputFocus() {\n      ac.open();\n    }\n    function onInputBlur() {\n      if (ac.$dropdownEl.find('label.active-state').length > 0) { return; }\n      ac.close();\n    }\n    function onResize() {\n      ac.positionDropDown();\n    }\n\n    function onKeyDown(e) {\n      if (ac.opened && e.keyCode === 13) {\n        e.preventDefault();\n        ac.$inputEl.blur();\n      }\n    }\n    function onDropdownclick() {\n      var $clickedEl = $$1$1(this);\n      var clickedItem;\n      for (var i = 0; i < ac.items.length; i += 1) {\n        var itemValue = typeof ac.items[i] === 'object' ? ac.items[i][ac.params.valueProperty] : ac.items[i];\n        var value = $clickedEl.attr('data-value');\n        if (itemValue === value || itemValue * 1 === value * 1) {\n          clickedItem = ac.items[i];\n        }\n      }\n      if (ac.params.updateInputValueOnSelect) {\n        ac.$inputEl.val(typeof clickedItem === 'object' ? clickedItem[ac.params.valueProperty] : clickedItem);\n        ac.$inputEl.trigger('input change');\n      }\n      ac.value = [clickedItem];\n      ac.emit('local::change autocompleteChange', [clickedItem]);\n\n      ac.close();\n    }\n\n    ac.attachEvents = function attachEvents() {\n      if (ac.params.openIn !== 'dropdown' && ac.$openerEl) {\n        ac.$openerEl.on('click', onOpenerClick);\n      }\n      if (ac.params.openIn === 'dropdown' && ac.$inputEl) {\n        ac.$inputEl.on('focus', onInputFocus);\n        ac.$inputEl.on('input', onInputChange);\n        if (app.device.android) {\n          $$1$1('html').on('click', onHtmlClick);\n        } else {\n          ac.$inputEl.on('blur', onInputBlur);\n        }\n        if (ac.params.typeahead) {\n          ac.$inputEl.on('keydown', onKeyDown);\n        }\n      }\n    };\n    ac.detachEvents = function attachEvents() {\n      if (ac.params.openIn !== 'dropdown' && ac.$openerEl) {\n        ac.$openerEl.off('click', onOpenerClick);\n      }\n      if (ac.params.openIn === 'dropdown' && ac.$inputEl) {\n        ac.$inputEl.off('focus', onInputFocus);\n        ac.$inputEl.off('input', onInputChange);\n        if (app.device.android) {\n          $$1$1('html').off('click', onHtmlClick);\n        } else {\n          ac.$inputEl.off('blur', onInputBlur);\n        }\n        if (ac.params.typeahead) {\n          ac.$inputEl.off('keydown', onKeyDown);\n        }\n      }\n    };\n    ac.attachDropdownEvents = function attachDropdownEvents() {\n      ac.$dropdownEl.on('click', 'label', onDropdownclick);\n      app.on('resize', onResize);\n    };\n    ac.detachDropdownEvents = function detachDropdownEvents() {\n      ac.$dropdownEl.off('click', 'label', onDropdownclick);\n      app.off('resize', onResize);\n    };\n\n    ac.attachPageEvents = function attachPageEvents() {\n      ac.$el.on('change', 'input[type=\"radio\"], input[type=\"checkbox\"]', onPageInputChange);\n      if (ac.params.closeOnSelect && !ac.params.multiple) {\n        ac.$el.once('click', '.list label', function () {\n          Utils.nextTick(function () {\n            ac.close();\n          });\n        });\n      }\n    };\n    ac.detachPageEvents = function detachPageEvents() {\n      ac.$el.off('change', 'input[type=\"radio\"], input[type=\"checkbox\"]', onPageInputChange);\n    };\n\n    // Install Modules\n    ac.useModules();\n\n    // Init\n    ac.init();\n\n    return ac;\n  }\n\n  if ( Framework7Class$$1 ) Autocomplete.__proto__ = Framework7Class$$1;\n  Autocomplete.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n  Autocomplete.prototype.constructor = Autocomplete;\n  Autocomplete.prototype.positionDropDown = function positionDropDown () {\n    var obj;\n\n    var ac = this;\n    var $inputEl = ac.$inputEl;\n    var app = ac.app;\n    var $dropdownEl = ac.$dropdownEl;\n\n    var $pageContentEl = $inputEl.parents('.page-content');\n    if ($pageContentEl.length === 0) { return; }\n    var inputOffset = $inputEl.offset();\n    var inputOffsetWidth = $inputEl[0].offsetWidth;\n    var inputOffsetHeight = $inputEl[0].offsetHeight;\n    var $listEl = $inputEl.parents('.list');\n    var listOffset = $listEl.offset();\n    var paddingBottom = parseInt($pageContentEl.css('padding-top'), 10);\n    var listOffsetLeft = $listEl.length > 0 ? listOffset.left - $listEl.parent().offset().left : 0;\n    var inputOffsetLeft = inputOffset.left - ($listEl.length > 0 ? listOffset.left : 0) - (app.rtl ? 0 : 0);\n    var inputOffsetTop = inputOffset.top - ($pageContentEl.offset().top - $pageContentEl[0].scrollTop);\n    var maxHeight = $pageContentEl[0].scrollHeight - paddingBottom - (inputOffsetTop + $pageContentEl[0].scrollTop) - $inputEl[0].offsetHeight;\n\n    var paddingProp = app.rtl ? 'padding-right' : 'padding-left';\n    var paddingValue;\n    if ($listEl.length && !ac.params.expandInput) {\n      paddingValue = (app.rtl ? $listEl[0].offsetWidth - inputOffsetLeft - inputOffsetWidth : inputOffsetLeft) - (app.theme === 'md' ? 16 : 15);\n    }\n\n\n    $dropdownEl.css({\n      left: (($listEl.length > 0 ? listOffsetLeft : inputOffsetLeft) + \"px\"),\n      top: ((inputOffsetTop + $pageContentEl[0].scrollTop + inputOffsetHeight) + \"px\"),\n      width: (($listEl.length > 0 ? $listEl[0].offsetWidth : inputOffsetWidth) + \"px\"),\n    });\n    $dropdownEl.children('.autocomplete-dropdown-inner').css(( obj = {\n      maxHeight: (maxHeight + \"px\")\n    }, obj[paddingProp] = $listEl.length > 0 && !ac.params.expandInput ? (paddingValue + \"px\") : '', obj ));\n  };\n  Autocomplete.prototype.focus = function focus () {\n    var ac = this;\n    ac.$el.find('input[type=search]').focus();\n  };\n  Autocomplete.prototype.source = function source (query) {\n    var ac = this;\n    if (!ac.params.source) { return; }\n\n    var $el = ac.$el;\n\n    ac.params.source.call(ac, query, function (items) {\n      var itemsHTML = '';\n      var limit = ac.params.limit ? Math.min(ac.params.limit, items.length) : items.length;\n      ac.items = items;\n      for (var i = 0; i < limit; i += 1) {\n        var selected = false;\n        var itemValue = typeof items[i] === 'object' ? items[i][ac.params.valueProperty] : items[i];\n        for (var j = 0; j < ac.value.length; j += 1) {\n          var aValue = typeof ac.value[j] === 'object' ? ac.value[j][ac.params.valueProperty] : ac.value[j];\n          if (aValue === itemValue || aValue * 1 === itemValue * 1) { selected = true; }\n        }\n        itemsHTML += ac.renderItem({\n          value: itemValue,\n          text: typeof items[i] === 'object' ? items[i][ac.params.textProperty] : items[i],\n          inputType: ac.inputType,\n          id: ac.id,\n          inputName: ac.inputName,\n          selected: selected,\n        }, i);\n      }\n      $el.find('.autocomplete-found ul').html(itemsHTML);\n      if (items.length === 0) {\n        if (query.length !== 0) {\n          $el.find('.autocomplete-not-found').show();\n          $el.find('.autocomplete-found, .autocomplete-values').hide();\n        } else {\n          $el.find('.autocomplete-values').show();\n          $el.find('.autocomplete-found, .autocomplete-not-found').hide();\n        }\n      } else {\n        $el.find('.autocomplete-found').show();\n        $el.find('.autocomplete-not-found, .autocomplete-values').hide();\n      }\n    });\n  };\n  Autocomplete.prototype.updateValues = function updateValues () {\n    var ac = this;\n    var valuesHTML = '';\n    for (var i = 0; i < ac.value.length; i += 1) {\n      valuesHTML += ac.renderItem({\n        value: typeof ac.value[i] === 'object' ? ac.value[i][ac.params.valueProperty] : ac.value[i],\n        text: typeof ac.value[i] === 'object' ? ac.value[i][ac.params.textProperty] : ac.value[i],\n        inputType: ac.inputType,\n        id: ac.id,\n        inputName: ((ac.inputName) + \"-checked}\"),\n        selected: true,\n      }, i);\n    }\n    ac.$el.find('.autocomplete-values ul').html(valuesHTML);\n  };\n  Autocomplete.prototype.preloaderHide = function preloaderHide () {\n    var ac = this;\n    if (ac.params.openIn === 'dropdown' && ac.$dropdownEl) {\n      ac.$dropdownEl.find('.autocomplete-preloader').removeClass('autocomplete-preloader-visible');\n    } else {\n      $$1$1('.autocomplete-preloader').removeClass('autocomplete-preloader-visible');\n    }\n  };\n  Autocomplete.prototype.preloaderShow = function preloaderShow () {\n    var ac = this;\n    if (ac.params.openIn === 'dropdown' && ac.$dropdownEl) {\n      ac.$dropdownEl.find('.autocomplete-preloader').addClass('autocomplete-preloader-visible');\n    } else {\n      $$1$1('.autocomplete-preloader').addClass('autocomplete-preloader-visible');\n    }\n  };\n  Autocomplete.prototype.renderPreloader = function renderPreloader () {\n    var ac = this;\n    return (\"\\n      <div class=\\\"autocomplete-preloader preloader \" + (ac.params.preloaderColor ? (\"color-\" + (ac.params.preloaderColor)) : '') + \"\\\">\" + (ac.app.theme === 'md' ? Utils.mdPreloaderContent : '') + \"</div>\\n    \").trim();\n  };\n  Autocomplete.prototype.renderSearchbar = function renderSearchbar () {\n    var ac = this;\n    if (ac.params.renderSearchbar) { return ac.params.renderSearchbar.call(ac); }\n    var searchbarHTML = (\"\\n      <form class=\\\"searchbar\\\">\\n        <div class=\\\"searchbar-inner\\\">\\n          <div class=\\\"searchbar-input-wrap\\\">\\n            <input type=\\\"search\\\" placeholder=\\\"\" + (ac.params.searchbarPlaceholder) + \"\\\"/>\\n            <i class=\\\"searchbar-icon\\\"></i>\\n            <span class=\\\"input-clear-button\\\"></span>\\n          </div>\\n          <span class=\\\"searchbar-disable-button\\\">\" + (ac.params.searchbarDisableText) + \"</span>\\n        </div>\\n      </form>\\n    \").trim();\n    return searchbarHTML;\n  };\n  Autocomplete.prototype.renderItem = function renderItem (item, index) {\n    var ac = this;\n    if (ac.params.renderItem) { return ac.params.renderItem.call(ac, item, index); }\n    var itemHtml;\n    if (ac.params.openIn !== 'dropdown') {\n      itemHtml = \"\\n        <li>\\n          <label class=\\\"item-\" + (item.inputType) + \" item-content\\\">\\n            <input type=\\\"\" + (item.inputType) + \"\\\" name=\\\"\" + (item.inputName) + \"\\\" value=\\\"\" + (item.value) + \"\\\" \" + (item.selected ? 'checked' : '') + \">\\n            <i class=\\\"icon icon-\" + (item.inputType) + \"\\\"></i>\\n            <div class=\\\"item-inner\\\">\\n              <div class=\\\"item-title\\\">\" + (item.text) + \"</div>\\n            </div>\\n          </label>\\n        </li>\\n      \";\n    } else if (!item.placeholder) {\n      // Dropdown\n      itemHtml = \"\\n        <li>\\n          <label class=\\\"item-radio item-content\\\" data-value=\\\"\" + (item.value) + \"\\\">\\n            <div class=\\\"item-inner\\\">\\n              <div class=\\\"item-title\\\">\" + (item.text) + \"</div>\\n            </div>\\n          </label>\\n        </li>\\n      \";\n    } else {\n      // Dropwdown placeholder\n      itemHtml = \"\\n        <li class=\\\"autocomplete-dropdown-placeholder\\\">\\n          <div class=\\\"item-content\\\">\\n            <div class=\\\"item-inner\\\">\\n              <div class=\\\"item-title\\\">\" + (item.text) + \"</div>\\n            </div>\\n          </label>\\n        </li>\\n      \";\n    }\n    return itemHtml.trim();\n  };\n\n  Autocomplete.prototype.renderNavbar = function renderNavbar () {\n    var ac = this;\n    if (ac.params.renderNavbar) { return ac.params.renderNavbar.call(ac); }\n    var pageTitle = ac.params.pageTitle;\n    if (typeof pageTitle === 'undefined' && ac.$openerEl && ac.$openerEl.length) {\n      pageTitle = ac.$openerEl.find('.item-title').text().trim();\n    }\n    var navbarHtml = (\"\\n      <div class=\\\"navbar \" + (ac.params.navbarColorTheme ? (\"color-theme-\" + (ac.params.navbarColorTheme)) : '') + \"\\\">\\n        <div class=\\\"navbar-inner \" + (ac.params.navbarColorTheme ? (\"color-theme-\" + (ac.params.navbarColorTheme)) : '') + \"\\\">\\n          <div class=\\\"left sliding\\\">\\n            <a href=\\\"#\\\" class=\\\"link \" + (ac.params.openIn === 'page' ? 'back' : 'popup-close') + \"\\\">\\n              <i class=\\\"icon icon-back\\\"></i>\\n              <span class=\\\"ios-only\\\">\" + (ac.params.openIn === 'page' ? ac.params.pageBackLinkText : ac.params.popupCloseLinkText) + \"</span>\\n            </a>\\n          </div>\\n          \" + (pageTitle ? (\"<div class=\\\"title sliding\\\">\" + pageTitle + \"</div>\") : '') + \"\\n          \" + (ac.params.preloader ? (\"\\n          <div class=\\\"right\\\">\\n            \" + (ac.renderPreloader()) + \"\\n          </div>\\n          \") : '') + \"\\n          <div class=\\\"subnavbar sliding\\\">\" + (ac.renderSearchbar()) + \"</div>\\n        </div>\\n      </div>\\n    \").trim();\n    return navbarHtml;\n  };\n  Autocomplete.prototype.renderDropdown = function renderDropdown () {\n    var ac = this;\n    if (ac.params.renderDropdown) { return ac.params.renderDropdown.call(ac, ac.items); }\n    var dropdownHtml = (\"\\n      <div class=\\\"autocomplete-dropdown\\\">\\n        <div class=\\\"autocomplete-dropdown-inner\\\">\\n          <div class=\\\"list \" + (!ac.params.expandInput ? 'no-ios-edge' : '') + \"\\\">\\n            <ul></ul>\\n          </div>\\n        </div>\\n        \" + (ac.params.preloader ? ac.renderPreloader() : '') + \"\\n      </div>\\n    \").trim();\n    return dropdownHtml;\n  };\n  Autocomplete.prototype.renderPage = function renderPage () {\n    var ac = this;\n    if (ac.params.renderPage) { return ac.params.renderPage.call(ac, ac.items); }\n\n    var pageHtml = (\"\\n      <div class=\\\"page page-with-subnavbar autocomplete-page\\\" data-name=\\\"autocomplete-page\\\">\\n        \" + (ac.renderNavbar()) + \"\\n        <div class=\\\"searchbar-backdrop\\\"></div>\\n        <div class=\\\"page-content\\\">\\n          <div class=\\\"list autocomplete-list autocomplete-found autocomplete-list-\" + (ac.id) + \" \" + (ac.params.formColorTheme ? (\"color-theme-\" + (ac.params.formColorTheme)) : '') + \"\\\">\\n            <ul></ul>\\n          </div>\\n          <div class=\\\"list autocomplete-not-found\\\">\\n            <ul>\\n              <li class=\\\"item-content\\\"><div class=\\\"item-inner\\\"><div class=\\\"item-title\\\">\" + (ac.params.notFoundText) + \"</div></div></li>\\n            </ul>\\n          </div>\\n          <div class=\\\"list autocomplete-values\\\">\\n            <ul></ul>\\n          </div>\\n        </div>\\n      </div>\\n    \").trim();\n    return pageHtml;\n  };\n  Autocomplete.prototype.renderPopup = function renderPopup () {\n    var ac = this;\n    if (ac.params.renderPopup) { return ac.params.renderPopup.call(ac, ac.items); }\n    var popupHtml = (\"\\n      <div class=\\\"popup autocomplete-popup\\\">\\n        <div class=\\\"view\\\">\\n          \" + (ac.renderPage()) + \";\\n        </div>\\n      </div>\\n    \").trim();\n    return popupHtml;\n  };\n  Autocomplete.prototype.onOpen = function onOpen (type, el) {\n    var ac = this;\n    var app = ac.app;\n    var $el = $$1$1(el);\n    ac.$el = $el;\n    ac.el = $el[0];\n    ac.openedIn = type;\n    ac.opened = true;\n\n    if (ac.params.openIn === 'dropdown') {\n      ac.attachDropdownEvents();\n\n      ac.$dropdownEl.addClass('autocomplete-dropdown-in');\n      ac.$inputEl.trigger('input');\n    } else {\n      // Init SB\n      var $searchbarEl = $el.find('.searchbar');\n      if (ac.params.openIn === 'page' && app.theme === 'ios' && $searchbarEl.length === 0) {\n        $searchbarEl = $$1$1(app.navbar.getElByPage($el)).find('.searchbar');\n      }\n      ac.searchbar = app.searchbar.create({\n        el: $searchbarEl,\n        backdropEl: $el.find('.searchbar-backdrop'),\n        customSearch: true,\n        on: {\n          searchbarSearch: function searchbarSearch(query) {\n            if (query.length === 0 && ac.searchbar.enabled) {\n              ac.searchbar.backdropShow();\n            } else {\n              ac.searchbar.backdropHide();\n            }\n            ac.source(query);\n          },\n        },\n      });\n\n      // Attach page events\n      ac.attachPageEvents();\n\n      // Update Values On Page Init\n      ac.updateValues();\n\n      // Source on load\n      if (ac.params.requestSourceOnOpen) { ac.source(''); }\n    }\n\n    ac.emit('local::open autocompleteOpen', ac);\n  };\n  Autocomplete.prototype.onOpened = function onOpened () {\n    var ac = this;\n    if (ac.params.openIn !== 'dropdown' && ac.params.autoFocus) {\n      ac.autoFocus();\n    }\n    ac.emit('local::opened autocompleteOpened', ac);\n  };\n  Autocomplete.prototype.onClose = function onClose () {\n    var ac = this;\n    if (ac.destroyed) { return; }\n\n    // Destroy SB\n    if (ac.searchbar && ac.searchbar.destroy) {\n      ac.searchbar.destroy();\n      ac.searchbar = null;\n      delete ac.searchbar;\n    }\n\n    if (ac.params.openIn === 'dropdown') {\n      ac.detachDropdownEvents();\n      ac.$dropdownEl.removeClass('autocomplete-dropdown-in').remove();\n      ac.$inputEl.parents('.item-content-dropdown-expanded').removeClass('item-content-dropdown-expanded');\n    } else {\n      ac.detachPageEvents();\n    }\n\n    ac.emit('local::close autocompleteClose', ac);\n  };\n  Autocomplete.prototype.onClosed = function onClosed () {\n    var ac = this;\n    if (ac.destroyed) { return; }\n    ac.opened = false;\n    ac.$el = null;\n    ac.el = null;\n    delete ac.$el;\n    delete ac.el;\n\n    ac.emit('local::closed autocompleteClosed', ac);\n  };\n  Autocomplete.prototype.openPage = function openPage () {\n    var ac = this;\n    if (ac.opened) { return ac; }\n    var pageHtml = ac.renderPage();\n    ac.view.router.navigate({\n      url: ac.url,\n      route: {\n        content: pageHtml,\n        path: ac.url,\n        on: {\n          pageBeforeIn: function pageBeforeIn(e, page) {\n            ac.onOpen('page', page.el);\n          },\n          pageAfterIn: function pageAfterIn(e, page) {\n            ac.onOpened('page', page.el);\n          },\n          pageBeforeOut: function pageBeforeOut(e, page) {\n            ac.onClose('page', page.el);\n          },\n          pageAfterOut: function pageAfterOut(e, page) {\n            ac.onClosed('page', page.el);\n          },\n        },\n        options: {\n          animate: ac.params.animate,\n        },\n      },\n    });\n    return ac;\n  };\n  Autocomplete.prototype.openPopup = function openPopup () {\n    var ac = this;\n    if (ac.opened) { return ac; }\n    var popupHtml = ac.renderPopup();\n\n    var popupParams = {\n      content: popupHtml,\n      animate: ac.params.animate,\n      on: {\n        popupOpen: function popupOpen(popup) {\n          ac.onOpen('popup', popup.el);\n        },\n        popupOpened: function popupOpened(popup) {\n          ac.onOpened('popup', popup.el);\n        },\n        popupClose: function popupClose(popup) {\n          ac.onClose('popup', popup.el);\n        },\n        popupClosed: function popupClosed(popup) {\n          ac.onClosed('popup', popup.el);\n        },\n      },\n    };\n\n    if (ac.params.routableModals) {\n      ac.view.router.navigate({\n        url: ac.url,\n        route: {\n          path: ac.url,\n          popup: popupParams,\n        },\n      });\n    } else {\n      ac.modal = ac.app.popup.create(popupParams).open(ac.params.animate);\n    }\n    return ac;\n  };\n  Autocomplete.prototype.openDropdown = function openDropdown () {\n    var ac = this;\n\n    if (!ac.$dropdownEl) {\n      ac.$dropdownEl = $$1$1(ac.renderDropdown());\n    }\n    var $listEl = ac.$inputEl.parents('.list');\n    if ($listEl.length && ac.$inputEl.parents('.item-content').length > 0 && ac.params.expandInput) {\n      ac.$inputEl.parents('.item-content').addClass('item-content-dropdown-expanded');\n    }\n    ac.positionDropDown();\n    var $pageContentEl = ac.$inputEl.parents('.page-content');\n    if (ac.params.dropdownel) {\n      $$1$1(ac.params.dropdownel).append(ac.$dropdownEl);\n    } else if ($pageContentEl.length === 0) {\n      ac.$dropdownEl.insertAfter(ac.$inputEl);\n    } else {\n      $pageContentEl.append(ac.$dropdownEl);\n    }\n    ac.onOpen('dropdown', ac.$dropdownEl);\n    ac.onOpened('dropdown', ac.$dropdownEl);\n  };\n  Autocomplete.prototype.open = function open () {\n    var ac = this;\n    if (ac.opened) { return ac; }\n    var openIn = ac.params.openIn;\n    ac[(\"open\" + (openIn.split('').map(function (el, index) {\n      if (index === 0) { return el.toUpperCase(); }\n      return el;\n    }).join('')))]();\n    return ac;\n  };\n  Autocomplete.prototype.close = function close () {\n    var ac = this;\n    if (!ac.opened) { return ac; }\n    if (ac.params.openIn === 'dropdown') {\n      ac.onClose();\n      ac.onClosed();\n    } else if (ac.params.routableModals || ac.openedIn === 'page') {\n      ac.view.router.back({ animate: ac.params.animate });\n    } else {\n      ac.modal.once('modalClosed', function () {\n        Utils.nextTick(function () {\n          ac.modal.destroy();\n          delete ac.modal;\n        });\n      });\n      ac.modal.close();\n    }\n    return ac;\n  };\n  Autocomplete.prototype.init = function init () {\n    var ac = this;\n    ac.attachEvents();\n  };\n  Autocomplete.prototype.destroy = function destroy () {\n    var ac = this;\n    ac.emit('local::beforeDestroy autocompleteBeforeDestroy', ac);\n    ac.detachEvents();\n    if (ac.$inputEl && ac.$inputEl[0]) {\n      delete ac.$inputEl[0].f7Autocomplete;\n    }\n    if (ac.$openerEl && ac.$openerEl[0]) {\n      delete ac.$openerEl[0].f7Autocomplete;\n    }\n    Utils.deleteProps(ac);\n    ac.destroyed = true;\n  };\n\n  return Autocomplete;\n}(Framework7Class));\n\nvar Autocomplete = {\n  name: 'autocomplete',\n  params: {\n    autocomplete: {\n      openerEl: undefined,\n      inputEl: undefined,\n      view: undefined,\n\n      // DropDown\n      dropdownContainerEl: undefined,\n      dropdownPlaceholderText: undefined,\n      typeahead: false,\n      highlightMatches: true,\n      expandInput: false,\n      updateInputValueOnSelect: true,\n\n      value: undefined,\n      multiple: false,\n\n      source: undefined,\n      limit: undefined,\n      valueProperty: 'id',\n      textProperty: 'text',\n\n      openIn: 'page', // or 'popup' or 'dropdown'\n      pageBackLinkText: 'Back',\n      popupCloseLinkText: 'Close',\n      pageTitle: undefined,\n      searchbarPlaceholder: 'Search...',\n      searchbarDisableText: 'Cancel',\n\n      animate: true,\n\n      autoFocus: false,\n      closeOnSelect: false,\n      notFoundText: 'Nothing found',\n      requestSourceOnOpen: false,\n\n      // Preloader\n      preloaderColor: undefined,\n      preloader: false,\n\n      // Colors\n      formColorTheme: undefined,\n      navbarColorTheme: undefined,\n\n      // Routing\n      routableModals: true,\n      url: 'select/',\n\n      // Custom render functions\n      renderDropdown: undefined,\n      renderPage: undefined,\n      renderPopup: undefined,\n      renderItem: undefined,\n      renderSearchbar: undefined,\n      renderNavbar: undefined,\n\n    },\n  },\n  static: {\n    Autocomplete: Autocomplete$1,\n  },\n  create: function create() {\n    var app = this;\n    app.autocomplete = Utils.extend(\n      ConstructorMethods({\n        defaultSelector: undefined,\n        constructor: Autocomplete$1,\n        app: app,\n        domProp: 'f7Autocomplete',\n      }),\n      {\n        open: function open(autocompleteEl) {\n          var ac = app.autocomplete.get(autocompleteEl);\n          if (ac && ac.open) { return ac.open(); }\n          return undefined;\n        },\n        close: function close(autocompleteEl) {\n          var ac = app.autocomplete.get(autocompleteEl);\n          if (ac && ac.close) { return ac.close(); }\n          return undefined;\n        },\n      }\n    );\n  },\n};\n\nvar ViAd = (function (Framework7Class$$1) {\n  function ViAd(app, params) {\n    if ( params === void 0 ) params = {};\n\n    Framework7Class$$1.call(this, params, [app]);\n    var vi = this;\n    if (!window.vi) {\n      throw new Error('f7:vi SDK not found.');\n    }\n\n    var orientation;\n    if (typeof window.orientation !== 'undefined') {\n      orientation = window.orientation === -90 || window.orientation === 90 ? 'horizontal' : 'vertical';\n    }\n    var defaults = Utils.extend(\n      {},\n      app.params.vi,\n      {\n        appId: app.id,\n        appVer: app.version,\n        language: app.language,\n        width: app.width,\n        height: app.height,\n        os: Device.os,\n        osVersion: Device.osVersion,\n        orientation: orientation,\n      }\n    );\n\n    // Extend defaults with modules params\n    vi.useModulesParams(defaults);\n\n    vi.params = Utils.extend(defaults, params);\n\n    var adParams = {};\n    var skipParams = ('on autoplay fallbackOverlay fallbackOverlayText enabled').split(' ');\n    Object.keys(vi.params).forEach(function (paramName) {\n      if (skipParams.indexOf(paramName) >= 0) { return; }\n      var paramValue = vi.params[paramName];\n      if ([null, undefined].indexOf(paramValue) >= 0) { return; }\n      adParams[paramName] = paramValue;\n    });\n\n    if (!vi.params.appId) {\n      throw new Error('Framework7:\"app.id\" is required to display an ad. Make sure you have specified it on app initialization.');\n    }\n    if (!vi.params.placementId) {\n      throw new Error('Framework7:\"placementId\" is required to display an ad.');\n    }\n\n    function onResize() {\n      var $viFrame = $$1$1('iframe#viAd');\n      if ($viFrame.length === 0) { return; }\n      $viFrame\n        .css({\n          width: ((app.width) + \"px\"),\n          height: ((app.height) + \"px\"),\n        });\n    }\n\n    function removeOverlay() {\n      if (!vi.$overlayEl) { return; }\n      vi.$overlayEl.off('click touchstart');\n      vi.$overlayEl.remove();\n    }\n    function createOverlay(videoEl) {\n      if (!videoEl) { return; }\n      vi.$overlayEl = $$1$1((\"\\n        <div class=\\\"vi-overlay no-fastclick\\\">\\n          \" + (vi.params.fallbackOverlayText ? (\"<div class=\\\"vi-overlay-text\\\">\" + (vi.params.fallbackOverlayText) + \"</div>\") : '') + \"\\n          <div class=\\\"vi-overlay-play-button\\\"></div>\\n        </div>\\n      \").trim());\n\n      var touchStartTime;\n      vi.$overlayEl.on('touchstart', function () {\n        touchStartTime = Utils.now();\n      });\n      vi.$overlayEl.on('click', function () {\n        var timeDiff = Utils.now() - touchStartTime;\n        if (timeDiff > 300) { return; }\n        if (videoEl) {\n          videoEl.play();\n          removeOverlay();\n          return;\n        }\n        vi.start();\n        removeOverlay();\n      });\n      app.root.append(vi.$overlayEl);\n    }\n\n    // Create ad\n    vi.ad = new window.vi.Ad(adParams);\n\n    Utils.extend(vi.ad, {\n      onAdReady: function onAdReady() {\n        app.on('resize', onResize);\n        vi.emit('local::ready');\n        if (vi.params.autoplay) {\n          vi.start();\n        }\n      },\n      onAdStarted: function onAdStarted() {\n        vi.emit('local::started');\n      },\n      onAdClick: function onAdClick(targetUrl) {\n        vi.emit('local::click', targetUrl);\n      },\n      onAdImpression: function onAdImpression() {\n        vi.emit('local::impression');\n      },\n      onAdStopped: function onAdStopped(reason) {\n        app.off('resize', onResize);\n        removeOverlay();\n\n        vi.emit('local::stopped', reason);\n        if (reason === 'complete') {\n          vi.emit('local::complete');\n          vi.emit('local::completed');\n        }\n        if (reason === 'userexit') {\n          vi.emit('local::userexit');\n        }\n        vi.destroyed = true;\n      },\n      onAutoPlayFailed: function onAutoPlayFailed(reason, videoEl) {\n        vi.emit('local::autoplayFailed', reason, videoEl);\n        if (reason && reason.name && reason.name.indexOf('NotAllowedError') !== -1 && vi.params.fallbackOverlay) {\n          createOverlay(videoEl);\n        }\n      },\n      onAdError: function onAdError(msg) {\n        removeOverlay();\n        app.off('resize', onResize);\n        vi.emit('local::error', msg);\n        vi.destroyed = true;\n      },\n    });\n\n    vi.init();\n\n    Utils.extend(vi, {\n      app: app,\n    });\n  }\n\n  if ( Framework7Class$$1 ) ViAd.__proto__ = Framework7Class$$1;\n  ViAd.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n  ViAd.prototype.constructor = ViAd;\n  ViAd.prototype.start = function start () {\n    var vi = this;\n    if (vi.destroyed) { return; }\n    if (vi.ad) { vi.ad.startAd(); }\n  };\n  ViAd.prototype.pause = function pause () {\n    var vi = this;\n    if (vi.destroyed) { return; }\n    if (vi.ad) { vi.ad.pauseAd(); }\n  };\n  ViAd.prototype.resume = function resume () {\n    var vi = this;\n    if (vi.destroyed) { return; }\n    if (vi.ad) { vi.ad.resumeAd(); }\n  };\n  ViAd.prototype.stop = function stop () {\n    var vi = this;\n    if (vi.destroyed) { return; }\n    if (vi.ad) { vi.ad.stopAd(); }\n  };\n  ViAd.prototype.init = function init () {\n    var vi = this;\n    if (vi.destroyed) { return; }\n    if (vi.ad) { vi.ad.initAd(); }\n  };\n  ViAd.prototype.destroy = function destroy () {\n    var vi = this;\n    vi.destroyed = true;\n    vi.emit('local::beforeDestroy');\n    Utils.deleteProps(vi);\n  };\n\n  return ViAd;\n}(Framework7Class));\n\nvar Vi = {\n  name: 'vi',\n  params: {\n    vi: {\n      enabled: false,\n      autoplay: true,\n      fallbackOverlay: true,\n      fallbackOverlayText: 'Please watch this ad',\n      showMute: true,\n      startMuted: (Device.ios || Device.android) && !Device.cordova,\n      appId: null,\n      appVer: null,\n      language: null,\n      width: null,\n      height: null,\n      placementId: 'pltd4o7ibb9rc653x14',\n      placementType: 'interstitial',\n      videoSlot: null,\n      showProgress: true,\n      showBranding: true,\n      os: null,\n      osVersion: null,\n      orientation: null,\n      age: null,\n      gender: null,\n      advertiserId: null,\n      latitude: null,\n      longitude: null,\n      accuracy: null,\n      storeId: null,\n      ip: null,\n      manufacturer: null,\n      model: null,\n      connectionType: null,\n      connectionProvider: null,\n    },\n  },\n  create: function create() {\n    var app = this;\n    app.vi = {\n      sdkReady: false,\n      createAd: function createAd(adParams) {\n        return new ViAd(app, adParams);\n      },\n      loadSdk: function loadSdk() {\n        if (app.vi.skdReady) { return; }\n        var script = document.createElement('script');\n        script.onload = function onload() {\n          app.emit('viSdkReady');\n          app.vi.skdReady = true;\n        };\n        script.src = 'http://c.vi-serve.com/viadshtml/vi.min.js';\n        $$1$1('head').append(script);\n      },\n    };\n  },\n  on: {\n    init: function init() {\n      var app = this;\n      if (app.params.vi.enabled || (app.passedParams.vi && app.passedParams.vi.enabled !== false)) { app.vi.loadSdk(); }\n    },\n  },\n};\n\nvar Typography = {\n  name: 'typography',\n};\n\n// F7 Class\n// Core Modules\n// Core Components\n{\n  // Template7\n  if (!window.Template7) { window.Template7 = Template7; }\n\n  // Dom7\n  if (!window.Dom7) { window.Dom7 = $$1$1; }\n}\n\n// Install Core Modules & Components\nFramework7$1.use([\n  Device$2,\n  Support,\n  Utils$2,\n  Resize,\n  Request,\n  Touch,\n  Clicks,\n  Router,\n  History$2,\n  Storage$1,\n  Statusbar$1,\n  View$2,\n  Navbar$1,\n  Toolbar$1,\n  Subnavbar,\n  TouchRipple,\n  Modal,\n  Dialog,\n  Popup,\n  LoginScreen,\n  Popover,\n  Actions,\n  Sheet,\n  Toast,\n  Preloader$1,\n  Progressbar$1,\n  Sortable$1,\n  Swipeout$1,\n  Accordion$1,\n  VirtualList,\n  Timeline,\n  Tabs,\n  Panel,\n  Card,\n  Chip,\n  Form,\n  Input$1,\n  Checkbox,\n  Radio,\n  Toggle,\n  Range,\n  SmartSelect,\n  Grid,\n  Calendar,\n  Picker,\n  InfiniteScroll$1,\n  PullToRefresh,\n  Lazy$1,\n  DataTable,\n  Fab$1,\n  Searchbar,\n  Messages,\n  Messagebar,\n  Swiper,\n  PhotoBrowser,\n  Notification,\n  Autocomplete,\n  Vi,\n  Typography\n]);\n\nreturn Framework7$1;\n\n})));\n"]}