{"version":3,"sources":["node_modules/browser-pack/_prelude.js","node_modules/ally.js/element/focus.svg-foreign-object-hack.js","script.js","node_modules/ally.js/event/shadow-focus.js","node_modules/ally.js/get/active-elements.js","node_modules/ally.js/get/parents.js","node_modules/ally.js/get/shadow-host-parents.js","node_modules/ally.js/get/shadow-host.js","node_modules/ally.js/is/shadowed.js","node_modules/ally.js/style/focus-within.js","node_modules/ally.js/supports/css-shadow-piercing-deep-combinator.js","node_modules/ally.js/supports/detect-focus.js","node_modules/ally.js/supports/focus-area-img-tabindex.js","node_modules/ally.js/supports/focus-area-tabindex.js","node_modules/ally.js/supports/focus-area-without-href.js","node_modules/ally.js/supports/focus-audio-without-controls.js","node_modules/ally.js/supports/focus-broken-image-map.js","node_modules/ally.js/supports/focus-children-of-focusable-flexbox.js","node_modules/ally.js/supports/focus-fieldset-disabled.js","node_modules/ally.js/supports/focus-fieldset.js","node_modules/ally.js/supports/focus-flexbox-container.js","node_modules/ally.js/supports/focus-form-disabled.js","node_modules/ally.js/supports/focus-img-ismap.js","node_modules/ally.js/supports/focus-img-usemap-tabindex.js","node_modules/ally.js/supports/focus-in-hidden-iframe.js","node_modules/ally.js/supports/focus-in-zero-dimension-object.js","node_modules/ally.js/supports/focus-invalid-tabindex.js","node_modules/ally.js/supports/focus-label-tabindex.js","node_modules/ally.js/supports/focus-object-svg-hidden.js","node_modules/ally.js/supports/focus-object-svg.js","node_modules/ally.js/supports/focus-object-swf.js","node_modules/ally.js/supports/focus-redirect-img-usemap.js","node_modules/ally.js/supports/focus-redirect-legend.js","node_modules/ally.js/supports/focus-scroll-body.js","node_modules/ally.js/supports/focus-scroll-container-without-overflow.js","node_modules/ally.js/supports/focus-scroll-container.js","node_modules/ally.js/supports/focus-summary.js","node_modules/ally.js/supports/focus-svg-focusable-attribute.js","node_modules/ally.js/supports/focus-svg-foreignobject-tabindex.js","node_modules/ally.js/supports/focus-svg-in-iframe.js","node_modules/ally.js/supports/focus-svg-negative-tabindex-attribute.js","node_modules/ally.js/supports/focus-svg-tabindex-attribute.js","node_modules/ally.js/supports/focus-svg-use-tabindex.js","node_modules/ally.js/supports/focus-svg.js","node_modules/ally.js/supports/focus-tabindex-trailing-characters.js","node_modules/ally.js/supports/focus-table.js","node_modules/ally.js/supports/focus-video-without-controls.js","node_modules/ally.js/supports/helper/svg.js","node_modules/ally.js/supports/media/gif.invalid.js","node_modules/ally.js/supports/media/gif.js","node_modules/ally.js/supports/media/mp3.js","node_modules/ally.js/supports/media/mp4.js","node_modules/ally.js/supports/media/svg.js","node_modules/ally.js/supports/supports-cache.js","node_modules/ally.js/supports/supports.js","node_modules/ally.js/supports/tabsequence-area-at-img-position.js","node_modules/ally.js/util/context-to-element.js","node_modules/ally.js/util/decorate-service.js","node_modules/ally.js/util/node-array.js","node_modules/ally.js/util/platform.js","node_modules/ally.js/util/select-in-shadows.js","node_modules/ally.js/util/toggle-class.js","node_modules/ally.js/version.js","node_modules/object-fit-images/dist/ofi.common-js.js","node_modules/platform/platform.js","node_modules/what-input/dist/what-input.js","src/js/modules/_accordion.js","src/js/modules/_header.js","src/js/modules/_menu.js","src/js/modules/_testimonial_slider.js","src/js/script.js","src/js/util/_debounce.js"],"names":["r","e","n","t","o","i","f","c","require","u","a","Error","code","p","exports","call","length","1","module","makeFocusableForeignObject","fragment","document","createElement","innerHTML","firstChild","Object","defineProperty","value","element","isSvgElement","ownerSVGElement","nodeName","toLowerCase","foreignObject","appendChild","input","querySelector","focus","disabled","removeChild","2","_interopRequireDefault","obj","__esModule","default","_activeElements","_activeElements2","_decorateService","_decorateService2","engage","disengage","documentElement","createShadowRoot","blurTimer","blurElement","handleElementBlurEvent","stopHandleElementBlurEvent","window","clearImmediate","clearTimeout","setImmediate","setTimeout","handleFocusChange","observeElementBlurEvent","addEventListener","removeEventListener","_active","shadowFocusEvent","CustomEvent","bubbles","cancelable","detail","elements","active","hosts","slice","dispatchEvent","handleDocumentFocusEvent","../get/active-elements","../util/decorate-service","3","walkToShadowedElement","list","activeElement","shadowRoot","unshift","walkFromShadowedElement","_shadowHostParents2","context","concat","body","_shadowed2","_shadowed","_shadowHostParents","../is/shadowed","./shadow-host-parents","4","_ref","arguments","undefined","_contextToElement2","label","push","parentNode","nodeType","Node","ELEMENT_NODE","_contextToElement","../util/context-to-element","5","_shadowHost2","_shadowHost","./shadow-host","6","container","DOCUMENT_FRAGMENT_NODE","host","7","resolveDocument","Boolean","../get/shadow-host","8","applyFocusWithinClass","supports","cssShadowPiercingDeepCombinator","_current","querySelectorAll","selector","map","_parents2","reduce","previous","current","forEach","indexOf","_toggleClass","removeClass","className","addClass","handleDocumentBlurEvent","handleShadowFocusEvent","event","shadowHandle","blurEventName","focusEventName","_supports3","_selectInShadows2","_shadowFocus2","_shadowFocus","_parents","_selectInShadows","_supports2","supportsFocusIn","../event/shadow-focus","../get/parents","../supports/supports","../util/select-in-shadows","../util/toggle-class","9","combinator","noArrowArrowArrow","noDeep","10","before","data","windowScrollTop","scrollTop","windowScrollLeft","scrollLeft","bodyScrollTop","bodyScrollLeft","iframe","setAttribute","_window","contentWindow","_document","open","close","wrapper","test","options","mutate","validate","after","blur","_platform2","is","IE10","tests","results","keys","key","_platform","../util/platform","11","_gif","_gif2","./media/gif","12","focusTarget","GECKO","13","14","_mp","_mp2","name","./media/mp3","15","./media/gif.invalid","16","17","18","19","20","21","href","22","23","iframeDocument","style","visibility","24","result","WEBKIT","25","26","offsetHeight","27","_svg","_svg2","./media/svg","28","29","IE9","30","target","31","focusable","tabbable","32","33","34","35","firstElementChild","36","generate","./helper/svg","37","getElementsByTagName","38","SVGElement","prototype","39","40","41","join","42","43","44","createDocumentFragment","45","./media/mp4","46","HTMLElement","_focus2","_focus","../../element/focus.svg-foreign-object-hack","47","48","49","./gif","50","51","52","readLocalStorage","localStorage","getItem","JSON","parse","writeLocalStorage","hasFocus","setItem","stringify","removeItem","_version","_version2","userAgent","navigator","cacheKey","cache","version","get","set","values","time","Date","toISOString","../version","53","executeTests","_detectFocus2","testDescriptions","testCallbacks","supportsCache","_supportsCache2","_detectFocus","_supportsCache","_cssShadowPiercingDeepCombinator","_cssShadowPiercingDeepCombinator2","_focusAreaImgTabindex","_focusAreaImgTabindex2","_focusAreaTabindex","_focusAreaTabindex2","_focusAreaWithoutHref","_focusAreaWithoutHref2","_focusAudioWithoutControls","_focusAudioWithoutControls2","_focusBrokenImageMap","_focusBrokenImageMap2","_focusChildrenOfFocusableFlexbox","_focusChildrenOfFocusableFlexbox2","_focusFieldsetDisabled","_focusFieldsetDisabled2","_focusFieldset","_focusFieldset2","_focusFlexboxContainer","_focusFlexboxContainer2","_focusFormDisabled","_focusFormDisabled2","_focusImgIsmap","_focusImgIsmap2","_focusImgUsemapTabindex","_focusImgUsemapTabindex2","_focusInHiddenIframe","_focusInHiddenIframe2","_focusInZeroDimensionObject","_focusInZeroDimensionObject2","_focusInvalidTabindex","_focusInvalidTabindex2","_focusLabelTabindex","_focusLabelTabindex2","_focusObjectSvgHidden","_focusObjectSvgHidden2","_focusObjectSvg","_focusObjectSvg2","_focusObjectSwf","_focusObjectSwf2","_focusRedirectImgUsemap","_focusRedirectImgUsemap2","_focusRedirectLegend","_focusRedirectLegend2","_focusScrollBody","_focusScrollBody2","_focusScrollContainerWithoutOverflow","_focusScrollContainerWithoutOverflow2","_focusScrollContainer","_focusScrollContainer2","_focusSummary","_focusSummary2","_focusSvgFocusableAttribute","_focusSvgFocusableAttribute2","_focusSvgTabindexAttribute","_focusSvgTabindexAttribute2","_focusSvgNegativeTabindexAttribute","_focusSvgNegativeTabindexAttribute2","_focusSvgUseTabindex","_focusSvgUseTabindex2","_focusSvgForeignobjectTabindex","_focusSvgForeignobjectTabindex2","_focusSvgInIframe","_focusSvgInIframe2","_focusSvg","_focusSvg2","_focusTabindexTrailingCharacters","_focusTabindexTrailingCharacters2","_focusTable","_focusTable2","_focusVideoWithoutControls","_focusVideoWithoutControls2","_tabsequenceAreaAtImgPosition","_tabsequenceAreaAtImgPosition2","focusInZeroDimensionObject","focusObjectSwf","focusSvgInIframe","tabsequenceAreaAtImgPosition","focusAreaImgTabindex","focusAreaTabindex","focusAreaWithoutHref","focusAudioWithoutControls","focusBrokenImageMap","focusChildrenOfFocusableFlexbox","focusFieldsetDisabled","focusFieldset","focusFlexboxContainer","focusFormDisabled","focusImgIsmap","focusImgUsemapTabindex","focusInHiddenIframe","focusInvalidTabindex","focusLabelTabindex","focusObjectSvg","focusObjectSvgHidden","focusRedirectImgUsemap","focusRedirectLegend","focusScrollBody","focusScrollContainerWithoutOverflow","focusScrollContainer","focusSummary","focusSvgFocusableAttribute","focusSvgTabindexAttribute","focusSvgNegativeTabindexAttribute","focusSvgUseTabindex","focusSvgForeignobjectTabindex","focusSvg","focusTabindexTrailingCharacters","focusTable","focusVideoWithoutControls","./css-shadow-piercing-deep-combinator","./detect-focus","./focus-area-img-tabindex","./focus-area-tabindex","./focus-area-without-href","./focus-audio-without-controls","./focus-broken-image-map","./focus-children-of-focusable-flexbox","./focus-fieldset","./focus-fieldset-disabled","./focus-flexbox-container","./focus-form-disabled","./focus-img-ismap","./focus-img-usemap-tabindex","./focus-in-hidden-iframe","./focus-in-zero-dimension-object","./focus-invalid-tabindex","./focus-label-tabindex","./focus-object-svg","./focus-object-svg-hidden","./focus-object-swf","./focus-redirect-img-usemap","./focus-redirect-legend","./focus-scroll-body","./focus-scroll-container","./focus-scroll-container-without-overflow","./focus-summary","./focus-svg","./focus-svg-focusable-attribute","./focus-svg-foreignobject-tabindex","./focus-svg-in-iframe","./focus-svg-negative-tabindex-attribute","./focus-svg-tabindex-attribute","./focus-svg-use-tabindex","./focus-tabindex-trailing-characters","./focus-table","./focus-video-without-controls","./supports-cache","./tabsequence-area-at-img-position","54","TRIDENT","EDGE","55","_ref$label","defaultToDocument","_nodeArray2","DOCUMENT_NODE","TypeError","_nodeArray","../util/node-array","56","destruct","force","this","instances","_result","initialize","bind","noop","_ref2","57","Array","isArray","String","58","_platform3","platform","os","family","ANDROID","WINDOWS","OSX","IOS","BLINK","layout","parseFloat","majorVersion","Math","floor","IE11","59","shadowPrefix","operator","replace","split","../supports/css-shadow-piercing-deep-combinator","60","getClassNames","getAttribute","toggleClass","classNames","idx","hasClass","shouldHaveClass","splice","61","62","createPlaceholder","w","h","polyfillCurrentSrc","el","srcset","supportsCurrentSrc","picturefill","pf","_","ns","evaled","fillImg","reselect","curSrc","supported","currentSrc","src","getStyle","parsed","getComputedStyle","fontFamily","props","propRegex","exec","setPlaceholder","img","width","height","placeholder","nativeGetAttribute","nativeSetAttribute","onImageReady","callback","naturalWidth","fixOne","ofi","OFI","skipTest","supportsObjectFit","Image","naturalHeight","keepSrcUsable","err","console","warn","backgroundImage","backgroundPosition","backgroundRepeat","backgroundOrigin","backgroundSize","descriptors","prop","ss","hijackAttributes","getOfiImageMaybe","supportsObjectPosition","HTMLImageElement","fix","imgs","opts","startAutoMode","autoModeEnabled","supportsOFI","tagName","watchMQ","testImg","object-position","63","global","capitalize","string","charAt","toUpperCase","cleanupOS","pattern","10.0","6.4","6.3","6.2","6.1","6.0","5.2","5.1","5.01","5.0","4.0","4.90","RegExp","format","each","object","index","maxSafeInteger","forOwn","trim","hasOwnProperty","getClassOf","toString","isHostType","property","type","qualify","array","accumulator","ua","getLayout","guesses","guess","getManufacturer","product","getName","getOS","getProduct","getVersion","patterns","toStringPlatform","description","root","isCustomContext","nav","isSpecialCasedOS","isModuleScope","thisBinding","oldRoot","likeChrome","objectClass","airRuntimeClass","enviroClass","javaClass","java","phantomClass","rhino","environment","alpha","beta","doc","opera","operamini","operaClass","reOpera","arch","prerelease","useFeatures","manufacturer","Apple","iPad","iPhone","iPod","Archos","Amazon","Kindle","Kindle Fire","Asus","Transformer","Barnes & Noble","Nook","BlackBerry","PlayBook","Google","Google TV","Nexus","HP","TouchPad","HTC","LG","Microsoft","Xbox","Xbox One","Motorola","Xoom","Nintendo","Wii U","Wii","Nokia","Lumia","Samsung","Galaxy S","Galaxy S2","Galaxy S3","Galaxy S4","Sony","PlayStation 4","PlayStation 3","PlayStation Vita","lang","System","getProperty","system","process","browser","runtime","flash","Capabilities","phantom","major","minor","patch","documentMode","toFixed","appMinorVersion","external","parseInt","architecture","cpuClass","objectTypes","function","freeExports","freeModule","freeGlobal","self","pow","objectProto","define","amd","64","factory","modules","__webpack_require__","moduleId","installedModules","id","loaded","m","ask","ignoreKeys","specificKeys","registerOnChange","unRegisterOnChange","docElem","currentElement","currentInput","currentIntent","currentTimestamp","now","shouldPersist","formInputs","functionList","ignoreMap","specificMap","inputMap","keydown","keyup","mousedown","mousemove","MSPointerDown","MSPointerMove","pointerdown","pointermove","touchstart","touchend","isScrolling","mousePos","x","y","pointerMap","supportsPassive","setUp","detectWheel","addListeners","passive","setPersist","PointerEvent","setInput","setIntent","MSPointerEvent","setElement","clearElement","sessionStorage","doUpdate","eventKey","which","pointerType","ignoreMatch","specificMatch","shouldUpdate","validateTouch","persistInput","activeElem","notFormInput","checkClosest","fireFunctions","detectScrolling","classList","removeAttribute","timestamp","touchIsValid","wheelType","onmousewheel","len","fn","objPos","match","screenX","screenY","elem","tag","ElementPrototype","Element","matches","msMatchesSelector","webkitMatchesSelector","closest","parentElement","opt","arr","eventType","position","clearStorage","clear","65","66","$","$body","lookup","mobile","sticky","searchButtonContext","activateSearch","$input","deactivateSearch","toggleSearch","activateMenu","deactivateMenu","toggleMenu","mobileOrStickyNav","contains","on","currentTarget","searchForm","searchFormAction","attr","searchFormPartials","click","$radio","radio_selector","find","removeAttr","stopImmediatePropagation","preventDefault","67","debounce","setMenuToggleZindex","winWidth","prevent","enable","over","out","targets","items","reset","_i","remove","outClick","add","../util/_debounce","68","testimTimer","touchStartPos","touchEndPos","touchPosDiff","testim","getElementById","testimDots","children","testimContent","testimLeftArrow","testimRightArrow","testimSpeed","currentSlide","currentActive","ignoreTouch","onload","playSlide","slide","k","l","keyCode","changedTouches","clientX","log","69","focusWithin","objectFitImages","../js/modules/_accordion","../js/modules/_header","../js/modules/_menu","../js/modules/_testimonial_slider","ally.js/style/focus-within","object-fit-images","what-input","70","func","wait","immediate","timeout","args","later","apply","callNow"],"mappings":"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","file":"script.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i element into the SVG element to receive focus\n var foreignObject = makeFocusableForeignObject();\n element.appendChild(foreignObject);\n var input = foreignObject.querySelector('input');\n input.focus();\n\n // upon disabling the activeElement, IE and Edge\n // will not shift focus to like all the other\n // browsers, but instead find the first focusable\n // ancestor and shift focus to that\n input.disabled = true;\n\n // clean up\n element.removeChild(foreignObject);\n return true;\n};\n\nfunction makeFocusableForeignObject() {\n var fragment = document.createElement('div');\n fragment.innerHTML = '\\n \\n ';\n\n return fragment.firstChild.firstChild;\n}\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus.svg-foreign-object-hack.js.map","(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i element into the SVG element to receive focus\n var foreignObject = makeFocusableForeignObject();\n element.appendChild(foreignObject);\n var input = foreignObject.querySelector('input');\n input.focus();\n\n // upon disabling the activeElement, IE and Edge\n // will not shift focus to like all the other\n // browsers, but instead find the first focusable\n // ancestor and shift focus to that\n input.disabled = true;\n\n // clean up\n element.removeChild(foreignObject);\n return true;\n};\n\nfunction makeFocusableForeignObject() {\n var fragment = document.createElement('div');\n fragment.innerHTML = '\\n \\n ';\n\n return fragment.firstChild.firstChild;\n}\n\nmodule.exports = exports['default'];\n\n},{}],2:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _activeElements = require('../get/active-elements');\n\nvar _activeElements2 = _interopRequireDefault(_activeElements);\n\nvar _decorateService = require('../util/decorate-service');\n\nvar _decorateService2 = _interopRequireDefault(_decorateService);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\n Utility to observe focus changes within ShadowDOMs.\n\n USAGE:\n engage();\n document.body.addEventListener('shadow-focus', function(event) {\n // event.detail.elements: complete focus ancestry (array of nodes)\n // event.detail.active: the actually focused element within the ShadowDOM\n // event.detail.hosts: the shadow host ancestry of the active element\n }, false);\n\n Alternate implementation: https://github.com/cdata/focus-observer\n*/\n\nvar engage = void 0;\nvar disengage = void 0;\n\nif (typeof document === 'undefined' || !document.documentElement.createShadowRoot) {\n // no need to initialize any of this if we don't have ShadowDOM available\n engage = disengage = function disengage() {};\n} else {\n (function () {\n var blurTimer = void 0;\n var blurElement = void 0;\n\n var handleElementBlurEvent = function handleElementBlurEvent() {\n stopHandleElementBlurEvent();\n // abort any handlers that come from document blur handler\n (window.clearImmediate || window.clearTimeout)(blurTimer);\n blurTimer = (window.setImmediate || window.setTimeout)(function () {\n handleFocusChange();\n });\n };\n\n var observeElementBlurEvent = function observeElementBlurEvent(element) {\n // call us when we're leaving the element\n element.addEventListener('blur', handleElementBlurEvent, true);\n blurElement = element;\n };\n\n var stopHandleElementBlurEvent = function stopHandleElementBlurEvent() {\n // once() - sometimes I miss jQuery's simplicity…\n blurElement && blurElement.removeEventListener('blur', handleElementBlurEvent, true);\n blurElement = null;\n };\n\n var handleFocusChange = function handleFocusChange() {\n var _active = (0, _activeElements2.default)();\n if (_active.length === 1) {\n stopHandleElementBlurEvent();\n return;\n }\n\n // listen for blur so we know when to re-validate\n observeElementBlurEvent(_active[0]);\n var shadowFocusEvent = new CustomEvent('shadow-focus', {\n bubbles: false,\n cancelable: false,\n detail: {\n // complete focus ancestry\n elements: _active,\n // the actually focused element\n active: _active[0],\n // shadow host ancestry\n hosts: _active.slice(1)\n }\n });\n\n document.dispatchEvent(shadowFocusEvent);\n };\n\n var handleDocumentFocusEvent = function handleDocumentFocusEvent() {\n (window.clearImmediate || window.clearTimeout)(blurTimer);\n handleFocusChange();\n };\n\n engage = function engage() {\n document.addEventListener('focus', handleDocumentFocusEvent, true);\n };\n\n disengage = function disengage() {\n (window.clearImmediate || window.clearTimeout)(blurTimer);\n blurElement && blurElement.removeEventListener('blur', handleElementBlurEvent, true);\n document.removeEventListener('focus', handleDocumentFocusEvent, true);\n };\n })();\n}\n\nexports.default = (0, _decorateService2.default)({ engage: engage, disengage: disengage });\nmodule.exports = exports['default'];\n\n},{\"../get/active-elements\":3,\"../util/decorate-service\":56}],3:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function () {\n if (document.activeElement === null) {\n // IE10 does not redirect focus to when the activeElement is removed\n document.body.focus();\n }\n\n // Firefox currently leaks the shadowed element\n // @browser-issue Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1117535\n if ((0, _shadowed2.default)(document.activeElement)) {\n return walkFromShadowedElement();\n }\n\n return walkToShadowedElement();\n};\n\nvar _shadowed = require('../is/shadowed');\n\nvar _shadowed2 = _interopRequireDefault(_shadowed);\n\nvar _shadowHostParents = require('./shadow-host-parents');\n\nvar _shadowHostParents2 = _interopRequireDefault(_shadowHostParents);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// [0] always is the actual active element (even within web-components)\n// [0+n] is the hierarchy of shadow-doms with [length -1] being the top most shadow-host\n\nfunction walkToShadowedElement() {\n var list = [document.activeElement];\n\n while (list[0] && list[0].shadowRoot) {\n list.unshift(list[0].shadowRoot.activeElement);\n }\n\n return list;\n}\n\nfunction walkFromShadowedElement() {\n var hosts = (0, _shadowHostParents2.default)({ context: document.activeElement });\n return [document.activeElement].concat(hosts);\n}\n\nmodule.exports = exports['default'];\n\n},{\"../is/shadowed\":7,\"./shadow-host-parents\":5}],4:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function () {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n context = _ref.context;\n\n var list = [];\n var element = (0, _contextToElement2.default)({\n label: 'get/parents',\n context: context\n });\n\n while (element) {\n list.push(element);\n // IE does know support parentElement on SVGElement\n element = element.parentNode;\n if (element && element.nodeType !== Node.ELEMENT_NODE) {\n element = null;\n }\n }\n\n return list;\n};\n\nvar _contextToElement = require('../util/context-to-element');\n\nvar _contextToElement2 = _interopRequireDefault(_contextToElement);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = exports['default'];\n\n// [elem, elem.parent, elem.parent.parent, …, html]\n// will not contain the shadowRoot (DOCUMENT_FRAGMENT_NODE) and shadowHost\n\n},{\"../util/context-to-element\":55}],5:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function () {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n context = _ref.context;\n\n var list = [];\n var element = (0, _contextToElement2.default)({\n label: 'get/shadow-host-parents',\n context: context\n });\n\n while (element) {\n element = (0, _shadowHost2.default)({ context: element });\n if (!element) {\n break;\n }\n\n list.push(element);\n }\n\n return list;\n};\n\nvar _shadowHost = require('./shadow-host');\n\nvar _shadowHost2 = _interopRequireDefault(_shadowHost);\n\nvar _contextToElement = require('../util/context-to-element');\n\nvar _contextToElement2 = _interopRequireDefault(_contextToElement);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = exports['default'];\n\n},{\"../util/context-to-element\":55,\"./shadow-host\":6}],6:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function () {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n context = _ref.context;\n\n var element = (0, _contextToElement2.default)({\n label: 'get/shadow-host',\n context: context\n });\n\n // walk up to the root\n var container = null;\n\n while (element) {\n container = element;\n element = element.parentNode;\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeType\n // NOTE: Firefox 34 does not expose ShadowRoot.host (but 37 does)\n if (container.nodeType === container.DOCUMENT_FRAGMENT_NODE && container.host) {\n // the root is attached to a fragment node that has a host\n return container.host;\n }\n\n return null;\n};\n\nvar _contextToElement = require('../util/context-to-element');\n\nvar _contextToElement2 = _interopRequireDefault(_contextToElement);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = exports['default'];\n\n},{\"../util/context-to-element\":55}],7:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (context) {\n var element = (0, _contextToElement2.default)({\n label: 'is/shadowed',\n resolveDocument: true,\n context: context\n });\n\n return Boolean((0, _shadowHost2.default)({ context: element }));\n};\n\nvar _contextToElement = require('../util/context-to-element');\n\nvar _contextToElement2 = _interopRequireDefault(_contextToElement);\n\nvar _shadowHost = require('../get/shadow-host');\n\nvar _shadowHost2 = _interopRequireDefault(_shadowHost);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = exports['default'];\n// determine if an element is the child of a ShadowRoot\n\n},{\"../get/shadow-host\":6,\"../util/context-to-element\":55}],8:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toggleClass = require('../util/toggle-class');\n\nvar _shadowFocus = require('../event/shadow-focus');\n\nvar _shadowFocus2 = _interopRequireDefault(_shadowFocus);\n\nvar _activeElements = require('../get/active-elements');\n\nvar _activeElements2 = _interopRequireDefault(_activeElements);\n\nvar _parents = require('../get/parents');\n\nvar _parents2 = _interopRequireDefault(_parents);\n\nvar _decorateService = require('../util/decorate-service');\n\nvar _decorateService2 = _interopRequireDefault(_decorateService);\n\nvar _selectInShadows = require('../util/select-in-shadows');\n\nvar _selectInShadows2 = _interopRequireDefault(_selectInShadows);\n\nvar _supports2 = require('../supports/supports');\n\nvar _supports3 = _interopRequireDefault(_supports2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar supports = void 0;\n\n// preferring focusin/out because they are synchronous in IE10+11\n\n/*\n add .ally-focus-within class to parents of document.activeElement,\n to provide the functionality of :focus-within where it's not available\n see https://dev.w3.org/csswg/selectors-4/#the-focus-within-pseudo\n\n USAGE:\n style/focus-within()\n*/\n\nvar supportsFocusIn = typeof document !== 'undefined' && 'onfocusin' in document;\nvar focusEventName = supportsFocusIn ? 'focusin' : 'focus';\nvar blurEventName = supportsFocusIn ? 'focusout' : 'blur';\n\nvar className = 'ally-focus-within';\n// defined in engage();\nvar selector = void 0;\nvar blurTimer = void 0;\nvar shadowHandle = void 0;\n\nfunction applyFocusWithinClass(active) {\n var _active = active || (0, _activeElements2.default)();\n if (!supports.cssShadowPiercingDeepCombinator) {\n // no shadow-piercing descendant selector, no joy\n _active = _active.slice(-1);\n }\n\n // identify the elements that currently have :focus-within\n var _current = [].slice.call(document.querySelectorAll(selector), 0);\n // get the path (ancestry) of each ShadowRoot and merge them into a flat list\n var elements = _active.map(function (context) {\n return (0, _parents2.default)({ context: context });\n }).reduce(function (previous, current) {\n return current.concat(previous);\n }, []);\n\n // remove the class only from elements that would not receive it again (minimize dom action)\n _current.forEach(function (element) {\n if (elements.indexOf(element) !== -1) {\n return;\n }\n\n (0, _toggleClass.removeClass)(element, className);\n });\n\n // apply the class only to elements that do not yet have it (minimize dom action)\n elements.forEach(function (element) {\n if (_current.indexOf(element) !== -1) {\n return;\n }\n\n (0, _toggleClass.addClass)(element, className);\n });\n}\n\nfunction handleDocumentBlurEvent() {\n // we won't get a focus for , but a delayed blur handler will achieve\n // the same thing listening for focus would've done, unless we get a focus, of course\n blurTimer = (window.setImmediate || window.setTimeout)(function () {\n applyFocusWithinClass();\n });\n}\n\nfunction handleDocumentFocusEvent() {\n // abort any handlers that come from document or element blur handlers\n (window.clearImmediate || window.clearTimeout)(blurTimer);\n // NOTE: we could overcome Firefox 34 issue of not supporting ShadowRoot.host by\n // passing event.target (which references the first-level ShadowHost), but that\n // would require applyFocusWithinClass() to distinguish between the argument and\n // getActiveElements().\n applyFocusWithinClass();\n}\n\nfunction handleShadowFocusEvent(event) {\n applyFocusWithinClass(event.detail.elements);\n}\n\nfunction disengage() {\n shadowHandle && shadowHandle.disengage();\n (window.clearImmediate || window.clearTimeout)(blurTimer);\n document.removeEventListener(blurEventName, handleDocumentBlurEvent, true);\n document.removeEventListener(focusEventName, handleDocumentFocusEvent, true);\n document.removeEventListener('shadow-focus', handleShadowFocusEvent, true);\n\n // remove any remaining ally-within-focus occurrences\n [].forEach.call(document.querySelectorAll(selector), function (element) {\n (0, _toggleClass.removeClass)(element, className);\n });\n}\n\nfunction engage() {\n if (!supports) {\n supports = (0, _supports3.default)();\n selector = (0, _selectInShadows2.default)('.' + className);\n }\n\n shadowHandle = (0, _shadowFocus2.default)();\n document.addEventListener(blurEventName, handleDocumentBlurEvent, true);\n document.addEventListener(focusEventName, handleDocumentFocusEvent, true);\n document.addEventListener('shadow-focus', handleShadowFocusEvent, true);\n applyFocusWithinClass();\n}\n\nexports.default = (0, _decorateService2.default)({ engage: engage, disengage: disengage });\nmodule.exports = exports['default'];\n\n},{\"../event/shadow-focus\":2,\"../get/active-elements\":3,\"../get/parents\":4,\"../supports/supports\":53,\"../util/decorate-service\":56,\"../util/select-in-shadows\":59,\"../util/toggle-class\":60}],9:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function () {\n var combinator = void 0;\n\n // see https://dev.w3.org/csswg/css-scoping-1/#deep-combinator\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1117572\n // https://code.google.com/p/chromium/issues/detail?id=446051\n try {\n document.querySelector('html >>> :first-child');\n combinator = '>>>';\n } catch (noArrowArrowArrow) {\n try {\n // old syntax supported at least up to Chrome 41\n // https://code.google.com/p/chromium/issues/detail?id=446051\n document.querySelector('html /deep/ :first-child');\n combinator = '/deep/';\n } catch (noDeep) {\n combinator = '';\n }\n }\n\n return combinator;\n};\n\nmodule.exports = exports['default'];\n\n},{}],10:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (tests) {\n var data = before();\n\n var results = {};\n Object.keys(tests).map(function (key) {\n results[key] = test(data, tests[key]);\n });\n\n after(data);\n return results;\n};\n\nvar _platform = require('../util/platform');\n\nvar _platform2 = _interopRequireDefault(_platform);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction before() {\n var data = {\n // remember what had focus to restore after test\n activeElement: document.activeElement,\n // remember scroll positions to restore after test\n windowScrollTop: window.scrollTop,\n windowScrollLeft: window.scrollLeft,\n bodyScrollTop: document.body.scrollTop,\n bodyScrollLeft: document.body.scrollLeft\n };\n\n // wrap tests in an element hidden from screen readers to prevent them\n // from announcing focus, which can be quite irritating to the user\n var iframe = document.createElement('iframe');\n iframe.setAttribute('style', 'position:absolute; position:fixed; top:0; left:-2px; width:1px; height:1px; overflow:hidden;');\n iframe.setAttribute('aria-live', 'off');\n iframe.setAttribute('aria-busy', 'true');\n iframe.setAttribute('aria-hidden', 'true');\n document.body.appendChild(iframe);\n\n var _window = iframe.contentWindow;\n var _document = _window.document;\n\n _document.open();\n _document.close();\n var wrapper = _document.createElement('div');\n _document.body.appendChild(wrapper);\n\n data.iframe = iframe;\n data.wrapper = wrapper;\n data.window = _window;\n data.document = _document;\n\n return data;\n}\n\n// options.element:\n// {string} element name\n// {function} callback(wrapper, document) to generate an element\n// options.mutate: (optional)\n// {function} callback(element, wrapper, document) to manipulate element prior to focus-test.\n// Can return DOMElement to define focus target (default: element)\n// options.validate: (optional)\n// {function} callback(element, focusTarget, document) to manipulate test-result\nfunction test(data, options) {\n // make sure we operate on a clean slate\n data.wrapper.innerHTML = '';\n // create dummy element to test focusability of\n var element = typeof options.element === 'string' ? data.document.createElement(options.element) : options.element(data.wrapper, data.document);\n // allow callback to further specify dummy element\n // and optionally define element to focus\n var focus = options.mutate && options.mutate(element, data.wrapper, data.document);\n if (!focus && focus !== false) {\n focus = element;\n }\n // element needs to be part of the DOM to be focusable\n !element.parentNode && data.wrapper.appendChild(element);\n // test if the element with invalid tabindex can be focused\n focus && focus.focus && focus.focus();\n // validate test's result\n return options.validate ? options.validate(element, focus, data.document) : data.document.activeElement === focus;\n}\n\nfunction after(data) {\n // restore focus to what it was before test and cleanup\n if (data.activeElement === document.body) {\n document.activeElement && document.activeElement.blur && document.activeElement.blur();\n if (_platform2.default.is.IE10) {\n // IE10 does not redirect focus to when the activeElement is removed\n document.body.focus();\n }\n } else {\n data.activeElement && data.activeElement.focus && data.activeElement.focus();\n }\n\n document.body.removeChild(data.iframe);\n\n // restore scroll position\n window.scrollTop = data.windowScrollTop;\n window.scrollLeft = data.windowScrollLeft;\n document.body.scrollTop = data.bodyScrollTop;\n document.body.scrollLeft = data.bodyScrollLeft;\n}\n\nmodule.exports = exports['default'];\n\n},{\"../util/platform\":58}],11:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _gif = require('./media/gif');\n\nvar _gif2 = _interopRequireDefault(_gif);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attr-usemap\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.innerHTML = '' + '' + '\"\"';\n\n return element.querySelector('area');\n }\n};\nmodule.exports = exports['default'];\n\n},{\"./media/gif\":48}],12:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _gif = require('./media/gif');\n\nvar _gif2 = _interopRequireDefault(_gif);\n\nvar _platform = require('../util/platform');\n\nvar _platform2 = _interopRequireDefault(_platform);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attr-usemap\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.innerHTML = '' + '' + '\"\"';\n\n return false;\n },\n validate: function validate(element, focusTarget, _document) {\n if (_platform2.default.is.GECKO) {\n // fixes https://github.com/medialize/ally.js/issues/35\n // Firefox loads the DataURI asynchronously, causing a false-negative\n return true;\n }\n\n var focus = element.querySelector('area');\n focus.focus();\n return _document.activeElement === focus;\n }\n};\nmodule.exports = exports['default'];\n\n},{\"../util/platform\":58,\"./media/gif\":48}],13:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _gif = require('./media/gif');\n\nvar _gif2 = _interopRequireDefault(_gif);\n\nvar _platform = require('../util/platform');\n\nvar _platform2 = _interopRequireDefault(_platform);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attr-usemap\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.innerHTML = '' + '' + '\"\"';\n\n return element.querySelector('area');\n },\n validate: function validate(element, focusTarget, _document) {\n if (_platform2.default.is.GECKO) {\n // fixes https://github.com/medialize/ally.js/issues/35\n // Firefox loads the DataURI asynchronously, causing a false-negative\n return true;\n }\n\n return _document.activeElement === focusTarget;\n }\n};\nmodule.exports = exports['default'];\n\n},{\"../util/platform\":58,\"./media/gif\":48}],14:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _mp = require('./media/mp3');\n\nvar _mp2 = _interopRequireDefault(_mp);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n name: 'can-focus-audio-without-controls',\n element: 'audio',\n mutate: function mutate(element) {\n try {\n // invalid media file can trigger warning in console, data-uri to prevent HTTP request\n element.setAttribute('src', _mp2.default);\n } catch (e) {\n // IE9 may throw \"Error: Not implemented\"\n }\n }\n};\nmodule.exports = exports['default'];\n\n},{\"./media/mp3\":49}],15:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _gif = require('./media/gif.invalid');\n\nvar _gif2 = _interopRequireDefault(_gif);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// NOTE: https://github.com/medialize/ally.js/issues/35\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attr-usemap\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.innerHTML = '' + '\"\"';\n\n return element.querySelector('area');\n }\n};\nmodule.exports = exports['default'];\n\n},{\"./media/gif.invalid\":47}],16:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n// Children of focusable elements with display:flex are focusable in IE10-11\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.setAttribute('tabindex', '-1');\n element.setAttribute('style', 'display: -webkit-flex; display: -ms-flexbox; display: flex;');\n element.innerHTML = 'hello';\n return element.querySelector('span');\n }\n};\nmodule.exports = exports['default'];\n\n},{}],17:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n// fieldset[tabindex=0][disabled] should not be focusable, but Blink and WebKit disagree\n// @specification https://www.w3.org/TR/html5/disabled-elements.html#concept-element-disabled\n// @browser-issue Chromium https://crbug.com/453847\n// @browser-issue WebKit https://bugs.webkit.org/show_bug.cgi?id=141086\nexports.default = {\n element: 'fieldset',\n mutate: function mutate(element) {\n element.setAttribute('tabindex', 0);\n element.setAttribute('disabled', 'disabled');\n }\n};\nmodule.exports = exports['default'];\n\n},{}],18:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n element: 'fieldset',\n mutate: function mutate(element) {\n element.innerHTML = 'legend

content

';\n }\n};\nmodule.exports = exports['default'];\n\n},{}],19:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n// elements with display:flex are focusable in IE10-11\nexports.default = {\n element: 'span',\n mutate: function mutate(element) {\n element.setAttribute('style', 'display: -webkit-flex; display: -ms-flexbox; display: flex;');\n element.innerHTML = 'hello';\n }\n};\nmodule.exports = exports['default'];\n\n},{}],20:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n// form[tabindex=0][disabled] should be focusable as the\n// specification doesn't know the disabled attribute on the form element\n// @specification https://www.w3.org/TR/html5/forms.html#the-form-element\nexports.default = {\n element: 'form',\n mutate: function mutate(element) {\n element.setAttribute('tabindex', 0);\n element.setAttribute('disabled', 'disabled');\n }\n};\nmodule.exports = exports['default'];\n\n},{}],21:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _gif = require('./media/gif');\n\nvar _gif2 = _interopRequireDefault(_gif);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// NOTE: https://github.com/medialize/ally.js/issues/35\n// fixes https://github.com/medialize/ally.js/issues/20\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attr-ismap\nexports.default = {\n element: 'a',\n mutate: function mutate(element) {\n element.href = '#void';\n element.innerHTML = '\"\"';\n return element.querySelector('img');\n }\n};\nmodule.exports = exports['default'];\n\n},{\"./media/gif\":48}],22:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _gif = require('./media/gif');\n\nvar _gif2 = _interopRequireDefault(_gif);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// NOTE: https://github.com/medialize/ally.js/issues/35\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attr-usemap\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.innerHTML = '' + '\"\"';\n\n return element.querySelector('img');\n }\n};\nmodule.exports = exports['default'];\n\n},{\"./media/gif\":48}],23:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n element: function element(wrapper, _document) {\n var iframe = _document.createElement('iframe');\n\n // iframe must be part of the DOM before accessing the contentWindow is possible\n wrapper.appendChild(iframe);\n\n // create the iframe's default document ()\n var iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.close();\n return iframe;\n },\n mutate: function mutate(iframe) {\n iframe.style.visibility = 'hidden';\n\n var iframeDocument = iframe.contentWindow.document;\n var input = iframeDocument.createElement('input');\n iframeDocument.body.appendChild(input);\n return input;\n },\n validate: function validate(iframe) {\n var iframeDocument = iframe.contentWindow.document;\n var focus = iframeDocument.querySelector('input');\n return iframeDocument.activeElement === focus;\n }\n};\nmodule.exports = exports['default'];\n\n},{}],24:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function () {\n return result;\n};\n\nvar _platform = require('../util/platform');\n\nvar _platform2 = _interopRequireDefault(_platform);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar result = !_platform2.default.is.WEBKIT;\n\nmodule.exports = exports['default'];\n\n},{\"../util/platform\":58}],25:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n// Firefox allows *any* value and treats invalid values like tabindex=\"-1\"\n// @browser-issue Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.setAttribute('tabindex', 'invalid-value');\n }\n};\nmodule.exports = exports['default'];\n\n},{}],26:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n element: 'label',\n mutate: function mutate(element) {\n element.setAttribute('tabindex', '-1');\n },\n validate: function validate(element, focusTarget, _document) {\n // force layout in Chrome 49, otherwise the element won't be focusable\n /* eslint-disable no-unused-vars */\n var variableToPreventDeadCodeElimination = element.offsetHeight;\n /* eslint-enable no-unused-vars */\n element.focus();\n return _document.activeElement === element;\n }\n};\nmodule.exports = exports['default'];\n\n},{}],27:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _svg = require('./media/svg');\n\nvar _svg2 = _interopRequireDefault(_svg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Note: IE10 on BrowserStack does not like this test\n\nexports.default = {\n element: 'object',\n mutate: function mutate(element) {\n element.setAttribute('type', 'image/svg+xml');\n element.setAttribute('data', _svg2.default);\n element.setAttribute('width', '200');\n element.setAttribute('height', '50');\n element.style.visibility = 'hidden';\n }\n};\nmodule.exports = exports['default'];\n\n},{\"./media/svg\":51}],28:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _svg = require('./media/svg');\n\nvar _svg2 = _interopRequireDefault(_svg);\n\nvar _platform = require('../util/platform');\n\nvar _platform2 = _interopRequireDefault(_platform);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Note: IE10 on BrowserStack does not like this test\n\nexports.default = {\n name: 'can-focus-object-svg',\n element: 'object',\n mutate: function mutate(element) {\n element.setAttribute('type', 'image/svg+xml');\n element.setAttribute('data', _svg2.default);\n element.setAttribute('width', '200');\n element.setAttribute('height', '50');\n },\n validate: function validate(element, focusTarget, _document) {\n if (_platform2.default.is.GECKO) {\n // Firefox seems to be handling the object creation asynchronously and thereby produces a false negative test result.\n // Because we know Firefox is able to focus object elements referencing SVGs, we simply cheat by sniffing the user agent string\n return true;\n }\n\n return _document.activeElement === element;\n }\n};\nmodule.exports = exports['default'];\n\n},{\"../util/platform\":58,\"./media/svg\":51}],29:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function () {\n return result;\n};\n\nvar _platform = require('../util/platform');\n\nvar _platform2 = _interopRequireDefault(_platform);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Every Environment except IE9 considers SWF objects focusable\nvar result = !_platform2.default.is.IE9;\n\nmodule.exports = exports['default'];\n\n},{\"../util/platform\":58}],30:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _gif = require('./media/gif');\n\nvar _gif2 = _interopRequireDefault(_gif);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.innerHTML = '' + '\"\"';\n\n // focus the , not the
\n return element.querySelector('img');\n },\n validate: function validate(element, focusTarget, _document) {\n var target = element.querySelector('area');\n return _document.activeElement === target;\n }\n};\nmodule.exports = exports['default'];\n\n},{\"./media/gif\":48}],31:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n// see https://jsbin.com/nenirisage/edit?html,js,console,output\n\nexports.default = {\n element: 'fieldset',\n mutate: function mutate(element) {\n element.innerHTML = 'legend';\n // take care of focus in validate();\n return false;\n },\n validate: function validate(element, focusTarget, _document) {\n var focusable = element.querySelector('input[tabindex=\"-1\"]');\n var tabbable = element.querySelector('input[tabindex=\"0\"]');\n\n // Firefox requires this test to focus the
first, while this is not necessary in\n // https://jsbin.com/nenirisage/edit?html,js,console,output\n element.focus();\n\n element.querySelector('legend').focus();\n return _document.activeElement === focusable && 'focusable' || _document.activeElement === tabbable && 'tabbable' || '';\n }\n};\nmodule.exports = exports['default'];\n\n},{}],32:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n// https://github.com/medialize/ally.js/issues/21\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.setAttribute('style', 'width: 100px; height: 50px; overflow: auto;');\n element.innerHTML = '
scrollable content
';\n return element.querySelector('div');\n }\n};\nmodule.exports = exports['default'];\n\n},{}],33:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n// https://github.com/medialize/ally.js/issues/21\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.setAttribute('style', 'width: 100px; height: 50px;');\n element.innerHTML = '
scrollable content
';\n }\n};\nmodule.exports = exports['default'];\n\n},{}],34:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n// https://github.com/medialize/ally.js/issues/21\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.setAttribute('style', 'width: 100px; height: 50px; overflow: auto;');\n element.innerHTML = '
scrollable content
';\n }\n};\nmodule.exports = exports['default'];\n\n},{}],35:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n element: 'details',\n mutate: function mutate(element) {\n element.innerHTML = 'foo

content

';\n return element.firstElementChild;\n }\n};\nmodule.exports = exports['default'];\n\n},{}],36:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _svg = require('./helper/svg');\n\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.innerHTML = (0, _svg.generate)('a');\n return element.querySelector('text');\n },\n validate: _svg.validate\n};\nmodule.exports = exports['default'];\n\n},{\"./helper/svg\":46}],37:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _svg = require('./helper/svg');\n\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.innerHTML = (0, _svg.generate)('');\n // Safari 8's quersSelector() can't identify foreignObject, but getElementyByTagName() can\n return element.querySelector('foreignObject') || element.getElementsByTagName('foreignObject')[0];\n },\n validate: _svg.validate\n\n};\nmodule.exports = exports['default'];\n\n},{\"./helper/svg\":46}],38:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function () {\n return result;\n};\n\nvar _platform = require('../util/platform');\n\nvar _platform2 = _interopRequireDefault(_platform);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Firefox seems to be handling the SVG-document-in-iframe creation asynchronously\n// and thereby produces a false negative test result. Thus the test is pointless\n// and we resort to UA sniffing once again.\n// see http://jsbin.com/vunadohoko/1/edit?js,console,output\n\nvar result = Boolean(_platform2.default.is.GECKO && typeof SVGElement !== 'undefined' && SVGElement.prototype.focus);\n\nmodule.exports = exports['default'];\n\n},{\"../util/platform\":58}],39:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _svg = require('./helper/svg');\n\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.innerHTML = (0, _svg.generate)('a');\n return element.querySelector('text');\n },\n validate: _svg.validate\n};\nmodule.exports = exports['default'];\n\n},{\"./helper/svg\":46}],40:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _svg = require('./helper/svg');\n\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.innerHTML = (0, _svg.generate)('a');\n return element.querySelector('text');\n },\n validate: _svg.validate\n};\nmodule.exports = exports['default'];\n\n},{\"./helper/svg\":46}],41:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _svg = require('./helper/svg');\n\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.innerHTML = (0, _svg.generate)(['link', ''].join(''));\n\n return element.querySelector('use');\n },\n validate: _svg.validate\n};\nmodule.exports = exports['default'];\n\n},{\"./helper/svg\":46}],42:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _svg = require('./helper/svg');\n\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.innerHTML = (0, _svg.generate)('');\n return element.firstChild;\n },\n validate: _svg.validate\n};\nmodule.exports = exports['default'];\n\n},{\"./helper/svg\":46}],43:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n// Firefox allows *any* value and treats invalid values like tabindex=\"-1\"\n// @browser-issue Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.setAttribute('tabindex', '3x');\n }\n};\nmodule.exports = exports['default'];\n\n},{}],44:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n element: 'table',\n mutate: function mutate(element, wrapper, _document) {\n // IE9 has a problem replacing TBODY contents with innerHTML.\n // https://stackoverflow.com/a/8097055/515124\n // element.innerHTML = 'cell';\n var fragment = _document.createDocumentFragment();\n fragment.innerHTML = 'cell';\n element.appendChild(fragment);\n }\n};\nmodule.exports = exports['default'];\n\n},{}],45:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _mp = require('./media/mp4');\n\nvar _mp2 = _interopRequireDefault(_mp);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n element: 'video',\n mutate: function mutate(element) {\n try {\n // invalid media file can trigger warning in console, data-uri to prevent HTTP request\n element.setAttribute('src', _mp2.default);\n } catch (e) {\n // IE9 may throw \"Error: Not implemented\"\n }\n }\n};\nmodule.exports = exports['default'];\n\n},{\"./media/mp4\":50}],46:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.generate = generate;\nexports.focus = focus;\nexports.validate = validate;\n\nvar _focus = require('../../element/focus.svg-foreign-object-hack');\n\nvar _focus2 = _interopRequireDefault(_focus);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction generate(element) {\n return '' + element + '';\n}\n\nfunction focus(element) {\n if (element.focus) {\n return;\n }\n\n try {\n HTMLElement.prototype.focus.call(element);\n } catch (e) {\n (0, _focus2.default)(element);\n }\n}\n\nfunction validate(element, focusTarget, _document) {\n focus(focusTarget);\n return _document.activeElement === focusTarget;\n}\n\n},{\"../../element/focus.svg-foreign-object-hack\":1}],47:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ';\nmodule.exports = exports['default'];\n\n},{}],48:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\nmodule.exports = exports['default'];\n\n},{}],49:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _gif = require('./gif');\n\nvar _gif2 = _interopRequireDefault(_gif);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _gif2.default;\n// export default 'data:audio/mp3;base64,audio-focus-test';\n\nmodule.exports = exports['default'];\n\n},{\"./gif\":48}],50:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _gif = require('./gif');\n\nvar _gif2 = _interopRequireDefault(_gif);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _gif2.default;\n// export default 'data:video/mp4;base64,video-focus-test';\n\nmodule.exports = exports['default'];\n\n},{\"./gif\":48}],51:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtb' + 'G5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBpZD0ic3ZnIj48dGV4dCB4PSIxMCIgeT0iMjAiIGlkPSJ' + 'zdmctbGluay10ZXh0Ij50ZXh0PC90ZXh0Pjwvc3ZnPg==';\nmodule.exports = exports['default'];\n\n},{}],52:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _version = require('../version');\n\nvar _version2 = _interopRequireDefault(_version);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction readLocalStorage(key) {\n // allow reading from storage to retrieve previous support results\n // even while the document does not have focus\n var data = void 0;\n\n try {\n data = window.localStorage && window.localStorage.getItem(key);\n data = data ? JSON.parse(data) : {};\n } catch (e) {\n data = {};\n }\n\n return data;\n} /*\n Facility to cache test results in localStorage.\n \n USAGE:\n cache.get('key');\n cache.set('key', 'value');\n */\n\nfunction writeLocalStorage(key, value) {\n if (!document.hasFocus()) {\n // if the document does not have focus when tests are executed, focus() may\n // not be handled properly and events may not be dispatched immediately.\n // This can happen when a document is reloaded while Developer Tools have focus.\n try {\n window.localStorage && window.localStorage.removeItem(key);\n } catch (e) {\n // ignore\n }\n\n return;\n }\n\n try {\n window.localStorage && window.localStorage.setItem(key, JSON.stringify(value));\n } catch (e) {\n // ignore\n }\n}\n\nvar userAgent = typeof window !== 'undefined' && window.navigator.userAgent || '';\nvar cacheKey = 'ally-supports-cache';\nvar cache = readLocalStorage(cacheKey);\n\n// update the cache if ally or the user agent changed (newer version, etc)\nif (cache.userAgent !== userAgent || cache.version !== _version2.default) {\n cache = {};\n}\n\ncache.userAgent = userAgent;\ncache.version = _version2.default;\n\nexports.default = {\n get: function get() {\n return cache;\n },\n set: function set(values) {\n Object.keys(values).forEach(function (key) {\n cache[key] = values[key];\n });\n\n cache.time = new Date().toISOString();\n writeLocalStorage(cacheKey, cache);\n }\n};\nmodule.exports = exports['default'];\n\n},{\"../version\":61}],53:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function () {\n if (supportsCache) {\n return supportsCache;\n }\n\n supportsCache = _supportsCache2.default.get();\n if (!supportsCache.time) {\n _supportsCache2.default.set(executeTests());\n supportsCache = _supportsCache2.default.get();\n }\n\n return supportsCache;\n};\n\nvar _detectFocus = require('./detect-focus');\n\nvar _detectFocus2 = _interopRequireDefault(_detectFocus);\n\nvar _supportsCache = require('./supports-cache');\n\nvar _supportsCache2 = _interopRequireDefault(_supportsCache);\n\nvar _cssShadowPiercingDeepCombinator = require('./css-shadow-piercing-deep-combinator');\n\nvar _cssShadowPiercingDeepCombinator2 = _interopRequireDefault(_cssShadowPiercingDeepCombinator);\n\nvar _focusAreaImgTabindex = require('./focus-area-img-tabindex');\n\nvar _focusAreaImgTabindex2 = _interopRequireDefault(_focusAreaImgTabindex);\n\nvar _focusAreaTabindex = require('./focus-area-tabindex');\n\nvar _focusAreaTabindex2 = _interopRequireDefault(_focusAreaTabindex);\n\nvar _focusAreaWithoutHref = require('./focus-area-without-href');\n\nvar _focusAreaWithoutHref2 = _interopRequireDefault(_focusAreaWithoutHref);\n\nvar _focusAudioWithoutControls = require('./focus-audio-without-controls');\n\nvar _focusAudioWithoutControls2 = _interopRequireDefault(_focusAudioWithoutControls);\n\nvar _focusBrokenImageMap = require('./focus-broken-image-map');\n\nvar _focusBrokenImageMap2 = _interopRequireDefault(_focusBrokenImageMap);\n\nvar _focusChildrenOfFocusableFlexbox = require('./focus-children-of-focusable-flexbox');\n\nvar _focusChildrenOfFocusableFlexbox2 = _interopRequireDefault(_focusChildrenOfFocusableFlexbox);\n\nvar _focusFieldsetDisabled = require('./focus-fieldset-disabled');\n\nvar _focusFieldsetDisabled2 = _interopRequireDefault(_focusFieldsetDisabled);\n\nvar _focusFieldset = require('./focus-fieldset');\n\nvar _focusFieldset2 = _interopRequireDefault(_focusFieldset);\n\nvar _focusFlexboxContainer = require('./focus-flexbox-container');\n\nvar _focusFlexboxContainer2 = _interopRequireDefault(_focusFlexboxContainer);\n\nvar _focusFormDisabled = require('./focus-form-disabled');\n\nvar _focusFormDisabled2 = _interopRequireDefault(_focusFormDisabled);\n\nvar _focusImgIsmap = require('./focus-img-ismap');\n\nvar _focusImgIsmap2 = _interopRequireDefault(_focusImgIsmap);\n\nvar _focusImgUsemapTabindex = require('./focus-img-usemap-tabindex');\n\nvar _focusImgUsemapTabindex2 = _interopRequireDefault(_focusImgUsemapTabindex);\n\nvar _focusInHiddenIframe = require('./focus-in-hidden-iframe');\n\nvar _focusInHiddenIframe2 = _interopRequireDefault(_focusInHiddenIframe);\n\nvar _focusInZeroDimensionObject = require('./focus-in-zero-dimension-object');\n\nvar _focusInZeroDimensionObject2 = _interopRequireDefault(_focusInZeroDimensionObject);\n\nvar _focusInvalidTabindex = require('./focus-invalid-tabindex');\n\nvar _focusInvalidTabindex2 = _interopRequireDefault(_focusInvalidTabindex);\n\nvar _focusLabelTabindex = require('./focus-label-tabindex');\n\nvar _focusLabelTabindex2 = _interopRequireDefault(_focusLabelTabindex);\n\nvar _focusObjectSvgHidden = require('./focus-object-svg-hidden');\n\nvar _focusObjectSvgHidden2 = _interopRequireDefault(_focusObjectSvgHidden);\n\nvar _focusObjectSvg = require('./focus-object-svg');\n\nvar _focusObjectSvg2 = _interopRequireDefault(_focusObjectSvg);\n\nvar _focusObjectSwf = require('./focus-object-swf');\n\nvar _focusObjectSwf2 = _interopRequireDefault(_focusObjectSwf);\n\nvar _focusRedirectImgUsemap = require('./focus-redirect-img-usemap');\n\nvar _focusRedirectImgUsemap2 = _interopRequireDefault(_focusRedirectImgUsemap);\n\nvar _focusRedirectLegend = require('./focus-redirect-legend');\n\nvar _focusRedirectLegend2 = _interopRequireDefault(_focusRedirectLegend);\n\nvar _focusScrollBody = require('./focus-scroll-body');\n\nvar _focusScrollBody2 = _interopRequireDefault(_focusScrollBody);\n\nvar _focusScrollContainerWithoutOverflow = require('./focus-scroll-container-without-overflow');\n\nvar _focusScrollContainerWithoutOverflow2 = _interopRequireDefault(_focusScrollContainerWithoutOverflow);\n\nvar _focusScrollContainer = require('./focus-scroll-container');\n\nvar _focusScrollContainer2 = _interopRequireDefault(_focusScrollContainer);\n\nvar _focusSummary = require('./focus-summary');\n\nvar _focusSummary2 = _interopRequireDefault(_focusSummary);\n\nvar _focusSvgFocusableAttribute = require('./focus-svg-focusable-attribute');\n\nvar _focusSvgFocusableAttribute2 = _interopRequireDefault(_focusSvgFocusableAttribute);\n\nvar _focusSvgTabindexAttribute = require('./focus-svg-tabindex-attribute');\n\nvar _focusSvgTabindexAttribute2 = _interopRequireDefault(_focusSvgTabindexAttribute);\n\nvar _focusSvgNegativeTabindexAttribute = require('./focus-svg-negative-tabindex-attribute');\n\nvar _focusSvgNegativeTabindexAttribute2 = _interopRequireDefault(_focusSvgNegativeTabindexAttribute);\n\nvar _focusSvgUseTabindex = require('./focus-svg-use-tabindex');\n\nvar _focusSvgUseTabindex2 = _interopRequireDefault(_focusSvgUseTabindex);\n\nvar _focusSvgForeignobjectTabindex = require('./focus-svg-foreignobject-tabindex');\n\nvar _focusSvgForeignobjectTabindex2 = _interopRequireDefault(_focusSvgForeignobjectTabindex);\n\nvar _focusSvgInIframe = require('./focus-svg-in-iframe');\n\nvar _focusSvgInIframe2 = _interopRequireDefault(_focusSvgInIframe);\n\nvar _focusSvg = require('./focus-svg');\n\nvar _focusSvg2 = _interopRequireDefault(_focusSvg);\n\nvar _focusTabindexTrailingCharacters = require('./focus-tabindex-trailing-characters');\n\nvar _focusTabindexTrailingCharacters2 = _interopRequireDefault(_focusTabindexTrailingCharacters);\n\nvar _focusTable = require('./focus-table');\n\nvar _focusTable2 = _interopRequireDefault(_focusTable);\n\nvar _focusVideoWithoutControls = require('./focus-video-without-controls');\n\nvar _focusVideoWithoutControls2 = _interopRequireDefault(_focusVideoWithoutControls);\n\nvar _tabsequenceAreaAtImgPosition = require('./tabsequence-area-at-img-position');\n\nvar _tabsequenceAreaAtImgPosition2 = _interopRequireDefault(_tabsequenceAreaAtImgPosition);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar testCallbacks = {\n cssShadowPiercingDeepCombinator: _cssShadowPiercingDeepCombinator2.default,\n focusInZeroDimensionObject: _focusInZeroDimensionObject2.default,\n focusObjectSwf: _focusObjectSwf2.default,\n focusSvgInIframe: _focusSvgInIframe2.default,\n tabsequenceAreaAtImgPosition: _tabsequenceAreaAtImgPosition2.default\n};\n\nvar testDescriptions = {\n focusAreaImgTabindex: _focusAreaImgTabindex2.default,\n focusAreaTabindex: _focusAreaTabindex2.default,\n focusAreaWithoutHref: _focusAreaWithoutHref2.default,\n focusAudioWithoutControls: _focusAudioWithoutControls2.default,\n focusBrokenImageMap: _focusBrokenImageMap2.default,\n focusChildrenOfFocusableFlexbox: _focusChildrenOfFocusableFlexbox2.default,\n focusFieldsetDisabled: _focusFieldsetDisabled2.default,\n focusFieldset: _focusFieldset2.default,\n focusFlexboxContainer: _focusFlexboxContainer2.default,\n focusFormDisabled: _focusFormDisabled2.default,\n focusImgIsmap: _focusImgIsmap2.default,\n focusImgUsemapTabindex: _focusImgUsemapTabindex2.default,\n focusInHiddenIframe: _focusInHiddenIframe2.default,\n focusInvalidTabindex: _focusInvalidTabindex2.default,\n focusLabelTabindex: _focusLabelTabindex2.default,\n focusObjectSvg: _focusObjectSvg2.default,\n focusObjectSvgHidden: _focusObjectSvgHidden2.default,\n focusRedirectImgUsemap: _focusRedirectImgUsemap2.default,\n focusRedirectLegend: _focusRedirectLegend2.default,\n focusScrollBody: _focusScrollBody2.default,\n focusScrollContainerWithoutOverflow: _focusScrollContainerWithoutOverflow2.default,\n focusScrollContainer: _focusScrollContainer2.default,\n focusSummary: _focusSummary2.default,\n focusSvgFocusableAttribute: _focusSvgFocusableAttribute2.default,\n focusSvgTabindexAttribute: _focusSvgTabindexAttribute2.default,\n focusSvgNegativeTabindexAttribute: _focusSvgNegativeTabindexAttribute2.default,\n focusSvgUseTabindex: _focusSvgUseTabindex2.default,\n focusSvgForeignobjectTabindex: _focusSvgForeignobjectTabindex2.default,\n focusSvg: _focusSvg2.default,\n focusTabindexTrailingCharacters: _focusTabindexTrailingCharacters2.default,\n focusTable: _focusTable2.default,\n focusVideoWithoutControls: _focusVideoWithoutControls2.default\n};\n\nfunction executeTests() {\n var results = (0, _detectFocus2.default)(testDescriptions);\n Object.keys(testCallbacks).forEach(function (key) {\n results[key] = testCallbacks[key]();\n });\n\n return results;\n}\n\nvar supportsCache = null;\n\nmodule.exports = exports['default'];\n\n},{\"./css-shadow-piercing-deep-combinator\":9,\"./detect-focus\":10,\"./focus-area-img-tabindex\":11,\"./focus-area-tabindex\":12,\"./focus-area-without-href\":13,\"./focus-audio-without-controls\":14,\"./focus-broken-image-map\":15,\"./focus-children-of-focusable-flexbox\":16,\"./focus-fieldset\":18,\"./focus-fieldset-disabled\":17,\"./focus-flexbox-container\":19,\"./focus-form-disabled\":20,\"./focus-img-ismap\":21,\"./focus-img-usemap-tabindex\":22,\"./focus-in-hidden-iframe\":23,\"./focus-in-zero-dimension-object\":24,\"./focus-invalid-tabindex\":25,\"./focus-label-tabindex\":26,\"./focus-object-svg\":28,\"./focus-object-svg-hidden\":27,\"./focus-object-swf\":29,\"./focus-redirect-img-usemap\":30,\"./focus-redirect-legend\":31,\"./focus-scroll-body\":32,\"./focus-scroll-container\":34,\"./focus-scroll-container-without-overflow\":33,\"./focus-summary\":35,\"./focus-svg\":42,\"./focus-svg-focusable-attribute\":36,\"./focus-svg-foreignobject-tabindex\":37,\"./focus-svg-in-iframe\":38,\"./focus-svg-negative-tabindex-attribute\":39,\"./focus-svg-tabindex-attribute\":40,\"./focus-svg-use-tabindex\":41,\"./focus-tabindex-trailing-characters\":43,\"./focus-table\":44,\"./focus-video-without-controls\":45,\"./supports-cache\":52,\"./tabsequence-area-at-img-position\":54}],54:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function () {\n return result;\n};\n\nvar _platform = require('../util/platform');\n\nvar _platform2 = _interopRequireDefault(_platform);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// https://jsbin.com/vafaba/3/edit?html,js,console,output\nvar result = _platform2.default.is.GECKO || _platform2.default.is.TRIDENT || _platform2.default.is.EDGE;\n\nmodule.exports = exports['default'];\n\n},{\"../util/platform\":58}],55:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (_ref) {\n var context = _ref.context,\n _ref$label = _ref.label,\n label = _ref$label === undefined ? 'context-to-element' : _ref$label,\n resolveDocument = _ref.resolveDocument,\n defaultToDocument = _ref.defaultToDocument;\n\n var element = (0, _nodeArray2.default)(context)[0];\n\n if (resolveDocument && element && element.nodeType === Node.DOCUMENT_NODE) {\n element = element.documentElement;\n }\n\n if (!element && defaultToDocument) {\n return document.documentElement;\n }\n\n if (!element) {\n throw new TypeError(label + ' requires valid options.context');\n }\n\n if (element.nodeType !== Node.ELEMENT_NODE && element.nodeType !== Node.DOCUMENT_FRAGMENT_NODE) {\n throw new TypeError(label + ' requires options.context to be an Element');\n }\n\n return element;\n};\n\nvar _nodeArray = require('../util/node-array');\n\nvar _nodeArray2 = _interopRequireDefault(_nodeArray);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = exports['default'];\n\n},{\"../util/node-array\":57}],56:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function () {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n engage = _ref2.engage,\n disengage = _ref2.disengage;\n\n var data = {\n engage: engage || noop,\n disengage: disengage || noop,\n instances: 0,\n _result: null\n };\n\n return initialize.bind(data);\n};\n\n/*\n The Singleton Decorator is intended to allow modules to initialize a (\"singleton\") component as if\n it was the only one using it. Every module gets to initialize and destruct the component by itself.\n Via simple reference counting the component keeps track of how many modules have initialized it,\n so it destructs only when the last module is gone. This decorator hides the component's singleton\n nature from the application in order to offer a homogenous API.\n\n engage() can return an object (result) with methods to expose to the consumer,\n upon initialization result.disengage is added and returned to the consumer.\n*/\n\nfunction destruct() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n force = _ref.force;\n\n if (force) {\n this.instances = 0;\n } else {\n this.instances--;\n }\n\n if (!this.instances) {\n this.disengage();\n this._result = null;\n }\n}\n\nfunction initialize() {\n if (this.instances) {\n this.instances++;\n return this._result;\n }\n\n this.instances++;\n this._result = this.engage() || {};\n this._result.disengage = destruct.bind(this);\n\n return this._result;\n}\n\nfunction noop() {}\n\nmodule.exports = exports[\"default\"];\n\n},{}],57:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (input) {\n if (!input) {\n return [];\n }\n\n if (Array.isArray(input)) {\n return input;\n }\n\n // instanceof Node - does not work with iframes\n if (input.nodeType !== undefined) {\n return [input];\n }\n\n if (typeof input === 'string') {\n input = document.querySelectorAll(input);\n }\n\n if (input.length !== undefined) {\n return [].slice.call(input, 0);\n }\n\n throw new TypeError('unexpected input ' + String(input));\n};\n\nmodule.exports = exports['default'];\n// input may be undefined, selector-tring, Node, NodeList, HTMLCollection, array of Nodes\n// yes, to some extent this is a bad replica of jQuery's constructor function\n\n},{}],58:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _platform2 = require('platform');\n\nvar _platform3 = _interopRequireDefault(_platform2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// deep clone of original platform\nvar platform = JSON.parse(JSON.stringify(_platform3.default));\n\n// operating system\n\n// sugar for https://github.com/bestiejs/platform.js\n// make sure to ALWAYS reference the layout engine,\n// even if it is not necessary for the condition,\n// as this makes grepping for this stuff simpler\n\nvar os = platform.os.family || '';\nvar ANDROID = os === 'Android';\nvar WINDOWS = os.slice(0, 7) === 'Windows';\nvar OSX = os === 'OS X';\nvar IOS = os === 'iOS';\n\n// layout\nvar BLINK = platform.layout === 'Blink';\nvar GECKO = platform.layout === 'Gecko';\nvar TRIDENT = platform.layout === 'Trident';\nvar EDGE = platform.layout === 'EdgeHTML';\nvar WEBKIT = platform.layout === 'WebKit';\n\n// browser version (not layout engine version!)\nvar version = parseFloat(platform.version);\nvar majorVersion = Math.floor(version);\nplatform.majorVersion = majorVersion;\n\nplatform.is = {\n // operating system\n ANDROID: ANDROID,\n WINDOWS: WINDOWS,\n OSX: OSX,\n IOS: IOS,\n // layout\n BLINK: BLINK, // \"Chrome\", \"Chrome Mobile\", \"Opera\"\n GECKO: GECKO, // \"Firefox\"\n TRIDENT: TRIDENT, // \"Internet Explorer\"\n EDGE: EDGE, // \"Microsoft Edge\"\n WEBKIT: WEBKIT, // \"Safari\"\n // INTERNET EXPLORERS\n IE9: TRIDENT && majorVersion === 9,\n IE10: TRIDENT && majorVersion === 10,\n IE11: TRIDENT && majorVersion === 11\n};\n\nexports.default = platform;\nmodule.exports = exports['default'];\n\n},{\"platform\":63}],59:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (selector) {\n if (typeof shadowPrefix !== 'string') {\n var operator = (0, _cssShadowPiercingDeepCombinator2.default)();\n if (operator) {\n shadowPrefix = ', html ' + operator + ' ';\n }\n }\n\n if (!shadowPrefix) {\n return selector;\n }\n\n return selector + shadowPrefix + selector.replace(/\\s*,\\s*/g, ',').split(',').join(shadowPrefix);\n};\n\nvar _cssShadowPiercingDeepCombinator = require('../supports/css-shadow-piercing-deep-combinator');\n\nvar _cssShadowPiercingDeepCombinator2 = _interopRequireDefault(_cssShadowPiercingDeepCombinator);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar shadowPrefix = void 0;\n// convert a CSS selector so that it also pierces ShadowDOM\n// takes \".a, #b\" and turns it into \".a, #b, html >>> .a, html >>> #b\"\n\nmodule.exports = exports['default'];\n\n},{\"../supports/css-shadow-piercing-deep-combinator\":9}],60:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.toggleClass = toggleClass;\nexports.removeClass = removeClass;\nexports.addClass = addClass;\n//\n// This util allows to easily add, remove or toggle classes.\n//\n// Using it is neccessary as IE 9 doesn't support element classList\n// and IE 11 doesn't support classList for SVG elements\n// see also https://developer.mozilla.org/en/docs/Web/API/Element/classList\n//\n// This file is a replacement for domtokenlist because of\n// https://github.com/medialize/ally.js/issues/147\n//\n// Usage:\n//\n// toggleClass(div, 'demo'); // Toggles the class `demo`\n// toggleClass(div, 'demo', true); // Adds the class `demo`\n// toggleClass(div, 'demo', false); // removes the class `demo`\n//\n// removeClass(div, 'demo');\n// addClass(div, 'demo');\n//\n\n/**\n * Extract an array of all classNames of the given DOM or SVG node\n */\nfunction getClassNames(element) {\n var className = element.getAttribute && element.getAttribute('class') || '';\n return className === '' ? [] : className.split(' ');\n}\n\nfunction toggleClass(element, className, force) {\n var classNames = getClassNames(element);\n var idx = classNames.indexOf(className);\n var hasClass = idx !== -1;\n var shouldHaveClass = force !== undefined ? force : !hasClass;\n // Break if classes are already set/removed\n if (shouldHaveClass === hasClass) {\n return;\n }\n // Remove class\n if (!shouldHaveClass) {\n classNames.splice(idx, 1);\n }\n // Add class\n if (shouldHaveClass) {\n classNames.push(className);\n }\n element.setAttribute('class', classNames.join(' '));\n}\n\nfunction removeClass(element, className) {\n return toggleClass(element, className, false);\n}\n\nfunction addClass(element, className) {\n return toggleClass(element, className, true);\n}\n\n},{}],61:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n// this file is overwritten by `npm run build:pre`\nvar version = '1.4.1';\nexports.default = version;\nmodule.exports = exports['default'];\n\n},{}],62:[function(require,module,exports){\n/*! npm.im/object-fit-images 3.2.4 */\n'use strict';\n\nvar OFI = 'bfred-it:object-fit-images';\nvar propRegex = /(object-fit|object-position)\\s*:\\s*([-.\\w\\s%]+)/g;\nvar testImg = typeof Image === 'undefined' ? {style: {'object-position': 1}} : new Image();\nvar supportsObjectFit = 'object-fit' in testImg.style;\nvar supportsObjectPosition = 'object-position' in testImg.style;\nvar supportsOFI = 'background-size' in testImg.style;\nvar supportsCurrentSrc = typeof testImg.currentSrc === 'string';\nvar nativeGetAttribute = testImg.getAttribute;\nvar nativeSetAttribute = testImg.setAttribute;\nvar autoModeEnabled = false;\n\nfunction createPlaceholder(w, h) {\n\treturn (\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='\" + w + \"' height='\" + h + \"'%3E%3C/svg%3E\");\n}\n\nfunction polyfillCurrentSrc(el) {\n\tif (el.srcset && !supportsCurrentSrc && window.picturefill) {\n\t\tvar pf = window.picturefill._;\n\t\t// parse srcset with picturefill where currentSrc isn't available\n\t\tif (!el[pf.ns] || !el[pf.ns].evaled) {\n\t\t\t// force synchronous srcset parsing\n\t\t\tpf.fillImg(el, {reselect: true});\n\t\t}\n\n\t\tif (!el[pf.ns].curSrc) {\n\t\t\t// force picturefill to parse srcset\n\t\t\tel[pf.ns].supported = false;\n\t\t\tpf.fillImg(el, {reselect: true});\n\t\t}\n\n\t\t// retrieve parsed currentSrc, if any\n\t\tel.currentSrc = el[pf.ns].curSrc || el.src;\n\t}\n}\n\nfunction getStyle(el) {\n\tvar style = getComputedStyle(el).fontFamily;\n\tvar parsed;\n\tvar props = {};\n\twhile ((parsed = propRegex.exec(style)) !== null) {\n\t\tprops[parsed[1]] = parsed[2];\n\t}\n\treturn props;\n}\n\nfunction setPlaceholder(img, width, height) {\n\t// Default: fill width, no height\n\tvar placeholder = createPlaceholder(width || 1, height || 0);\n\n\t// Only set placeholder if it's different\n\tif (nativeGetAttribute.call(img, 'src') !== placeholder) {\n\t\tnativeSetAttribute.call(img, 'src', placeholder);\n\t}\n}\n\nfunction onImageReady(img, callback) {\n\t// naturalWidth is only available when the image headers are loaded,\n\t// this loop will poll it every 100ms.\n\tif (img.naturalWidth) {\n\t\tcallback(img);\n\t} else {\n\t\tsetTimeout(onImageReady, 100, img, callback);\n\t}\n}\n\nfunction fixOne(el) {\n\tvar style = getStyle(el);\n\tvar ofi = el[OFI];\n\tstyle['object-fit'] = style['object-fit'] || 'fill'; // default value\n\n\t// Avoid running where unnecessary, unless OFI had already done its deed\n\tif (!ofi.img) {\n\t\t// fill is the default behavior so no action is necessary\n\t\tif (style['object-fit'] === 'fill') {\n\t\t\treturn;\n\t\t}\n\n\t\t// Where object-fit is supported and object-position isn't (Safari < 10)\n\t\tif (\n\t\t\t!ofi.skipTest && // unless user wants to apply regardless of browser support\n\t\t\tsupportsObjectFit && // if browser already supports object-fit\n\t\t\t!style['object-position'] // unless object-position is used\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// keep a clone in memory while resetting the original to a blank\n\tif (!ofi.img) {\n\t\tofi.img = new Image(el.width, el.height);\n\t\tofi.img.srcset = nativeGetAttribute.call(el, \"data-ofi-srcset\") || el.srcset;\n\t\tofi.img.src = nativeGetAttribute.call(el, \"data-ofi-src\") || el.src;\n\n\t\t// preserve for any future cloneNode calls\n\t\t// https://github.com/bfred-it/object-fit-images/issues/53\n\t\tnativeSetAttribute.call(el, \"data-ofi-src\", el.src);\n\t\tif (el.srcset) {\n\t\t\tnativeSetAttribute.call(el, \"data-ofi-srcset\", el.srcset);\n\t\t}\n\n\t\tsetPlaceholder(el, el.naturalWidth || el.width, el.naturalHeight || el.height);\n\n\t\t// remove srcset because it overrides src\n\t\tif (el.srcset) {\n\t\t\tel.srcset = '';\n\t\t}\n\t\ttry {\n\t\t\tkeepSrcUsable(el);\n\t\t} catch (err) {\n\t\t\tif (window.console) {\n\t\t\t\tconsole.warn('https://bit.ly/ofi-old-browser');\n\t\t\t}\n\t\t}\n\t}\n\n\tpolyfillCurrentSrc(ofi.img);\n\n\tel.style.backgroundImage = \"url(\\\"\" + ((ofi.img.currentSrc || ofi.img.src).replace(/\"/g, '\\\\\"')) + \"\\\")\";\n\tel.style.backgroundPosition = style['object-position'] || 'center';\n\tel.style.backgroundRepeat = 'no-repeat';\n\tel.style.backgroundOrigin = 'content-box';\n\n\tif (/scale-down/.test(style['object-fit'])) {\n\t\tonImageReady(ofi.img, function () {\n\t\t\tif (ofi.img.naturalWidth > el.width || ofi.img.naturalHeight > el.height) {\n\t\t\t\tel.style.backgroundSize = 'contain';\n\t\t\t} else {\n\t\t\t\tel.style.backgroundSize = 'auto';\n\t\t\t}\n\t\t});\n\t} else {\n\t\tel.style.backgroundSize = style['object-fit'].replace('none', 'auto').replace('fill', '100% 100%');\n\t}\n\n\tonImageReady(ofi.img, function (img) {\n\t\tsetPlaceholder(el, img.naturalWidth, img.naturalHeight);\n\t});\n}\n\nfunction keepSrcUsable(el) {\n\tvar descriptors = {\n\t\tget: function get(prop) {\n\t\t\treturn el[OFI].img[prop ? prop : 'src'];\n\t\t},\n\t\tset: function set(value, prop) {\n\t\t\tel[OFI].img[prop ? prop : 'src'] = value;\n\t\t\tnativeSetAttribute.call(el, (\"data-ofi-\" + prop), value); // preserve for any future cloneNode\n\t\t\tfixOne(el);\n\t\t\treturn value;\n\t\t}\n\t};\n\tObject.defineProperty(el, 'src', descriptors);\n\tObject.defineProperty(el, 'currentSrc', {\n\t\tget: function () { return descriptors.get('currentSrc'); }\n\t});\n\tObject.defineProperty(el, 'srcset', {\n\t\tget: function () { return descriptors.get('srcset'); },\n\t\tset: function (ss) { return descriptors.set(ss, 'srcset'); }\n\t});\n}\n\nfunction hijackAttributes() {\n\tfunction getOfiImageMaybe(el, name) {\n\t\treturn el[OFI] && el[OFI].img && (name === 'src' || name === 'srcset') ? el[OFI].img : el;\n\t}\n\tif (!supportsObjectPosition) {\n\t\tHTMLImageElement.prototype.getAttribute = function (name) {\n\t\t\treturn nativeGetAttribute.call(getOfiImageMaybe(this, name), name);\n\t\t};\n\n\t\tHTMLImageElement.prototype.setAttribute = function (name, value) {\n\t\t\treturn nativeSetAttribute.call(getOfiImageMaybe(this, name), name, String(value));\n\t\t};\n\t}\n}\n\nfunction fix(imgs, opts) {\n\tvar startAutoMode = !autoModeEnabled && !imgs;\n\topts = opts || {};\n\timgs = imgs || 'img';\n\n\tif ((supportsObjectPosition && !opts.skipTest) || !supportsOFI) {\n\t\treturn false;\n\t}\n\n\t// use imgs as a selector or just select all images\n\tif (imgs === 'img') {\n\t\timgs = document.getElementsByTagName('img');\n\t} else if (typeof imgs === 'string') {\n\t\timgs = document.querySelectorAll(imgs);\n\t} else if (!('length' in imgs)) {\n\t\timgs = [imgs];\n\t}\n\n\t// apply fix to all\n\tfor (var i = 0; i < imgs.length; i++) {\n\t\timgs[i][OFI] = imgs[i][OFI] || {\n\t\t\tskipTest: opts.skipTest\n\t\t};\n\t\tfixOne(imgs[i]);\n\t}\n\n\tif (startAutoMode) {\n\t\tdocument.body.addEventListener('load', function (e) {\n\t\t\tif (e.target.tagName === 'IMG') {\n\t\t\t\tfix(e.target, {\n\t\t\t\t\tskipTest: opts.skipTest\n\t\t\t\t});\n\t\t\t}\n\t\t}, true);\n\t\tautoModeEnabled = true;\n\t\timgs = 'img'; // reset to a generic selector for watchMQ\n\t}\n\n\t// if requested, watch media queries for object-fit change\n\tif (opts.watchMQ) {\n\t\twindow.addEventListener('resize', fix.bind(null, imgs, {\n\t\t\tskipTest: opts.skipTest\n\t\t}));\n\t}\n}\n\nfix.supportsObjectFit = supportsObjectFit;\nfix.supportsObjectPosition = supportsObjectPosition;\n\nhijackAttributes();\n\nmodule.exports = fix;\n\n},{}],63:[function(require,module,exports){\n(function (global){(function (){\n/*!\r\n * Platform.js \r\n * Copyright 2014-2016 Benjamin Tan \r\n * Copyright 2011-2013 John-David Dalton \r\n * Available under MIT license \r\n */\r\n;(function() {\r\n 'use strict';\r\n\r\n /** Used to determine if values are of the language type `Object`. */\r\n var objectTypes = {\r\n 'function': true,\r\n 'object': true\r\n };\r\n\r\n /** Used as a reference to the global object. */\r\n var root = (objectTypes[typeof window] && window) || this;\r\n\r\n /** Backup possible global object. */\r\n var oldRoot = root;\r\n\r\n /** Detect free variable `exports`. */\r\n var freeExports = objectTypes[typeof exports] && exports;\r\n\r\n /** Detect free variable `module`. */\r\n var freeModule = objectTypes[typeof module] && module && !module.nodeType && module;\r\n\r\n /** Detect free variable `global` from Node.js or Browserified code and use it as `root`. */\r\n var freeGlobal = freeExports && freeModule && typeof global == 'object' && global;\r\n if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal)) {\r\n root = freeGlobal;\r\n }\r\n\r\n /**\r\n * Used as the maximum length of an array-like object.\r\n * See the [ES6 spec](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength)\r\n * for more details.\r\n */\r\n var maxSafeInteger = Math.pow(2, 53) - 1;\r\n\r\n /** Regular expression to detect Opera. */\r\n var reOpera = /\\bOpera/;\r\n\r\n /** Possible global object. */\r\n var thisBinding = this;\r\n\r\n /** Used for native method references. */\r\n var objectProto = Object.prototype;\r\n\r\n /** Used to check for own properties of an object. */\r\n var hasOwnProperty = objectProto.hasOwnProperty;\r\n\r\n /** Used to resolve the internal `[[Class]]` of values. */\r\n var toString = objectProto.toString;\r\n\r\n /*--------------------------------------------------------------------------*/\r\n\r\n /**\r\n * Capitalizes a string value.\r\n *\r\n * @private\r\n * @param {string} string The string to capitalize.\r\n * @returns {string} The capitalized string.\r\n */\r\n function capitalize(string) {\r\n string = String(string);\r\n return string.charAt(0).toUpperCase() + string.slice(1);\r\n }\r\n\r\n /**\r\n * A utility function to clean up the OS name.\r\n *\r\n * @private\r\n * @param {string} os The OS name to clean up.\r\n * @param {string} [pattern] A `RegExp` pattern matching the OS name.\r\n * @param {string} [label] A label for the OS.\r\n */\r\n function cleanupOS(os, pattern, label) {\r\n // Platform tokens are defined at:\r\n // http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx\r\n // http://web.archive.org/web/20081122053950/http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx\r\n var data = {\r\n '10.0': '10',\r\n '6.4': '10 Technical Preview',\r\n '6.3': '8.1',\r\n '6.2': '8',\r\n '6.1': 'Server 2008 R2 / 7',\r\n '6.0': 'Server 2008 / Vista',\r\n '5.2': 'Server 2003 / XP 64-bit',\r\n '5.1': 'XP',\r\n '5.01': '2000 SP1',\r\n '5.0': '2000',\r\n '4.0': 'NT',\r\n '4.90': 'ME'\r\n };\r\n // Detect Windows version from platform tokens.\r\n if (pattern && label && /^Win/i.test(os) && !/^Windows Phone /i.test(os) &&\r\n (data = data[/[\\d.]+$/.exec(os)])) {\r\n os = 'Windows ' + data;\r\n }\r\n // Correct character case and cleanup string.\r\n os = String(os);\r\n\r\n if (pattern && label) {\r\n os = os.replace(RegExp(pattern, 'i'), label);\r\n }\r\n\r\n os = format(\r\n os.replace(/ ce$/i, ' CE')\r\n .replace(/\\bhpw/i, 'web')\r\n .replace(/\\bMacintosh\\b/, 'Mac OS')\r\n .replace(/_PowerPC\\b/i, ' OS')\r\n .replace(/\\b(OS X) [^ \\d]+/i, '$1')\r\n .replace(/\\bMac (OS X)\\b/, '$1')\r\n .replace(/\\/(\\d)/, ' $1')\r\n .replace(/_/g, '.')\r\n .replace(/(?: BePC|[ .]*fc[ \\d.]+)$/i, '')\r\n .replace(/\\bx86\\.64\\b/gi, 'x86_64')\r\n .replace(/\\b(Windows Phone) OS\\b/, '$1')\r\n .replace(/\\b(Chrome OS \\w+) [\\d.]+\\b/, '$1')\r\n .split(' on ')[0]\r\n );\r\n\r\n return os;\r\n }\r\n\r\n /**\r\n * An iteration utility for arrays and objects.\r\n *\r\n * @private\r\n * @param {Array|Object} object The object to iterate over.\r\n * @param {Function} callback The function called per iteration.\r\n */\r\n function each(object, callback) {\r\n var index = -1,\r\n length = object ? object.length : 0;\r\n\r\n if (typeof length == 'number' && length > -1 && length <= maxSafeInteger) {\r\n while (++index < length) {\r\n callback(object[index], index, object);\r\n }\r\n } else {\r\n forOwn(object, callback);\r\n }\r\n }\r\n\r\n /**\r\n * Trim and conditionally capitalize string values.\r\n *\r\n * @private\r\n * @param {string} string The string to format.\r\n * @returns {string} The formatted string.\r\n */\r\n function format(string) {\r\n string = trim(string);\r\n return /^(?:webOS|i(?:OS|P))/.test(string)\r\n ? string\r\n : capitalize(string);\r\n }\r\n\r\n /**\r\n * Iterates over an object's own properties, executing the `callback` for each.\r\n *\r\n * @private\r\n * @param {Object} object The object to iterate over.\r\n * @param {Function} callback The function executed per own property.\r\n */\r\n function forOwn(object, callback) {\r\n for (var key in object) {\r\n if (hasOwnProperty.call(object, key)) {\r\n callback(object[key], key, object);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Gets the internal `[[Class]]` of a value.\r\n *\r\n * @private\r\n * @param {*} value The value.\r\n * @returns {string} The `[[Class]]`.\r\n */\r\n function getClassOf(value) {\r\n return value == null\r\n ? capitalize(value)\r\n : toString.call(value).slice(8, -1);\r\n }\r\n\r\n /**\r\n * Host objects can return type values that are different from their actual\r\n * data type. The objects we are concerned with usually return non-primitive\r\n * types of \"object\", \"function\", or \"unknown\".\r\n *\r\n * @private\r\n * @param {*} object The owner of the property.\r\n * @param {string} property The property to check.\r\n * @returns {boolean} Returns `true` if the property value is a non-primitive, else `false`.\r\n */\r\n function isHostType(object, property) {\r\n var type = object != null ? typeof object[property] : 'number';\r\n return !/^(?:boolean|number|string|undefined)$/.test(type) &&\r\n (type == 'object' ? !!object[property] : true);\r\n }\r\n\r\n /**\r\n * Prepares a string for use in a `RegExp` by making hyphens and spaces optional.\r\n *\r\n * @private\r\n * @param {string} string The string to qualify.\r\n * @returns {string} The qualified string.\r\n */\r\n function qualify(string) {\r\n return String(string).replace(/([ -])(?!$)/g, '$1?');\r\n }\r\n\r\n /**\r\n * A bare-bones `Array#reduce` like utility function.\r\n *\r\n * @private\r\n * @param {Array} array The array to iterate over.\r\n * @param {Function} callback The function called per iteration.\r\n * @returns {*} The accumulated result.\r\n */\r\n function reduce(array, callback) {\r\n var accumulator = null;\r\n each(array, function(value, index) {\r\n accumulator = callback(accumulator, value, index, array);\r\n });\r\n return accumulator;\r\n }\r\n\r\n /**\r\n * Removes leading and trailing whitespace from a string.\r\n *\r\n * @private\r\n * @param {string} string The string to trim.\r\n * @returns {string} The trimmed string.\r\n */\r\n function trim(string) {\r\n return String(string).replace(/^ +| +$/g, '');\r\n }\r\n\r\n /*--------------------------------------------------------------------------*/\r\n\r\n /**\r\n * Creates a new platform object.\r\n *\r\n * @memberOf platform\r\n * @param {Object|string} [ua=navigator.userAgent] The user agent string or\r\n * context object.\r\n * @returns {Object} A platform object.\r\n */\r\n function parse(ua) {\r\n\r\n /** The environment context object. */\r\n var context = root;\r\n\r\n /** Used to flag when a custom context is provided. */\r\n var isCustomContext = ua && typeof ua == 'object' && getClassOf(ua) != 'String';\r\n\r\n // Juggle arguments.\r\n if (isCustomContext) {\r\n context = ua;\r\n ua = null;\r\n }\r\n\r\n /** Browser navigator object. */\r\n var nav = context.navigator || {};\r\n\r\n /** Browser user agent string. */\r\n var userAgent = nav.userAgent || '';\r\n\r\n ua || (ua = userAgent);\r\n\r\n /** Used to flag when `thisBinding` is the [ModuleScope]. */\r\n var isModuleScope = isCustomContext || thisBinding == oldRoot;\r\n\r\n /** Used to detect if browser is like Chrome. */\r\n var likeChrome = isCustomContext\r\n ? !!nav.likeChrome\r\n : /\\bChrome\\b/.test(ua) && !/internal|\\n/i.test(toString.toString());\r\n\r\n /** Internal `[[Class]]` value shortcuts. */\r\n var objectClass = 'Object',\r\n airRuntimeClass = isCustomContext ? objectClass : 'ScriptBridgingProxyObject',\r\n enviroClass = isCustomContext ? objectClass : 'Environment',\r\n javaClass = (isCustomContext && context.java) ? 'JavaPackage' : getClassOf(context.java),\r\n phantomClass = isCustomContext ? objectClass : 'RuntimeObject';\r\n\r\n /** Detect Java environments. */\r\n var java = /\\bJava/.test(javaClass) && context.java;\r\n\r\n /** Detect Rhino. */\r\n var rhino = java && getClassOf(context.environment) == enviroClass;\r\n\r\n /** A character to represent alpha. */\r\n var alpha = java ? 'a' : '\\u03b1';\r\n\r\n /** A character to represent beta. */\r\n var beta = java ? 'b' : '\\u03b2';\r\n\r\n /** Browser document object. */\r\n var doc = context.document || {};\r\n\r\n /**\r\n * Detect Opera browser (Presto-based).\r\n * http://www.howtocreate.co.uk/operaStuff/operaObject.html\r\n * http://dev.opera.com/articles/view/opera-mini-web-content-authoring-guidelines/#operamini\r\n */\r\n var opera = context.operamini || context.opera;\r\n\r\n /** Opera `[[Class]]`. */\r\n var operaClass = reOpera.test(operaClass = (isCustomContext && opera) ? opera['[[Class]]'] : getClassOf(opera))\r\n ? operaClass\r\n : (opera = null);\r\n\r\n /*------------------------------------------------------------------------*/\r\n\r\n /** Temporary variable used over the script's lifetime. */\r\n var data;\r\n\r\n /** The CPU architecture. */\r\n var arch = ua;\r\n\r\n /** Platform description array. */\r\n var description = [];\r\n\r\n /** Platform alpha/beta indicator. */\r\n var prerelease = null;\r\n\r\n /** A flag to indicate that environment features should be used to resolve the platform. */\r\n var useFeatures = ua == userAgent;\r\n\r\n /** The browser/environment version. */\r\n var version = useFeatures && opera && typeof opera.version == 'function' && opera.version();\r\n\r\n /** A flag to indicate if the OS ends with \"/ Version\" */\r\n var isSpecialCasedOS;\r\n\r\n /* Detectable layout engines (order is important). */\r\n var layout = getLayout([\r\n { 'label': 'EdgeHTML', 'pattern': 'Edge' },\r\n 'Trident',\r\n { 'label': 'WebKit', 'pattern': 'AppleWebKit' },\r\n 'iCab',\r\n 'Presto',\r\n 'NetFront',\r\n 'Tasman',\r\n 'KHTML',\r\n 'Gecko'\r\n ]);\r\n\r\n /* Detectable browser names (order is important). */\r\n var name = getName([\r\n 'Adobe AIR',\r\n 'Arora',\r\n 'Avant Browser',\r\n 'Breach',\r\n 'Camino',\r\n 'Epiphany',\r\n 'Fennec',\r\n 'Flock',\r\n 'Galeon',\r\n 'GreenBrowser',\r\n 'iCab',\r\n 'Iceweasel',\r\n 'K-Meleon',\r\n 'Konqueror',\r\n 'Lunascape',\r\n 'Maxthon',\r\n { 'label': 'Microsoft Edge', 'pattern': 'Edge' },\r\n 'Midori',\r\n 'Nook Browser',\r\n 'PaleMoon',\r\n 'PhantomJS',\r\n 'Raven',\r\n 'Rekonq',\r\n 'RockMelt',\r\n 'SeaMonkey',\r\n { 'label': 'Silk', 'pattern': '(?:Cloud9|Silk-Accelerated)' },\r\n 'Sleipnir',\r\n 'SlimBrowser',\r\n { 'label': 'SRWare Iron', 'pattern': 'Iron' },\r\n 'Sunrise',\r\n 'Swiftfox',\r\n 'WebPositive',\r\n 'Opera Mini',\r\n { 'label': 'Opera Mini', 'pattern': 'OPiOS' },\r\n 'Opera',\r\n { 'label': 'Opera', 'pattern': 'OPR' },\r\n 'Chrome',\r\n { 'label': 'Chrome Mobile', 'pattern': '(?:CriOS|CrMo)' },\r\n { 'label': 'Firefox', 'pattern': '(?:Firefox|Minefield)' },\r\n { 'label': 'Firefox for iOS', 'pattern': 'FxiOS' },\r\n { 'label': 'IE', 'pattern': 'IEMobile' },\r\n { 'label': 'IE', 'pattern': 'MSIE' },\r\n 'Safari'\r\n ]);\r\n\r\n /* Detectable products (order is important). */\r\n var product = getProduct([\r\n { 'label': 'BlackBerry', 'pattern': 'BB10' },\r\n 'BlackBerry',\r\n { 'label': 'Galaxy S', 'pattern': 'GT-I9000' },\r\n { 'label': 'Galaxy S2', 'pattern': 'GT-I9100' },\r\n { 'label': 'Galaxy S3', 'pattern': 'GT-I9300' },\r\n { 'label': 'Galaxy S4', 'pattern': 'GT-I9500' },\r\n 'Google TV',\r\n 'Lumia',\r\n 'iPad',\r\n 'iPod',\r\n 'iPhone',\r\n 'Kindle',\r\n { 'label': 'Kindle Fire', 'pattern': '(?:Cloud9|Silk-Accelerated)' },\r\n 'Nexus',\r\n 'Nook',\r\n 'PlayBook',\r\n 'PlayStation 3',\r\n 'PlayStation 4',\r\n 'PlayStation Vita',\r\n 'TouchPad',\r\n 'Transformer',\r\n { 'label': 'Wii U', 'pattern': 'WiiU' },\r\n 'Wii',\r\n 'Xbox One',\r\n { 'label': 'Xbox 360', 'pattern': 'Xbox' },\r\n 'Xoom'\r\n ]);\r\n\r\n /* Detectable manufacturers. */\r\n var manufacturer = getManufacturer({\r\n 'Apple': { 'iPad': 1, 'iPhone': 1, 'iPod': 1 },\r\n 'Archos': {},\r\n 'Amazon': { 'Kindle': 1, 'Kindle Fire': 1 },\r\n 'Asus': { 'Transformer': 1 },\r\n 'Barnes & Noble': { 'Nook': 1 },\r\n 'BlackBerry': { 'PlayBook': 1 },\r\n 'Google': { 'Google TV': 1, 'Nexus': 1 },\r\n 'HP': { 'TouchPad': 1 },\r\n 'HTC': {},\r\n 'LG': {},\r\n 'Microsoft': { 'Xbox': 1, 'Xbox One': 1 },\r\n 'Motorola': { 'Xoom': 1 },\r\n 'Nintendo': { 'Wii U': 1, 'Wii': 1 },\r\n 'Nokia': { 'Lumia': 1 },\r\n 'Samsung': { 'Galaxy S': 1, 'Galaxy S2': 1, 'Galaxy S3': 1, 'Galaxy S4': 1 },\r\n 'Sony': { 'PlayStation 4': 1, 'PlayStation 3': 1, 'PlayStation Vita': 1 }\r\n });\r\n\r\n /* Detectable operating systems (order is important). */\r\n var os = getOS([\r\n 'Windows Phone',\r\n 'Android',\r\n 'CentOS',\r\n { 'label': 'Chrome OS', 'pattern': 'CrOS' },\r\n 'Debian',\r\n 'Fedora',\r\n 'FreeBSD',\r\n 'Gentoo',\r\n 'Haiku',\r\n 'Kubuntu',\r\n 'Linux Mint',\r\n 'OpenBSD',\r\n 'Red Hat',\r\n 'SuSE',\r\n 'Ubuntu',\r\n 'Xubuntu',\r\n 'Cygwin',\r\n 'Symbian OS',\r\n 'hpwOS',\r\n 'webOS ',\r\n 'webOS',\r\n 'Tablet OS',\r\n 'Linux',\r\n 'Mac OS X',\r\n 'Macintosh',\r\n 'Mac',\r\n 'Windows 98;',\r\n 'Windows '\r\n ]);\r\n\r\n /*------------------------------------------------------------------------*/\r\n\r\n /**\r\n * Picks the layout engine from an array of guesses.\r\n *\r\n * @private\r\n * @param {Array} guesses An array of guesses.\r\n * @returns {null|string} The detected layout engine.\r\n */\r\n function getLayout(guesses) {\r\n return reduce(guesses, function(result, guess) {\r\n return result || RegExp('\\\\b' + (\r\n guess.pattern || qualify(guess)\r\n ) + '\\\\b', 'i').exec(ua) && (guess.label || guess);\r\n });\r\n }\r\n\r\n /**\r\n * Picks the manufacturer from an array of guesses.\r\n *\r\n * @private\r\n * @param {Array} guesses An object of guesses.\r\n * @returns {null|string} The detected manufacturer.\r\n */\r\n function getManufacturer(guesses) {\r\n return reduce(guesses, function(result, value, key) {\r\n // Lookup the manufacturer by product or scan the UA for the manufacturer.\r\n return result || (\r\n value[product] ||\r\n value[/^[a-z]+(?: +[a-z]+\\b)*/i.exec(product)] ||\r\n RegExp('\\\\b' + qualify(key) + '(?:\\\\b|\\\\w*\\\\d)', 'i').exec(ua)\r\n ) && key;\r\n });\r\n }\r\n\r\n /**\r\n * Picks the browser name from an array of guesses.\r\n *\r\n * @private\r\n * @param {Array} guesses An array of guesses.\r\n * @returns {null|string} The detected browser name.\r\n */\r\n function getName(guesses) {\r\n return reduce(guesses, function(result, guess) {\r\n return result || RegExp('\\\\b' + (\r\n guess.pattern || qualify(guess)\r\n ) + '\\\\b', 'i').exec(ua) && (guess.label || guess);\r\n });\r\n }\r\n\r\n /**\r\n * Picks the OS name from an array of guesses.\r\n *\r\n * @private\r\n * @param {Array} guesses An array of guesses.\r\n * @returns {null|string} The detected OS name.\r\n */\r\n function getOS(guesses) {\r\n return reduce(guesses, function(result, guess) {\r\n var pattern = guess.pattern || qualify(guess);\r\n if (!result && (result =\r\n RegExp('\\\\b' + pattern + '(?:/[\\\\d.]+|[ \\\\w.]*)', 'i').exec(ua)\r\n )) {\r\n result = cleanupOS(result, pattern, guess.label || guess);\r\n }\r\n return result;\r\n });\r\n }\r\n\r\n /**\r\n * Picks the product name from an array of guesses.\r\n *\r\n * @private\r\n * @param {Array} guesses An array of guesses.\r\n * @returns {null|string} The detected product name.\r\n */\r\n function getProduct(guesses) {\r\n return reduce(guesses, function(result, guess) {\r\n var pattern = guess.pattern || qualify(guess);\r\n if (!result && (result =\r\n RegExp('\\\\b' + pattern + ' *\\\\d+[.\\\\w_]*', 'i').exec(ua) ||\r\n RegExp('\\\\b' + pattern + '(?:; *(?:[a-z]+[_-])?[a-z]+\\\\d+|[^ ();-]*)', 'i').exec(ua)\r\n )) {\r\n // Split by forward slash and append product version if needed.\r\n if ((result = String((guess.label && !RegExp(pattern, 'i').test(guess.label)) ? guess.label : result).split('/'))[1] && !/[\\d.]+/.test(result[0])) {\r\n result[0] += ' ' + result[1];\r\n }\r\n // Correct character case and cleanup string.\r\n guess = guess.label || guess;\r\n result = format(result[0]\r\n .replace(RegExp(pattern, 'i'), guess)\r\n .replace(RegExp('; *(?:' + guess + '[_-])?', 'i'), ' ')\r\n .replace(RegExp('(' + guess + ')[-_.]?(\\\\w)', 'i'), '$1 $2'));\r\n }\r\n return result;\r\n });\r\n }\r\n\r\n /**\r\n * Resolves the version using an array of UA patterns.\r\n *\r\n * @private\r\n * @param {Array} patterns An array of UA patterns.\r\n * @returns {null|string} The detected version.\r\n */\r\n function getVersion(patterns) {\r\n return reduce(patterns, function(result, pattern) {\r\n return result || (RegExp(pattern +\r\n '(?:-[\\\\d.]+/|(?: for [\\\\w-]+)?[ /-])([\\\\d.]+[^ ();/_-]*)', 'i').exec(ua) || 0)[1] || null;\r\n });\r\n }\r\n\r\n /**\r\n * Returns `platform.description` when the platform object is coerced to a string.\r\n *\r\n * @name toString\r\n * @memberOf platform\r\n * @returns {string} Returns `platform.description` if available, else an empty string.\r\n */\r\n function toStringPlatform() {\r\n return this.description || '';\r\n }\r\n\r\n /*------------------------------------------------------------------------*/\r\n\r\n // Convert layout to an array so we can add extra details.\r\n layout && (layout = [layout]);\r\n\r\n // Detect product names that contain their manufacturer's name.\r\n if (manufacturer && !product) {\r\n product = getProduct([manufacturer]);\r\n }\r\n // Clean up Google TV.\r\n if ((data = /\\bGoogle TV\\b/.exec(product))) {\r\n product = data[0];\r\n }\r\n // Detect simulators.\r\n if (/\\bSimulator\\b/i.test(ua)) {\r\n product = (product ? product + ' ' : '') + 'Simulator';\r\n }\r\n // Detect Opera Mini 8+ running in Turbo/Uncompressed mode on iOS.\r\n if (name == 'Opera Mini' && /\\bOPiOS\\b/.test(ua)) {\r\n description.push('running in Turbo/Uncompressed mode');\r\n }\r\n // Detect IE Mobile 11.\r\n if (name == 'IE' && /\\blike iPhone OS\\b/.test(ua)) {\r\n data = parse(ua.replace(/like iPhone OS/, ''));\r\n manufacturer = data.manufacturer;\r\n product = data.product;\r\n }\r\n // Detect iOS.\r\n else if (/^iP/.test(product)) {\r\n name || (name = 'Safari');\r\n os = 'iOS' + ((data = / OS ([\\d_]+)/i.exec(ua))\r\n ? ' ' + data[1].replace(/_/g, '.')\r\n : '');\r\n }\r\n // Detect Kubuntu.\r\n else if (name == 'Konqueror' && !/buntu/i.test(os)) {\r\n os = 'Kubuntu';\r\n }\r\n // Detect Android browsers.\r\n else if ((manufacturer && manufacturer != 'Google' &&\r\n ((/Chrome/.test(name) && !/\\bMobile Safari\\b/i.test(ua)) || /\\bVita\\b/.test(product))) ||\r\n (/\\bAndroid\\b/.test(os) && /^Chrome/.test(name) && /\\bVersion\\//i.test(ua))) {\r\n name = 'Android Browser';\r\n os = /\\bAndroid\\b/.test(os) ? os : 'Android';\r\n }\r\n // Detect Silk desktop/accelerated modes.\r\n else if (name == 'Silk') {\r\n if (!/\\bMobi/i.test(ua)) {\r\n os = 'Android';\r\n description.unshift('desktop mode');\r\n }\r\n if (/Accelerated *= *true/i.test(ua)) {\r\n description.unshift('accelerated');\r\n }\r\n }\r\n // Detect PaleMoon identifying as Firefox.\r\n else if (name == 'PaleMoon' && (data = /\\bFirefox\\/([\\d.]+)\\b/.exec(ua))) {\r\n description.push('identifying as Firefox ' + data[1]);\r\n }\r\n // Detect Firefox OS and products running Firefox.\r\n else if (name == 'Firefox' && (data = /\\b(Mobile|Tablet|TV)\\b/i.exec(ua))) {\r\n os || (os = 'Firefox OS');\r\n product || (product = data[1]);\r\n }\r\n // Detect false positives for Firefox/Safari.\r\n else if (!name || (data = !/\\bMinefield\\b/i.test(ua) && /\\b(?:Firefox|Safari)\\b/.exec(name))) {\r\n // Escape the `/` for Firefox 1.\r\n if (name && !product && /[\\/,]|^[^(]+?\\)/.test(ua.slice(ua.indexOf(data + '/') + 8))) {\r\n // Clear name of false positives.\r\n name = null;\r\n }\r\n // Reassign a generic name.\r\n if ((data = product || manufacturer || os) &&\r\n (product || manufacturer || /\\b(?:Android|Symbian OS|Tablet OS|webOS)\\b/.test(os))) {\r\n name = /[a-z]+(?: Hat)?/i.exec(/\\bAndroid\\b/.test(os) ? os : data) + ' Browser';\r\n }\r\n }\r\n // Detect non-Opera (Presto-based) versions (order is important).\r\n if (!version) {\r\n version = getVersion([\r\n '(?:Cloud9|CriOS|CrMo|Edge|FxiOS|IEMobile|Iron|Opera ?Mini|OPiOS|OPR|Raven|Silk(?!/[\\\\d.]+$))',\r\n 'Version',\r\n qualify(name),\r\n '(?:Firefox|Minefield|NetFront)'\r\n ]);\r\n }\r\n // Detect stubborn layout engines.\r\n if ((data =\r\n layout == 'iCab' && parseFloat(version) > 3 && 'WebKit' ||\r\n /\\bOpera\\b/.test(name) && (/\\bOPR\\b/.test(ua) ? 'Blink' : 'Presto') ||\r\n /\\b(?:Midori|Nook|Safari)\\b/i.test(ua) && !/^(?:Trident|EdgeHTML)$/.test(layout) && 'WebKit' ||\r\n !layout && /\\bMSIE\\b/i.test(ua) && (os == 'Mac OS' ? 'Tasman' : 'Trident') ||\r\n layout == 'WebKit' && /\\bPlayStation\\b(?! Vita\\b)/i.test(name) && 'NetFront'\r\n )) {\r\n layout = [data];\r\n }\r\n // Detect Windows Phone 7 desktop mode.\r\n if (name == 'IE' && (data = (/; *(?:XBLWP|ZuneWP)(\\d+)/i.exec(ua) || 0)[1])) {\r\n name += ' Mobile';\r\n os = 'Windows Phone ' + (/\\+$/.test(data) ? data : data + '.x');\r\n description.unshift('desktop mode');\r\n }\r\n // Detect Windows Phone 8.x desktop mode.\r\n else if (/\\bWPDesktop\\b/i.test(ua)) {\r\n name = 'IE Mobile';\r\n os = 'Windows Phone 8.x';\r\n description.unshift('desktop mode');\r\n version || (version = (/\\brv:([\\d.]+)/.exec(ua) || 0)[1]);\r\n }\r\n // Detect IE 11.\r\n else if (name != 'IE' && layout == 'Trident' && (data = /\\brv:([\\d.]+)/.exec(ua))) {\r\n if (name) {\r\n description.push('identifying as ' + name + (version ? ' ' + version : ''));\r\n }\r\n name = 'IE';\r\n version = data[1];\r\n }\r\n // Leverage environment features.\r\n if (useFeatures) {\r\n // Detect server-side environments.\r\n // Rhino has a global function while others have a global object.\r\n if (isHostType(context, 'global')) {\r\n if (java) {\r\n data = java.lang.System;\r\n arch = data.getProperty('os.arch');\r\n os = os || data.getProperty('os.name') + ' ' + data.getProperty('os.version');\r\n }\r\n if (isModuleScope && isHostType(context, 'system') && (data = [context.system])[0]) {\r\n os || (os = data[0].os || null);\r\n try {\r\n data[1] = context.require('ringo/engine').version;\r\n version = data[1].join('.');\r\n name = 'RingoJS';\r\n } catch(e) {\r\n if (data[0].global.system == context.system) {\r\n name = 'Narwhal';\r\n }\r\n }\r\n }\r\n else if (\r\n typeof context.process == 'object' && !context.process.browser &&\r\n (data = context.process)\r\n ) {\r\n name = 'Node.js';\r\n arch = data.arch;\r\n os = data.platform;\r\n version = /[\\d.]+/.exec(data.version)[0];\r\n }\r\n else if (rhino) {\r\n name = 'Rhino';\r\n }\r\n }\r\n // Detect Adobe AIR.\r\n else if (getClassOf((data = context.runtime)) == airRuntimeClass) {\r\n name = 'Adobe AIR';\r\n os = data.flash.system.Capabilities.os;\r\n }\r\n // Detect PhantomJS.\r\n else if (getClassOf((data = context.phantom)) == phantomClass) {\r\n name = 'PhantomJS';\r\n version = (data = data.version || null) && (data.major + '.' + data.minor + '.' + data.patch);\r\n }\r\n // Detect IE compatibility modes.\r\n else if (typeof doc.documentMode == 'number' && (data = /\\bTrident\\/(\\d+)/i.exec(ua))) {\r\n // We're in compatibility mode when the Trident version + 4 doesn't\r\n // equal the document mode.\r\n version = [version, doc.documentMode];\r\n if ((data = +data[1] + 4) != version[1]) {\r\n description.push('IE ' + version[1] + ' mode');\r\n layout && (layout[1] = '');\r\n version[1] = data;\r\n }\r\n version = name == 'IE' ? String(version[1].toFixed(1)) : version[0];\r\n }\r\n os = os && format(os);\r\n }\r\n // Detect prerelease phases.\r\n if (version && (data =\r\n /(?:[ab]|dp|pre|[ab]\\d+pre)(?:\\d+\\+?)?$/i.exec(version) ||\r\n /(?:alpha|beta)(?: ?\\d)?/i.exec(ua + ';' + (useFeatures && nav.appMinorVersion)) ||\r\n /\\bMinefield\\b/i.test(ua) && 'a'\r\n )) {\r\n prerelease = /b/i.test(data) ? 'beta' : 'alpha';\r\n version = version.replace(RegExp(data + '\\\\+?$'), '') +\r\n (prerelease == 'beta' ? beta : alpha) + (/\\d+\\+?/.exec(data) || '');\r\n }\r\n // Detect Firefox Mobile.\r\n if (name == 'Fennec' || name == 'Firefox' && /\\b(?:Android|Firefox OS)\\b/.test(os)) {\r\n name = 'Firefox Mobile';\r\n }\r\n // Obscure Maxthon's unreliable version.\r\n else if (name == 'Maxthon' && version) {\r\n version = version.replace(/\\.[\\d.]+/, '.x');\r\n }\r\n // Detect Xbox 360 and Xbox One.\r\n else if (/\\bXbox\\b/i.test(product)) {\r\n os = null;\r\n if (product == 'Xbox 360' && /\\bIEMobile\\b/.test(ua)) {\r\n description.unshift('mobile mode');\r\n }\r\n }\r\n // Add mobile postfix.\r\n else if ((/^(?:Chrome|IE|Opera)$/.test(name) || name && !product && !/Browser|Mobi/.test(name)) &&\r\n (os == 'Windows CE' || /Mobi/i.test(ua))) {\r\n name += ' Mobile';\r\n }\r\n // Detect IE platform preview.\r\n else if (name == 'IE' && useFeatures && context.external === null) {\r\n description.unshift('platform preview');\r\n }\r\n // Detect BlackBerry OS version.\r\n // http://docs.blackberry.com/en/developers/deliverables/18169/HTTP_headers_sent_by_BB_Browser_1234911_11.jsp\r\n else if ((/\\bBlackBerry\\b/.test(product) || /\\bBB10\\b/.test(ua)) && (data =\r\n (RegExp(product.replace(/ +/g, ' *') + '/([.\\\\d]+)', 'i').exec(ua) || 0)[1] ||\r\n version\r\n )) {\r\n data = [data, /BB10/.test(ua)];\r\n os = (data[1] ? (product = null, manufacturer = 'BlackBerry') : 'Device Software') + ' ' + data[0];\r\n version = null;\r\n }\r\n // Detect Opera identifying/masking itself as another browser.\r\n // http://www.opera.com/support/kb/view/843/\r\n else if (this != forOwn && product != 'Wii' && (\r\n (useFeatures && opera) ||\r\n (/Opera/.test(name) && /\\b(?:MSIE|Firefox)\\b/i.test(ua)) ||\r\n (name == 'Firefox' && /\\bOS X (?:\\d+\\.){2,}/.test(os)) ||\r\n (name == 'IE' && (\r\n (os && !/^Win/.test(os) && version > 5.5) ||\r\n /\\bWindows XP\\b/.test(os) && version > 8 ||\r\n version == 8 && !/\\bTrident\\b/.test(ua)\r\n ))\r\n ) && !reOpera.test((data = parse.call(forOwn, ua.replace(reOpera, '') + ';'))) && data.name) {\r\n // When \"identifying\", the UA contains both Opera and the other browser's name.\r\n data = 'ing as ' + data.name + ((data = data.version) ? ' ' + data : '');\r\n if (reOpera.test(name)) {\r\n if (/\\bIE\\b/.test(data) && os == 'Mac OS') {\r\n os = null;\r\n }\r\n data = 'identify' + data;\r\n }\r\n // When \"masking\", the UA contains only the other browser's name.\r\n else {\r\n data = 'mask' + data;\r\n if (operaClass) {\r\n name = format(operaClass.replace(/([a-z])([A-Z])/g, '$1 $2'));\r\n } else {\r\n name = 'Opera';\r\n }\r\n if (/\\bIE\\b/.test(data)) {\r\n os = null;\r\n }\r\n if (!useFeatures) {\r\n version = null;\r\n }\r\n }\r\n layout = ['Presto'];\r\n description.push(data);\r\n }\r\n // Detect WebKit Nightly and approximate Chrome/Safari versions.\r\n if ((data = (/\\bAppleWebKit\\/([\\d.]+\\+?)/i.exec(ua) || 0)[1])) {\r\n // Correct build number for numeric comparison.\r\n // (e.g. \"532.5\" becomes \"532.05\")\r\n data = [parseFloat(data.replace(/\\.(\\d)$/, '.0$1')), data];\r\n // Nightly builds are postfixed with a \"+\".\r\n if (name == 'Safari' && data[1].slice(-1) == '+') {\r\n name = 'WebKit Nightly';\r\n prerelease = 'alpha';\r\n version = data[1].slice(0, -1);\r\n }\r\n // Clear incorrect browser versions.\r\n else if (version == data[1] ||\r\n version == (data[2] = (/\\bSafari\\/([\\d.]+\\+?)/i.exec(ua) || 0)[1])) {\r\n version = null;\r\n }\r\n // Use the full Chrome version when available.\r\n data[1] = (/\\bChrome\\/([\\d.]+)/i.exec(ua) || 0)[1];\r\n // Detect Blink layout engine.\r\n if (data[0] == 537.36 && data[2] == 537.36 && parseFloat(data[1]) >= 28 && layout == 'WebKit') {\r\n layout = ['Blink'];\r\n }\r\n // Detect JavaScriptCore.\r\n // http://stackoverflow.com/questions/6768474/how-can-i-detect-which-javascript-engine-v8-or-jsc-is-used-at-runtime-in-androi\r\n if (!useFeatures || (!likeChrome && !data[1])) {\r\n layout && (layout[1] = 'like Safari');\r\n data = (data = data[0], data < 400 ? 1 : data < 500 ? 2 : data < 526 ? 3 : data < 533 ? 4 : data < 534 ? '4+' : data < 535 ? 5 : data < 537 ? 6 : data < 538 ? 7 : data < 601 ? 8 : '8');\r\n } else {\r\n layout && (layout[1] = 'like Chrome');\r\n data = data[1] || (data = data[0], data < 530 ? 1 : data < 532 ? 2 : data < 532.05 ? 3 : data < 533 ? 4 : data < 534.03 ? 5 : data < 534.07 ? 6 : data < 534.10 ? 7 : data < 534.13 ? 8 : data < 534.16 ? 9 : data < 534.24 ? 10 : data < 534.30 ? 11 : data < 535.01 ? 12 : data < 535.02 ? '13+' : data < 535.07 ? 15 : data < 535.11 ? 16 : data < 535.19 ? 17 : data < 536.05 ? 18 : data < 536.10 ? 19 : data < 537.01 ? 20 : data < 537.11 ? '21+' : data < 537.13 ? 23 : data < 537.18 ? 24 : data < 537.24 ? 25 : data < 537.36 ? 26 : layout != 'Blink' ? '27' : '28');\r\n }\r\n // Add the postfix of \".x\" or \"+\" for approximate versions.\r\n layout && (layout[1] += ' ' + (data += typeof data == 'number' ? '.x' : /[.+]/.test(data) ? '' : '+'));\r\n // Obscure version for some Safari 1-2 releases.\r\n if (name == 'Safari' && (!version || parseInt(version) > 45)) {\r\n version = data;\r\n }\r\n }\r\n // Detect Opera desktop modes.\r\n if (name == 'Opera' && (data = /\\bzbov|zvav$/.exec(os))) {\r\n name += ' ';\r\n description.unshift('desktop mode');\r\n if (data == 'zvav') {\r\n name += 'Mini';\r\n version = null;\r\n } else {\r\n name += 'Mobile';\r\n }\r\n os = os.replace(RegExp(' *' + data + '$'), '');\r\n }\r\n // Detect Chrome desktop mode.\r\n else if (name == 'Safari' && /\\bChrome\\b/.exec(layout && layout[1])) {\r\n description.unshift('desktop mode');\r\n name = 'Chrome Mobile';\r\n version = null;\r\n\r\n if (/\\bOS X\\b/.test(os)) {\r\n manufacturer = 'Apple';\r\n os = 'iOS 4.3+';\r\n } else {\r\n os = null;\r\n }\r\n }\r\n // Strip incorrect OS versions.\r\n if (version && version.indexOf((data = /[\\d.]+$/.exec(os))) == 0 &&\r\n ua.indexOf('/' + data + '-') > -1) {\r\n os = trim(os.replace(data, ''));\r\n }\r\n // Add layout engine.\r\n if (layout && !/\\b(?:Avant|Nook)\\b/.test(name) && (\r\n /Browser|Lunascape|Maxthon/.test(name) ||\r\n name != 'Safari' && /^iOS/.test(os) && /\\bSafari\\b/.test(layout[1]) ||\r\n /^(?:Adobe|Arora|Breach|Midori|Opera|Phantom|Rekonq|Rock|Sleipnir|Web)/.test(name) && layout[1])) {\r\n // Don't add layout details to description if they are falsey.\r\n (data = layout[layout.length - 1]) && description.push(data);\r\n }\r\n // Combine contextual information.\r\n if (description.length) {\r\n description = ['(' + description.join('; ') + ')'];\r\n }\r\n // Append manufacturer to description.\r\n if (manufacturer && product && product.indexOf(manufacturer) < 0) {\r\n description.push('on ' + manufacturer);\r\n }\r\n // Append product to description.\r\n if (product) {\r\n description.push((/^on /.test(description[description.length - 1]) ? '' : 'on ') + product);\r\n }\r\n // Parse the OS into an object.\r\n if (os) {\r\n data = / ([\\d.+]+)$/.exec(os);\r\n isSpecialCasedOS = data && os.charAt(os.length - data[0].length - 1) == '/';\r\n os = {\r\n 'architecture': 32,\r\n 'family': (data && !isSpecialCasedOS) ? os.replace(data[0], '') : os,\r\n 'version': data ? data[1] : null,\r\n 'toString': function() {\r\n var version = this.version;\r\n return this.family + ((version && !isSpecialCasedOS) ? ' ' + version : '') + (this.architecture == 64 ? ' 64-bit' : '');\r\n }\r\n };\r\n }\r\n // Add browser/OS architecture.\r\n if ((data = /\\b(?:AMD|IA|Win|WOW|x86_|x)64\\b/i.exec(arch)) && !/\\bi686\\b/i.test(arch)) {\r\n if (os) {\r\n os.architecture = 64;\r\n os.family = os.family.replace(RegExp(' *' + data), '');\r\n }\r\n if (\r\n name && (/\\bWOW64\\b/i.test(ua) ||\r\n (useFeatures && /\\w(?:86|32)$/.test(nav.cpuClass || nav.platform) && !/\\bWin64; x64\\b/i.test(ua)))\r\n ) {\r\n description.unshift('32-bit');\r\n }\r\n }\r\n // Chrome 39 and above on OS X is always 64-bit.\r\n else if (\r\n os && /^OS X/.test(os.family) &&\r\n name == 'Chrome' && parseFloat(version) >= 39\r\n ) {\r\n os.architecture = 64;\r\n }\r\n\r\n ua || (ua = null);\r\n\r\n /*------------------------------------------------------------------------*/\r\n\r\n /**\r\n * The platform object.\r\n *\r\n * @name platform\r\n * @type Object\r\n */\r\n var platform = {};\r\n\r\n /**\r\n * The platform description.\r\n *\r\n * @memberOf platform\r\n * @type string|null\r\n */\r\n platform.description = ua;\r\n\r\n /**\r\n * The name of the browser's layout engine.\r\n *\r\n * @memberOf platform\r\n * @type string|null\r\n */\r\n platform.layout = layout && layout[0];\r\n\r\n /**\r\n * The name of the product's manufacturer.\r\n *\r\n * @memberOf platform\r\n * @type string|null\r\n */\r\n platform.manufacturer = manufacturer;\r\n\r\n /**\r\n * The name of the browser/environment.\r\n *\r\n * @memberOf platform\r\n * @type string|null\r\n */\r\n platform.name = name;\r\n\r\n /**\r\n * The alpha/beta release indicator.\r\n *\r\n * @memberOf platform\r\n * @type string|null\r\n */\r\n platform.prerelease = prerelease;\r\n\r\n /**\r\n * The name of the product hosting the browser.\r\n *\r\n * @memberOf platform\r\n * @type string|null\r\n */\r\n platform.product = product;\r\n\r\n /**\r\n * The browser's user agent string.\r\n *\r\n * @memberOf platform\r\n * @type string|null\r\n */\r\n platform.ua = ua;\r\n\r\n /**\r\n * The browser/environment version.\r\n *\r\n * @memberOf platform\r\n * @type string|null\r\n */\r\n platform.version = name && version;\r\n\r\n /**\r\n * The name of the operating system.\r\n *\r\n * @memberOf platform\r\n * @type Object\r\n */\r\n platform.os = os || {\r\n\r\n /**\r\n * The CPU architecture the OS is built for.\r\n *\r\n * @memberOf platform.os\r\n * @type number|null\r\n */\r\n 'architecture': null,\r\n\r\n /**\r\n * The family of the OS.\r\n *\r\n * Common values include:\r\n * \"Windows\", \"Windows Server 2008 R2 / 7\", \"Windows Server 2008 / Vista\",\r\n * \"Windows XP\", \"OS X\", \"Ubuntu\", \"Debian\", \"Fedora\", \"Red Hat\", \"SuSE\",\r\n * \"Android\", \"iOS\" and \"Windows Phone\"\r\n *\r\n * @memberOf platform.os\r\n * @type string|null\r\n */\r\n 'family': null,\r\n\r\n /**\r\n * The version of the OS.\r\n *\r\n * @memberOf platform.os\r\n * @type string|null\r\n */\r\n 'version': null,\r\n\r\n /**\r\n * Returns the OS string.\r\n *\r\n * @memberOf platform.os\r\n * @returns {string} The OS string.\r\n */\r\n 'toString': function() { return 'null'; }\r\n };\r\n\r\n platform.parse = parse;\r\n platform.toString = toStringPlatform;\r\n\r\n if (platform.version) {\r\n description.unshift(version);\r\n }\r\n if (platform.name) {\r\n description.unshift(name);\r\n }\r\n if (os && name && !(os == String(os).split(' ')[0] && (os == name.split(' ')[0] || product))) {\r\n description.push(product ? '(' + os + ')' : 'on ' + os);\r\n }\r\n if (description.length) {\r\n platform.description = description.join(' ');\r\n }\r\n return platform;\r\n }\r\n\r\n /*--------------------------------------------------------------------------*/\r\n\r\n // Export platform.\r\n var platform = parse();\r\n\r\n // Some AMD build optimizers, like r.js, check for condition patterns like the following:\r\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\r\n // Expose platform on the global object to prevent errors when platform is\r\n // loaded by a script tag in the presence of an AMD loader.\r\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\r\n root.platform = platform;\r\n\r\n // Define as an anonymous module so platform can be aliased through path mapping.\r\n define(function() {\r\n return platform;\r\n });\r\n }\r\n // Check for `exports` after `define` in case a build optimizer adds an `exports` object.\r\n else if (freeExports && freeModule) {\r\n // Export for CommonJS support.\r\n forOwn(platform, function(value, key) {\r\n freeExports[key] = value;\r\n });\r\n }\r\n else {\r\n // Export to the global object.\r\n root.platform = platform;\r\n }\r\n}.call(this));\r\n\n}).call(this)}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{}],64:[function(require,module,exports){\n/**\n * what-input - A global utility for tracking the current input method (mouse, keyboard or touch).\n * @version v5.2.10\n * @link https://github.com/ten1seven/what-input\n * @license MIT\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"whatInput\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"whatInput\"] = factory();\n\telse\n\t\troot[\"whatInput\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\n\tmodule.exports = function () {\n\t /*\n\t * bail out if there is no document or window\n\t * (i.e. in a node/non-DOM environment)\n\t *\n\t * Return a stubbed API instead\n\t */\n\t if (typeof document === 'undefined' || typeof window === 'undefined') {\n\t return {\n\t // always return \"initial\" because no interaction will ever be detected\n\t ask: function ask() {\n\t return 'initial';\n\t },\n\n\t // always return null\n\t element: function element() {\n\t return null;\n\t },\n\n\t // no-op\n\t ignoreKeys: function ignoreKeys() {},\n\n\t // no-op\n\t specificKeys: function specificKeys() {},\n\n\t // no-op\n\t registerOnChange: function registerOnChange() {},\n\n\t // no-op\n\t unRegisterOnChange: function unRegisterOnChange() {}\n\t };\n\t }\n\n\t /*\n\t * variables\n\t */\n\n\t // cache document.documentElement\n\t var docElem = document.documentElement;\n\n\t // currently focused dom element\n\t var currentElement = null;\n\n\t // last used input type\n\t var currentInput = 'initial';\n\n\t // last used input intent\n\t var currentIntent = currentInput;\n\n\t // UNIX timestamp of current event\n\t var currentTimestamp = Date.now();\n\n\t // check for a `data-whatpersist` attribute on either the `html` or `body` elements, defaults to `true`\n\t var shouldPersist = 'false';\n\n\t // form input types\n\t var formInputs = ['button', 'input', 'select', 'textarea'];\n\n\t // empty array for holding callback functions\n\t var functionList = [];\n\n\t // list of modifier keys commonly used with the mouse and\n\t // can be safely ignored to prevent false keyboard detection\n\t var ignoreMap = [16, // shift\n\t 17, // control\n\t 18, // alt\n\t 91, // Windows key / left Apple cmd\n\t 93 // Windows menu / right Apple cmd\n\t ];\n\n\t var specificMap = [];\n\n\t // mapping of events to input types\n\t var inputMap = {\n\t keydown: 'keyboard',\n\t keyup: 'keyboard',\n\t mousedown: 'mouse',\n\t mousemove: 'mouse',\n\t MSPointerDown: 'pointer',\n\t MSPointerMove: 'pointer',\n\t pointerdown: 'pointer',\n\t pointermove: 'pointer',\n\t touchstart: 'touch',\n\t touchend: 'touch'\n\n\t // boolean: true if the page is being scrolled\n\t };var isScrolling = false;\n\n\t // store current mouse position\n\t var mousePos = {\n\t x: null,\n\t y: null\n\n\t // map of IE 10 pointer events\n\t };var pointerMap = {\n\t 2: 'touch',\n\t 3: 'touch', // treat pen like touch\n\t 4: 'mouse'\n\n\t // check support for passive event listeners\n\t };var supportsPassive = false;\n\n\t try {\n\t var opts = Object.defineProperty({}, 'passive', {\n\t get: function get() {\n\t supportsPassive = true;\n\t }\n\t });\n\n\t window.addEventListener('test', null, opts);\n\t } catch (e) {}\n\t // fail silently\n\n\n\t /*\n\t * set up\n\t */\n\n\t var setUp = function setUp() {\n\t // add correct mouse wheel event mapping to `inputMap`\n\t inputMap[detectWheel()] = 'mouse';\n\n\t addListeners();\n\t };\n\n\t /*\n\t * events\n\t */\n\n\t var addListeners = function addListeners() {\n\t // `pointermove`, `MSPointerMove`, `mousemove` and mouse wheel event binding\n\t // can only demonstrate potential, but not actual, interaction\n\t // and are treated separately\n\t var options = supportsPassive ? { passive: true } : false;\n\n\t document.addEventListener('DOMContentLoaded', setPersist);\n\n\t // pointer events (mouse, pen, touch)\n\t if (window.PointerEvent) {\n\t window.addEventListener('pointerdown', setInput);\n\t window.addEventListener('pointermove', setIntent);\n\t } else if (window.MSPointerEvent) {\n\t window.addEventListener('MSPointerDown', setInput);\n\t window.addEventListener('MSPointerMove', setIntent);\n\t } else {\n\t // mouse events\n\t window.addEventListener('mousedown', setInput);\n\t window.addEventListener('mousemove', setIntent);\n\n\t // touch events\n\t if ('ontouchstart' in window) {\n\t window.addEventListener('touchstart', setInput, options);\n\t window.addEventListener('touchend', setInput);\n\t }\n\t }\n\n\t // mouse wheel\n\t window.addEventListener(detectWheel(), setIntent, options);\n\n\t // keyboard events\n\t window.addEventListener('keydown', setInput);\n\t window.addEventListener('keyup', setInput);\n\n\t // focus events\n\t window.addEventListener('focusin', setElement);\n\t window.addEventListener('focusout', clearElement);\n\t };\n\n\t // checks if input persistence should happen and\n\t // get saved state from session storage if true (defaults to `false`)\n\t var setPersist = function setPersist() {\n\t shouldPersist = !(docElem.getAttribute('data-whatpersist') || document.body.getAttribute('data-whatpersist') === 'false');\n\n\t if (shouldPersist) {\n\t // check for session variables and use if available\n\t try {\n\t if (window.sessionStorage.getItem('what-input')) {\n\t currentInput = window.sessionStorage.getItem('what-input');\n\t }\n\n\t if (window.sessionStorage.getItem('what-intent')) {\n\t currentIntent = window.sessionStorage.getItem('what-intent');\n\t }\n\t } catch (e) {\n\t // fail silently\n\t }\n\t }\n\n\t // always run these so at least `initial` state is set\n\t doUpdate('input');\n\t doUpdate('intent');\n\t };\n\n\t // checks conditions before updating new input\n\t var setInput = function setInput(event) {\n\t var eventKey = event.which;\n\t var value = inputMap[event.type];\n\n\t if (value === 'pointer') {\n\t value = pointerType(event);\n\t }\n\n\t var ignoreMatch = !specificMap.length && ignoreMap.indexOf(eventKey) === -1;\n\n\t var specificMatch = specificMap.length && specificMap.indexOf(eventKey) !== -1;\n\n\t var shouldUpdate = value === 'keyboard' && eventKey && (ignoreMatch || specificMatch) || value === 'mouse' || value === 'touch';\n\n\t // prevent touch detection from being overridden by event execution order\n\t if (validateTouch(value)) {\n\t shouldUpdate = false;\n\t }\n\n\t if (shouldUpdate && currentInput !== value) {\n\t currentInput = value;\n\n\t persistInput('input', currentInput);\n\t doUpdate('input');\n\t }\n\n\t if (shouldUpdate && currentIntent !== value) {\n\t // preserve intent for keyboard interaction with form fields\n\t var activeElem = document.activeElement;\n\t var notFormInput = activeElem && activeElem.nodeName && (formInputs.indexOf(activeElem.nodeName.toLowerCase()) === -1 || activeElem.nodeName.toLowerCase() === 'button' && !checkClosest(activeElem, 'form'));\n\n\t if (notFormInput) {\n\t currentIntent = value;\n\n\t persistInput('intent', currentIntent);\n\t doUpdate('intent');\n\t }\n\t }\n\t };\n\n\t // updates the doc and `inputTypes` array with new input\n\t var doUpdate = function doUpdate(which) {\n\t docElem.setAttribute('data-what' + which, which === 'input' ? currentInput : currentIntent);\n\n\t fireFunctions(which);\n\t };\n\n\t // updates input intent for `mousemove` and `pointermove`\n\t var setIntent = function setIntent(event) {\n\t var value = inputMap[event.type];\n\n\t if (value === 'pointer') {\n\t value = pointerType(event);\n\t }\n\n\t // test to see if `mousemove` happened relative to the screen to detect scrolling versus mousemove\n\t detectScrolling(event);\n\n\t // only execute if scrolling isn't happening\n\t if ((!isScrolling && !validateTouch(value) || isScrolling && event.type === 'wheel' || event.type === 'mousewheel' || event.type === 'DOMMouseScroll') && currentIntent !== value) {\n\t currentIntent = value;\n\n\t persistInput('intent', currentIntent);\n\t doUpdate('intent');\n\t }\n\t };\n\n\t var setElement = function setElement(event) {\n\t if (!event.target.nodeName) {\n\t // If nodeName is undefined, clear the element\n\t // This can happen if click inside an element.\n\t clearElement();\n\t return;\n\t }\n\n\t currentElement = event.target.nodeName.toLowerCase();\n\t docElem.setAttribute('data-whatelement', currentElement);\n\n\t if (event.target.classList && event.target.classList.length) {\n\t docElem.setAttribute('data-whatclasses', event.target.classList.toString().replace(' ', ','));\n\t }\n\t };\n\n\t var clearElement = function clearElement() {\n\t currentElement = null;\n\n\t docElem.removeAttribute('data-whatelement');\n\t docElem.removeAttribute('data-whatclasses');\n\t };\n\n\t var persistInput = function persistInput(which, value) {\n\t if (shouldPersist) {\n\t try {\n\t window.sessionStorage.setItem('what-' + which, value);\n\t } catch (e) {\n\t // fail silently\n\t }\n\t }\n\t };\n\n\t /*\n\t * utilities\n\t */\n\n\t var pointerType = function pointerType(event) {\n\t if (typeof event.pointerType === 'number') {\n\t return pointerMap[event.pointerType];\n\t } else {\n\t // treat pen like touch\n\t return event.pointerType === 'pen' ? 'touch' : event.pointerType;\n\t }\n\t };\n\n\t // prevent touch detection from being overridden by event execution order\n\t var validateTouch = function validateTouch(value) {\n\t var timestamp = Date.now();\n\n\t var touchIsValid = value === 'mouse' && currentInput === 'touch' && timestamp - currentTimestamp < 200;\n\n\t currentTimestamp = timestamp;\n\n\t return touchIsValid;\n\t };\n\n\t // detect version of mouse wheel event to use\n\t // via https://developer.mozilla.org/en-US/docs/Web/API/Element/wheel_event\n\t var detectWheel = function detectWheel() {\n\t var wheelType = null;\n\n\t // Modern browsers support \"wheel\"\n\t if ('onwheel' in document.createElement('div')) {\n\t wheelType = 'wheel';\n\t } else {\n\t // Webkit and IE support at least \"mousewheel\"\n\t // or assume that remaining browsers are older Firefox\n\t wheelType = document.onmousewheel !== undefined ? 'mousewheel' : 'DOMMouseScroll';\n\t }\n\n\t return wheelType;\n\t };\n\n\t // runs callback functions\n\t var fireFunctions = function fireFunctions(type) {\n\t for (var i = 0, len = functionList.length; i < len; i++) {\n\t if (functionList[i].type === type) {\n\t functionList[i].fn.call(undefined, type === 'input' ? currentInput : currentIntent);\n\t }\n\t }\n\t };\n\n\t // finds matching element in an object\n\t var objPos = function objPos(match) {\n\t for (var i = 0, len = functionList.length; i < len; i++) {\n\t if (functionList[i].fn === match) {\n\t return i;\n\t }\n\t }\n\t };\n\n\t var detectScrolling = function detectScrolling(event) {\n\t if (mousePos.x !== event.screenX || mousePos.y !== event.screenY) {\n\t isScrolling = false;\n\n\t mousePos.x = event.screenX;\n\t mousePos.y = event.screenY;\n\t } else {\n\t isScrolling = true;\n\t }\n\t };\n\n\t // manual version of `closest()`\n\t var checkClosest = function checkClosest(elem, tag) {\n\t var ElementPrototype = window.Element.prototype;\n\n\t if (!ElementPrototype.matches) {\n\t ElementPrototype.matches = ElementPrototype.msMatchesSelector || ElementPrototype.webkitMatchesSelector;\n\t }\n\n\t if (!ElementPrototype.closest) {\n\t do {\n\t if (elem.matches(tag)) {\n\t return elem;\n\t }\n\n\t elem = elem.parentElement || elem.parentNode;\n\t } while (elem !== null && elem.nodeType === 1);\n\n\t return null;\n\t } else {\n\t return elem.closest(tag);\n\t }\n\t };\n\n\t /*\n\t * init\n\t */\n\n\t // don't start script unless browser cuts the mustard\n\t // (also passes if polyfills are used)\n\t if ('addEventListener' in window && Array.prototype.indexOf) {\n\t setUp();\n\t }\n\n\t /*\n\t * api\n\t */\n\n\t return {\n\t // returns string: the current input type\n\t // opt: 'intent'|'input'\n\t // 'input' (default): returns the same value as the `data-whatinput` attribute\n\t // 'intent': includes `data-whatintent` value if it's different than `data-whatinput`\n\t ask: function ask(opt) {\n\t return opt === 'intent' ? currentIntent : currentInput;\n\t },\n\n\t // returns string: the currently focused element or null\n\t element: function element() {\n\t return currentElement;\n\t },\n\n\t // overwrites ignored keys with provided array\n\t ignoreKeys: function ignoreKeys(arr) {\n\t ignoreMap = arr;\n\t },\n\n\t // overwrites specific char keys to update on\n\t specificKeys: function specificKeys(arr) {\n\t specificMap = arr;\n\t },\n\n\t // attach functions to input and intent \"events\"\n\t // funct: function to fire on change\n\t // eventType: 'input'|'intent'\n\t registerOnChange: function registerOnChange(fn, eventType) {\n\t functionList.push({\n\t fn: fn,\n\t type: eventType || 'input'\n\t });\n\t },\n\n\t unRegisterOnChange: function unRegisterOnChange(fn) {\n\t var position = objPos(fn);\n\n\t if (position || position === 0) {\n\t functionList.splice(position, 1);\n\t }\n\t },\n\n\t clearStorage: function clearStorage() {\n\t window.sessionStorage.clear();\n\t }\n\t };\n\t}();\n\n/***/ })\n/******/ ])\n});\n;\n},{}],65:[function(require,module,exports){\n\"use strict\";\n\n},{}],66:[function(require,module,exports){\n(function (global){(function (){\n'use strict';\n\n/**\n * Mobile Navigation\n *\n * Used below 64em breakpoint.\n *\n * NOTE: Some code here is applied to the Sticky Navigation (_condensed.js) for\n * the Search (🔎) toggle.\n */\n\nvar $ = (typeof window !== \"undefined\" ? window['jQuery'] : typeof global !== \"undefined\" ? global['jQuery'] : null);\nvar $body = $('body');\n\n$(function () {\n\n var lookup = {\n 'mobile': 'input#search',\n 'sticky': 'input#search-condensed'\n };\n var searchButtonContext = void 0;\n\n var activateSearch = function activateSearch() {\n\n $body.addClass('search-active');\n\n // Determine which search input to focus.\n var $input = $(lookup[searchButtonContext]);\n\n /**\n * Search input is not always visible to the browser at this point in code\n * execution so we delay applying focus.\n *\n * This is presumably due to the `visibility` property on `.header__search`\n * (or elsewhere).\n */\n if ($input.length) setTimeout(function () {\n return $input.focus();\n }, 50);\n };\n\n var deactivateSearch = function deactivateSearch() {\n return $body.removeClass('search-active');\n };\n var toggleSearch = function toggleSearch() {\n return $body.hasClass('search-active') ? deactivateSearch() : activateSearch();\n };\n var activateMenu = function activateMenu() {\n return $body.addClass('menu-active');\n };\n var deactivateMenu = function deactivateMenu() {\n return $body.removeClass('menu-active');\n };\n var toggleMenu = function toggleMenu() {\n return $body.hasClass('menu-active') ? deactivateMenu() : activateMenu();\n };\n var mobileOrStickyNav = function mobileOrStickyNav(el) {\n return el.classList.contains('condensed__search__button') ? 'sticky' : 'mobile';\n };\n\n // Search (🔎) for Mobile AND Sticky navigations!!!\n $('.toggle-search').on('click', function (e) {\n\n searchButtonContext = mobileOrStickyNav(e.currentTarget);\n\n deactivateMenu();\n toggleSearch();\n\n if ($body.hasClass('condensed__list--active')) $body.removeClass('condensed__list--active');\n });\n\n // Hamburger Menu (☰)\n $('.toggle-menu').on('click', function () {\n\n deactivateSearch();\n toggleMenu();\n });\n});\n\nvar searchForm = $('.search__form');\nvar searchFormAction = searchForm.attr('action');\nvar searchFormPartials = $('.search-partial');\n\n$('.radio__label.search-scope__option').click(function (event) {\n var radio_selector = 'input[type=\"radio\"]',\n $radio;\n\n if (!$(event.target).is(radio_selector)) {\n $radio = $(this).find(radio_selector);\n\n if ($radio.hasClass('search-scope__input--und')) {\n searchForm.attr('action', \"//www.search.und.edu/s/search.html\");\n searchFormPartials.attr('disabled', 'disabled');\n } else {\n searchForm.attr('action', searchFormAction);\n searchFormPartials.removeAttr('disabled');\n }\n\n event.stopImmediatePropagation();\n\n event.preventDefault();\n if (!$radio.is(':checked')) $radio.prop('checked', true);\n }\n\n $('.radio__option.search-scope__input').on('change click touchstart', function (event) {\n\n if ($(event.target).hasClass('search-scope__input--und')) {\n searchForm.attr('action', \"//www.search.und.edu/s/search.html\");\n } else {\n searchForm.attr('action', searchFormAction);\n }\n });\n});\n\n}).call(this)}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{}],67:[function(require,module,exports){\n(function (global){(function (){\n'use strict';\n\nvar $ = (typeof window !== \"undefined\" ? window['jQuery'] : typeof global !== \"undefined\" ? global['jQuery'] : null);\nvar debounce = require('../util/_debounce');\n$(function () {\n\n function setMenuToggleZindex() {\n var winWidth = $(window).width();\n\n if (winWidth >= 1024) {\n $('.menu__link--toggle').attr('tabindex', -1);\n } else {\n $('.menu__link--toggle').attr('tabindex', 0);\n }\n }\n\n $(window).on('load resize', debounce(function () {\n setMenuToggleZindex();\n }, 250));\n\n var prevent = true;\n var enable = void 0;\n var close = void 0;\n\n var click = function click(e) {\n if (prevent || !this.parentNode.classList.contains('menu__item--active')) {\n over.call(this.parentNode);\n e.preventDefault();\n } else {\n out();\n }\n };\n\n var targets = document.querySelectorAll('.menu__link--toggle');\n\n for (var i = 0; i < targets.length; i += 1) {\n targets[i].addEventListener('click', click);\n }\n\n var items = document.querySelectorAll('.menu__item');\n\n var reset = function reset() {\n prevent = true;\n clearTimeout(enable);\n clearTimeout(close);\n for (var _i = 0; _i < items.length; _i += 1) {\n items[_i].classList.remove('menu__item--active');\n }\n document.body.removeEventListener('click', outClick);\n // document.removeEventListener('scroll', reset);\n };\n\n var over = function over(e) {\n reset();\n this.classList.add('menu__item--active');\n enable = setTimeout(function () {\n prevent = false;\n }, 100);\n document.body.addEventListener('click', outClick);\n // document.addEventListener('scroll', reset);\n };\n\n var out = function out(e) {\n close = setTimeout(reset, 300);\n };\n\n var outClick = function outClick(e) {\n var el = document.querySelector('.menu__item--active');\n if (!el.contains(e.target)) {\n out();\n }\n };\n});\n\n}).call(this)}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{\"../util/_debounce\":70}],68:[function(require,module,exports){\n// vars\n'use strict';\n\nvar testim = document.getElementById(\"testim\"),\n testimDots = Array.prototype.slice.call(document.getElementById(\"testim-dots\").children),\n testimContent = Array.prototype.slice.call(document.getElementById(\"testim-content\").children),\n testimLeftArrow = document.getElementById(\"left-arrow\"),\n testimRightArrow = document.getElementById(\"right-arrow\"),\n testimSpeed = 4500,\n currentSlide = 0,\n currentActive = 0,\n testimTimer,\n touchStartPos,\n touchEndPos,\n touchPosDiff,\n ignoreTouch = 30;\n;\n\nwindow.onload = function () {\n\n // Testim Script\n function playSlide(slide) {\n for (var k = 0; k < testimDots.length; k++) {\n testimContent[k].classList.remove(\"active\");\n testimContent[k].classList.remove(\"inactive\");\n testimDots[k].classList.remove(\"active\");\n }\n\n if (slide < 0) {\n slide = currentSlide = testimContent.length - 1;\n }\n\n if (slide > testimContent.length - 1) {\n slide = currentSlide = 0;\n }\n\n if (currentActive != currentSlide) {\n testimContent[currentActive].classList.add(\"inactive\");\n }\n testimContent[slide].classList.add(\"active\");\n testimDots[slide].classList.add(\"active\");\n\n currentActive = currentSlide;\n\n clearTimeout(testimTimer);\n testimTimer = setTimeout(function () {\n playSlide(currentSlide += 1);\n }, testimSpeed);\n }\n\n testimLeftArrow.addEventListener(\"click\", function () {\n playSlide(currentSlide -= 1);\n });\n\n testimRightArrow.addEventListener(\"click\", function () {\n playSlide(currentSlide += 1);\n });\n\n for (var l = 0; l < testimDots.length; l++) {\n testimDots[l].addEventListener(\"click\", function () {\n playSlide(currentSlide = testimDots.indexOf(this));\n });\n }\n\n playSlide(currentSlide);\n\n // keyboard shortcuts\n document.addEventListener(\"keyup\", function (e) {\n switch (e.keyCode) {\n case 37:\n testimLeftArrow.click();\n break;\n\n case 39:\n testimRightArrow.click();\n break;\n\n case 39:\n testimRightArrow.click();\n break;\n\n default:\n break;\n }\n });\n\n testim.addEventListener(\"touchstart\", function (e) {\n touchStartPos = e.changedTouches[0].clientX;\n });\n\n testim.addEventListener(\"touchend\", function (e) {\n touchEndPos = e.changedTouches[0].clientX;\n\n touchPosDiff = touchStartPos - touchEndPos;\n\n console.log(touchPosDiff);\n console.log(touchStartPos);\n console.log(touchEndPos);\n\n if (touchPosDiff > 0 + ignoreTouch) {\n testimLeftArrow.click();\n } else if (touchPosDiff < 0 - ignoreTouch) {\n testimRightArrow.click();\n } else {\n return;\n }\n });\n};\n\n},{}],69:[function(require,module,exports){\n'use strict';\n\n/**\r\n * techtechniques WordPress Theme\r\n * -----------------------------------------------------------------------------\r\n *\r\n * NOTE: You might need to use `require()` instead of `import`.\r\n */\n\n// Imports\n// const { Is } = require('./utilities/index');\n\n// Polyfills\n// focus within polyfill\n\nvar focusWithin = require('ally.js/style/focus-within');\nfocusWithin();\n\n// get the type of user input\nrequire('what-input');\n\n// object-fit polyfill\nvar objectFitImages = require('object-fit-images');\nobjectFitImages();\n\n// Base\n// require('/util/_fetch-svg');\n\nrequire('../js/modules/_menu');\nrequire('../js/modules/_header');\nrequire('../js/modules/_accordion');\nrequire('../js/modules/_testimonial_slider');\n\n},{\"../js/modules/_accordion\":65,\"../js/modules/_header\":66,\"../js/modules/_menu\":67,\"../js/modules/_testimonial_slider\":68,\"ally.js/style/focus-within\":8,\"object-fit-images\":62,\"what-input\":64}],70:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function (func, wait, immediate) {\n var timeout;\n return function () {\n var context = this,\n args = arguments;\n var later = function later() {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n};\n\n},{}]},{},[69])\n\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _activeElements = require('../get/active-elements');\n\nvar _activeElements2 = _interopRequireDefault(_activeElements);\n\nvar _decorateService = require('../util/decorate-service');\n\nvar _decorateService2 = _interopRequireDefault(_decorateService);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\n Utility to observe focus changes within ShadowDOMs.\n\n USAGE:\n engage();\n document.body.addEventListener('shadow-focus', function(event) {\n // event.detail.elements: complete focus ancestry (array of nodes)\n // event.detail.active: the actually focused element within the ShadowDOM\n // event.detail.hosts: the shadow host ancestry of the active element\n }, false);\n\n Alternate implementation: https://github.com/cdata/focus-observer\n*/\n\nvar engage = void 0;\nvar disengage = void 0;\n\nif (typeof document === 'undefined' || !document.documentElement.createShadowRoot) {\n // no need to initialize any of this if we don't have ShadowDOM available\n engage = disengage = function disengage() {};\n} else {\n (function () {\n var blurTimer = void 0;\n var blurElement = void 0;\n\n var handleElementBlurEvent = function handleElementBlurEvent() {\n stopHandleElementBlurEvent();\n // abort any handlers that come from document blur handler\n (window.clearImmediate || window.clearTimeout)(blurTimer);\n blurTimer = (window.setImmediate || window.setTimeout)(function () {\n handleFocusChange();\n });\n };\n\n var observeElementBlurEvent = function observeElementBlurEvent(element) {\n // call us when we're leaving the element\n element.addEventListener('blur', handleElementBlurEvent, true);\n blurElement = element;\n };\n\n var stopHandleElementBlurEvent = function stopHandleElementBlurEvent() {\n // once() - sometimes I miss jQuery's simplicity…\n blurElement && blurElement.removeEventListener('blur', handleElementBlurEvent, true);\n blurElement = null;\n };\n\n var handleFocusChange = function handleFocusChange() {\n var _active = (0, _activeElements2.default)();\n if (_active.length === 1) {\n stopHandleElementBlurEvent();\n return;\n }\n\n // listen for blur so we know when to re-validate\n observeElementBlurEvent(_active[0]);\n var shadowFocusEvent = new CustomEvent('shadow-focus', {\n bubbles: false,\n cancelable: false,\n detail: {\n // complete focus ancestry\n elements: _active,\n // the actually focused element\n active: _active[0],\n // shadow host ancestry\n hosts: _active.slice(1)\n }\n });\n\n document.dispatchEvent(shadowFocusEvent);\n };\n\n var handleDocumentFocusEvent = function handleDocumentFocusEvent() {\n (window.clearImmediate || window.clearTimeout)(blurTimer);\n handleFocusChange();\n };\n\n engage = function engage() {\n document.addEventListener('focus', handleDocumentFocusEvent, true);\n };\n\n disengage = function disengage() {\n (window.clearImmediate || window.clearTimeout)(blurTimer);\n blurElement && blurElement.removeEventListener('blur', handleElementBlurEvent, true);\n document.removeEventListener('focus', handleDocumentFocusEvent, true);\n };\n })();\n}\n\nexports.default = (0, _decorateService2.default)({ engage: engage, disengage: disengage });\nmodule.exports = exports['default'];\n//# sourceMappingURL=shadow-focus.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function () {\n if (document.activeElement === null) {\n // IE10 does not redirect focus to when the activeElement is removed\n document.body.focus();\n }\n\n // Firefox currently leaks the shadowed element\n // @browser-issue Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1117535\n if ((0, _shadowed2.default)(document.activeElement)) {\n return walkFromShadowedElement();\n }\n\n return walkToShadowedElement();\n};\n\nvar _shadowed = require('../is/shadowed');\n\nvar _shadowed2 = _interopRequireDefault(_shadowed);\n\nvar _shadowHostParents = require('./shadow-host-parents');\n\nvar _shadowHostParents2 = _interopRequireDefault(_shadowHostParents);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// [0] always is the actual active element (even within web-components)\n// [0+n] is the hierarchy of shadow-doms with [length -1] being the top most shadow-host\n\nfunction walkToShadowedElement() {\n var list = [document.activeElement];\n\n while (list[0] && list[0].shadowRoot) {\n list.unshift(list[0].shadowRoot.activeElement);\n }\n\n return list;\n}\n\nfunction walkFromShadowedElement() {\n var hosts = (0, _shadowHostParents2.default)({ context: document.activeElement });\n return [document.activeElement].concat(hosts);\n}\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=active-elements.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function () {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n context = _ref.context;\n\n var list = [];\n var element = (0, _contextToElement2.default)({\n label: 'get/parents',\n context: context\n });\n\n while (element) {\n list.push(element);\n // IE does know support parentElement on SVGElement\n element = element.parentNode;\n if (element && element.nodeType !== Node.ELEMENT_NODE) {\n element = null;\n }\n }\n\n return list;\n};\n\nvar _contextToElement = require('../util/context-to-element');\n\nvar _contextToElement2 = _interopRequireDefault(_contextToElement);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = exports['default'];\n\n// [elem, elem.parent, elem.parent.parent, …, html]\n// will not contain the shadowRoot (DOCUMENT_FRAGMENT_NODE) and shadowHost\n//# sourceMappingURL=parents.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function () {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n context = _ref.context;\n\n var list = [];\n var element = (0, _contextToElement2.default)({\n label: 'get/shadow-host-parents',\n context: context\n });\n\n while (element) {\n element = (0, _shadowHost2.default)({ context: element });\n if (!element) {\n break;\n }\n\n list.push(element);\n }\n\n return list;\n};\n\nvar _shadowHost = require('./shadow-host');\n\nvar _shadowHost2 = _interopRequireDefault(_shadowHost);\n\nvar _contextToElement = require('../util/context-to-element');\n\nvar _contextToElement2 = _interopRequireDefault(_contextToElement);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=shadow-host-parents.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function () {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n context = _ref.context;\n\n var element = (0, _contextToElement2.default)({\n label: 'get/shadow-host',\n context: context\n });\n\n // walk up to the root\n var container = null;\n\n while (element) {\n container = element;\n element = element.parentNode;\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeType\n // NOTE: Firefox 34 does not expose ShadowRoot.host (but 37 does)\n if (container.nodeType === container.DOCUMENT_FRAGMENT_NODE && container.host) {\n // the root is attached to a fragment node that has a host\n return container.host;\n }\n\n return null;\n};\n\nvar _contextToElement = require('../util/context-to-element');\n\nvar _contextToElement2 = _interopRequireDefault(_contextToElement);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=shadow-host.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (context) {\n var element = (0, _contextToElement2.default)({\n label: 'is/shadowed',\n resolveDocument: true,\n context: context\n });\n\n return Boolean((0, _shadowHost2.default)({ context: element }));\n};\n\nvar _contextToElement = require('../util/context-to-element');\n\nvar _contextToElement2 = _interopRequireDefault(_contextToElement);\n\nvar _shadowHost = require('../get/shadow-host');\n\nvar _shadowHost2 = _interopRequireDefault(_shadowHost);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = exports['default'];\n// determine if an element is the child of a ShadowRoot\n//# sourceMappingURL=shadowed.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toggleClass = require('../util/toggle-class');\n\nvar _shadowFocus = require('../event/shadow-focus');\n\nvar _shadowFocus2 = _interopRequireDefault(_shadowFocus);\n\nvar _activeElements = require('../get/active-elements');\n\nvar _activeElements2 = _interopRequireDefault(_activeElements);\n\nvar _parents = require('../get/parents');\n\nvar _parents2 = _interopRequireDefault(_parents);\n\nvar _decorateService = require('../util/decorate-service');\n\nvar _decorateService2 = _interopRequireDefault(_decorateService);\n\nvar _selectInShadows = require('../util/select-in-shadows');\n\nvar _selectInShadows2 = _interopRequireDefault(_selectInShadows);\n\nvar _supports2 = require('../supports/supports');\n\nvar _supports3 = _interopRequireDefault(_supports2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar supports = void 0;\n\n// preferring focusin/out because they are synchronous in IE10+11\n\n/*\n add .ally-focus-within class to parents of document.activeElement,\n to provide the functionality of :focus-within where it's not available\n see https://dev.w3.org/csswg/selectors-4/#the-focus-within-pseudo\n\n USAGE:\n style/focus-within()\n*/\n\nvar supportsFocusIn = typeof document !== 'undefined' && 'onfocusin' in document;\nvar focusEventName = supportsFocusIn ? 'focusin' : 'focus';\nvar blurEventName = supportsFocusIn ? 'focusout' : 'blur';\n\nvar className = 'ally-focus-within';\n// defined in engage();\nvar selector = void 0;\nvar blurTimer = void 0;\nvar shadowHandle = void 0;\n\nfunction applyFocusWithinClass(active) {\n var _active = active || (0, _activeElements2.default)();\n if (!supports.cssShadowPiercingDeepCombinator) {\n // no shadow-piercing descendant selector, no joy\n _active = _active.slice(-1);\n }\n\n // identify the elements that currently have :focus-within\n var _current = [].slice.call(document.querySelectorAll(selector), 0);\n // get the path (ancestry) of each ShadowRoot and merge them into a flat list\n var elements = _active.map(function (context) {\n return (0, _parents2.default)({ context: context });\n }).reduce(function (previous, current) {\n return current.concat(previous);\n }, []);\n\n // remove the class only from elements that would not receive it again (minimize dom action)\n _current.forEach(function (element) {\n if (elements.indexOf(element) !== -1) {\n return;\n }\n\n (0, _toggleClass.removeClass)(element, className);\n });\n\n // apply the class only to elements that do not yet have it (minimize dom action)\n elements.forEach(function (element) {\n if (_current.indexOf(element) !== -1) {\n return;\n }\n\n (0, _toggleClass.addClass)(element, className);\n });\n}\n\nfunction handleDocumentBlurEvent() {\n // we won't get a focus for , but a delayed blur handler will achieve\n // the same thing listening for focus would've done, unless we get a focus, of course\n blurTimer = (window.setImmediate || window.setTimeout)(function () {\n applyFocusWithinClass();\n });\n}\n\nfunction handleDocumentFocusEvent() {\n // abort any handlers that come from document or element blur handlers\n (window.clearImmediate || window.clearTimeout)(blurTimer);\n // NOTE: we could overcome Firefox 34 issue of not supporting ShadowRoot.host by\n // passing event.target (which references the first-level ShadowHost), but that\n // would require applyFocusWithinClass() to distinguish between the argument and\n // getActiveElements().\n applyFocusWithinClass();\n}\n\nfunction handleShadowFocusEvent(event) {\n applyFocusWithinClass(event.detail.elements);\n}\n\nfunction disengage() {\n shadowHandle && shadowHandle.disengage();\n (window.clearImmediate || window.clearTimeout)(blurTimer);\n document.removeEventListener(blurEventName, handleDocumentBlurEvent, true);\n document.removeEventListener(focusEventName, handleDocumentFocusEvent, true);\n document.removeEventListener('shadow-focus', handleShadowFocusEvent, true);\n\n // remove any remaining ally-within-focus occurrences\n [].forEach.call(document.querySelectorAll(selector), function (element) {\n (0, _toggleClass.removeClass)(element, className);\n });\n}\n\nfunction engage() {\n if (!supports) {\n supports = (0, _supports3.default)();\n selector = (0, _selectInShadows2.default)('.' + className);\n }\n\n shadowHandle = (0, _shadowFocus2.default)();\n document.addEventListener(blurEventName, handleDocumentBlurEvent, true);\n document.addEventListener(focusEventName, handleDocumentFocusEvent, true);\n document.addEventListener('shadow-focus', handleShadowFocusEvent, true);\n applyFocusWithinClass();\n}\n\nexports.default = (0, _decorateService2.default)({ engage: engage, disengage: disengage });\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-within.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function () {\n var combinator = void 0;\n\n // see https://dev.w3.org/csswg/css-scoping-1/#deep-combinator\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1117572\n // https://code.google.com/p/chromium/issues/detail?id=446051\n try {\n document.querySelector('html >>> :first-child');\n combinator = '>>>';\n } catch (noArrowArrowArrow) {\n try {\n // old syntax supported at least up to Chrome 41\n // https://code.google.com/p/chromium/issues/detail?id=446051\n document.querySelector('html /deep/ :first-child');\n combinator = '/deep/';\n } catch (noDeep) {\n combinator = '';\n }\n }\n\n return combinator;\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=css-shadow-piercing-deep-combinator.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (tests) {\n var data = before();\n\n var results = {};\n Object.keys(tests).map(function (key) {\n results[key] = test(data, tests[key]);\n });\n\n after(data);\n return results;\n};\n\nvar _platform = require('../util/platform');\n\nvar _platform2 = _interopRequireDefault(_platform);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction before() {\n var data = {\n // remember what had focus to restore after test\n activeElement: document.activeElement,\n // remember scroll positions to restore after test\n windowScrollTop: window.scrollTop,\n windowScrollLeft: window.scrollLeft,\n bodyScrollTop: document.body.scrollTop,\n bodyScrollLeft: document.body.scrollLeft\n };\n\n // wrap tests in an element hidden from screen readers to prevent them\n // from announcing focus, which can be quite irritating to the user\n var iframe = document.createElement('iframe');\n iframe.setAttribute('style', 'position:absolute; position:fixed; top:0; left:-2px; width:1px; height:1px; overflow:hidden;');\n iframe.setAttribute('aria-live', 'off');\n iframe.setAttribute('aria-busy', 'true');\n iframe.setAttribute('aria-hidden', 'true');\n document.body.appendChild(iframe);\n\n var _window = iframe.contentWindow;\n var _document = _window.document;\n\n _document.open();\n _document.close();\n var wrapper = _document.createElement('div');\n _document.body.appendChild(wrapper);\n\n data.iframe = iframe;\n data.wrapper = wrapper;\n data.window = _window;\n data.document = _document;\n\n return data;\n}\n\n// options.element:\n// {string} element name\n// {function} callback(wrapper, document) to generate an element\n// options.mutate: (optional)\n// {function} callback(element, wrapper, document) to manipulate element prior to focus-test.\n// Can return DOMElement to define focus target (default: element)\n// options.validate: (optional)\n// {function} callback(element, focusTarget, document) to manipulate test-result\nfunction test(data, options) {\n // make sure we operate on a clean slate\n data.wrapper.innerHTML = '';\n // create dummy element to test focusability of\n var element = typeof options.element === 'string' ? data.document.createElement(options.element) : options.element(data.wrapper, data.document);\n // allow callback to further specify dummy element\n // and optionally define element to focus\n var focus = options.mutate && options.mutate(element, data.wrapper, data.document);\n if (!focus && focus !== false) {\n focus = element;\n }\n // element needs to be part of the DOM to be focusable\n !element.parentNode && data.wrapper.appendChild(element);\n // test if the element with invalid tabindex can be focused\n focus && focus.focus && focus.focus();\n // validate test's result\n return options.validate ? options.validate(element, focus, data.document) : data.document.activeElement === focus;\n}\n\nfunction after(data) {\n // restore focus to what it was before test and cleanup\n if (data.activeElement === document.body) {\n document.activeElement && document.activeElement.blur && document.activeElement.blur();\n if (_platform2.default.is.IE10) {\n // IE10 does not redirect focus to when the activeElement is removed\n document.body.focus();\n }\n } else {\n data.activeElement && data.activeElement.focus && data.activeElement.focus();\n }\n\n document.body.removeChild(data.iframe);\n\n // restore scroll position\n window.scrollTop = data.windowScrollTop;\n window.scrollLeft = data.windowScrollLeft;\n document.body.scrollTop = data.bodyScrollTop;\n document.body.scrollLeft = data.bodyScrollLeft;\n}\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=detect-focus.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _gif = require('./media/gif');\n\nvar _gif2 = _interopRequireDefault(_gif);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attr-usemap\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.innerHTML = '' + '' + '\"\"';\n\n return element.querySelector('area');\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-area-img-tabindex.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _gif = require('./media/gif');\n\nvar _gif2 = _interopRequireDefault(_gif);\n\nvar _platform = require('../util/platform');\n\nvar _platform2 = _interopRequireDefault(_platform);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attr-usemap\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.innerHTML = '' + '' + '\"\"';\n\n return false;\n },\n validate: function validate(element, focusTarget, _document) {\n if (_platform2.default.is.GECKO) {\n // fixes https://github.com/medialize/ally.js/issues/35\n // Firefox loads the DataURI asynchronously, causing a false-negative\n return true;\n }\n\n var focus = element.querySelector('area');\n focus.focus();\n return _document.activeElement === focus;\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-area-tabindex.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _gif = require('./media/gif');\n\nvar _gif2 = _interopRequireDefault(_gif);\n\nvar _platform = require('../util/platform');\n\nvar _platform2 = _interopRequireDefault(_platform);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attr-usemap\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.innerHTML = '' + '' + '\"\"';\n\n return element.querySelector('area');\n },\n validate: function validate(element, focusTarget, _document) {\n if (_platform2.default.is.GECKO) {\n // fixes https://github.com/medialize/ally.js/issues/35\n // Firefox loads the DataURI asynchronously, causing a false-negative\n return true;\n }\n\n return _document.activeElement === focusTarget;\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-area-without-href.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _mp = require('./media/mp3');\n\nvar _mp2 = _interopRequireDefault(_mp);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n name: 'can-focus-audio-without-controls',\n element: 'audio',\n mutate: function mutate(element) {\n try {\n // invalid media file can trigger warning in console, data-uri to prevent HTTP request\n element.setAttribute('src', _mp2.default);\n } catch (e) {\n // IE9 may throw \"Error: Not implemented\"\n }\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-audio-without-controls.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _gif = require('./media/gif.invalid');\n\nvar _gif2 = _interopRequireDefault(_gif);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// NOTE: https://github.com/medialize/ally.js/issues/35\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attr-usemap\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.innerHTML = '' + '\"\"';\n\n return element.querySelector('area');\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-broken-image-map.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n// Children of focusable elements with display:flex are focusable in IE10-11\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.setAttribute('tabindex', '-1');\n element.setAttribute('style', 'display: -webkit-flex; display: -ms-flexbox; display: flex;');\n element.innerHTML = 'hello';\n return element.querySelector('span');\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-children-of-focusable-flexbox.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n// fieldset[tabindex=0][disabled] should not be focusable, but Blink and WebKit disagree\n// @specification https://www.w3.org/TR/html5/disabled-elements.html#concept-element-disabled\n// @browser-issue Chromium https://crbug.com/453847\n// @browser-issue WebKit https://bugs.webkit.org/show_bug.cgi?id=141086\nexports.default = {\n element: 'fieldset',\n mutate: function mutate(element) {\n element.setAttribute('tabindex', 0);\n element.setAttribute('disabled', 'disabled');\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-fieldset-disabled.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n element: 'fieldset',\n mutate: function mutate(element) {\n element.innerHTML = 'legend

