{"version":3,"file":"/js/app.js","mappings":"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","sources":["webpack://stimmt-theme/webpack/runtime/chunk loaded","webpack://stimmt-theme/./src/js/components/collapse.js","webpack://stimmt-theme/./src/js/components/scroll.js","webpack://stimmt-theme/./src/js/components/work-process.js","webpack://stimmt-theme/./src/js/components/sources.js","webpack://stimmt-theme/./src/js/components/video.js","webpack://stimmt-theme/./src/js/components/navigation.js","webpack://stimmt-theme/./src/js/components/table-of-contents.js","webpack://stimmt-theme/./src/js/components/mixitup-multifilter.min.js","webpack://stimmt-theme/./node_modules/mixitup/dist/mixitup.js","webpack://stimmt-theme/./node_modules/jquery/dist/jquery.js","webpack://stimmt-theme/./src/js/components/mixitup-pagination.min.js","webpack://stimmt-theme/./src/js/components/preview-tool.js","webpack://stimmt-theme/./src/js/components/mixitup.js","webpack://stimmt-theme/./node_modules/ssr-window/ssr-window.esm.js","webpack://stimmt-theme/./node_modules/dom7/dom7.esm.js","webpack://stimmt-theme/./node_modules/swiper/esm/utils/dom.js","webpack://stimmt-theme/./node_modules/swiper/esm/utils/utils.js","webpack://stimmt-theme/./node_modules/swiper/esm/utils/get-support.js","webpack://stimmt-theme/./node_modules/swiper/esm/utils/get-device.js","webpack://stimmt-theme/./node_modules/swiper/esm/utils/get-browser.js","webpack://stimmt-theme/./node_modules/swiper/esm/modules/resize/resize.js","webpack://stimmt-theme/./node_modules/swiper/esm/modules/observer/observer.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/events-emitter.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/update/index.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/update/updateSize.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/update/updateSlides.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/update/updateAutoHeight.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/update/updateSlidesOffset.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/update/updateSlidesProgress.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/update/updateProgress.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/update/updateSlidesClasses.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/update/updateActiveIndex.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/update/updateClickedSlide.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/translate/index.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/translate/getTranslate.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/translate/setTranslate.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/translate/minTranslate.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/translate/maxTranslate.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/translate/translateTo.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/slide/index.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/slide/slideTo.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/slide/slideToLoop.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/slide/slideNext.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/slide/slidePrev.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/slide/slideReset.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/slide/slideToClosest.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/slide/slideToClickedSlide.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/loop/index.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/loop/loopCreate.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/loop/loopFix.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/loop/loopDestroy.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/manipulation/index.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/manipulation/appendSlide.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/manipulation/prependSlide.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/manipulation/addSlide.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/manipulation/removeSlide.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/manipulation/removeAllSlides.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/events/onTouchStart.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/events/onTouchMove.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/events/onTouchEnd.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/events/onResize.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/events/onClick.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/events/onScroll.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/events/index.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/breakpoints/index.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/breakpoints/setBreakpoint.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/breakpoints/getBreakpoint.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/classes/index.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/classes/addClasses.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/classes/removeClasses.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/check-overflow/index.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/defaults.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/core-class.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/modular.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/transition/index.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/transition/setTransition.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/transition/transitionStart.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/transition/transitionEnd.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/grab-cursor/index.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/grab-cursor/setGrabCursor.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/grab-cursor/unsetGrabCursor.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/images/index.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/images/loadImage.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/core/images/preloadImages.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/navigation/navigation.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/pagination/pagination.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/autoplay/autoplay.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/effect-fade/effect-fade.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/controller/controller.js","webpack://stimmt-theme/./node_modules/swiper/esm/components/thumbs/thumbs.js","webpack://stimmt-theme/./src/js/components/swiper.js","webpack://stimmt-theme/webpack/bootstrap","webpack://stimmt-theme/webpack/runtime/compat get default export","webpack://stimmt-theme/webpack/runtime/define property getters","webpack://stimmt-theme/webpack/runtime/hasOwnProperty shorthand","webpack://stimmt-theme/webpack/runtime/node module decorator","webpack://stimmt-theme/webpack/runtime/jsonp chunk loading","webpack://stimmt-theme/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","$(document).on('click', '.collapse__item .main-title', function () {\n $(this)\n .toggleClass('active')\n .next()\n .stop().slideToggle('fast', \"swing\")\n});\n\nif ($(window).width() < 767) {\n\n $(document).on('click', '.footer__title', function () {\n $(this)\n .toggleClass('active')\n .next()\n .stop().slideToggle('fast', \"swing\")\n });\n}\n","jQuery(document).ready(function ($) {\n function transformText(text) {\n // Remove special characters using regex\n let withoutSpecialChars = text.replace(/[^\\w\\s]/gi, '');\n // Convert to lowercase\n let lowercaseText = withoutSpecialChars.toLowerCase();\n // Replace spaces with hyphens\n let withHyphens = lowercaseText.replace(/\\s+/g, '-');\n return withHyphens;\n }\n\n\n let single = $('.single');\n let page = $('.page-template');\n\n if (single.length > 0 || page.length > 0) {\n let header = $('.header');\n let navHeight = header.outerHeight();\n let pageContent;\n let filteredHeadings;\n\n if (single.length == 0) {\n pageContent = $('.flexible-section');\n filteredHeadings = pageContent.find('h2:not(.block--cta h2)');\n }\n\n if (page.length == 0) {\n pageContent = $('.page-content');\n filteredHeadings = pageContent.find('h2:not(.block--cta h2), h3:not(.block--cta h3, .blocks__item h3)');\n }\n\n let pageNavUl = $('.page-nav ul');\n let isFirstItem = true;\n\n function updateNavHeight() {\n navHeight = header.outerHeight();\n }\n\n // Initial calculation\n updateNavHeight();\n\n // Recalculate on window resize\n $(window).resize(updateNavHeight);\n\n filteredHeadings.each(function(index) {\n let headingText = $(this).text();\n let transformedText = transformText(headingText);\n let headingId = transformedText;\n\n // Assign the ID to the current heading\n $(this).attr('id', headingId);\n\n // Create a new list item with an anchor link\n let listItem = $('
  • ');\n let anchorLink = $('', {\n 'href': '#' + headingId,\n 'text': headingText,\n 'class': 'page-nav__item'\n });\n\n if (isFirstItem) {\n listItem.addClass('active');\n isFirstItem = false;\n }\n\n // Append the anchor link to the list item\n listItem.append(anchorLink);\n\n // Append the list item to the pageNav\n pageNavUl.append(listItem);\n });\n\n\n\n $(document).on('click', 'a[href^=\"#\"]', function (event) {\n event.preventDefault();\n $('html, body').animate({\n scrollTop: $($.attr(this, 'href')).offset().top - navHeight - 100\n }, 10);\n });\n\n let pageNav = $('.page-nav');\n if (pageNav.length > 0) {\n $(window).scroll(function () {\n let st = $(window).scrollTop();\n if (st > 300) {\n pageNav.addClass('page-nav--fixed');\n header.addClass('header--fixed');\n pageNav.css({\n 'transform': 'translate(0, ' + navHeight + 'px)',\n 'opacity': '1',\n 'max-height': '100%'\n });\n } else {\n pageNav.removeClass('page-nav--fixed');\n header.removeClass('header--fixed');\n pageNav.css({\n 'transform': 'translate(0, 0)',\n 'opacity': '0',\n 'max-height': '0'\n });\n }\n });\n\n function centerFunction() {\n jQuery(\".page-nav ul\").scrollCenter(\".active\", 300);\n }\n setInterval(centerFunction, 500);\n\n if (filteredHeadings.length > 0) {\n\n $(window).scroll(function () {\n filteredHeadings.each(function () {\n\n let id = $(this).attr('id');\n let distance = $('#' + id + '').offset().top - 260;\n let $window = $(window);\n\n if ($window.scrollTop() >= distance) {\n $('.page-nav ul li a').removeClass('active-link');\n $('.page-nav ul li a[href^=\"#' + id + '\"]').addClass('active-link');\n\n $('.page-nav ul li').removeClass('active');\n $('.page-nav ul li a[href^=\"#' + id + '\"]').parent().addClass('active');\n } else {\n $('.page-nav ul li a[href^=\"#' + id + '\"]').removeClass('active-link');\n }\n });\n });\n }\n\n jQuery.fn.scrollCenter = function(elem, speed) {\n let active = jQuery(this).find(elem); // find the active element\n\n if (!active || active.length === 0) {\n return this;\n }\n\n let activeWidth = active.width() / 2; // get active width center\n let position = active.position();\n\n if (!position) {\n return this;\n }\n\n let pos = position.left + activeWidth; // get left position of active li + center position\n let elpos = jQuery(this).scrollLeft(); // get current scroll position\n let elW = jQuery(this).width(); // get div width\n pos = pos + elpos - elW / 2; // for center position if you want adjust then change this\n\n jQuery(this).animate({\n scrollLeft: pos\n }, speed == undefined ? 1000 : speed);\n return this;\n };\n }\n }\n});\n","document.addEventListener('DOMContentLoaded', function() {\n const cards = document.querySelectorAll('.work-process__card');\n\n cards.forEach(card => {\n card.addEventListener('click', function() {\n const flyouts = document.querySelectorAll('.work-process__flyout');\n const parentItem = this.closest('.work-process__item');\n const flyout = parentItem.querySelector('.work-process__flyout');\n const isActive = flyout.classList.contains('work-process__flyout--active');\n\n cards.forEach(c => {\n c.classList.remove('active');\n });\n\n flyouts.forEach(f => {\n f.classList.remove('work-process__flyout--active');\n });\n\n if (!isActive && flyout) {\n flyout.classList.add('work-process__flyout--active');\n this.classList.add('active'); \n }\n });\n });\n});","document.addEventListener('DOMContentLoaded', function() {\n document.querySelectorAll('.reference').forEach(ref => {\n ref.addEventListener('click', function() {\n const refNum = this.dataset.ref;\n const source = document.getElementById(`source-${refNum}`);\n if (source) {\n source.scrollIntoView({ behavior: 'smooth' });\n }\n });\n });\n\n document.querySelectorAll('.source').forEach(source => {\n source.addEventListener('click', function() {\n const refNum = this.dataset.ref;\n const ref = document.getElementById(`ref-${refNum}`);\n if (ref) {\n ref.scrollIntoView({ behavior: 'smooth' });\n }\n });\n });\n});\n","jQuery(document).ready(function ($) {\n const sections = $(\".flexible-section--two-cols\");\n\n sections.find(\".two-cols__video\").on(\"click\", function (event) {\n event.stopPropagation();\n\n const currentSection = $(this).closest(\".flexible-section--two-cols\");\n const videoPopup = currentSection.find(\".two-cols__video-popup\");\n\n videoPopup.addClass(\"two-cols__video-popup--active\");\n\n $(document).one(\"click.videoPopup\", function (event) {\n if (!$(event.target).closest(\".two-cols__video-content\").length) {\n videoPopup.removeClass(\"two-cols__video-popup--active\");\n currentSection.find(\"iframe\").each(function () {\n const src= $(this).attr('src');\n $(this).attr('src',src);\n });\n }\n });\n });\n});\n","jQuery(document).ready(function ($) {\n\n $('.mega-nav--custom').detach().appendTo('.services-nav');\n\n if ($(window).width() > 992) {\n $('.services-nav, .mega-nav, .menu-item-has-children').hover(\n function () {\n $('body').addClass('overlay-active');\n },\n function () {\n $('body').removeClass('overlay-active');\n }\n );\n\n /*-- Scroll Up/Down add class --*/\n let header = $('.header');\n let lastScrollTop = 0;\n $(window).scroll(function () {\n var st = $(this).scrollTop();\n lastScrollTop = st;\n if (st >= 200) {\n header.addClass('header--fixed');\n } else {\n header.removeClass('header--fixed');\n }\n });\n }\n\n if ($(window).width() < 993) {\n /* Toggle function for all menu-items with children (Services & default submenu's) */\n $('.mobile .services-nav, .mobile .menu-item-has-children').append('
    ');\n\n $('.mobile').on('click', '.toggle-mega-nav', function() {\n $(this).prev().addClass('show');\n });\n\n $('.mobile').on('click', '.mega-nav .close-nav', function() {\n $('.mega-nav').removeClass('show');\n });\n }\n\n if ($(window).width() < 480) {\n\n // Check if breadcrumb length is too long for mobile screens\n $(\".breadcrumbs .current-item\").each(function () {\n if ($(this).text().length > 50) {\n $(this).text($(this).text().substr(0, 50) + \"...\");\n }\n });\n }\n});\n","jQuery(document).ready(function ($) {\n if ($('body').hasClass('single-post')) {\n function transformText(text) {\n let withoutSpecialChars = text.replace(/[^\\w\\s]/gi, '');\n let lowercaseText = withoutSpecialChars.toLowerCase();\n let withHyphens = lowercaseText.replace(/\\s+/g, '-');\n return withHyphens;\n }\n\n let single = $('.single');\n let page = $('.page-template');\n\n if (single.length > 0 || page.length > 0) {\n let pageContent;\n let filteredHeadings;\n\n if (single.length === 0) {\n pageContent = $('.flexible-section');\n filteredHeadings = pageContent.find('h2:not(.block--cta h2, .block--author h2)');\n }\n\n if (page.length === 0) {\n pageContent = $('.page-content');\n filteredHeadings = pageContent.find('h2:not(.block--cta h2, .block--author h2, .single-post__table-of-contents h2), h3:not(.block--cta h3, .blocks__item h3, .block--author h3)');\n }\n\n let pageNavUl = $('');\n\n filteredHeadings.each(function () {\n let headingText = $(this).text();\n let headingId = transformText(headingText);\n\n $(this).attr('id', headingId);\n\n let listItem = $('
  • ');\n let anchorLink = $('', {\n 'href': '#' + headingId,\n 'text': headingText,\n 'class': 'page-nav__item'\n });\n\n listItem.append(anchorLink);\n pageNavUl.append(listItem);\n });\n\n $('.single-post__table-of-contents').append(pageNavUl);\n }\n }\n});\n","/**!\n * MixItUp MultiFilter v3.3.6\n * A UI-builder for powerful multidimensional filtering\n * Build 293e0dda-087e-4a76-aadf-e3e8b311b81f\n *\n * Requires mixitup.js >= v^3.1.2\n *\n * @copyright Copyright 2014-2020 KunkaLabs Limited.\n * @author KunkaLabs Limited.\n * @link https://www.kunkalabs.com/mixitup-multifilter/\n *\n * @license Commercial use requires a commercial license.\n * https://www.kunkalabs.com/mixitup-multifilter/licenses/\n *\n * Non-commercial use permitted under same terms as license.\n * http://creativecommons.org/licenses/by-nc/3.0/\n */\n!function(u){\"use strict\";var e=function(u){var t,i=u.h;if(t=[[\"A\",/[\\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]/g],[\"AA\",/[\\uA732]/g],[\"AE\",/[\\u00C6\\u01FC\\u01E2]/g],[\"AO\",/[\\uA734]/g],[\"AU\",/[\\uA736]/g],[\"AV\",/[\\uA738\\uA73A]/g],[\"AY\",/[\\uA73C]/g],[\"B\",/[\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181]/g],[\"C\",/[\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E]/g],[\"D\",/[\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779]/g],[\"DZ\",/[\\u01F1\\u01C4]/g],[\"Dz\",/[\\u01F2\\u01C5]/g],[\"E\",/[\\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]/g],[\"F\",/[\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B]/g],[\"G\",/[\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E]/g],[\"H\",/[\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D]/g],[\"I\",/[\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197]/g],[\"J\",/[\\u004A\\u24BF\\uFF2A\\u0134\\u0248]/g],[\"K\",/[\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2]/g],[\"L\",/[\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780]/g],[\"LJ\",/[\\u01C7]/g],[\"Lj\",/[\\u01C8]/g],[\"M\",/[\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C]/g],[\"N\",/[\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4]/g],[\"NJ\",/[\\u01CA]/g],[\"Nj\",/[\\u01CB]/g],[\"O\",/[\\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]/g],[\"OI\",/[\\u01A2]/g],[\"OO\",/[\\uA74E]/g],[\"OU\",/[\\u0222]/g],[\"P\",/[\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754]/g],[\"Q\",/[\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A]/g],[\"R\",/[\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782]/g],[\"S\",/[\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784]/g],[\"T\",/[\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786]/g],[\"TZ\",/[\\uA728]/g],[\"U\",/[\\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]/g],[\"V\",/[\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245]/g],[\"VY\",/[\\uA760]/g],[\"W\",/[\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72]/g],[\"X\",/[\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C]/g],[\"Y\",/[\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE]/g],[\"Z\",/[\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762]/g],[\"a\",/[\\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]/g],[\"aa\",/[\\uA733]/g],[\"ae\",/[\\u00E6\\u01FD\\u01E3]/g],[\"ao\",/[\\uA735]/g],[\"au\",/[\\uA737]/g],[\"av\",/[\\uA739\\uA73B]/g],[\"ay\",/[\\uA73D]/g],[\"b\",/[\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253]/g],[\"c\",/[\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184]/g],[\"d\",/[\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A]/g],[\"dz\",/[\\u01F3\\u01C6]/g],[\"e\",/[\\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]/g],[\"f\",/[\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C]/g],[\"g\",/[\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F]/g],[\"h\",/[\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265]/g],[\"hv\",/[\\u0195]/g],[\"i\",/[\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131]/g],[\"j\",/[\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249]/g],[\"k\",/[\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3]/g],[\"l\",/[\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747]/g],[\"lj\",/[\\u01C9]/g],[\"m\",/[\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F]/g],[\"n\",/[\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5]/g],[\"nj\",/[\\u01CC]/g],[\"o\",/[\\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]/g],[\"oi\",/[\\u01A3]/g],[\"ou\",/[\\u0223]/g],[\"oo\",/[\\uA74F]/g],[\"p\",/[\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755]/g],[\"q\",/[\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759]/g],[\"r\",/[\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783]/g],[\"s\",/[\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B]/g],[\"t\",/[\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787]/g],[\"tz\",/[\\uA729]/g],[\"u\",/[\\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]/g],[\"v\",/[\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C]/g],[\"vy\",/[\\uA761]/g],[\"w\",/[\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73]/g],[\"x\",/[\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D]/g],[\"y\",/[\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF]/g],[\"z\",/[\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763]/g]],!u.CORE_VERSION||!i.compareVersions(e.REQUIRE_CORE_VERSION,u.CORE_VERSION))throw new Error(\"[MixItUp Multifilter] MixItUp Multifilter v\"+e.EXTENSION_VERSION+\" requires at least MixItUp v\"+e.REQUIRE_CORE_VERSION);u.ConfigCallbacks.registerAction(\"afterConstruct\",\"multifilter\",function(){this.onParseFilterGroups=null}),u.ConfigMultifilter=function(){this.enable=!1,this.logicWithinGroup=\"or\",this.logicBetweenGroups=\"and\",this.minSearchLength=3,this.parseOn=\"change\",this.keyupThrottleDuration=350,i.seal(this)},u.Config.registerAction(\"beforeConstruct\",\"multifilter\",function(){this.multifilter=new u.ConfigMultifilter}),u.MultifilterFormEventTracker=function(){this.form=null,this.totalBound=0,this.totalHandled=0,i.seal(this)},u.FilterGroupDom=function(){this.el=null,this.form=null,i.seal(this)},u.FilterGroup=function(){this.name=\"\",this.dom=new u.FilterGroupDom,this.activeSelectors=[],this.activeFilters=[],this.activeToggles=[],this.handler=null,this.mixer=null,this.logic=\"or\",this.parseOn=\"change\",this.keyupTimeout=-1,i.seal(this)},i.extend(u.FilterGroup.prototype,{init:function(u,e){var t=this,i=u.getAttribute(\"data-logic\");t.dom.el=u,this.name=t.dom.el.getAttribute(\"data-filter-group\")||\"\",t.cacheDom(),t.dom.form&&t.enableButtons(),t.mixer=e,(i&&\"and\"===i.toLowerCase()||\"and\"===e.config.multifilter.logicWithinGroup)&&(t.logic=\"and\"),t.bindEvents()},cacheDom:function(){var u=this;u.dom.form=i.closestParent(u.dom.el,\"form\",!0)},enableButtons:function(){var u=this,e=u.dom.form.querySelectorAll('button[type=\"submit\"]:disabled'),t=null,i=-1;for(i=0;t=e[i];i++)t.disabled&&(t.disabled=!1)},bindEvents:function(){var u=this;u.handler=function(e){switch(e.type){case\"reset\":case\"submit\":u.handleFormEvent(e);break;default:u[\"handle\"+i.pascalCase(e.type)](e)}},i.on(u.dom.el,\"click\",u.handler),i.on(u.dom.el,\"change\",u.handler),i.on(u.dom.el,\"keyup\",u.handler),u.dom.form&&(i.on(u.dom.form,\"reset\",u.handler),i.on(u.dom.form,\"submit\",u.handler))},unbindEvents:function(){var u=this;i.off(u.dom.el,\"click\",u.handler),i.off(u.dom.el,\"change\",u.handler),i.off(u.dom.el,\"keyup\",u.handler),u.dom.form&&(i.off(u.dom.form,\"reset\",u.handler),i.off(u.dom.form,\"submit\",u.handler)),u.handler=null},handleClick:function(u){var e=this,t=e.mixer,r=null,l=i.closestParent(u.target,\"[data-filter], [data-toggle]\",!0),o=\"\",n=-1,E=\"\";l&&((o=e.mixer.config.selectors.control)&&!l.matches(o)||(u.stopPropagation(),t.lastClicked||(t.lastClicked=l),\"function\"==typeof t.config.callbacks.onMixClick&&(r=t.config.callbacks.onMixClick.call(t.lastClicked,t.state,u,e),r===!1)||(l.matches(\"[data-filter]\")?(E=l.getAttribute(\"data-filter\"),e.activeToggles=[],e.activeSelectors=e.activeFilters=[E]):l.matches(\"[data-toggle]\")&&(E=l.getAttribute(\"data-toggle\"),e.activeFilters=[],(n=e.activeToggles.indexOf(E))>-1?e.activeToggles.splice(n,1):e.activeToggles.push(E),\"and\"===e.logic?e.activeSelectors=[e.activeToggles]:e.activeSelectors=e.activeToggles),e.updateControls(),\"change\"===e.mixer.config.multifilter.parseOn&&e.mixer.parseFilterGroups())))},handleChange:function(u){var e=this,t=u.target;switch(u.stopPropagation(),t.type){case\"text\":case\"search\":case\"email\":case\"select-one\":case\"radio\":e.getSingleValue(t);break;case\"checkbox\":case\"select-multiple\":e.getMultipleValues(t)}\"change\"===e.mixer.config.multifilter.parseOn&&e.mixer.parseFilterGroups()},handleKeyup:function(u){var e=this,t=u.target;if(!([\"text\",\"search\",\"email\"].indexOf(t.type)<0)){if(\"change\"!==e.mixer.config.multifilter.parseOn)return void e.mixer.getSingleValue(t);clearTimeout(e.keyupTimeout),e.keyupTimeout=setTimeout(function(){e.getSingleValue(t),e.mixer.parseFilterGroups()},e.mixer.config.multifilter.keyupThrottleDuration)}},handleFormEvent:function(e){var t=this,i=null,r=null,l=-1;if(\"submit\"===e.type&&e.preventDefault(),\"reset\"===e.type&&(t.activeFilters=t.activeToggles=t.activeSelectors=[],t.updateControls()),t.mixer.multifilterFormEventTracker)i=t.mixer.multifilterFormEventTracker;else for(i=t.mixer.multifilterFormEventTracker=new u.MultifilterFormEventTracker,i.form=e.target,l=0;r=t.mixer.filterGroups[l];l++)r.dom.form===e.target&&i.totalBound++;e.target===i.form&&(i.totalHandled++,i.totalHandled===i.totalBound&&(t.mixer.multifilterFormEventTracker=null,\"submit\"!==e.type&&\"change\"!==t.mixer.config.multifilter.parseOn||t.mixer.parseFilterGroups()))},getSingleValue:function(u){var e=this,i=null,r=\"\",l=\"\",o=\"\",n=-1;if(u.type.match(/text|search|email/g)){if(r=u.getAttribute(\"data-search-attribute\"),!r)throw new Error(\"[MixItUp MultiFilter] A valid `data-search-attribute` must be present on text inputs\");if(u.value.length-1?i.addClass(u,o):i.removeClass(u,o)},updateUi:function(){var u=this,e=u.dom.el.querySelectorAll(\"[data-filter], [data-toggle]\"),t=u.dom.el.querySelectorAll('input[type=\"radio\"], input[type=\"checkbox\"], option'),i=u.activeToggles.concat(u.activeFilters),r=!1,l=null,o=-1;for(e.length&&u.updateControls(e,!0),o=0;l=t[o];o++)switch(r=i.indexOf(l.value)>-1,l.tagName.toLowerCase()){case\"option\":l.selected=r;break;case\"input\":l.checked=r}}}),u.MixerDom.registerAction(\"afterConstruct\",\"multifilter\",function(){this.filterGroups=[]}),u.Mixer.registerAction(\"afterConstruct\",\"multifilter\",function(){this.filterGroups=[],this.filterGroupsHash={},this.multifilterFormEventTracker=null}),u.Mixer.registerAction(\"afterCacheDom\",\"multifilter\",function(){var e=this,t=null;if(e.config.multifilter.enable){switch(e.config.controls.scope){case\"local\":t=e.dom.container;break;case\"global\":t=e.dom.document;break;default:throw new Error(u.messages.ERROR_CONFIG_INVALID_CONTROLS_SCOPE)}e.dom.filterGroups=t.querySelectorAll(\"[data-filter-group]\")}}),u.Mixer.registerAction(\"beforeInitControls\",\"multifilter\",function(){var u=this;u.config.multifilter.enable&&(u.config.controls.live=!0)}),u.Mixer.registerAction(\"afterSanitizeConfig\",\"multifilter\",function(){var u=this;u.config.multifilter.logicBetweenGroups=u.config.multifilter.logicBetweenGroups.toLowerCase().trim(),u.config.multifilter.logicWithinGroup=u.config.multifilter.logicWithinGroup.toLowerCase().trim()}),u.Mixer.registerAction(\"afterAttach\",\"multifilter\",function(){var u=this;u.dom.filterGroups.length&&u.indexFilterGroups()}),u.Mixer.registerAction(\"afterUpdateControls\",\"multifilter\",function(){var u=this,e=null,t=-1;for(t=0;e=u.filterGroups[t];t++)e.updateControls()}),u.Mixer.registerAction(\"beforeDestroy\",\"multifilter\",function(){var u=this,e=null,t=-1;for(t=0;e=u.filterGroups[t];t++)e.unbindEvents()}),u.Mixer.extend({indexFilterGroups:function(){var e=this,t=null,i=null,r=-1;for(r=0;i=e.dom.filterGroups[r];r++)if(t=new u.FilterGroup,t.init(i,e),e.filterGroups.push(t),t.name){if(\"undefined\"!=typeof e.filterGroupsHash[t.name])throw new Error('[MixItUp MultiFilter] A filter group with name \"'+t.name+'\" already exists');e.filterGroupsHash[t.name]=t}},parseParseFilterGroupsArgs:function(e){var t=this,r=new u.UserInstruction,l=null,o=-1;for(r.animate=t.config.animation.enable,r.command=new u.CommandFilter,o=0;o1){for(o=0;o -1;\n };\n })(window.Element.prototype);\n\n // Object.keys\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys\n\n if (!Object.keys) {\n Object.keys = (function() {\n var hasOwnProperty = Object.prototype.hasOwnProperty,\n hasDontEnumBug = false,\n dontEnums = [],\n dontEnumsLength = -1;\n\n hasDontEnumBug = !({\n toString: null\n })\n .propertyIsEnumerable('toString');\n\n dontEnums = [\n 'toString',\n 'toLocaleString',\n 'valueOf',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'constructor'\n ];\n\n dontEnumsLength = dontEnums.length;\n\n return function(obj) {\n var result = [],\n prop = '',\n i = -1;\n\n if (typeof obj !== 'object' && (typeof obj !== 'function' || obj === null)) {\n throw new TypeError('Object.keys called on non-object');\n }\n\n for (prop in obj) {\n if (hasOwnProperty.call(obj, prop)) {\n result.push(prop);\n }\n }\n\n if (hasDontEnumBug) {\n for (i = 0; i < dontEnumsLength; i++) {\n if (hasOwnProperty.call(obj, dontEnums[i])) {\n result.push(dontEnums[i]);\n }\n }\n }\n\n return result;\n };\n }());\n }\n\n // Array.isArray\n // https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray\n\n if (!Array.isArray) {\n Array.isArray = function(arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n };\n }\n\n // Object.create\n // https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/create\n\n if (typeof Object.create !== 'function') {\n Object.create = (function(undefined) {\n var Temp = function() {};\n\n return function (prototype, propertiesObject) {\n if (prototype !== Object(prototype) && prototype !== null) {\n throw TypeError('Argument must be an object, or null');\n }\n\n Temp.prototype = prototype || {};\n\n var result = new Temp();\n\n Temp.prototype = null;\n\n if (propertiesObject !== undefined) {\n Object.defineProperties(result, propertiesObject);\n }\n\n if (prototype === null) {\n /* jshint ignore:start */\n result.__proto__ = null;\n /* jshint ignore:end */\n }\n\n return result;\n };\n })();\n }\n\n // String.prototyoe.trim\n\n if (!String.prototype.trim) {\n String.prototype.trim = function() {\n return this.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n };\n }\n\n // Array.prototype.indexOf\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf\n\n if (!Array.prototype.indexOf) {\n Array.prototype.indexOf = function(searchElement) {\n var n, k, t, len;\n\n if (this === null) {\n throw new TypeError();\n }\n\n t = Object(this);\n\n len = t.length >>> 0;\n\n if (len === 0) {\n return -1;\n }\n\n n = 0;\n\n if (arguments.length > 1) {\n n = Number(arguments[1]);\n\n if (n !== n) {\n n = 0;\n } else if (n !== 0 && n !== Infinity && n !== -Infinity) {\n n = (n > 0 || -1) * Math.floor(Math.abs(n));\n }\n }\n\n if (n >= len) {\n return -1;\n }\n\n for (k = n >= 0 ? n : Math.max(len - Math.abs(n), 0); k < len; k++) {\n if (k in t && t[k] === searchElement) {\n return k;\n }\n }\n\n return -1;\n };\n }\n\n // Function.prototype.bind\n // https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_objects/Function/bind\n\n if (!Function.prototype.bind) {\n Function.prototype.bind = function(oThis) {\n var aArgs, self, FNOP, fBound;\n\n if (typeof this !== 'function') {\n throw new TypeError();\n }\n\n aArgs = Array.prototype.slice.call(arguments, 1);\n\n self = this;\n\n FNOP = function() {};\n\n fBound = function() {\n return self.apply(this instanceof FNOP ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments)));\n };\n\n if (this.prototype) {\n FNOP.prototype = this.prototype;\n }\n\n fBound.prototype = new FNOP();\n\n return fBound;\n };\n }\n\n // Element.prototype.dispatchEvent\n\n if (!window.Element.prototype.dispatchEvent) {\n window.Element.prototype.dispatchEvent = function(event) {\n try {\n return this.fireEvent('on' + event.type, event);\n } catch (err) {}\n };\n }\n })();\n\n /**\n * The `mixitup()` \"factory\" function creates and returns individual instances\n * of MixItUp, known as \"mixers\", on which API methods can be called.\n *\n * When loading MixItUp via a script tag, the factory function is accessed\n * via the global variable `mixitup`. When using a module loading\n * system (e.g. ES2015, CommonJS, RequireJS), the factory function is\n * exported into your module when you require the MixItUp library.\n *\n * @example\n * mixitup(container [,config] [,foreignDoc])\n *\n * @example Example 1: Creating a mixer instance with an element reference\n * var containerEl = document.querySelector('.container');\n *\n * var mixer = mixitup(containerEl);\n *\n * @example Example 2: Creating a mixer instance with a selector string\n * var mixer = mixitup('.container');\n *\n * @example Example 3: Passing a configuration object\n * var mixer = mixitup(containerEl, {\n * animation: {\n * effects: 'fade scale(0.5)'\n * }\n * });\n *\n * @example Example 4: Passing an iframe reference\n * var mixer = mixitup(containerEl, config, foreignDocument);\n *\n * @global\n * @namespace\n * @public\n * @kind function\n * @since 3.0.0\n * @param {(Element|string)} container\n * A DOM element or selector string representing the container(s) on which to instantiate MixItUp.\n * @param {object} [config]\n * An optional \"configuration object\" used to customize the behavior of the MixItUp instance.\n * @param {object} [foreignDoc]\n * An optional reference to a `document`, which can be used to control a MixItUp instance in an iframe.\n * @return {mixitup.Mixer}\n * A \"mixer\" object holding the MixItUp instance.\n */\n\n mixitup = function(container, config, foreignDoc) {\n var el = null,\n returnCollection = false,\n instance = null,\n facade = null,\n doc = null,\n output = null,\n instances = [],\n id = '',\n elements = [],\n i = -1;\n\n doc = foreignDoc || window.document;\n\n if (returnCollection = arguments[3]) {\n // A non-documented 4th paramater enabling control of multiple instances\n\n returnCollection = typeof returnCollection === 'boolean';\n }\n\n if (typeof container === 'string') {\n elements = doc.querySelectorAll(container);\n } else if (container && typeof container === 'object' && h.isElement(container, doc)) {\n elements = [container];\n } else if (container && typeof container === 'object' && container.length) {\n // Although not documented, the container may also be an array-like list of\n // elements such as a NodeList or jQuery collection, is returnCollection is true\n\n elements = container;\n } else {\n throw new Error(mixitup.messages.errorFactoryInvalidContainer());\n }\n\n if (elements.length < 1) {\n throw new Error(mixitup.messages.errorFactoryContainerNotFound());\n }\n\n for (i = 0; el = elements[i]; i++) {\n if (i > 0 && !returnCollection) break;\n\n if (!el.id) {\n id = 'MixItUp' + h.randomHex();\n\n el.id = id;\n } else {\n id = el.id;\n }\n\n if (mixitup.instances[id] instanceof mixitup.Mixer) {\n instance = mixitup.instances[id];\n\n if (!config || (config && config.debug && config.debug.showWarnings !== false)) {\n console.warn(mixitup.messages.warningFactoryPreexistingInstance());\n }\n } else {\n instance = new mixitup.Mixer();\n\n instance.attach(el, doc, id, config);\n\n mixitup.instances[id] = instance;\n }\n\n facade = new mixitup.Facade(instance);\n\n if (config && config.debug && config.debug.enable) {\n instances.push(instance);\n } else {\n instances.push(facade);\n }\n }\n\n if (returnCollection) {\n output = new mixitup.Collection(instances);\n } else {\n // Return the first instance regardless\n\n output = instances[0];\n }\n\n return output;\n };\n\n /**\n * The `.use()` static method is used to extend the functionality of mixitup with compatible\n * extensions and libraries in an environment with modular scoping e.g. ES2015, CommonJS, or RequireJS.\n *\n * You need only call the `.use()` function once per project, per extension, as module loaders\n * will cache a single reference to MixItUp inclusive of all changes made.\n *\n * @example\n * mixitup.use(extension)\n *\n * @example Example 1: Extending MixItUp with the Pagination Extension\n *\n * import mixitup from 'mixitup';\n * import mixitupPagination from 'mixitup-pagination';\n *\n * mixitup.use(mixitupPagination);\n *\n * // All mixers created by the factory function in all modules will now\n * // have pagination functionality\n *\n * var mixer = mixitup('.container');\n *\n * @public\n * @name use\n * @memberof mixitup\n * @kind function\n * @static\n * @since 3.0.0\n * @param {*} extension A reference to the extension or library to be used.\n * @return {void}\n */\n\n mixitup.use = function(extension) {\n mixitup.Base.prototype.callActions.call(mixitup, 'beforeUse', arguments);\n\n // Call the extension's factory function, passing\n // the mixitup factory as a paramater\n\n if (typeof extension === 'function' && extension.TYPE === 'mixitup-extension') {\n // Mixitup extension\n\n if (typeof mixitup.extensions[extension.NAME] === 'undefined') {\n extension(mixitup);\n\n mixitup.extensions[extension.NAME] = extension;\n }\n } else if (extension.fn && extension.fn.jquery) {\n // jQuery\n\n mixitup.libraries.$ = extension;\n }\n\n mixitup.Base.prototype.callActions.call(mixitup, 'afterUse', arguments);\n };\n\n mixitup.instances = {};\n mixitup.extensions = {};\n mixitup.libraries = {};\n\n /**\n * @private\n */\n\n h = {\n\n /**\n * @private\n * @param {HTMLElement} el\n * @param {string} cls\n * @return {boolean}\n */\n\n hasClass: function(el, cls) {\n return !!el.className.match(new RegExp('(\\\\s|^)' + cls + '(\\\\s|$)'));\n },\n\n /**\n * @private\n * @param {HTMLElement} el\n * @param {string} cls\n * @return {void}\n */\n\n addClass: function(el, cls) {\n if (!this.hasClass(el, cls)) el.className += el.className ? ' ' + cls : cls;\n },\n\n /**\n * @private\n * @param {HTMLElement} el\n * @param {string} cls\n * @return {void}\n */\n\n removeClass: function(el, cls) {\n if (this.hasClass(el, cls)) {\n var reg = new RegExp('(\\\\s|^)' + cls + '(\\\\s|$)');\n\n el.className = el.className.replace(reg, ' ').trim();\n }\n },\n\n /**\n * Merges the properties of the source object onto the\n * target object. Alters the target object.\n *\n * @private\n * @param {object} destination\n * @param {object} source\n * @param {boolean} [deep=false]\n * @param {boolean} [handleErrors=false]\n * @return {void}\n */\n\n extend: function(destination, source, deep, handleErrors) {\n var sourceKeys = [],\n key = '',\n i = -1;\n\n deep = deep || false;\n handleErrors = handleErrors || false;\n\n try {\n if (Array.isArray(source)) {\n for (i = 0; i < source.length; i++) {\n sourceKeys.push(i);\n }\n } else if (source) {\n sourceKeys = Object.keys(source);\n }\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n\n if (!deep || typeof source[key] !== 'object' || this.isElement(source[key])) {\n // All non-object properties, or all properties if shallow extend\n\n destination[key] = source[key];\n } else if (Array.isArray(source[key])) {\n // Arrays\n\n if (!destination[key]) {\n destination[key] = [];\n }\n\n this.extend(destination[key], source[key], deep, handleErrors);\n } else {\n // Objects\n\n if (!destination[key]) {\n destination[key] = {};\n }\n\n this.extend(destination[key], source[key], deep, handleErrors);\n }\n }\n } catch(err) {\n if (handleErrors) {\n this.handleExtendError(err, destination);\n } else {\n throw err;\n }\n }\n\n return destination;\n },\n\n /**\n * @private\n * @param {Error} err\n * @param {object} destination\n * @return {void}\n */\n\n handleExtendError: function(err, destination) {\n var re = /property \"?(\\w*)\"?[,:] object/i,\n matches = null,\n erroneous = '',\n message = '',\n suggestion = '',\n probableMatch = '',\n key = '',\n mostMatchingChars = -1,\n i = -1;\n\n if (err instanceof TypeError && (matches = re.exec(err.message))) {\n erroneous = matches[1];\n\n for (key in destination) {\n i = 0;\n\n while (i < erroneous.length && erroneous.charAt(i) === key.charAt(i)) {\n i++;\n }\n\n if (i > mostMatchingChars) {\n mostMatchingChars = i;\n probableMatch = key;\n }\n }\n\n if (mostMatchingChars > 1) {\n suggestion = mixitup.messages.errorConfigInvalidPropertySuggestion({\n probableMatch: probableMatch\n });\n }\n\n message = mixitup.messages.errorConfigInvalidProperty({\n erroneous: erroneous,\n suggestion: suggestion\n });\n\n throw new TypeError(message);\n }\n\n throw err;\n },\n\n /**\n * @private\n * @param {string} str\n * @return {function}\n */\n\n template: function(str) {\n var re = /\\${([\\w]*)}/g,\n dynamics = {},\n matches = null;\n\n while ((matches = re.exec(str))) {\n dynamics[matches[1]] = new RegExp('\\\\${' + matches[1] + '}', 'g');\n }\n\n return function(data) {\n var key = '',\n output = str;\n\n data = data || {};\n\n for (key in dynamics) {\n output = output.replace(dynamics[key], typeof data[key] !== 'undefined' ? data[key] : '');\n }\n\n return output;\n };\n },\n\n /**\n * @private\n * @param {HTMLElement} el\n * @param {string} type\n * @param {function} fn\n * @param {boolean} useCapture\n * @return {void}\n */\n\n on: function(el, type, fn, useCapture) {\n if (!el) return;\n\n if (el.addEventListener) {\n el.addEventListener(type, fn, useCapture);\n } else if (el.attachEvent) {\n el['e' + type + fn] = fn;\n\n el[type + fn] = function() {\n el['e' + type + fn](window.event);\n };\n\n el.attachEvent('on' + type, el[type + fn]);\n }\n },\n\n /**\n * @private\n * @param {HTMLElement} el\n * @param {string} type\n * @param {function} fn\n * @return {void}\n */\n\n off: function(el, type, fn) {\n if (!el) return;\n\n if (el.removeEventListener) {\n el.removeEventListener(type, fn, false);\n } else if (el.detachEvent) {\n el.detachEvent('on' + type, el[type + fn]);\n el[type + fn] = null;\n }\n },\n\n /**\n * @private\n * @param {string} eventType\n * @param {object} detail\n * @param {Document} [doc]\n * @return {CustomEvent}\n */\n\n getCustomEvent: function(eventType, detail, doc) {\n var event = null;\n\n doc = doc || window.document;\n\n if (typeof window.CustomEvent === 'function') {\n event = new window.CustomEvent(eventType, {\n detail: detail,\n bubbles: true,\n cancelable: true\n });\n } else if (typeof doc.createEvent === 'function') {\n event = doc.createEvent('CustomEvent');\n event.initCustomEvent(eventType, true, true, detail);\n } else {\n event = doc.createEventObject(),\n event.type = eventType;\n\n event.returnValue = false;\n event.cancelBubble = false;\n event.detail = detail;\n }\n\n return event;\n },\n\n /**\n * @private\n * @param {Event} e\n * @return {Event}\n */\n\n getOriginalEvent: function(e) {\n if (e.touches && e.touches.length) {\n return e.touches[0];\n } else if (e.changedTouches && e.changedTouches.length) {\n return e.changedTouches[0];\n } else {\n return e;\n }\n },\n\n /**\n * @private\n * @param {HTMLElement} el\n * @param {string} selector\n * @return {Number}\n */\n\n index: function(el, selector) {\n var i = 0;\n\n while ((el = el.previousElementSibling) !== null) {\n if (!selector || el.matches(selector)) {\n ++i;\n }\n }\n\n return i;\n },\n\n /**\n * Converts a dash or snake-case string to camel case.\n *\n * @private\n * @param {string} str\n * @param {boolean} [isPascal]\n * @return {string}\n */\n\n camelCase: function(str) {\n return str.toLowerCase().replace(/([_-][a-z])/g, function($1) {\n return $1.toUpperCase().replace(/[_-]/, '');\n });\n },\n\n /**\n * Converts a dash or snake-case string to pascal case.\n *\n * @private\n * @param {string} str\n * @param {boolean} [isPascal]\n * @return {string}\n */\n\n pascalCase: function(str) {\n return (str = this.camelCase(str)).charAt(0).toUpperCase() + str.slice(1);\n },\n\n /**\n * Converts a camel or pascal-case string to dash case.\n *\n * @private\n * @param {string} str\n * @return {string}\n */\n\n dashCase: function(str) {\n return str.replace(/([A-Z])/g, '-$1').replace(/^-/, '').toLowerCase();\n },\n\n /**\n * @private\n * @param {HTMLElement} el\n * @param {HTMLHtmlElement} [doc]\n * @return {boolean}\n */\n\n isElement: function(el, doc) {\n doc = doc || window.document;\n\n if (\n window.HTMLElement &&\n el instanceof window.HTMLElement\n ) {\n return true;\n } else if (\n doc.defaultView &&\n doc.defaultView.HTMLElement &&\n el instanceof doc.defaultView.HTMLElement\n ) {\n return true;\n } else {\n return (\n el !== null &&\n el.nodeType === 1 &&\n typeof el.nodeName === 'string'\n );\n }\n },\n\n /**\n * @private\n * @param {string} htmlString\n * @param {HTMLHtmlElement} [doc]\n * @return {DocumentFragment}\n */\n\n createElement: function(htmlString, doc) {\n var frag = null,\n temp = null;\n\n doc = doc || window.document;\n\n frag = doc.createDocumentFragment();\n temp = doc.createElement('div');\n\n temp.innerHTML = htmlString.trim();\n\n while (temp.firstChild) {\n frag.appendChild(temp.firstChild);\n }\n\n return frag;\n },\n\n /**\n * @private\n * @param {Node} node\n * @return {void}\n */\n\n removeWhitespace: function(node) {\n var deleting;\n\n while (node && node.nodeName === '#text') {\n deleting = node;\n\n node = node.previousSibling;\n\n deleting.parentElement && deleting.parentElement.removeChild(deleting);\n }\n },\n\n /**\n * @private\n * @param {Array<*>} a\n * @param {Array<*>} b\n * @return {boolean}\n */\n\n isEqualArray: function(a, b) {\n var i = a.length;\n\n if (i !== b.length) return false;\n\n while (i--) {\n if (a[i] !== b[i]) return false;\n }\n\n return true;\n },\n\n /**\n * @private\n * @param {object} a\n * @param {object} b\n * @return {boolean}\n */\n\n deepEquals: function(a, b) {\n var key;\n\n if (typeof a === 'object' && a && typeof b === 'object' && b) {\n if (Object.keys(a).length !== Object.keys(b).length) return false;\n\n for (key in a) {\n if (!b.hasOwnProperty(key) || !this.deepEquals(a[key], b[key])) return false;\n }\n } else if (a !== b) {\n return false;\n }\n\n return true;\n },\n\n /**\n * @private\n * @param {Array<*>} oldArray\n * @return {Array<*>}\n */\n\n arrayShuffle: function(oldArray) {\n var newArray = oldArray.slice(),\n len = newArray.length,\n i = len,\n p = -1,\n t = [];\n\n while (i--) {\n p = ~~(Math.random() * len);\n t = newArray[i];\n\n newArray[i] = newArray[p];\n newArray[p] = t;\n }\n\n return newArray;\n },\n\n /**\n * @private\n * @param {object} list\n */\n\n arrayFromList: function(list) {\n var output, i;\n\n try {\n return Array.prototype.slice.call(list);\n } catch(err) {\n output = [];\n\n for (i = 0; i < list.length; i++) {\n output.push(list[i]);\n }\n\n return output;\n }\n },\n\n /**\n * @private\n * @param {function} func\n * @param {Number} wait\n * @param {boolean} immediate\n * @return {function}\n */\n\n debounce: function(func, wait, immediate) {\n var timeout;\n\n return function() {\n var self = this,\n args = arguments,\n callNow = immediate && !timeout,\n later = null;\n\n later = function() {\n timeout = null;\n\n if (!immediate) {\n func.apply(self, args);\n }\n };\n\n clearTimeout(timeout);\n\n timeout = setTimeout(later, wait);\n\n if (callNow) func.apply(self, args);\n };\n },\n\n /**\n * @private\n * @param {HTMLElement} element\n * @return {object}\n */\n\n position: function(element) {\n var xPosition = 0,\n yPosition = 0,\n offsetParent = element;\n\n while (element) {\n xPosition -= element.scrollLeft;\n yPosition -= element.scrollTop;\n\n if (element === offsetParent) {\n xPosition += element.offsetLeft;\n yPosition += element.offsetTop;\n\n offsetParent = element.offsetParent;\n }\n\n element = element.parentElement;\n }\n\n return {\n x: xPosition,\n y: yPosition\n };\n },\n\n /**\n * @private\n * @param {object} node1\n * @param {object} node2\n * @return {Number}\n */\n\n getHypotenuse: function(node1, node2) {\n var distanceX = node1.x - node2.x,\n distanceY = node1.y - node2.y;\n\n distanceX = distanceX < 0 ? distanceX * -1 : distanceX,\n distanceY = distanceY < 0 ? distanceY * -1 : distanceY;\n\n return Math.sqrt(Math.pow(distanceX, 2) + Math.pow(distanceY, 2));\n },\n\n /**\n * Calcuates the area of intersection between two rectangles and expresses it as\n * a ratio in comparison to the area of the first rectangle.\n *\n * @private\n * @param {Rect} box1\n * @param {Rect} box2\n * @return {number}\n */\n\n getIntersectionRatio: function(box1, box2) {\n var controlArea = box1.width * box1.height,\n intersectionX = -1,\n intersectionY = -1,\n intersectionArea = -1,\n ratio = -1;\n\n intersectionX =\n Math.max(0, Math.min(box1.left + box1.width, box2.left + box2.width) - Math.max(box1.left, box2.left));\n\n intersectionY =\n Math.max(0, Math.min(box1.top + box1.height, box2.top + box2.height) - Math.max(box1.top, box2.top));\n\n intersectionArea = intersectionY * intersectionX;\n\n ratio = intersectionArea / controlArea;\n\n return ratio;\n },\n\n /**\n * @private\n * @param {object} el\n * @param {string} selector\n * @param {boolean} [includeSelf]\n * @param {HTMLHtmlElement} [doc]\n * @return {Element|null}\n */\n\n closestParent: function(el, selector, includeSelf, doc) {\n var parent = el.parentNode;\n\n doc = doc || window.document;\n\n if (includeSelf && el.matches(selector)) {\n return el;\n }\n\n while (parent && parent != doc.body) {\n if (parent.matches && parent.matches(selector)) {\n return parent;\n } else if (parent.parentNode) {\n parent = parent.parentNode;\n } else {\n return null;\n }\n }\n\n return null;\n },\n\n /**\n * @private\n * @param {HTMLElement} el\n * @param {string} selector\n * @param {HTMLHtmlElement} [doc]\n * @return {NodeList}\n */\n\n children: function(el, selector, doc) {\n var children = [],\n tempId = '';\n\n doc = doc || window.doc;\n\n if (el) {\n if (!el.id) {\n tempId = 'Temp' + this.randomHexKey();\n\n el.id = tempId;\n }\n\n children = doc.querySelectorAll('#' + el.id + ' > ' + selector);\n\n if (tempId) {\n el.removeAttribute('id');\n }\n }\n\n return children;\n },\n\n /**\n * Creates a clone of a provided array, with any empty strings removed.\n *\n * @private\n * @param {Array<*>} originalArray\n * @return {Array<*>}\n */\n\n clean: function(originalArray) {\n var cleanArray = [],\n i = -1;\n\n for (i = 0; i < originalArray.length; i++) {\n if (originalArray[i] !== '') {\n cleanArray.push(originalArray[i]);\n }\n }\n\n return cleanArray;\n },\n\n /**\n * Abstracts an ES6 promise into a q-like deferred interface for storage and deferred resolution.\n *\n * @private\n * @param {object} libraries\n * @return {h.Deferred}\n */\n\n defer: function(libraries) {\n var deferred = null,\n promiseWrapper = null,\n $ = null;\n\n promiseWrapper = new this.Deferred();\n\n if (mixitup.features.has.promises) {\n // ES6 native promise or polyfill\n\n promiseWrapper.promise = new Promise(function(resolve, reject) {\n promiseWrapper.resolve = resolve;\n promiseWrapper.reject = reject;\n });\n } else if (($ = (window.jQuery || libraries.$)) && typeof $.Deferred === 'function') {\n // jQuery\n\n deferred = $.Deferred();\n\n promiseWrapper.promise = deferred.promise();\n promiseWrapper.resolve = deferred.resolve;\n promiseWrapper.reject = deferred.reject;\n } else if (window.console) {\n // No implementation\n\n console.warn(mixitup.messages.warningNoPromiseImplementation());\n }\n\n return promiseWrapper;\n },\n\n /**\n * @private\n * @param {Array} tasks\n * @param {object} libraries\n * @return {Promise}\n */\n\n all: function(tasks, libraries) {\n var $ = null;\n\n if (mixitup.features.has.promises) {\n return Promise.all(tasks);\n } else if (($ = (window.jQuery || libraries.$)) && typeof $.when === 'function') {\n return $.when.apply($, tasks)\n .done(function() {\n // jQuery when returns spread arguments rather than an array or resolutions\n\n return arguments;\n });\n }\n\n // No implementation\n\n if (window.console) {\n console.warn(mixitup.messages.warningNoPromiseImplementation());\n }\n\n return [];\n },\n\n /**\n * @private\n * @param {HTMLElement} el\n * @param {string} property\n * @param {Array} vendors\n * @return {string}\n */\n\n getPrefix: function(el, property, vendors) {\n var i = -1,\n prefix = '';\n\n if (h.dashCase(property) in el.style) return '';\n\n for (i = 0; prefix = vendors[i]; i++) {\n if (prefix + property in el.style) {\n return prefix.toLowerCase();\n }\n }\n\n return 'unsupported';\n },\n\n /**\n * @private\n * @return {string}\n */\n\n randomHex: function() {\n return ('00000' + (Math.random() * 16777216 << 0).toString(16)).substr(-6).toUpperCase();\n },\n\n /**\n * @private\n * @param {HTMLDocument} [doc]\n * @return {object}\n */\n\n getDocumentState: function(doc) {\n doc = typeof doc.body === 'object' ? doc : window.document;\n\n return {\n scrollTop: window.pageYOffset,\n scrollLeft: window.pageXOffset,\n docHeight: doc.documentElement.scrollHeight,\n docWidth: doc.documentElement.scrollWidth,\n viewportHeight: doc.documentElement.clientHeight,\n viewportWidth: doc.documentElement.clientWidth\n };\n },\n\n /**\n * @private\n * @param {object} obj\n * @param {function} fn\n * @return {function}\n */\n\n bind: function(obj, fn) {\n return function() {\n return fn.apply(obj, arguments);\n };\n },\n\n /**\n * @private\n * @param {HTMLElement} el\n * @return {boolean}\n */\n\n isVisible: function(el) {\n var styles = null;\n\n if (el.offsetParent) return true;\n\n styles = window.getComputedStyle(el);\n\n if (\n styles.position === 'fixed' &&\n styles.visibility !== 'hidden' &&\n styles.opacity !== '0'\n ) {\n // Fixed elements report no offsetParent,\n // but may still be invisible\n\n return true;\n }\n\n return false;\n },\n\n /**\n * @private\n * @param {object} obj\n */\n\n seal: function(obj) {\n if (typeof Object.seal === 'function') {\n Object.seal(obj);\n }\n },\n\n /**\n * @private\n * @param {object} obj\n */\n\n freeze: function(obj) {\n if (typeof Object.freeze === 'function') {\n Object.freeze(obj);\n }\n },\n\n /**\n * @private\n * @param {string} control\n * @param {string} specimen\n * @return {boolean}\n */\n\n compareVersions: function(control, specimen) {\n var controlParts = control.split('.'),\n specimenParts = specimen.split('.'),\n controlPart = -1,\n specimenPart = -1,\n i = -1;\n\n for (i = 0; i < controlParts.length; i++) {\n controlPart = parseInt(controlParts[i].replace(/[^\\d.]/g, ''));\n specimenPart = parseInt(specimenParts[i].replace(/[^\\d.]/g, '') || 0);\n\n if (specimenPart < controlPart) {\n return false;\n } else if (specimenPart > controlPart) {\n return true;\n }\n }\n\n return true;\n },\n\n /**\n * @private\n * @constructor\n */\n\n Deferred: function() {\n this.promise = null;\n this.resolve = null;\n this.reject = null;\n this.id = h.randomHex();\n },\n\n /**\n * @private\n * @param {object} obj\n * @return {boolean}\n */\n\n isEmptyObject: function(obj) {\n var key = '';\n\n if (typeof Object.keys === 'function') {\n return Object.keys(obj).length === 0;\n }\n\n for (key in obj) {\n if (obj.hasOwnProperty(key)) {\n return false;\n }\n }\n\n return true;\n },\n\n /**\n * @param {mixitup.Config.ClassNames} classNames\n * @param {string} elementName\n * @param {string} [modifier]\n * @return {string}\n */\n\n getClassname: function(classNames, elementName, modifier) {\n var classname = '';\n\n classname += classNames.block;\n\n if (classname.length) {\n classname += classNames.delineatorElement;\n }\n\n classname += classNames['element' + this.pascalCase(elementName)];\n\n if (!modifier) return classname;\n\n if (classname.length) {\n classname += classNames.delineatorModifier;\n }\n\n classname += modifier;\n\n return classname;\n },\n\n /**\n * Returns the value of a property on a given object via its string key.\n *\n * @param {object} obj\n * @param {string} stringKey\n * @return {*} value\n */\n\n getProperty: function(obj, stringKey) {\n var parts = stringKey.split('.'),\n returnCurrent = null,\n current = '',\n i = 0;\n\n if (!stringKey) {\n return obj;\n }\n\n returnCurrent = function(obj) {\n if (!obj) {\n return null;\n } else {\n return obj[current];\n }\n };\n\n while (i < parts.length) {\n current = parts[i];\n\n obj = returnCurrent(obj);\n\n i++;\n }\n\n if (typeof obj !== 'undefined') {\n return obj;\n } else {\n return null;\n }\n }\n };\n\n mixitup.h = h;\n\n /**\n * The Base class adds instance methods to all other extensible MixItUp classes,\n * enabling the calling of any registered hooks.\n *\n * @constructor\n * @namespace\n * @memberof mixitup\n * @private\n * @since 3.0.0\n */\n\n mixitup.Base = function() {};\n\n mixitup.Base.prototype = {\n constructor: mixitup.Base,\n\n /**\n * Calls any registered hooks for the provided action.\n *\n * @memberof mixitup.Base\n * @private\n * @instance\n * @since 2.0.0\n * @param {string} actionName\n * @param {Array<*>} args\n * @return {void}\n */\n\n callActions: function(actionName, args) {\n var self = this,\n hooks = self.constructor.actions[actionName],\n extensionName = '';\n\n if (!hooks || h.isEmptyObject(hooks)) return;\n\n for (extensionName in hooks) {\n hooks[extensionName].apply(self, args);\n }\n },\n\n /**\n * Calls any registered hooks for the provided filter.\n *\n * @memberof mixitup.Base\n * @private\n * @instance\n * @since 2.0.0\n * @param {string} filterName\n * @param {*} input\n * @param {Array<*>} args\n * @return {*}\n */\n\n callFilters: function(filterName, input, args) {\n var self = this,\n hooks = self.constructor.filters[filterName],\n output = input,\n extensionName = '';\n\n if (!hooks || h.isEmptyObject(hooks)) return output;\n\n args = args || [];\n\n for (extensionName in hooks) {\n args = h.arrayFromList(args);\n\n args.unshift(output);\n\n output = hooks[extensionName].apply(self, args);\n }\n\n return output;\n }\n };\n\n /**\n * The BaseStatic class holds a set of static methods which are then added to all other\n * extensible MixItUp classes as a means of integrating extensions via the addition of new\n * methods and/or actions and hooks.\n *\n * @constructor\n * @namespace\n * @memberof mixitup\n * @private\n * @since 3.0.0\n */\n\n mixitup.BaseStatic = function() {\n this.actions = {};\n this.filters = {};\n\n /**\n * Performs a shallow extend on the class's prototype, adding one or more new members to\n * the class in a single operation.\n *\n * @memberof mixitup.BaseStatic\n * @public\n * @static\n * @since 2.1.0\n * @param {object} extension\n * @return {void}\n */\n\n this.extend = function(extension) {\n h.extend(this.prototype, extension);\n };\n\n /**\n * Registers a function to be called on the action hook of the provided name.\n *\n * @memberof mixitup.BaseStatic\n * @public\n * @static\n * @since 2.1.0\n * @param {string} hookName\n * @param {string} extensionName\n * @param {function} func\n * @return {void}\n */\n\n this.registerAction = function(hookName, extensionName, func) {\n (this.actions[hookName] = this.actions[hookName] || {})[extensionName] = func;\n };\n\n /**\n * Registers a function to be called on the filter of the provided name.\n *\n * @memberof mixitup.BaseStatic\n * @public\n * @static\n * @since 2.1.0\n * @param {string} hookName\n * @param {string} extensionName\n * @param {function} func\n * @return {void}\n */\n\n this.registerFilter = function(hookName, extensionName, func) {\n (this.filters[hookName] = this.filters[hookName] || {})[extensionName] = func;\n };\n };\n\n /**\n * The `mixitup.Features` class performs all feature and CSS prefix detection\n * neccessary for MixItUp to function correctly, as well as storing various\n * string and array constants. All feature decection is on evaluation of the\n * library and stored in a singleton instance for use by other internal classes.\n *\n * @constructor\n * @namespace\n * @memberof mixitup\n * @private\n * @since 3.0.0\n */\n\n mixitup.Features = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n this.boxSizingPrefix = '';\n this.transformPrefix = '';\n this.transitionPrefix = '';\n\n this.boxSizingPrefix = '';\n this.transformProp = '';\n this.transformRule = '';\n this.transitionProp = '';\n this.perspectiveProp = '';\n this.perspectiveOriginProp = '';\n\n this.has = new mixitup.Has();\n\n this.canary = null;\n\n this.BOX_SIZING_PROP = 'boxSizing';\n this.TRANSITION_PROP = 'transition';\n this.TRANSFORM_PROP = 'transform';\n this.PERSPECTIVE_PROP = 'perspective';\n this.PERSPECTIVE_ORIGIN_PROP = 'perspectiveOrigin';\n this.VENDORS = ['Webkit', 'moz', 'O', 'ms'];\n\n this.TWEENABLE = [\n 'opacity',\n 'width', 'height',\n 'marginRight', 'marginBottom',\n 'x', 'y',\n 'scale',\n 'translateX', 'translateY', 'translateZ',\n 'rotateX', 'rotateY', 'rotateZ'\n ];\n\n this.callActions('afterConstruct');\n };\n\n mixitup.BaseStatic.call(mixitup.Features);\n\n mixitup.Features.prototype = Object.create(mixitup.Base.prototype);\n\n h.extend(mixitup.Features.prototype,\n /** @lends mixitup.Features */\n {\n constructor: mixitup.Features,\n\n /**\n * @private\n * @return {void}\n */\n\n init: function() {\n var self = this;\n\n self.callActions('beforeInit', arguments);\n\n self.canary = document.createElement('div');\n\n self.setPrefixes();\n self.runTests();\n\n self.callActions('beforeInit', arguments);\n },\n\n /**\n * @private\n * @return {void}\n */\n\n runTests: function() {\n var self = this;\n\n self.callActions('beforeRunTests', arguments);\n\n self.has.promises = typeof window.Promise === 'function';\n self.has.transitions = self.transitionPrefix !== 'unsupported';\n\n self.callActions('afterRunTests', arguments);\n\n h.freeze(self.has);\n },\n\n /**\n * @private\n * @return {void}\n */\n\n setPrefixes: function() {\n var self = this;\n\n self.callActions('beforeSetPrefixes', arguments);\n\n self.transitionPrefix = h.getPrefix(self.canary, 'Transition', self.VENDORS);\n self.transformPrefix = h.getPrefix(self.canary, 'Transform', self.VENDORS);\n self.boxSizingPrefix = h.getPrefix(self.canary, 'BoxSizing', self.VENDORS);\n\n self.boxSizingProp = self.boxSizingPrefix ?\n self.boxSizingPrefix + h.pascalCase(self.BOX_SIZING_PROP) : self.BOX_SIZING_PROP;\n\n self.transitionProp = self.transitionPrefix ?\n self.transitionPrefix + h.pascalCase(self.TRANSITION_PROP) : self.TRANSITION_PROP;\n\n self.transformProp = self.transformPrefix ?\n self.transformPrefix + h.pascalCase(self.TRANSFORM_PROP) : self.TRANSFORM_PROP;\n\n self.transformRule = self.transformPrefix ?\n '-' + self.transformPrefix + '-' + self.TRANSFORM_PROP : self.TRANSFORM_PROP;\n\n self.perspectiveProp = self.transformPrefix ?\n self.transformPrefix + h.pascalCase(self.PERSPECTIVE_PROP) : self.PERSPECTIVE_PROP;\n\n self.perspectiveOriginProp = self.transformPrefix ?\n self.transformPrefix + h.pascalCase(self.PERSPECTIVE_ORIGIN_PROP) :\n self.PERSPECTIVE_ORIGIN_PROP;\n\n self.callActions('afterSetPrefixes', arguments);\n }\n });\n\n /**\n * @constructor\n * @memberof mixitup\n * @private\n * @since 3.0.0\n */\n\n mixitup.Has = function() {\n this.transitions = false;\n this.promises = false;\n\n h.seal(this);\n };\n\n // Assign a singleton instance to `mixitup.features` and initialise:\n\n mixitup.features = new mixitup.Features();\n\n mixitup.features.init();\n\n /**\n * A group of properties defining the mixer's animation and effects settings.\n *\n * @constructor\n * @memberof mixitup.Config\n * @name animation\n * @namespace\n * @public\n * @since 2.0.0\n */\n\n mixitup.ConfigAnimation = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n /**\n * A boolean dictating whether or not animation should be enabled for the MixItUp instance.\n * If `false`, all operations will occur instantly and syncronously, although callback\n * functions and any returned promises will still be fulfilled.\n *\n * @example Example: Create a mixer with all animations disabled\n * var mixer = mixitup(containerEl, {\n * animation: {\n * enable: false\n * }\n * });\n *\n * @name enable\n * @memberof mixitup.Config.animation\n * @instance\n * @type {boolean}\n * @default true\n */\n\n this.enable = true;\n\n /**\n * A string of one or more space-separated properties to which transitions will be\n * applied for all filtering animations.\n *\n * Properties can be listed any order or combination, although they will be applied in a specific\n * predefined order to produce consistent results.\n *\n * To learn more about available effects, experiment by providing different animation configurations to any of our [demos](https://patrickunka.github.io/mixitup/demos).\n *\n * @example Example: Apply \"fade\" and \"translateZ\" effects to all animations\n * // As targets are filtered in and out, they will fade between\n * // opacity 1 and 0 and transform between translateZ(-100px) and\n * // translateZ(0).\n *\n * var mixer = mixitup(containerEl, {\n * animation: {\n * effects: 'fade translateZ(-100px)'\n * }\n * });\n *\n * @name effects\n * @memberof mixitup.Config.animation\n * @instance\n * @type {string}\n * @default 'fade scale'\n */\n\n this.effects = 'fade scale';\n\n /**\n * A string of one or more space-seperated effects to be applied only to filter-in\n * animations, overriding `config.animation.effects` if set.\n *\n * @example Example: Apply downwards vertical translate to targets being filtered in\n *\n * var mixer = mixitup(containerEl, {\n * animation: {\n * effectsIn: 'fade translateY(-100%)'\n * }\n * });\n *\n * @name effectsIn\n * @memberof mixitup.Config.animation\n * @instance\n * @type {string}\n * @default ''\n */\n\n this.effectsIn = '';\n\n /**\n * A string of one or more space-seperated effects to be applied only to filter-out\n * animations, overriding `config.animation.effects` if set.\n *\n * @example Example: Apply upwards vertical translate to targets being filtered out\n *\n * var mixer = mixitup(containerEl, {\n * animation: {\n * effectsOut: 'fade translateY(-100%)'\n * }\n * });\n *\n * @name effectsOut\n * @memberof mixitup.Config.animation\n * @instance\n * @type {string}\n * @default ''\n */\n\n this.effectsOut = '';\n\n /**\n * An integer dictating the duration of all MixItUp animations in milliseconds, not\n * including any additional delay apllied via the `'stagger'` effect.\n *\n * @example Example: Apply an animation duration of 200ms to all mixitup animations\n *\n * var mixer = mixitup(containerEl, {\n * animation: {\n * duration: 200\n * }\n * });\n *\n * @name duration\n * @memberof mixitup.Config.animation\n * @instance\n * @type {number}\n * @default 600\n */\n\n this.duration = 600;\n\n /**\n * A valid CSS3 transition-timing function or shorthand. For a full list of accepted\n * values, visit easings.net.\n *\n * @example Example 1: Apply \"ease-in-out\" easing to all animations\n *\n * var mixer = mixitup(containerEl, {\n * animation: {\n * easing: 'ease-in-out'\n * }\n * });\n *\n * @example Example 2: Apply a custom \"cubic-bezier\" easing function to all animations\n * var mixer = mixitup(containerEl, {\n * animation: {\n * easing: 'cubic-bezier(0.645, 0.045, 0.355, 1)'\n * }\n * });\n *\n * @name easing\n * @memberof mixitup.Config.animation\n * @instance\n * @type {string}\n * @default 'ease'\n */\n\n this.easing = 'ease';\n\n /**\n * A boolean dictating whether or not to apply perspective to the MixItUp container\n * during animations. By default, perspective is always applied and creates the\n * illusion of three-dimensional space for effects such as `translateZ`, `rotateX`,\n * and `rotateY`.\n *\n * You may wish to disable this and define your own perspective settings via CSS.\n *\n * @example Example: Prevent perspective from being applied to any 3D transforms\n * var mixer = mixitup(containerEl, {\n * animation: {\n * applyPerspective: false\n * }\n * });\n *\n * @name applyPerspective\n * @memberof mixitup.Config.animation\n * @instance\n * @type {bolean}\n * @default true\n */\n\n this.applyPerspective = true;\n\n /**\n * The perspective distance value to be applied to the container during animations,\n * affecting any 3D-transform-based effects.\n *\n * @example Example: Set a perspective distance of 2000px\n * var mixer = mixitup(containerEl, {\n * animation: {\n * effects: 'rotateY(-25deg)',\n * perspectiveDistance: '2000px'\n * }\n * });\n *\n * @name perspectiveDistance\n * @memberof mixitup.Config.animation\n * @instance\n * @type {string}\n * @default '3000px'\n */\n\n this.perspectiveDistance = '3000px';\n\n /**\n * The perspective-origin value to be applied to the container during animations,\n * affecting any 3D-transform-based effects.\n *\n * @example Example: Set a perspective origin in the top-right of the container\n * var mixer = mixitup(containerEl, {\n * animation: {\n * effects: 'transateZ(-200px)',\n * perspectiveOrigin: '100% 0'\n * }\n * });\n *\n * @name perspectiveOrigin\n * @memberof mixitup.Config.animation\n * @instance\n * @type {string}\n * @default '50% 50%'\n */\n\n this.perspectiveOrigin = '50% 50%';\n\n /**\n * A boolean dictating whether or not to enable the queuing of operations.\n *\n * If `true` (default), and a control is clicked or an API call is made while another\n * operation is progress, the operation will go into the queue and will be automatically exectuted\n * when the previous operaitons is finished.\n *\n * If `false`, any requested operations will be ignored, and the `onMixBusy` callback and `mixBusy`\n * event will be fired. If `debug.showWarnings` is enabled, a console warning will also occur.\n *\n * @example Example: Disable queuing\n * var mixer = mixitup(containerEl, {\n * animation: {\n * queue: false\n * }\n * });\n *\n * @name queue\n * @memberof mixitup.Config.animation\n * @instance\n * @type {boolean}\n * @default true\n */\n\n this.queue = true;\n\n /**\n * An integer dictacting the maximum number of operations allowed in the queue at\n * any time, when queuing is enabled.\n *\n * @example Example: Allow a maximum of 5 operations in the queue at any time\n * var mixer = mixitup(containerEl, {\n * animation: {\n * queueLimit: 5\n * }\n * });\n *\n * @name queueLimit\n * @memberof mixitup.Config.animation\n * @instance\n * @type {number}\n * @default 3\n */\n\n this.queueLimit = 3;\n\n /**\n * A boolean dictating whether or not to transition the height and width of the\n * container as elements are filtered in and out. If disabled, the container height\n * will change abruptly.\n *\n * It may be desirable to disable this on mobile devices as the CSS `height` and\n * `width` properties do not receive GPU-acceleration and can therefore cause stuttering.\n *\n * @example Example 1: Disable the transitioning of the container height and/or width\n * var mixer = mixitup(containerEl, {\n * animation: {\n * animateResizeContainer: false\n * }\n * });\n *\n * @example Example 2: Disable the transitioning of the container height and/or width for mobile devices only\n * var mixer = mixitup(containerEl, {\n * animation: {\n * animateResizeContainer: myFeatureTests.isMobile ? false : true\n * }\n * });\n *\n * @name animateResizeContainer\n * @memberof mixitup.Config.animation\n * @instance\n * @type {boolean}\n * @default true\n */\n\n this.animateResizeContainer = true;\n\n /**\n * A boolean dictating whether or not to transition the height and width of target\n * elements as they change throughout the course of an animation.\n *\n * This is often a must for flex-box grid layouts where the size of target elements may change\n * depending on final their position in relation to their siblings, or for `.changeLayout()`\n * operations where the size of targets change between layouts.\n *\n * NB: This feature requires additional calculations and manipulation to non-hardware-accelerated\n * properties which may adversely affect performance on slower devices, and is therefore\n * disabled by default.\n *\n * @example Example: Enable the transitioning of target widths and heights\n * var mixer = mixitup(containerEl, {\n * animation: {\n * animateResizeTargets: true\n * }\n * });\n *\n * @name animateResizeTargets\n * @memberof mixitup.Config.animation\n * @instance\n * @type {boolean}\n * @default false\n */\n\n this.animateResizeTargets = false;\n\n /**\n * A custom function used to manipulate the order in which the stagger delay is\n * incremented when using the ‘stagger’ effect.\n *\n * When using the 'stagger' effect, the delay applied to each target element is incremented\n * based on its index. You may create a custom function to manipulate the order in which the\n * delay is incremented and create engaging non-linear stagger effects.\n *\n * The function receives the index of the target element as a parameter, and must\n * return an integer which serves as the multiplier for the stagger delay.\n *\n * @example Example 1: Stagger target elements by column in a 3-column grid\n * var mixer = mixitup(containerEl, {\n * animation: {\n * effects: 'fade stagger(100ms)',\n * staggerSequence: function(i) {\n * return i % 3;\n * }\n * }\n * });\n *\n * @example Example 2: Using an algorithm to produce a more complex sequence\n * var mixer = mixitup(containerEl, {\n * animation: {\n * effects: 'fade stagger(100ms)',\n * staggerSequence: function(i) {\n * return (2*i) - (5*((i/3) - ((1/3) * (i%3))));\n * }\n * }\n * });\n *\n * @name staggerSequence\n * @memberof mixitup.Config.animation\n * @instance\n * @type {function}\n * @default null\n */\n\n this.staggerSequence = null;\n\n /**\n * A boolean dictating whether or not to reverse the direction of `translate`\n * and `rotate` transforms for elements being filtered out.\n *\n * It can be used to create carousel-like animations where elements enter and exit\n * from opposite directions. If enabled, the effect `translateX(-100%)` for elements\n * being filtered in would become `translateX(100%)` for targets being filtered out.\n *\n * This functionality can also be achieved by providing seperate effects\n * strings for `config.animation.effectsIn` and `config.animation.effectsOut`.\n *\n * @example Example: Reverse the desired direction on any translate/rotate effect for targets being filtered out\n * // Elements being filtered in will be translated from '100%' to '0' while\n * // elements being filtered out will be translated from 0 to '-100%'\n *\n * var mixer = mixitup(containerEl, {\n * animation: {\n * effects: 'fade translateX(100%)',\n * reverseOut: true,\n * nudge: false // Disable nudging to create a carousel-like effect\n * }\n * });\n *\n * @name reverseOut\n * @memberof mixitup.Config.animation\n * @instance\n * @type {boolean}\n * @default false\n */\n\n this.reverseOut = false;\n\n /**\n * A boolean dictating whether or not to \"nudge\" the animation path of targets\n * when they are being filtered in and out simulatenously.\n *\n * This has been the default behavior of MixItUp since version 1, but it\n * may be desirable to disable this effect when filtering directly from\n * one exclusive set of targets to a different exclusive set of targets,\n * to create a carousel-like effect, or a generally more subtle animation.\n *\n * @example Example: Disable the \"nudging\" of targets being filtered in and out simulatenously\n *\n * var mixer = mixitup(containerEl, {\n * animation: {\n * nudge: false\n * }\n * });\n *\n * @name nudge\n * @memberof mixitup.Config.animation\n * @instance\n * @type {boolean}\n * @default true\n */\n\n this.nudge = true;\n\n /**\n * A boolean dictating whether or not to clamp the height of the container while MixItUp's\n * geometry tests are carried out before an operation.\n *\n * To prevent scroll-bar flicker, clamping is turned on by default. But in the case where the\n * height of the container might affect its vertical positioning in the viewport\n * (e.g. a vertically-centered container), this should be turned off to ensure accurate\n * test results and a smooth animation.\n *\n * @example Example: Disable container height-clamping\n *\n * var mixer = mixitup(containerEl, {\n * animation: {\n * clampHeight: false\n * }\n * });\n *\n * @name clampHeight\n * @memberof mixitup.Config.animation\n * @instance\n * @type {boolean}\n * @default true\n */\n\n this.clampHeight = true;\n\n /**\n * A boolean dictating whether or not to clamp the width of the container while MixItUp's\n * geometry tests are carried out before an operation.\n *\n * To prevent scroll-bar flicker, clamping is turned on by default. But in the case where the\n * width of the container might affect its horitzontal positioning in the viewport\n * (e.g. a horizontall-centered container), this should be turned off to ensure accurate\n * test results and a smooth animation.\n *\n * @example Example: Disable container width-clamping\n *\n * var mixer = mixitup(containerEl, {\n * animation: {\n * clampWidth: false\n * }\n * });\n *\n * @name clampWidth\n * @memberof mixitup.Config.animation\n * @instance\n * @type {boolean}\n * @default true\n */\n\n this.clampWidth = true;\n\n this.callActions('afterConstruct');\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.ConfigAnimation);\n\n mixitup.ConfigAnimation.prototype = Object.create(mixitup.Base.prototype);\n\n mixitup.ConfigAnimation.prototype.constructor = mixitup.ConfigAnimation;\n\n /**\n * A group of properties relating to the behavior of the Mixer.\n *\n * @constructor\n * @memberof mixitup.Config\n * @name behavior\n * @namespace\n * @public\n * @since 3.1.12\n */\n\n mixitup.ConfigBehavior = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n /**\n * A boolean dictating whether to allow \"live\" sorting of the mixer.\n *\n * Because of the expensive nature of sorting, MixItUp makes use of several\n * internal optimizations to skip redundant sorting operations, such as when\n * the newly requested sort command is the same as the active one. The caveat\n * to this optimization is that \"live\" edits to the value of a target's sorting\n * attribute will be ignored when requesting a re-sort by the same attribute.\n *\n * By setting to `behavior.liveSort` to `true`, the mixer will always re-sort\n * regardless of whether or not the sorting attribute and order have changed.\n *\n * @example Example: Enabling `liveSort` to allow for re-sorting\n *\n * var mixer = mixitup(containerEl, {\n * behavior: {\n * liveSort: true\n * },\n * load: {\n * sort: 'edited:desc'\n * }\n * });\n *\n * var target = containerEl.children[3];\n *\n * console.log(target.getAttribute('data-edited')); // '2015-04-24'\n *\n * target.setAttribute('data-edited', '2017-08-10'); // Update the target's edited date\n *\n * mixer.sort('edited:desc')\n * .then(function(state) {\n * // The target is now at the top of the list\n *\n * console.log(state.targets[0] === target); // true\n * });\n *\n * @name liveSort\n * @memberof mixitup.Config.behavior\n * @instance\n * @type {boolean}\n * @default false\n */\n\n this.liveSort = false;\n\n this.callActions('afterConstruct');\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.ConfigBehavior);\n\n mixitup.ConfigBehavior.prototype = Object.create(mixitup.Base.prototype);\n\n mixitup.ConfigBehavior.prototype.constructor = mixitup.ConfigBehavior;\n\n /**\n * A group of optional callback functions to be invoked at various\n * points within the lifecycle of a mixer operation.\n *\n * Each function is analogous to an event of the same name triggered from the\n * container element, and is invoked immediately after it.\n *\n * All callback functions receive the current `state` object as their first\n * argument, as well as other more specific arguments described below.\n *\n * @constructor\n * @memberof mixitup.Config\n * @name callbacks\n * @namespace\n * @public\n * @since 2.0.0\n */\n\n mixitup.ConfigCallbacks = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n /**\n * A callback function invoked immediately after any MixItUp operation is requested\n * and before animations have begun.\n *\n * A second `futureState` argument is passed to the function which represents the final\n * state of the mixer once the requested operation has completed.\n *\n * @example Example: Adding an `onMixStart` callback function\n * var mixer = mixitup(containerEl, {\n * callbacks: {\n * onMixStart: function(state, futureState) {\n * console.log('Starting operation...');\n * }\n * }\n * });\n *\n * @name onMixStart\n * @memberof mixitup.Config.callbacks\n * @instance\n * @type {function}\n * @default null\n */\n\n this.onMixStart = null;\n\n /**\n * A callback function invoked when a MixItUp operation is requested while another\n * operation is in progress, and the animation queue is full, or queueing\n * is disabled.\n *\n * @example Example: Adding an `onMixBusy` callback function\n * var mixer = mixitup(containerEl, {\n * callbacks: {\n * onMixBusy: function(state) {\n * console.log('Mixer busy');\n * }\n * }\n * });\n *\n * @name onMixBusy\n * @memberof mixitup.Config.callbacks\n * @instance\n * @type {function}\n * @default null\n */\n\n this.onMixBusy = null;\n\n /**\n * A callback function invoked after any MixItUp operation has completed, and the\n * state has been updated.\n *\n * @example Example: Adding an `onMixEnd` callback function\n * var mixer = mixitup(containerEl, {\n * callbacks: {\n * onMixEnd: function(state) {\n * console.log('Operation complete');\n * }\n * }\n * });\n *\n * @name onMixEnd\n * @memberof mixitup.Config.callbacks\n * @instance\n * @type {function}\n * @default null\n */\n\n this.onMixEnd = null;\n\n /**\n * A callback function invoked whenever an operation \"fails\", i.e. no targets\n * could be found matching the requested filter.\n *\n * @example Example: Adding an `onMixFail` callback function\n * var mixer = mixitup(containerEl, {\n * callbacks: {\n * onMixFail: function(state) {\n * console.log('No items could be found matching the requested filter');\n * }\n * }\n * });\n *\n * @name onMixFail\n * @memberof mixitup.Config.callbacks\n * @instance\n * @type {function}\n * @default null\n */\n\n this.onMixFail = null;\n\n /**\n * A callback function invoked whenever a MixItUp control is clicked, and before its\n * respective operation is requested.\n *\n * The clicked element is assigned to the `this` keyword within the function. The original\n * click event is passed to the function as the second argument, which can be useful if\n * using `` tags as controls where the default behavior needs to be prevented.\n *\n * Returning `false` from the callback will prevent the control click from triggering\n * an operation.\n *\n * @example Example 1: Adding an `onMixClick` callback function\n * var mixer = mixitup(containerEl, {\n * callbacks: {\n * onMixClick: function(state, originalEvent) {\n * console.log('The control \"' + this.innerText + '\" was clicked');\n * }\n * }\n * });\n *\n * @example Example 2: Using `onMixClick` to manipulate the original click event\n * var mixer = mixitup(containerEl, {\n * callbacks: {\n * onMixClick: function(state, originalEvent) {\n * // Prevent original click event from bubbling up:\n * originalEvent.stopPropagation();\n *\n * // Prevent default behavior of clicked element:\n * originalEvent.preventDefault();\n * }\n * }\n * });\n *\n * @example Example 3: Using `onMixClick` to conditionally cancel operations\n * var mixer = mixitup(containerEl, {\n * callbacks: {\n * onMixClick: function(state, originalEvent) {\n * // Perform some conditional check:\n *\n * if (myApp.isLoading) {\n * // By returning false, we can prevent the control click from triggering an operation.\n *\n * return false;\n * }\n * }\n * }\n * });\n *\n * @name onMixClick\n * @memberof mixitup.Config.callbacks\n * @instance\n * @type {function}\n * @default null\n */\n\n this.onMixClick = null;\n\n this.callActions('afterConstruct');\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.ConfigCallbacks);\n\n mixitup.ConfigCallbacks.prototype = Object.create(mixitup.Base.prototype);\n\n mixitup.ConfigCallbacks.prototype.constructor = mixitup.ConfigCallbacks;\n\n /**\n * A group of properties relating to clickable control elements.\n *\n * @constructor\n * @memberof mixitup.Config\n * @name controls\n * @namespace\n * @public\n * @since 2.0.0\n */\n\n mixitup.ConfigControls = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n /**\n * A boolean dictating whether or not controls should be enabled for the mixer instance.\n *\n * If `true` (default behavior), MixItUp will search the DOM for any clickable elements with\n * `data-filter`, `data-sort` or `data-toggle` attributes, and bind them for click events.\n *\n * If `false`, no click handlers will be bound, and all functionality must therefore be performed\n * via the mixer's API methods.\n *\n * If you do not intend to use the default controls, setting this property to `false` will\n * marginally improve the startup time of your mixer instance, and will also prevent any other active\n * mixer instances in the DOM which are bound to controls from controlling the instance.\n *\n * @example Example: Disabling controls\n * var mixer = mixitup(containerEl, {\n * controls: {\n * enable: false\n * }\n * });\n *\n * // With the default controls disabled, we can only control\n * // the mixer via its API methods, e.g.:\n *\n * mixer.filter('.cat-1');\n *\n * @name enable\n * @memberof mixitup.Config.controls\n * @instance\n * @type {boolean}\n * @default true\n */\n\n this.enable = true;\n\n /**\n * A boolean dictating whether or not to use event delegation when binding click events\n * to the default controls.\n *\n * If `false` (default behavior), each control button in the DOM will be found and\n * individually bound when a mixer is instantiated, with their corresponding actions\n * cached for performance.\n *\n * If `true`, a single click handler will be applied to the `window` (or container element - see\n * `config.controls.scope`), and any click events triggered by elements with `data-filter`,\n * `data-sort` or `data-toggle` attributes present will be handled as they propagate upwards.\n *\n * If you require a user interface where control buttons may be added, removed, or changed during the\n * lifetime of a mixer, `controls.live` should be set to `true`. There is a marginal but unavoidable\n * performance deficit when using live controls, as the value of each control button must be read\n * from the DOM in real time once the click event has propagated.\n *\n * @example Example: Setting live controls\n * var mixer = mixitup(containerEl, {\n * controls: {\n * live: true\n * }\n * });\n *\n * // Control buttons can now be added, remove and changed without breaking\n * // the mixer's UI\n *\n * @name live\n * @memberof mixitup.Config.controls\n * @instance\n * @type {boolean}\n * @default true\n */\n\n this.live = false;\n\n /**\n * A string dictating the \"scope\" to use when binding or querying the default controls. The available\n * values are `'global'` or `'local'`.\n *\n * When set to `'global'` (default behavior), MixItUp will query the entire document for control buttons\n * to bind, or delegate click events from (see `config.controls.live`).\n *\n * When set to `'local'`, MixItUp will only query (or bind click events to) its own container element.\n * This may be desireable if you require multiple active mixer instances within the same document, with\n * controls that would otherwise intefere with each other if scoped globally.\n *\n * Conversely, if you wish to control multiple instances with a single UI, you would create one\n * set of controls and keep the controls scope of each mixer set to `global`.\n *\n * @example Example: Setting 'local' scoped controls\n * var mixerOne = mixitup(containerOne, {\n * controls: {\n * scope: 'local'\n * }\n * });\n *\n * var mixerTwo = mixitup(containerTwo, {\n * controls: {\n * scope: 'local'\n * }\n * });\n *\n * // Both mixers can now exist within the same document with\n * // isolated controls placed within their container elements.\n *\n * @name scope\n * @memberof mixitup.Config.controls\n * @instance\n * @type {string}\n * @default 'global'\n */\n\n this.scope = 'global'; // enum: ['local' ,'global']\n\n /**\n * A string dictating the type of logic to apply when concatenating the filter selectors of\n * active toggle buttons (i.e. any clickable element with a `data-toggle` attribute).\n *\n * If set to `'or'` (default behavior), selectors will be concatenated together as\n * a comma-seperated list. For example:\n *\n * `'.cat-1, .cat-2'` (shows any elements matching `'.cat-1'` OR `'.cat-2'`)\n *\n * If set to `'and'`, selectors will be directly concatenated together. For example:\n *\n * `'.cat-1.cat-2'` (shows any elements which match both `'.cat-1'` AND `'.cat-2'`)\n *\n * @example Example: Setting \"and\" toggle logic\n * var mixer = mixitup(containerEl, {\n * controls: {\n * toggleLogic: 'and'\n * }\n * });\n *\n * @name toggleLogic\n * @memberof mixitup.Config.controls\n * @instance\n * @type {string}\n * @default 'or'\n */\n\n this.toggleLogic = 'or'; // enum: ['or', 'and']\n\n /**\n * A string dictating the filter behavior when all toggles are inactive.\n *\n * When set to `'all'` (default behavior), *all* targets will be shown by default\n * when no toggles are active, or at the moment all active toggles are toggled off.\n *\n * When set to `'none'`, no targets will be shown by default when no toggles are\n * active, or at the moment all active toggles are toggled off.\n *\n * @example Example 1: Setting the default toggle behavior to `'all'`\n * var mixer = mixitup(containerEl, {\n * controls: {\n * toggleDefault: 'all'\n * }\n * });\n *\n * mixer.toggleOn('.cat-2')\n * .then(function() {\n * // Deactivate all active toggles\n *\n * return mixer.toggleOff('.cat-2')\n * })\n * .then(function(state) {\n * console.log(state.activeFilter.selector); // 'all'\n * console.log(state.totalShow); // 12\n * });\n *\n * @example Example 2: Setting the default toggle behavior to `'none'`\n * var mixer = mixitup(containerEl, {\n * controls: {\n * toggleDefault: 'none'\n * }\n * });\n *\n * mixer.toggleOn('.cat-2')\n * .then(function() {\n * // Deactivate all active toggles\n *\n * return mixer.toggleOff('.cat-2')\n * })\n * .then(function(state) {\n * console.log(state.activeFilter.selector); // 'none'\n * console.log(state.totalShow); // 0\n * });\n *\n * @name toggleDefault\n * @memberof mixitup.Config.controls\n * @instance\n * @type {string}\n * @default 'all'\n */\n\n this.toggleDefault = 'all'; // enum: ['all', 'none']\n\n this.callActions('afterConstruct');\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.ConfigControls);\n\n mixitup.ConfigControls.prototype = Object.create(mixitup.Base.prototype);\n\n mixitup.ConfigControls.prototype.constructor = mixitup.ConfigControls;\n\n /**\n * A group of properties defining the output and structure of class names programmatically\n * added to controls and containers to reflect the state of the mixer.\n *\n * Most commonly, class names are added to controls by MixItUp to indicate that\n * the control is active so that it can be styled accordingly - `'mixitup-control-active'` by default.\n *\n * Using a \"BEM\" like structure, each classname is broken into the three parts:\n * a block namespace (`'mixitup'`), an element name (e.g. `'control'`), and an optional modifier\n * name (e.g. `'active'`) reflecting the state of the element.\n *\n * By default, each part of the classname is concatenated together using single hyphens as\n * delineators, but this can be easily customised to match the naming convention and style of\n * your project.\n *\n * @constructor\n * @memberof mixitup.Config\n * @name classNames\n * @namespace\n * @public\n * @since 3.0.0\n */\n\n mixitup.ConfigClassNames = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n /**\n * The \"block\" portion, or top-level namespace added to the start of any class names created by MixItUp.\n *\n * @example Example 1: changing the `config.classNames.block` value\n * var mixer = mixitup(containerEl, {\n * classNames: {\n * block: 'portfolio'\n * }\n * });\n *\n * // Active control output: \"portfolio-control-active\"\n *\n * @example Example 2: Removing `config.classNames.block`\n * var mixer = mixitup(containerEl, {\n * classNames: {\n * block: ''\n * }\n * });\n *\n * // Active control output: \"control-active\"\n *\n * @name block\n * @memberof mixitup.Config.classNames\n * @instance\n * @type {string}\n * @default 'mixitup'\n */\n\n this.block = 'mixitup';\n\n /**\n * The \"element\" portion of the class name added to container.\n *\n * @name elementContainer\n * @memberof mixitup.Config.classNames\n * @instance\n * @type {string}\n * @default 'container'\n */\n\n this.elementContainer = 'container';\n\n /**\n * The \"element\" portion of the class name added to filter controls.\n *\n * By default, all filter, sort, multimix and toggle controls take the same element value of `'control'`, but\n * each type's element value can be individually overwritten to match the unique classNames of your controls as needed.\n *\n * @example Example 1: changing the `config.classNames.elementFilter` value\n * var mixer = mixitup(containerEl, {\n * classNames: {\n * elementFilter: 'filter'\n * }\n * });\n *\n * // Active filter output: \"mixitup-filter-active\"\n *\n * @example Example 2: changing the `config.classNames.block` and `config.classNames.elementFilter` values\n * var mixer = mixitup(containerEl, {\n * classNames: {\n * block: 'portfolio',\n * elementFilter: 'filter'\n * }\n * });\n *\n * // Active filter output: \"portfolio-filter-active\"\n *\n * @name elementFilter\n * @memberof mixitup.Config.classNames\n * @instance\n * @type {string}\n * @default 'control'\n */\n\n this.elementFilter = 'control';\n\n /**\n * The \"element\" portion of the class name added to sort controls.\n *\n * By default, all filter, sort, multimix and toggle controls take the same element value of `'control'`, but\n * each type's element value can be individually overwritten to match the unique classNames of your controls as needed.\n *\n * @example Example 1: changing the `config.classNames.elementSort` value\n * var mixer = mixitup(containerEl, {\n * classNames: {\n * elementSort: 'sort'\n * }\n * });\n *\n * // Active sort output: \"mixitup-sort-active\"\n *\n * @example Example 2: changing the `config.classNames.block` and `config.classNames.elementSort` values\n * var mixer = mixitup(containerEl, {\n * classNames: {\n * block: 'portfolio',\n * elementSort: 'sort'\n * }\n * });\n *\n * // Active sort output: \"portfolio-sort-active\"\n *\n * @name elementSort\n * @memberof mixitup.Config.classNames\n * @instance\n * @type {string}\n * @default 'control'\n */\n\n this.elementSort = 'control';\n\n /**\n * The \"element\" portion of the class name added to multimix controls.\n *\n * By default, all filter, sort, multimix and toggle controls take the same element value of `'control'`, but\n * each type's element value can be individually overwritten to match the unique classNames of your controls as needed.\n *\n * @example Example 1: changing the `config.classNames.elementMultimix` value\n * var mixer = mixitup(containerEl, {\n * classNames: {\n * elementMultimix: 'multimix'\n * }\n * });\n *\n * // Active multimix output: \"mixitup-multimix-active\"\n *\n * @example Example 2: changing the `config.classNames.block` and `config.classNames.elementMultimix` values\n * var mixer = mixitup(containerEl, {\n * classNames: {\n * block: 'portfolio',\n * elementSort: 'multimix'\n * }\n * });\n *\n * // Active multimix output: \"portfolio-multimix-active\"\n *\n * @name elementMultimix\n * @memberof mixitup.Config.classNames\n * @instance\n * @type {string}\n * @default 'control'\n */\n\n this.elementMultimix = 'control';\n\n /**\n * The \"element\" portion of the class name added to toggle controls.\n *\n * By default, all filter, sort, multimix and toggle controls take the same element value of `'control'`, but\n * each type's element value can be individually overwritten to match the unique classNames of your controls as needed.\n *\n * @example Example 1: changing the `config.classNames.elementToggle` value\n * var mixer = mixitup(containerEl, {\n * classNames: {\n * elementToggle: 'toggle'\n * }\n * });\n *\n * // Active toggle output: \"mixitup-toggle-active\"\n *\n * @example Example 2: changing the `config.classNames.block` and `config.classNames.elementToggle` values\n * var mixer = mixitup(containerEl, {\n * classNames: {\n * block: 'portfolio',\n * elementToggle: 'toggle'\n * }\n * });\n *\n * // Active toggle output: \"portfolio-toggle-active\"\n *\n * @name elementToggle\n * @memberof mixitup.Config.classNames\n * @instance\n * @type {string}\n * @default 'control'\n */\n\n this.elementToggle = 'control';\n\n /**\n * The \"modifier\" portion of the class name added to active controls.\n * @name modifierActive\n * @memberof mixitup.Config.classNames\n * @instance\n * @type {string}\n * @default 'active'\n */\n\n this.modifierActive = 'active';\n\n /**\n * The \"modifier\" portion of the class name added to disabled controls.\n *\n * @name modifierDisabled\n * @memberof mixitup.Config.classNames\n * @instance\n * @type {string}\n * @default 'disabled'\n */\n\n this.modifierDisabled = 'disabled';\n\n /**\n * The \"modifier\" portion of the class name added to the container when in a \"failed\" state.\n *\n * @name modifierFailed\n * @memberof mixitup.Config.classNames\n * @instance\n * @type {string}\n * @default 'failed'\n */\n\n this.modifierFailed = 'failed';\n\n /**\n * The delineator used between the \"block\" and \"element\" portions of any class name added by MixItUp.\n *\n * If the block portion is ommited by setting it to an empty string, no delineator will be added.\n *\n * @example Example: changing the delineator to match BEM convention\n * var mixer = mixitup(containerEl, {\n * classNames: {\n * delineatorElement: '__'\n * }\n * });\n *\n * // example active control output: \"mixitup__control-active\"\n *\n * @name delineatorElement\n * @memberof mixitup.Config.classNames\n * @instance\n * @type {string}\n * @default '-'\n */\n\n this.delineatorElement = '-';\n\n /**\n * The delineator used between the \"element\" and \"modifier\" portions of any class name added by MixItUp.\n *\n * If the element portion is ommited by setting it to an empty string, no delineator will be added.\n *\n * @example Example: changing both delineators to match BEM convention\n * var mixer = mixitup(containerEl, {\n * classNames: {\n * delineatorElement: '__'\n * delineatorModifier: '--'\n * }\n * });\n *\n * // Active control output: \"mixitup__control--active\"\n *\n * @name delineatorModifier\n * @memberof mixitup.Config.classNames\n * @instance\n * @type {string}\n * @default '-'\n */\n\n this.delineatorModifier = '-';\n\n this.callActions('afterConstruct');\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.ConfigClassNames);\n\n mixitup.ConfigClassNames.prototype = Object.create(mixitup.Base.prototype);\n\n mixitup.ConfigClassNames.prototype.constructor = mixitup.ConfigClassNames;\n\n /**\n * A group of properties relating to MixItUp's dataset API.\n *\n * @constructor\n * @memberof mixitup.Config\n * @name data\n * @namespace\n * @public\n * @since 3.0.0\n */\n\n mixitup.ConfigData = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n /**\n * A string specifying the name of the key containing your data model's unique\n * identifier (UID). To use the dataset API, a UID key must be specified and\n * be present and unique on all objects in the dataset you provide to MixItUp.\n *\n * For example, if your dataset is made up of MongoDB documents, the UID\n * key would be `'id'` or `'_id'`.\n *\n * @example Example: Setting the UID to `'id'`\n * var mixer = mixitup(containerEl, {\n * data: {\n * uidKey: 'id'\n * }\n * });\n *\n * @name uidKey\n * @memberof mixitup.Config.data\n * @instance\n * @type {string}\n * @default ''\n */\n\n this.uidKey = '';\n\n /**\n * A boolean dictating whether or not MixItUp should \"dirty check\" each object in\n * your dataset for changes whenever `.dataset()` is called, and re-render any targets\n * for which a change is found.\n *\n * Depending on the complexity of your data model, dirty checking can be expensive\n * and is therefore disabled by default.\n *\n * NB: For changes to be detected, a new immutable instance of the edited model must be\n * provided to mixitup, rather than manipulating properties on the existing instance.\n * If your changes are a result of a DB write and read, you will most likely be calling\n * `.dataset()` with a clean set of objects each time, so this will not be an issue.\n *\n * @example Example: Enabling dirty checking\n *\n * var myDataset = [\n * {\n * id: 0,\n * title: \"Blog Post Title 0\"\n * ...\n * },\n * {\n * id: 1,\n * title: \"Blog Post Title 1\"\n * ...\n * }\n * ];\n *\n * // Instantiate a mixer with a pre-loaded dataset, and a target renderer\n * // function defined\n *\n * var mixer = mixitup(containerEl, {\n * data: {\n * uidKey: 'id',\n * dirtyCheck: true\n * },\n * load: {\n * dataset: myDataset\n * },\n * render: {\n * target: function() { ... }\n * }\n * });\n *\n * // For illustration, we will clone and edit the second object in the dataset.\n * // NB: this would typically be done server-side in response to a DB update,\n * and then re-queried via an API.\n *\n * myDataset[1] = Object.assign({}, myDataset[1]);\n *\n * myDataset[1].title = 'Blog Post Title 11';\n *\n * mixer.dataset(myDataset)\n * .then(function() {\n * // the target with ID \"1\", will be re-rendered reflecting its new title\n * });\n *\n * @name dirtyCheck\n * @memberof mixitup.Config.data\n * @instance\n * @type {boolean}\n * @default false\n */\n\n this.dirtyCheck = false;\n\n this.callActions('afterConstruct');\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.ConfigData);\n\n mixitup.ConfigData.prototype = Object.create(mixitup.Base.prototype);\n\n mixitup.ConfigData.prototype.constructor = mixitup.ConfigData;\n\n /**\n * A group of properties allowing the toggling of various debug features.\n *\n * @constructor\n * @memberof mixitup.Config\n * @name debug\n * @namespace\n * @public\n * @since 3.0.0\n */\n\n mixitup.ConfigDebug = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n /**\n * A boolean dictating whether or not the mixer instance returned by the\n * `mixitup()` factory function should expose private properties and methods.\n *\n * By default, mixer instances only expose their public API, but enabling\n * debug mode will give you access to various mixer internals which may aid\n * in debugging, or the authoring of extensions.\n *\n * @example Example: Enabling debug mode\n *\n * var mixer = mixitup(containerEl, {\n * debug: {\n * enable: true\n * }\n * });\n *\n * // Private properties and methods will now be visible on the mixer instance:\n *\n * console.log(mixer);\n *\n * @name enable\n * @memberof mixitup.Config.debug\n * @instance\n * @type {boolean}\n * @default false\n */\n\n this.enable = false;\n\n /**\n * A boolean dictating whether or not warnings should be shown when various\n * common gotchas occur.\n *\n * Warnings are intended to provide insights during development when something\n * occurs that is not a fatal, but may indicate an issue with your integration,\n * and are therefore turned on by default. However, you may wish to disable\n * them in production.\n *\n * @example Example 1: Disabling warnings\n *\n * var mixer = mixitup(containerEl, {\n * debug: {\n * showWarnings: false\n * }\n * });\n *\n * @example Example 2: Disabling warnings based on environment\n *\n * var showWarnings = myAppConfig.environment === 'development' ? true : false;\n *\n * var mixer = mixitup(containerEl, {\n * debug: {\n * showWarnings: showWarnings\n * }\n * });\n *\n * @name showWarnings\n * @memberof mixitup.Config.debug\n * @instance\n * @type {boolean}\n * @default true\n */\n\n this.showWarnings = true;\n\n /**\n * Used for server-side testing only.\n *\n * @private\n * @name fauxAsync\n * @memberof mixitup.Config.debug\n * @instance\n * @type {boolean}\n * @default false\n */\n\n this.fauxAsync = false;\n\n this.callActions('afterConstruct');\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.ConfigDebug);\n\n mixitup.ConfigDebug.prototype = Object.create(mixitup.Base.prototype);\n\n mixitup.ConfigDebug.prototype.constructor = mixitup.ConfigDebug;\n\n /**\n * A group of properties relating to the layout of the container.\n *\n * @constructor\n * @memberof mixitup.Config\n * @name layout\n * @namespace\n * @public\n * @since 3.0.0\n */\n\n mixitup.ConfigLayout = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n /**\n * A boolean dictating whether or not mixitup should query all descendants\n * of the container for targets, or only immediate children.\n *\n * By default, mixitup will query all descendants matching the\n * `selectors.target` selector when indexing targets upon instantiation.\n * This allows for targets to be nested inside a sub-container which is\n * useful when ring-fencing targets from locally scoped controls in your\n * markup (see `controls.scope`).\n *\n * However, if you are building a more complex UI requiring the nesting\n * of mixers within mixers, you will most likely want to limit targets to\n * immediate children of the container by setting this property to `false`.\n *\n * @example Example: Restricting targets to immediate children\n *\n * var mixer = mixitup(containerEl, {\n * layout: {\n * allowNestedTargets: false\n * }\n * });\n *\n * @name allowNestedTargets\n * @memberof mixitup.Config.layout\n * @instance\n * @type {boolean}\n * @default true\n */\n\n this.allowNestedTargets = true;\n\n /**\n * A string specifying an optional class name to apply to the container when in\n * its default state.\n *\n * By changing this class name or adding a class name to the container via the\n * `.changeLayout()` API method, the CSS layout of the container can be changed,\n * and MixItUp will attemp to gracefully animate the container and its targets\n * between states.\n *\n * @example Example 1: Specifying a container class name\n *\n * var mixer = mixitup(containerEl, {\n * layout: {\n * containerClassName: 'grid'\n * }\n * });\n *\n * @example Example 2: Changing the default class name with `.changeLayout()`\n *\n * var mixer = mixitup(containerEl, {\n * layout: {\n * containerClassName: 'grid'\n * }\n * });\n *\n * mixer.changeLayout('list')\n * .then(function(state) {\n * console.log(state.activeContainerClass); // \"list\"\n * });\n *\n * @name containerClassName\n * @memberof mixitup.Config.layout\n * @instance\n * @type {string}\n * @default ''\n */\n\n this.containerClassName = '';\n\n /**\n * A reference to a non-target sibling element after which to insert targets\n * when there are no targets in the container.\n *\n * @example Example: Setting a `siblingBefore` reference element\n *\n * var addButton = containerEl.querySelector('button');\n *\n * var mixer = mixitup(containerEl, {\n * layout: {\n * siblingBefore: addButton\n * }\n * });\n *\n * @name siblingBefore\n * @memberof mixitup.Config.layout\n * @instance\n * @type {HTMLElement}\n * @default null\n */\n\n this.siblingBefore = null;\n\n /**\n * A reference to a non-target sibling element before which to insert targets\n * when there are no targets in the container.\n *\n * @example Example: Setting an `siblingAfter` reference element\n *\n * var gap = containerEl.querySelector('.gap');\n *\n * var mixer = mixitup(containerEl, {\n * layout: {\n * siblingAfter: gap\n * }\n * });\n *\n * @name siblingAfter\n * @memberof mixitup.Config.layout\n * @instance\n * @type {HTMLElement}\n * @default null\n */\n\n this.siblingAfter = null;\n\n this.callActions('afterConstruct');\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.ConfigLayout);\n\n mixitup.ConfigLayout.prototype = Object.create(mixitup.Base.prototype);\n\n mixitup.ConfigLayout.prototype.constructor = mixitup.ConfigLayout;\n\n /**\n * A group of properties defining the initial state of the mixer on load (instantiation).\n *\n * @constructor\n * @memberof mixitup.Config\n * @name load\n * @namespace\n * @public\n * @since 2.0.0\n */\n\n mixitup.ConfigLoad = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n /**\n * A string defining any filtering to be statically applied to the mixer on load.\n * As per the `.filter()` API, this can be any valid selector string, or the\n * values `'all'` or `'none'`.\n *\n * @example Example 1: Defining an initial filter selector to be applied on load\n *\n * // The mixer will show only those targets matching '.category-a' on load.\n *\n * var mixer = mixitup(containerEl, {\n * load: {\n * filter: '.category-a'\n * }\n * });\n *\n * @example Example 2: Hiding all targets on load\n *\n * // The mixer will show hide all targets on load.\n *\n * var mixer = mixitup(containerEl, {\n * load: {\n * filter: 'none'\n * }\n * });\n *\n * @name filter\n * @memberof mixitup.Config.load\n * @instance\n * @type {string}\n * @default 'all'\n */\n\n this.filter = 'all';\n\n /**\n * A string defining any sorting to be statically applied to the mixer on load.\n * As per the `.sort()` API, this should be a valid \"sort string\" made up of\n * an attribute to sort by (or `'default'`) followed by an optional sorting\n * order, or the value `'random'`;\n *\n * @example Example: Defining sorting to be applied on load\n *\n * // The mixer will sort the container by the value of the `data-published-date`\n * // attribute, in descending order.\n *\n * var mixer = mixitup(containerEl, {\n * load: {\n * sort: 'published-date:desc'\n * }\n * });\n *\n * @name sort\n * @memberof mixitup.Config.load\n * @instance\n * @type {string}\n * @default 'default:asc'\n */\n\n this.sort = 'default:asc';\n\n /**\n * An array of objects representing the underlying data of any pre-rendered targets,\n * when using the `.dataset()` API.\n *\n * NB: If targets are pre-rendered when the mixer is instantiated, this must be set.\n *\n * @example Example: Defining the initial underyling dataset\n *\n * var myDataset = [\n * {\n * id: 0,\n * title: \"Blog Post Title 0\",\n * ...\n * },\n * {\n * id: 1,\n * title: \"Blog Post Title 1\",\n * ...\n * }\n * ];\n *\n * var mixer = mixitup(containerEl, {\n * data: {\n * uidKey: 'id'\n * },\n * load: {\n * dataset: myDataset\n * }\n * });\n *\n * @name dataset\n * @memberof mixitup.Config.load\n * @instance\n * @type {Array.}\n * @default null\n */\n\n this.dataset = null;\n\n this.callActions('afterConstruct');\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.ConfigLoad);\n\n mixitup.ConfigLoad.prototype = Object.create(mixitup.Base.prototype);\n\n mixitup.ConfigLoad.prototype.constructor = mixitup.ConfigLoad;\n\n /**\n * A group of properties defining the selectors used to query elements within a mixitup container.\n *\n * @constructor\n * @memberof mixitup.Config\n * @name selectors\n * @namespace\n * @public\n * @since 3.0.0\n */\n\n mixitup.ConfigSelectors = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n /**\n * A selector string used to query and index target elements within the container.\n *\n * By default, the class selector `'.mix'` is used, but this can be changed to an\n * attribute or element selector to match the style of your project.\n *\n * @example Example 1: Changing the target selector\n *\n * var mixer = mixitup(containerEl, {\n * selectors: {\n * target: '.portfolio-item'\n * }\n * });\n *\n * @example Example 2: Using an attribute selector as a target selector\n *\n * // The mixer will search for any children with the attribute `data-ref=\"mix\"`\n *\n * var mixer = mixitup(containerEl, {\n * selectors: {\n * target: '[data-ref=\"mix\"]'\n * }\n * });\n *\n * @name target\n * @memberof mixitup.Config.selectors\n * @instance\n * @type {string}\n * @default '.mix'\n */\n\n this.target = '.mix';\n\n /**\n * A optional selector string used to add further specificity to the querying of control elements,\n * in addition to their mandatory data attribute (e.g. `data-filter`, `data-toggle`, `data-sort`).\n *\n * This can be used if other elements in your document must contain the above attributes\n * (e.g. for use in third-party scripts), and would otherwise interfere with MixItUp. Adding\n * an additional `control` selector of your choice allows MixItUp to restrict event handling\n * to only those elements matching the defined selector.\n *\n * @name control\n * @memberof mixitup.Config.selectors\n * @instance\n * @type {string}\n * @default ''\n *\n * @example Example 1: Adding a `selectors.control` selector\n *\n * var mixer = mixitup(containerEl, {\n * selectors: {\n * control: '.mixitup-control'\n * }\n * });\n *\n * // Will not be handled:\n * // \n *\n * // Will be handled:\n * // \n */\n\n this.control = '';\n\n this.callActions('afterConstruct');\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.ConfigSelectors);\n\n mixitup.ConfigSelectors.prototype = Object.create(mixitup.Base.prototype);\n\n mixitup.ConfigSelectors.prototype.constructor = mixitup.ConfigSelectors;\n\n /**\n * A group of optional render functions for creating and updating elements.\n *\n * All render functions receive a data object, and should return a valid HTML string.\n *\n * @constructor\n * @memberof mixitup.Config\n * @name render\n * @namespace\n * @public\n * @since 3.0.0\n */\n\n mixitup.ConfigRender = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n /**\n * A function returning an HTML string representing a target element, or a reference to a\n * single DOM element.\n *\n * The function is invoked as part of the `.dataset()` API, whenever a new item is added\n * to the dataset, or an item in the dataset changes (if `dataset.dirtyCheck` is enabled).\n *\n * The function receives the relevant dataset item as its first parameter.\n *\n * @example Example 1: Using string concatenation\n *\n * var mixer = mixitup(containerEl, {\n * render: {\n * target: function(item) {\n * return (\n * '<div class=\"mix\">' +\n * '<h2>' + item.title + '</h2>' +\n * '</div>'\n * );\n * }\n * }\n * });\n *\n * @example Example 2: Using an ES2015 template literal\n *\n * var mixer = mixitup(containerEl, {\n * render: {\n * target: function(item) {\n * return (\n * `<div class=\"mix\">\n * <h2>${item.title}</h2>\n * </div>`\n * );\n * }\n * }\n * });\n *\n * @example Example 3: Using a Handlebars template\n *\n * var targetTemplate = Handlebars.compile('<div class=\"mix\"><h2>{{title}}</h2></div>');\n *\n * var mixer = mixitup(containerEl, {\n * render: {\n * target: targetTemplate\n * }\n * });\n *\n * @example Example 4: Returning a DOM element\n *\n * var mixer = mixitup(containerEl, {\n * render: {\n * target: function(item) {\n * // Create a single element using your framework's built-in renderer\n *\n * var el = ...\n *\n * return el;\n * }\n * }\n * });\n *\n * @name target\n * @memberof mixitup.Config.render\n * @instance\n * @type {function}\n * @default 'null'\n */\n\n this.target = null;\n\n this.callActions('afterConstruct');\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.ConfigRender);\n\n mixitup.ConfigRender.prototype = Object.create(mixitup.Base.prototype);\n\n mixitup.ConfigRender.prototype.constructor = mixitup.ConfigRender;\n\n /**\n * @constructor\n * @memberof mixitup\n * @private\n * @since 3.0.0\n */\n\n mixitup.ConfigTemplates = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n this.callActions('afterConstruct');\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.ConfigTemplates);\n\n mixitup.ConfigTemplates.prototype = Object.create(mixitup.Base.prototype);\n\n mixitup.ConfigTemplates.prototype.constructor = mixitup.ConfigTemplates;\n\n /**\n * `mixitup.Config` is an interface used for customising the functionality of a\n * mixer instance. It is organised into several semantically distinct sub-objects,\n * each one pertaining to a particular aspect of MixItUp functionality.\n *\n * An object literal containing any or all of the available properies,\n * known as the \"configuration object\", can be passed as the second parameter to\n * the `mixitup` factory function when creating a mixer instance to customise its\n * functionality as needed.\n *\n * If no configuration object is passed, the mixer instance will take on the default\n * configuration values detailed below.\n *\n * @example Example 1: Creating and passing the configuration object\n * // Create a configuration object with desired values\n *\n * var config = {\n * animation: {\n * enable: false\n * },\n * selectors: {\n * target: '.item'\n * }\n * };\n *\n * // Pass the configuration object to the mixitup factory function\n *\n * var mixer = mixitup(containerEl, config);\n *\n * @example Example 2: Passing the configuration object inline\n * // Typically, the configuration object is passed inline for brevity.\n *\n * var mixer = mixitup(containerEl, {\n * controls: {\n * live: true,\n * toggleLogic: 'and'\n * }\n * });\n *\n *\n * @constructor\n * @memberof mixitup\n * @namespace\n * @public\n * @since 2.0.0\n */\n\n mixitup.Config = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n this.animation = new mixitup.ConfigAnimation();\n this.behavior = new mixitup.ConfigBehavior();\n this.callbacks = new mixitup.ConfigCallbacks();\n this.controls = new mixitup.ConfigControls();\n this.classNames = new mixitup.ConfigClassNames();\n this.data = new mixitup.ConfigData();\n this.debug = new mixitup.ConfigDebug();\n this.layout = new mixitup.ConfigLayout();\n this.load = new mixitup.ConfigLoad();\n this.selectors = new mixitup.ConfigSelectors();\n this.render = new mixitup.ConfigRender();\n this.templates = new mixitup.ConfigTemplates();\n\n this.callActions('afterConstruct');\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.Config);\n\n mixitup.Config.prototype = Object.create(mixitup.Base.prototype);\n\n mixitup.Config.prototype.constructor = mixitup.Config;\n\n /**\n * @constructor\n * @memberof mixitup\n * @private\n * @since 3.0.0\n */\n\n mixitup.MixerDom = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n this.document = null;\n this.body = null;\n this.container = null;\n this.parent = null;\n this.targets = [];\n\n this.callActions('afterConstruct');\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.MixerDom);\n\n mixitup.MixerDom.prototype = Object.create(mixitup.Base.prototype);\n\n mixitup.MixerDom.prototype.constructor = mixitup.MixerDom;\n\n /**\n * @constructor\n * @memberof mixitup\n * @private\n * @since 3.0.0\n */\n\n mixitup.UiClassNames = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n this.base = '';\n this.active = '';\n this.disabled = '';\n\n this.callActions('afterConstruct');\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.UiClassNames);\n\n mixitup.UiClassNames.prototype = Object.create(mixitup.Base.prototype);\n\n mixitup.UiClassNames.prototype.constructor = mixitup.UiClassNames;\n\n /**\n * An object into which all arbitrary arguments sent to '.dataset()' are mapped.\n *\n * @constructor\n * @memberof mixitup\n * @private\n * @since 3.0.0\n */\n\n mixitup.CommandDataset = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n this.dataset = null;\n\n this.callActions('afterConstruct');\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.CommandDataset);\n\n mixitup.CommandDataset.prototype = Object.create(mixitup.Base.prototype);\n\n mixitup.CommandDataset.prototype.constructor = mixitup.CommandDataset;\n\n /**\n * An object into which all arbitrary arguments sent to '.multimix()' are mapped.\n *\n * @constructor\n * @memberof mixitup\n * @private\n * @since 3.0.0\n */\n\n mixitup.CommandMultimix = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n this.filter = null;\n this.sort = null;\n this.insert = null;\n this.remove = null;\n this.changeLayout = null;\n\n this.callActions('afterConstruct');\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.CommandMultimix);\n\n mixitup.CommandMultimix.prototype = Object.create(mixitup.Base.prototype);\n\n mixitup.CommandMultimix.prototype.constructor = mixitup.CommandMultimix;\n\n /**\n * An object into which all arbitrary arguments sent to '.filter()' are mapped.\n *\n * @constructor\n * @memberof mixitup\n * @private\n * @since 3.0.0\n */\n\n mixitup.CommandFilter = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n this.selector = '';\n this.collection = null;\n this.action = 'show'; // enum: ['show', 'hide']\n\n this.callActions('afterConstruct');\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.CommandFilter);\n\n mixitup.CommandFilter.prototype = Object.create(mixitup.Base.prototype);\n\n mixitup.CommandFilter.prototype.constructor = mixitup.CommandFilter;\n\n /**\n * An object into which all arbitrary arguments sent to '.sort()' are mapped.\n *\n * @constructor\n * @memberof mixitup\n * @private\n * @since 3.0.0\n */\n\n mixitup.CommandSort = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n this.sortString = '';\n this.attribute = '';\n this.order = 'asc';\n this.collection = null;\n this.next = null;\n\n this.callActions('afterConstruct');\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.CommandSort);\n\n mixitup.CommandSort.prototype = Object.create(mixitup.Base.prototype);\n\n mixitup.CommandSort.prototype.constructor = mixitup.CommandSort;\n\n /**\n * An object into which all arbitrary arguments sent to '.insert()' are mapped.\n *\n * @constructor\n * @memberof mixitup\n * @private\n * @since 3.0.0\n */\n\n mixitup.CommandInsert = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n this.index = 0;\n this.collection = [];\n this.position = 'before'; // enum: ['before', 'after']\n this.sibling = null;\n\n this.callActions('afterConstruct');\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.CommandInsert);\n\n mixitup.CommandInsert.prototype = Object.create(mixitup.Base.prototype);\n\n mixitup.CommandInsert.prototype.constructor = mixitup.CommandInsert;\n\n /**\n * An object into which all arbitrary arguments sent to '.remove()' are mapped.\n *\n * @constructor\n * @memberof mixitup\n * @private\n * @since 3.0.0\n */\n\n mixitup.CommandRemove = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n this.targets = [];\n this.collection = [];\n\n this.callActions('afterConstruct');\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.CommandRemove);\n\n mixitup.CommandRemove.prototype = Object.create(mixitup.Base.prototype);\n\n mixitup.CommandRemove.prototype.constructor = mixitup.CommandRemove;\n\n /**\n * An object into which all arbitrary arguments sent to '.changeLayout()' are mapped.\n *\n * @constructor\n * @memberof mixitup\n * @private\n * @since 3.0.0\n */\n\n mixitup.CommandChangeLayout = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n this.containerClassName = '';\n\n this.callActions('afterConstruct');\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.CommandChangeLayout);\n\n mixitup.CommandChangeLayout.prototype = Object.create(mixitup.Base.prototype);\n\n mixitup.CommandChangeLayout.prototype.constructor = mixitup.CommandChangeLayout;\n\n /**\n * @constructor\n * @memberof mixitup\n * @private\n * @since 3.0.0\n * @param {string} type\n * @param {string} selector\n * @param {boolean} [live]\n * @param {string} [parent]\n * An optional string representing the name of the mixer.dom property containing a reference to a parent element.\n */\n\n mixitup.ControlDefinition = function(type, selector, live, parent) {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n this.type = type;\n this.selector = selector;\n this.live = live || false;\n this.parent = parent || '';\n\n this.callActions('afterConstruct');\n\n h.freeze(this);\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.ControlDefinition);\n\n mixitup.ControlDefinition.prototype = Object.create(mixitup.Base.prototype);\n\n mixitup.ControlDefinition.prototype.constructor = mixitup.ControlDefinition;\n\n mixitup.controlDefinitions = [];\n\n mixitup.controlDefinitions.push(new mixitup.ControlDefinition('multimix', '[data-filter][data-sort]'));\n mixitup.controlDefinitions.push(new mixitup.ControlDefinition('filter', '[data-filter]'));\n mixitup.controlDefinitions.push(new mixitup.ControlDefinition('sort', '[data-sort]'));\n mixitup.controlDefinitions.push(new mixitup.ControlDefinition('toggle', '[data-toggle]'));\n\n /**\n * @constructor\n * @memberof mixitup\n * @private\n * @since 3.0.0\n */\n\n mixitup.Control = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n this.el = null;\n this.selector = '';\n this.bound = [];\n this.pending = -1;\n this.type = '';\n this.status = 'inactive'; // enum: ['inactive', 'active', 'disabled', 'live']\n this.filter = '';\n this.sort = '';\n this.canDisable = false;\n this.handler = null;\n this.classNames = new mixitup.UiClassNames();\n\n this.callActions('afterConstruct');\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.Control);\n\n mixitup.Control.prototype = Object.create(mixitup.Base.prototype);\n\n h.extend(mixitup.Control.prototype,\n /** @lends mixitup.Control */\n {\n constructor: mixitup.Control,\n\n /**\n * @private\n * @param {HTMLElement} el\n * @param {string} type\n * @param {string} selector\n */\n\n init: function(el, type, selector) {\n var self = this;\n\n this.callActions('beforeInit', arguments);\n\n self.el = el;\n self.type = type;\n self.selector = selector;\n\n if (self.selector) {\n self.status = 'live';\n } else {\n self.canDisable = typeof self.el.disable === 'boolean';\n\n switch (self.type) {\n case 'filter':\n self.filter = self.el.getAttribute('data-filter');\n\n break;\n case 'toggle':\n self.filter = self.el.getAttribute('data-toggle');\n\n break;\n case 'sort':\n self.sort = self.el.getAttribute('data-sort');\n\n break;\n case 'multimix':\n self.filter = self.el.getAttribute('data-filter');\n self.sort = self.el.getAttribute('data-sort');\n\n break;\n }\n }\n\n self.bindClick();\n\n mixitup.controls.push(self);\n\n this.callActions('afterInit', arguments);\n },\n\n /**\n * @private\n * @param {mixitup.Mixer} mixer\n * @return {boolean}\n */\n\n isBound: function(mixer) {\n var self = this,\n isBound = false;\n\n this.callActions('beforeIsBound', arguments);\n\n isBound = self.bound.indexOf(mixer) > -1;\n\n return self.callFilters('afterIsBound', isBound, arguments);\n },\n\n /**\n * @private\n * @param {mixitup.Mixer} mixer\n * @return {void}\n */\n\n addBinding: function(mixer) {\n var self = this;\n\n this.callActions('beforeAddBinding', arguments);\n\n if (!self.isBound()) {\n self.bound.push(mixer);\n }\n\n this.callActions('afterAddBinding', arguments);\n },\n\n /**\n * @private\n * @param {mixitup.Mixer} mixer\n * @return {void}\n */\n\n removeBinding: function(mixer) {\n var self = this,\n removeIndex = -1;\n\n this.callActions('beforeRemoveBinding', arguments);\n\n if ((removeIndex = self.bound.indexOf(mixer)) > -1) {\n self.bound.splice(removeIndex, 1);\n }\n\n if (self.bound.length < 1) {\n // No bindings exist, unbind event click handlers\n\n self.unbindClick();\n\n // Remove from `mixitup.controls` list\n\n removeIndex = mixitup.controls.indexOf(self);\n\n mixitup.controls.splice(removeIndex, 1);\n\n if (self.status === 'active') {\n self.renderStatus(self.el, 'inactive');\n }\n }\n\n this.callActions('afterRemoveBinding', arguments);\n },\n\n /**\n * @private\n * @return {void}\n */\n\n bindClick: function() {\n var self = this;\n\n this.callActions('beforeBindClick', arguments);\n\n self.handler = function(e) {\n self.handleClick(e);\n };\n\n h.on(self.el, 'click', self.handler);\n\n this.callActions('afterBindClick', arguments);\n },\n\n /**\n * @private\n * @return {void}\n */\n\n unbindClick: function() {\n var self = this;\n\n this.callActions('beforeUnbindClick', arguments);\n\n h.off(self.el, 'click', self.handler);\n\n self.handler = null;\n\n this.callActions('afterUnbindClick', arguments);\n },\n\n /**\n * @private\n * @param {MouseEvent} e\n * @return {void}\n */\n\n handleClick: function(e) {\n var self = this,\n button = null,\n mixer = null,\n isActive = false,\n returnValue = void(0),\n command = {},\n clone = null,\n commands = [],\n i = -1;\n\n this.callActions('beforeHandleClick', arguments);\n\n this.pending = 0;\n\n mixer = self.bound[0];\n\n if (!self.selector) {\n button = self.el;\n } else {\n button = h.closestParent(e.target, mixer.config.selectors.control + self.selector, true, mixer.dom.document);\n }\n\n if (!button) {\n self.callActions('afterHandleClick', arguments);\n\n return;\n }\n\n switch (self.type) {\n case 'filter':\n command.filter = self.filter || button.getAttribute('data-filter');\n\n break;\n case 'sort':\n command.sort = self.sort || button.getAttribute('data-sort');\n\n break;\n case 'multimix':\n command.filter = self.filter || button.getAttribute('data-filter');\n command.sort = self.sort || button.getAttribute('data-sort');\n\n break;\n case 'toggle':\n command.filter = self.filter || button.getAttribute('data-toggle');\n\n if (self.status === 'live') {\n isActive = h.hasClass(button, self.classNames.active);\n } else {\n isActive = self.status === 'active';\n }\n\n break;\n }\n\n for (i = 0; i < self.bound.length; i++) {\n // Create a clone of the command for each bound mixer instance\n\n clone = new mixitup.CommandMultimix();\n\n h.extend(clone, command);\n\n commands.push(clone);\n }\n\n commands = self.callFilters('commandsHandleClick', commands, arguments);\n\n self.pending = self.bound.length;\n\n for (i = 0; mixer = self.bound[i]; i++) {\n command = commands[i];\n\n if (!command) {\n // An extension may set a command null to indicate that the click should not be handled\n\n continue;\n }\n\n if (!mixer.lastClicked) {\n mixer.lastClicked = button;\n }\n\n mixitup.events.fire('mixClick', mixer.dom.container, {\n state: mixer.state,\n instance: mixer,\n originalEvent: e,\n control: mixer.lastClicked\n }, mixer.dom.document);\n\n if (typeof mixer.config.callbacks.onMixClick === 'function') {\n returnValue = mixer.config.callbacks.onMixClick.call(mixer.lastClicked, mixer.state, e, mixer);\n\n if (returnValue === false) {\n // User has returned `false` from the callback, so do not handle click\n\n continue;\n }\n }\n\n if (self.type === 'toggle') {\n isActive ? mixer.toggleOff(command.filter) : mixer.toggleOn(command.filter);\n } else {\n mixer.multimix(command);\n }\n }\n\n this.callActions('afterHandleClick', arguments);\n },\n\n /**\n * @param {object} command\n * @param {Array} toggleArray\n * @return {void}\n */\n\n update: function(command, toggleArray) {\n var self = this,\n actions = new mixitup.CommandMultimix();\n\n self.callActions('beforeUpdate', arguments);\n\n self.pending--;\n\n self.pending = Math.max(0, self.pending);\n\n if (self.pending > 0) return;\n\n if (self.status === 'live') {\n // Live control (status unknown)\n\n self.updateLive(command, toggleArray);\n } else {\n // Static control\n\n actions.sort = self.sort;\n actions.filter = self.filter;\n\n self.callFilters('actionsUpdate', actions, arguments);\n\n self.parseStatusChange(self.el, command, actions, toggleArray);\n }\n\n self.callActions('afterUpdate', arguments);\n },\n\n /**\n * @param {mixitup.CommandMultimix} command\n * @param {Array} toggleArray\n * @return {void}\n */\n\n updateLive: function(command, toggleArray) {\n var self = this,\n controlButtons = null,\n actions = null,\n button = null,\n i = -1;\n\n self.callActions('beforeUpdateLive', arguments);\n\n if (!self.el) return;\n\n controlButtons = self.el.querySelectorAll(self.selector);\n\n for (i = 0; button = controlButtons[i]; i++) {\n actions = new mixitup.CommandMultimix();\n\n switch (self.type) {\n case 'filter':\n actions.filter = button.getAttribute('data-filter');\n\n break;\n case 'sort':\n actions.sort = button.getAttribute('data-sort');\n\n break;\n case 'multimix':\n actions.filter = button.getAttribute('data-filter');\n actions.sort = button.getAttribute('data-sort');\n\n break;\n case 'toggle':\n actions.filter = button.getAttribute('data-toggle');\n\n break;\n }\n\n actions = self.callFilters('actionsUpdateLive', actions, arguments);\n\n self.parseStatusChange(button, command, actions, toggleArray);\n }\n\n self.callActions('afterUpdateLive', arguments);\n },\n\n /**\n * @param {HTMLElement} button\n * @param {mixitup.CommandMultimix} command\n * @param {mixitup.CommandMultimix} actions\n * @param {Array} toggleArray\n * @return {void}\n */\n\n parseStatusChange: function(button, command, actions, toggleArray) {\n var self = this,\n alias = '',\n toggle = '',\n i = -1;\n\n self.callActions('beforeParseStatusChange', arguments);\n\n switch (self.type) {\n case 'filter':\n if (command.filter === actions.filter) {\n self.renderStatus(button, 'active');\n } else {\n self.renderStatus(button, 'inactive');\n }\n\n break;\n case 'multimix':\n if (command.sort === actions.sort && command.filter === actions.filter) {\n self.renderStatus(button, 'active');\n } else {\n self.renderStatus(button, 'inactive');\n }\n\n break;\n case 'sort':\n if (command.sort.match(/:asc/g)) {\n alias = command.sort.replace(/:asc/g, '');\n }\n\n if (command.sort === actions.sort || alias === actions.sort) {\n self.renderStatus(button, 'active');\n } else {\n self.renderStatus(button, 'inactive');\n }\n\n break;\n case 'toggle':\n if (toggleArray.length < 1) self.renderStatus(button, 'inactive');\n\n if (command.filter === actions.filter) {\n self.renderStatus(button, 'active');\n }\n\n for (i = 0; i < toggleArray.length; i++) {\n toggle = toggleArray[i];\n\n if (toggle === actions.filter) {\n // Button matches one active toggle\n\n self.renderStatus(button, 'active');\n\n break;\n }\n\n self.renderStatus(button, 'inactive');\n }\n\n break;\n }\n\n self.callActions('afterParseStatusChange', arguments);\n },\n\n /**\n * @param {HTMLElement} button\n * @param {string} status\n * @return {void}\n */\n\n renderStatus: function(button, status) {\n var self = this;\n\n self.callActions('beforeRenderStatus', arguments);\n\n switch (status) {\n case 'active':\n h.addClass(button, self.classNames.active);\n h.removeClass(button, self.classNames.disabled);\n\n if (self.canDisable) self.el.disabled = false;\n\n break;\n case 'inactive':\n h.removeClass(button, self.classNames.active);\n h.removeClass(button, self.classNames.disabled);\n\n if (self.canDisable) self.el.disabled = false;\n\n break;\n case 'disabled':\n if (self.canDisable) self.el.disabled = true;\n\n h.addClass(button, self.classNames.disabled);\n h.removeClass(button, self.classNames.active);\n\n break;\n }\n\n if (self.status !== 'live') {\n // Update the control's status propery if not live\n\n self.status = status;\n }\n\n self.callActions('afterRenderStatus', arguments);\n }\n });\n\n mixitup.controls = [];\n\n /**\n * @constructor\n * @memberof mixitup\n * @private\n * @since 3.0.0\n */\n\n mixitup.StyleData = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n this.x = 0;\n this.y = 0;\n this.top = 0;\n this.right = 0;\n this.bottom = 0;\n this.left = 0;\n this.width = 0;\n this.height = 0;\n this.marginRight = 0;\n this.marginBottom = 0;\n this.opacity = 0;\n this.scale = new mixitup.TransformData();\n this.translateX = new mixitup.TransformData();\n this.translateY = new mixitup.TransformData();\n this.translateZ = new mixitup.TransformData();\n this.rotateX = new mixitup.TransformData();\n this.rotateY = new mixitup.TransformData();\n this.rotateZ = new mixitup.TransformData();\n\n this.callActions('afterConstruct');\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.StyleData);\n\n mixitup.StyleData.prototype = Object.create(mixitup.Base.prototype);\n\n mixitup.StyleData.prototype.constructor = mixitup.StyleData;\n\n /**\n * @constructor\n * @memberof mixitup\n * @private\n * @since 3.0.0\n */\n\n mixitup.TransformData = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n this.value = 0;\n this.unit = '';\n\n this.callActions('afterConstruct');\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.TransformData);\n\n mixitup.TransformData.prototype = Object.create(mixitup.Base.prototype);\n\n mixitup.TransformData.prototype.constructor = mixitup.TransformData;\n\n /**\n * @constructor\n * @memberof mixitup\n * @private\n * @since 3.0.0\n */\n\n mixitup.TransformDefaults = function() {\n mixitup.StyleData.apply(this);\n\n this.callActions('beforeConstruct');\n\n this.scale.value = 0.01;\n this.scale.unit = '';\n\n this.translateX.value = 20;\n this.translateX.unit = 'px';\n\n this.translateY.value = 20;\n this.translateY.unit = 'px';\n\n this.translateZ.value = 20;\n this.translateZ.unit = 'px';\n\n this.rotateX.value = 90;\n this.rotateX.unit = 'deg';\n\n this.rotateY.value = 90;\n this.rotateY.unit = 'deg';\n\n this.rotateX.value = 90;\n this.rotateX.unit = 'deg';\n\n this.rotateZ.value = 180;\n this.rotateZ.unit = 'deg';\n\n this.callActions('afterConstruct');\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.TransformDefaults);\n\n mixitup.TransformDefaults.prototype = Object.create(mixitup.StyleData.prototype);\n\n mixitup.TransformDefaults.prototype.constructor = mixitup.TransformDefaults;\n\n /**\n * @private\n * @static\n * @since 3.0.0\n * @type {mixitup.TransformDefaults}\n */\n\n mixitup.transformDefaults = new mixitup.TransformDefaults();\n\n /**\n * @constructor\n * @memberof mixitup\n * @private\n * @since 3.0.0\n */\n\n mixitup.EventDetail = function() {\n this.state = null;\n this.futureState = null;\n this.instance = null;\n this.originalEvent = null;\n };\n\n /**\n * The `mixitup.Events` class contains all custom events dispatched by MixItUp at various\n * points within the lifecycle of a mixer operation.\n *\n * Each event is analogous to the callback function of the same name defined in\n * the `callbacks` configuration object, and is triggered immediately before it.\n *\n * Events are always triggered from the container element on which MixItUp is instantiated\n * upon.\n *\n * As with any event, registered event handlers receive the event object as a parameter\n * which includes a `detail` property containting references to the current `state`,\n * the `mixer` instance, and other event-specific properties described below.\n *\n * @constructor\n * @namespace\n * @memberof mixitup\n * @public\n * @since 3.0.0\n */\n\n mixitup.Events = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n /**\n * A custom event triggered immediately after any MixItUp operation is requested\n * and before animations have begun.\n *\n * The `mixStart` event also exposes a `futureState` property via the\n * `event.detail` object, which represents the final state of the mixer once\n * the requested operation has completed.\n *\n * @name mixStart\n * @memberof mixitup.Events\n * @static\n * @type {CustomEvent}\n */\n\n this.mixStart = null;\n\n /**\n * A custom event triggered when a MixItUp operation is requested while another\n * operation is in progress, and the animation queue is full, or queueing\n * is disabled.\n *\n * @name mixBusy\n * @memberof mixitup.Events\n * @static\n * @type {CustomEvent}\n */\n\n this.mixBusy = null;\n\n /**\n * A custom event triggered after any MixItUp operation has completed, and the\n * state has been updated.\n *\n * @name mixEnd\n * @memberof mixitup.Events\n * @static\n * @type {CustomEvent}\n */\n\n this.mixEnd = null;\n\n /**\n * A custom event triggered whenever a filter operation \"fails\", i.e. no targets\n * could be found matching the requested filter.\n *\n * @name mixFail\n * @memberof mixitup.Events\n * @static\n * @type {CustomEvent}\n */\n\n this.mixFail = null;\n\n /**\n * A custom event triggered whenever a MixItUp control is clicked, and before its\n * respective operation is requested.\n *\n * This event also exposes an `originalEvent` property via the `event.detail`\n * object, which holds a reference to the original click event.\n *\n * @name mixClick\n * @memberof mixitup.Events\n * @static\n * @type {CustomEvent}\n */\n\n this.mixClick = null;\n\n this.callActions('afterConstruct');\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.Events);\n\n mixitup.Events.prototype = Object.create(mixitup.Base.prototype);\n\n mixitup.Events.prototype.constructor = mixitup.Events;\n\n /**\n * @private\n * @param {string} eventType\n * @param {Element} el\n * @param {object} detail\n * @param {Document} [doc]\n */\n\n mixitup.Events.prototype.fire = function(eventType, el, detail, doc) {\n var self = this,\n event = null,\n eventDetail = new mixitup.EventDetail();\n\n self.callActions('beforeFire', arguments);\n\n if (typeof self[eventType] === 'undefined') {\n throw new Error('Event type \"' + eventType + '\" not found.');\n }\n\n eventDetail.state = new mixitup.State();\n\n h.extend(eventDetail.state, detail.state);\n\n if (detail.futureState) {\n eventDetail.futureState = new mixitup.State();\n\n h.extend(eventDetail.futureState, detail.futureState);\n }\n\n eventDetail.instance = detail.instance;\n\n if (detail.originalEvent) {\n eventDetail.originalEvent = detail.originalEvent;\n }\n\n event = h.getCustomEvent(eventType, eventDetail, doc);\n\n self.callFilters('eventFire', event, arguments);\n\n el.dispatchEvent(event);\n };\n\n // Asign a singleton instance to `mixitup.events`:\n\n mixitup.events = new mixitup.Events();\n\n /**\n * @constructor\n * @memberof mixitup\n * @private\n * @since 3.0.0\n */\n\n mixitup.QueueItem = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n this.args = [];\n this.instruction = null;\n this.triggerElement = null;\n this.deferred = null;\n this.isToggling = false;\n\n this.callActions('afterConstruct');\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.QueueItem);\n\n mixitup.QueueItem.prototype = Object.create(mixitup.Base.prototype);\n\n mixitup.QueueItem.prototype.constructor = mixitup.QueueItem;\n\n /**\n * The `mixitup.Mixer` class is used to hold discreet, user-configured\n * instances of MixItUp on a provided container element.\n *\n * Mixer instances are returned whenever the `mixitup()` factory function is called,\n * which expose a range of methods enabling API-based filtering, sorting,\n * insertion, removal and more.\n *\n * @constructor\n * @namespace\n * @memberof mixitup\n * @public\n * @since 3.0.0\n */\n\n mixitup.Mixer = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n this.config = new mixitup.Config();\n\n this.id = '';\n\n this.isBusy = false;\n this.isToggling = false;\n this.incPadding = true;\n\n this.controls = [];\n this.targets = [];\n this.origOrder = [];\n this.cache = {};\n\n this.toggleArray = [];\n\n this.targetsMoved = 0;\n this.targetsImmovable = 0;\n this.targetsBound = 0;\n this.targetsDone = 0;\n\n this.staggerDuration = 0;\n this.effectsIn = null;\n this.effectsOut = null;\n this.transformIn = [];\n this.transformOut = [];\n this.queue = [];\n\n this.state = null;\n this.lastOperation = null;\n this.lastClicked = null;\n this.userCallback = null;\n this.userDeferred = null;\n\n this.dom = new mixitup.MixerDom();\n\n this.callActions('afterConstruct');\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.Mixer);\n\n mixitup.Mixer.prototype = Object.create(mixitup.Base.prototype);\n\n h.extend(mixitup.Mixer.prototype,\n /** @lends mixitup.Mixer */\n {\n constructor: mixitup.Mixer,\n\n /**\n * @private\n * @instance\n * @since 3.0.0\n * @param {HTMLElement} container\n * @param {HTMLElement} document\n * @param {string} id\n * @param {object} [config]\n */\n\n attach: function(container, document, id, config) {\n var self = this,\n target = null,\n i = -1;\n\n self.callActions('beforeAttach', arguments);\n\n self.id = id;\n\n if (config) {\n h.extend(self.config, config, true, true);\n }\n\n self.sanitizeConfig();\n\n self.cacheDom(container, document);\n\n if (self.config.layout.containerClassName) {\n h.addClass(self.dom.container, self.config.layout.containerClassName);\n }\n\n if (!mixitup.features.has.transitions) {\n self.config.animation.enable = false;\n }\n\n if (typeof window.console === 'undefined') {\n self.config.debug.showWarnings = false;\n }\n\n if (self.config.data.uidKey) {\n // If the dataset API is in use, force disable controls\n\n self.config.controls.enable = false;\n }\n\n self.indexTargets();\n\n self.state = self.getInitialState();\n\n for (i = 0; target = self.lastOperation.toHide[i]; i++) {\n target.hide();\n }\n\n if (self.config.controls.enable) {\n self.initControls();\n\n self.buildToggleArray(null, self.state);\n\n self.updateControls({\n filter: self.state.activeFilter,\n sort: self.state.activeSort\n });\n }\n\n self.parseEffects();\n\n self.callActions('afterAttach', arguments);\n },\n\n /**\n * @private\n * @instance\n * @since 3.0.0\n * @return {void}\n */\n\n sanitizeConfig: function() {\n var self = this;\n\n self.callActions('beforeSanitizeConfig', arguments);\n\n // Sanitize enum/string config options\n\n self.config.controls.scope = self.config.controls.scope.toLowerCase().trim();\n self.config.controls.toggleLogic = self.config.controls.toggleLogic.toLowerCase().trim();\n self.config.controls.toggleDefault = self.config.controls.toggleDefault.toLowerCase().trim();\n\n self.config.animation.effects = self.config.animation.effects.trim();\n\n self.callActions('afterSanitizeConfig', arguments);\n },\n\n /**\n * @private\n * @instance\n * @since 3.0.0\n * @return {mixitup.State}\n */\n\n getInitialState: function() {\n var self = this,\n state = new mixitup.State(),\n operation = new mixitup.Operation();\n\n self.callActions('beforeGetInitialState', arguments);\n\n // Map initial values into a mock state object in order to construct an operation\n\n state.activeContainerClassName = self.config.layout.containerClassName;\n\n if (self.config.load.dataset) {\n // Dataset API\n\n if (!self.config.data.uidKey || typeof self.config.data.uidKey !== 'string') {\n throw new TypeError(mixitup.messages.errorConfigDataUidKeyNotSet());\n }\n\n operation.startDataset = operation.newDataset = state.activeDataset = self.config.load.dataset.slice();\n operation.startContainerClassName = operation.newContainerClassName = state.activeContainerClassName;\n operation.show = self.targets.slice();\n\n state = self.callFilters('stateGetInitialState', state, arguments);\n } else {\n // DOM API\n\n state.activeFilter = self.parseFilterArgs([self.config.load.filter]).command;\n state.activeSort = self.parseSortArgs([self.config.load.sort]).command;\n state.totalTargets = self.targets.length;\n\n state = self.callFilters('stateGetInitialState', state, arguments);\n\n if (\n state.activeSort.collection || state.activeSort.attribute ||\n state.activeSort.order === 'random' || state.activeSort.order === 'desc'\n ) {\n // Sorting on load\n\n operation.newSort = state.activeSort;\n\n self.sortOperation(operation);\n\n self.printSort(false, operation);\n\n self.targets = operation.newOrder;\n } else {\n operation.startOrder = operation.newOrder = self.targets;\n }\n\n operation.startFilter = operation.newFilter = state.activeFilter;\n operation.startSort = operation.newSort = state.activeSort;\n operation.startContainerClassName = operation.newContainerClassName = state.activeContainerClassName;\n\n if (operation.newFilter.selector === 'all') {\n operation.newFilter.selector = self.config.selectors.target;\n } else if (operation.newFilter.selector === 'none') {\n operation.newFilter.selector = '';\n }\n }\n\n operation = self.callFilters('operationGetInitialState', operation, [state]);\n\n self.lastOperation = operation;\n\n if (operation.newFilter) {\n self.filterOperation(operation);\n }\n\n state = self.buildState(operation);\n\n return state;\n },\n\n /**\n * Caches references of DOM elements neccessary for the mixer's functionality.\n *\n * @private\n * @instance\n * @since 3.0.0\n * @param {HTMLElement} el\n * @param {HTMLHtmlElement} document\n * @return {void}\n */\n\n cacheDom: function(el, document) {\n var self = this;\n\n self.callActions('beforeCacheDom', arguments);\n\n self.dom.document = document;\n self.dom.body = self.dom.document.querySelector('body');\n self.dom.container = el;\n self.dom.parent = el;\n\n self.callActions('afterCacheDom', arguments);\n },\n\n /**\n * Indexes all child elements of the mixer matching the `selectors.target`\n * selector, instantiating a mixitup.Target for each one.\n *\n * @private\n * @instance\n * @since 3.0.0\n * @return {void}\n */\n\n indexTargets: function() {\n var self = this,\n target = null,\n el = null,\n dataset = null,\n i = -1;\n\n self.callActions('beforeIndexTargets', arguments);\n\n self.dom.targets = self.config.layout.allowNestedTargets ?\n self.dom.container.querySelectorAll(self.config.selectors.target) :\n h.children(self.dom.container, self.config.selectors.target, self.dom.document);\n\n self.dom.targets = h.arrayFromList(self.dom.targets);\n\n self.targets = [];\n\n if ((dataset = self.config.load.dataset) && dataset.length !== self.dom.targets.length) {\n throw new Error(mixitup.messages.errorDatasetPrerenderedMismatch());\n }\n\n if (self.dom.targets.length) {\n for (i = 0; el = self.dom.targets[i]; i++) {\n target = new mixitup.Target();\n\n target.init(el, self, dataset ? dataset[i] : void(0));\n\n target.isInDom = true;\n\n self.targets.push(target);\n }\n\n self.dom.parent = self.dom.targets[0].parentElement === self.dom.container ?\n self.dom.container :\n self.dom.targets[0].parentElement;\n }\n\n self.origOrder = self.targets;\n\n self.callActions('afterIndexTargets', arguments);\n },\n\n initControls: function() {\n var self = this,\n definition = '',\n controlElements = null,\n el = null,\n parent = null,\n delagators = null,\n control = null,\n i = -1,\n j = -1;\n\n self.callActions('beforeInitControls', arguments);\n\n switch (self.config.controls.scope) {\n case 'local':\n parent = self.dom.container;\n\n break;\n case 'global':\n parent = self.dom.document;\n\n break;\n default:\n throw new Error(mixitup.messages.errorConfigInvalidControlsScope());\n }\n\n for (i = 0; definition = mixitup.controlDefinitions[i]; i++) {\n if (self.config.controls.live || definition.live) {\n if (definition.parent) {\n delagators = self.dom[definition.parent];\n\n if (!delagators || delagators.length < 0) continue;\n\n if (typeof delagators.length !== 'number') {\n delagators = [delagators];\n }\n } else {\n delagators = [parent];\n }\n\n for (j = 0; (el = delagators[j]); j++) {\n control = self.getControl(el, definition.type, definition.selector);\n\n self.controls.push(control);\n }\n } else {\n controlElements = parent.querySelectorAll(self.config.selectors.control + definition.selector);\n\n for (j = 0; (el = controlElements[j]); j++) {\n control = self.getControl(el, definition.type, '');\n\n if (!control) continue;\n\n self.controls.push(control);\n }\n }\n }\n\n self.callActions('afterInitControls', arguments);\n },\n\n /**\n * @private\n * @instance\n * @since 3.0.0\n * @param {HTMLElement} el\n * @param {string} type\n * @param {string} selector\n * @return {mixitup.Control|null}\n */\n\n getControl: function(el, type, selector) {\n var self = this,\n control = null,\n i = -1;\n\n self.callActions('beforeGetControl', arguments);\n\n if (!selector) {\n // Static controls only\n\n for (i = 0; control = mixitup.controls[i]; i++) {\n if (control.el === el && control.isBound(self)) {\n // Control already bound to this mixer (as another type).\n\n // NB: This prevents duplicate controls from being registered where a selector\n // might collide, eg: \"[data-filter]\" and \"[data-filter][data-sort]\"\n\n return self.callFilters('controlGetControl', null, arguments);\n } else if (control.el === el && control.type === type && control.selector === selector) {\n // Another mixer is already using this control, add this mixer as a binding\n\n control.addBinding(self);\n\n return self.callFilters('controlGetControl', control, arguments);\n }\n }\n }\n\n // Create new control\n\n control = new mixitup.Control();\n\n control.init(el, type, selector);\n\n control.classNames.base = h.getClassname(self.config.classNames, type);\n control.classNames.active = h.getClassname(self.config.classNames, type, self.config.classNames.modifierActive);\n control.classNames.disabled = h.getClassname(self.config.classNames, type, self.config.classNames.modifierDisabled);\n\n // Add a reference to this mixer as a binding\n\n control.addBinding(self);\n\n return self.callFilters('controlGetControl', control, arguments);\n },\n\n /**\n * Creates a compound selector by joining the `toggleArray` value as per the\n * defined toggle logic.\n *\n * @private\n * @instance\n * @since 3.0.0\n * @return {string}\n */\n\n getToggleSelector: function() {\n var self = this,\n delineator = self.config.controls.toggleLogic === 'or' ? ', ' : '',\n toggleSelector = '';\n\n self.callActions('beforeGetToggleSelector', arguments);\n\n self.toggleArray = h.clean(self.toggleArray);\n\n toggleSelector = self.toggleArray.join(delineator);\n\n if (toggleSelector === '') {\n toggleSelector = self.config.controls.toggleDefault;\n }\n\n return self.callFilters('selectorGetToggleSelector', toggleSelector, arguments);\n },\n\n /**\n * Breaks compound selector strings in an array of discreet selectors,\n * as per the active `controls.toggleLogic` configuration option. Accepts\n * either a dynamic command object, or a state object.\n *\n * @private\n * @instance\n * @since 2.0.0\n * @param {object} [command]\n * @param {mixitup.State} [state]\n * @return {void}\n */\n\n buildToggleArray: function(command, state) {\n var self = this,\n activeFilterSelector = '';\n\n self.callActions('beforeBuildToggleArray', arguments);\n\n if (command && command.filter) {\n activeFilterSelector = command.filter.selector.replace(/\\s/g, '');\n } else if (state) {\n activeFilterSelector = state.activeFilter.selector.replace(/\\s/g, '');\n } else {\n return;\n }\n\n if (activeFilterSelector === self.config.selectors.target || activeFilterSelector === 'all') {\n activeFilterSelector = '';\n }\n\n if (self.config.controls.toggleLogic === 'or') {\n self.toggleArray = activeFilterSelector.split(',');\n } else {\n self.toggleArray = self.splitCompoundSelector(activeFilterSelector);\n }\n\n self.toggleArray = h.clean(self.toggleArray);\n\n self.callActions('afterBuildToggleArray', arguments);\n },\n\n /**\n * Takes a compound selector (e.g. `.cat-1.cat-2`, `[data-cat=\"1\"][data-cat=\"2\"]`)\n * and breaks into its individual selectors.\n *\n * @private\n * @instance\n * @since 3.0.0\n * @param {string} compoundSelector\n * @return {string[]}\n */\n\n splitCompoundSelector: function(compoundSelector) {\n // Break at a `.` or `[`, capturing the delineator\n\n var partials = compoundSelector.split(/([\\.\\[])/g),\n toggleArray = [],\n selector = '',\n i = -1;\n\n if (partials[0] === '') {\n partials.shift();\n }\n\n for (i = 0; i < partials.length; i++) {\n if (i % 2 === 0) {\n selector = '';\n }\n\n selector += partials[i];\n\n if (i % 2 !== 0) {\n toggleArray.push(selector);\n }\n }\n\n return toggleArray;\n },\n\n /**\n * Updates controls to their active/inactive state based on the command or\n * current state of the mixer.\n *\n * @private\n * @instance\n * @since 2.0.0\n * @param {object} command\n * @return {void}\n */\n\n updateControls: function(command) {\n var self = this,\n control = null,\n output = new mixitup.CommandMultimix(),\n i = -1;\n\n self.callActions('beforeUpdateControls', arguments);\n\n // Sanitise to defaults\n\n if (command.filter) {\n output.filter = command.filter.selector;\n } else {\n output.filter = self.state.activeFilter.selector;\n }\n\n if (command.sort) {\n output.sort = self.buildSortString(command.sort);\n } else {\n output.sort = self.buildSortString(self.state.activeSort);\n }\n\n if (output.filter === self.config.selectors.target) {\n output.filter = 'all';\n }\n\n if (output.filter === '') {\n output.filter = 'none';\n }\n\n h.freeze(output);\n\n for (i = 0; control = self.controls[i]; i++) {\n control.update(output, self.toggleArray);\n }\n\n self.callActions('afterUpdateControls', arguments);\n },\n\n /**\n * @private\n * @instance\n * @since 3.0.0\n * @param {mixitup.CommandSort} command\n * @return {string}\n */\n\n buildSortString: function(command) {\n var self = this;\n var output = '';\n\n output += command.sortString;\n\n if (command.next) {\n output += ' ' + self.buildSortString(command.next);\n }\n\n return output;\n },\n\n /**\n * @private\n * @instance\n * @since 3.0.0\n * @param {object} command\n * @param {Operation} operation\n * @return {Promise.}\n */\n\n insertTargets: function(command, operation) {\n var self = this,\n nextSibling = null,\n insertionIndex = -1,\n frag = null,\n target = null,\n el = null,\n i = -1;\n\n self.callActions('beforeInsertTargets', arguments);\n\n if (typeof command.index === 'undefined') command.index = 0;\n\n nextSibling = self.getNextSibling(command.index, command.sibling, command.position);\n frag = self.dom.document.createDocumentFragment();\n\n if (nextSibling) {\n insertionIndex = h.index(nextSibling, self.config.selectors.target);\n } else {\n insertionIndex = self.targets.length;\n }\n\n if (command.collection) {\n for (i = 0; el = command.collection[i]; i++) {\n if (self.dom.targets.indexOf(el) > -1) {\n throw new Error(mixitup.messages.errorInsertPreexistingElement());\n }\n\n // Ensure elements are hidden when they are added to the DOM, so they can\n // be animated in gracefully\n\n el.style.display = 'none';\n\n frag.appendChild(el);\n frag.appendChild(self.dom.document.createTextNode(' '));\n\n if (!h.isElement(el, self.dom.document) || !el.matches(self.config.selectors.target)) continue;\n\n target = new mixitup.Target();\n\n target.init(el, self);\n\n target.isInDom = true;\n\n self.targets.splice(insertionIndex, 0, target);\n\n insertionIndex++;\n }\n\n self.dom.parent.insertBefore(frag, nextSibling);\n }\n\n // Since targets have been added, the original order must be updated\n\n operation.startOrder = self.origOrder = self.targets;\n\n self.callActions('afterInsertTargets', arguments);\n },\n\n /**\n * @private\n * @instance\n * @since 3.0.0\n * @param {Number} [index]\n * @param {Element} [sibling]\n * @param {string} [position]\n * @return {Element}\n */\n\n getNextSibling: function(index, sibling, position) {\n var self = this,\n element = null;\n\n index = Math.max(index, 0);\n\n if (sibling && position === 'before') {\n // Explicit sibling\n\n element = sibling;\n } else if (sibling && position === 'after') {\n // Explicit sibling\n\n element = sibling.nextElementSibling || null;\n } else if (self.targets.length > 0 && typeof index !== 'undefined') {\n // Index and targets exist\n\n element = (index < self.targets.length || !self.targets.length) ?\n self.targets[index].dom.el :\n self.targets[self.targets.length - 1].dom.el.nextElementSibling;\n } else if (self.targets.length === 0 && self.dom.parent.children.length > 0) {\n // No targets but other siblings\n\n if (self.config.layout.siblingAfter) {\n element = self.config.layout.siblingAfter;\n } else if (self.config.layout.siblingBefore) {\n element = self.config.layout.siblingBefore.nextElementSibling;\n } else {\n self.dom.parent.children[0];\n }\n } else {\n element === null;\n }\n\n return self.callFilters('elementGetNextSibling', element, arguments);\n },\n\n /**\n * @private\n * @instance\n * @since 2.0.0\n * @param {Operation} operation\n * @return {void}\n */\n\n filterOperation: function(operation) {\n var self = this,\n testResult = false,\n index = -1,\n action = '',\n target = null,\n i = -1;\n\n self.callActions('beforeFilterOperation', arguments);\n\n action = operation.newFilter.action;\n\n for (i = 0; target = operation.newOrder[i]; i++) {\n if (operation.newFilter.collection) {\n // show via collection\n\n testResult = operation.newFilter.collection.indexOf(target.dom.el) > -1;\n } else {\n // show via selector\n\n if (operation.newFilter.selector === '') {\n testResult = false;\n } else {\n testResult = target.dom.el.matches(operation.newFilter.selector);\n }\n }\n\n self.evaluateHideShow(testResult, target, action, operation);\n }\n\n if (operation.toRemove.length) {\n for (i = 0; target = operation.show[i]; i++) {\n if (operation.toRemove.indexOf(target) > -1) {\n // If any shown targets should be removed, move them into the toHide array\n\n operation.show.splice(i, 1);\n\n if ((index = operation.toShow.indexOf(target)) > -1) {\n operation.toShow.splice(index, 1);\n }\n\n operation.toHide.push(target);\n operation.hide.push(target);\n\n i--;\n }\n }\n }\n\n operation.matching = operation.show.slice();\n\n if (operation.show.length === 0 && operation.newFilter.selector !== '' && self.targets.length !== 0) {\n operation.hasFailed = true;\n }\n\n self.callActions('afterFilterOperation', arguments);\n },\n\n /**\n * @private\n * @instance\n * @since 3.0.0\n * @param {boolean} testResult\n * @param {Element} target\n * @param {string} action\n * @param {Operation} operation\n * @return {void}\n */\n\n evaluateHideShow: function(testResult, target, action, operation) {\n var self = this,\n filteredTestResult = false,\n args = Array.prototype.slice.call(arguments, 1);\n\n filteredTestResult = self.callFilters('testResultEvaluateHideShow', testResult, args);\n\n self.callActions('beforeEvaluateHideShow', arguments);\n\n if (\n filteredTestResult === true && action === 'show' ||\n filteredTestResult === false && action === 'hide'\n ) {\n operation.show.push(target);\n\n !target.isShown && operation.toShow.push(target);\n } else {\n operation.hide.push(target);\n\n target.isShown && operation.toHide.push(target);\n }\n\n self.callActions('afterEvaluateHideShow', arguments);\n },\n\n /**\n * @private\n * @instance\n * @since 2.0.0\n * @param {Operation} operation\n * @return {void}\n */\n\n sortOperation: function(operation) {\n var self = this,\n newOrder = [],\n target = null,\n el = null,\n i = -1;\n\n self.callActions('beforeSortOperation', arguments);\n\n operation.startOrder = self.targets;\n\n if (operation.newSort.collection) {\n // Sort by collection\n\n newOrder = [];\n\n for (i = 0; (el = operation.newSort.collection[i]); i++) {\n if (self.dom.targets.indexOf(el) < 0) {\n throw new Error(mixitup.messages.errorSortNonExistentElement());\n }\n\n target = new mixitup.Target();\n\n target.init(el, self);\n\n target.isInDom = true;\n\n newOrder.push(target);\n }\n\n operation.newOrder = newOrder;\n } else if (operation.newSort.order === 'random') {\n // Sort random\n\n operation.newOrder = h.arrayShuffle(operation.startOrder);\n } else if (operation.newSort.attribute === '') {\n // Sort by default\n\n operation.newOrder = self.origOrder.slice();\n\n if (operation.newSort.order === 'desc') {\n operation.newOrder.reverse();\n }\n } else {\n // Sort by attribute\n\n operation.newOrder = operation.startOrder.slice();\n\n operation.newOrder.sort(function(a, b) {\n return self.compare(a, b, operation.newSort);\n });\n }\n\n if (h.isEqualArray(operation.newOrder, operation.startOrder)) {\n operation.willSort = false;\n }\n\n self.callActions('afterSortOperation', arguments);\n },\n\n /**\n * @private\n * @instance\n * @since 2.0.0\n * @param {mixitup.Target} a\n * @param {mixitup.Target} b\n * @param {mixitup.CommandSort} command\n * @return {Number}\n */\n\n compare: function(a, b, command) {\n var self = this,\n order = command.order,\n attrA = self.getAttributeValue(a, command.attribute),\n attrB = self.getAttributeValue(b, command.attribute);\n\n if (isNaN(attrA * 1) || isNaN(attrB * 1)) {\n attrA = attrA.toLowerCase();\n attrB = attrB.toLowerCase();\n } else {\n attrA = attrA * 1;\n attrB = attrB * 1;\n }\n\n if (attrA < attrB) {\n return order === 'asc' ? -1 : 1;\n }\n\n if (attrA > attrB) {\n return order === 'asc' ? 1 : -1;\n }\n\n if (attrA === attrB && command.next) {\n return self.compare(a, b, command.next);\n }\n\n return 0;\n },\n\n /**\n * Reads the values of any data attributes present the provided target element\n * which match the current sort command.\n *\n * @private\n * @instance\n * @since 3.0.0\n * @param {mixitup.Target} target\n * @param {string} [attribute]\n * @return {(String|Number)}\n */\n\n getAttributeValue: function(target, attribute) {\n var self = this,\n value = '';\n\n value = target.dom.el.getAttribute('data-' + attribute);\n\n if (value === null) {\n if (self.config.debug.showWarnings) {\n // Encourage users to assign values to all targets to avoid erroneous sorting\n // when types are mixed\n\n console.warn(mixitup.messages.warningInconsistentSortingAttributes({\n attribute: 'data-' + attribute\n }));\n }\n }\n\n // If an attribute is not present, return 0 as a safety value\n\n return self.callFilters('valueGetAttributeValue', value || 0, arguments);\n },\n\n /**\n * Inserts elements into the DOM in the appropriate\n * order using a document fragment for minimal\n * DOM thrashing\n *\n * @private\n * @instance\n * @since 2.0.0\n * @param {boolean} isResetting\n * @param {Operation} operation\n * @return {void}\n */\n\n printSort: function(isResetting, operation) {\n var self = this,\n startOrder = isResetting ? operation.newOrder : operation.startOrder,\n newOrder = isResetting ? operation.startOrder : operation.newOrder,\n nextSibling = startOrder.length ? startOrder[startOrder.length - 1].dom.el.nextElementSibling : null,\n frag = window.document.createDocumentFragment(),\n whitespace = null,\n target = null,\n el = null,\n i = -1;\n\n self.callActions('beforePrintSort', arguments);\n\n // Empty the container\n\n for (i = 0; target = startOrder[i]; i++) {\n el = target.dom.el;\n\n if (el.style.position === 'absolute') continue;\n\n h.removeWhitespace(el.previousSibling);\n\n el.parentElement.removeChild(el);\n }\n\n whitespace = nextSibling ? nextSibling.previousSibling : self.dom.parent.lastChild;\n\n if (whitespace && whitespace.nodeName === '#text') {\n h.removeWhitespace(whitespace);\n }\n\n for (i = 0; target = newOrder[i]; i++) {\n // Add targets into a document fragment\n\n el = target.dom.el;\n\n if (h.isElement(frag.lastChild)) {\n frag.appendChild(window.document.createTextNode(' '));\n }\n\n frag.appendChild(el);\n }\n\n // Insert the document fragment into the container\n // before any other non-target elements\n\n if (self.dom.parent.firstChild && self.dom.parent.firstChild !== nextSibling) {\n frag.insertBefore(window.document.createTextNode(' '), frag.childNodes[0]);\n }\n\n if (nextSibling) {\n frag.appendChild(window.document.createTextNode(' '));\n\n self.dom.parent.insertBefore(frag, nextSibling);\n } else {\n self.dom.parent.appendChild(frag);\n }\n\n self.callActions('afterPrintSort', arguments);\n },\n\n /**\n * Parses user-defined sort strings (i.e. `default:asc`) into sort commands objects.\n *\n * @private\n * @instance\n * @since 3.0.0\n * @param {string} sortString\n * @param {mixitup.CommandSort} command\n * @return {mixitup.CommandSort}\n */\n\n parseSortString: function(sortString, command) {\n var self = this,\n rules = sortString.split(' '),\n current = command,\n rule = [],\n i = -1;\n\n // command.sortString = sortString;\n\n for (i = 0; i < rules.length; i++) {\n rule = rules[i].split(':');\n\n current.sortString = rules[i];\n current.attribute = h.dashCase(rule[0]);\n current.order = rule[1] || 'asc';\n\n switch (current.attribute) {\n case 'default':\n // treat \"default\" as sorting by no attribute\n\n current.attribute = '';\n\n break;\n case 'random':\n // treat \"random\" as an order not an attribute\n\n current.attribute = '';\n current.order = 'random';\n\n break;\n }\n\n if (!current.attribute || current.order === 'random') break;\n\n if (i < rules.length - 1) {\n // Embed reference to the next command\n\n current.next = new mixitup.CommandSort();\n\n h.freeze(current);\n\n current = current.next;\n }\n }\n\n return self.callFilters('commandsParseSort', command, arguments);\n },\n\n /**\n * Parses all effects out of the user-defined `animation.effects` string into\n * their respective properties and units.\n *\n * @private\n * @instance\n * @since 2.0.0\n * @return {void}\n */\n\n parseEffects: function() {\n var self = this,\n transformName = '',\n effectsIn = self.config.animation.effectsIn || self.config.animation.effects,\n effectsOut = self.config.animation.effectsOut || self.config.animation.effects;\n\n self.callActions('beforeParseEffects', arguments);\n\n self.effectsIn = new mixitup.StyleData();\n self.effectsOut = new mixitup.StyleData();\n self.transformIn = [];\n self.transformOut = [];\n\n self.effectsIn.opacity = self.effectsOut.opacity = 1;\n\n self.parseEffect('fade', effectsIn, self.effectsIn, self.transformIn);\n self.parseEffect('fade', effectsOut, self.effectsOut, self.transformOut, true);\n\n for (transformName in mixitup.transformDefaults) {\n if (!(mixitup.transformDefaults[transformName] instanceof mixitup.TransformData)) {\n continue;\n }\n\n self.parseEffect(transformName, effectsIn, self.effectsIn, self.transformIn);\n self.parseEffect(transformName, effectsOut, self.effectsOut, self.transformOut, true);\n }\n\n self.parseEffect('stagger', effectsIn, self.effectsIn, self.transformIn);\n self.parseEffect('stagger', effectsOut, self.effectsOut, self.transformOut, true);\n\n self.callActions('afterParseEffects', arguments);\n },\n\n /**\n * @private\n * @instance\n * @since 2.0.0\n * @param {string} effectName\n * @param {string} effectString\n * @param {StyleData} effects\n * @param {String[]} transform\n * @param {boolean} [isOut]\n */\n\n parseEffect: function(effectName, effectString, effects, transform, isOut) {\n var self = this,\n re = /\\(([^)]+)\\)/,\n propIndex = -1,\n str = '',\n match = [],\n val = '',\n units = ['%', 'px', 'em', 'rem', 'vh', 'vw', 'deg'],\n unit = '',\n i = -1;\n\n self.callActions('beforeParseEffect', arguments);\n\n if (typeof effectString !== 'string') {\n throw new TypeError(mixitup.messages.errorConfigInvalidAnimationEffects());\n }\n\n if (effectString.indexOf(effectName) < 0) {\n // The effect is not present in the effects string\n\n if (effectName === 'stagger') {\n // Reset stagger to 0\n\n self.staggerDuration = 0;\n }\n\n return;\n }\n\n // The effect is present\n\n propIndex = effectString.indexOf(effectName + '(');\n\n if (propIndex > -1) {\n // The effect has a user defined value in parentheses\n\n // Extract from the first parenthesis to the end of string\n\n str = effectString.substring(propIndex);\n\n // Match any number of characters between \"(\" and \")\"\n\n match = re.exec(str);\n\n val = match[1];\n }\n\n switch (effectName) {\n case 'fade':\n effects.opacity = val ? parseFloat(val) : 0;\n\n break;\n case 'stagger':\n self.staggerDuration = val ? parseFloat(val) : 100;\n\n // TODO: Currently stagger must be applied globally, but\n // if seperate values are specified for in/out, this should\n // be respected\n\n break;\n default:\n // All other effects are transforms following the same structure\n\n if (isOut && self.config.animation.reverseOut && effectName !== 'scale') {\n effects[effectName].value =\n (val ? parseFloat(val) : mixitup.transformDefaults[effectName].value) * -1;\n } else {\n effects[effectName].value =\n (val ? parseFloat(val) : mixitup.transformDefaults[effectName].value);\n }\n\n if (val) {\n for (i = 0; unit = units[i]; i++) {\n if (val.indexOf(unit) > -1) {\n effects[effectName].unit = unit;\n\n break;\n }\n }\n } else {\n effects[effectName].unit = mixitup.transformDefaults[effectName].unit;\n }\n\n transform.push(\n effectName +\n '(' +\n effects[effectName].value +\n effects[effectName].unit +\n ')'\n );\n }\n\n self.callActions('afterParseEffect', arguments);\n },\n\n /**\n * @private\n * @instance\n * @since 2.0.0\n * @param {Operation} operation\n * @return {State}\n */\n\n buildState: function(operation) {\n var self = this,\n state = new mixitup.State(),\n target = null,\n i = -1;\n\n self.callActions('beforeBuildState', arguments);\n\n // Map target elements into state arrays.\n // the real target objects should never be exposed\n\n for (i = 0; target = self.targets[i]; i++) {\n if (!operation.toRemove.length || operation.toRemove.indexOf(target) < 0) {\n state.targets.push(target.dom.el);\n }\n }\n\n for (i = 0; target = operation.matching[i]; i++) {\n state.matching.push(target.dom.el);\n }\n\n for (i = 0; target = operation.show[i]; i++) {\n state.show.push(target.dom.el);\n }\n\n for (i = 0; target = operation.hide[i]; i++) {\n if (!operation.toRemove.length || operation.toRemove.indexOf(target) < 0) {\n state.hide.push(target.dom.el);\n }\n }\n\n state.id = self.id;\n state.container = self.dom.container;\n state.activeFilter = operation.newFilter;\n state.activeSort = operation.newSort;\n state.activeDataset = operation.newDataset;\n state.activeContainerClassName = operation.newContainerClassName;\n state.hasFailed = operation.hasFailed;\n state.totalTargets = self.targets.length;\n state.totalShow = operation.show.length;\n state.totalHide = operation.hide.length;\n state.totalMatching = operation.matching.length;\n state.triggerElement = operation.triggerElement;\n\n return self.callFilters('stateBuildState', state, arguments);\n },\n\n /**\n * @private\n * @instance\n * @since 2.0.0\n * @param {boolean} shouldAnimate\n * @param {Operation} operation\n * @return {void}\n */\n\n goMix: function(shouldAnimate, operation) {\n var self = this,\n deferred = null;\n\n self.callActions('beforeGoMix', arguments);\n\n // If the animation duration is set to 0ms,\n // or no effects specified,\n // or the container is hidden\n // then abort animation\n\n if (\n !self.config.animation.duration || !self.config.animation.effects || !h.isVisible(self.dom.container)\n ) {\n shouldAnimate = false;\n }\n\n if (\n !operation.toShow.length &&\n !operation.toHide.length &&\n !operation.willSort &&\n !operation.willChangeLayout\n ) {\n // If nothing to show or hide, and not sorting or\n // changing layout\n\n shouldAnimate = false;\n }\n\n if (\n !operation.startState.show.length &&\n !operation.show.length\n ) {\n // If nothing currently shown, nothing to show\n\n shouldAnimate = false;\n }\n\n mixitup.events.fire('mixStart', self.dom.container, {\n state: operation.startState,\n futureState: operation.newState,\n instance: self\n }, self.dom.document);\n\n if (typeof self.config.callbacks.onMixStart === 'function') {\n self.config.callbacks.onMixStart.call(\n self.dom.container,\n operation.startState,\n operation.newState,\n self\n );\n }\n\n h.removeClass(self.dom.container, h.getClassname(self.config.classNames, 'container', self.config.classNames.modifierFailed));\n\n if (!self.userDeferred) {\n // Queue empty, no pending operations\n\n deferred = self.userDeferred = h.defer(mixitup.libraries);\n } else {\n // Use existing deferred\n\n deferred = self.userDeferred;\n }\n\n self.isBusy = true;\n\n if (!shouldAnimate || !mixitup.features.has.transitions) {\n // Abort\n\n if (self.config.debug.fauxAsync) {\n setTimeout(function() {\n self.cleanUp(operation);\n }, self.config.animation.duration);\n } else {\n self.cleanUp(operation);\n }\n\n return self.callFilters('promiseGoMix', deferred.promise, arguments);\n }\n\n // If we should animate and the platform supports transitions, go for it\n\n if (window.pageYOffset !== operation.docState.scrollTop) {\n window.scrollTo(operation.docState.scrollLeft, operation.docState.scrollTop);\n }\n\n if (self.config.animation.applyPerspective) {\n self.dom.parent.style[mixitup.features.perspectiveProp] =\n self.config.animation.perspectiveDistance;\n\n self.dom.parent.style[mixitup.features.perspectiveOriginProp] =\n self.config.animation.perspectiveOrigin;\n }\n\n if (\n self.config.animation.animateResizeContainer &&\n operation.startHeight !== operation.newHeight &&\n operation.viewportDeltaY !== operation.startHeight - operation.newHeight\n ) {\n self.dom.parent.style.height = operation.startHeight + 'px';\n }\n\n if (\n self.config.animation.animateResizeContainer &&\n operation.startWidth !== operation.newWidth &&\n operation.viewportDeltaX !== operation.startWidth - operation.newWidth\n ) {\n self.dom.parent.style.width = operation.startWidth + 'px';\n }\n\n if (operation.startHeight === operation.newHeight) {\n self.dom.parent.style.height = operation.startHeight + 'px';\n }\n\n if (operation.startWidth === operation.newWidth) {\n self.dom.parent.style.width = operation.startWidth + 'px';\n }\n\n if (operation.startHeight === operation.newHeight && operation.startWidth === operation.newWidth) {\n self.dom.parent.style.overflow = 'hidden';\n }\n\n requestAnimationFrame(function() {\n self.moveTargets(operation);\n });\n\n return self.callFilters('promiseGoMix', deferred.promise, arguments);\n },\n\n /**\n * @private\n * @instance\n * @since 2.0.0\n * @param {Operation} operation\n * @return {void}\n */\n\n getStartMixData: function(operation) {\n var self = this,\n parentStyle = window.getComputedStyle(self.dom.parent),\n parentRect = self.dom.parent.getBoundingClientRect(),\n target = null,\n data = {},\n i = -1,\n boxSizing = parentStyle[mixitup.features.boxSizingProp];\n\n self.incPadding = (boxSizing === 'border-box');\n\n self.callActions('beforeGetStartMixData', arguments);\n\n for (i = 0; target = operation.show[i]; i++) {\n data = target.getPosData();\n\n operation.showPosData[i] = {\n startPosData: data\n };\n }\n\n for (i = 0; target = operation.toHide[i]; i++) {\n data = target.getPosData();\n\n operation.toHidePosData[i] = {\n startPosData: data\n };\n }\n\n operation.startX = parentRect.left;\n operation.startY = parentRect.top;\n\n operation.startHeight = self.incPadding ?\n parentRect.height :\n parentRect.height -\n parseFloat(parentStyle.paddingTop) -\n parseFloat(parentStyle.paddingBottom) -\n parseFloat(parentStyle.borderTop) -\n parseFloat(parentStyle.borderBottom);\n\n operation.startWidth = self.incPadding ?\n parentRect.width :\n parentRect.width -\n parseFloat(parentStyle.paddingLeft) -\n parseFloat(parentStyle.paddingRight) -\n parseFloat(parentStyle.borderLeft) -\n parseFloat(parentStyle.borderRight);\n\n self.callActions('afterGetStartMixData', arguments);\n },\n\n /**\n * @private\n * @instance\n * @since 2.0.0\n * @param {Operation} operation\n * @return {void}\n */\n\n setInter: function(operation) {\n var self = this,\n target = null,\n i = -1;\n\n self.callActions('beforeSetInter', arguments);\n\n // Prevent scrollbar flicker on non-inertial scroll platforms by clamping height/width\n\n if (self.config.animation.clampHeight) {\n self.dom.parent.style.height = operation.startHeight + 'px';\n self.dom.parent.style.overflow = 'hidden';\n }\n\n if (self.config.animation.clampWidth) {\n self.dom.parent.style.width = operation.startWidth + 'px';\n self.dom.parent.style.overflow = 'hidden';\n }\n\n for (i = 0; target = operation.toShow[i]; i++) {\n target.show();\n }\n\n if (operation.willChangeLayout) {\n h.removeClass(self.dom.container, operation.startContainerClassName);\n h.addClass(self.dom.container, operation.newContainerClassName);\n }\n\n self.callActions('afterSetInter', arguments);\n },\n\n /**\n * @private\n * @instance\n * @since 2.0.0\n * @param {Operation} operation\n * @return {void}\n */\n\n getInterMixData: function(operation) {\n var self = this,\n target = null,\n i = -1;\n\n self.callActions('beforeGetInterMixData', arguments);\n\n for (i = 0; target = operation.show[i]; i++) {\n operation.showPosData[i].interPosData = target.getPosData();\n }\n\n for (i = 0; target = operation.toHide[i]; i++) {\n operation.toHidePosData[i].interPosData = target.getPosData();\n }\n\n self.callActions('afterGetInterMixData', arguments);\n },\n\n /**\n * @private\n * @instance\n * @since 2.0.0\n * @param {Operation} operation\n * @return {void}\n */\n\n setFinal: function(operation) {\n var self = this,\n target = null,\n i = -1;\n\n self.callActions('beforeSetFinal', arguments);\n\n operation.willSort && self.printSort(false, operation);\n\n for (i = 0; target = operation.toHide[i]; i++) {\n target.hide();\n }\n\n self.callActions('afterSetFinal', arguments);\n },\n\n /**\n * @private\n * @instance\n * @since 2.0.0\n * @param {Operation} operation\n * @return {void}\n */\n\n getFinalMixData: function(operation) {\n var self = this,\n parentStyle = null,\n parentRect = null,\n target = null,\n i = -1;\n\n self.callActions('beforeGetFinalMixData', arguments);\n\n for (i = 0; target = operation.show[i]; i++) {\n operation.showPosData[i].finalPosData = target.getPosData();\n }\n\n for (i = 0; target = operation.toHide[i]; i++) {\n operation.toHidePosData[i].finalPosData = target.getPosData();\n }\n\n // Remove clamping\n\n if (self.config.animation.clampHeight || self.config.animation.clampWidth) {\n self.dom.parent.style.height =\n self.dom.parent.style.width =\n self.dom.parent.style.overflow = '';\n }\n\n if (!self.incPadding) {\n parentStyle = window.getComputedStyle(self.dom.parent);\n }\n\n parentRect = self.dom.parent.getBoundingClientRect();\n\n operation.newX = parentRect.left;\n operation.newY = parentRect.top;\n\n operation.newHeight = self.incPadding ?\n parentRect.height :\n parentRect.height -\n parseFloat(parentStyle.paddingTop) -\n parseFloat(parentStyle.paddingBottom) -\n parseFloat(parentStyle.borderTop) -\n parseFloat(parentStyle.borderBottom);\n\n operation.newWidth = self.incPadding ?\n parentRect.width :\n parentRect.width -\n parseFloat(parentStyle.paddingLeft) -\n parseFloat(parentStyle.paddingRight) -\n parseFloat(parentStyle.borderLeft) -\n parseFloat(parentStyle.borderRight);\n\n operation.viewportDeltaX = operation.docState.viewportWidth - this.dom.document.documentElement.clientWidth;\n operation.viewportDeltaY = operation.docState.viewportHeight - this.dom.document.documentElement.clientHeight;\n\n if (operation.willSort) {\n self.printSort(true, operation);\n }\n\n for (i = 0; target = operation.toShow[i]; i++) {\n target.hide();\n }\n\n for (i = 0; target = operation.toHide[i]; i++) {\n target.show();\n }\n\n if (operation.willChangeLayout) {\n h.removeClass(self.dom.container, operation.newContainerClassName);\n h.addClass(self.dom.container, self.config.layout.containerClassName);\n }\n\n self.callActions('afterGetFinalMixData', arguments);\n },\n\n /**\n * @private\n * @instance\n * @since 3.0.0\n * @param {Operation} operation\n */\n\n getTweenData: function(operation) {\n var self = this,\n target = null,\n posData = null,\n effectNames = Object.getOwnPropertyNames(self.effectsIn),\n effectName = '',\n effect = null,\n widthChange = -1,\n heightChange = -1,\n i = -1,\n j = -1;\n\n self.callActions('beforeGetTweenData', arguments);\n\n for (i = 0; target = operation.show[i]; i++) {\n posData = operation.showPosData[i];\n posData.posIn = new mixitup.StyleData();\n posData.posOut = new mixitup.StyleData();\n posData.tweenData = new mixitup.StyleData();\n\n // Process x and y\n\n if (target.isShown) {\n posData.posIn.x = posData.startPosData.x - posData.interPosData.x;\n posData.posIn.y = posData.startPosData.y - posData.interPosData.y;\n } else {\n posData.posIn.x = posData.posIn.y = 0;\n }\n\n posData.posOut.x = posData.finalPosData.x - posData.interPosData.x;\n posData.posOut.y = posData.finalPosData.y - posData.interPosData.y;\n\n // Process opacity\n\n posData.posIn.opacity = target.isShown ? 1 : self.effectsIn.opacity;\n posData.posOut.opacity = 1;\n posData.tweenData.opacity = posData.posOut.opacity - posData.posIn.opacity;\n\n // Adjust x and y if not nudging\n\n if (!target.isShown && !self.config.animation.nudge) {\n posData.posIn.x = posData.posOut.x;\n posData.posIn.y = posData.posOut.y;\n }\n\n posData.tweenData.x = posData.posOut.x - posData.posIn.x;\n posData.tweenData.y = posData.posOut.y - posData.posIn.y;\n\n // Process width, height, and margins\n\n if (self.config.animation.animateResizeTargets) {\n posData.posIn.width = posData.startPosData.width;\n posData.posIn.height = posData.startPosData.height;\n\n // \"||\" Prevents width/height change from including 0 width/height if hiding or showing\n\n widthChange = (posData.startPosData.width || posData.finalPosData.width) - posData.interPosData.width;\n\n posData.posIn.marginRight = posData.startPosData.marginRight - widthChange;\n\n heightChange = (posData.startPosData.height || posData.finalPosData.height) - posData.interPosData.height;\n\n posData.posIn.marginBottom = posData.startPosData.marginBottom - heightChange;\n\n posData.posOut.width = posData.finalPosData.width;\n posData.posOut.height = posData.finalPosData.height;\n\n widthChange = (posData.finalPosData.width || posData.startPosData.width) - posData.interPosData.width;\n\n posData.posOut.marginRight = posData.finalPosData.marginRight - widthChange;\n\n heightChange = (posData.finalPosData.height || posData.startPosData.height) - posData.interPosData.height;\n\n posData.posOut.marginBottom = posData.finalPosData.marginBottom - heightChange;\n\n posData.tweenData.width = posData.posOut.width - posData.posIn.width;\n posData.tweenData.height = posData.posOut.height - posData.posIn.height;\n posData.tweenData.marginRight = posData.posOut.marginRight - posData.posIn.marginRight;\n posData.tweenData.marginBottom = posData.posOut.marginBottom - posData.posIn.marginBottom;\n }\n\n // Process transforms\n\n for (j = 0; effectName = effectNames[j]; j++) {\n effect = self.effectsIn[effectName];\n\n if (!(effect instanceof mixitup.TransformData) || !effect.value) continue;\n\n posData.posIn[effectName].value = effect.value;\n posData.posOut[effectName].value = 0;\n\n posData.tweenData[effectName].value =\n posData.posOut[effectName].value - posData.posIn[effectName].value;\n\n posData.posIn[effectName].unit =\n posData.posOut[effectName].unit =\n posData.tweenData[effectName].unit =\n effect.unit;\n }\n }\n\n for (i = 0; target = operation.toHide[i]; i++) {\n posData = operation.toHidePosData[i];\n posData.posIn = new mixitup.StyleData();\n posData.posOut = new mixitup.StyleData();\n posData.tweenData = new mixitup.StyleData();\n\n // Process x and y\n\n posData.posIn.x = target.isShown ? posData.startPosData.x - posData.interPosData.x : 0;\n posData.posIn.y = target.isShown ? posData.startPosData.y - posData.interPosData.y : 0;\n posData.posOut.x = self.config.animation.nudge ? 0 : posData.posIn.x;\n posData.posOut.y = self.config.animation.nudge ? 0 : posData.posIn.y;\n posData.tweenData.x = posData.posOut.x - posData.posIn.x;\n posData.tweenData.y = posData.posOut.y - posData.posIn.y;\n\n // Process width, height, and margins\n\n if (self.config.animation.animateResizeTargets) {\n posData.posIn.width = posData.startPosData.width;\n posData.posIn.height = posData.startPosData.height;\n\n widthChange = posData.startPosData.width - posData.interPosData.width;\n\n posData.posIn.marginRight = posData.startPosData.marginRight - widthChange;\n\n heightChange = posData.startPosData.height - posData.interPosData.height;\n\n posData.posIn.marginBottom = posData.startPosData.marginBottom - heightChange;\n }\n\n // Process opacity\n\n posData.posIn.opacity = 1;\n posData.posOut.opacity = self.effectsOut.opacity;\n posData.tweenData.opacity = posData.posOut.opacity - posData.posIn.opacity;\n\n // Process transforms\n\n for (j = 0; effectName = effectNames[j]; j++) {\n effect = self.effectsOut[effectName];\n\n if (!(effect instanceof mixitup.TransformData) || !effect.value) continue;\n\n posData.posIn[effectName].value = 0;\n posData.posOut[effectName].value = effect.value;\n\n posData.tweenData[effectName].value =\n posData.posOut[effectName].value - posData.posIn[effectName].value;\n\n posData.posIn[effectName].unit =\n posData.posOut[effectName].unit =\n posData.tweenData[effectName].unit =\n effect.unit;\n }\n }\n\n self.callActions('afterGetTweenData', arguments);\n },\n\n /**\n * @private\n * @instance\n * @since 3.0.0\n * @param {Operation} operation\n * @return {void}\n */\n\n moveTargets: function(operation) {\n var self = this,\n target = null,\n moveData = null,\n posData = null,\n statusChange = '',\n willTransition = false,\n staggerIndex = -1,\n i = -1,\n checkProgress = self.checkProgress.bind(self);\n\n self.callActions('beforeMoveTargets', arguments);\n\n // TODO: this is an extra loop in addition to the calcs\n // done in getOperation, could some of this be done there?\n\n for (i = 0; target = operation.show[i]; i++) {\n moveData = new mixitup.IMoveData();\n posData = operation.showPosData[i];\n\n statusChange = target.isShown ? 'none' : 'show';\n\n willTransition = self.willTransition(\n statusChange,\n operation.hasEffect,\n posData.posIn,\n posData.posOut\n );\n\n if (willTransition) {\n // Prevent non-transitioning targets from incrementing the staggerIndex\n\n staggerIndex++;\n }\n\n target.show();\n\n moveData.posIn = posData.posIn;\n moveData.posOut = posData.posOut;\n moveData.statusChange = statusChange;\n moveData.staggerIndex = staggerIndex;\n moveData.operation = operation;\n moveData.callback = willTransition ? checkProgress : null;\n\n target.move(moveData);\n }\n\n for (i = 0; target = operation.toHide[i]; i++) {\n posData = operation.toHidePosData[i];\n moveData = new mixitup.IMoveData();\n\n statusChange = 'hide';\n\n willTransition = self.willTransition(statusChange, posData.posIn, posData.posOut);\n\n moveData.posIn = posData.posIn;\n moveData.posOut = posData.posOut;\n moveData.statusChange = statusChange;\n moveData.staggerIndex = i;\n moveData.operation = operation;\n moveData.callback = willTransition ? checkProgress : null;\n\n target.move(moveData);\n }\n\n if (self.config.animation.animateResizeContainer) {\n self.dom.parent.style[mixitup.features.transitionProp] =\n 'height ' + self.config.animation.duration + 'ms ease, ' +\n 'width ' + self.config.animation.duration + 'ms ease ';\n\n requestAnimationFrame(function() {\n if (\n operation.startHeight !== operation.newHeight &&\n operation.viewportDeltaY !== operation.startHeight - operation.newHeight\n ) {\n self.dom.parent.style.height = operation.newHeight + 'px';\n }\n\n if (\n operation.startWidth !== operation.newWidth &&\n operation.viewportDeltaX !== operation.startWidth - operation.newWidth\n ) {\n self.dom.parent.style.width = operation.newWidth + 'px';\n }\n });\n }\n\n if (operation.willChangeLayout) {\n h.removeClass(self.dom.container, self.config.layout.ContainerClassName);\n h.addClass(self.dom.container, operation.newContainerClassName);\n }\n\n self.callActions('afterMoveTargets', arguments);\n },\n\n /**\n * @private\n * @instance\n * @return {boolean}\n */\n\n hasEffect: function() {\n var self = this,\n EFFECTABLES = [\n 'scale',\n 'translateX', 'translateY', 'translateZ',\n 'rotateX', 'rotateY', 'rotateZ'\n ],\n effectName = '',\n effect = null,\n result = false,\n value = -1,\n i = -1;\n\n if (self.effectsIn.opacity !== 1) {\n return self.callFilters('resultHasEffect', true, arguments);\n }\n\n for (i = 0; effectName = EFFECTABLES[i]; i++) {\n effect = self.effectsIn[effectName];\n value = (typeof effect && effect.value !== 'undefined') ?\n effect.value : effect;\n\n if (value !== 0) {\n result = true;\n\n break;\n }\n }\n\n return self.callFilters('resultHasEffect', result, arguments);\n },\n\n /**\n * Determines if a target element will transition in\n * some fasion and therefore requires binding of\n * transitionEnd\n *\n * @private\n * @instance\n * @since 3.0.0\n * @param {string} statusChange\n * @param {boolean} hasEffect\n * @param {StyleData} posIn\n * @param {StyleData} posOut\n * @return {boolean}\n */\n\n willTransition: function(statusChange, hasEffect, posIn, posOut) {\n var self = this,\n result = false;\n\n if (!h.isVisible(self.dom.container)) {\n // If the container is not visible, the transitionEnd\n // event will not occur and MixItUp will hang\n\n result = false;\n } else if (\n (statusChange !== 'none' && hasEffect) ||\n posIn.x !== posOut.x ||\n posIn.y !== posOut.y\n ) {\n // If opacity and/or translate will change\n\n result = true;\n } else if (self.config.animation.animateResizeTargets) {\n // Check if width, height or margins will change\n\n result = (\n posIn.width !== posOut.width ||\n posIn.height !== posOut.height ||\n posIn.marginRight !== posOut.marginRight ||\n posIn.marginTop !== posOut.marginTop\n );\n } else {\n result = false;\n }\n\n return self.callFilters('resultWillTransition', result, arguments);\n },\n\n /**\n * @private\n * @instance\n * @since 2.0.0\n * @param {Operation} operation\n * @return {void}\n */\n\n checkProgress: function(operation) {\n var self = this;\n\n self.targetsDone++;\n\n if (self.targetsBound === self.targetsDone) {\n self.cleanUp(operation);\n }\n },\n\n /**\n * @private\n * @instance\n * @since 2.0.0\n * @param {Operation} operation\n * @return {void}\n */\n\n cleanUp: function(operation) {\n var self = this,\n target = null,\n whitespaceBefore = null,\n whitespaceAfter = null,\n nextInQueue = null,\n i = -1;\n\n self.callActions('beforeCleanUp', arguments);\n\n self.targetsMoved =\n self.targetsImmovable =\n self.targetsBound =\n self.targetsDone = 0;\n\n for (i = 0; target = operation.show[i]; i++) {\n target.cleanUp();\n\n target.show();\n }\n\n for (i = 0; target = operation.toHide[i]; i++) {\n target.cleanUp();\n\n target.hide();\n }\n\n if (operation.willSort) {\n self.printSort(false, operation);\n }\n\n // Remove any styles applied to the parent container\n\n self.dom.parent.style[mixitup.features.transitionProp] =\n self.dom.parent.style.height =\n self.dom.parent.style.width =\n self.dom.parent.style.overflow =\n self.dom.parent.style[mixitup.features.perspectiveProp] =\n self.dom.parent.style[mixitup.features.perspectiveOriginProp] = '';\n\n if (operation.willChangeLayout) {\n h.removeClass(self.dom.container, operation.startContainerClassName);\n h.addClass(self.dom.container, operation.newContainerClassName);\n }\n\n if (operation.toRemove.length) {\n for (i = 0; target = self.targets[i]; i++) {\n if (operation.toRemove.indexOf(target) > -1) {\n if (\n (whitespaceBefore = target.dom.el.previousSibling) && whitespaceBefore.nodeName === '#text' &&\n (whitespaceAfter = target.dom.el.nextSibling) && whitespaceAfter.nodeName === '#text'\n ) {\n h.removeWhitespace(whitespaceBefore);\n }\n\n if (!operation.willSort) {\n // NB: Sorting will remove targets as a bi-product of `printSort()`\n\n self.dom.parent.removeChild(target.dom.el);\n }\n\n self.targets.splice(i, 1);\n\n target.isInDom = false;\n\n i--;\n }\n }\n\n // Since targets have been removed, the original order must be updated\n\n self.origOrder = self.targets;\n }\n\n if (operation.willSort) {\n self.targets = operation.newOrder;\n }\n\n self.state = operation.newState;\n self.lastOperation = operation;\n\n self.dom.targets = self.state.targets;\n\n // mixEnd\n\n mixitup.events.fire('mixEnd', self.dom.container, {\n state: self.state,\n instance: self\n }, self.dom.document);\n\n if (typeof self.config.callbacks.onMixEnd === 'function') {\n self.config.callbacks.onMixEnd.call(self.dom.container, self.state, self);\n }\n\n if (operation.hasFailed) {\n // mixFail\n\n mixitup.events.fire('mixFail', self.dom.container, {\n state: self.state,\n instance: self\n }, self.dom.document);\n\n if (typeof self.config.callbacks.onMixFail === 'function') {\n self.config.callbacks.onMixFail.call(self.dom.container, self.state, self);\n }\n\n h.addClass(self.dom.container, h.getClassname(self.config.classNames, 'container', self.config.classNames.modifierFailed));\n }\n\n // User-defined callback function\n\n if (typeof self.userCallback === 'function') {\n self.userCallback.call(self.dom.container, self.state, self);\n }\n\n if (typeof self.userDeferred.resolve === 'function') {\n self.userDeferred.resolve(self.state);\n }\n\n self.userCallback = null;\n self.userDeferred = null;\n self.lastClicked = null;\n self.isToggling = false;\n self.isBusy = false;\n\n if (self.queue.length) {\n self.callActions('beforeReadQueueCleanUp', arguments);\n\n nextInQueue = self.queue.shift();\n\n // Update non-public API properties stored in queue\n\n self.userDeferred = nextInQueue.deferred;\n self.isToggling = nextInQueue.isToggling;\n self.lastClicked = nextInQueue.triggerElement;\n\n if (nextInQueue.instruction.command instanceof mixitup.CommandMultimix) {\n self.multimix.apply(self, nextInQueue.args);\n } else {\n self.dataset.apply(self, nextInQueue.args);\n }\n }\n\n self.callActions('afterCleanUp', arguments);\n },\n\n /**\n * @private\n * @instance\n * @since 2.0.0\n * @param {Array<*>} args\n * @return {mixitup.UserInstruction}\n */\n\n parseMultimixArgs: function(args) {\n var self = this,\n instruction = new mixitup.UserInstruction(),\n arg = null,\n i = -1;\n\n instruction.animate = self.config.animation.enable;\n instruction.command = new mixitup.CommandMultimix();\n\n for (i = 0; i < args.length; i++) {\n arg = args[i];\n\n if (arg === null) continue;\n\n if (typeof arg === 'object') {\n h.extend(instruction.command, arg);\n } else if (typeof arg === 'boolean') {\n instruction.animate = arg;\n } else if (typeof arg === 'function') {\n instruction.callback = arg;\n }\n }\n\n // Coerce arbitrary command arguments into typed command objects\n\n if (instruction.command.insert && !(instruction.command.insert instanceof mixitup.CommandInsert)) {\n instruction.command.insert = self.parseInsertArgs([instruction.command.insert]).command;\n }\n\n if (instruction.command.remove && !(instruction.command.remove instanceof mixitup.CommandRemove)) {\n instruction.command.remove = self.parseRemoveArgs([instruction.command.remove]).command;\n }\n\n if (instruction.command.filter && !(instruction.command.filter instanceof mixitup.CommandFilter)) {\n instruction.command.filter = self.parseFilterArgs([instruction.command.filter]).command;\n }\n\n if (instruction.command.sort && !(instruction.command.sort instanceof mixitup.CommandSort)) {\n instruction.command.sort = self.parseSortArgs([instruction.command.sort]).command;\n }\n\n if (instruction.command.changeLayout && !(instruction.command.changeLayout instanceof mixitup.CommandChangeLayout)) {\n instruction.command.changeLayout = self.parseChangeLayoutArgs([instruction.command.changeLayout]).command;\n }\n\n instruction = self.callFilters('instructionParseMultimixArgs', instruction, arguments);\n\n h.freeze(instruction);\n\n return instruction;\n },\n\n /**\n * @private\n * @instance\n * @since 2.0.0\n * @param {Array<*>} args\n * @return {mixitup.UserInstruction}\n */\n\n parseFilterArgs: function(args) {\n var self = this,\n instruction = new mixitup.UserInstruction(),\n arg = null,\n i = -1;\n\n instruction.animate = self.config.animation.enable;\n instruction.command = new mixitup.CommandFilter();\n\n for (i = 0; i < args.length; i++) {\n arg = args[i];\n\n if (typeof arg === 'string') {\n // Selector\n\n instruction.command.selector = arg;\n } else if (arg === null) {\n instruction.command.collection = [];\n } else if (typeof arg === 'object' && h.isElement(arg, self.dom.document)) {\n // Single element\n\n instruction.command.collection = [arg];\n } else if (typeof arg === 'object' && typeof arg.length !== 'undefined') {\n // Multiple elements in array, NodeList or jQuery collection\n\n instruction.command.collection = h.arrayFromList(arg);\n } else if (typeof arg === 'object') {\n // Filter command\n\n h.extend(instruction.command, arg);\n } else if (typeof arg === 'boolean') {\n instruction.animate = arg;\n } else if (typeof arg === 'function') {\n instruction.callback = arg;\n }\n }\n\n if (instruction.command.selector && instruction.command.collection) {\n throw new Error(mixitup.messages.errorFilterInvalidArguments());\n }\n\n instruction = self.callFilters('instructionParseFilterArgs', instruction, arguments);\n\n h.freeze(instruction);\n\n return instruction;\n },\n\n parseSortArgs: function(args) {\n var self = this,\n instruction = new mixitup.UserInstruction(),\n arg = null,\n sortString = '',\n i = -1;\n\n instruction.animate = self.config.animation.enable;\n instruction.command = new mixitup.CommandSort();\n\n for (i = 0; i < args.length; i++) {\n arg = args[i];\n\n if (arg === null) continue;\n\n switch (typeof arg) {\n case 'string':\n // Sort string\n\n sortString = arg;\n\n break;\n case 'object':\n // Array of element references\n\n if (arg.length) {\n instruction.command.collection = h.arrayFromList(arg);\n }\n\n break;\n case 'boolean':\n instruction.animate = arg;\n\n break;\n case 'function':\n instruction.callback = arg;\n\n break;\n }\n }\n\n if (sortString) {\n instruction.command = self.parseSortString(sortString, instruction.command);\n }\n\n instruction = self.callFilters('instructionParseSortArgs', instruction, arguments);\n\n h.freeze(instruction);\n\n return instruction;\n },\n\n /**\n * @private\n * @instance\n * @since 2.0.0\n * @param {Array<*>} args\n * @return {mixitup.UserInstruction}\n */\n\n parseInsertArgs: function(args) {\n var self = this,\n instruction = new mixitup.UserInstruction(),\n arg = null,\n i = -1;\n\n instruction.animate = self.config.animation.enable;\n instruction.command = new mixitup.CommandInsert();\n\n for (i = 0; i < args.length; i++) {\n arg = args[i];\n\n if (arg === null) continue;\n\n if (typeof arg === 'number') {\n // Insert index\n\n instruction.command.index = arg;\n } else if (typeof arg === 'string' && ['before', 'after'].indexOf(arg) > -1) {\n // 'before'/'after'\n\n instruction.command.position = arg;\n } else if (typeof arg === 'string') {\n // Markup\n\n instruction.command.collection =\n h.arrayFromList(h.createElement(arg).childNodes);\n } else if (typeof arg === 'object' && h.isElement(arg, self.dom.document)) {\n // Single element\n\n !instruction.command.collection.length ?\n (instruction.command.collection = [arg]) :\n (instruction.command.sibling = arg);\n } else if (typeof arg === 'object' && arg.length) {\n // Multiple elements in array or jQuery collection\n\n !instruction.command.collection.length ?\n (instruction.command.collection = arg) :\n instruction.command.sibling = arg[0];\n } else if (typeof arg === 'object' && arg.childNodes && arg.childNodes.length) {\n // Document fragment\n\n !instruction.command.collection.length ?\n instruction.command.collection = h.arrayFromList(arg.childNodes) :\n instruction.command.sibling = arg.childNodes[0];\n } else if (typeof arg === 'object') {\n // Insert command\n\n h.extend(instruction.command, arg);\n } else if (typeof arg === 'boolean') {\n instruction.animate = arg;\n } else if (typeof arg === 'function') {\n instruction.callback = arg;\n }\n }\n\n if (instruction.command.index && instruction.command.sibling) {\n throw new Error(mixitup.messages.errorInsertInvalidArguments());\n }\n\n if (!instruction.command.collection.length && self.config.debug.showWarnings) {\n console.warn(mixitup.messages.warningInsertNoElements());\n }\n\n instruction = self.callFilters('instructionParseInsertArgs', instruction, arguments);\n\n h.freeze(instruction);\n\n return instruction;\n },\n\n /**\n * @private\n * @instance\n * @since 3.0.0\n * @param {Array<*>} args\n * @return {mixitup.UserInstruction}\n */\n\n parseRemoveArgs: function(args) {\n var self = this,\n instruction = new mixitup.UserInstruction(),\n target = null,\n arg = null,\n i = -1;\n\n instruction.animate = self.config.animation.enable;\n instruction.command = new mixitup.CommandRemove();\n\n for (i = 0; i < args.length; i++) {\n arg = args[i];\n\n if (arg === null) continue;\n\n switch (typeof arg) {\n case 'number':\n if (self.targets[arg]) {\n instruction.command.targets[0] = self.targets[arg];\n }\n\n break;\n case 'string':\n instruction.command.collection = h.arrayFromList(self.dom.parent.querySelectorAll(arg));\n\n break;\n case 'object':\n if (arg && arg.length) {\n instruction.command.collection = arg;\n } else if (h.isElement(arg, self.dom.document)) {\n instruction.command.collection = [arg];\n } else {\n // Remove command\n\n h.extend(instruction.command, arg);\n }\n\n break;\n case 'boolean':\n instruction.animate = arg;\n\n break;\n case 'function':\n instruction.callback = arg;\n\n break;\n }\n }\n\n if (instruction.command.collection.length) {\n for (i = 0; target = self.targets[i]; i++) {\n if (instruction.command.collection.indexOf(target.dom.el) > -1) {\n instruction.command.targets.push(target);\n }\n }\n }\n\n if (!instruction.command.targets.length && self.config.debug.showWarnings) {\n console.warn(mixitup.messages.warningRemoveNoElements());\n }\n\n h.freeze(instruction);\n\n return instruction;\n },\n\n /**\n * @private\n * @instance\n * @since 3.0.0\n * @param {Array<*>} args\n * @return {mixitup.UserInstruction}\n */\n\n parseDatasetArgs: function(args) {\n var self = this,\n instruction = new mixitup.UserInstruction(),\n arg = null,\n i = -1;\n\n instruction.animate = self.config.animation.enable;\n instruction.command = new mixitup.CommandDataset();\n\n for (i = 0; i < args.length; i++) {\n arg = args[i];\n\n if (arg === null) continue;\n\n switch (typeof arg) {\n case 'object':\n if (Array.isArray(arg) || typeof arg.length === 'number') {\n instruction.command.dataset = arg;\n } else {\n // Change layout command\n\n h.extend(instruction.command, arg);\n }\n\n break;\n case 'boolean':\n instruction.animate = arg;\n\n break;\n case 'function':\n instruction.callback = arg;\n\n break;\n }\n }\n\n h.freeze(instruction);\n\n return instruction;\n },\n\n /**\n * @private\n * @instance\n * @since 3.0.0\n * @param {Array<*>} args\n * @return {mixitup.UserInstruction}\n */\n\n parseChangeLayoutArgs: function(args) {\n var self = this,\n instruction = new mixitup.UserInstruction(),\n arg = null,\n i = -1;\n\n instruction.animate = self.config.animation.enable;\n instruction.command = new mixitup.CommandChangeLayout();\n\n for (i = 0; i < args.length; i++) {\n arg = args[i];\n\n if (arg === null) continue;\n\n switch (typeof arg) {\n case 'string':\n instruction.command.containerClassName = arg;\n\n break;\n case 'object':\n // Change layout command\n\n h.extend(instruction.command, arg);\n\n break;\n case 'boolean':\n instruction.animate = arg;\n\n break;\n case 'function':\n instruction.callback = arg;\n\n break;\n }\n }\n\n h.freeze(instruction);\n\n return instruction;\n },\n\n /**\n * @private\n * @instance\n * @since 3.0.0\n * @param {mixitup.QueueItem} queueItem\n * @return {Promise.}\n */\n\n queueMix: function(queueItem) {\n var self = this,\n deferred = null,\n toggleSelector = '';\n\n self.callActions('beforeQueueMix', arguments);\n\n deferred = h.defer(mixitup.libraries);\n\n if (self.config.animation.queue && self.queue.length < self.config.animation.queueLimit) {\n queueItem.deferred = deferred;\n\n self.queue.push(queueItem);\n\n // Keep controls in sync with user interactions. Mixer will catch up as it drains the queue.\n\n if (self.config.controls.enable) {\n if (self.isToggling) {\n self.buildToggleArray(queueItem.instruction.command);\n\n toggleSelector = self.getToggleSelector();\n\n self.updateControls({\n filter: {\n selector: toggleSelector\n }\n });\n } else {\n self.updateControls(queueItem.instruction.command);\n }\n }\n } else {\n if (self.config.debug.showWarnings) {\n console.warn(mixitup.messages.warningMultimixInstanceQueueFull());\n }\n\n deferred.resolve(self.state);\n\n mixitup.events.fire('mixBusy', self.dom.container, {\n state: self.state,\n instance: self\n }, self.dom.document);\n\n if (typeof self.config.callbacks.onMixBusy === 'function') {\n self.config.callbacks.onMixBusy.call(self.dom.container, self.state, self);\n }\n }\n\n return self.callFilters('promiseQueueMix', deferred.promise, arguments);\n },\n\n /**\n * @private\n * @instance\n * @since 3.0.0\n * @param {Array.} newDataset\n * @return {Operation}\n */\n\n getDataOperation: function(newDataset) {\n var self = this,\n operation = new mixitup.Operation(),\n startDataset = [];\n\n operation = self.callFilters('operationUnmappedGetDataOperation', operation, arguments);\n\n if (self.dom.targets.length && !(startDataset = (self.state.activeDataset || [])).length) {\n throw new Error(mixitup.messages.errorDatasetNotSet());\n }\n\n operation.id = h.randomHex();\n operation.startState = self.state;\n operation.startDataset = startDataset;\n operation.newDataset = newDataset.slice();\n\n self.diffDatasets(operation);\n\n operation.startOrder = self.targets;\n operation.newOrder = operation.show;\n\n if (self.config.animation.enable) {\n self.getStartMixData(operation);\n self.setInter(operation);\n\n operation.docState = h.getDocumentState(self.dom.document);\n\n self.getInterMixData(operation);\n self.setFinal(operation);\n self.getFinalMixData(operation);\n\n self.parseEffects();\n\n operation.hasEffect = self.hasEffect();\n\n self.getTweenData(operation);\n }\n\n self.targets = operation.show.slice();\n\n operation.newState = self.buildState(operation);\n\n // NB: Targets to be removed must be included in `self.targets` for removal during clean up,\n // but are added after state is built so that state is accurate\n\n Array.prototype.push.apply(self.targets, operation.toRemove);\n\n operation = self.callFilters('operationMappedGetDataOperation', operation, arguments);\n\n return operation;\n },\n\n /**\n * @private\n * @instance\n * @since 3.0.0\n * @param {mixitup.Operation} operation\n * @return {void}\n */\n\n diffDatasets: function(operation) {\n var self = this,\n persistantStartIds = [],\n persistantNewIds = [],\n insertedTargets = [],\n data = null,\n target = null,\n el = null,\n frag = null,\n nextEl = null,\n uids = {},\n id = '',\n i = -1;\n\n self.callActions('beforeDiffDatasets', arguments);\n\n for (i = 0; data = operation.newDataset[i]; i++) {\n if (typeof (id = data[self.config.data.uidKey]) === 'undefined' || id.toString().length < 1) {\n throw new TypeError(mixitup.messages.errorDatasetInvalidUidKey({\n uidKey: self.config.data.uidKey\n }));\n }\n\n if (!uids[id]) {\n uids[id] = true;\n } else {\n throw new Error(mixitup.messages.errorDatasetDuplicateUid({\n uid: id\n }));\n }\n\n if ((target = self.cache[id]) instanceof mixitup.Target) {\n // Already in cache\n\n if (self.config.data.dirtyCheck && !h.deepEquals(data, target.data)) {\n // change detected\n\n el = target.render(data);\n\n target.data = data;\n\n if (el !== target.dom.el) {\n // Update target element reference\n\n if (target.isInDom) {\n target.unbindEvents();\n\n self.dom.parent.replaceChild(el, target.dom.el);\n }\n\n if (!target.isShown) {\n el.style.display = 'none';\n }\n\n target.dom.el = el;\n\n if (target.isInDom) {\n target.bindEvents();\n }\n }\n }\n\n el = target.dom.el;\n } else {\n // New target\n\n target = new mixitup.Target();\n\n target.init(null, self, data);\n\n target.hide();\n }\n\n if (!target.isInDom) {\n // Adding to DOM\n\n if (!frag) {\n // Open frag\n\n frag = self.dom.document.createDocumentFragment();\n }\n\n if (frag.lastElementChild) {\n frag.appendChild(self.dom.document.createTextNode(' '));\n }\n\n frag.appendChild(target.dom.el);\n\n target.isInDom = true;\n\n target.unbindEvents();\n target.bindEvents();\n target.hide();\n\n operation.toShow.push(target);\n\n insertedTargets.push(target);\n } else {\n // Already in DOM\n\n nextEl = target.dom.el.nextElementSibling;\n\n persistantNewIds.push(id);\n\n if (frag) {\n // Close and insert previously opened frag\n\n if (frag.lastElementChild) {\n frag.appendChild(self.dom.document.createTextNode(' '));\n }\n\n self.insertDatasetFrag(frag, target.dom.el, insertedTargets);\n\n frag = null;\n }\n }\n\n operation.show.push(target);\n }\n\n if (frag) {\n // Unclosed frag remaining\n\n nextEl = nextEl || self.config.layout.siblingAfter;\n\n if (nextEl) {\n frag.appendChild(self.dom.document.createTextNode(' '));\n }\n\n self.insertDatasetFrag(frag, nextEl, insertedTargets);\n }\n\n for (i = 0; data = operation.startDataset[i]; i++) {\n id = data[self.config.data.uidKey];\n\n target = self.cache[id];\n\n if (operation.show.indexOf(target) < 0) {\n // Previously shown but now absent\n\n operation.hide.push(target);\n operation.toHide.push(target);\n operation.toRemove.push(target);\n } else {\n persistantStartIds.push(id);\n }\n }\n\n if (!h.isEqualArray(persistantStartIds, persistantNewIds)) {\n operation.willSort = true;\n }\n\n self.callActions('afterDiffDatasets', arguments);\n },\n\n /**\n * @private\n * @instance\n * @since 3.1.5\n * @param {DocumentFragment} frag\n * @param {(HTMLElement|null)} nextEl\n * @param {Array.} targets\n * @return {void}\n */\n\n insertDatasetFrag: function(frag, nextEl, targets) {\n var self = this;\n var insertAt = nextEl ? h.arrayFromList(self.dom.parent.children).indexOf(nextEl) : self.targets.length;\n\n self.dom.parent.insertBefore(frag, nextEl);\n\n while (targets.length) {\n self.targets.splice(insertAt, 0, targets.shift());\n\n insertAt++;\n }\n },\n\n /**\n * @private\n * @instance\n * @since 3.0.0\n * @param {mixitup.CommandSort} sortCommandA\n * @param {mixitup.CommandSort} sortCommandB\n * @return {boolean}\n */\n\n willSort: function(sortCommandA, sortCommandB) {\n var self = this,\n result = false;\n\n if (\n self.config.behavior.liveSort ||\n sortCommandA.order === 'random' ||\n sortCommandA.attribute !== sortCommandB.attribute ||\n sortCommandA.order !== sortCommandB.order ||\n sortCommandA.collection !== sortCommandB.collection ||\n (sortCommandA.next === null && sortCommandB.next) ||\n (sortCommandA.next && sortCommandB.next === null)\n ) {\n result = true;\n } else if (sortCommandA.next && sortCommandB.next) {\n result = self.willSort(sortCommandA.next, sortCommandB.next);\n } else {\n result = false;\n }\n\n return self.callFilters('resultWillSort', result, arguments);\n },\n\n /**\n * A shorthand method for `.filter('all')`. Shows all targets in the container.\n *\n * @example\n *\n * .show()\n *\n * @example Example: Showing all targets\n *\n * mixer.show()\n * .then(function(state) {\n * console.log(state.totalShow === state.totalTargets); // true\n * });\n *\n * @public\n * @instance\n * @since 3.0.0\n * @return {Promise.}\n */\n\n show: function() {\n var self = this;\n\n return self.filter('all');\n },\n\n /**\n * A shorthand method for `.filter('none')`. Hides all targets in the container.\n *\n * @example\n *\n * .hide()\n *\n * @example Example: Hiding all targets\n *\n * mixer.hide()\n * .then(function(state) {\n * console.log(state.totalShow === 0); // true\n * console.log(state.totalHide === state.totalTargets); // true\n * });\n *\n * @public\n * @instance\n * @since 3.0.0\n * @return {Promise.}\n */\n\n hide: function() {\n var self = this;\n\n return self.filter('none');\n },\n\n /**\n * Returns a boolean indicating whether or not a MixItUp operation is\n * currently in progress.\n *\n * @example\n *\n * .isMixing()\n *\n * @example Example: Checking the status of a mixer\n *\n * mixer.sort('random', function() {\n * console.log(mixer.isMixing()) // false\n * });\n *\n * console.log(mixer.isMixing()) // true\n *\n * @public\n * @instance\n * @since 2.0.0\n * @return {boolean}\n */\n\n isMixing: function() {\n var self = this;\n\n return self.isBusy;\n },\n\n /**\n * Filters all targets in the container by a provided selector string, or the values `'all'`\n * or `'none'`. Only targets matching the selector will be shown.\n *\n * @example\n *\n * .filter(selector [, animate] [, callback])\n *\n * @example Example 1: Filtering targets by a class selector\n *\n * mixer.filter('.category-a')\n * .then(function(state) {\n * console.log(state.totalShow === containerEl.querySelectorAll('.category-a').length); // true\n * });\n *\n * @example Example 2: Filtering targets by an attribute selector\n *\n * mixer.filter('[data-category~=\"a\"]')\n * .then(function(state) {\n * console.log(state.totalShow === containerEl.querySelectorAll('[data-category~=\"a\"]').length); // true\n * });\n *\n * @example Example 3: Filtering targets by a compound selector\n *\n * // Show only those targets with the classes 'category-a' AND 'category-b'\n *\n * mixer.filter('.category-a.category-c')\n * .then(function(state) {\n * console.log(state.totalShow === containerEl.querySelectorAll('.category-a.category-c').length); // true\n * });\n *\n * @example Example 4: Filtering via an element collection\n *\n * var collection = Array.from(container.querySelectorAll('.mix'));\n *\n * console.log(collection.length); // 34\n *\n * // Filter the collection manually using Array.prototype.filter\n *\n * var filtered = collection.filter(function(target) {\n * return parseInt(target.getAttribute('data-price')) > 10;\n * });\n *\n * console.log(filtered.length); // 22\n *\n * // Pass the filtered collection to MixItUp\n *\n * mixer.filter(filtered)\n * .then(function(state) {\n * console.log(state.activeFilter.collection.length === 22); // true\n * });\n *\n * @public\n * @instance\n * @since 2.0.0\n * @param {(string|HTMLElement|Array.)} selector\n * Any valid CSS selector (i.e. `'.category-a'`), or the values `'all'` or `'none'`. The filter method also accepts a reference to single target element or a collection of target elements to show.\n * @param {boolean} [animate=true]\n * An optional boolean dictating whether the operation should animate, or occur syncronously with no animation. `true` by default.\n * @param {function} [callback=null]\n * An optional callback function to be invoked after the operation has completed.\n * @return {Promise.}\n * A promise resolving with the current state object.\n */\n\n filter: function() {\n var self = this,\n instruction = self.parseFilterArgs(arguments);\n\n return self.multimix({\n filter: instruction.command\n }, instruction.animate, instruction.callback);\n },\n\n /**\n * Adds an additional selector to the currently active filter selector, concatenating\n * as per the logic defined in `controls.toggleLogic`.\n *\n * @example\n *\n * .toggleOn(selector [, animate] [, callback])\n *\n * @example Example: Toggling on a filter selector\n *\n * console.log(mixer.getState().activeFilter.selector); // '.category-a'\n *\n * mixer.toggleOn('.category-b')\n * .then(function(state) {\n * console.log(state.activeFilter.selector); // '.category-a, .category-b'\n * });\n *\n * @public\n * @instance\n * @since 3.0.0\n * @param {string} selector\n * Any valid CSS selector (i.e. `'.category-a'`)\n * @param {boolean} [animate=true]\n * An optional boolean dictating whether the operation should animate, or occur syncronously with no animation. `true` by default.\n * @param {function} [callback=null]\n * An optional callback function to be invoked after the operation has completed.\n * @return {Promise.}\n * A promise resolving with the current state object.\n */\n\n toggleOn: function() {\n var self = this,\n instruction = self.parseFilterArgs(arguments),\n selector = instruction.command.selector,\n toggleSelector = '';\n\n self.isToggling = true;\n\n if (self.toggleArray.indexOf(selector) < 0) {\n self.toggleArray.push(selector);\n }\n\n toggleSelector = self.getToggleSelector();\n\n return self.multimix({\n filter: toggleSelector\n }, instruction.animate, instruction.callback);\n },\n\n /**\n * Removes a selector from the active filter selector.\n *\n * @example\n *\n * .toggleOff(selector [, animate] [, callback])\n *\n * @example Example: Toggling off a filter selector\n *\n * console.log(mixer.getState().activeFilter.selector); // '.category-a, .category-b'\n *\n * mixer.toggleOff('.category-b')\n * .then(function(state) {\n * console.log(state.activeFilter.selector); // '.category-a'\n * });\n *\n * @public\n * @instance\n * @since 3.0.0\n * @param {string} selector\n * Any valid CSS selector (i.e. `'.category-a'`)\n * @param {boolean} [animate=true]\n * An optional boolean dictating whether the operation should animate, or occur syncronously with no animation. `true` by default.\n * @param {function} [callback=null]\n * An optional callback function to be invoked after the operation has completed.\n * @return {Promise.}\n * A promise resolving with the current state object.\n */\n\n toggleOff: function() {\n var self = this,\n instruction = self.parseFilterArgs(arguments),\n selector = instruction.command.selector,\n selectorIndex = self.toggleArray.indexOf(selector),\n toggleSelector = '';\n\n self.isToggling = true;\n\n if (selectorIndex > -1) {\n self.toggleArray.splice(selectorIndex, 1);\n }\n\n toggleSelector = self.getToggleSelector();\n\n return self.multimix({\n filter: toggleSelector\n }, instruction.animate, instruction.callback);\n },\n\n /**\n * Sorts all targets in the container according to a provided sort string.\n *\n * @example\n *\n * .sort(sortString [, animate] [, callback])\n *\n * @example Example 1: Sorting by the default DOM order\n *\n * // Reverse the default order of the targets\n *\n * mixer.sort('default:desc')\n * .then(function(state) {\n * console.log(state.activeSort.attribute === 'default'); // true\n * console.log(state.activeSort.order === 'desc'); // true\n * });\n *\n * @example Example 2: Sorting by a custom data-attribute\n *\n * // Sort the targets by the value of a `data-published-date` attribute\n *\n * mixer.sort('published-date:asc')\n * .then(function(state) {\n * console.log(state.activeSort.attribute === 'published-date'); // true\n * console.log(state.activeSort.order === 'asc'); // true\n * });\n *\n * @example Example 3: Sorting by multiple attributes\n *\n * // Sort the targets by the value of a `data-published-date` attribute, then by `data-title`\n *\n * mixer.sort('published-date:desc data-title:asc')\n * .then(function(state) {\n * console.log(state.activeSort.attribute === 'published-date'); // true\n * console.log(state.activeSort.order === 'desc'); // true\n *\n * console.log(state.activeSort.next.attribute === 'title'); // true\n * console.log(state.activeSort.next.order === 'asc'); // true\n * });\n *\n * @example Example 4: Sorting by random\n *\n * mixer.sort('random')\n * .then(function(state) {\n * console.log(state.activeSort.order === 'random') // true\n * });\n *\n * @example Example 5: Sorting via an element collection\n *\n * var collection = Array.from(container.querySelectorAll('.mix'));\n *\n * // Swap the position of two elements in the collection:\n *\n * var temp = collection[1];\n *\n * collection[1] = collection[0];\n * collection[0] = temp;\n *\n * // Pass the sorted collection to MixItUp\n *\n * mixer.sort(collection)\n * .then(function(state) {\n * console.log(state.targets[0] === collection[0]); // true\n * });\n *\n * @public\n * @instance\n * @since 2.0.0\n * @param {(string|Array.)} sortString\n * A valid sort string (e.g. `'default'`, `'published-date:asc'`, or `'random'`). The sort method also accepts an array of all target elements in a user-defined order.\n * @param {boolean} [animate=true]\n * An optional boolean dictating whether the operation should animate, or occur syncronously with no animation. `true` by default.\n * @param {function} [callback=null]\n * An optional callback function to be invoked after the operation has completed.\n * @return {Promise.}\n * A promise resolving with the current state object.\n */\n\n sort: function() {\n var self = this,\n instruction = self.parseSortArgs(arguments);\n\n return self.multimix({\n sort: instruction.command\n }, instruction.animate, instruction.callback);\n },\n\n /**\n * Changes the layout of the container by adding, removing or updating a\n * layout-specific class name. If `animation.animateResizetargets` is\n * enabled, MixItUp will attempt to gracefully animate the width, height,\n * and position of targets between layout states.\n *\n * @example\n *\n * .changeLayout(containerClassName [, animate] [, callback])\n *\n * @example Example 1: Adding a new class name to the container\n *\n * mixer.changeLayout('container-list')\n * .then(function(state) {\n * console.log(state.activeContainerClass === 'container-list'); // true\n * });\n *\n * @example Example 2: Removing a previously added class name from the container\n *\n * mixer.changeLayout('')\n * .then(function(state) {\n * console.log(state.activeContainerClass === ''); // true\n * });\n *\n * @public\n * @instance\n * @since 2.0.0\n * @param {string} containerClassName\n * A layout-specific class name to add to the container.\n * @param {boolean} [animate=true]\n * An optional boolean dictating whether the operation should animate, or occur syncronously with no animation. `true` by default.\n * @param {function} [callback=null]\n * An optional callback function to be invoked after the operation has completed.\n * @return {Promise.}\n * A promise resolving with the current state object.\n */\n\n changeLayout: function() {\n var self = this,\n instruction = self.parseChangeLayoutArgs(arguments);\n\n return self.multimix({\n changeLayout: instruction.command\n }, instruction.animate, instruction.callback);\n },\n\n /**\n * Updates the contents and order of the container to reflect the provided dataset,\n * if the dataset API is in use.\n *\n * The dataset API is designed for use in API-driven JavaScript applications, and\n * can be used instead of DOM-based methods such as `.filter()`, `.sort()`,\n * `.insert()`, etc. When used, insertion, removal, sorting and pagination can be\n * achieved purely via changes to your data model, without the uglyness of having\n * to interact with or query the DOM directly.\n *\n * @example\n *\n * .dataset(dataset [, animate] [, callback])\n *\n * @example Example 1: Rendering a dataset\n *\n * var myDataset = [\n * {id: 1, ...},\n * {id: 2, ...},\n * {id: 3, ...}\n * ];\n *\n * mixer.dataset(myDataset)\n * .then(function(state) {\n * console.log(state.totalShow === 3); // true\n * });\n *\n * @example Example 2: Sorting a dataset\n *\n * // Create a new dataset in reverse order\n *\n * var newDataset = myDataset.slice().reverse();\n *\n * mixer.dataset(newDataset)\n * .then(function(state) {\n * console.log(state.activeDataset[0] === myDataset[2]); // true\n * });\n *\n * @example Example 3: Removing an item from the dataset\n *\n * console.log(myDataset.length); // 3\n *\n * // Create a new dataset with the last item removed.\n *\n * var newDataset = myDataset.slice().pop();\n *\n * mixer.dataset(newDataset)\n * .then(function(state) {\n * console.log(state.totalShow === 2); // true\n * });\n *\n * @public\n * @instance\n * @since 3.0.0\n * @param {Array.} dataset\n * An array of objects, each one representing the underlying data model of a target to be rendered.\n * @param {boolean} [animate=true]\n * An optional boolean dictating whether the operation should animate, or occur syncronously with no animation. `true` by default.\n * @param {function} [callback=null]\n * An optional callback function to be invoked after the operation has completed.\n * @return {Promise.}\n * A promise resolving with the current state object.\n */\n\n dataset: function() {\n var self = this,\n instruction = self.parseDatasetArgs(arguments),\n operation = null,\n queueItem = null,\n animate = false;\n\n self.callActions('beforeDataset', arguments);\n\n if (!self.isBusy) {\n if (instruction.callback) self.userCallback = instruction.callback;\n\n animate = (instruction.animate ^ self.config.animation.enable) ? instruction.animate : self.config.animation.enable;\n\n operation = self.getDataOperation(instruction.command.dataset);\n\n return self.goMix(animate, operation);\n } else {\n queueItem = new mixitup.QueueItem();\n\n queueItem.args = arguments;\n queueItem.instruction = instruction;\n\n return self.queueMix(queueItem);\n }\n },\n\n /**\n * Performs simultaneous `filter`, `sort`, `insert`, `remove` and `changeLayout`\n * operations as requested.\n *\n * @example\n *\n * .multimix(multimixCommand [, animate] [, callback])\n *\n * @example Example 1: Performing simultaneous filtering and sorting\n *\n * mixer.multimix({\n * filter: '.category-b',\n * sort: 'published-date:desc'\n * })\n * .then(function(state) {\n * console.log(state.activeFilter.selector === '.category-b'); // true\n * console.log(state.activeSort.attribute === 'published-date'); // true\n * });\n *\n * @example Example 2: Performing simultaneous sorting, insertion, and removal\n *\n * console.log(mixer.getState().totalShow); // 6\n *\n * // NB: When inserting via `multimix()`, an object should be provided as the value\n * // for the `insert` portion of the command, allowing for a collection of elements\n * // and an insertion index to be specified.\n *\n * mixer.multimix({\n * sort: 'published-date:desc', // Sort the container, including any new elements\n * insert: {\n * collection: [newElementReferenceA, newElementReferenceB], // Add 2 new elements at index 5\n * index: 5\n * },\n * remove: existingElementReference // Remove 1 existing element\n * })\n * .then(function(state) {\n * console.log(state.activeSort.attribute === 'published-date'); // true\n * console.log(state.totalShow === 7); // true\n * });\n *\n * @public\n * @instance\n * @since 2.0.0\n * @param {object} multimixCommand\n * An object containing one or more things to do\n * @param {boolean} [animate=true]\n * An optional boolean dictating whether the operation should animate, or occur syncronously with no animation. `true` by default.\n * @param {function} [callback=null]\n * An optional callback function to be invoked after the operation has completed.\n * @return {Promise.}\n * A promise resolving with the current state object.\n */\n\n multimix: function() {\n var self = this,\n operation = null,\n animate = false,\n queueItem = null,\n instruction = self.parseMultimixArgs(arguments);\n\n self.callActions('beforeMultimix', arguments);\n\n if (!self.isBusy) {\n operation = self.getOperation(instruction.command);\n\n if (self.config.controls.enable) {\n // Update controls for API calls\n\n if (instruction.command.filter && !self.isToggling) {\n // As we are not toggling, reset the toggle array\n // so new filter overrides existing toggles\n\n self.toggleArray.length = 0;\n self.buildToggleArray(operation.command);\n }\n\n if (self.queue.length < 1) {\n self.updateControls(operation.command);\n }\n }\n\n if (instruction.callback) self.userCallback = instruction.callback;\n\n // Always allow the instruction to override the instance setting\n\n animate = (instruction.animate ^ self.config.animation.enable) ?\n instruction.animate :\n self.config.animation.enable;\n\n self.callFilters('operationMultimix', operation, arguments);\n\n return self.goMix(animate, operation);\n } else {\n queueItem = new mixitup.QueueItem();\n\n queueItem.args = arguments;\n queueItem.instruction = instruction;\n queueItem.triggerElement = self.lastClicked;\n queueItem.isToggling = self.isToggling;\n\n return self.queueMix(queueItem);\n }\n },\n\n /**\n * @private\n * @instance\n * @since 3.0.0\n * @param {object} multimixCommand\n * @param {boolean} [isPreFetch]\n * An optional boolean indicating that the operation is being pre-fetched for execution at a later time.\n * @return {Operation|null}\n */\n\n getOperation: function(multimixCommand) {\n var self = this,\n sortCommand = multimixCommand.sort,\n filterCommand = multimixCommand.filter,\n changeLayoutCommand = multimixCommand.changeLayout,\n removeCommand = multimixCommand.remove,\n insertCommand = multimixCommand.insert,\n operation = new mixitup.Operation();\n\n operation = self.callFilters('operationUnmappedGetOperation', operation, arguments);\n\n operation.id = h.randomHex();\n operation.command = multimixCommand;\n operation.startState = self.state;\n operation.triggerElement = self.lastClicked;\n\n if (self.isBusy) {\n if (self.config.debug.showWarnings) {\n console.warn(mixitup.messages.warningGetOperationInstanceBusy());\n }\n\n return null;\n }\n\n if (insertCommand) {\n self.insertTargets(insertCommand, operation);\n }\n\n if (removeCommand) {\n operation.toRemove = removeCommand.targets;\n }\n\n operation.startSort = operation.newSort = operation.startState.activeSort;\n operation.startOrder = operation.newOrder = self.targets;\n\n if (sortCommand) {\n operation.startSort = operation.startState.activeSort;\n operation.newSort = sortCommand;\n\n operation.willSort = self.willSort(sortCommand, operation.startState.activeSort);\n\n if (operation.willSort) {\n self.sortOperation(operation);\n }\n }\n\n operation.startFilter = operation.startState.activeFilter;\n\n if (filterCommand) {\n operation.newFilter = filterCommand;\n } else {\n operation.newFilter = h.extend(new mixitup.CommandFilter(), operation.startFilter);\n }\n\n if (operation.newFilter.selector === 'all') {\n operation.newFilter.selector = self.config.selectors.target;\n } else if (operation.newFilter.selector === 'none') {\n operation.newFilter.selector = '';\n }\n\n self.filterOperation(operation);\n\n operation.startContainerClassName = operation.startState.activeContainerClassName;\n\n if (changeLayoutCommand) {\n operation.newContainerClassName = changeLayoutCommand.containerClassName;\n\n if (operation.newContainerClassName !== operation.startContainerClassName) {\n operation.willChangeLayout = true;\n }\n } else {\n operation.newContainerClassName = operation.startContainerClassName;\n }\n\n if (self.config.animation.enable) {\n // Populate the operation's position data\n\n self.getStartMixData(operation);\n self.setInter(operation);\n\n operation.docState = h.getDocumentState(self.dom.document);\n\n self.getInterMixData(operation);\n self.setFinal(operation);\n self.getFinalMixData(operation);\n\n self.parseEffects();\n\n operation.hasEffect = self.hasEffect();\n\n self.getTweenData(operation);\n }\n\n if (operation.willSort) {\n self.targets = operation.newOrder;\n }\n\n operation.newState = self.buildState(operation);\n\n return self.callFilters('operationMappedGetOperation', operation, arguments);\n },\n\n /**\n * Renders a previously created operation at a specific point in its path, as\n * determined by a multiplier between 0 and 1.\n *\n * @example\n * .tween(operation, multiplier)\n *\n * @private\n * @instance\n * @since 3.0.0\n * @param {mixitup.Operation} operation\n * An operation object created via the `getOperation` method\n *\n * @param {Float} multiplier\n * Any number between 0 and 1 representing the percentage complete of the operation\n * @return {void}\n */\n\n tween: function(operation, multiplier) {\n var target = null,\n posData = null,\n toHideIndex = -1,\n i = -1;\n\n multiplier = Math.min(multiplier, 1);\n multiplier = Math.max(multiplier, 0);\n\n for (i = 0; target = operation.show[i]; i++) {\n posData = operation.showPosData[i];\n\n target.applyTween(posData, multiplier);\n }\n\n for (i = 0; target = operation.hide[i]; i++) {\n if (target.isShown) {\n target.hide();\n }\n\n if ((toHideIndex = operation.toHide.indexOf(target)) > -1) {\n posData = operation.toHidePosData[toHideIndex];\n\n if (!target.isShown) {\n target.show();\n }\n\n target.applyTween(posData, multiplier);\n }\n }\n },\n\n /**\n * Inserts one or more new target elements into the container at a specified\n * index.\n *\n * To be indexed as targets, new elements must match the `selectors.target`\n * selector (`'.mix'` by default).\n *\n * @example\n *\n * .insert(newElements [, index] [, animate], [, callback])\n *\n * @example Example 1: Inserting a single element via reference\n *\n * console.log(mixer.getState().totalShow); // 0\n *\n * // Create a new element\n *\n * var newElement = document.createElement('div');\n * newElement.classList.add('mix');\n *\n * mixer.insert(newElement)\n * .then(function(state) {\n * console.log(state.totalShow === 1); // true\n * });\n *\n * @example Example 2: Inserting a single element via HTML string\n *\n * console.log(mixer.getState().totalShow); // 1\n *\n * // Create a new element via reference\n *\n * var newElementHtml = '<div class=\"mix\"></div>';\n *\n * // Create and insert the new element at index 1\n *\n * mixer.insert(newElementHtml, 1)\n * .then(function(state) {\n * console.log(state.totalShow === 2); // true\n * console.log(state.show[1].outerHTML === newElementHtml); // true\n * });\n *\n * @example Example 3: Inserting multiple elements via reference\n *\n * console.log(mixer.getState().totalShow); // 2\n *\n * // Create an array of new elements to insert.\n *\n * var newElement1 = document.createElement('div');\n * var newElement2 = document.createElement('div');\n *\n * newElement1.classList.add('mix');\n * newElement2.classList.add('mix');\n *\n * var newElementsCollection = [newElement1, newElement2];\n *\n * // Insert the new elements starting at index 1\n *\n * mixer.insert(newElementsCollection, 1)\n * .then(function(state) {\n * console.log(state.totalShow === 4); // true\n * console.log(state.show[1] === newElement1); // true\n * console.log(state.show[2] === newElement2); // true\n * });\n *\n * @example Example 4: Inserting a jQuery collection object containing one or more elements\n *\n * console.log(mixer.getState().totalShow); // 4\n *\n * var $newElement = $('<div class=\"mix\"></div>');\n *\n * // Insert the new elements starting at index 3\n *\n * mixer.insert($newElement, 3)\n * .then(function(state) {\n * console.log(state.totalShow === 5); // true\n * console.log(state.show[3] === $newElement[0]); // true\n * });\n *\n * @public\n * @instance\n * @since 2.0.0\n * @param {(HTMLElement|Array.|string)} newElements\n * A reference to a single element to insert, an array-like collection of elements, or an HTML string representing a single element.\n * @param {number} index=0\n * The index at which to insert the new element(s). `0` by default.\n * @param {boolean} [animate=true]\n * An optional boolean dictating whether the operation should animate, or occur syncronously with no animation. `true` by default.\n * @param {function} [callback=null]\n * An optional callback function to be invoked after the operation has completed.\n * @return {Promise.}\n * A promise resolving with the current state object.\n */\n\n insert: function() {\n var self = this,\n args = self.parseInsertArgs(arguments);\n\n return self.multimix({\n insert: args.command\n }, args.animate, args.callback);\n },\n\n /**\n * Inserts one or more new elements before a provided reference element.\n *\n * @example\n *\n * .insertBefore(newElements, referenceElement [, animate] [, callback])\n *\n * @example Example: Inserting a new element before a reference element\n *\n * // An existing reference element is chosen at index 2\n *\n * var referenceElement = mixer.getState().show[2];\n *\n * // Create a new element\n *\n * var newElement = document.createElement('div');\n * newElement.classList.add('mix');\n *\n * mixer.insertBefore(newElement, referenceElement)\n * .then(function(state) {\n * // The new element is inserted into the container at index 2, before the reference element\n *\n * console.log(state.show[2] === newElement); // true\n *\n * // The reference element is now at index 3\n *\n * console.log(state.show[3] === referenceElement); // true\n * });\n *\n * @public\n * @instance\n * @since 3.0.0\n * @param {(HTMLElement|Array.|string)} newElements\n * A reference to a single element to insert, an array-like collection of elements, or an HTML string representing a single element.\n * @param {HTMLElement} referenceElement\n * A reference to an existing element in the container to insert new elements before.\n *@param {boolean} [animate=true]\n * An optional boolean dictating whether the operation should animate, or occur syncronously with no animation. `true` by default.\n * @param {function} [callback=null]\n * An optional callback function to be invoked after the operation has completed.\n * @return {Promise.}\n * A promise resolving with the current state object.\n */\n\n insertBefore: function() {\n var self = this,\n args = self.parseInsertArgs(arguments);\n\n return self.insert(args.command.collection, 'before', args.command.sibling, args.animate, args.callback);\n },\n\n /**\n * Inserts one or more new elements after a provided reference element.\n *\n * @example\n *\n * .insertAfter(newElements, referenceElement [, animate] [, callback])\n *\n * @example Example: Inserting a new element after a reference element\n *\n * // An existing reference element is chosen at index 2\n *\n * var referenceElement = mixer.getState().show[2];\n *\n * // Create a new element\n *\n * var newElement = document.createElement('div');\n * newElement.classList.add('mix');\n *\n * mixer.insertAfter(newElement, referenceElement)\n * .then(function(state) {\n * // The new element is inserted into the container at index 3, after the reference element\n *\n * console.log(state.show[3] === newElement); // true\n * });\n *\n * @public\n * @instance\n * @since 3.0.0\n * @param {(HTMLElement|Array.|string)} newElements\n * A reference to a single element to insert, an array-like collection of elements, or an HTML string representing a single element.\n * @param {HTMLElement} referenceElement\n * A reference to an existing element in the container to insert new elements after.\n * @param {boolean} [animate=true]\n * An optional boolean dictating whether the operation should animate, or occur syncronously with no animation. `true` by default.\n * @param {function} [callback=null]\n * An optional callback function to be invoked after the operation has completed.\n * @return {Promise.}\n * A promise resolving with the current state object.\n */\n\n insertAfter: function() {\n var self = this,\n args = self.parseInsertArgs(arguments);\n\n return self.insert(args.command.collection, 'after', args.command.sibling, args.animate, args.callback);\n },\n\n /**\n * Inserts one or more new elements into the container before all existing targets.\n *\n * @example\n *\n * .prepend(newElements [,animate] [,callback])\n *\n * @example Example: Prepending a new element\n *\n * // Create a new element\n *\n * var newElement = document.createElement('div');\n * newElement.classList.add('mix');\n *\n * // Insert the element into the container\n *\n * mixer.prepend(newElement)\n * .then(function(state) {\n * console.log(state.show[0] === newElement); // true\n * });\n *\n * @public\n * @instance\n * @since 3.0.0\n * @param {(HTMLElement|Array.|string)} newElements\n * A reference to a single element to insert, an array-like collection of elements, or an HTML string representing a single element.\n * @param {boolean} [animate=true]\n * An optional boolean dictating whether the operation should animate, or occur syncronously with no animation. `true` by default.\n * @param {function} [callback=null]\n * An optional callback function to be invoked after the operation has completed.\n * @return {Promise.}\n * A promise resolving with the current state object.\n */\n\n prepend: function() {\n var self = this,\n args = self.parseInsertArgs(arguments);\n\n return self.insert(0, args.command.collection, args.animate, args.callback);\n },\n\n /**\n * Inserts one or more new elements into the container after all existing targets.\n *\n * @example\n *\n * .append(newElements [,animate] [,callback])\n *\n * @example Example: Appending a new element\n *\n * // Create a new element\n *\n * var newElement = document.createElement('div');\n * newElement.classList.add('mix');\n *\n * // Insert the element into the container\n *\n * mixer.append(newElement)\n * .then(function(state) {\n * console.log(state.show[state.show.length - 1] === newElement); // true\n * });\n *\n * @public\n * @instance\n * @since 3.0.0\n * @param {(HTMLElement|Array.|string)} newElements\n * A reference to a single element to insert, an array-like collection of elements, or an HTML string representing a single element.\n * @param {boolean} [animate=true]\n * An optional boolean dictating whether the operation should animate, or occur syncronously with no animation. `true` by default.\n * @param {function} [callback=null]\n * An optional callback function to be invoked after the operation has completed.\n * @return {Promise.}\n * A promise resolving with the current state object.\n */\n\n append: function() {\n var self = this,\n args = self.parseInsertArgs(arguments);\n\n return self.insert(self.state.totalTargets, args.command.collection, args.animate, args.callback);\n },\n\n /**\n * Removes one or more existing target elements from the container.\n *\n * @example\n *\n * .remove(elements [, animate] [, callback])\n *\n * @example Example 1: Removing an element by reference\n *\n * var elementToRemove = containerEl.firstElementChild;\n *\n * mixer.remove(elementToRemove)\n * .then(function(state) {\n * console.log(state.targets.indexOf(elementToRemove) === -1); // true\n * });\n *\n * @example Example 2: Removing a collection of elements by reference\n *\n * var elementsToRemove = containerEl.querySelectorAll('.category-a');\n *\n * console.log(elementsToRemove.length) // 3\n *\n * mixer.remove(elementsToRemove)\n * .then(function() {\n * console.log(containerEl.querySelectorAll('.category-a').length); // 0\n * });\n *\n * @example Example 3: Removing one or more elements by selector\n *\n * mixer.remove('.category-a')\n * .then(function() {\n * console.log(containerEl.querySelectorAll('.category-a').length); // 0\n * });\n *\n * @example Example 4: Removing an element by index\n *\n * console.log(mixer.getState.totalShow); // 4\n *\n * // Remove the element at index 3\n *\n * mixer.remove(3)\n * .then(function(state) {\n * console.log(state.totalShow); // 3\n * console.log(state.show[3]); // undefined\n * });\n *\n *\n * @public\n * @instance\n * @since 3.0.0\n * @param {(HTMLElement|Array.|string|number)} elements\n * A reference to a single element to remove, an array-like collection of elements, a selector string, or the index of an element to remove.\n * @param {boolean} [animate=true]\n * An optional boolean dictating whether the operation should animate, or occur syncronously with no animation. `true` by default.\n * @param {function} [callback=null]\n * An optional callback function to be invoked after the operation has completed.\n * @return {Promise.}\n * A promise resolving with the current state object.\n */\n\n remove: function() {\n var self = this,\n args = self.parseRemoveArgs(arguments);\n\n return self.multimix({\n remove: args.command\n }, args.animate, args.callback);\n },\n\n /**\n * Retrieves the the value of any property or sub-object within the current\n * mixitup configuration, or the whole configuration object.\n *\n * @example\n *\n * .getConfig([stringKey])\n *\n * @example Example 1: retrieve the entire configuration object\n *\n * var config = mixer.getConfig(); // Config { ... }\n *\n * @example Example 2: retrieve a named sub-object of configuration object\n *\n * var animation = mixer.getConfig('animation'); // ConfigAnimation { ... }\n *\n * @example Example 3: retrieve a value of configuration object via a dot-notation string key\n *\n * var effects = mixer.getConfig('animation.effects'); // 'fade scale'\n *\n * @public\n * @instance\n * @since 2.0.0\n * @param {string} [stringKey] A \"dot-notation\" string key\n * @return {*}\n */\n\n getConfig: function(stringKey) {\n var self = this,\n value = null;\n\n if (!stringKey) {\n value = self.config;\n } else {\n value = h.getProperty(self.config, stringKey);\n }\n\n return self.callFilters('valueGetConfig', value, arguments);\n },\n\n /**\n * Updates the configuration of the mixer, after it has been instantiated.\n *\n * See the Configuration Object documentation for a full list of avilable\n * configuration options.\n *\n * @example\n *\n * .configure(config)\n *\n * @example Example 1: Updating animation options\n *\n * mixer.configure({\n * animation: {\n * effects: 'fade translateX(-100%)',\n * duration: 300\n * }\n * });\n *\n * @example Example 2: Removing a callback after it has been set\n *\n * var mixer;\n *\n * function handleMixEndOnce() {\n * // Do something ..\n *\n * // Then nullify the callback\n *\n * mixer.configure({\n * callbacks: {\n * onMixEnd: null\n * }\n * });\n * };\n *\n * // Instantiate a mixer with a callback defined\n *\n * mixer = mixitup(containerEl, {\n * callbacks: {\n * onMixEnd: handleMixEndOnce\n * }\n * });\n *\n * @public\n * @instance\n * @since 3.0.0\n * @param {object} config\n * An object containing one of more configuration options.\n * @return {void}\n */\n\n configure: function(config) {\n var self = this;\n\n self.callActions('beforeConfigure', arguments);\n\n h.extend(self.config, config, true, true);\n\n self.callActions('afterConfigure', arguments);\n },\n\n /**\n * Returns an object containing information about the current state of the\n * mixer. See the State Object documentation for more information.\n *\n * NB: State objects are immutable and should therefore be regenerated\n * after any operation.\n *\n * @example\n *\n * .getState();\n *\n * @example Example: Retrieving a state object\n *\n * var state = mixer.getState();\n *\n * console.log(state.totalShow + 'targets are currently shown');\n *\n * @public\n * @instance\n * @since 2.0.0\n * @return {mixitup.State} An object reflecting the current state of the mixer.\n */\n\n getState: function() {\n var self = this,\n state = null;\n\n state = new mixitup.State();\n\n h.extend(state, self.state);\n\n h.freeze(state);\n\n return self.callFilters('stateGetState', state, arguments);\n },\n\n /**\n * Forces the re-indexing all targets within the container.\n *\n * This should only be used if some other piece of code in your application\n * has manipulated the contents of your container, which should be avoided.\n *\n * If you need to add or remove target elements from the container, use\n * the built-in `.insert()` or `.remove()` methods, and MixItUp will keep\n * itself up to date.\n *\n * @example\n *\n * .forceRefresh()\n *\n * @example Example: Force refreshing the mixer after external DOM manipulation\n *\n * console.log(mixer.getState().totalShow); // 3\n *\n * // An element is removed from the container via some external DOM manipulation code:\n *\n * containerEl.removeChild(containerEl.firstElementChild);\n *\n * // The mixer does not know that the number of targets has changed:\n *\n * console.log(mixer.getState().totalShow); // 3\n *\n * mixer.forceRefresh();\n *\n * // After forceRefresh, the mixer is in sync again:\n *\n * console.log(mixer.getState().totalShow); // 2\n *\n * @public\n * @instance\n * @since 2.1.2\n * @return {void}\n */\n\n forceRefresh: function() {\n var self = this;\n\n self.indexTargets();\n },\n\n /**\n * Forces the re-rendering of all targets when using the Dataset API.\n *\n * By default, targets are only re-rendered when `data.dirtyCheck` is\n * enabled, and an item's data has changed when `dataset()` is called.\n *\n * The `forceRender()` method allows for the re-rendering of all targets\n * in response to some arbitrary event, such as the changing of the target\n * render function.\n *\n * Targets are rendered against their existing data.\n *\n * @example\n *\n * .forceRender()\n *\n * @example Example: Force render targets after changing the target render function\n *\n * console.log(container.innerHTML); // ... <span class=\"mix\">Foo</span> ...\n *\n * mixer.configure({\n * render: {\n * target: (item) => `<a href=\"/${item.slug}/\" class=\"mix\">${item.title}</a>`\n * }\n * });\n *\n * mixer.forceRender();\n *\n * console.log(container.innerHTML); // ... <a href=\"/foo/\" class=\"mix\">Foo</a> ...\n *\n * @public\n * @instance\n * @since 3.2.1\n * @return {void}\n */\n\n forceRender: function() {\n var self = this,\n target = null,\n el = null,\n id = '';\n\n for (id in self.cache) {\n target = self.cache[id];\n\n el = target.render(target.data);\n\n if (el !== target.dom.el) {\n // Update target element reference\n\n if (target.isInDom) {\n target.unbindEvents();\n\n self.dom.parent.replaceChild(el, target.dom.el);\n }\n\n if (!target.isShown) {\n el.style.display = 'none';\n }\n\n target.dom.el = el;\n\n if (target.isInDom) {\n target.bindEvents();\n }\n }\n }\n\n self.state = self.buildState(self.lastOperation);\n },\n\n /**\n * Removes mixitup functionality from the container, unbinds all control\n * event handlers, and deletes the mixer instance from MixItUp's internal\n * cache.\n *\n * This should be performed whenever a mixer's container is removed from\n * the DOM, such as during a page change in a single page application,\n * or React's `componentWillUnmount()`.\n *\n * @example\n *\n * .destroy([cleanUp])\n *\n * @example Example: Destroying the mixer before removing its container element\n *\n * mixer.destroy();\n *\n * containerEl.parentElement.removeChild(containerEl);\n *\n * @public\n * @instance\n * @since 2.0.0\n * @param {boolean} [cleanUp=false]\n * An optional boolean dictating whether or not to clean up any inline `display: none;` styling applied to hidden targets.\n * @return {void}\n */\n\n destroy: function(cleanUp) {\n var self = this,\n control = null,\n target = null,\n i = 0;\n\n self.callActions('beforeDestroy', arguments);\n\n for (i = 0; control = self.controls[i]; i++) {\n control.removeBinding(self);\n }\n\n for (i = 0; target = self.targets[i]; i++) {\n if (cleanUp) {\n target.show();\n }\n\n target.unbindEvents();\n }\n\n if (self.dom.container.id.match(/^MixItUp/)) {\n self.dom.container.removeAttribute('id');\n }\n\n delete mixitup.instances[self.id];\n\n self.callActions('afterDestroy', arguments);\n }\n });\n\n /**\n * @constructor\n * @memberof mixitup\n * @private\n * @since 3.0.0\n */\n\n mixitup.IMoveData = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n this.posIn = null;\n this.posOut = null;\n this.operation = null;\n this.callback = null;\n this.statusChange = '';\n this.duration = -1;\n this.staggerIndex = -1;\n\n this.callActions('afterConstruct');\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.IMoveData);\n\n mixitup.IMoveData.prototype = Object.create(mixitup.Base.prototype);\n\n mixitup.IMoveData.prototype.constructor = mixitup.IMoveData;\n\n /**\n * @constructor\n * @memberof mixitup\n * @private\n * @since 3.0.0\n */\n\n mixitup.TargetDom = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n this.el = null;\n\n this.callActions('afterConstruct');\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.TargetDom);\n\n mixitup.TargetDom.prototype = Object.create(mixitup.Base.prototype);\n\n mixitup.TargetDom.prototype.constructor = mixitup.TargetDom;\n\n /**\n * @constructor\n * @namespace\n * @memberof mixitup\n * @private\n * @since 3.0.0\n */\n\n mixitup.Target = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n this.id = '';\n this.sortString = '';\n this.mixer = null;\n this.callback = null;\n this.isShown = false;\n this.isBound = false;\n this.isExcluded = false;\n this.isInDom = false;\n this.handler = null;\n this.operation = null;\n this.data = null;\n this.dom = new mixitup.TargetDom();\n\n this.callActions('afterConstruct');\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.Target);\n\n mixitup.Target.prototype = Object.create(mixitup.Base.prototype);\n\n h.extend(mixitup.Target.prototype, {\n constructor: mixitup.Target,\n\n /**\n * Initialises a newly instantiated Target.\n *\n * @private\n * @instance\n * @since 3.0.0\n * @param {(Element|null)} el\n * @param {object} mixer\n * @param {object} [data]\n * @return {void}\n */\n\n init: function(el, mixer, data) {\n var self = this,\n id = '';\n\n self.callActions('beforeInit', arguments);\n\n self.mixer = mixer;\n\n if (!el) {\n // If no element is provided, render it\n\n el = self.render(data);\n }\n\n self.cacheDom(el);\n\n self.bindEvents();\n\n if (self.dom.el.style.display !== 'none') {\n self.isShown = true;\n }\n\n if (data && mixer.config.data.uidKey) {\n if (typeof (id = data[mixer.config.data.uidKey]) === 'undefined' || id.toString().length < 1) {\n throw new TypeError(mixitup.messages.errorDatasetInvalidUidKey({\n uidKey: mixer.config.data.uidKey\n }));\n }\n\n self.id = id;\n self.data = data;\n\n mixer.cache[id] = self;\n }\n\n self.callActions('afterInit', arguments);\n },\n\n /**\n * Renders the target element using a user-defined renderer function.\n *\n * @private\n * @instance\n * @since 3.1.4\n * @param {object} data\n * @return {void}\n */\n\n render: function(data) {\n var self = this,\n render = null,\n el = null,\n temp = null,\n output = '';\n\n self.callActions('beforeRender', arguments);\n\n render = self.callFilters('renderRender', self.mixer.config.render.target, arguments);\n\n if (typeof render !== 'function') {\n throw new TypeError(mixitup.messages.errorDatasetRendererNotSet());\n }\n\n output = render(data);\n\n if (output && typeof output === 'object' && h.isElement(output)) {\n el = output;\n } else if (typeof output === 'string') {\n temp = document.createElement('div');\n temp.innerHTML = output;\n\n el = temp.firstElementChild;\n }\n\n return self.callFilters('elRender', el, arguments);\n },\n\n /**\n * Caches references of DOM elements neccessary for the target's functionality.\n *\n * @private\n * @instance\n * @since 3.0.0\n * @param {Element} el\n * @return {void}\n */\n\n cacheDom: function(el) {\n var self = this;\n\n self.callActions('beforeCacheDom', arguments);\n\n self.dom.el = el;\n\n self.callActions('afterCacheDom', arguments);\n },\n\n /**\n * @private\n * @instance\n * @since 3.0.0\n * @param {string} attributeName\n * @return {void}\n */\n\n getSortString: function(attributeName) {\n var self = this,\n value = self.dom.el.getAttribute('data-' + attributeName) || '';\n\n self.callActions('beforeGetSortString', arguments);\n\n value = isNaN(value * 1) ?\n value.toLowerCase() :\n value * 1;\n\n self.sortString = value;\n\n self.callActions('afterGetSortString', arguments);\n },\n\n /**\n * @private\n * @instance\n * @since 3.0.0\n * @return {void}\n */\n\n show: function() {\n var self = this;\n\n self.callActions('beforeShow', arguments);\n\n if (!self.isShown) {\n self.dom.el.style.display = '';\n\n self.isShown = true;\n }\n\n self.callActions('afterShow', arguments);\n },\n\n /**\n * @private\n * @instance\n * @since 3.0.0\n * @return {void}\n */\n\n hide: function() {\n var self = this;\n\n self.callActions('beforeHide', arguments);\n\n if (self.isShown) {\n self.dom.el.style.display = 'none';\n\n self.isShown = false;\n }\n\n self.callActions('afterHide', arguments);\n },\n\n /**\n * @private\n * @instance\n * @since 3.0.0\n * @param {mixitup.IMoveData} moveData\n * @return {void}\n */\n\n move: function(moveData) {\n var self = this;\n\n self.callActions('beforeMove', arguments);\n\n if (!self.isExcluded) {\n self.mixer.targetsMoved++;\n }\n\n self.applyStylesIn(moveData);\n\n requestAnimationFrame(function() {\n self.applyStylesOut(moveData);\n });\n\n self.callActions('afterMove', arguments);\n },\n\n /**\n * @private\n * @instance\n * @since 3.0.0\n * @param {object} posData\n * @param {number} multiplier\n * @return {void}\n */\n\n applyTween: function(posData, multiplier) {\n var self = this,\n propertyName = '',\n tweenData = null,\n posIn = posData.posIn,\n currentTransformValues = [],\n currentValues = new mixitup.StyleData(),\n i = -1;\n\n self.callActions('beforeApplyTween', arguments);\n\n currentValues.x = posIn.x;\n currentValues.y = posIn.y;\n\n if (multiplier === 0) {\n self.hide();\n } else if (!self.isShown) {\n self.show();\n }\n\n for (i = 0; propertyName = mixitup.features.TWEENABLE[i]; i++) {\n tweenData = posData.tweenData[propertyName];\n\n if (propertyName === 'x') {\n if (!tweenData) continue;\n\n currentValues.x = posIn.x + (tweenData * multiplier);\n } else if (propertyName === 'y') {\n if (!tweenData) continue;\n\n currentValues.y = posIn.y + (tweenData * multiplier);\n } else if (tweenData instanceof mixitup.TransformData) {\n if (!tweenData.value) continue;\n\n currentValues[propertyName].value =\n posIn[propertyName].value + (tweenData.value * multiplier);\n\n currentValues[propertyName].unit = tweenData.unit;\n\n currentTransformValues.push(\n propertyName + '(' + currentValues[propertyName].value + tweenData.unit + ')'\n );\n } else {\n if (!tweenData) continue;\n\n currentValues[propertyName] = posIn[propertyName] + (tweenData * multiplier);\n\n self.dom.el.style[propertyName] = currentValues[propertyName];\n }\n }\n\n if (currentValues.x || currentValues.y) {\n currentTransformValues.unshift('translate(' + currentValues.x + 'px, ' + currentValues.y + 'px)');\n }\n\n if (currentTransformValues.length) {\n self.dom.el.style[mixitup.features.transformProp] = currentTransformValues.join(' ');\n }\n\n self.callActions('afterApplyTween', arguments);\n },\n\n /**\n * Applies the initial styling to a target element before any transition\n * is applied.\n *\n * @private\n * @instance\n * @param {mixitup.IMoveData} moveData\n * @return {void}\n */\n\n applyStylesIn: function(moveData) {\n var self = this,\n posIn = moveData.posIn,\n isFading = self.mixer.effectsIn.opacity !== 1,\n transformValues = [];\n\n self.callActions('beforeApplyStylesIn', arguments);\n\n transformValues.push('translate(' + posIn.x + 'px, ' + posIn.y + 'px)');\n\n if (self.mixer.config.animation.animateResizeTargets) {\n if (moveData.statusChange !== 'show') {\n // Don't apply posIn width or height or showing, as will be 0\n\n self.dom.el.style.width = posIn.width + 'px';\n self.dom.el.style.height = posIn.height + 'px';\n }\n\n self.dom.el.style.marginRight = posIn.marginRight + 'px';\n self.dom.el.style.marginBottom = posIn.marginBottom + 'px';\n }\n\n isFading && (self.dom.el.style.opacity = posIn.opacity);\n\n if (moveData.statusChange === 'show') {\n transformValues = transformValues.concat(self.mixer.transformIn);\n }\n\n self.dom.el.style[mixitup.features.transformProp] = transformValues.join(' ');\n\n self.callActions('afterApplyStylesIn', arguments);\n },\n\n /**\n * Applies a transition followed by the final styles for the element to\n * transition towards.\n *\n * @private\n * @instance\n * @param {mixitup.IMoveData} moveData\n * @return {void}\n */\n\n applyStylesOut: function(moveData) {\n var self = this,\n transitionRules = [],\n transformValues = [],\n isResizing = self.mixer.config.animation.animateResizeTargets,\n isFading = typeof self.mixer.effectsIn.opacity !== 'undefined';\n\n self.callActions('beforeApplyStylesOut', arguments);\n\n // Build the transition rules\n\n transitionRules.push(self.writeTransitionRule(\n mixitup.features.transformRule,\n moveData.staggerIndex\n ));\n\n if (moveData.statusChange !== 'none') {\n transitionRules.push(self.writeTransitionRule(\n 'opacity',\n moveData.staggerIndex,\n moveData.duration\n ));\n }\n\n if (isResizing) {\n transitionRules.push(self.writeTransitionRule(\n 'width',\n moveData.staggerIndex,\n moveData.duration\n ));\n\n transitionRules.push(self.writeTransitionRule(\n 'height',\n moveData.staggerIndex,\n moveData.duration\n ));\n\n transitionRules.push(self.writeTransitionRule(\n 'margin',\n moveData.staggerIndex,\n moveData.duration\n ));\n }\n\n // If no callback was provided, the element will\n // not transition in any way so tag it as \"immovable\"\n\n if (!moveData.callback) {\n self.mixer.targetsImmovable++;\n\n if (self.mixer.targetsMoved === self.mixer.targetsImmovable) {\n // If the total targets moved is equal to the\n // number of immovable targets, the operation\n // should be considered finished\n\n self.mixer.cleanUp(moveData.operation);\n }\n\n return;\n }\n\n // If the target will transition in some fasion,\n // assign a callback function\n\n self.operation = moveData.operation;\n self.callback = moveData.callback;\n\n // As long as the target is not excluded, increment\n // the total number of targets bound\n\n !self.isExcluded && self.mixer.targetsBound++;\n\n // Tag the target as bound to differentiate from transitionEnd\n // events that may come from stylesheet driven effects\n\n self.isBound = true;\n\n // Apply the transition\n\n self.applyTransition(transitionRules);\n\n // Apply width, height and margin negation\n\n if (isResizing && moveData.posOut.width > 0 && moveData.posOut.height > 0) {\n self.dom.el.style.width = moveData.posOut.width + 'px';\n self.dom.el.style.height = moveData.posOut.height + 'px';\n self.dom.el.style.marginRight = moveData.posOut.marginRight + 'px';\n self.dom.el.style.marginBottom = moveData.posOut.marginBottom + 'px';\n }\n\n if (!self.mixer.config.animation.nudge && moveData.statusChange === 'hide') {\n // If we're not nudging, the translation should be\n // applied before any other transforms to prevent\n // lateral movement\n\n transformValues.push('translate(' + moveData.posOut.x + 'px, ' + moveData.posOut.y + 'px)');\n }\n\n // Apply fade\n\n switch (moveData.statusChange) {\n case 'hide':\n isFading && (self.dom.el.style.opacity = self.mixer.effectsOut.opacity);\n\n transformValues = transformValues.concat(self.mixer.transformOut);\n\n break;\n case 'show':\n isFading && (self.dom.el.style.opacity = 1);\n }\n\n if (\n self.mixer.config.animation.nudge ||\n (!self.mixer.config.animation.nudge && moveData.statusChange !== 'hide')\n ) {\n // Opposite of above - apply translate after\n // other transform\n\n transformValues.push('translate(' + moveData.posOut.x + 'px, ' + moveData.posOut.y + 'px)');\n }\n\n // Apply transforms\n\n self.dom.el.style[mixitup.features.transformProp] = transformValues.join(' ');\n\n self.callActions('afterApplyStylesOut', arguments);\n },\n\n /**\n * Combines the name of a CSS property with the appropriate duration and delay\n * values to created a valid transition rule.\n *\n * @private\n * @instance\n * @since 3.0.0\n * @param {string} property\n * @param {number} staggerIndex\n * @param {number} duration\n * @return {string}\n */\n\n writeTransitionRule: function(property, staggerIndex, duration) {\n var self = this,\n delay = self.getDelay(staggerIndex),\n rule = '';\n\n rule = property + ' ' +\n (duration > 0 ? duration : self.mixer.config.animation.duration) + 'ms ' +\n delay + 'ms ' +\n (property === 'opacity' ? 'linear' : self.mixer.config.animation.easing);\n\n return self.callFilters('ruleWriteTransitionRule', rule, arguments);\n },\n\n /**\n * Calculates the transition delay for each target element based on its index, if\n * staggering is applied. If defined, A custom `animation.staggerSeqeuence`\n * function can be used to manipulate the order of indices to produce custom\n * stagger effects (e.g. for use in a grid with irregular row lengths).\n *\n * @private\n * @instance\n * @since 2.0.0\n * @param {number} index\n * @return {number}\n */\n\n getDelay: function(index) {\n var self = this,\n delay = -1;\n\n if (typeof self.mixer.config.animation.staggerSequence === 'function') {\n index = self.mixer.config.animation.staggerSequence.call(self, index, self.state);\n }\n\n delay = !!self.mixer.staggerDuration ? index * self.mixer.staggerDuration : 0;\n\n return self.callFilters('delayGetDelay', delay, arguments);\n },\n\n /**\n * @private\n * @instance\n * @since 3.0.0\n * @param {string[]} rules\n * @return {void}\n */\n\n applyTransition: function(rules) {\n var self = this,\n transitionString = rules.join(', ');\n\n self.callActions('beforeApplyTransition', arguments);\n\n self.dom.el.style[mixitup.features.transitionProp] = transitionString;\n\n self.callActions('afterApplyTransition', arguments);\n },\n\n /**\n * @private\n * @instance\n * @since 3.0.0\n * @param {Event} e\n * @return {void}\n */\n\n handleTransitionEnd: function(e) {\n var self = this,\n propName = e.propertyName,\n canResize = self.mixer.config.animation.animateResizeTargets;\n\n self.callActions('beforeHandleTransitionEnd', arguments);\n\n if (\n self.isBound &&\n e.target.matches(self.mixer.config.selectors.target) &&\n (\n propName.indexOf('transform') > -1 ||\n propName.indexOf('opacity') > -1 ||\n canResize && propName.indexOf('height') > -1 ||\n canResize && propName.indexOf('width') > -1 ||\n canResize && propName.indexOf('margin') > -1\n )\n ) {\n self.callback.call(self, self.operation);\n\n self.isBound = false;\n self.callback = null;\n self.operation = null;\n }\n\n self.callActions('afterHandleTransitionEnd', arguments);\n },\n\n /**\n * @private\n * @instance\n * @since 3.0.0\n * @param {Event} e\n * @return {void}\n */\n\n eventBus: function(e) {\n var self = this;\n\n self.callActions('beforeEventBus', arguments);\n\n switch (e.type) {\n case 'webkitTransitionEnd':\n case 'transitionend':\n self.handleTransitionEnd(e);\n }\n\n self.callActions('afterEventBus', arguments);\n },\n\n /**\n * @private\n * @instance\n * @since 3.0.0\n * @return {void}\n */\n\n unbindEvents: function() {\n var self = this;\n\n self.callActions('beforeUnbindEvents', arguments);\n\n h.off(self.dom.el, 'webkitTransitionEnd', self.handler);\n h.off(self.dom.el, 'transitionend', self.handler);\n\n self.callActions('afterUnbindEvents', arguments);\n },\n\n /**\n * @private\n * @instance\n * @since 3.0.0\n * @return {void}\n */\n\n bindEvents: function() {\n var self = this,\n transitionEndEvent = '';\n\n self.callActions('beforeBindEvents', arguments);\n\n transitionEndEvent = mixitup.features.transitionPrefix === 'webkit' ? 'webkitTransitionEnd' : 'transitionend';\n\n self.handler = function(e) {\n return self.eventBus(e);\n };\n\n h.on(self.dom.el, transitionEndEvent, self.handler);\n\n self.callActions('afterBindEvents', arguments);\n },\n\n /**\n * @private\n * @instance\n * @since 3.0.0\n * @param {boolean} [getBox]\n * @return {PosData}\n */\n\n getPosData: function(getBox) {\n var self = this,\n styles = {},\n rect = null,\n posData = new mixitup.StyleData();\n\n self.callActions('beforeGetPosData', arguments);\n\n posData.x = self.dom.el.offsetLeft;\n posData.y = self.dom.el.offsetTop;\n\n if (self.mixer.config.animation.animateResizeTargets || getBox) {\n rect = self.dom.el.getBoundingClientRect();\n\n posData.top = rect.top;\n posData.right = rect.right;\n posData.bottom = rect.bottom;\n posData.left = rect.left;\n\n posData.width = rect.width;\n posData.height = rect.height;\n }\n\n if (self.mixer.config.animation.animateResizeTargets) {\n styles = window.getComputedStyle(self.dom.el);\n\n posData.marginBottom = parseFloat(styles.marginBottom);\n posData.marginRight = parseFloat(styles.marginRight);\n }\n\n return self.callFilters('posDataGetPosData', posData, arguments);\n },\n\n /**\n * @private\n * @instance\n * @since 3.0.0\n * @return {void}\n */\n\n cleanUp: function() {\n var self = this;\n\n self.callActions('beforeCleanUp', arguments);\n\n self.dom.el.style[mixitup.features.transformProp] = '';\n self.dom.el.style[mixitup.features.transitionProp] = '';\n self.dom.el.style.opacity = '';\n\n if (self.mixer.config.animation.animateResizeTargets) {\n self.dom.el.style.width = '';\n self.dom.el.style.height = '';\n self.dom.el.style.marginRight = '';\n self.dom.el.style.marginBottom = '';\n }\n\n self.callActions('afterCleanUp', arguments);\n }\n });\n\n /**\n * A jQuery-collection-like wrapper around one or more `mixitup.Mixer` instances\n * allowing simultaneous control of said instances similar to the MixItUp 2 API.\n *\n * @example\n * new mixitup.Collection(instances)\n *\n * @constructor\n * @namespace\n * @memberof mixitup\n * @private\n * @since 3.0.0\n * @param {mixitup.Mixer[]} instances\n */\n\n mixitup.Collection = function(instances) {\n var instance = null,\n i = -1;\n\n this.callActions('beforeConstruct');\n\n for (i = 0; instance = instances[i]; i++) {\n this[i] = instance;\n }\n\n this.length = instances.length;\n\n this.callActions('afterConstruct');\n\n h.freeze(this);\n };\n\n mixitup.BaseStatic.call(mixitup.Collection);\n\n mixitup.Collection.prototype = Object.create(mixitup.Base.prototype);\n\n h.extend(mixitup.Collection.prototype,\n /** @lends mixitup.Collection */\n {\n constructor: mixitup.Collection,\n\n /**\n * Calls a method on all instances in the collection by passing the method\n * name as a string followed by any applicable parameters to be curried into\n * to the method.\n *\n * @example\n * .mixitup(methodName[,arg1][,arg2..]);\n *\n * @example\n * var collection = new Collection([mixer1, mixer2]);\n *\n * return collection.mixitup('filter', '.category-a')\n * .then(function(states) {\n * state.forEach(function(state) {\n * console.log(state.activeFilter.selector); // .category-a\n * });\n * });\n *\n * @public\n * @instance\n * @since 3.0.0\n * @param {string} methodName\n * @return {Promise>}\n */\n\n mixitup: function(methodName) {\n var self = this,\n instance = null,\n args = Array.prototype.slice.call(arguments),\n tasks = [],\n i = -1;\n\n this.callActions('beforeMixitup');\n\n args.shift();\n\n for (i = 0; instance = self[i]; i++) {\n tasks.push(instance[methodName].apply(instance, args));\n }\n\n return self.callFilters('promiseMixitup', h.all(tasks, mixitup.libraries), arguments);\n }\n });\n\n /**\n * `mixitup.Operation` objects contain all data neccessary to describe the full\n * lifecycle of any MixItUp operation. They can be used to compute and store an\n * operation for use at a later time (e.g. programmatic tweening).\n *\n * @constructor\n * @namespace\n * @memberof mixitup\n * @private\n * @since 3.0.0\n */\n\n mixitup.Operation = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n this.id = '';\n\n this.args = [];\n this.command = null;\n this.showPosData = [];\n this.toHidePosData = [];\n\n this.startState = null;\n this.newState = null;\n this.docState = null;\n\n this.willSort = false;\n this.willChangeLayout = false;\n this.hasEffect = false;\n this.hasFailed = false;\n\n this.triggerElement = null;\n\n this.show = [];\n this.hide = [];\n this.matching = [];\n this.toShow = [];\n this.toHide = [];\n this.toMove = [];\n this.toRemove = [];\n this.startOrder = [];\n this.newOrder = [];\n this.startSort = null;\n this.newSort = null;\n this.startFilter = null;\n this.newFilter = null;\n this.startDataset = null;\n this.newDataset = null;\n this.viewportDeltaX = 0;\n this.viewportDeltaY = 0;\n this.startX = 0;\n this.startY = 0;\n this.startHeight = 0;\n this.startWidth = 0;\n this.newX = 0;\n this.newY = 0;\n this.newHeight = 0;\n this.newWidth = 0;\n this.startContainerClassName = '';\n this.startDisplay = '';\n this.newContainerClassName = '';\n this.newDisplay = '';\n\n this.callActions('afterConstruct');\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.Operation);\n\n mixitup.Operation.prototype = Object.create(mixitup.Base.prototype);\n\n mixitup.Operation.prototype.constructor = mixitup.Operation;\n\n /**\n * `mixitup.State` objects expose various pieces of data detailing the state of\n * a MixItUp instance. They are provided at the start and end of any operation via\n * callbacks and events, with the most recent state stored between operations\n * for retrieval at any time via the API.\n *\n * @constructor\n * @namespace\n * @memberof mixitup\n * @public\n * @since 3.0.0\n */\n\n mixitup.State = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n /**\n * The ID of the mixer instance.\n *\n * @name id\n * @memberof mixitup.State\n * @instance\n * @type {string}\n * @default ''\n */\n\n this.id = '';\n\n /**\n * The currently active filter command as set by a control click or API call.\n *\n * @name activeFilter\n * @memberof mixitup.State\n * @instance\n * @type {mixitup.CommandFilter}\n * @default null\n */\n\n this.activeFilter = null;\n\n /**\n * The currently active sort command as set by a control click or API call.\n *\n * @name activeSort\n * @memberof mixitup.State\n * @instance\n * @type {mixitup.CommandSort}\n * @default null\n */\n\n this.activeSort = null;\n\n /**\n * The current layout-specific container class name, if applied.\n *\n * @name activeContainerClassName\n * @memberof mixitup.State\n * @instance\n * @type {string}\n * @default ''\n */\n\n this.activeContainerClassName = '';\n\n /**\n * A reference to the container element that the mixer is instantiated on.\n *\n * @name container\n * @memberof mixitup.State\n * @instance\n * @type {Element}\n * @default null\n */\n\n this.container = null;\n\n /**\n * An array of all target elements indexed by the mixer.\n *\n * @name targets\n * @memberof mixitup.State\n * @instance\n * @type {Array.}\n * @default []\n */\n\n this.targets = [];\n\n /**\n * An array of all target elements not matching the current filter.\n *\n * @name hide\n * @memberof mixitup.State\n * @instance\n * @type {Array.}\n * @default []\n */\n\n this.hide = [];\n\n /**\n * An array of all target elements matching the current filter and any additional\n * limits applied such as pagination.\n *\n * @name show\n * @memberof mixitup.State\n * @instance\n * @type {Array.}\n * @default []\n */\n\n this.show = [];\n\n /**\n * An array of all target elements matching the current filter irrespective of\n * any additional limits applied such as pagination.\n *\n * @name matching\n * @memberof mixitup.State\n * @instance\n * @type {Array.}\n * @default []\n */\n\n this.matching = [];\n\n /**\n * An integer representing the total number of target elements indexed by the\n * mixer. Equivalent to `state.targets.length`.\n *\n * @name totalTargets\n * @memberof mixitup.State\n * @instance\n * @type {number}\n * @default -1\n */\n\n this.totalTargets = -1;\n\n /**\n * An integer representing the total number of target elements matching the\n * current filter and any additional limits applied such as pagination.\n * Equivalent to `state.show.length`.\n *\n * @name totalShow\n * @memberof mixitup.State\n * @instance\n * @type {number}\n * @default -1\n */\n\n this.totalShow = -1;\n\n /**\n * An integer representing the total number of target elements not matching\n * the current filter. Equivalent to `state.hide.length`.\n *\n * @name totalHide\n * @memberof mixitup.State\n * @instance\n * @type {number}\n * @default -1\n */\n\n this.totalHide = -1;\n\n /**\n * An integer representing the total number of target elements matching the\n * current filter irrespective of any other limits applied such as pagination.\n * Equivalent to `state.matching.length`.\n *\n * @name totalMatching\n * @memberof mixitup.State\n * @instance\n * @type {number}\n * @default -1\n */\n\n this.totalMatching = -1;\n\n /**\n * A boolean indicating whether the last operation \"failed\", i.e. no targets\n * could be found matching the filter.\n *\n * @name hasFailed\n * @memberof mixitup.State\n * @instance\n * @type {boolean}\n * @default false\n */\n\n this.hasFailed = false;\n\n /**\n * The DOM element that was clicked if the last operation was triggered by the\n * clicking of a control and not an API call.\n *\n * @name triggerElement\n * @memberof mixitup.State\n * @instance\n * @type {Element|null}\n * @default null\n */\n\n this.triggerElement = null;\n\n /**\n * The currently active dataset underlying the rendered targets, if the\n * dataset API is in use.\n *\n * @name activeDataset\n * @memberof mixitup.State\n * @instance\n * @type {Array.}\n * @default null\n */\n\n this.activeDataset = null;\n\n this.callActions('afterConstruct');\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.State);\n\n mixitup.State.prototype = Object.create(mixitup.Base.prototype);\n\n mixitup.State.prototype.constructor = mixitup.State;\n\n /**\n * @constructor\n * @memberof mixitup\n * @private\n * @since 3.0.0\n */\n\n mixitup.UserInstruction = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n this.command = {};\n this.animate = false;\n this.callback = null;\n\n this.callActions('afterConstruct');\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.UserInstruction);\n\n mixitup.UserInstruction.prototype = Object.create(mixitup.Base.prototype);\n\n mixitup.UserInstruction.prototype.constructor = mixitup.UserInstruction;\n\n /**\n * @constructor\n * @memberof mixitup\n * @private\n * @since 3.0.0\n */\n\n mixitup.Messages = function() {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct');\n\n /* Errors\n ----------------------------------------------------------------------------- */\n\n this.ERROR_FACTORY_INVALID_CONTAINER =\n '[MixItUp] An invalid selector or element reference was passed to the mixitup factory function';\n\n this.ERROR_FACTORY_CONTAINER_NOT_FOUND =\n '[MixItUp] The provided selector yielded no container element';\n\n this.ERROR_CONFIG_INVALID_ANIMATION_EFFECTS =\n '[MixItUp] Invalid value for `animation.effects`';\n\n this.ERROR_CONFIG_INVALID_CONTROLS_SCOPE =\n '[MixItUp] Invalid value for `controls.scope`';\n\n this.ERROR_CONFIG_INVALID_PROPERTY =\n '[MixitUp] Invalid configuration object property \"${erroneous}\"${suggestion}';\n\n this.ERROR_CONFIG_INVALID_PROPERTY_SUGGESTION =\n '. Did you mean \"${probableMatch}\"?';\n\n this.ERROR_CONFIG_DATA_UID_KEY_NOT_SET =\n '[MixItUp] To use the dataset API, a UID key must be specified using `data.uidKey`';\n\n this.ERROR_DATASET_INVALID_UID_KEY =\n '[MixItUp] The specified UID key \"${uidKey}\" is not present on one or more dataset items';\n\n this.ERROR_DATASET_DUPLICATE_UID =\n '[MixItUp] The UID \"${uid}\" was found on two or more dataset items. UIDs must be unique.';\n\n this.ERROR_INSERT_INVALID_ARGUMENTS =\n '[MixItUp] Please provider either an index or a sibling and position to insert, not both';\n\n this.ERROR_INSERT_PREEXISTING_ELEMENT =\n '[MixItUp] An element to be inserted already exists in the container';\n\n this.ERROR_FILTER_INVALID_ARGUMENTS =\n '[MixItUp] Please provide either a selector or collection `.filter()`, not both';\n\n this.ERROR_DATASET_NOT_SET =\n '[MixItUp] To use the dataset API with pre-rendered targets, a starting dataset must be set using `load.dataset`';\n\n this.ERROR_DATASET_PRERENDERED_MISMATCH =\n '[MixItUp] `load.dataset` does not match pre-rendered targets';\n\n this.ERROR_DATASET_RENDERER_NOT_SET =\n '[MixItUp] To insert an element via the dataset API, a target renderer function must be provided to `render.target`';\n\n this.ERROR_SORT_NON_EXISTENT_ELEMENT =\n '[MixItUp] An element to be sorted does not already exist in the container';\n\n /* Warnings\n ----------------------------------------------------------------------------- */\n\n this.WARNING_FACTORY_PREEXISTING_INSTANCE =\n '[MixItUp] WARNING: This element already has an active MixItUp instance. The provided configuration object will be ignored.' +\n ' If you wish to perform additional methods on this instance, please create a reference.';\n\n this.WARNING_INSERT_NO_ELEMENTS =\n '[MixItUp] WARNING: No valid elements were passed to `.insert()`';\n\n this.WARNING_REMOVE_NO_ELEMENTS =\n '[MixItUp] WARNING: No valid elements were passed to `.remove()`';\n\n this.WARNING_MULTIMIX_INSTANCE_QUEUE_FULL =\n '[MixItUp] WARNING: An operation was requested but the MixItUp instance was busy. The operation was rejected because the ' +\n 'queue is full or queuing is disabled.';\n\n this.WARNING_GET_OPERATION_INSTANCE_BUSY =\n '[MixItUp] WARNING: Operations can be be created while the MixItUp instance is busy.';\n\n this.WARNING_NO_PROMISE_IMPLEMENTATION =\n '[MixItUp] WARNING: No Promise implementations could be found. If you wish to use promises with MixItUp please install' +\n ' an ES6 Promise polyfill.';\n\n this.WARNING_INCONSISTENT_SORTING_ATTRIBUTES =\n '[MixItUp] WARNING: The requested sorting data attribute \"${attribute}\" was not present on one or more target elements' +\n ' which may product unexpected sort output';\n\n this.callActions('afterConstruct');\n\n this.compileTemplates();\n\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.Messages);\n\n mixitup.Messages.prototype = Object.create(mixitup.Base.prototype);\n\n mixitup.Messages.prototype.constructor = mixitup.Messages;\n\n /**\n * @return {void}\n */\n\n mixitup.Messages.prototype.compileTemplates = function() {\n var errorKey = '';\n var errorMessage = '';\n\n for (errorKey in this) {\n if (typeof (errorMessage = this[errorKey]) !== 'string') continue;\n\n this[h.camelCase(errorKey)] = h.template(errorMessage);\n }\n };\n\n mixitup.messages = new mixitup.Messages();\n\n /**\n * @constructor\n * @memberof mixitup\n * @private\n * @since 3.0.0\n * @param {mixitup.Mixer} mixer\n */\n\n mixitup.Facade = function Mixer(mixer) {\n mixitup.Base.call(this);\n\n this.callActions('beforeConstruct', arguments);\n\n this.configure = mixer.configure.bind(mixer);\n this.show = mixer.show.bind(mixer);\n this.hide = mixer.hide.bind(mixer);\n this.filter = mixer.filter.bind(mixer);\n this.toggleOn = mixer.toggleOn.bind(mixer);\n this.toggleOff = mixer.toggleOff.bind(mixer);\n this.sort = mixer.sort.bind(mixer);\n this.changeLayout = mixer.changeLayout.bind(mixer);\n this.multimix = mixer.multimix.bind(mixer);\n this.dataset = mixer.dataset.bind(mixer);\n this.tween = mixer.tween.bind(mixer);\n this.insert = mixer.insert.bind(mixer);\n this.insertBefore = mixer.insertBefore.bind(mixer);\n this.insertAfter = mixer.insertAfter.bind(mixer);\n this.prepend = mixer.prepend.bind(mixer);\n this.append = mixer.append.bind(mixer);\n this.remove = mixer.remove.bind(mixer);\n this.destroy = mixer.destroy.bind(mixer);\n this.forceRefresh = mixer.forceRefresh.bind(mixer);\n this.forceRender = mixer.forceRender.bind(mixer);\n this.isMixing = mixer.isMixing.bind(mixer);\n this.getOperation = mixer.getOperation.bind(mixer);\n this.getConfig = mixer.getConfig.bind(mixer);\n this.getState = mixer.getState.bind(mixer);\n\n this.callActions('afterConstruct', arguments);\n\n h.freeze(this);\n h.seal(this);\n };\n\n mixitup.BaseStatic.call(mixitup.Facade);\n\n mixitup.Facade.prototype = Object.create(mixitup.Base.prototype);\n\n mixitup.Facade.prototype.constructor = mixitup.Facade;\n\n if (typeof exports === 'object' && typeof module === 'object') {\n module.exports = mixitup;\n } else if (typeof define === 'function' && define.amd) {\n define(function() {\n return mixitup;\n });\n } else if (typeof window.mixitup === 'undefined' || typeof window.mixitup !== 'function') {\n window.mixitup = mixitup;\n }\n mixitup.BaseStatic.call(mixitup.constructor);\n\n mixitup.NAME = 'mixitup';\n mixitup.CORE_VERSION = '3.3.2';\n})(window);","/*!\n * jQuery JavaScript Library v3.7.1\n * https://jquery.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2023-08-28T13:37Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket trac-14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar version = \"3.7.1\",\n\n\trhtmlSuffix = /HTML$/i,\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\n\t// Retrieve the text value of an array of DOM nodes\n\ttext: function( elem ) {\n\t\tvar node,\n\t\t\tret = \"\",\n\t\t\ti = 0,\n\t\t\tnodeType = elem.nodeType;\n\n\t\tif ( !nodeType ) {\n\n\t\t\t// If no nodeType, this is expected to be an array\n\t\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t\t// Do not traverse comment nodes\n\t\t\t\tret += jQuery.text( node );\n\t\t\t}\n\t\t}\n\t\tif ( nodeType === 1 || nodeType === 11 ) {\n\t\t\treturn elem.textContent;\n\t\t}\n\t\tif ( nodeType === 9 ) {\n\t\t\treturn elem.documentElement.textContent;\n\t\t}\n\t\tif ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\n\t\t// Do not include comment or processing instruction nodes\n\n\t\treturn ret;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\tisXMLDoc: function( elem ) {\n\t\tvar namespace = elem && elem.namespaceURI,\n\t\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t\t// Assume HTML when documentElement doesn't yet exist, such as inside\n\t\t// document fragments.\n\t\treturn !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar pop = arr.pop;\n\n\nvar sort = arr.sort;\n\n\nvar splice = arr.splice;\n\n\nvar whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\n\nvar rtrimCSS = new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\n\n\n\n// Note: an element does not contain itself\njQuery.contains = function( a, b ) {\n\tvar bup = b && b.parentNode;\n\n\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE doesn't have `contains` on SVG.\n\t\ta.contains ?\n\t\t\ta.contains( bup ) :\n\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t) );\n};\n\n\n\n\n// CSS string/identifier serialization\n// https://drafts.csswg.org/cssom/#common-serializing-idioms\nvar rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n\nfunction fcssescape( ch, asCodePoint ) {\n\tif ( asCodePoint ) {\n\n\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\tif ( ch === \"\\0\" ) {\n\t\t\treturn \"\\uFFFD\";\n\t\t}\n\n\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t}\n\n\t// Other potentially-special ASCII characters get backslash-escaped\n\treturn \"\\\\\" + ch;\n}\n\njQuery.escapeSelector = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\n\n\n\nvar preferredDoc = document,\n\tpushNative = push;\n\n( function() {\n\nvar i,\n\tExpr,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\tpush = pushNative,\n\n\t// Local document vars\n\tdocument,\n\tdocumentElement,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\tmatches,\n\n\t// Instance-specific data\n\texpando = jQuery.expando,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|\" +\n\t\t\"loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trleadingCombinator = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" +\n\t\twhitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\tID: new RegExp( \"^#(\" + identifier + \")\" ),\n\t\tCLASS: new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\tTAG: new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\tATTR: new RegExp( \"^\" + attributes ),\n\t\tPSEUDO: new RegExp( \"^\" + pseudos ),\n\t\tCHILD: new RegExp(\n\t\t\t\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\tbool: new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\tneedsContext: new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// https://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\tif ( nonHex ) {\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\treturn nonHex;\n\t\t}\n\n\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t// Support: IE <=11+\n\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t// surrogate pair\n\t\treturn high < 0 ?\n\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes; see `setDocument`.\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE/Edge.\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && nodeName( elem, \"fieldset\" );\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android <=4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = {\n\t\tapply: function( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t},\n\t\tcall: function( target ) {\n\t\t\tpushNative.apply( target, slice.call( arguments, 1 ) );\n\t\t}\n\t};\n}\n\nfunction find( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tfind.contains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && context.getElementsByClassName ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( !nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when\n\t\t\t\t\t// strict-comparing two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( newContext != context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = jQuery.escapeSelector( nid );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrimCSS, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties\n\t\t// (see https://github.com/jquery/sizzle/issues/157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by jQuery selector module\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn nodeName( elem, \"input\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn ( nodeName( elem, \"input\" ) || nodeName( elem, \"button\" ) ) &&\n\t\t\telem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11+\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a jQuery selector context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [node] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nfunction setDocument( node ) {\n\tvar subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocumentElement = document.documentElement;\n\tdocumentIsHTML = !jQuery.isXMLDoc( document );\n\n\t// Support: iOS 7 only, IE 9 - 11+\n\t// Older browsers didn't support unprefixed `matches`.\n\tmatches = documentElement.matches ||\n\t\tdocumentElement.webkitMatchesSelector ||\n\t\tdocumentElement.msMatchesSelector;\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors\n\t// (see trac-13936).\n\t// Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`,\n\t// all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well.\n\tif ( documentElement.msMatchesSelector &&\n\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tpreferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t\tsubWindow.addEventListener( \"unload\", unloadHandler );\n\t}\n\n\t// Support: IE <10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocumentElement.appendChild( el ).id = jQuery.expando;\n\t\treturn !document.getElementsByName ||\n\t\t\t!document.getElementsByName( jQuery.expando ).length;\n\t} );\n\n\t// Support: IE 9 only\n\t// Check to see if it's possible to do matchesSelector\n\t// on a disconnected node.\n\tsupport.disconnectedMatch = assert( function( el ) {\n\t\treturn matches.call( el, \"*\" );\n\t} );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// IE/Edge don't support the :scope pseudo-class.\n\tsupport.scope = assert( function() {\n\t\treturn document.querySelectorAll( \":scope\" );\n\t} );\n\n\t// Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only\n\t// Make sure the `:has()` argument is parsed unforgivingly.\n\t// We include `*` in the test to detect buggy implementations that are\n\t// _selectively_ forgiving (specifically when the list includes at least\n\t// one valid selector).\n\t// Note that we treat complete lack of support for `:has()` as if it were\n\t// spec-compliant support, which is fine because use of `:has()` in such\n\t// environments will fail in the qSA path and fall back to jQuery traversal\n\t// anyway.\n\tsupport.cssHas = assert( function() {\n\t\ttry {\n\t\t\tdocument.querySelector( \":has(*,:jqfake)\" );\n\t\t\treturn false;\n\t\t} catch ( e ) {\n\t\t\treturn true;\n\t\t}\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter.ID = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter.ID = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find.TAG = function( tag, context ) {\n\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t// DocumentFragment nodes don't have gEBTN\n\t\t} else {\n\t\t\treturn context.querySelectorAll( tag );\n\t\t}\n\t};\n\n\t// Class\n\tExpr.find.CLASS = function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\trbuggyQSA = [];\n\n\t// Build QSA regex\n\t// Regex strategy adopted from Diego Perini\n\tassert( function( el ) {\n\n\t\tvar input;\n\n\t\tdocumentElement.appendChild( el ).innerHTML =\n\t\t\t\"\" +\n\t\t\t\"\";\n\n\t\t// Support: iOS <=7 - 8 only\n\t\t// Boolean attributes and \"value\" are not treated correctly in some XML documents\n\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t}\n\n\t\t// Support: iOS <=7 - 8 only\n\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\trbuggyQSA.push( \"~=\" );\n\t\t}\n\n\t\t// Support: iOS 8 only\n\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t}\n\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\trbuggyQSA.push( \":checked\" );\n\t\t}\n\n\t\t// Support: Windows 8 Native Apps\n\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tdocumentElement.appendChild( el ).disabled = true;\n\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t}\n\n\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t// Adding a temporary attribute to the document before the selection works\n\t\t// around the issue.\n\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"name\", \"\" );\n\t\tel.appendChild( input );\n\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t}\n\t} );\n\n\tif ( !support.cssHas ) {\n\n\t\t// Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n\t\t// Our regular `try-catch` mechanism fails to detect natively-unsupported\n\t\t// pseudo-classes inside `:has()` (such as `:has(:contains(\"Foo\"))`)\n\t\t// in browsers that parse the `:has()` argument as a forgiving selector list.\n\t\t// https://drafts.csswg.org/selectors/#relational now requires the argument\n\t\t// to be parsed unforgivingly, but browsers have not yet fully adjusted.\n\t\trbuggyQSA.push( \":has\" );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = function( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a === document || a.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b === document || b.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t};\n\n\treturn document;\n}\n\nfind.matches = function( expr, elements ) {\n\treturn find( expr, null, null, elements );\n};\n\nfind.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn find( expr, document, null, [ elem ] ).length > 0;\n};\n\nfind.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn jQuery.contains( context, elem );\n};\n\n\nfind.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (see trac-13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\tif ( val !== undefined ) {\n\t\treturn val;\n\t}\n\n\treturn elem.getAttribute( name );\n};\n\nfind.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\njQuery.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\t//\n\t// Support: Android <=4.0+\n\t// Testing for detecting duplicates is unpredictable so instead assume we can't\n\t// depend on duplicate detection in all browsers without a stable sort.\n\thasDuplicate = !support.sortStable;\n\tsortInput = !support.sortStable && slice.call( results, 0 );\n\tsort.call( results, sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tsplice.call( results, duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\njQuery.fn.uniqueSort = function() {\n\treturn this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) );\n};\n\nExpr = jQuery.expr = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\tATTR: function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || \"\" )\n\t\t\t\t.replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\tCHILD: function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" )\n\t\t\t\t);\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr.CHILD.test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\tTAG: function( nodeNameSelector ) {\n\t\t\tvar expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn nodeName( elem, expectedNodeName );\n\t\t\t\t};\n\t\t},\n\n\t\tCLASS: function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace + \")\" + className +\n\t\t\t\t\t\"(\" + whitespace + \"|$)\" ) ) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\tATTR: function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = find.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\tif ( operator === \"=\" ) {\n\t\t\t\t\treturn result === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"!=\" ) {\n\t\t\t\t\treturn result !== check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"^=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) === 0;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"*=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"$=\" ) {\n\t\t\t\t\treturn check && result.slice( -check.length ) === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"~=\" ) {\n\t\t\t\t\treturn ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" )\n\t\t\t\t\t\t.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"|=\" ) {\n\t\t\t\t\treturn result === check || result.slice( 0, check.length + 1 ) === check + \"-\";\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t};\n\t\t},\n\n\t\tCHILD: function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || ( parent[ expando ] = {} );\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\t\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\t\t\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\tPSEUDO: function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// https://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tfind.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as jQuery does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\tnot: markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrimCSS, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element\n\t\t\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\thas: markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn find( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\tcontains: markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// https://www.w3.org/TR/selectors/#lang-pseudo\n\t\tlang: markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tfind.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\ttarget: function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\troot: function( elem ) {\n\t\t\treturn elem === documentElement;\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === safeActiveElement() &&\n\t\t\t\tdocument.hasFocus() &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\tenabled: createDisabledPseudo( false ),\n\t\tdisabled: createDisabledPseudo( true ),\n\n\t\tchecked: function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\treturn ( nodeName( elem, \"input\" ) && !!elem.checked ) ||\n\t\t\t\t( nodeName( elem, \"option\" ) && !!elem.selected );\n\t\t},\n\n\t\tselected: function( elem ) {\n\n\t\t\t// Support: IE <=11+\n\t\t\t// Accessing the selectedIndex property\n\t\t\t// forces the browser to treat the default option as\n\t\t\t// selected when in an optgroup.\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\tempty: function( elem ) {\n\n\t\t\t// https://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !Expr.pseudos.empty( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\theader: function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"button\" ||\n\t\t\t\tnodeName( elem, \"button\" );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"text\" &&\n\n\t\t\t\t// Support: IE <10 only\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear\n\t\t\t\t// with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\tfirst: createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\tlast: createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\teq: createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\teven: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\todd: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tlt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i;\n\n\t\t\tif ( argument < 0 ) {\n\t\t\t\ti = argument + length;\n\t\t\t} else if ( argument > length ) {\n\t\t\t\ti = length;\n\t\t\t} else {\n\t\t\t\ti = argument;\n\t\t\t}\n\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tgt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos.nth = Expr.pseudos.eq;\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\nfunction tokenize( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rleadingCombinator.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrimCSS, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\tif ( parseOnly ) {\n\t\treturn soFar.length;\n\t}\n\n\treturn soFar ?\n\t\tfind.error( selector ) :\n\n\t\t// Cache the tokens\n\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\tif ( skip && nodeName( elem, skip ) ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = outerCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tfind( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem, matcherOut,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed ||\n\t\t\t\tmultipleContexts( selector || \"*\",\n\t\t\t\t\tcontext.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems;\n\n\t\tif ( matcher ) {\n\n\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter\n\t\t\t// or preexisting results,\n\t\t\tmatcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t[] :\n\n\t\t\t\t// ...otherwise use results directly\n\t\t\t\tresults;\n\n\t\t\t// Find primary matches\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t} else {\n\t\t\tmatcherOut = matcherIn;\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tvar ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element\n\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 )\n\t\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrimCSS, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find.TAG( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: iOS <=7 - 9 only\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching\n\t\t\t// elements by id. (see trac-14142)\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tjQuery.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\nfunction compile( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n}\n\n/**\n * A low-level selection function that works with jQuery's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with jQuery selector compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nfunction select( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find.ID(\n\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\tcontext\n\t\t\t) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr.needsContext.test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) &&\n\t\t\t\t\t\ttestContext( context.parentNode ) || context\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n}\n\n// One-time assignments\n\n// Support: Android <=4.0 - 4.1+\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Android <=4.0 - 4.1+\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\njQuery.find = find;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.unique = jQuery.uniqueSort;\n\n// These have always been private, but they used to be documented as part of\n// Sizzle so let's maintain them for now for backwards compatibility purposes.\nfind.compile = compile;\nfind.select = select;\nfind.setDocument = setDocument;\nfind.tokenize = tokenize;\n\nfind.escape = jQuery.escapeSelector;\nfind.getText = jQuery.text;\nfind.isXML = jQuery.isXMLDoc;\nfind.selectors = jQuery.expr;\nfind.support = jQuery.support;\nfind.uniqueSort = jQuery.uniqueSort;\n\n\t/* eslint-enable */\n\n} )();\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (trac-9521)\n\t// Strict HTML recognition (trac-11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to jQuery#find\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.error );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the error, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getErrorHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getErrorHook();\n\n\t\t\t\t\t\t\t\t// The deprecated alias of the above. While the name suggests\n\t\t\t\t\t\t\t\t// returning the stack, not an error instance, jQuery just passes\n\t\t\t\t\t\t\t\t// it directly to `console.warn` so both will work; an instance\n\t\t\t\t\t\t\t\t// just better cooperates with source maps.\n\t\t\t\t\t\t\t\t} else if ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error\n// captured before the async barrier to get the original error cause\n// which may otherwise be hidden.\njQuery.Deferred.exceptionHook = function( error, asyncError ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message,\n\t\t\terror.stack, asyncError );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See trac-6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (trac-9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see trac-8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (trac-14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (trac-13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
    \" ],\n\tcol: [ 2, \"\", \"
    \" ],\n\ttr: [ 2, \"\", \"
    \" ],\n\ttd: [ 3, \"\", \"
    \" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (trac-12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (trac-13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", true );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, isSetup ) {\n\n\t// Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !isSetup ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\tif ( !saved ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tdataPriv.set( this, type, false );\n\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering\n\t\t\t\t// the native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, jQuery.event.trigger(\n\t\t\t\t\tsaved[ 0 ],\n\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\tthis\n\t\t\t\t) );\n\n\t\t\t\t// Abort handling of the native event by all jQuery handlers while allowing\n\t\t\t\t// native handlers on the same element to run. On target, this is achieved\n\t\t\t\t// by stopping immediate propagation just on the jQuery event. However,\n\t\t\t\t// the native event is re-wrapped by a jQuery one on each level of the\n\t\t\t\t// propagation so the only way to stop it for jQuery is to stop it for\n\t\t\t\t// everyone via native `stopPropagation()`. This is not a problem for\n\t\t\t\t// focus/blur which don't bubble, but it does also stop click on checkboxes\n\t\t\t\t// and radios. We accept this limitation.\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.isImmediatePropagationStopped = returnTrue;\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (trac-504, trac-13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\n\tfunction focusMappedHandler( nativeEvent ) {\n\t\tif ( document.documentMode ) {\n\n\t\t\t// Support: IE 11+\n\t\t\t// Attach a single focusin/focusout handler on the document while someone wants\n\t\t\t// focus/blur. This is because the former are synchronous in IE while the latter\n\t\t\t// are async. In other browsers, all those handlers are invoked synchronously.\n\n\t\t\t// `handle` from private data would already wrap the event, but we need\n\t\t\t// to change the `type` here.\n\t\t\tvar handle = dataPriv.get( this, \"handle\" ),\n\t\t\t\tevent = jQuery.event.fix( nativeEvent );\n\t\t\tevent.type = nativeEvent.type === \"focusin\" ? \"focus\" : \"blur\";\n\t\t\tevent.isSimulated = true;\n\n\t\t\t// First, handle focusin/focusout\n\t\t\thandle( nativeEvent );\n\n\t\t\t// ...then, handle focus/blur\n\t\t\t//\n\t\t\t// focus/blur don't bubble while focusin/focusout do; simulate the former by only\n\t\t\t// invoking the handler at the lower level.\n\t\t\tif ( event.target === event.currentTarget ) {\n\n\t\t\t\t// The setup part calls `leverageNative`, which, in turn, calls\n\t\t\t\t// `jQuery.event.add`, so event handle will already have been set\n\t\t\t\t// by this point.\n\t\t\t\thandle( event );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// For non-IE browsers, attach a single capturing handler on the document\n\t\t\t// while someone wants focusin/focusout.\n\t\t\tjQuery.event.simulate( delegateType, nativeEvent.target,\n\t\t\t\tjQuery.event.fix( nativeEvent ) );\n\t\t}\n\t}\n\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\tvar attaches;\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, true );\n\n\t\t\tif ( document.documentMode ) {\n\n\t\t\t\t// Support: IE 9 - 11+\n\t\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\t\tattaches = dataPriv.get( this, delegateType );\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t}\n\t\t\t\tdataPriv.set( this, delegateType, ( attaches || 0 ) + 1 );\n\t\t\t} else {\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tvar attaches;\n\n\t\t\tif ( document.documentMode ) {\n\t\t\t\tattaches = dataPriv.get( this, delegateType ) - 1;\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t\tdataPriv.remove( this, delegateType );\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.set( this, delegateType, attaches );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Return false to indicate standard teardown should be applied\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n\n\t// Support: Firefox <=44\n\t// Firefox doesn't have focus(in | out) events\n\t// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n\t//\n\t// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n\t// focus(in | out) events fire after focus & blur events,\n\t// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n\t// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n\t//\n\t// Support: IE 9 - 11+\n\t// To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,\n\t// attach a single handler for both events in IE.\n\tjQuery.event.special[ delegateType ] = {\n\t\tsetup: function() {\n\n\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType );\n\n\t\t\t// Support: IE 9 - 11+\n\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.addEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\tdataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 );\n\t\t},\n\t\tteardown: function() {\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType ) - 1;\n\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.removeEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( dataHolder, delegateType );\n\t\t\t} else {\n\t\t\t\tdataPriv.set( dataHolder, delegateType, attaches );\n\t\t\t}\n\t\t}\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (trac-8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Re-enable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Unwrap a CDATA section containing script contents. This shouldn't be\n\t\t\t\t\t\t\t// needed as in XML documents they're already not visible when\n\t\t\t\t\t\t\t// inspecting element contents and in HTML documents they have no\n\t\t\t\t\t\t\t// meaning but we're preserving that logic for backwards compatibility.\n\t\t\t\t\t\t\t// This will be removed completely in 4.0. See gh-4904.\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew jQuery#find here for performance reasons:\n\t\t\t// https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar rcustomProp = /^--/;\n\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (trac-8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"box-sizing:content-box;border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is `display: block`\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tisCustomProp = rcustomProp.test( name ),\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, trac-12537)\n\t// .css('--customProperty) (gh-3144)\n\tif ( computed ) {\n\n\t\t// Support: IE <=9 - 11+\n\t\t// IE only supports `\"float\"` in `getPropertyValue`; in computed styles\n\t\t// it's only available as `\"cssFloat\"`. We no longer modify properties\n\t\t// sent to `.css()` apart from camelCasing, so we need to check both.\n\t\t// Normally, this would create difference in behavior: if\n\t\t// `getPropertyValue` returns an empty string, the value returned\n\t\t// by `.css()` would be `undefined`. This is usually the case for\n\t\t// disconnected elements. However, in IE even disconnected elements\n\t\t// with no styles return `\"none\"` for `getPropertyValue( \"float\" )`\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( isCustomProp && ret ) {\n\n\t\t\t// Support: Firefox 105+, Chrome <=105+\n\t\t\t// Spec requires trimming whitespace for custom properties (gh-4926).\n\t\t\t// Firefox only trims leading whitespace. Chrome just collapses\n\t\t\t// both leading & trailing whitespace to a single space.\n\t\t\t//\n\t\t\t// Fall back to `undefined` if empty string returned.\n\t\t\t// This collapses a missing definition with property defined\n\t\t\t// and set to an empty string but there's no standard API\n\t\t\t// allowing us to differentiate them without a performance penalty\n\t\t\t// and returning `undefined` aligns with older jQuery.\n\t\t\t//\n\t\t\t// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" ) || undefined;\n\t\t}\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0,\n\t\tmarginDelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\t// Count margin delta separately to only add it after scroll gutter adjustment.\n\t\t// This is needed to make negative margins work with `outerHeight( true )` (gh-3982).\n\t\tif ( box === \"margin\" ) {\n\t\t\tmarginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta + marginDelta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\tanimationIterationCount: true,\n\t\taspectRatio: true,\n\t\tborderImageSlice: true,\n\t\tcolumnCount: true,\n\t\tflexGrow: true,\n\t\tflexShrink: true,\n\t\tfontWeight: true,\n\t\tgridArea: true,\n\t\tgridColumn: true,\n\t\tgridColumnEnd: true,\n\t\tgridColumnStart: true,\n\t\tgridRow: true,\n\t\tgridRowEnd: true,\n\t\tgridRowStart: true,\n\t\tlineHeight: true,\n\t\topacity: true,\n\t\torder: true,\n\t\torphans: true,\n\t\tscale: true,\n\t\twidows: true,\n\t\tzIndex: true,\n\t\tzoom: true,\n\n\t\t// SVG-related\n\t\tfillOpacity: true,\n\t\tfloodOpacity: true,\n\t\tstopOpacity: true,\n\t\tstrokeMiterlimit: true,\n\t\tstrokeOpacity: true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug trac-9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (trac-7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// Use proper attribute retrieval (trac-12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar classNames, className, i, self,\n\t\t\ttype = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\treturn this.each( function() {\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (trac-14686, trac-14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (trac-2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (trac-6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// trac-7653, trac-8125, trac-8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes trac-9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (trac-10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket trac-12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// trac-9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (trac-11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// trac-1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see trac-8605, trac-14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// trac-14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"