content

';\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-fieldset.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n// elements with display:flex are focusable in IE10-11\nexports.default = {\n element: 'span',\n mutate: function mutate(element) {\n element.setAttribute('style', 'display: -webkit-flex; display: -ms-flexbox; display: flex;');\n element.innerHTML = 'hello';\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-flexbox-container.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n// form[tabindex=0][disabled] should be focusable as the\n// specification doesn't know the disabled attribute on the form element\n// @specification https://www.w3.org/TR/html5/forms.html#the-form-element\nexports.default = {\n element: 'form',\n mutate: function mutate(element) {\n element.setAttribute('tabindex', 0);\n element.setAttribute('disabled', 'disabled');\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-form-disabled.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _gif = require('./media/gif');\n\nvar _gif2 = _interopRequireDefault(_gif);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// NOTE: https://github.com/medialize/ally.js/issues/35\n// fixes https://github.com/medialize/ally.js/issues/20\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attr-ismap\nexports.default = {\n element: 'a',\n mutate: function mutate(element) {\n element.href = '#void';\n element.innerHTML = '\"\"';\n return element.querySelector('img');\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-img-ismap.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _gif = require('./media/gif');\n\nvar _gif2 = _interopRequireDefault(_gif);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// NOTE: https://github.com/medialize/ally.js/issues/35\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attr-usemap\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.innerHTML = '' + '\"\"';\n\n return element.querySelector('img');\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-img-usemap-tabindex.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n element: function element(wrapper, _document) {\n var iframe = _document.createElement('iframe');\n\n // iframe must be part of the DOM before accessing the contentWindow is possible\n wrapper.appendChild(iframe);\n\n // create the iframe's default document ()\n var iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.close();\n return iframe;\n },\n mutate: function mutate(iframe) {\n iframe.style.visibility = 'hidden';\n\n var iframeDocument = iframe.contentWindow.document;\n var input = iframeDocument.createElement('input');\n iframeDocument.body.appendChild(input);\n return input;\n },\n validate: function validate(iframe) {\n var iframeDocument = iframe.contentWindow.document;\n var focus = iframeDocument.querySelector('input');\n return iframeDocument.activeElement === focus;\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-in-hidden-iframe.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function () {\n return result;\n};\n\nvar _platform = require('../util/platform');\n\nvar _platform2 = _interopRequireDefault(_platform);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar result = !_platform2.default.is.WEBKIT;\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-in-zero-dimension-object.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n// Firefox allows *any* value and treats invalid values like tabindex=\"-1\"\n// @browser-issue Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.setAttribute('tabindex', 'invalid-value');\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-invalid-tabindex.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n element: 'label',\n mutate: function mutate(element) {\n element.setAttribute('tabindex', '-1');\n },\n validate: function validate(element, focusTarget, _document) {\n // force layout in Chrome 49, otherwise the element won't be focusable\n /* eslint-disable no-unused-vars */\n var variableToPreventDeadCodeElimination = element.offsetHeight;\n /* eslint-enable no-unused-vars */\n element.focus();\n return _document.activeElement === element;\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-label-tabindex.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _svg = require('./media/svg');\n\nvar _svg2 = _interopRequireDefault(_svg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Note: IE10 on BrowserStack does not like this test\n\nexports.default = {\n element: 'object',\n mutate: function mutate(element) {\n element.setAttribute('type', 'image/svg+xml');\n element.setAttribute('data', _svg2.default);\n element.setAttribute('width', '200');\n element.setAttribute('height', '50');\n element.style.visibility = 'hidden';\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-object-svg-hidden.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _svg = require('./media/svg');\n\nvar _svg2 = _interopRequireDefault(_svg);\n\nvar _platform = require('../util/platform');\n\nvar _platform2 = _interopRequireDefault(_platform);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Note: IE10 on BrowserStack does not like this test\n\nexports.default = {\n name: 'can-focus-object-svg',\n element: 'object',\n mutate: function mutate(element) {\n element.setAttribute('type', 'image/svg+xml');\n element.setAttribute('data', _svg2.default);\n element.setAttribute('width', '200');\n element.setAttribute('height', '50');\n },\n validate: function validate(element, focusTarget, _document) {\n if (_platform2.default.is.GECKO) {\n // Firefox seems to be handling the object creation asynchronously and thereby produces a false negative test result.\n // Because we know Firefox is able to focus object elements referencing SVGs, we simply cheat by sniffing the user agent string\n return true;\n }\n\n return _document.activeElement === element;\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-object-svg.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function () {\n return result;\n};\n\nvar _platform = require('../util/platform');\n\nvar _platform2 = _interopRequireDefault(_platform);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Every Environment except IE9 considers SWF objects focusable\nvar result = !_platform2.default.is.IE9;\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-object-swf.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _gif = require('./media/gif');\n\nvar _gif2 = _interopRequireDefault(_gif);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.innerHTML = '' + '\"\"';\n\n // focus the , not the
\n return element.querySelector('img');\n },\n validate: function validate(element, focusTarget, _document) {\n var target = element.querySelector('area');\n return _document.activeElement === target;\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-redirect-img-usemap.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n// see https://jsbin.com/nenirisage/edit?html,js,console,output\n\nexports.default = {\n element: 'fieldset',\n mutate: function mutate(element) {\n element.innerHTML = 'legend';\n // take care of focus in validate();\n return false;\n },\n validate: function validate(element, focusTarget, _document) {\n var focusable = element.querySelector('input[tabindex=\"-1\"]');\n var tabbable = element.querySelector('input[tabindex=\"0\"]');\n\n // Firefox requires this test to focus the
first, while this is not necessary in\n // https://jsbin.com/nenirisage/edit?html,js,console,output\n element.focus();\n\n element.querySelector('legend').focus();\n return _document.activeElement === focusable && 'focusable' || _document.activeElement === tabbable && 'tabbable' || '';\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-redirect-legend.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n// https://github.com/medialize/ally.js/issues/21\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.setAttribute('style', 'width: 100px; height: 50px; overflow: auto;');\n element.innerHTML = '
scrollable content
';\n return element.querySelector('div');\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-scroll-body.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n// https://github.com/medialize/ally.js/issues/21\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.setAttribute('style', 'width: 100px; height: 50px;');\n element.innerHTML = '
scrollable content
';\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-scroll-container-without-overflow.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n// https://github.com/medialize/ally.js/issues/21\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.setAttribute('style', 'width: 100px; height: 50px; overflow: auto;');\n element.innerHTML = '
scrollable content
';\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-scroll-container.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n element: 'details',\n mutate: function mutate(element) {\n element.innerHTML = 'foo

content

';\n return element.firstElementChild;\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-summary.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _svg = require('./helper/svg');\n\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.innerHTML = (0, _svg.generate)('a');\n return element.querySelector('text');\n },\n validate: _svg.validate\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-svg-focusable-attribute.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _svg = require('./helper/svg');\n\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.innerHTML = (0, _svg.generate)('');\n // Safari 8's quersSelector() can't identify foreignObject, but getElementyByTagName() can\n return element.querySelector('foreignObject') || element.getElementsByTagName('foreignObject')[0];\n },\n validate: _svg.validate\n\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-svg-foreignobject-tabindex.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function () {\n return result;\n};\n\nvar _platform = require('../util/platform');\n\nvar _platform2 = _interopRequireDefault(_platform);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Firefox seems to be handling the SVG-document-in-iframe creation asynchronously\n// and thereby produces a false negative test result. Thus the test is pointless\n// and we resort to UA sniffing once again.\n// see http://jsbin.com/vunadohoko/1/edit?js,console,output\n\nvar result = Boolean(_platform2.default.is.GECKO && typeof SVGElement !== 'undefined' && SVGElement.prototype.focus);\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-svg-in-iframe.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _svg = require('./helper/svg');\n\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.innerHTML = (0, _svg.generate)('a');\n return element.querySelector('text');\n },\n validate: _svg.validate\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-svg-negative-tabindex-attribute.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _svg = require('./helper/svg');\n\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.innerHTML = (0, _svg.generate)('a');\n return element.querySelector('text');\n },\n validate: _svg.validate\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-svg-tabindex-attribute.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _svg = require('./helper/svg');\n\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.innerHTML = (0, _svg.generate)(['link', ''].join(''));\n\n return element.querySelector('use');\n },\n validate: _svg.validate\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-svg-use-tabindex.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _svg = require('./helper/svg');\n\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.innerHTML = (0, _svg.generate)('');\n return element.firstChild;\n },\n validate: _svg.validate\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-svg.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n// Firefox allows *any* value and treats invalid values like tabindex=\"-1\"\n// @browser-issue Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054\nexports.default = {\n element: 'div',\n mutate: function mutate(element) {\n element.setAttribute('tabindex', '3x');\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-tabindex-trailing-characters.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n element: 'table',\n mutate: function mutate(element, wrapper, _document) {\n // IE9 has a problem replacing TBODY contents with innerHTML.\n // https://stackoverflow.com/a/8097055/515124\n // element.innerHTML = 'cell';\n var fragment = _document.createDocumentFragment();\n fragment.innerHTML = 'cell';\n element.appendChild(fragment);\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-table.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _mp = require('./media/mp4');\n\nvar _mp2 = _interopRequireDefault(_mp);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n element: 'video',\n mutate: function mutate(element) {\n try {\n // invalid media file can trigger warning in console, data-uri to prevent HTTP request\n element.setAttribute('src', _mp2.default);\n } catch (e) {\n // IE9 may throw \"Error: Not implemented\"\n }\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=focus-video-without-controls.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.generate = generate;\nexports.focus = focus;\nexports.validate = validate;\n\nvar _focus = require('../../element/focus.svg-foreign-object-hack');\n\nvar _focus2 = _interopRequireDefault(_focus);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction generate(element) {\n return '' + element + '';\n}\n\nfunction focus(element) {\n if (element.focus) {\n return;\n }\n\n try {\n HTMLElement.prototype.focus.call(element);\n } catch (e) {\n (0, _focus2.default)(element);\n }\n}\n\nfunction validate(element, focusTarget, _document) {\n focus(focusTarget);\n return _document.activeElement === focusTarget;\n}\n//# sourceMappingURL=svg.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ';\nmodule.exports = exports['default'];\n//# sourceMappingURL=gif.invalid.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\nmodule.exports = exports['default'];\n//# sourceMappingURL=gif.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _gif = require('./gif');\n\nvar _gif2 = _interopRequireDefault(_gif);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _gif2.default;\n// export default 'data:audio/mp3;base64,audio-focus-test';\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=mp3.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _gif = require('./gif');\n\nvar _gif2 = _interopRequireDefault(_gif);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _gif2.default;\n// export default 'data:video/mp4;base64,video-focus-test';\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=mp4.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtb' + 'G5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBpZD0ic3ZnIj48dGV4dCB4PSIxMCIgeT0iMjAiIGlkPSJ' + 'zdmctbGluay10ZXh0Ij50ZXh0PC90ZXh0Pjwvc3ZnPg==';\nmodule.exports = exports['default'];\n//# sourceMappingURL=svg.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _version = require('../version');\n\nvar _version2 = _interopRequireDefault(_version);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction readLocalStorage(key) {\n // allow reading from storage to retrieve previous support results\n // even while the document does not have focus\n var data = void 0;\n\n try {\n data = window.localStorage && window.localStorage.getItem(key);\n data = data ? JSON.parse(data) : {};\n } catch (e) {\n data = {};\n }\n\n return data;\n} /*\n Facility to cache test results in localStorage.\n \n USAGE:\n cache.get('key');\n cache.set('key', 'value');\n */\n\nfunction writeLocalStorage(key, value) {\n if (!document.hasFocus()) {\n // if the document does not have focus when tests are executed, focus() may\n // not be handled properly and events may not be dispatched immediately.\n // This can happen when a document is reloaded while Developer Tools have focus.\n try {\n window.localStorage && window.localStorage.removeItem(key);\n } catch (e) {\n // ignore\n }\n\n return;\n }\n\n try {\n window.localStorage && window.localStorage.setItem(key, JSON.stringify(value));\n } catch (e) {\n // ignore\n }\n}\n\nvar userAgent = typeof window !== 'undefined' && window.navigator.userAgent || '';\nvar cacheKey = 'ally-supports-cache';\nvar cache = readLocalStorage(cacheKey);\n\n// update the cache if ally or the user agent changed (newer version, etc)\nif (cache.userAgent !== userAgent || cache.version !== _version2.default) {\n cache = {};\n}\n\ncache.userAgent = userAgent;\ncache.version = _version2.default;\n\nexports.default = {\n get: function get() {\n return cache;\n },\n set: function set(values) {\n Object.keys(values).forEach(function (key) {\n cache[key] = values[key];\n });\n\n cache.time = new Date().toISOString();\n writeLocalStorage(cacheKey, cache);\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=supports-cache.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function () {\n if (supportsCache) {\n return supportsCache;\n }\n\n supportsCache = _supportsCache2.default.get();\n if (!supportsCache.time) {\n _supportsCache2.default.set(executeTests());\n supportsCache = _supportsCache2.default.get();\n }\n\n return supportsCache;\n};\n\nvar _detectFocus = require('./detect-focus');\n\nvar _detectFocus2 = _interopRequireDefault(_detectFocus);\n\nvar _supportsCache = require('./supports-cache');\n\nvar _supportsCache2 = _interopRequireDefault(_supportsCache);\n\nvar _cssShadowPiercingDeepCombinator = require('./css-shadow-piercing-deep-combinator');\n\nvar _cssShadowPiercingDeepCombinator2 = _interopRequireDefault(_cssShadowPiercingDeepCombinator);\n\nvar _focusAreaImgTabindex = require('./focus-area-img-tabindex');\n\nvar _focusAreaImgTabindex2 = _interopRequireDefault(_focusAreaImgTabindex);\n\nvar _focusAreaTabindex = require('./focus-area-tabindex');\n\nvar _focusAreaTabindex2 = _interopRequireDefault(_focusAreaTabindex);\n\nvar _focusAreaWithoutHref = require('./focus-area-without-href');\n\nvar _focusAreaWithoutHref2 = _interopRequireDefault(_focusAreaWithoutHref);\n\nvar _focusAudioWithoutControls = require('./focus-audio-without-controls');\n\nvar _focusAudioWithoutControls2 = _interopRequireDefault(_focusAudioWithoutControls);\n\nvar _focusBrokenImageMap = require('./focus-broken-image-map');\n\nvar _focusBrokenImageMap2 = _interopRequireDefault(_focusBrokenImageMap);\n\nvar _focusChildrenOfFocusableFlexbox = require('./focus-children-of-focusable-flexbox');\n\nvar _focusChildrenOfFocusableFlexbox2 = _interopRequireDefault(_focusChildrenOfFocusableFlexbox);\n\nvar _focusFieldsetDisabled = require('./focus-fieldset-disabled');\n\nvar _focusFieldsetDisabled2 = _interopRequireDefault(_focusFieldsetDisabled);\n\nvar _focusFieldset = require('./focus-fieldset');\n\nvar _focusFieldset2 = _interopRequireDefault(_focusFieldset);\n\nvar _focusFlexboxContainer = require('./focus-flexbox-container');\n\nvar _focusFlexboxContainer2 = _interopRequireDefault(_focusFlexboxContainer);\n\nvar _focusFormDisabled = require('./focus-form-disabled');\n\nvar _focusFormDisabled2 = _interopRequireDefault(_focusFormDisabled);\n\nvar _focusImgIsmap = require('./focus-img-ismap');\n\nvar _focusImgIsmap2 = _interopRequireDefault(_focusImgIsmap);\n\nvar _focusImgUsemapTabindex = require('./focus-img-usemap-tabindex');\n\nvar _focusImgUsemapTabindex2 = _interopRequireDefault(_focusImgUsemapTabindex);\n\nvar _focusInHiddenIframe = require('./focus-in-hidden-iframe');\n\nvar _focusInHiddenIframe2 = _interopRequireDefault(_focusInHiddenIframe);\n\nvar _focusInZeroDimensionObject = require('./focus-in-zero-dimension-object');\n\nvar _focusInZeroDimensionObject2 = _interopRequireDefault(_focusInZeroDimensionObject);\n\nvar _focusInvalidTabindex = require('./focus-invalid-tabindex');\n\nvar _focusInvalidTabindex2 = _interopRequireDefault(_focusInvalidTabindex);\n\nvar _focusLabelTabindex = require('./focus-label-tabindex');\n\nvar _focusLabelTabindex2 = _interopRequireDefault(_focusLabelTabindex);\n\nvar _focusObjectSvgHidden = require('./focus-object-svg-hidden');\n\nvar _focusObjectSvgHidden2 = _interopRequireDefault(_focusObjectSvgHidden);\n\nvar _focusObjectSvg = require('./focus-object-svg');\n\nvar _focusObjectSvg2 = _interopRequireDefault(_focusObjectSvg);\n\nvar _focusObjectSwf = require('./focus-object-swf');\n\nvar _focusObjectSwf2 = _interopRequireDefault(_focusObjectSwf);\n\nvar _focusRedirectImgUsemap = require('./focus-redirect-img-usemap');\n\nvar _focusRedirectImgUsemap2 = _interopRequireDefault(_focusRedirectImgUsemap);\n\nvar _focusRedirectLegend = require('./focus-redirect-legend');\n\nvar _focusRedirectLegend2 = _interopRequireDefault(_focusRedirectLegend);\n\nvar _focusScrollBody = require('./focus-scroll-body');\n\nvar _focusScrollBody2 = _interopRequireDefault(_focusScrollBody);\n\nvar _focusScrollContainerWithoutOverflow = require('./focus-scroll-container-without-overflow');\n\nvar _focusScrollContainerWithoutOverflow2 = _interopRequireDefault(_focusScrollContainerWithoutOverflow);\n\nvar _focusScrollContainer = require('./focus-scroll-container');\n\nvar _focusScrollContainer2 = _interopRequireDefault(_focusScrollContainer);\n\nvar _focusSummary = require('./focus-summary');\n\nvar _focusSummary2 = _interopRequireDefault(_focusSummary);\n\nvar _focusSvgFocusableAttribute = require('./focus-svg-focusable-attribute');\n\nvar _focusSvgFocusableAttribute2 = _interopRequireDefault(_focusSvgFocusableAttribute);\n\nvar _focusSvgTabindexAttribute = require('./focus-svg-tabindex-attribute');\n\nvar _focusSvgTabindexAttribute2 = _interopRequireDefault(_focusSvgTabindexAttribute);\n\nvar _focusSvgNegativeTabindexAttribute = require('./focus-svg-negative-tabindex-attribute');\n\nvar _focusSvgNegativeTabindexAttribute2 = _interopRequireDefault(_focusSvgNegativeTabindexAttribute);\n\nvar _focusSvgUseTabindex = require('./focus-svg-use-tabindex');\n\nvar _focusSvgUseTabindex2 = _interopRequireDefault(_focusSvgUseTabindex);\n\nvar _focusSvgForeignobjectTabindex = require('./focus-svg-foreignobject-tabindex');\n\nvar _focusSvgForeignobjectTabindex2 = _interopRequireDefault(_focusSvgForeignobjectTabindex);\n\nvar _focusSvgInIframe = require('./focus-svg-in-iframe');\n\nvar _focusSvgInIframe2 = _interopRequireDefault(_focusSvgInIframe);\n\nvar _focusSvg = require('./focus-svg');\n\nvar _focusSvg2 = _interopRequireDefault(_focusSvg);\n\nvar _focusTabindexTrailingCharacters = require('./focus-tabindex-trailing-characters');\n\nvar _focusTabindexTrailingCharacters2 = _interopRequireDefault(_focusTabindexTrailingCharacters);\n\nvar _focusTable = require('./focus-table');\n\nvar _focusTable2 = _interopRequireDefault(_focusTable);\n\nvar _focusVideoWithoutControls = require('./focus-video-without-controls');\n\nvar _focusVideoWithoutControls2 = _interopRequireDefault(_focusVideoWithoutControls);\n\nvar _tabsequenceAreaAtImgPosition = require('./tabsequence-area-at-img-position');\n\nvar _tabsequenceAreaAtImgPosition2 = _interopRequireDefault(_tabsequenceAreaAtImgPosition);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar testCallbacks = {\n cssShadowPiercingDeepCombinator: _cssShadowPiercingDeepCombinator2.default,\n focusInZeroDimensionObject: _focusInZeroDimensionObject2.default,\n focusObjectSwf: _focusObjectSwf2.default,\n focusSvgInIframe: _focusSvgInIframe2.default,\n tabsequenceAreaAtImgPosition: _tabsequenceAreaAtImgPosition2.default\n};\n\nvar testDescriptions = {\n focusAreaImgTabindex: _focusAreaImgTabindex2.default,\n focusAreaTabindex: _focusAreaTabindex2.default,\n focusAreaWithoutHref: _focusAreaWithoutHref2.default,\n focusAudioWithoutControls: _focusAudioWithoutControls2.default,\n focusBrokenImageMap: _focusBrokenImageMap2.default,\n focusChildrenOfFocusableFlexbox: _focusChildrenOfFocusableFlexbox2.default,\n focusFieldsetDisabled: _focusFieldsetDisabled2.default,\n focusFieldset: _focusFieldset2.default,\n focusFlexboxContainer: _focusFlexboxContainer2.default,\n focusFormDisabled: _focusFormDisabled2.default,\n focusImgIsmap: _focusImgIsmap2.default,\n focusImgUsemapTabindex: _focusImgUsemapTabindex2.default,\n focusInHiddenIframe: _focusInHiddenIframe2.default,\n focusInvalidTabindex: _focusInvalidTabindex2.default,\n focusLabelTabindex: _focusLabelTabindex2.default,\n focusObjectSvg: _focusObjectSvg2.default,\n focusObjectSvgHidden: _focusObjectSvgHidden2.default,\n focusRedirectImgUsemap: _focusRedirectImgUsemap2.default,\n focusRedirectLegend: _focusRedirectLegend2.default,\n focusScrollBody: _focusScrollBody2.default,\n focusScrollContainerWithoutOverflow: _focusScrollContainerWithoutOverflow2.default,\n focusScrollContainer: _focusScrollContainer2.default,\n focusSummary: _focusSummary2.default,\n focusSvgFocusableAttribute: _focusSvgFocusableAttribute2.default,\n focusSvgTabindexAttribute: _focusSvgTabindexAttribute2.default,\n focusSvgNegativeTabindexAttribute: _focusSvgNegativeTabindexAttribute2.default,\n focusSvgUseTabindex: _focusSvgUseTabindex2.default,\n focusSvgForeignobjectTabindex: _focusSvgForeignobjectTabindex2.default,\n focusSvg: _focusSvg2.default,\n focusTabindexTrailingCharacters: _focusTabindexTrailingCharacters2.default,\n focusTable: _focusTable2.default,\n focusVideoWithoutControls: _focusVideoWithoutControls2.default\n};\n\nfunction executeTests() {\n var results = (0, _detectFocus2.default)(testDescriptions);\n Object.keys(testCallbacks).forEach(function (key) {\n results[key] = testCallbacks[key]();\n });\n\n return results;\n}\n\nvar supportsCache = null;\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=supports.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function () {\n return result;\n};\n\nvar _platform = require('../util/platform');\n\nvar _platform2 = _interopRequireDefault(_platform);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// https://jsbin.com/vafaba/3/edit?html,js,console,output\nvar result = _platform2.default.is.GECKO || _platform2.default.is.TRIDENT || _platform2.default.is.EDGE;\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=tabsequence-area-at-img-position.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (_ref) {\n var context = _ref.context,\n _ref$label = _ref.label,\n label = _ref$label === undefined ? 'context-to-element' : _ref$label,\n resolveDocument = _ref.resolveDocument,\n defaultToDocument = _ref.defaultToDocument;\n\n var element = (0, _nodeArray2.default)(context)[0];\n\n if (resolveDocument && element && element.nodeType === Node.DOCUMENT_NODE) {\n element = element.documentElement;\n }\n\n if (!element && defaultToDocument) {\n return document.documentElement;\n }\n\n if (!element) {\n throw new TypeError(label + ' requires valid options.context');\n }\n\n if (element.nodeType !== Node.ELEMENT_NODE && element.nodeType !== Node.DOCUMENT_FRAGMENT_NODE) {\n throw new TypeError(label + ' requires options.context to be an Element');\n }\n\n return element;\n};\n\nvar _nodeArray = require('../util/node-array');\n\nvar _nodeArray2 = _interopRequireDefault(_nodeArray);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=context-to-element.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function () {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n engage = _ref2.engage,\n disengage = _ref2.disengage;\n\n var data = {\n engage: engage || noop,\n disengage: disengage || noop,\n instances: 0,\n _result: null\n };\n\n return initialize.bind(data);\n};\n\n/*\n The Singleton Decorator is intended to allow modules to initialize a (\"singleton\") component as if\n it was the only one using it. Every module gets to initialize and destruct the component by itself.\n Via simple reference counting the component keeps track of how many modules have initialized it,\n so it destructs only when the last module is gone. This decorator hides the component's singleton\n nature from the application in order to offer a homogenous API.\n\n engage() can return an object (result) with methods to expose to the consumer,\n upon initialization result.disengage is added and returned to the consumer.\n*/\n\nfunction destruct() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n force = _ref.force;\n\n if (force) {\n this.instances = 0;\n } else {\n this.instances--;\n }\n\n if (!this.instances) {\n this.disengage();\n this._result = null;\n }\n}\n\nfunction initialize() {\n if (this.instances) {\n this.instances++;\n return this._result;\n }\n\n this.instances++;\n this._result = this.engage() || {};\n this._result.disengage = destruct.bind(this);\n\n return this._result;\n}\n\nfunction noop() {}\n\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=decorate-service.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (input) {\n if (!input) {\n return [];\n }\n\n if (Array.isArray(input)) {\n return input;\n }\n\n // instanceof Node - does not work with iframes\n if (input.nodeType !== undefined) {\n return [input];\n }\n\n if (typeof input === 'string') {\n input = document.querySelectorAll(input);\n }\n\n if (input.length !== undefined) {\n return [].slice.call(input, 0);\n }\n\n throw new TypeError('unexpected input ' + String(input));\n};\n\nmodule.exports = exports['default'];\n// input may be undefined, selector-tring, Node, NodeList, HTMLCollection, array of Nodes\n// yes, to some extent this is a bad replica of jQuery's constructor function\n//# sourceMappingURL=node-array.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _platform2 = require('platform');\n\nvar _platform3 = _interopRequireDefault(_platform2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// deep clone of original platform\nvar platform = JSON.parse(JSON.stringify(_platform3.default));\n\n// operating system\n\n// sugar for https://github.com/bestiejs/platform.js\n// make sure to ALWAYS reference the layout engine,\n// even if it is not necessary for the condition,\n// as this makes grepping for this stuff simpler\n\nvar os = platform.os.family || '';\nvar ANDROID = os === 'Android';\nvar WINDOWS = os.slice(0, 7) === 'Windows';\nvar OSX = os === 'OS X';\nvar IOS = os === 'iOS';\n\n// layout\nvar BLINK = platform.layout === 'Blink';\nvar GECKO = platform.layout === 'Gecko';\nvar TRIDENT = platform.layout === 'Trident';\nvar EDGE = platform.layout === 'EdgeHTML';\nvar WEBKIT = platform.layout === 'WebKit';\n\n// browser version (not layout engine version!)\nvar version = parseFloat(platform.version);\nvar majorVersion = Math.floor(version);\nplatform.majorVersion = majorVersion;\n\nplatform.is = {\n // operating system\n ANDROID: ANDROID,\n WINDOWS: WINDOWS,\n OSX: OSX,\n IOS: IOS,\n // layout\n BLINK: BLINK, // \"Chrome\", \"Chrome Mobile\", \"Opera\"\n GECKO: GECKO, // \"Firefox\"\n TRIDENT: TRIDENT, // \"Internet Explorer\"\n EDGE: EDGE, // \"Microsoft Edge\"\n WEBKIT: WEBKIT, // \"Safari\"\n // INTERNET EXPLORERS\n IE9: TRIDENT && majorVersion === 9,\n IE10: TRIDENT && majorVersion === 10,\n IE11: TRIDENT && majorVersion === 11\n};\n\nexports.default = platform;\nmodule.exports = exports['default'];\n//# sourceMappingURL=platform.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (selector) {\n if (typeof shadowPrefix !== 'string') {\n var operator = (0, _cssShadowPiercingDeepCombinator2.default)();\n if (operator) {\n shadowPrefix = ', html ' + operator + ' ';\n }\n }\n\n if (!shadowPrefix) {\n return selector;\n }\n\n return selector + shadowPrefix + selector.replace(/\\s*,\\s*/g, ',').split(',').join(shadowPrefix);\n};\n\nvar _cssShadowPiercingDeepCombinator = require('../supports/css-shadow-piercing-deep-combinator');\n\nvar _cssShadowPiercingDeepCombinator2 = _interopRequireDefault(_cssShadowPiercingDeepCombinator);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar shadowPrefix = void 0;\n// convert a CSS selector so that it also pierces ShadowDOM\n// takes \".a, #b\" and turns it into \".a, #b, html >>> .a, html >>> #b\"\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=select-in-shadows.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.toggleClass = toggleClass;\nexports.removeClass = removeClass;\nexports.addClass = addClass;\n//\n// This util allows to easily add, remove or toggle classes.\n//\n// Using it is neccessary as IE 9 doesn't support element classList\n// and IE 11 doesn't support classList for SVG elements\n// see also https://developer.mozilla.org/en/docs/Web/API/Element/classList\n//\n// This file is a replacement for domtokenlist because of\n// https://github.com/medialize/ally.js/issues/147\n//\n// Usage:\n//\n// toggleClass(div, 'demo'); // Toggles the class `demo`\n// toggleClass(div, 'demo', true); // Adds the class `demo`\n// toggleClass(div, 'demo', false); // removes the class `demo`\n//\n// removeClass(div, 'demo');\n// addClass(div, 'demo');\n//\n\n/**\n * Extract an array of all classNames of the given DOM or SVG node\n */\nfunction getClassNames(element) {\n var className = element.getAttribute && element.getAttribute('class') || '';\n return className === '' ? [] : className.split(' ');\n}\n\nfunction toggleClass(element, className, force) {\n var classNames = getClassNames(element);\n var idx = classNames.indexOf(className);\n var hasClass = idx !== -1;\n var shouldHaveClass = force !== undefined ? force : !hasClass;\n // Break if classes are already set/removed\n if (shouldHaveClass === hasClass) {\n return;\n }\n // Remove class\n if (!shouldHaveClass) {\n classNames.splice(idx, 1);\n }\n // Add class\n if (shouldHaveClass) {\n classNames.push(className);\n }\n element.setAttribute('class', classNames.join(' '));\n}\n\nfunction removeClass(element, className) {\n return toggleClass(element, className, false);\n}\n\nfunction addClass(element, className) {\n return toggleClass(element, className, true);\n}\n//# sourceMappingURL=toggle-class.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n// this file is overwritten by `npm run build:pre`\nvar version = '1.4.1';\nexports.default = version;\nmodule.exports = exports['default'];\n//# sourceMappingURL=version.js.map","/*! npm.im/object-fit-images 3.2.4 */\n'use strict';\n\nvar OFI = 'bfred-it:object-fit-images';\nvar propRegex = /(object-fit|object-position)\\s*:\\s*([-.\\w\\s%]+)/g;\nvar testImg = typeof Image === 'undefined' ? {style: {'object-position': 1}} : new Image();\nvar supportsObjectFit = 'object-fit' in testImg.style;\nvar supportsObjectPosition = 'object-position' in testImg.style;\nvar supportsOFI = 'background-size' in testImg.style;\nvar supportsCurrentSrc = typeof testImg.currentSrc === 'string';\nvar nativeGetAttribute = testImg.getAttribute;\nvar nativeSetAttribute = testImg.setAttribute;\nvar autoModeEnabled = false;\n\nfunction createPlaceholder(w, h) {\n\treturn (\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='\" + w + \"' height='\" + h + \"'%3E%3C/svg%3E\");\n}\n\nfunction polyfillCurrentSrc(el) {\n\tif (el.srcset && !supportsCurrentSrc && window.picturefill) {\n\t\tvar pf = window.picturefill._;\n\t\t// parse srcset with picturefill where currentSrc isn't available\n\t\tif (!el[pf.ns] || !el[pf.ns].evaled) {\n\t\t\t// force synchronous srcset parsing\n\t\t\tpf.fillImg(el, {reselect: true});\n\t\t}\n\n\t\tif (!el[pf.ns].curSrc) {\n\t\t\t// force picturefill to parse srcset\n\t\t\tel[pf.ns].supported = false;\n\t\t\tpf.fillImg(el, {reselect: true});\n\t\t}\n\n\t\t// retrieve parsed currentSrc, if any\n\t\tel.currentSrc = el[pf.ns].curSrc || el.src;\n\t}\n}\n\nfunction getStyle(el) {\n\tvar style = getComputedStyle(el).fontFamily;\n\tvar parsed;\n\tvar props = {};\n\twhile ((parsed = propRegex.exec(style)) !== null) {\n\t\tprops[parsed[1]] = parsed[2];\n\t}\n\treturn props;\n}\n\nfunction setPlaceholder(img, width, height) {\n\t// Default: fill width, no height\n\tvar placeholder = createPlaceholder(width || 1, height || 0);\n\n\t// Only set placeholder if it's different\n\tif (nativeGetAttribute.call(img, 'src') !== placeholder) {\n\t\tnativeSetAttribute.call(img, 'src', placeholder);\n\t}\n}\n\nfunction onImageReady(img, callback) {\n\t// naturalWidth is only available when the image headers are loaded,\n\t// this loop will poll it every 100ms.\n\tif (img.naturalWidth) {\n\t\tcallback(img);\n\t} else {\n\t\tsetTimeout(onImageReady, 100, img, callback);\n\t}\n}\n\nfunction fixOne(el) {\n\tvar style = getStyle(el);\n\tvar ofi = el[OFI];\n\tstyle['object-fit'] = style['object-fit'] || 'fill'; // default value\n\n\t// Avoid running where unnecessary, unless OFI had already done its deed\n\tif (!ofi.img) {\n\t\t// fill is the default behavior so no action is necessary\n\t\tif (style['object-fit'] === 'fill') {\n\t\t\treturn;\n\t\t}\n\n\t\t// Where object-fit is supported and object-position isn't (Safari < 10)\n\t\tif (\n\t\t\t!ofi.skipTest && // unless user wants to apply regardless of browser support\n\t\t\tsupportsObjectFit && // if browser already supports object-fit\n\t\t\t!style['object-position'] // unless object-position is used\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// keep a clone in memory while resetting the original to a blank\n\tif (!ofi.img) {\n\t\tofi.img = new Image(el.width, el.height);\n\t\tofi.img.srcset = nativeGetAttribute.call(el, \"data-ofi-srcset\") || el.srcset;\n\t\tofi.img.src = nativeGetAttribute.call(el, \"data-ofi-src\") || el.src;\n\n\t\t// preserve for any future cloneNode calls\n\t\t// https://github.com/bfred-it/object-fit-images/issues/53\n\t\tnativeSetAttribute.call(el, \"data-ofi-src\", el.src);\n\t\tif (el.srcset) {\n\t\t\tnativeSetAttribute.call(el, \"data-ofi-srcset\", el.srcset);\n\t\t}\n\n\t\tsetPlaceholder(el, el.naturalWidth || el.width, el.naturalHeight || el.height);\n\n\t\t// remove srcset because it overrides src\n\t\tif (el.srcset) {\n\t\t\tel.srcset = '';\n\t\t}\n\t\ttry {\n\t\t\tkeepSrcUsable(el);\n\t\t} catch (err) {\n\t\t\tif (window.console) {\n\t\t\t\tconsole.warn('https://bit.ly/ofi-old-browser');\n\t\t\t}\n\t\t}\n\t}\n\n\tpolyfillCurrentSrc(ofi.img);\n\n\tel.style.backgroundImage = \"url(\\\"\" + ((ofi.img.currentSrc || ofi.img.src).replace(/\"/g, '\\\\\"')) + \"\\\")\";\n\tel.style.backgroundPosition = style['object-position'] || 'center';\n\tel.style.backgroundRepeat = 'no-repeat';\n\tel.style.backgroundOrigin = 'content-box';\n\n\tif (/scale-down/.test(style['object-fit'])) {\n\t\tonImageReady(ofi.img, function () {\n\t\t\tif (ofi.img.naturalWidth > el.width || ofi.img.naturalHeight > el.height) {\n\t\t\t\tel.style.backgroundSize = 'contain';\n\t\t\t} else {\n\t\t\t\tel.style.backgroundSize = 'auto';\n\t\t\t}\n\t\t});\n\t} else {\n\t\tel.style.backgroundSize = style['object-fit'].replace('none', 'auto').replace('fill', '100% 100%');\n\t}\n\n\tonImageReady(ofi.img, function (img) {\n\t\tsetPlaceholder(el, img.naturalWidth, img.naturalHeight);\n\t});\n}\n\nfunction keepSrcUsable(el) {\n\tvar descriptors = {\n\t\tget: function get(prop) {\n\t\t\treturn el[OFI].img[prop ? prop : 'src'];\n\t\t},\n\t\tset: function set(value, prop) {\n\t\t\tel[OFI].img[prop ? prop : 'src'] = value;\n\t\t\tnativeSetAttribute.call(el, (\"data-ofi-\" + prop), value); // preserve for any future cloneNode\n\t\t\tfixOne(el);\n\t\t\treturn value;\n\t\t}\n\t};\n\tObject.defineProperty(el, 'src', descriptors);\n\tObject.defineProperty(el, 'currentSrc', {\n\t\tget: function () { return descriptors.get('currentSrc'); }\n\t});\n\tObject.defineProperty(el, 'srcset', {\n\t\tget: function () { return descriptors.get('srcset'); },\n\t\tset: function (ss) { return descriptors.set(ss, 'srcset'); }\n\t});\n}\n\nfunction hijackAttributes() {\n\tfunction getOfiImageMaybe(el, name) {\n\t\treturn el[OFI] && el[OFI].img && (name === 'src' || name === 'srcset') ? el[OFI].img : el;\n\t}\n\tif (!supportsObjectPosition) {\n\t\tHTMLImageElement.prototype.getAttribute = function (name) {\n\t\t\treturn nativeGetAttribute.call(getOfiImageMaybe(this, name), name);\n\t\t};\n\n\t\tHTMLImageElement.prototype.setAttribute = function (name, value) {\n\t\t\treturn nativeSetAttribute.call(getOfiImageMaybe(this, name), name, String(value));\n\t\t};\n\t}\n}\n\nfunction fix(imgs, opts) {\n\tvar startAutoMode = !autoModeEnabled && !imgs;\n\topts = opts || {};\n\timgs = imgs || 'img';\n\n\tif ((supportsObjectPosition && !opts.skipTest) || !supportsOFI) {\n\t\treturn false;\n\t}\n\n\t// use imgs as a selector or just select all images\n\tif (imgs === 'img') {\n\t\timgs = document.getElementsByTagName('img');\n\t} else if (typeof imgs === 'string') {\n\t\timgs = document.querySelectorAll(imgs);\n\t} else if (!('length' in imgs)) {\n\t\timgs = [imgs];\n\t}\n\n\t// apply fix to all\n\tfor (var i = 0; i < imgs.length; i++) {\n\t\timgs[i][OFI] = imgs[i][OFI] || {\n\t\t\tskipTest: opts.skipTest\n\t\t};\n\t\tfixOne(imgs[i]);\n\t}\n\n\tif (startAutoMode) {\n\t\tdocument.body.addEventListener('load', function (e) {\n\t\t\tif (e.target.tagName === 'IMG') {\n\t\t\t\tfix(e.target, {\n\t\t\t\t\tskipTest: opts.skipTest\n\t\t\t\t});\n\t\t\t}\n\t\t}, true);\n\t\tautoModeEnabled = true;\n\t\timgs = 'img'; // reset to a generic selector for watchMQ\n\t}\n\n\t// if requested, watch media queries for object-fit change\n\tif (opts.watchMQ) {\n\t\twindow.addEventListener('resize', fix.bind(null, imgs, {\n\t\t\tskipTest: opts.skipTest\n\t\t}));\n\t}\n}\n\nfix.supportsObjectFit = supportsObjectFit;\nfix.supportsObjectPosition = supportsObjectPosition;\n\nhijackAttributes();\n\nmodule.exports = fix;\n","/*!\r\n * Platform.js \r\n * Copyright 2014-2016 Benjamin Tan \r\n * Copyright 2011-2013 John-David Dalton \r\n * Available under MIT license \r\n */\r\n;(function() {\r\n 'use strict';\r\n\r\n /** Used to determine if values are of the language type `Object`. */\r\n var objectTypes = {\r\n 'function': true,\r\n 'object': true\r\n };\r\n\r\n /** Used as a reference to the global object. */\r\n var root = (objectTypes[typeof window] && window) || this;\r\n\r\n /** Backup possible global object. */\r\n var oldRoot = root;\r\n\r\n /** Detect free variable `exports`. */\r\n var freeExports = objectTypes[typeof exports] && exports;\r\n\r\n /** Detect free variable `module`. */\r\n var freeModule = objectTypes[typeof module] && module && !module.nodeType && module;\r\n\r\n /** Detect free variable `global` from Node.js or Browserified code and use it as `root`. */\r\n var freeGlobal = freeExports && freeModule && typeof global == 'object' && global;\r\n if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal)) {\r\n root = freeGlobal;\r\n }\r\n\r\n /**\r\n * Used as the maximum length of an array-like object.\r\n * See the [ES6 spec](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength)\r\n * for more details.\r\n */\r\n var maxSafeInteger = Math.pow(2, 53) - 1;\r\n\r\n /** Regular expression to detect Opera. */\r\n var reOpera = /\\bOpera/;\r\n\r\n /** Possible global object. */\r\n var thisBinding = this;\r\n\r\n /** Used for native method references. */\r\n var objectProto = Object.prototype;\r\n\r\n /** Used to check for own properties of an object. */\r\n var hasOwnProperty = objectProto.hasOwnProperty;\r\n\r\n /** Used to resolve the internal `[[Class]]` of values. */\r\n var toString = objectProto.toString;\r\n\r\n /*--------------------------------------------------------------------------*/\r\n\r\n /**\r\n * Capitalizes a string value.\r\n *\r\n * @private\r\n * @param {string} string The string to capitalize.\r\n * @returns {string} The capitalized string.\r\n */\r\n function capitalize(string) {\r\n string = String(string);\r\n return string.charAt(0).toUpperCase() + string.slice(1);\r\n }\r\n\r\n /**\r\n * A utility function to clean up the OS name.\r\n *\r\n * @private\r\n * @param {string} os The OS name to clean up.\r\n * @param {string} [pattern] A `RegExp` pattern matching the OS name.\r\n * @param {string} [label] A label for the OS.\r\n */\r\n function cleanupOS(os, pattern, label) {\r\n // Platform tokens are defined at:\r\n // http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx\r\n // http://web.archive.org/web/20081122053950/http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx\r\n var data = {\r\n '10.0': '10',\r\n '6.4': '10 Technical Preview',\r\n '6.3': '8.1',\r\n '6.2': '8',\r\n '6.1': 'Server 2008 R2 / 7',\r\n '6.0': 'Server 2008 / Vista',\r\n '5.2': 'Server 2003 / XP 64-bit',\r\n '5.1': 'XP',\r\n '5.01': '2000 SP1',\r\n '5.0': '2000',\r\n '4.0': 'NT',\r\n '4.90': 'ME'\r\n };\r\n // Detect Windows version from platform tokens.\r\n if (pattern && label && /^Win/i.test(os) && !/^Windows Phone /i.test(os) &&\r\n (data = data[/[\\d.]+$/.exec(os)])) {\r\n os = 'Windows ' + data;\r\n }\r\n // Correct character case and cleanup string.\r\n os = String(os);\r\n\r\n if (pattern && label) {\r\n os = os.replace(RegExp(pattern, 'i'), label);\r\n }\r\n\r\n os = format(\r\n os.replace(/ ce$/i, ' CE')\r\n .replace(/\\bhpw/i, 'web')\r\n .replace(/\\bMacintosh\\b/, 'Mac OS')\r\n .replace(/_PowerPC\\b/i, ' OS')\r\n .replace(/\\b(OS X) [^ \\d]+/i, '$1')\r\n .replace(/\\bMac (OS X)\\b/, '$1')\r\n .replace(/\\/(\\d)/, ' $1')\r\n .replace(/_/g, '.')\r\n .replace(/(?: BePC|[ .]*fc[ \\d.]+)$/i, '')\r\n .replace(/\\bx86\\.64\\b/gi, 'x86_64')\r\n .replace(/\\b(Windows Phone) OS\\b/, '$1')\r\n .replace(/\\b(Chrome OS \\w+) [\\d.]+\\b/, '$1')\r\n .split(' on ')[0]\r\n );\r\n\r\n return os;\r\n }\r\n\r\n /**\r\n * An iteration utility for arrays and objects.\r\n *\r\n * @private\r\n * @param {Array|Object} object The object to iterate over.\r\n * @param {Function} callback The function called per iteration.\r\n */\r\n function each(object, callback) {\r\n var index = -1,\r\n length = object ? object.length : 0;\r\n\r\n if (typeof length == 'number' && length > -1 && length <= maxSafeInteger) {\r\n while (++index < length) {\r\n callback(object[index], index, object);\r\n }\r\n } else {\r\n forOwn(object, callback);\r\n }\r\n }\r\n\r\n /**\r\n * Trim and conditionally capitalize string values.\r\n *\r\n * @private\r\n * @param {string} string The string to format.\r\n * @returns {string} The formatted string.\r\n */\r\n function format(string) {\r\n string = trim(string);\r\n return /^(?:webOS|i(?:OS|P))/.test(string)\r\n ? string\r\n : capitalize(string);\r\n }\r\n\r\n /**\r\n * Iterates over an object's own properties, executing the `callback` for each.\r\n *\r\n * @private\r\n * @param {Object} object The object to iterate over.\r\n * @param {Function} callback The function executed per own property.\r\n */\r\n function forOwn(object, callback) {\r\n for (var key in object) {\r\n if (hasOwnProperty.call(object, key)) {\r\n callback(object[key], key, object);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Gets the internal `[[Class]]` of a value.\r\n *\r\n * @private\r\n * @param {*} value The value.\r\n * @returns {string} The `[[Class]]`.\r\n */\r\n function getClassOf(value) {\r\n return value == null\r\n ? capitalize(value)\r\n : toString.call(value).slice(8, -1);\r\n }\r\n\r\n /**\r\n * Host objects can return type values that are different from their actual\r\n * data type. The objects we are concerned with usually return non-primitive\r\n * types of \"object\", \"function\", or \"unknown\".\r\n *\r\n * @private\r\n * @param {*} object The owner of the property.\r\n * @param {string} property The property to check.\r\n * @returns {boolean} Returns `true` if the property value is a non-primitive, else `false`.\r\n */\r\n function isHostType(object, property) {\r\n var type = object != null ? typeof object[property] : 'number';\r\n return !/^(?:boolean|number|string|undefined)$/.test(type) &&\r\n (type == 'object' ? !!object[property] : true);\r\n }\r\n\r\n /**\r\n * Prepares a string for use in a `RegExp` by making hyphens and spaces optional.\r\n *\r\n * @private\r\n * @param {string} string The string to qualify.\r\n * @returns {string} The qualified string.\r\n */\r\n function qualify(string) {\r\n return String(string).replace(/([ -])(?!$)/g, '$1?');\r\n }\r\n\r\n /**\r\n * A bare-bones `Array#reduce` like utility function.\r\n *\r\n * @private\r\n * @param {Array} array The array to iterate over.\r\n * @param {Function} callback The function called per iteration.\r\n * @returns {*} The accumulated result.\r\n */\r\n function reduce(array, callback) {\r\n var accumulator = null;\r\n each(array, function(value, index) {\r\n accumulator = callback(accumulator, value, index, array);\r\n });\r\n return accumulator;\r\n }\r\n\r\n /**\r\n * Removes leading and trailing whitespace from a string.\r\n *\r\n * @private\r\n * @param {string} string The string to trim.\r\n * @returns {string} The trimmed string.\r\n */\r\n function trim(string) {\r\n return String(string).replace(/^ +| +$/g, '');\r\n }\r\n\r\n /*--------------------------------------------------------------------------*/\r\n\r\n /**\r\n * Creates a new platform object.\r\n *\r\n * @memberOf platform\r\n * @param {Object|string} [ua=navigator.userAgent] The user agent string or\r\n * context object.\r\n * @returns {Object} A platform object.\r\n */\r\n function parse(ua) {\r\n\r\n /** The environment context object. */\r\n var context = root;\r\n\r\n /** Used to flag when a custom context is provided. */\r\n var isCustomContext = ua && typeof ua == 'object' && getClassOf(ua) != 'String';\r\n\r\n // Juggle arguments.\r\n if (isCustomContext) {\r\n context = ua;\r\n ua = null;\r\n }\r\n\r\n /** Browser navigator object. */\r\n var nav = context.navigator || {};\r\n\r\n /** Browser user agent string. */\r\n var userAgent = nav.userAgent || '';\r\n\r\n ua || (ua = userAgent);\r\n\r\n /** Used to flag when `thisBinding` is the [ModuleScope]. */\r\n var isModuleScope = isCustomContext || thisBinding == oldRoot;\r\n\r\n /** Used to detect if browser is like Chrome. */\r\n var likeChrome = isCustomContext\r\n ? !!nav.likeChrome\r\n : /\\bChrome\\b/.test(ua) && !/internal|\\n/i.test(toString.toString());\r\n\r\n /** Internal `[[Class]]` value shortcuts. */\r\n var objectClass = 'Object',\r\n airRuntimeClass = isCustomContext ? objectClass : 'ScriptBridgingProxyObject',\r\n enviroClass = isCustomContext ? objectClass : 'Environment',\r\n javaClass = (isCustomContext && context.java) ? 'JavaPackage' : getClassOf(context.java),\r\n phantomClass = isCustomContext ? objectClass : 'RuntimeObject';\r\n\r\n /** Detect Java environments. */\r\n var java = /\\bJava/.test(javaClass) && context.java;\r\n\r\n /** Detect Rhino. */\r\n var rhino = java && getClassOf(context.environment) == enviroClass;\r\n\r\n /** A character to represent alpha. */\r\n var alpha = java ? 'a' : '\\u03b1';\r\n\r\n /** A character to represent beta. */\r\n var beta = java ? 'b' : '\\u03b2';\r\n\r\n /** Browser document object. */\r\n var doc = context.document || {};\r\n\r\n /**\r\n * Detect Opera browser (Presto-based).\r\n * http://www.howtocreate.co.uk/operaStuff/operaObject.html\r\n * http://dev.opera.com/articles/view/opera-mini-web-content-authoring-guidelines/#operamini\r\n */\r\n var opera = context.operamini || context.opera;\r\n\r\n /** Opera `[[Class]]`. */\r\n var operaClass = reOpera.test(operaClass = (isCustomContext && opera) ? opera['[[Class]]'] : getClassOf(opera))\r\n ? operaClass\r\n : (opera = null);\r\n\r\n /*------------------------------------------------------------------------*/\r\n\r\n /** Temporary variable used over the script's lifetime. */\r\n var data;\r\n\r\n /** The CPU architecture. */\r\n var arch = ua;\r\n\r\n /** Platform description array. */\r\n var description = [];\r\n\r\n /** Platform alpha/beta indicator. */\r\n var prerelease = null;\r\n\r\n /** A flag to indicate that environment features should be used to resolve the platform. */\r\n var useFeatures = ua == userAgent;\r\n\r\n /** The browser/environment version. */\r\n var version = useFeatures && opera && typeof opera.version == 'function' && opera.version();\r\n\r\n /** A flag to indicate if the OS ends with \"/ Version\" */\r\n var isSpecialCasedOS;\r\n\r\n /* Detectable layout engines (order is important). */\r\n var layout = getLayout([\r\n { 'label': 'EdgeHTML', 'pattern': 'Edge' },\r\n 'Trident',\r\n { 'label': 'WebKit', 'pattern': 'AppleWebKit' },\r\n 'iCab',\r\n 'Presto',\r\n 'NetFront',\r\n 'Tasman',\r\n 'KHTML',\r\n 'Gecko'\r\n ]);\r\n\r\n /* Detectable browser names (order is important). */\r\n var name = getName([\r\n 'Adobe AIR',\r\n 'Arora',\r\n 'Avant Browser',\r\n 'Breach',\r\n 'Camino',\r\n 'Epiphany',\r\n 'Fennec',\r\n 'Flock',\r\n 'Galeon',\r\n 'GreenBrowser',\r\n 'iCab',\r\n 'Iceweasel',\r\n 'K-Meleon',\r\n 'Konqueror',\r\n 'Lunascape',\r\n 'Maxthon',\r\n { 'label': 'Microsoft Edge', 'pattern': 'Edge' },\r\n 'Midori',\r\n 'Nook Browser',\r\n 'PaleMoon',\r\n 'PhantomJS',\r\n 'Raven',\r\n 'Rekonq',\r\n 'RockMelt',\r\n 'SeaMonkey',\r\n { 'label': 'Silk', 'pattern': '(?:Cloud9|Silk-Accelerated)' },\r\n 'Sleipnir',\r\n 'SlimBrowser',\r\n { 'label': 'SRWare Iron', 'pattern': 'Iron' },\r\n 'Sunrise',\r\n 'Swiftfox',\r\n 'WebPositive',\r\n 'Opera Mini',\r\n { 'label': 'Opera Mini', 'pattern': 'OPiOS' },\r\n 'Opera',\r\n { 'label': 'Opera', 'pattern': 'OPR' },\r\n 'Chrome',\r\n { 'label': 'Chrome Mobile', 'pattern': '(?:CriOS|CrMo)' },\r\n { 'label': 'Firefox', 'pattern': '(?:Firefox|Minefield)' },\r\n { 'label': 'Firefox for iOS', 'pattern': 'FxiOS' },\r\n { 'label': 'IE', 'pattern': 'IEMobile' },\r\n { 'label': 'IE', 'pattern': 'MSIE' },\r\n 'Safari'\r\n ]);\r\n\r\n /* Detectable products (order is important). */\r\n var product = getProduct([\r\n { 'label': 'BlackBerry', 'pattern': 'BB10' },\r\n 'BlackBerry',\r\n { 'label': 'Galaxy S', 'pattern': 'GT-I9000' },\r\n { 'label': 'Galaxy S2', 'pattern': 'GT-I9100' },\r\n { 'label': 'Galaxy S3', 'pattern': 'GT-I9300' },\r\n { 'label': 'Galaxy S4', 'pattern': 'GT-I9500' },\r\n 'Google TV',\r\n 'Lumia',\r\n 'iPad',\r\n 'iPod',\r\n 'iPhone',\r\n 'Kindle',\r\n { 'label': 'Kindle Fire', 'pattern': '(?:Cloud9|Silk-Accelerated)' },\r\n 'Nexus',\r\n 'Nook',\r\n 'PlayBook',\r\n 'PlayStation 3',\r\n 'PlayStation 4',\r\n 'PlayStation Vita',\r\n 'TouchPad',\r\n 'Transformer',\r\n { 'label': 'Wii U', 'pattern': 'WiiU' },\r\n 'Wii',\r\n 'Xbox One',\r\n { 'label': 'Xbox 360', 'pattern': 'Xbox' },\r\n 'Xoom'\r\n ]);\r\n\r\n /* Detectable manufacturers. */\r\n var manufacturer = getManufacturer({\r\n 'Apple': { 'iPad': 1, 'iPhone': 1, 'iPod': 1 },\r\n 'Archos': {},\r\n 'Amazon': { 'Kindle': 1, 'Kindle Fire': 1 },\r\n 'Asus': { 'Transformer': 1 },\r\n 'Barnes & Noble': { 'Nook': 1 },\r\n 'BlackBerry': { 'PlayBook': 1 },\r\n 'Google': { 'Google TV': 1, 'Nexus': 1 },\r\n 'HP': { 'TouchPad': 1 },\r\n 'HTC': {},\r\n 'LG': {},\r\n 'Microsoft': { 'Xbox': 1, 'Xbox One': 1 },\r\n 'Motorola': { 'Xoom': 1 },\r\n 'Nintendo': { 'Wii U': 1, 'Wii': 1 },\r\n 'Nokia': { 'Lumia': 1 },\r\n 'Samsung': { 'Galaxy S': 1, 'Galaxy S2': 1, 'Galaxy S3': 1, 'Galaxy S4': 1 },\r\n 'Sony': { 'PlayStation 4': 1, 'PlayStation 3': 1, 'PlayStation Vita': 1 }\r\n });\r\n\r\n /* Detectable operating systems (order is important). */\r\n var os = getOS([\r\n 'Windows Phone',\r\n 'Android',\r\n 'CentOS',\r\n { 'label': 'Chrome OS', 'pattern': 'CrOS' },\r\n 'Debian',\r\n 'Fedora',\r\n 'FreeBSD',\r\n 'Gentoo',\r\n 'Haiku',\r\n 'Kubuntu',\r\n 'Linux Mint',\r\n 'OpenBSD',\r\n 'Red Hat',\r\n 'SuSE',\r\n 'Ubuntu',\r\n 'Xubuntu',\r\n 'Cygwin',\r\n 'Symbian OS',\r\n 'hpwOS',\r\n 'webOS ',\r\n 'webOS',\r\n 'Tablet OS',\r\n 'Linux',\r\n 'Mac OS X',\r\n 'Macintosh',\r\n 'Mac',\r\n 'Windows 98;',\r\n 'Windows '\r\n ]);\r\n\r\n /*------------------------------------------------------------------------*/\r\n\r\n /**\r\n * Picks the layout engine from an array of guesses.\r\n *\r\n * @private\r\n * @param {Array} guesses An array of guesses.\r\n * @returns {null|string} The detected layout engine.\r\n */\r\n function getLayout(guesses) {\r\n return reduce(guesses, function(result, guess) {\r\n return result || RegExp('\\\\b' + (\r\n guess.pattern || qualify(guess)\r\n ) + '\\\\b', 'i').exec(ua) && (guess.label || guess);\r\n });\r\n }\r\n\r\n /**\r\n * Picks the manufacturer from an array of guesses.\r\n *\r\n * @private\r\n * @param {Array} guesses An object of guesses.\r\n * @returns {null|string} The detected manufacturer.\r\n */\r\n function getManufacturer(guesses) {\r\n return reduce(guesses, function(result, value, key) {\r\n // Lookup the manufacturer by product or scan the UA for the manufacturer.\r\n return result || (\r\n value[product] ||\r\n value[/^[a-z]+(?: +[a-z]+\\b)*/i.exec(product)] ||\r\n RegExp('\\\\b' + qualify(key) + '(?:\\\\b|\\\\w*\\\\d)', 'i').exec(ua)\r\n ) && key;\r\n });\r\n }\r\n\r\n /**\r\n * Picks the browser name from an array of guesses.\r\n *\r\n * @private\r\n * @param {Array} guesses An array of guesses.\r\n * @returns {null|string} The detected browser name.\r\n */\r\n function getName(guesses) {\r\n return reduce(guesses, function(result, guess) {\r\n return result || RegExp('\\\\b' + (\r\n guess.pattern || qualify(guess)\r\n ) + '\\\\b', 'i').exec(ua) && (guess.label || guess);\r\n });\r\n }\r\n\r\n /**\r\n * Picks the OS name from an array of guesses.\r\n *\r\n * @private\r\n * @param {Array} guesses An array of guesses.\r\n * @returns {null|string} The detected OS name.\r\n */\r\n function getOS(guesses) {\r\n return reduce(guesses, function(result, guess) {\r\n var pattern = guess.pattern || qualify(guess);\r\n if (!result && (result =\r\n RegExp('\\\\b' + pattern + '(?:/[\\\\d.]+|[ \\\\w.]*)', 'i').exec(ua)\r\n )) {\r\n result = cleanupOS(result, pattern, guess.label || guess);\r\n }\r\n return result;\r\n });\r\n }\r\n\r\n /**\r\n * Picks the product name from an array of guesses.\r\n *\r\n * @private\r\n * @param {Array} guesses An array of guesses.\r\n * @returns {null|string} The detected product name.\r\n */\r\n function getProduct(guesses) {\r\n return reduce(guesses, function(result, guess) {\r\n var pattern = guess.pattern || qualify(guess);\r\n if (!result && (result =\r\n RegExp('\\\\b' + pattern + ' *\\\\d+[.\\\\w_]*', 'i').exec(ua) ||\r\n RegExp('\\\\b' + pattern + '(?:; *(?:[a-z]+[_-])?[a-z]+\\\\d+|[^ ();-]*)', 'i').exec(ua)\r\n )) {\r\n // Split by forward slash and append product version if needed.\r\n if ((result = String((guess.label && !RegExp(pattern, 'i').test(guess.label)) ? guess.label : result).split('/'))[1] && !/[\\d.]+/.test(result[0])) {\r\n result[0] += ' ' + result[1];\r\n }\r\n // Correct character case and cleanup string.\r\n guess = guess.label || guess;\r\n result = format(result[0]\r\n .replace(RegExp(pattern, 'i'), guess)\r\n .replace(RegExp('; *(?:' + guess + '[_-])?', 'i'), ' ')\r\n .replace(RegExp('(' + guess + ')[-_.]?(\\\\w)', 'i'), '$1 $2'));\r\n }\r\n return result;\r\n });\r\n }\r\n\r\n /**\r\n * Resolves the version using an array of UA patterns.\r\n *\r\n * @private\r\n * @param {Array} patterns An array of UA patterns.\r\n * @returns {null|string} The detected version.\r\n */\r\n function getVersion(patterns) {\r\n return reduce(patterns, function(result, pattern) {\r\n return result || (RegExp(pattern +\r\n '(?:-[\\\\d.]+/|(?: for [\\\\w-]+)?[ /-])([\\\\d.]+[^ ();/_-]*)', 'i').exec(ua) || 0)[1] || null;\r\n });\r\n }\r\n\r\n /**\r\n * Returns `platform.description` when the platform object is coerced to a string.\r\n *\r\n * @name toString\r\n * @memberOf platform\r\n * @returns {string} Returns `platform.description` if available, else an empty string.\r\n */\r\n function toStringPlatform() {\r\n return this.description || '';\r\n }\r\n\r\n /*------------------------------------------------------------------------*/\r\n\r\n // Convert layout to an array so we can add extra details.\r\n layout && (layout = [layout]);\r\n\r\n // Detect product names that contain their manufacturer's name.\r\n if (manufacturer && !product) {\r\n product = getProduct([manufacturer]);\r\n }\r\n // Clean up Google TV.\r\n if ((data = /\\bGoogle TV\\b/.exec(product))) {\r\n product = data[0];\r\n }\r\n // Detect simulators.\r\n if (/\\bSimulator\\b/i.test(ua)) {\r\n product = (product ? product + ' ' : '') + 'Simulator';\r\n }\r\n // Detect Opera Mini 8+ running in Turbo/Uncompressed mode on iOS.\r\n if (name == 'Opera Mini' && /\\bOPiOS\\b/.test(ua)) {\r\n description.push('running in Turbo/Uncompressed mode');\r\n }\r\n // Detect IE Mobile 11.\r\n if (name == 'IE' && /\\blike iPhone OS\\b/.test(ua)) {\r\n data = parse(ua.replace(/like iPhone OS/, ''));\r\n manufacturer = data.manufacturer;\r\n product = data.product;\r\n }\r\n // Detect iOS.\r\n else if (/^iP/.test(product)) {\r\n name || (name = 'Safari');\r\n os = 'iOS' + ((data = / OS ([\\d_]+)/i.exec(ua))\r\n ? ' ' + data[1].replace(/_/g, '.')\r\n : '');\r\n }\r\n // Detect Kubuntu.\r\n else if (name == 'Konqueror' && !/buntu/i.test(os)) {\r\n os = 'Kubuntu';\r\n }\r\n // Detect Android browsers.\r\n else if ((manufacturer && manufacturer != 'Google' &&\r\n ((/Chrome/.test(name) && !/\\bMobile Safari\\b/i.test(ua)) || /\\bVita\\b/.test(product))) ||\r\n (/\\bAndroid\\b/.test(os) && /^Chrome/.test(name) && /\\bVersion\\//i.test(ua))) {\r\n name = 'Android Browser';\r\n os = /\\bAndroid\\b/.test(os) ? os : 'Android';\r\n }\r\n // Detect Silk desktop/accelerated modes.\r\n else if (name == 'Silk') {\r\n if (!/\\bMobi/i.test(ua)) {\r\n os = 'Android';\r\n description.unshift('desktop mode');\r\n }\r\n if (/Accelerated *= *true/i.test(ua)) {\r\n description.unshift('accelerated');\r\n }\r\n }\r\n // Detect PaleMoon identifying as Firefox.\r\n else if (name == 'PaleMoon' && (data = /\\bFirefox\\/([\\d.]+)\\b/.exec(ua))) {\r\n description.push('identifying as Firefox ' + data[1]);\r\n }\r\n // Detect Firefox OS and products running Firefox.\r\n else if (name == 'Firefox' && (data = /\\b(Mobile|Tablet|TV)\\b/i.exec(ua))) {\r\n os || (os = 'Firefox OS');\r\n product || (product = data[1]);\r\n }\r\n // Detect false positives for Firefox/Safari.\r\n else if (!name || (data = !/\\bMinefield\\b/i.test(ua) && /\\b(?:Firefox|Safari)\\b/.exec(name))) {\r\n // Escape the `/` for Firefox 1.\r\n if (name && !product && /[\\/,]|^[^(]+?\\)/.test(ua.slice(ua.indexOf(data + '/') + 8))) {\r\n // Clear name of false positives.\r\n name = null;\r\n }\r\n // Reassign a generic name.\r\n if ((data = product || manufacturer || os) &&\r\n (product || manufacturer || /\\b(?:Android|Symbian OS|Tablet OS|webOS)\\b/.test(os))) {\r\n name = /[a-z]+(?: Hat)?/i.exec(/\\bAndroid\\b/.test(os) ? os : data) + ' Browser';\r\n }\r\n }\r\n // Detect non-Opera (Presto-based) versions (order is important).\r\n if (!version) {\r\n version = getVersion([\r\n '(?:Cloud9|CriOS|CrMo|Edge|FxiOS|IEMobile|Iron|Opera ?Mini|OPiOS|OPR|Raven|Silk(?!/[\\\\d.]+$))',\r\n 'Version',\r\n qualify(name),\r\n '(?:Firefox|Minefield|NetFront)'\r\n ]);\r\n }\r\n // Detect stubborn layout engines.\r\n if ((data =\r\n layout == 'iCab' && parseFloat(version) > 3 && 'WebKit' ||\r\n /\\bOpera\\b/.test(name) && (/\\bOPR\\b/.test(ua) ? 'Blink' : 'Presto') ||\r\n /\\b(?:Midori|Nook|Safari)\\b/i.test(ua) && !/^(?:Trident|EdgeHTML)$/.test(layout) && 'WebKit' ||\r\n !layout && /\\bMSIE\\b/i.test(ua) && (os == 'Mac OS' ? 'Tasman' : 'Trident') ||\r\n layout == 'WebKit' && /\\bPlayStation\\b(?! Vita\\b)/i.test(name) && 'NetFront'\r\n )) {\r\n layout = [data];\r\n }\r\n // Detect Windows Phone 7 desktop mode.\r\n if (name == 'IE' && (data = (/; *(?:XBLWP|ZuneWP)(\\d+)/i.exec(ua) || 0)[1])) {\r\n name += ' Mobile';\r\n os = 'Windows Phone ' + (/\\+$/.test(data) ? data : data + '.x');\r\n description.unshift('desktop mode');\r\n }\r\n // Detect Windows Phone 8.x desktop mode.\r\n else if (/\\bWPDesktop\\b/i.test(ua)) {\r\n name = 'IE Mobile';\r\n os = 'Windows Phone 8.x';\r\n description.unshift('desktop mode');\r\n version || (version = (/\\brv:([\\d.]+)/.exec(ua) || 0)[1]);\r\n }\r\n // Detect IE 11.\r\n else if (name != 'IE' && layout == 'Trident' && (data = /\\brv:([\\d.]+)/.exec(ua))) {\r\n if (name) {\r\n description.push('identifying as ' + name + (version ? ' ' + version : ''));\r\n }\r\n name = 'IE';\r\n version = data[1];\r\n }\r\n // Leverage environment features.\r\n if (useFeatures) {\r\n // Detect server-side environments.\r\n // Rhino has a global function while others have a global object.\r\n if (isHostType(context, 'global')) {\r\n if (java) {\r\n data = java.lang.System;\r\n arch = data.getProperty('os.arch');\r\n os = os || data.getProperty('os.name') + ' ' + data.getProperty('os.version');\r\n }\r\n if (isModuleScope && isHostType(context, 'system') && (data = [context.system])[0]) {\r\n os || (os = data[0].os || null);\r\n try {\r\n data[1] = context.require('ringo/engine').version;\r\n version = data[1].join('.');\r\n name = 'RingoJS';\r\n } catch(e) {\r\n if (data[0].global.system == context.system) {\r\n name = 'Narwhal';\r\n }\r\n }\r\n }\r\n else if (\r\n typeof context.process == 'object' && !context.process.browser &&\r\n (data = context.process)\r\n ) {\r\n name = 'Node.js';\r\n arch = data.arch;\r\n os = data.platform;\r\n version = /[\\d.]+/.exec(data.version)[0];\r\n }\r\n else if (rhino) {\r\n name = 'Rhino';\r\n }\r\n }\r\n // Detect Adobe AIR.\r\n else if (getClassOf((data = context.runtime)) == airRuntimeClass) {\r\n name = 'Adobe AIR';\r\n os = data.flash.system.Capabilities.os;\r\n }\r\n // Detect PhantomJS.\r\n else if (getClassOf((data = context.phantom)) == phantomClass) {\r\n name = 'PhantomJS';\r\n version = (data = data.version || null) && (data.major + '.' + data.minor + '.' + data.patch);\r\n }\r\n // Detect IE compatibility modes.\r\n else if (typeof doc.documentMode == 'number' && (data = /\\bTrident\\/(\\d+)/i.exec(ua))) {\r\n // We're in compatibility mode when the Trident version + 4 doesn't\r\n // equal the document mode.\r\n version = [version, doc.documentMode];\r\n if ((data = +data[1] + 4) != version[1]) {\r\n description.push('IE ' + version[1] + ' mode');\r\n layout && (layout[1] = '');\r\n version[1] = data;\r\n }\r\n version = name == 'IE' ? String(version[1].toFixed(1)) : version[0];\r\n }\r\n os = os && format(os);\r\n }\r\n // Detect prerelease phases.\r\n if (version && (data =\r\n /(?:[ab]|dp|pre|[ab]\\d+pre)(?:\\d+\\+?)?$/i.exec(version) ||\r\n /(?:alpha|beta)(?: ?\\d)?/i.exec(ua + ';' + (useFeatures && nav.appMinorVersion)) ||\r\n /\\bMinefield\\b/i.test(ua) && 'a'\r\n )) {\r\n prerelease = /b/i.test(data) ? 'beta' : 'alpha';\r\n version = version.replace(RegExp(data + '\\\\+?$'), '') +\r\n (prerelease == 'beta' ? beta : alpha) + (/\\d+\\+?/.exec(data) || '');\r\n }\r\n // Detect Firefox Mobile.\r\n if (name == 'Fennec' || name == 'Firefox' && /\\b(?:Android|Firefox OS)\\b/.test(os)) {\r\n name = 'Firefox Mobile';\r\n }\r\n // Obscure Maxthon's unreliable version.\r\n else if (name == 'Maxthon' && version) {\r\n version = version.replace(/\\.[\\d.]+/, '.x');\r\n }\r\n // Detect Xbox 360 and Xbox One.\r\n else if (/\\bXbox\\b/i.test(product)) {\r\n os = null;\r\n if (product == 'Xbox 360' && /\\bIEMobile\\b/.test(ua)) {\r\n description.unshift('mobile mode');\r\n }\r\n }\r\n // Add mobile postfix.\r\n else if ((/^(?:Chrome|IE|Opera)$/.test(name) || name && !product && !/Browser|Mobi/.test(name)) &&\r\n (os == 'Windows CE' || /Mobi/i.test(ua))) {\r\n name += ' Mobile';\r\n }\r\n // Detect IE platform preview.\r\n else if (name == 'IE' && useFeatures && context.external === null) {\r\n description.unshift('platform preview');\r\n }\r\n // Detect BlackBerry OS version.\r\n // http://docs.blackberry.com/en/developers/deliverables/18169/HTTP_headers_sent_by_BB_Browser_1234911_11.jsp\r\n else if ((/\\bBlackBerry\\b/.test(product) || /\\bBB10\\b/.test(ua)) && (data =\r\n (RegExp(product.replace(/ +/g, ' *') + '/([.\\\\d]+)', 'i').exec(ua) || 0)[1] ||\r\n version\r\n )) {\r\n data = [data, /BB10/.test(ua)];\r\n os = (data[1] ? (product = null, manufacturer = 'BlackBerry') : 'Device Software') + ' ' + data[0];\r\n version = null;\r\n }\r\n // Detect Opera identifying/masking itself as another browser.\r\n // http://www.opera.com/support/kb/view/843/\r\n else if (this != forOwn && product != 'Wii' && (\r\n (useFeatures && opera) ||\r\n (/Opera/.test(name) && /\\b(?:MSIE|Firefox)\\b/i.test(ua)) ||\r\n (name == 'Firefox' && /\\bOS X (?:\\d+\\.){2,}/.test(os)) ||\r\n (name == 'IE' && (\r\n (os && !/^Win/.test(os) && version > 5.5) ||\r\n /\\bWindows XP\\b/.test(os) && version > 8 ||\r\n version == 8 && !/\\bTrident\\b/.test(ua)\r\n ))\r\n ) && !reOpera.test((data = parse.call(forOwn, ua.replace(reOpera, '') + ';'))) && data.name) {\r\n // When \"identifying\", the UA contains both Opera and the other browser's name.\r\n data = 'ing as ' + data.name + ((data = data.version) ? ' ' + data : '');\r\n if (reOpera.test(name)) {\r\n if (/\\bIE\\b/.test(data) && os == 'Mac OS') {\r\n os = null;\r\n }\r\n data = 'identify' + data;\r\n }\r\n // When \"masking\", the UA contains only the other browser's name.\r\n else {\r\n data = 'mask' + data;\r\n if (operaClass) {\r\n name = format(operaClass.replace(/([a-z])([A-Z])/g, '$1 $2'));\r\n } else {\r\n name = 'Opera';\r\n }\r\n if (/\\bIE\\b/.test(data)) {\r\n os = null;\r\n }\r\n if (!useFeatures) {\r\n version = null;\r\n }\r\n }\r\n layout = ['Presto'];\r\n description.push(data);\r\n }\r\n // Detect WebKit Nightly and approximate Chrome/Safari versions.\r\n if ((data = (/\\bAppleWebKit\\/([\\d.]+\\+?)/i.exec(ua) || 0)[1])) {\r\n // Correct build number for numeric comparison.\r\n // (e.g. \"532.5\" becomes \"532.05\")\r\n data = [parseFloat(data.replace(/\\.(\\d)$/, '.0$1')), data];\r\n // Nightly builds are postfixed with a \"+\".\r\n if (name == 'Safari' && data[1].slice(-1) == '+') {\r\n name = 'WebKit Nightly';\r\n prerelease = 'alpha';\r\n version = data[1].slice(0, -1);\r\n }\r\n // Clear incorrect browser versions.\r\n else if (version == data[1] ||\r\n version == (data[2] = (/\\bSafari\\/([\\d.]+\\+?)/i.exec(ua) || 0)[1])) {\r\n version = null;\r\n }\r\n // Use the full Chrome version when available.\r\n data[1] = (/\\bChrome\\/([\\d.]+)/i.exec(ua) || 0)[1];\r\n // Detect Blink layout engine.\r\n if (data[0] == 537.36 && data[2] == 537.36 && parseFloat(data[1]) >= 28 && layout == 'WebKit') {\r\n layout = ['Blink'];\r\n }\r\n // Detect JavaScriptCore.\r\n // http://stackoverflow.com/questions/6768474/how-can-i-detect-which-javascript-engine-v8-or-jsc-is-used-at-runtime-in-androi\r\n if (!useFeatures || (!likeChrome && !data[1])) {\r\n layout && (layout[1] = 'like Safari');\r\n data = (data = data[0], data < 400 ? 1 : data < 500 ? 2 : data < 526 ? 3 : data < 533 ? 4 : data < 534 ? '4+' : data < 535 ? 5 : data < 537 ? 6 : data < 538 ? 7 : data < 601 ? 8 : '8');\r\n } else {\r\n layout && (layout[1] = 'like Chrome');\r\n data = data[1] || (data = data[0], data < 530 ? 1 : data < 532 ? 2 : data < 532.05 ? 3 : data < 533 ? 4 : data < 534.03 ? 5 : data < 534.07 ? 6 : data < 534.10 ? 7 : data < 534.13 ? 8 : data < 534.16 ? 9 : data < 534.24 ? 10 : data < 534.30 ? 11 : data < 535.01 ? 12 : data < 535.02 ? '13+' : data < 535.07 ? 15 : data < 535.11 ? 16 : data < 535.19 ? 17 : data < 536.05 ? 18 : data < 536.10 ? 19 : data < 537.01 ? 20 : data < 537.11 ? '21+' : data < 537.13 ? 23 : data < 537.18 ? 24 : data < 537.24 ? 25 : data < 537.36 ? 26 : layout != 'Blink' ? '27' : '28');\r\n }\r\n // Add the postfix of \".x\" or \"+\" for approximate versions.\r\n layout && (layout[1] += ' ' + (data += typeof data == 'number' ? '.x' : /[.+]/.test(data) ? '' : '+'));\r\n // Obscure version for some Safari 1-2 releases.\r\n if (name == 'Safari' && (!version || parseInt(version) > 45)) {\r\n version = data;\r\n }\r\n }\r\n // Detect Opera desktop modes.\r\n if (name == 'Opera' && (data = /\\bzbov|zvav$/.exec(os))) {\r\n name += ' ';\r\n description.unshift('desktop mode');\r\n if (data == 'zvav') {\r\n name += 'Mini';\r\n version = null;\r\n } else {\r\n name += 'Mobile';\r\n }\r\n os = os.replace(RegExp(' *' + data + '$'), '');\r\n }\r\n // Detect Chrome desktop mode.\r\n else if (name == 'Safari' && /\\bChrome\\b/.exec(layout && layout[1])) {\r\n description.unshift('desktop mode');\r\n name = 'Chrome Mobile';\r\n version = null;\r\n\r\n if (/\\bOS X\\b/.test(os)) {\r\n manufacturer = 'Apple';\r\n os = 'iOS 4.3+';\r\n } else {\r\n os = null;\r\n }\r\n }\r\n // Strip incorrect OS versions.\r\n if (version && version.indexOf((data = /[\\d.]+$/.exec(os))) == 0 &&\r\n ua.indexOf('/' + data + '-') > -1) {\r\n os = trim(os.replace(data, ''));\r\n }\r\n // Add layout engine.\r\n if (layout && !/\\b(?:Avant|Nook)\\b/.test(name) && (\r\n /Browser|Lunascape|Maxthon/.test(name) ||\r\n name != 'Safari' && /^iOS/.test(os) && /\\bSafari\\b/.test(layout[1]) ||\r\n /^(?:Adobe|Arora|Breach|Midori|Opera|Phantom|Rekonq|Rock|Sleipnir|Web)/.test(name) && layout[1])) {\r\n // Don't add layout details to description if they are falsey.\r\n (data = layout[layout.length - 1]) && description.push(data);\r\n }\r\n // Combine contextual information.\r\n if (description.length) {\r\n description = ['(' + description.join('; ') + ')'];\r\n }\r\n // Append manufacturer to description.\r\n if (manufacturer && product && product.indexOf(manufacturer) < 0) {\r\n description.push('on ' + manufacturer);\r\n }\r\n // Append product to description.\r\n if (product) {\r\n description.push((/^on /.test(description[description.length - 1]) ? '' : 'on ') + product);\r\n }\r\n // Parse the OS into an object.\r\n if (os) {\r\n data = / ([\\d.+]+)$/.exec(os);\r\n isSpecialCasedOS = data && os.charAt(os.length - data[0].length - 1) == '/';\r\n os = {\r\n 'architecture': 32,\r\n 'family': (data && !isSpecialCasedOS) ? os.replace(data[0], '') : os,\r\n 'version': data ? data[1] : null,\r\n 'toString': function() {\r\n var version = this.version;\r\n return this.family + ((version && !isSpecialCasedOS) ? ' ' + version : '') + (this.architecture == 64 ? ' 64-bit' : '');\r\n }\r\n };\r\n }\r\n // Add browser/OS architecture.\r\n if ((data = /\\b(?:AMD|IA|Win|WOW|x86_|x)64\\b/i.exec(arch)) && !/\\bi686\\b/i.test(arch)) {\r\n if (os) {\r\n os.architecture = 64;\r\n os.family = os.family.replace(RegExp(' *' + data), '');\r\n }\r\n if (\r\n name && (/\\bWOW64\\b/i.test(ua) ||\r\n (useFeatures && /\\w(?:86|32)$/.test(nav.cpuClass || nav.platform) && !/\\bWin64; x64\\b/i.test(ua)))\r\n ) {\r\n description.unshift('32-bit');\r\n }\r\n }\r\n // Chrome 39 and above on OS X is always 64-bit.\r\n else if (\r\n os && /^OS X/.test(os.family) &&\r\n name == 'Chrome' && parseFloat(version) >= 39\r\n ) {\r\n os.architecture = 64;\r\n }\r\n\r\n ua || (ua = null);\r\n\r\n /*------------------------------------------------------------------------*/\r\n\r\n /**\r\n * The platform object.\r\n *\r\n * @name platform\r\n * @type Object\r\n */\r\n var platform = {};\r\n\r\n /**\r\n * The platform description.\r\n *\r\n * @memberOf platform\r\n * @type string|null\r\n */\r\n platform.description = ua;\r\n\r\n /**\r\n * The name of the browser's layout engine.\r\n *\r\n * @memberOf platform\r\n * @type string|null\r\n */\r\n platform.layout = layout && layout[0];\r\n\r\n /**\r\n * The name of the product's manufacturer.\r\n *\r\n * @memberOf platform\r\n * @type string|null\r\n */\r\n platform.manufacturer = manufacturer;\r\n\r\n /**\r\n * The name of the browser/environment.\r\n *\r\n * @memberOf platform\r\n * @type string|null\r\n */\r\n platform.name = name;\r\n\r\n /**\r\n * The alpha/beta release indicator.\r\n *\r\n * @memberOf platform\r\n * @type string|null\r\n */\r\n platform.prerelease = prerelease;\r\n\r\n /**\r\n * The name of the product hosting the browser.\r\n *\r\n * @memberOf platform\r\n * @type string|null\r\n */\r\n platform.product = product;\r\n\r\n /**\r\n * The browser's user agent string.\r\n *\r\n * @memberOf platform\r\n * @type string|null\r\n */\r\n platform.ua = ua;\r\n\r\n /**\r\n * The browser/environment version.\r\n *\r\n * @memberOf platform\r\n * @type string|null\r\n */\r\n platform.version = name && version;\r\n\r\n /**\r\n * The name of the operating system.\r\n *\r\n * @memberOf platform\r\n * @type Object\r\n */\r\n platform.os = os || {\r\n\r\n /**\r\n * The CPU architecture the OS is built for.\r\n *\r\n * @memberOf platform.os\r\n * @type number|null\r\n */\r\n 'architecture': null,\r\n\r\n /**\r\n * The family of the OS.\r\n *\r\n * Common values include:\r\n * \"Windows\", \"Windows Server 2008 R2 / 7\", \"Windows Server 2008 / Vista\",\r\n * \"Windows XP\", \"OS X\", \"Ubuntu\", \"Debian\", \"Fedora\", \"Red Hat\", \"SuSE\",\r\n * \"Android\", \"iOS\" and \"Windows Phone\"\r\n *\r\n * @memberOf platform.os\r\n * @type string|null\r\n */\r\n 'family': null,\r\n\r\n /**\r\n * The version of the OS.\r\n *\r\n * @memberOf platform.os\r\n * @type string|null\r\n */\r\n 'version': null,\r\n\r\n /**\r\n * Returns the OS string.\r\n *\r\n * @memberOf platform.os\r\n * @returns {string} The OS string.\r\n */\r\n 'toString': function() { return 'null'; }\r\n };\r\n\r\n platform.parse = parse;\r\n platform.toString = toStringPlatform;\r\n\r\n if (platform.version) {\r\n description.unshift(version);\r\n }\r\n if (platform.name) {\r\n description.unshift(name);\r\n }\r\n if (os && name && !(os == String(os).split(' ')[0] && (os == name.split(' ')[0] || product))) {\r\n description.push(product ? '(' + os + ')' : 'on ' + os);\r\n }\r\n if (description.length) {\r\n platform.description = description.join(' ');\r\n }\r\n return platform;\r\n }\r\n\r\n /*--------------------------------------------------------------------------*/\r\n\r\n // Export platform.\r\n var platform = parse();\r\n\r\n // Some AMD build optimizers, like r.js, check for condition patterns like the following:\r\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\r\n // Expose platform on the global object to prevent errors when platform is\r\n // loaded by a script tag in the presence of an AMD loader.\r\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\r\n root.platform = platform;\r\n\r\n // Define as an anonymous module so platform can be aliased through path mapping.\r\n define(function() {\r\n return platform;\r\n });\r\n }\r\n // Check for `exports` after `define` in case a build optimizer adds an `exports` object.\r\n else if (freeExports && freeModule) {\r\n // Export for CommonJS support.\r\n forOwn(platform, function(value, key) {\r\n freeExports[key] = value;\r\n });\r\n }\r\n else {\r\n // Export to the global object.\r\n root.platform = platform;\r\n }\r\n}.call(this));\r\n","/**\n * what-input - A global utility for tracking the current input method (mouse, keyboard or touch).\n * @version v5.2.10\n * @link https://github.com/ten1seven/what-input\n * @license MIT\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"whatInput\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"whatInput\"] = factory();\n\telse\n\t\troot[\"whatInput\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\n\tmodule.exports = function () {\n\t /*\n\t * bail out if there is no document or window\n\t * (i.e. in a node/non-DOM environment)\n\t *\n\t * Return a stubbed API instead\n\t */\n\t if (typeof document === 'undefined' || typeof window === 'undefined') {\n\t return {\n\t // always return \"initial\" because no interaction will ever be detected\n\t ask: function ask() {\n\t return 'initial';\n\t },\n\n\t // always return null\n\t element: function element() {\n\t return null;\n\t },\n\n\t // no-op\n\t ignoreKeys: function ignoreKeys() {},\n\n\t // no-op\n\t specificKeys: function specificKeys() {},\n\n\t // no-op\n\t registerOnChange: function registerOnChange() {},\n\n\t // no-op\n\t unRegisterOnChange: function unRegisterOnChange() {}\n\t };\n\t }\n\n\t /*\n\t * variables\n\t */\n\n\t // cache document.documentElement\n\t var docElem = document.documentElement;\n\n\t // currently focused dom element\n\t var currentElement = null;\n\n\t // last used input type\n\t var currentInput = 'initial';\n\n\t // last used input intent\n\t var currentIntent = currentInput;\n\n\t // UNIX timestamp of current event\n\t var currentTimestamp = Date.now();\n\n\t // check for a `data-whatpersist` attribute on either the `html` or `body` elements, defaults to `true`\n\t var shouldPersist = 'false';\n\n\t // form input types\n\t var formInputs = ['button', 'input', 'select', 'textarea'];\n\n\t // empty array for holding callback functions\n\t var functionList = [];\n\n\t // list of modifier keys commonly used with the mouse and\n\t // can be safely ignored to prevent false keyboard detection\n\t var ignoreMap = [16, // shift\n\t 17, // control\n\t 18, // alt\n\t 91, // Windows key / left Apple cmd\n\t 93 // Windows menu / right Apple cmd\n\t ];\n\n\t var specificMap = [];\n\n\t // mapping of events to input types\n\t var inputMap = {\n\t keydown: 'keyboard',\n\t keyup: 'keyboard',\n\t mousedown: 'mouse',\n\t mousemove: 'mouse',\n\t MSPointerDown: 'pointer',\n\t MSPointerMove: 'pointer',\n\t pointerdown: 'pointer',\n\t pointermove: 'pointer',\n\t touchstart: 'touch',\n\t touchend: 'touch'\n\n\t // boolean: true if the page is being scrolled\n\t };var isScrolling = false;\n\n\t // store current mouse position\n\t var mousePos = {\n\t x: null,\n\t y: null\n\n\t // map of IE 10 pointer events\n\t };var pointerMap = {\n\t 2: 'touch',\n\t 3: 'touch', // treat pen like touch\n\t 4: 'mouse'\n\n\t // check support for passive event listeners\n\t };var supportsPassive = false;\n\n\t try {\n\t var opts = Object.defineProperty({}, 'passive', {\n\t get: function get() {\n\t supportsPassive = true;\n\t }\n\t });\n\n\t window.addEventListener('test', null, opts);\n\t } catch (e) {}\n\t // fail silently\n\n\n\t /*\n\t * set up\n\t */\n\n\t var setUp = function setUp() {\n\t // add correct mouse wheel event mapping to `inputMap`\n\t inputMap[detectWheel()] = 'mouse';\n\n\t addListeners();\n\t };\n\n\t /*\n\t * events\n\t */\n\n\t var addListeners = function addListeners() {\n\t // `pointermove`, `MSPointerMove`, `mousemove` and mouse wheel event binding\n\t // can only demonstrate potential, but not actual, interaction\n\t // and are treated separately\n\t var options = supportsPassive ? { passive: true } : false;\n\n\t document.addEventListener('DOMContentLoaded', setPersist);\n\n\t // pointer events (mouse, pen, touch)\n\t if (window.PointerEvent) {\n\t window.addEventListener('pointerdown', setInput);\n\t window.addEventListener('pointermove', setIntent);\n\t } else if (window.MSPointerEvent) {\n\t window.addEventListener('MSPointerDown', setInput);\n\t window.addEventListener('MSPointerMove', setIntent);\n\t } else {\n\t // mouse events\n\t window.addEventListener('mousedown', setInput);\n\t window.addEventListener('mousemove', setIntent);\n\n\t // touch events\n\t if ('ontouchstart' in window) {\n\t window.addEventListener('touchstart', setInput, options);\n\t window.addEventListener('touchend', setInput);\n\t }\n\t }\n\n\t // mouse wheel\n\t window.addEventListener(detectWheel(), setIntent, options);\n\n\t // keyboard events\n\t window.addEventListener('keydown', setInput);\n\t window.addEventListener('keyup', setInput);\n\n\t // focus events\n\t window.addEventListener('focusin', setElement);\n\t window.addEventListener('focusout', clearElement);\n\t };\n\n\t // checks if input persistence should happen and\n\t // get saved state from session storage if true (defaults to `false`)\n\t var setPersist = function setPersist() {\n\t shouldPersist = !(docElem.getAttribute('data-whatpersist') || document.body.getAttribute('data-whatpersist') === 'false');\n\n\t if (shouldPersist) {\n\t // check for session variables and use if available\n\t try {\n\t if (window.sessionStorage.getItem('what-input')) {\n\t currentInput = window.sessionStorage.getItem('what-input');\n\t }\n\n\t if (window.sessionStorage.getItem('what-intent')) {\n\t currentIntent = window.sessionStorage.getItem('what-intent');\n\t }\n\t } catch (e) {\n\t // fail silently\n\t }\n\t }\n\n\t // always run these so at least `initial` state is set\n\t doUpdate('input');\n\t doUpdate('intent');\n\t };\n\n\t // checks conditions before updating new input\n\t var setInput = function setInput(event) {\n\t var eventKey = event.which;\n\t var value = inputMap[event.type];\n\n\t if (value === 'pointer') {\n\t value = pointerType(event);\n\t }\n\n\t var ignoreMatch = !specificMap.length && ignoreMap.indexOf(eventKey) === -1;\n\n\t var specificMatch = specificMap.length && specificMap.indexOf(eventKey) !== -1;\n\n\t var shouldUpdate = value === 'keyboard' && eventKey && (ignoreMatch || specificMatch) || value === 'mouse' || value === 'touch';\n\n\t // prevent touch detection from being overridden by event execution order\n\t if (validateTouch(value)) {\n\t shouldUpdate = false;\n\t }\n\n\t if (shouldUpdate && currentInput !== value) {\n\t currentInput = value;\n\n\t persistInput('input', currentInput);\n\t doUpdate('input');\n\t }\n\n\t if (shouldUpdate && currentIntent !== value) {\n\t // preserve intent for keyboard interaction with form fields\n\t var activeElem = document.activeElement;\n\t var notFormInput = activeElem && activeElem.nodeName && (formInputs.indexOf(activeElem.nodeName.toLowerCase()) === -1 || activeElem.nodeName.toLowerCase() === 'button' && !checkClosest(activeElem, 'form'));\n\n\t if (notFormInput) {\n\t currentIntent = value;\n\n\t persistInput('intent', currentIntent);\n\t doUpdate('intent');\n\t }\n\t }\n\t };\n\n\t // updates the doc and `inputTypes` array with new input\n\t var doUpdate = function doUpdate(which) {\n\t docElem.setAttribute('data-what' + which, which === 'input' ? currentInput : currentIntent);\n\n\t fireFunctions(which);\n\t };\n\n\t // updates input intent for `mousemove` and `pointermove`\n\t var setIntent = function setIntent(event) {\n\t var value = inputMap[event.type];\n\n\t if (value === 'pointer') {\n\t value = pointerType(event);\n\t }\n\n\t // test to see if `mousemove` happened relative to the screen to detect scrolling versus mousemove\n\t detectScrolling(event);\n\n\t // only execute if scrolling isn't happening\n\t if ((!isScrolling && !validateTouch(value) || isScrolling && event.type === 'wheel' || event.type === 'mousewheel' || event.type === 'DOMMouseScroll') && currentIntent !== value) {\n\t currentIntent = value;\n\n\t persistInput('intent', currentIntent);\n\t doUpdate('intent');\n\t }\n\t };\n\n\t var setElement = function setElement(event) {\n\t if (!event.target.nodeName) {\n\t // If nodeName is undefined, clear the element\n\t // This can happen if click inside an element.\n\t clearElement();\n\t return;\n\t }\n\n\t currentElement = event.target.nodeName.toLowerCase();\n\t docElem.setAttribute('data-whatelement', currentElement);\n\n\t if (event.target.classList && event.target.classList.length) {\n\t docElem.setAttribute('data-whatclasses', event.target.classList.toString().replace(' ', ','));\n\t }\n\t };\n\n\t var clearElement = function clearElement() {\n\t currentElement = null;\n\n\t docElem.removeAttribute('data-whatelement');\n\t docElem.removeAttribute('data-whatclasses');\n\t };\n\n\t var persistInput = function persistInput(which, value) {\n\t if (shouldPersist) {\n\t try {\n\t window.sessionStorage.setItem('what-' + which, value);\n\t } catch (e) {\n\t // fail silently\n\t }\n\t }\n\t };\n\n\t /*\n\t * utilities\n\t */\n\n\t var pointerType = function pointerType(event) {\n\t if (typeof event.pointerType === 'number') {\n\t return pointerMap[event.pointerType];\n\t } else {\n\t // treat pen like touch\n\t return event.pointerType === 'pen' ? 'touch' : event.pointerType;\n\t }\n\t };\n\n\t // prevent touch detection from being overridden by event execution order\n\t var validateTouch = function validateTouch(value) {\n\t var timestamp = Date.now();\n\n\t var touchIsValid = value === 'mouse' && currentInput === 'touch' && timestamp - currentTimestamp < 200;\n\n\t currentTimestamp = timestamp;\n\n\t return touchIsValid;\n\t };\n\n\t // detect version of mouse wheel event to use\n\t // via https://developer.mozilla.org/en-US/docs/Web/API/Element/wheel_event\n\t var detectWheel = function detectWheel() {\n\t var wheelType = null;\n\n\t // Modern browsers support \"wheel\"\n\t if ('onwheel' in document.createElement('div')) {\n\t wheelType = 'wheel';\n\t } else {\n\t // Webkit and IE support at least \"mousewheel\"\n\t // or assume that remaining browsers are older Firefox\n\t wheelType = document.onmousewheel !== undefined ? 'mousewheel' : 'DOMMouseScroll';\n\t }\n\n\t return wheelType;\n\t };\n\n\t // runs callback functions\n\t var fireFunctions = function fireFunctions(type) {\n\t for (var i = 0, len = functionList.length; i < len; i++) {\n\t if (functionList[i].type === type) {\n\t functionList[i].fn.call(undefined, type === 'input' ? currentInput : currentIntent);\n\t }\n\t }\n\t };\n\n\t // finds matching element in an object\n\t var objPos = function objPos(match) {\n\t for (var i = 0, len = functionList.length; i < len; i++) {\n\t if (functionList[i].fn === match) {\n\t return i;\n\t }\n\t }\n\t };\n\n\t var detectScrolling = function detectScrolling(event) {\n\t if (mousePos.x !== event.screenX || mousePos.y !== event.screenY) {\n\t isScrolling = false;\n\n\t mousePos.x = event.screenX;\n\t mousePos.y = event.screenY;\n\t } else {\n\t isScrolling = true;\n\t }\n\t };\n\n\t // manual version of `closest()`\n\t var checkClosest = function checkClosest(elem, tag) {\n\t var ElementPrototype = window.Element.prototype;\n\n\t if (!ElementPrototype.matches) {\n\t ElementPrototype.matches = ElementPrototype.msMatchesSelector || ElementPrototype.webkitMatchesSelector;\n\t }\n\n\t if (!ElementPrototype.closest) {\n\t do {\n\t if (elem.matches(tag)) {\n\t return elem;\n\t }\n\n\t elem = elem.parentElement || elem.parentNode;\n\t } while (elem !== null && elem.nodeType === 1);\n\n\t return null;\n\t } else {\n\t return elem.closest(tag);\n\t }\n\t };\n\n\t /*\n\t * init\n\t */\n\n\t // don't start script unless browser cuts the mustard\n\t // (also passes if polyfills are used)\n\t if ('addEventListener' in window && Array.prototype.indexOf) {\n\t setUp();\n\t }\n\n\t /*\n\t * api\n\t */\n\n\t return {\n\t // returns string: the current input type\n\t // opt: 'intent'|'input'\n\t // 'input' (default): returns the same value as the `data-whatinput` attribute\n\t // 'intent': includes `data-whatintent` value if it's different than `data-whatinput`\n\t ask: function ask(opt) {\n\t return opt === 'intent' ? currentIntent : currentInput;\n\t },\n\n\t // returns string: the currently focused element or null\n\t element: function element() {\n\t return currentElement;\n\t },\n\n\t // overwrites ignored keys with provided array\n\t ignoreKeys: function ignoreKeys(arr) {\n\t ignoreMap = arr;\n\t },\n\n\t // overwrites specific char keys to update on\n\t specificKeys: function specificKeys(arr) {\n\t specificMap = arr;\n\t },\n\n\t // attach functions to input and intent \"events\"\n\t // funct: function to fire on change\n\t // eventType: 'input'|'intent'\n\t registerOnChange: function registerOnChange(fn, eventType) {\n\t functionList.push({\n\t fn: fn,\n\t type: eventType || 'input'\n\t });\n\t },\n\n\t unRegisterOnChange: function unRegisterOnChange(fn) {\n\t var position = objPos(fn);\n\n\t if (position || position === 0) {\n\t functionList.splice(position, 1);\n\t }\n\t },\n\n\t clearStorage: function clearStorage() {\n\t window.sessionStorage.clear();\n\t }\n\t };\n\t}();\n\n/***/ })\n/******/ ])\n});\n;","\"use strict\";\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9","/**\n * Mobile Navigation\n *\n * Used below 64em breakpoint.\n *\n * NOTE: Some code here is applied to the Sticky Navigation (_condensed.js) for\n * the Search (🔎) toggle.\n */\nconst $ = require( 'jquery' );\nconst $body = $( 'body' );\n\n\n\n$( () => {\n\n const lookup = {\n 'mobile': 'input#search',\n 'sticky': 'input#search-condensed'\n };\n let searchButtonContext;\n\n const activateSearch = () => {\n\n $body.addClass( 'search-active' );\n\n // Determine which search input to focus.\n const $input = $( lookup[ searchButtonContext ] );\n\n /**\n * Search input is not always visible to the browser at this point in code\n * execution so we delay applying focus.\n *\n * This is presumably due to the `visibility` property on `.header__search`\n * (or elsewhere).\n */\n if ( $input.length ) setTimeout( () => $input.focus(), 50 );\n\n }\n\n const deactivateSearch = () => $body.removeClass( 'search-active' );\n const toggleSearch = () => $body.hasClass( 'search-active' ) ? deactivateSearch() : activateSearch();\n const activateMenu = () => $body.addClass( 'menu-active' );\n const deactivateMenu = () => $body.removeClass( 'menu-active' );\n const toggleMenu = () => $body.hasClass( 'menu-active' ) ? deactivateMenu() : activateMenu();\n const mobileOrStickyNav = ( el ) => el.classList.contains( 'condensed__search__button' ) ? 'sticky' : 'mobile';\n\n // Search (🔎) for Mobile AND Sticky navigations!!!\n $( '.toggle-search' ).on( 'click', ( e ) => {\n\n searchButtonContext = mobileOrStickyNav( e.currentTarget );\n\n deactivateMenu();\n toggleSearch();\n\n if ( $body.hasClass( 'condensed__list--active' ) ) $body.removeClass( 'condensed__list--active' );\n\n } );\n\n // Hamburger Menu (☰)\n $( '.toggle-menu' ).on( 'click', () => {\n\n deactivateSearch();\n toggleMenu();\n\n } );\n\n});\n\nconst searchForm = $('.search__form');\nconst searchFormAction = searchForm.attr('action');\nconst searchFormPartials = $('.search-partial');\n\n$('.radio__label.search-scope__option').click(function(event) {\n var radio_selector = 'input[type=\"radio\"]',\n $radio;\n\n if (!$(event.target).is(radio_selector)) {\n $radio = $(this).find(radio_selector);\n\n if ($radio.hasClass('search-scope__input--und')){\n searchForm.attr('action', \"//www.search.und.edu/s/search.html\");\n searchFormPartials.attr('disabled','disabled')\n }\n else {\n searchForm.attr('action', searchFormAction);\n searchFormPartials.removeAttr('disabled')\n }\n\n event.stopImmediatePropagation();\n\n event.preventDefault();\n if (!$radio.is(':checked')) $radio.prop('checked', true);\n }\n\n $('.radio__option.search-scope__input').on('change click touchstart', function(event) {\n\n if ($(event.target).hasClass('search-scope__input--und')){\n searchForm.attr('action', \"//www.search.und.edu/s/search.html\");\n }\n else {\n searchForm.attr('action', searchFormAction);\n }\n });\n\n\n});\n","const $ = require('jquery');\nconst debounce = require('../util/_debounce');\n$(() => {\n\n\n function setMenuToggleZindex() {\n const winWidth = $(window).width();\n\n if (winWidth >= 1024) {\n $('.menu__link--toggle').attr('tabindex', -1);\n }\n\n else {\n $('.menu__link--toggle').attr('tabindex', 0);\n }\n }\n\n $(window).on('load resize', debounce(function() {\n setMenuToggleZindex();\n }, 250));\n\n\n\n let prevent = true;\n let enable;\n let close;\n\n const click = function(e) {\n if (prevent || !this.parentNode.classList.contains('menu__item--active')) {\n over.call(this.parentNode);\n e.preventDefault();\n }\n else {\n out();\n }\n };\n\n const targets = document.querySelectorAll('.menu__link--toggle');\n\n for (let i = 0; i < targets.length; i += 1) {\n targets[i].addEventListener('click', click);\n }\n\n\n const items = document.querySelectorAll('.menu__item');\n\n const reset = function() {\n prevent = true;\n clearTimeout(enable);\n clearTimeout(close);\n for (let i = 0; i < items.length; i += 1) {\n items[i].classList.remove('menu__item--active');\n }\n document.body.removeEventListener('click', outClick);\n // document.removeEventListener('scroll', reset);\n };\n\n var over = function(e) {\n reset();\n this.classList.add('menu__item--active');\n enable = setTimeout(function() {\n prevent = false;\n }, 100);\n document.body.addEventListener('click', outClick);\n // document.addEventListener('scroll', reset);\n };\n\n var out = function(e) {\n close = setTimeout(reset, 300);\n };\n\n var outClick = function(e) {\n var el = document.querySelector('.menu__item--active');\n if (!el.contains(e.target)) {\n out();\n }\n };\n\n});\n","// vars\n'use strict'\n\n\n\nvar testim = document.getElementById(\"testim\"),\n testimDots = Array.prototype.slice.call(document.getElementById(\"testim-dots\").children),\n testimContent = Array.prototype.slice.call(document.getElementById(\"testim-content\").children),\n testimLeftArrow = document.getElementById(\"left-arrow\"),\n testimRightArrow = document.getElementById(\"right-arrow\"),\n testimSpeed = 4500,\n currentSlide = 0,\n currentActive = 0,\n testimTimer,\n touchStartPos,\n touchEndPos,\n touchPosDiff,\n ignoreTouch = 30;\n;\n\nwindow.onload = function() {\n\n // Testim Script\n function playSlide(slide) {\n for (var k = 0; k < testimDots.length; k++) {\n testimContent[k].classList.remove(\"active\");\n testimContent[k].classList.remove(\"inactive\");\n testimDots[k].classList.remove(\"active\");\n }\n\n if (slide < 0) {\n slide = currentSlide = testimContent.length-1;\n }\n\n if (slide > testimContent.length - 1) {\n slide = currentSlide = 0;\n }\n\n if (currentActive != currentSlide) {\n testimContent[currentActive].classList.add(\"inactive\"); \n }\n testimContent[slide].classList.add(\"active\");\n testimDots[slide].classList.add(\"active\");\n\n currentActive = currentSlide;\n \n clearTimeout(testimTimer);\n testimTimer = setTimeout(function() {\n playSlide(currentSlide += 1);\n }, testimSpeed)\n }\n\n testimLeftArrow.addEventListener(\"click\", function() {\n playSlide(currentSlide -= 1);\n })\n\n testimRightArrow.addEventListener(\"click\", function() {\n playSlide(currentSlide += 1);\n }) \n\n for (var l = 0; l < testimDots.length; l++) {\n testimDots[l].addEventListener(\"click\", function() {\n playSlide(currentSlide = testimDots.indexOf(this));\n })\n }\n\n playSlide(currentSlide);\n\n // keyboard shortcuts\n document.addEventListener(\"keyup\", function(e) {\n switch (e.keyCode) {\n case 37:\n testimLeftArrow.click();\n break;\n \n case 39:\n testimRightArrow.click();\n break;\n\n case 39:\n testimRightArrow.click();\n break;\n\n default:\n break;\n }\n })\n \n testim.addEventListener(\"touchstart\", function(e) {\n touchStartPos = e.changedTouches[0].clientX;\n })\n \n testim.addEventListener(\"touchend\", function(e) {\n touchEndPos = e.changedTouches[0].clientX;\n \n touchPosDiff = touchStartPos - touchEndPos;\n \n console.log(touchPosDiff);\n console.log(touchStartPos); \n console.log(touchEndPos); \n\n \n if (touchPosDiff > 0 + ignoreTouch) {\n testimLeftArrow.click();\n } else if (touchPosDiff < 0 - ignoreTouch) {\n testimRightArrow.click();\n } else {\n return;\n }\n \n })\n}","/**\r\n * techtechniques WordPress Theme\r\n * -----------------------------------------------------------------------------\r\n *\r\n * NOTE: You might need to use `require()` instead of `import`.\r\n */\r\n\r\n// Imports\r\n// const { Is } = require('./utilities/index');\r\n\r\n// Polyfills\r\n// focus within polyfill\r\nvar focusWithin = require('ally.js/style/focus-within');\r\nfocusWithin();\r\n\r\n// get the type of user input\r\nrequire('what-input');\r\n\r\n// object-fit polyfill\r\nvar objectFitImages = require('object-fit-images');\r\nobjectFitImages();\r\n\r\n// Base\r\n// require('/util/_fetch-svg');\r\n\r\nrequire('../js/modules/_menu');\r\nrequire('../js/modules/_header');\r\nrequire('../js/modules/_accordion');\r\nrequire('../js/modules/_testimonial_slider');\r\n","module.exports = function(func, wait, immediate) {\n var timeout;\n return function() {\n var context = this, args = arguments;\n var later = function() {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n};\n"]}