/*! modernizr 3.0.0-alpha.4 (Custom Build) | MIT *
* http://modernizr.com/download/#-adownload-ambientlight-animation-apng-appearance-applicationcache-audio-audioloop-audiopreload-backgroundblendmode-backgroundcliptext-backgroundsize-batteryapi-beacon-bgpositionshorthand-bgpositionxy-bgrepeatspace_bgrepeatround-bgsizecover-blobconstructor-bloburls-blobworkers-borderimage-borderradius-boxshadow-boxsizing-canvas-canvasblending-canvastext-canvaswinding-capture-checked-classlist-contains-contenteditable-contextmenu-cookies-cors-createelementattrs_createelement_attrs-cssall-cssanimations-csscalc-csschunit-csscolumns-cssescape-cssexunit-cssfilters-cssgradients-csshyphens_softhyphens_softhyphensfind-cssinvalid-cssmask-csspointerevents-csspositionsticky-csspseudoanimations-csspseudotransitions-cssreflections-cssremunit-cssresize-cssscrollbar-csstransforms-csstransforms3d-csstransitions-cssvalid-cssvhunit-cssvmaxunit-cssvminunit-cssvwunit-cubicbezierrange-customevent-customprotocolhandler-dart-datachannel-datalistelem-dataset-datauri-dataview-dataworkers-details-devicemotion_deviceorientation-directory-display_runin-displaytable-documentfragment-ellipsis-emoji-es5-es5array-es5date-es5function-es5object-es5string-es5syntax-es5undefined-es6array-es6math-es6number-es6object-es6string-eventlistener-eventsource-exiforientation-fetch-fileinput-filereader-filesystem-flash-flexbox-flexboxlegacy-flexboxtweener-flexwrap-fontface-formattribute-formvalidation-framed-fullscreen-gamepads-generatedcontent-generators-geolocation-getrandomvalues-getusermedia-hashchange-hidden-hiddenscroll-history-hsla-htmlimports-ie8compat-indexeddb-indexeddbblob-inlinesvg-input-inputformaction-inputformenctype-inputformmethod-inputformtarget-inputtypes-intl-jpegxr-json-lastchild-localizednumber-localstorage-lowbandwidth-lowbattery-matchmedia-mathml-mediaqueries-microdata-multiplebgs-mutationobserver-notification-nthchild-objectfit-olreversed-oninput-opacity-outputelem-overflowscrolling-pagevisibility-peerconnection-performance-picture-placeholder-pointerevents-pointerlock-postmessage-preserve3d-progressbar_meter-promises-proximity-queryselector-quotamanagement-regions-requestanimationframe-requestautocomplete-rgba-ruby-sandbox-scriptasync-scriptdefer-seamless-search-serviceworker-sessionstorage-shapes-sharedworkers-siblinggeneral-sizes-smil-speechrecognition-speechsynthesis-srcdoc-srcset-strictmode-stylescoped-subpixelfont-supports-svg-svgasimg-svgclippaths-svgfilters-svgforeignobject-target-template-templatestrings-textalignlast-textareamaxlength-textshadow-texttrackapi_track-time-todataurljpeg_todataurlpng_todataurlwebp-touchevents-transferables-typedarrays-unicode-unicoderange-unknownelements-urlparser-userdata-userselect-vibrate-video-videoautoplay-videoloop-videopreload-vml-webaudio-webgl-webglextensions-webintents-webp-webpalpha-webpanimation-webplossless_webp_lossless-websockets-websocketsbinary-websqldatabase-webworkers-willchange-wrapflow-xhr2-xhrresponsetype-xhrresponsetypearraybuffer-xhrresponsetypeblob-xhrresponsetypedocument-xhrresponsetypejson-xhrresponsetypetext-addtest-atrule-domprefixes-hasevent-mq-prefixed-prefixedcss-prefixes-shiv-testallprops-testprop-teststyles !*/
! function(window, document, undefined) {
function roundedEquals(e, t) {
return e - 1 === t || e === t || e + 1 === t
}
function cssToDOM(e) {
return e.replace(/([a-z])-([a-z])/g, function(e, t, n) {
return t + n.toUpperCase()
}).replace(/^-/, "")
}
function is(e, t) {
return typeof e === t
}
function testRunner() {
var e, t, n, r, o, i, a;
for (var d in tests) {
if (e = [], t = tests[d], t.name && (e.push(t.name.toLowerCase()), t.options && t.options.aliases && t.options.aliases.length))
for (n = 0; n < t.options.aliases.length; n++) e.push(t.options.aliases[n].toLowerCase());
for (r = is(t.fn, "function") ? t.fn() : t.fn, o = 0; o < e.length; o++) i = e[o], a = i.split("."), 1 === a.length ? Modernizr[a[0]] = r : (!Modernizr[a[0]] || Modernizr[a[0]] instanceof Boolean || (Modernizr[a[0]] = new Boolean(Modernizr[a[0]])), Modernizr[a[0]][a[1]] = r), classes.push((r ? "" : "no-") + a.join("-"))
}
}
function contains(e, t) {
return !!~("" + e).indexOf(t)
}
function setClasses(e) {
var t = docElement.className,
n = Modernizr._config.classPrefix || "";
if (isSVG && (t = t.baseVal), Modernizr._config.enableJSClass) {
var r = new RegExp("(^|\\s)" + n + "no-js(\\s|$)");
t = t.replace(r, "$1" + n + "js$2")
}
Modernizr._config.enableClasses && (t += " " + n + e.join(" " + n), isSVG ? docElement.className.baseVal = t : docElement.className = t)
}
function addTest(e, t) {
if ("object" == typeof e)
for (var n in e) hasOwnProp(e, n) && addTest(n, e[n]);
else {
e = e.toLowerCase();
var r = e.split("."),
o = Modernizr[r[0]];
if (2 == r.length && (o = o[r[1]]), "undefined" != typeof o) return Modernizr;
t = "function" == typeof t ? t() : t, 1 == r.length ? Modernizr[r[0]] = t : (!Modernizr[r[0]] || Modernizr[r[0]] instanceof Boolean || (Modernizr[r[0]] = new Boolean(Modernizr[r[0]])), Modernizr[r[0]][r[1]] = t), setClasses([(t && 0 != t ? "" : "no-") + r.join("-")]), Modernizr._trigger(e, t)
}
return Modernizr
}
function createElement() {
return "function" != typeof document.createElement ? document.createElement(arguments[0]) : isSVG ? document.createElementNS.call(document, "http://www.w3.org/2000/svg", arguments[0]) : document.createElement.apply(document, arguments)
}
function getBody() {
var e = document.body;
return e || (e = createElement(isSVG ? "svg" : "body"), e.fake = !0), e
}
function injectElementWithStyles(e, t, n, r) {
var o, i, a, d, s = "modernizr",
A = createElement("div"),
l = getBody();
if (parseInt(n, 10))
for (; n--;) a = createElement("div"), a.id = r ? r[n] : s + (n + 1), A.appendChild(a);
return o = createElement("style"), o.type = "text/css", o.id = "s" + s, (l.fake ? l : A).appendChild(o), l.appendChild(A), o.styleSheet ? o.styleSheet.cssText = e : o.appendChild(document.createTextNode(e)), A.id = s, l.fake && (l.style.background = "", l.style.overflow = "hidden", d = docElement.style.overflow, docElement.style.overflow = "hidden", docElement.appendChild(l)), i = t(A, e), l.fake ? (l.parentNode.removeChild(l), docElement.style.overflow = d, docElement.offsetHeight) : A.parentNode.removeChild(A), !!i
}
function fnBind(e, t) {
return function() {
return e.apply(t, arguments)
}
}
function testDOMProps(e, t, n) {
var r;
for (var o in e)
if (e[o] in t) return n === !1 ? e[o] : (r = t[e[o]], is(r, "function") ? fnBind(r, n || t) : r);
return !1
}
function domToCSS(e) {
return e.replace(/([A-Z])/g, function(e, t) {
return "-" + t.toLowerCase()
}).replace(/^ms-/, "-ms-")
}
function nativeTestProps(e, t) {
var n = e.length;
if ("CSS" in window && "supports" in window.CSS) {
for (; n--;)
if (window.CSS.supports(domToCSS(e[n]), t)) return !0;
return !1
}
if ("CSSSupportsRule" in window) {
for (var r = []; n--;) r.push("(" + domToCSS(e[n]) + ":" + t + ")");
return r = r.join(" or "), injectElementWithStyles("@supports (" + r + ") { #modernizr { position: absolute; } }", function(e) {
return "absolute" == getComputedStyle(e, null).position
})
}
return undefined
}
function testProps(e, t, n, r) {
function o() {
a && (delete mStyle.style, delete mStyle.modElem)
}
if (r = is(r, "undefined") ? !1 : r, !is(n, "undefined")) {
var i = nativeTestProps(e, n);
if (!is(i, "undefined")) return i
}
for (var a, d, s, A, l, c = ["modernizr", "tspan"]; !mStyle.style;) a = !0, mStyle.modElem = createElement(c.shift()), mStyle.style = mStyle.modElem.style;
for (s = e.length, d = 0; s > d; d++)
if (A = e[d], l = mStyle.style[A], contains(A, "-") && (A = cssToDOM(A)), mStyle.style[A] !== undefined) {
if (r || is(n, "undefined")) return o(), "pfx" == t ? A : !0;
try {
mStyle.style[A] = n
} catch (u) {}
if (mStyle.style[A] != l) return o(), "pfx" == t ? A : !0
}
return o(), !1
}
function testPropsAll(e, t, n, r, o) {
var i = e.charAt(0).toUpperCase() + e.slice(1),
a = (e + " " + cssomPrefixes.join(i + " ") + i).split(" ");
return is(t, "string") || is(t, "undefined") ? testProps(a, t, r, o) : (a = (e + " " + domPrefixes.join(i + " ") + i).split(" "), testDOMProps(a, t, n))
}
function testAllProps(e, t, n) {
return testPropsAll(e, undefined, undefined, t, n)
}
var classes = [],
tests = [],
ModernizrProto = {
_version: "3.0.0-alpha.4",
_config: {
classPrefix: "",
enableClasses: !0,
enableJSClass: !0,
usePrefixes: !0
},
_q: [],
on: function(e, t) {
var n = this;
setTimeout(function() {
t(n[e])
}, 0)
},
addTest: function(e, t, n) {
tests.push({
name: e,
fn: t,
options: n
})
},
addAsyncTest: function(e) {
tests.push({
name: null,
fn: e
})
}
},
Modernizr = function() {};
Modernizr.prototype = ModernizrProto, Modernizr = new Modernizr;
var newSyntax = "CSS" in window && "supports" in window.CSS,
oldSyntax = "supportsCSS" in window;
Modernizr.addTest("supports", newSyntax || oldSyntax), Modernizr.addTest("applicationcache", "applicationCache" in window), Modernizr.addTest("blobconstructor", function() {
try {
return !!new Blob
} catch (e) {
return !1
}
}, {
aliases: ["blob-constructor"]
}), Modernizr.addTest("cookies", function() {
try {
document.cookie = "cookietest=1";
var e = -1 != document.cookie.indexOf("cookietest=");
return document.cookie = "cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT", e
} catch (t) {
return !1
}
}), Modernizr.addTest("cors", "XMLHttpRequest" in window && "withCredentials" in new XMLHttpRequest), Modernizr.addTest("customprotocolhandler", function() {
if (!navigator.registerProtocolHandler) return !1;
try {
navigator.registerProtocolHandler("thisShouldFail")
} catch (e) {
return e instanceof TypeError
}
return !1
}), Modernizr.addTest("customevent", "CustomEvent" in window && "function" == typeof window.CustomEvent), Modernizr.addTest("dataview", "undefined" != typeof DataView && "getFloat64" in DataView.prototype), Modernizr.addTest("eventlistener", "addEventListener" in window), Modernizr.addTest("geolocation", "geolocation" in navigator), Modernizr.addTest("history", function() {
var e = navigator.userAgent;
return -1 === e.indexOf("Android 2.") && -1 === e.indexOf("Android 4.0") || -1 === e.indexOf("Mobile Safari") || -1 !== e.indexOf("Chrome") || -1 !== e.indexOf("Windows Phone") ? window.history && "pushState" in window.history : !1
}), Modernizr.addTest("ie8compat", !window.addEventListener && !!document.documentMode && 7 === document.documentMode), Modernizr.addTest("json", "JSON" in window && "parse" in JSON && "stringify" in JSON), Modernizr.addTest("notification", "Notification" in window && "permission" in window.Notification && "requestPermission" in window.Notification), Modernizr.addTest("postmessage", "postMessage" in window), Modernizr.addTest("queryselector", "querySelector" in document && "querySelectorAll" in document), Modernizr.addTest("serviceworker", "serviceWorker" in navigator), Modernizr.addTest("svg", !!document.createElementNS && !!document.createElementNS("http://www.w3.org/2000/svg", "svg").createSVGRect), Modernizr.addTest("templatestrings", function() {
var supports;
try {
eval("``"), supports = !0
} catch (e) {}
return !!supports
}), Modernizr.addTest("typedarrays", "ArrayBuffer" in window), Modernizr.addTest("websockets", "WebSocket" in window && 2 === window.WebSocket.CLOSING), Modernizr.addTest("webaudio", function() {
var e = "webkitAudioContext" in window,
t = "AudioContext" in window;
return Modernizr._config.usePrefixes ? e || t : t
});
var CSS = window.CSS;
Modernizr.addTest("cssescape", CSS ? "function" == typeof CSS.escape : !1), Modernizr.addTest("microdata", "getItems" in document), Modernizr.addTest("picture", "HTMLPictureElement" in window), Modernizr.addTest("es5undefined", function() {
var e, t;
try {
t = window.undefined, window.undefined = 12345, e = "undefined" == typeof window.undefined, window.undefined = t
} catch (n) {
return !1
}
return e
}), Modernizr.addTest("devicemotion", "DeviceMotionEvent" in window), Modernizr.addTest("deviceorientation", "DeviceOrientationEvent" in window), Modernizr.addTest("filereader", !!(window.File && window.FileList && window.FileReader)), Modernizr.addTest("beacon", "sendBeacon" in navigator), Modernizr.addTest("lowbandwidth", function() {
var e = navigator.connection || {
type: 0
};
return 3 == e.type || 4 == e.type || /^[23]g$/.test(e.type)
}), Modernizr.addTest("eventsource", "EventSource" in window), Modernizr.addTest("fetch", "fetch" in window), Modernizr.addTest("xhrresponsetype", function() {
if ("undefined" == typeof XMLHttpRequest) return !1;
var e = new XMLHttpRequest;
return e.open("get", "/", !0), "response" in e
}()), Modernizr.addTest("xhr2", "XMLHttpRequest" in window && "withCredentials" in new XMLHttpRequest), Modernizr.addTest("speechsynthesis", "SpeechSynthesisUtterance" in window), Modernizr.addTest("localstorage", function() {
var e = "modernizr";
try {
return localStorage.setItem(e, e), localStorage.removeItem(e), !0
} catch (t) {
return !1
}
}), Modernizr.addTest("sessionstorage", function() {
var e = "modernizr";
try {
return sessionStorage.setItem(e, e), sessionStorage.removeItem(e), !0
} catch (t) {
return !1
}
}), Modernizr.addTest("websqldatabase", "openDatabase" in window), Modernizr.addTest("svgfilters", function() {
var e = !1;
try {
e = "SVGFEColorMatrixElement" in window && 2 == SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_SATURATE
} catch (t) {}
return e
}), Modernizr.addTest("urlparser", function() {
var e;
try {
return e = new URL("http://modernizr.com/"), "http://modernizr.com/" === e.href
} catch (t) {
return !1
}
}), Modernizr.addTest("websocketsbinary", function() {
var e, t = "https:" == location.protocol ? "wss" : "ws";
if ("WebSocket" in window) {
if (e = "binaryType" in WebSocket.prototype) return e;
try {
return !!new WebSocket(t + "://.").binaryType
} catch (n) {}
}
return !1
}), Modernizr.addTest("framed", window.location != top.location), Modernizr.addTest("sharedworkers", "SharedWorker" in window), Modernizr.addTest("webworkers", "Worker" in window), Modernizr.addTest("target", function() {
var e = window.document;
if (!("querySelectorAll" in e)) return !1;
try {
return e.querySelectorAll(":target"), !0
} catch (t) {
return !1
}
}), Modernizr.addTest("mutationobserver", !!window.MutationObserver || !!window.WebKitMutationObserver), Modernizr.addTest("es5array", function() {
return !!(Array.prototype && Array.prototype.every && Array.prototype.filter && Array.prototype.forEach && Array.prototype.indexOf && Array.prototype.lastIndexOf && Array.prototype.map && Array.prototype.some && Array.prototype.reduce && Array.prototype.reduceRight && Array.isArray)
}), Modernizr.addTest("es5date", function() {
var e = "2013-04-12T06:06:37.307Z",
t = !1;
try {
t = !!Date.parse(e)
} catch (n) {}
return !!(Date.now && Date.prototype && Date.prototype.toISOString && Date.prototype.toJSON && t)
}), Modernizr.addTest("es5function", function() {
return !(!Function.prototype || !Function.prototype.bind)
}), Modernizr.addTest("es5object", function() {
return !!(Object.keys && Object.create && Object.getPrototypeOf && Object.getOwnPropertyNames && Object.isSealed && Object.isFrozen && Object.isExtensible && Object.getOwnPropertyDescriptor && Object.defineProperty && Object.defineProperties && Object.seal && Object.freeze && Object.preventExtensions)
}), Modernizr.addTest("strictmode", function() {
"use strict";
return !this
}()), Modernizr.addTest("es5string", function() {
return !(!String.prototype || !String.prototype.trim)
}), Modernizr.addTest("es5syntax", function() {
var value, obj, stringAccess, getter, setter, reservedWords, zeroWidthChars;
try {
return stringAccess = eval('"foobar"[3] === "b"'), getter = eval("({ get x(){ return 1 } }).x === 1"), eval("({ set x(v){ value = v; } }).x = 1"), setter = 1 === value, eval("obj = ({ if: 1 })"), reservedWords = 1 === obj["if"], zeroWidthChars = eval("_ = true"), stringAccess && getter && setter && reservedWords && zeroWidthChars
} catch (ignore) {
return !1
}
}), Modernizr.addTest("es5", function() {
return !!(Modernizr.es5array && Modernizr.es5date && Modernizr.es5function && Modernizr.es5object && Modernizr.strictmode && Modernizr.es5string && Modernizr.json && Modernizr.es5syntax && Modernizr.es5undefined)
}), Modernizr.addTest("es6math", !!(Math && Math.clz32 && Math.cbrt && Math.imul && Math.sign && Math.log10 && Math.log2 && Math.log1p && Math.expm1 && Math.cosh && Math.sinh && Math.tanh && Math.acosh && Math.asinh && Math.atanh && Math.hypot && Math.trunc && Math.fround)), Modernizr.addTest("es6number", !!(Number.isFinite && Number.isInteger && Number.isSafeInteger && Number.isNaN && Number.parseInt && Number.parseFloat && Number.isInteger(Number.MAX_SAFE_INTEGER) && Number.isInteger(Number.MIN_SAFE_INTEGER) && Number.isFinite(Number.EPSILON))), Modernizr.addTest("es6object", !!(Object.assign && Object.is && Object.setPrototypeOf)), Modernizr.addTest("generators", function() {
try {
new Function("function* test() {}")()
} catch (e) {
return !1
}
return !0
}), Modernizr.addTest("es6string", !!(String.fromCodePoint && String.raw && String.prototype.codePointAt && String.prototype.repeat && String.prototype.startsWith && String.prototype.endsWith && String.prototype.contains)), Modernizr.addTest("promises", function() {
return "Promise" in window && "resolve" in window.Promise && "reject" in window.Promise && "all" in window.Promise && "race" in window.Promise && function() {
var e;
return new window.Promise(function(t) {
e = t
}), "function" == typeof e
}()
});
var prefixes = ModernizrProto._config.usePrefixes ? " -webkit- -moz- -o- -ms- ".split(" ") : [];
ModernizrProto._prefixes = prefixes;
var omPrefixes = "Moz O ms Webkit",
domPrefixes = ModernizrProto._config.usePrefixes ? omPrefixes.toLowerCase().split(" ") : [];
ModernizrProto._domPrefixes = domPrefixes, Modernizr.addTest("contains", is(String.prototype.contains, "function"));
var hasOwnProp;
! function() {
var e = {}.hasOwnProperty;
hasOwnProp = is(e, "undefined") || is(e.call, "undefined") ? function(e, t) {
return t in e && is(e.constructor.prototype[t], "undefined")
} : function(t, n) {
return e.call(t, n)
}
}(), Modernizr.addTest("es6array", !!(Array.prototype && Array.prototype.copyWithin && Array.prototype.fill && Array.prototype.find && Array.prototype.findIndex && Array.prototype.keys && Array.prototype.entries && Array.prototype.values && Array.from && Array.of));
var cssomPrefixes = ModernizrProto._config.usePrefixes ? omPrefixes.split(" ") : [];
ModernizrProto._cssomPrefixes = cssomPrefixes;
var atRule = function(e) {
var t, n = prefixes.length,
r = window.CSSRule;
if ("undefined" == typeof r) return undefined;
if (!e) return !1;
if (e = e.replace(/^@/, ""), t = e.replace(/-/g, "_").toUpperCase() + "_RULE", t in r) return "@" + e;
for (var o = 0; n > o; o++) {
var i = prefixes[o],
a = i.toUpperCase() + "_" + t;
if (a in r) return "@-" + i.toLowerCase() + "-" + e
}
return !1
};
ModernizrProto.atRule = atRule;
var docElement = document.documentElement;
Modernizr.addTest("classlist", "classList" in docElement), Modernizr.addTest("contextmenu", "contextMenu" in docElement && "HTMLMenuItemElement" in window), Modernizr.addTest("willchange", "willChange" in docElement.style), Modernizr.addTest("cssall", "all" in docElement.style), Modernizr.addTest("documentfragment", function() {
return "createDocumentFragment" in document && "appendChild" in docElement
});
var isSVG = "svg" === docElement.nodeName.toLowerCase(),
html5;
isSVG || ! function(e, t) {
function n(e, t) {
var n = e.createElement("p"),
r = e.getElementsByTagName("head")[0] || e.documentElement;
return n.innerHTML = "x", r.insertBefore(n.lastChild, r.firstChild)
}
function r() {
var e = v.elements;
return "string" == typeof e ? e.split(" ") : e
}
function o(e, t) {
var n = v.elements;
"string" != typeof n && (n = n.join(" ")), "string" != typeof e && (e = e.join(" ")), v.elements = n + " " + e, A(t)
}
function i(e) {
var t = w[e[h]];
return t || (t = {}, g++, e[h] = g, w[g] = t), t
}
function a(e, n, r) {
if (n || (n = t), c) return n.createElement(e);
r || (r = i(n));
var o;
return o = r.cache[e] ? r.cache[e].cloneNode() : f.test(e) ? (r.cache[e] = r.createElem(e)).cloneNode() : r.createElem(e), !o.canHaveChildren || m.test(e) || o.tagUrn ? o : r.frag.appendChild(o)
}
function d(e, n) {
if (e || (e = t), c) return e.createDocumentFragment();
n = n || i(e);
for (var o = n.frag.cloneNode(), a = 0, d = r(), s = d.length; s > a; a++) o.createElement(d[a]);
return o
}
function s(e, t) {
t.cache || (t.cache = {}, t.createElem = e.createElement, t.createFrag = e.createDocumentFragment, t.frag = t.createFrag()), e.createElement = function(n) {
return v.shivMethods ? a(n, e, t) : t.createElem(n)
}, e.createDocumentFragment = Function("h,f", "return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&(" + r().join().replace(/[\w\-:]+/g, function(e) {
return t.createElem(e), t.frag.createElement(e), 'c("' + e + '")'
}) + ");return n}")(v, t.frag)
}
function A(e) {
e || (e = t);
var r = i(e);
return !v.shivCSS || l || r.hasCSS || (r.hasCSS = !!n(e, "article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")), c || s(e, r), e
}
var l, c, u = "3.7.2",
p = e.html5 || {},
m = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,
f = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,
h = "_html5shiv",
g = 0,
w = {};
! function() {
try {
var e = t.createElement("a");
e.innerHTML = "", l = "hidden" in e, c = 1 == e.childNodes.length || function() {
t.createElement("a");
var e = t.createDocumentFragment();
return "undefined" == typeof e.cloneNode || "undefined" == typeof e.createDocumentFragment || "undefined" == typeof e.createElement
}()
} catch (n) {
l = !0, c = !0
}
}();
var v = {
elements: p.elements || "abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",
version: u,
shivCSS: p.shivCSS !== !1,
supportsUnknownElements: c,
shivMethods: p.shivMethods !== !1,
type: "default",
shivDocument: A,
createElement: a,
createDocumentFragment: d,
addElements: o
};
e.html5 = v, A(t)
}(this, document), ModernizrProto._l = {}, ModernizrProto.on = function(e, t) {
this._l[e] || (this._l[e] = []), this._l[e].push(t), Modernizr.hasOwnProperty(e) && setTimeout(function() {
Modernizr._trigger(e, Modernizr[e])
}, 0)
}, ModernizrProto._trigger = function(e, t) {
if (this._l[e]) {
var n = this._l[e];
setTimeout(function() {
var e, r;
for (e = 0; e < n.length; e++)(r = n[e])(t)
}, 0), delete this._l[e]
}
}, Modernizr._q.push(function() {
ModernizrProto.addTest = addTest
}), Modernizr.addAsyncTest(function() {
var e = new Image;
e.onerror = function() {
addTest("exiforientation", !1, {
aliases: ["exif-orientation"]
})
}, e.onload = function() {
addTest("exiforientation", 2 !== e.width, {
aliases: ["exif-orientation"]
})
}, e.src = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QAiRXhpZgAASUkqAAgAAAABABIBAwABAAAABgASAAAAAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAABAAIDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+/iiiigD/2Q=="
}), Modernizr.addAsyncTest(function() {
function e() {
clearTimeout(t), window.removeEventListener("deviceproximity", e), addTest("proximity", !0)
}
var t, n = 300;
"ondeviceproximity" in window && "onuserproximity" in window ? (window.addEventListener("deviceproximity", e), t = setTimeout(function() {
window.removeEventListener("deviceproximity", e), addTest("proximity", !1)
}, n)) : addTest("proximity", !1)
}), Modernizr.addAsyncTest(function() {
var e = new Image;
e.onload = e.onerror = function() {
addTest("jpegxr", 1 == e.width, {
aliases: ["jpeg-xr"]
})
}, e.src = "data:image/vnd.ms-photo;base64,SUm8AQgAAAAFAAG8AQAQAAAASgAAAIC8BAABAAAAAQAAAIG8BAABAAAAAQAAAMC8BAABAAAAWgAAAMG8BAABAAAAHwAAAAAAAAAkw91vA07+S7GFPXd2jckNV01QSE9UTwAZAYBxAAAAABP/gAAEb/8AAQAAAQAAAA=="
}), Modernizr.addAsyncTest(function() {
var e = new Image;
e.onerror = function() {
addTest("webpalpha", !1, {
aliases: ["webp-alpha"]
})
}, e.onload = function() {
addTest("webpalpha", 1 == e.width, {
aliases: ["webp-alpha"]
})
}, e.src = "data:image/webp;base64,UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAABBxAR/Q9ERP8DAABWUDggGAAAADABAJ0BKgEAAQADADQlpAADcAD++/1QAA=="
}), Modernizr.addAsyncTest(function() {
var e = new Image;
e.onerror = function() {
addTest("webpanimation", !1, {
aliases: ["webp-animation"]
})
}, e.onload = function() {
addTest("webpanimation", 1 == e.width, {
aliases: ["webp-animation"]
})
}, e.src = "data:image/webp;base64,UklGRlIAAABXRUJQVlA4WAoAAAASAAAAAAAAAAAAQU5JTQYAAAD/////AABBTk1GJgAAAAAAAAAAAAAAAAAAAGQAAABWUDhMDQAAAC8AAAAQBxAREYiI/gcA"
}), Modernizr.addAsyncTest(function() {
var e = new Image;
e.onerror = function() {
addTest("webplossless", !1, {
aliases: ["webp-lossless"]
})
}, e.onload = function() {
addTest("webplossless", 1 == e.width, {
aliases: ["webp-lossless"]
})
}, e.src = "data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA="
}), Modernizr.addAsyncTest(function() {
function e(e, t, n) {
function r(t) {
var r = t && "load" === t.type ? 1 == o.width : !1,
i = "webp" === e;
addTest(e, i ? new Boolean(r) : r), n && n(t)
}
var o = new Image;
o.onerror = r, o.onload = r, o.src = t
}
var t = [{
uri: "data:image/webp;base64,UklGRiQAAABXRUJQVlA4IBgAAAAwAQCdASoBAAEAAwA0JaQAA3AA/vuUAAA=",
name: "webp"
}, {
uri: "data:image/webp;base64,UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAABBxAR/Q9ERP8DAABWUDggGAAAADABAJ0BKgEAAQADADQlpAADcAD++/1QAA==",
name: "webp.alpha"
}, {
uri: "data:image/webp;base64,UklGRlIAAABXRUJQVlA4WAoAAAASAAAAAAAAAAAAQU5JTQYAAAD/////AABBTk1GJgAAAAAAAAAAAAAAAAAAAGQAAABWUDhMDQAAAC8AAAAQBxAREYiI/gcA",
name: "webp.animation"
}, {
uri: "data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA=",
name: "webp.lossless"
}],
n = t.shift();
e(n.name, n.uri, function(n) {
if (n && "load" === n.type)
for (var r = 0; r < t.length; r++) e(t[r].name, t[r].uri)
})
}), Modernizr.addTest("svgasimg", document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#Image", "1.1")), Modernizr.addAsyncTest(function() {
function e() {
var e = new Image;
e.onerror = function() {
addTest("datauri", !0), Modernizr.datauri = new Boolean(!0), Modernizr.datauri.over32kb = !1
}, e.onload = function() {
addTest("datauri", !0), Modernizr.datauri = new Boolean(!0), Modernizr.datauri.over32kb = 1 == e.width && 1 == e.height
};
for (var t = "R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw=="; t.length < 33e3;) t = "\r\n" + t;
e.src = "data:image/gif;base64," + t
} - 1 !== navigator.userAgent.indexOf("MSIE 7.") && setTimeout(function() {
addTest("datauri", !1)
}, 10);
var t = new Image;
t.onerror = function() {
addTest("datauri", !1)
}, t.onload = function() {
1 == t.width && 1 == t.height ? e() : addTest("datauri", !1)
}, t.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw=="
}), Modernizr.addAsyncTest(function() {
function e() {
addTest("blobworkers", !1), t()
}
function t() {
d && r.revokeObjectURL(d), a && a.terminate(), s && clearTimeout(s)
}
try {
var n = window.BlobBuilder,
r = window.URL;
Modernizr._config.usePrefix && (n = n || window.MozBlobBuilder || window.WebKitBlobBuilder || window.MSBlobBuilder || window.OBlobBuilder, r = r || window.MozURL || window.webkitURL || window.MSURL || window.OURL);
var o, i, a, d, s, A = "Modernizr",
l = "this.onmessage=function(e){postMessage(e.data)}";
try {
o = new Blob([l], {
type: "text/javascript"
})
} catch (c) {}
o || (i = new n, i.append(l), o = i.getBlob()), d = r.createObjectURL(o), a = new Worker(d), a.onmessage = function(e) {
addTest("blobworkers", A === e.data), t()
}, a.onerror = e, s = setTimeout(e, 200), a.postMessage(A)
} catch (c) {
e()
}
}), Modernizr.addAsyncTest(function() {
try {
var e = "Modernizr",
t = new Worker("data:text/javascript;base64,dGhpcy5vbm1lc3NhZ2U9ZnVuY3Rpb24oZSl7cG9zdE1lc3NhZ2UoZS5kYXRhKX0=");
t.onmessage = function(n) {
t.terminate(), addTest("dataworkers", e === n.data), t = null
}, t.onerror = function() {
addTest("dataworkers", !1), t = null
}, setTimeout(function() {
addTest("dataworkers", !1)
}, 200), t.postMessage(e)
} catch (n) {
setTimeout(function() {
addTest("dataworkers", !1)
}, 0)
}
}), Modernizr.addTest("createelementattrs", function() {
try {
return "test" == createElement('').getAttribute("name")
} catch (e) {
return !1
}
}, {
aliases: ["createelement-attrs"]
});
var hasEvent = function(e) {
function t(t, r) {
var o;
return t ? (r && "string" != typeof r || (r = createElement(r || "div")), t = "on" + t, o = t in r, !o && n && (r.setAttribute || (r = createElement("div")), r.setAttribute(t, ""), o = "function" == typeof r[t], r[t] !== e && (r[t] = e), r.removeAttribute(t)), o) : !1
}
var n = !("onblur" in document.documentElement);
return t
}();
ModernizrProto.hasEvent = hasEvent, Modernizr.addTest("ambientlight", hasEvent("devicelight", window)), Modernizr.addTest("hashchange", function() {
return hasEvent("hashchange", window) === !1 ? !1 : document.documentMode === undefined || document.documentMode > 7
}), Modernizr.addTest("inputsearchevent", hasEvent("search")), Modernizr.addTest("pointerevents", function() {
var e = !1,
t = domPrefixes.length;
for (e = Modernizr.hasEvent("pointerdown"); t-- && !e;) hasEvent(domPrefixes[t] + "pointerdown") && (e = !0);
return e
}), Modernizr.addTest("audio", function() {
var e = createElement("audio"),
t = !1;
try {
(t = !!e.canPlayType) && (t = new Boolean(t), t.ogg = e.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/, ""), t.mp3 = e.canPlayType("audio/mpeg;").replace(/^no$/, ""), t.opus = e.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/, ""), t.wav = e.canPlayType('audio/wav; codecs="1"').replace(/^no$/, ""), t.m4a = (e.canPlayType("audio/x-m4a;") || e.canPlayType("audio/aac;")).replace(/^no$/, ""))
} catch (n) {}
return t
}), Modernizr.addTest("canvas", function() {
var e = createElement("canvas");
return !(!e.getContext || !e.getContext("2d"))
}), Modernizr.addTest("canvastext", function() {
return Modernizr.canvas === !1 ? !1 : "function" == typeof createElement("canvas").getContext("2d").fillText
}), Modernizr.addTest("contenteditable", function() {
if ("contentEditable" in docElement) {
var e = createElement("div");
return e.contentEditable = !0, "true" === e.contentEditable
}
}), Modernizr.addTest("emoji", function() {
if (!Modernizr.canvastext) return !1;
var e = window.devicePixelRatio || 1,
t = 12 * e,
n = createElement("canvas"),
r = n.getContext("2d");
return r.fillStyle = "#f00", r.textBaseline = "top", r.font = "32px Arial", r.fillText("🐨", 0, 0), 0 !== r.getImageData(t, t, 1, 1).data[0]
}), addTest("htmlimports", "import" in createElement("link")), Modernizr.addTest("olreversed", "reversed" in createElement("ol")), Modernizr.addTest("userdata", !!createElement("div").addBehavior), Modernizr.addTest("video", function() {
var e = createElement("video"),
t = !1;
try {
(t = !!e.canPlayType) && (t = new Boolean(t), t.ogg = e.canPlayType('video/ogg; codecs="theora"').replace(/^no$/, ""), t.h264 = e.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/, ""), t.webm = e.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/, ""), t.vp9 = e.canPlayType('video/webm; codecs="vp9"').replace(/^no$/, ""), t.hls = e.canPlayType('application/x-mpegURL; codecs="avc1.42E01E"').replace(/^no$/, ""))
} catch (n) {}
return t
}), Modernizr.addTest("vml", function() {
var e, t = createElement("div"),
n = !1;
return isSVG || (t.innerHTML = '', e = t.firstChild, e.style.behavior = "url(#default#VML)", n = e ? "object" == typeof e.adj : !0), n
}), Modernizr.addTest("webanimations", "animate" in createElement("div")), Modernizr.addTest("webgl", function() {
var e = createElement("canvas"),
t = "probablySupportsContext" in e ? "probablySupportsContext" : "supportsContext";
return t in e ? e[t]("webgl") || e[t]("experimental-webgl") : "WebGLRenderingContext" in window
}), Modernizr.addTest("adownload", !window.externalHost && "download" in createElement("a")), Modernizr.addTest("audioloop", "loop" in createElement("audio")), Modernizr.addTest("audiopreload", "preload" in createElement("audio")), Modernizr.addTest("canvasblending", function() {
if (Modernizr.canvas === !1) return !1;
var e = createElement("canvas").getContext("2d");
try {
e.globalCompositeOperation = "screen"
} catch (t) {}
return "screen" === e.globalCompositeOperation
});
var canvas = createElement("canvas");
Modernizr.addTest("todataurljpeg", function() {
return !!Modernizr.canvas && 0 === canvas.toDataURL("image/jpeg").indexOf("data:image/jpeg")
}), Modernizr.addTest("todataurlpng", function() {
return !!Modernizr.canvas && 0 === canvas.toDataURL("image/png").indexOf("data:image/png")
}), Modernizr.addTest("todataurlwebp", function() {
var e = !1;
try {
e = !!Modernizr.canvas && 0 === canvas.toDataURL("image/webp").indexOf("data:image/webp")
} catch (t) {}
return e
}), Modernizr.addTest("canvaswinding", function() {
if (Modernizr.canvas === !1) return !1;
var e = createElement("canvas").getContext("2d");
return e.rect(0, 0, 10, 10), e.rect(2, 2, 6, 6), e.isPointInPath(5, 5, "evenodd") === !1
}), Modernizr.addTest("regions", function() {
if (isSVG) return !1;
var e = Modernizr.prefixed("flowFrom"),
t = Modernizr.prefixed("flowInto"),
n = !1;
if (!e || !t) return n;
var r = createElement("iframe"),
o = createElement("div"),
i = createElement("div"),
a = createElement("div"),
d = "modernizr_flow_for_regions_check";
i.innerText = "M", o.style.cssText = "top: 150px; left: 150px; padding: 0px;", a.style.cssText = "width: 50px; height: 50px; padding: 42px;", a.style[e] = d, o.appendChild(i), o.appendChild(a), docElement.appendChild(o);
var s, A, l = i.getBoundingClientRect();
return i.style[t] = d, s = i.getBoundingClientRect(), A = parseInt(s.left - l.left, 10), docElement.removeChild(o), 42 == A ? n = !0 : (docElement.appendChild(r), l = r.getBoundingClientRect(), r.style[t] = d, s = r.getBoundingClientRect(), l.height > 0 && l.height !== s.height && 0 === s.height && (n = !0)), i = a = o = r = undefined, n
}), Modernizr.addTest("hidden", "hidden" in createElement("a")), Modernizr.addTest("template", "content" in createElement("template")), Modernizr.addTest("unknownelements", function() {
var e = createElement("a");
return e.innerHTML = "", 1 === e.childNodes.length
}), Modernizr.addTest("bgpositionshorthand", function() {
var e = createElement("a"),
t = e.style,
n = "right 10px bottom 10px";
return t.cssText = "background-position: " + n + ";", t.backgroundPosition === n
}), Modernizr.addTest("capture", "capture" in createElement("input")), Modernizr.addTest("fileinput", function() {
if (navigator.userAgent.match(/(Android (1.0|1.1|1.5|1.6|2.0|2.1))|(Windows Phone (OS 7|8.0))|(XBLWP)|(ZuneWP)|(w(eb)?OSBrowser)|(webOS)|(Kindle\/(1.0|2.0|2.5|3.0))/)) return !1;
var e = createElement("input");
return e.type = "file", !e.disabled
}), Modernizr.addTest("fileinputdirectory", function() {
var e = createElement("input"),
t = "directory";
if (e.type = "file", t in e) return !0;
for (var n = 0, r = domPrefixes.length; r > n; n++)
if (domPrefixes[n] + t in e) return !0;
return !1
}), Modernizr.addTest("formattribute", function() {
var e, t = createElement("form"),
n = createElement("input"),
r = createElement("div"),
o = "formtest" + (new Date).getTime(),
i = !1;
t.id = o;
try {
n.setAttribute("form", o)
} catch (a) {
document.createAttribute && (e = document.createAttribute("form"), e.nodeValue = o, n.setAttributeNode(e))
}
return r.appendChild(t), r.appendChild(n), docElement.appendChild(r), i = t.elements && 1 === t.elements.length && n.form == t, r.parentNode.removeChild(r), i
}), Modernizr.addTest("placeholder", "placeholder" in createElement("input") && "placeholder" in createElement("textarea")), Modernizr.addTest("csscalc", function() {
var e = "width:",
t = "calc(10px);",
n = createElement("a");
return n.style.cssText = e + prefixes.join(t + e), !!n.style.length
}), Modernizr.addTest("sandbox", "sandbox" in createElement("iframe")), Modernizr.addTest("seamless", "seamless" in createElement("iframe")), Modernizr.addTest("srcdoc", "srcdoc" in createElement("iframe")), Modernizr.addAsyncTest(function() {
if (!Modernizr.canvas) return !1;
var e = new Image,
t = createElement("canvas"),
n = t.getContext("2d");
e.onload = function() {
addTest("apng", function() {
return "undefined" == typeof t.getContext ? !1 : (n.drawImage(e, 0, 0), 0 === n.getImageData(0, 0, 1, 1).data[3])
})
}, e.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACGFjVEwAAAABAAAAAcMq2TYAAAANSURBVAiZY2BgYPgPAAEEAQB9ssjfAAAAGmZjVEwAAAAAAAAAAQAAAAEAAAAAAAAAAAD6A+gBAbNU+2sAAAARZmRBVAAAAAEImWNgYGBgAAAABQAB6MzFdgAAAABJRU5ErkJggg=="
}), Modernizr.addTest("sizes", "sizes" in createElement("img")), Modernizr.addTest("cubicbezierrange", function() {
var e = createElement("a");
return e.style.cssText = prefixes.join("transition-timing-function:cubic-bezier(1,0,0,1.1); "), !!e.style.length
}), Modernizr.addTest("srcset", "srcset" in createElement("img")), Modernizr.addTest("inputformaction", !!("formAction" in createElement("input")), {
aliases: ["input-formaction"]
}), Modernizr.addTest("inputformenctype", !!("formEnctype" in createElement("input")), {
aliases: ["input-formenctype"]
}), Modernizr.addTest("inputformmethod", !!("formMethod" in createElement("input"))), Modernizr.addTest("inputformtarget", !!("formtarget" in createElement("input")), {
aliases: ["input-formtarget"]
}), Modernizr.addTest("scriptasync", "async" in createElement("script")), Modernizr.addTest("scriptdefer", "defer" in createElement("script")), Modernizr.addTest("stylescoped", "scoped" in createElement("style")), Modernizr.addTest("inlinesvg", function() {
var e = createElement("div");
return e.innerHTML = "", "http://www.w3.org/2000/svg" == ("undefined" != typeof SVGRect && e.firstChild && e.firstChild.namespaceURI);
}), Modernizr.addTest("textareamaxlength", !!("maxLength" in createElement("textarea"))), Modernizr.addAsyncTest(function() {
function e(n) {
clearTimeout(t), r.removeEventListener("playing", e, !1), addTest("videoautoplay", n && "playing" === n.type || 0 !== r.currentTime), r.parentNode.removeChild(r)
}
var t, n = 300,
r = createElement("video"),
o = r.style;
if (!(Modernizr.video && "autoplay" in r)) return void addTest("videoautoplay", !1);
o.position = "absolute", o.height = 0, o.width = 0;
try {
if (Modernizr.video.ogg) r.src = "data:video/ogg;base64,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";
else {
if (!Modernizr.video.h264) return void addTest("videoautoplay", !1);
r.src = "data:video/mp4;base64,AAAAHGZ0eXBtcDQyAAAAAG1wNDJpc29tYXZjMQAAAz5tb292AAAAbG12aGQAAAAAzaNacc2jWnEAAV+QAAFfkAABAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAGGlvZHMAAAAAEICAgAcAT////3//AAACQ3RyYWsAAABcdGtoZAAAAAHNo1pxzaNacQAAAAEAAAAAAAFfkAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAEAAAABAAAAAAAd9tZGlhAAAAIG1kaGQAAAAAzaNacc2jWnEAAV+QAAFfkFXEAAAAAAAhaGRscgAAAAAAAAAAdmlkZQAAAAAAAAAAAAAAAAAAAAGWbWluZgAAABR2bWhkAAAAAQAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAABVnN0YmwAAACpc3RzZAAAAAAAAAABAAAAmWF2YzEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAEAAQAEgAAABIAAAAAAAAAAEOSlZUL0FWQyBDb2RpbmcAAAAAAAAAAAAAAAAAAAAAAAAY//8AAAAxYXZjQwH0AAr/4QAZZ/QACq609NQYBBkAAAMAAQAAAwAKjxImoAEABWjOAa8gAAAAEmNvbHJuY2xjAAYAAQAGAAAAGHN0dHMAAAAAAAAAAQAAAAUAAEZQAAAAKHN0c3oAAAAAAAAAAAAAAAUAAAIqAAAACAAAAAgAAAAIAAAACAAAAChzdHNjAAAAAAAAAAIAAAABAAAABAAAAAEAAAACAAAAAQAAAAEAAAAYc3RjbwAAAAAAAAACAAADYgAABaQAAAAUc3RzcwAAAAAAAAABAAAAAQAAABFzZHRwAAAAAAREREREAAAAb3VkdGEAAABnbWV0YQAAAAAAAAAhaGRscgAAAAAAAAAAbWRpcgAAAAAAAAAAAAAAAAAAAAA6aWxzdAAAADKpdG9vAAAAKmRhdGEAAAABAAAAAEhhbmRCcmFrZSAwLjkuOCAyMDEyMDcxODAwAAACUm1kYXQAAAHkBgX/4NxF6b3m2Ui3lizYINkj7u94MjY0IC0gY29yZSAxMjAgLSBILjI2NC9NUEVHLTQgQVZDIGNvZGVjIC0gQ29weWxlZnQgMjAwMy0yMDExIC0gaHR0cDovL3d3dy52aWRlb2xhbi5vcmcveDI2NC5odG1sIC0gb3B0aW9uczogY2FiYWM9MCByZWY9MSBkZWJsb2NrPTE6MDowIGFuYWx5c2U9MHgxOjAgbWU9ZXNhIHN1Ym1lPTkgcHN5PTAgbWl4ZWRfcmVmPTAgbWVfcmFuZ2U9NCBjaHJvbWFfbWU9MSB0cmVsbGlzPTAgOHg4ZGN0PTAgY3FtPTAgZGVhZHpvbmU9MjEsMTEgZmFzdF9wc2tpcD0wIGNocm9tYV9xcF9vZmZzZXQ9MCB0aHJlYWRzPTYgc2xpY2VkX3RocmVhZHM9MCBucj0wIGRlY2ltYXRlPTEgaW50ZXJsYWNlZD0wIGJsdXJheV9jb21wYXQ9MCBjb25zdHJhaW5lZF9pbnRyYT0wIGJmcmFtZXM9MCB3ZWlnaHRwPTAga2V5aW50PTUwIGtleWludF9taW49NSBzY2VuZWN1dD00MCBpbnRyYV9yZWZyZXNoPTAgcmM9Y3FwIG1idHJlZT0wIHFwPTAAgAAAAD5liISscR8A+E4ACAACFoAAITAAAgsAAPgYCoKgoC+L4vi+KAvi+L4YfAEAACMzgABF9AAEUGUgABDJiXnf4AAAAARBmiKUAAAABEGaQpQAAAAEQZpilAAAAARBmoKU"
}
} catch (i) {
return void addTest("videoautoplay", !1)
}
r.setAttribute("autoplay", ""), r.style.cssText = "display:none", docElement.appendChild(r), setTimeout(function() {
r.addEventListener("playing", e, !1), t = setTimeout(e, n)
}, 0)
}), Modernizr.addTest("hsla", function() {
var e = createElement("a").style;
return e.cssText = "background-color:hsla(120,40%,100%,.5)", contains(e.backgroundColor, "rgba") || contains(e.backgroundColor, "hsla")
}), Modernizr.addTest("videoloop", "loop" in createElement("video")), Modernizr.addTest("videopreload", "preload" in createElement("video")), Modernizr.addAsyncTest(function() {
if (Modernizr.webglextensions = new Boolean(!1), Modernizr.webgl) {
var e, t, n;
try {
e = createElement("canvas"), t = e.getContext("webgl") || e.getContext("experimental-webgl"), n = t.getSupportedExtensions()
} catch (r) {
return
}
t !== undefined && (Modernizr.webglextensions = new Boolean(!0));
for (var o = -1, i = n.length; ++o < i;) Modernizr.webglextensions[n[o]] = !0;
e = undefined
}
}), Modernizr.addTest("cssgradients", function() {
var e = "background-image:",
t = "gradient(linear,left top,right bottom,from(#9f9),to(white));",
n = "linear-gradient(left top,#9f9, white);",
r = e + prefixes.join(n + e).slice(0, -e.length);
Modernizr._config.usePrefixes && (r += e + "-webkit-" + t);
var o = createElement("a"),
i = o.style;
return i.cssText = r, ("" + i.backgroundImage).indexOf("gradient") > -1
}), Modernizr.addTest("multiplebgs", function() {
var e = createElement("a").style;
return e.cssText = "background:url(https://),url(https://),red url(https://)", /(url\s*\(.*?){3}/.test(e.background)
}), Modernizr.addTest("opacity", function() {
var e = createElement("a").style;
return e.cssText = prefixes.join("opacity:.55;"), /^0.55$/.test(e.opacity)
}), Modernizr.addTest("csspointerevents", function() {
var e = createElement("a").style;
return e.cssText = "pointer-events:auto", "auto" === e.pointerEvents
}), Modernizr.addTest("csspositionsticky", function() {
var e = "position:",
t = "sticky",
n = createElement("a"),
r = n.style;
return r.cssText = e + prefixes.join(t + ";" + e).slice(0, -e.length), -1 !== r.position.indexOf(t)
}), Modernizr.addTest("cssremunit", function() {
var e = createElement("a").style;
try {
e.fontSize = "3rem"
} catch (t) {}
return /rem/.test(e.fontSize)
}), Modernizr.addTest("rgba", function() {
var e = createElement("a").style;
return e.cssText = "background-color:rgba(150,255,150,.5)", ("" + e.backgroundColor).indexOf("rgba") > -1
}), Modernizr.addTest("dataset", function() {
var e = createElement("div");
return e.setAttribute("data-a-b", "c"), !(!e.dataset || "c" !== e.dataset.aB)
}), Modernizr.addTest("outputelem", "value" in createElement("output")), Modernizr.addTest("progressbar", createElement("progress").max !== undefined), Modernizr.addTest("meter", createElement("meter").max !== undefined), Modernizr.addTest("time", "valueAsDate" in createElement("time")), Modernizr.addTest("texttrackapi", "function" == typeof createElement("video").addTextTrack), Modernizr.addTest("track", "kind" in createElement("track")), Modernizr.addTest("ruby", function() {
function e(e, t) {
var n;
return window.getComputedStyle ? n = document.defaultView.getComputedStyle(e, null).getPropertyValue(t) : e.currentStyle && (n = e.currentStyle[t]), n
}
function t() {
docElement.removeChild(n), n = null, r = null, o = null
}
var n = createElement("ruby"),
r = createElement("rt"),
o = createElement("rp"),
i = "display",
a = "fontSize";
return n.appendChild(o), n.appendChild(r), docElement.appendChild(n), "none" == e(o, i) || "ruby" == e(n, i) && "ruby-text" == e(r, i) || "6pt" == e(o, a) && "6pt" == e(r, a) ? (t(), !0) : (t(), !1)
});
var modElem = {
elem: createElement("modernizr")
};
Modernizr._q.push(function() {
delete modElem.elem
}), Modernizr.addTest("csschunit", function() {
var e, t = modElem.elem.style;
try {
t.fontSize = "3ch", e = -1 !== t.fontSize.indexOf("ch")
} catch (n) {
e = !1
}
return e
}), Modernizr.addTest("cssexunit", function() {
var e, t = modElem.elem.style;
try {
t.fontSize = "3ex", e = -1 !== t.fontSize.indexOf("ex")
} catch (n) {
e = !1
}
return e
});
var inputElem = createElement("input"),
inputattrs = "autocomplete autofocus list placeholder max min multiple pattern required step".split(" "),
attrs = {};
Modernizr.input = function(e) {
for (var t = 0, n = e.length; n > t; t++) attrs[e[t]] = !!(e[t] in inputElem);
return attrs.list && (attrs.list = !(!createElement("datalist") || !window.HTMLDataListElement)), attrs
}(inputattrs), Modernizr.addTest("datalistelem", Modernizr.input.list);
var inputtypes = "search tel url email datetime date month week time datetime-local number range color".split(" "),
inputs = {};
Modernizr.inputtypes = function(e) {
for (var t, n, r, o = e.length, i = ":)", a = 0; o > a; a++) inputElem.setAttribute("type", t = e[a]), r = "text" !== inputElem.type && "style" in inputElem, r && (inputElem.value = i, inputElem.style.cssText = "position:absolute;visibility:hidden;", /^range$/.test(t) && inputElem.style.WebkitAppearance !== undefined ? (docElement.appendChild(inputElem), n = document.defaultView, r = n.getComputedStyle && "textfield" !== n.getComputedStyle(inputElem, null).WebkitAppearance && 0 !== inputElem.offsetHeight, docElement.removeChild(inputElem)) : /^(search|tel)$/.test(t) || (r = /^(url|email|number)$/.test(t) ? inputElem.checkValidity && inputElem.checkValidity() === !1 : inputElem.value != i)), inputs[e[a]] = !!r;
return inputs
}(inputtypes), Modernizr.addAsyncTest(function() {
var e, t, n = function(e) {
e.fake && e.parentNode && e.parentNode.removeChild(e)
},
r = function(e, t) {
var n = !!e;
if (n && (n = new Boolean(n), n.blocked = "blocked" === e), addTest("flash", function() {
return n
}), t && s.contains(t)) {
for (; t.parentNode !== s;) t = t.parentNode;
s.removeChild(t)
}
};
try {
t = "ActiveXObject" in window && "Pan" in new window.ActiveXObject("ShockwaveFlash.ShockwaveFlash")
} catch (o) {}
if (e = !("plugins" in navigator && "Shockwave Flash" in navigator.plugins || t), e || isSVG) r(!1);
else {
var i, a, d = createElement("embed"),
s = getBody();
if (d.type = "application/x-shockwave-flash", s.appendChild(d), docElement.appendChild(s), !("Pan" in d || t)) return r("blocked", d), void n(s);
i = function() {
return docElement.contains(s) ? (docElement.contains(d) ? (a = d.style.cssText, "" !== a ? r("blocked", d) : r(!0, d)) : r("blocked"), void n(s)) : (s = document.body || s, d = createElement("embed"), d.type = "application/x-shockwave-flash", s.appendChild(d), setTimeout(i, 1e3))
}, setTimeout(i, 10)
}
});
var testStyles = ModernizrProto.testStyles = injectElementWithStyles;
testStyles("#modernizr { height: 50vh; }", function(e) {
var t = parseInt(window.innerHeight / 2, 10),
n = parseInt((window.getComputedStyle ? getComputedStyle(e, null) : e.currentStyle).height, 10);
Modernizr.addTest("cssvhunit", n == t)
}), testStyles("#modernizr1{width: 50vmax}#modernizr2{width:50px;height:50px;overflow:scroll}", function(e) {
var t = e.childNodes[1],
n = e.childNodes[0],
r = parseInt((n.offsetWidth - n.clientWidth) / 2, 10),
o = docElement.clientWidth / 100,
i = docElement.clientHeight / 100,
a = parseInt(50 * Math.max(o, i), 10),
d = parseInt((window.getComputedStyle ? getComputedStyle(t, null) : t.currentStyle).width, 10);
Modernizr.addTest("cssvmaxunit", roundedEquals(a, d) || roundedEquals(a, d - r))
}, 2), testStyles("#modernizr { width: 50vw; }", function(e) {
var t = parseInt(window.innerWidth / 2, 10),
n = parseInt((window.getComputedStyle ? getComputedStyle(e, null) : e.currentStyle).width, 10);
Modernizr.addTest("cssvwunit", n == t)
}), testStyles("#modernizr1{width: 50vm;width:50vmin}#modernizr2{width:50px;height:50px;overflow:scroll}", function(e) {
var t = e.childNodes[1],
n = e.childNodes[0],
r = parseInt((n.offsetWidth - n.clientWidth) / 2, 10),
o = docElement.clientWidth / 100,
i = docElement.clientHeight / 100,
a = parseInt(50 * Math.min(o, i), 10),
d = parseInt((window.getComputedStyle ? getComputedStyle(t, null) : t.currentStyle).width, 10);
Modernizr.addTest("cssvminunit", roundedEquals(a, d) || roundedEquals(a, d - r))
}, 2), Modernizr.addTest("hiddenscroll", function() {
return testStyles("#modernizr {width:100px;height:100px;overflow:scroll}", function(e) {
return e.offsetWidth === e.clientWidth
})
}), Modernizr.addTest("mathml", function() {
var e;
return testStyles("#modernizr{position:absolute;display:inline-block}", function(t) {
t.innerHTML += "", e = t.offsetHeight > t.offsetWidth
}), e
}), Modernizr.addTest("touchevents", function() {
var e;
if ("ontouchstart" in window || window.DocumentTouch && document instanceof DocumentTouch) e = !0;
else {
var t = ["@media (", prefixes.join("touch-enabled),("), "heartz", ")", "{#modernizr{top:9px;position:absolute}}"].join("");
testStyles(t, function(t) {
e = 9 === t.offsetTop
})
}
return e
}), Modernizr.addTest("unicoderange", function() {
return Modernizr.testStyles('@font-face{font-family:"unicodeRange";src:local("Arial");unicode-range:U+0020,U+002E}#modernizr span{font-size:20px;display:inline-block;font-family:"unicodeRange",monospace}#modernizr .mono{font-family:monospace}', function(e) {
for (var t = [".", ".", "m", "m"], n = 0; n < t.length; n++) {
var r = createElement("span");
r.innerHTML = t[n], r.className = n % 2 ? "mono" : "", e.appendChild(r), t[n] = r.clientWidth
}
return t[0] !== t[1] && t[2] === t[3]
})
}), Modernizr.addTest("unicode", function() {
var e, t = createElement("span"),
n = createElement("span");
return testStyles("#modernizr{font-family:Arial,sans;font-size:300em;}", function(r) {
t.innerHTML = isSVG ? "妇" : "ᝣ", n.innerHTML = isSVG ? "☆" : "☆", r.appendChild(t), r.appendChild(n), e = "offsetWidth" in t && t.offsetWidth !== n.offsetWidth
}), e
}), testStyles("#modernizr div {width:1px} #modernizr div:nth-child(2n) {width:2px;}", function(e) {
Modernizr.addTest("nthchild", function() {
for (var t = e.getElementsByTagName("div"), n = !0, r = 0; 5 > r; r++) n = n && t[r].offsetWidth === r % 2 + 1;
return n
})
}, 5), testStyles("#modernizr{overflow: scroll; width: 40px; height: 40px; }#" + prefixes.join("scrollbar{width:0px} #modernizr::").split("#").slice(1).join("#") + "scrollbar{width:0px}", function(e) {
Modernizr.addTest("cssscrollbar", 40 == e.scrollWidth)
}), Modernizr.addTest("siblinggeneral", function() {
return testStyles("#modernizr div {width:100px} #modernizr div ~ div {width:200px;display:block}", function(e) {
return 200 == e.lastChild.offsetWidth
}, 2)
}), Modernizr.addTest("oninput", function() {
var e, t = createElement("input");
if (t.setAttribute("oninput", "return"), hasEvent("oninput", docElement) || "function" == typeof t.oninput) return !0;
try {
var n = document.createEvent("KeyboardEvent");
e = !1;
var r = function(t) {
e = !0, t.preventDefault(), t.stopPropagation()
};
n.initKeyEvent("keypress", !0, !0, window, !1, !1, !1, !1, 0, "e".charCodeAt(0)), docElement.appendChild(t), t.addEventListener("input", r, !1), t.focus(), t.dispatchEvent(n), t.removeEventListener("input", r, !1), docElement.removeChild(t)
} catch (o) {
e = !1
}
return e
}), Modernizr.addTest("formvalidation", function() {
var e = createElement("form");
if (!("checkValidity" in e && "addEventListener" in e)) return !1;
if ("reportValidity" in e) return !0;
var t, n = !1;
return Modernizr.formvalidationapi = !0, e.addEventListener("submit", function(e) {
window.opera || e.preventDefault(), e.stopPropagation()
}, !1), e.innerHTML = '', testStyles("#modernizr form{position:absolute;top:-99999em}", function(r) {
r.appendChild(e), t = e.getElementsByTagName("input")[0], t.addEventListener("invalid", function(e) {
n = !0, e.preventDefault(), e.stopPropagation()
}, !1), Modernizr.formvalidationmessage = !!t.validationMessage, e.getElementsByTagName("button")[0].click()
}), n
}), Modernizr.addTest("localizednumber", function() {
if (!Modernizr.inputtypes.number) return !1;
if (!Modernizr.formvalidation) return !1;
var e, t = createElement("div"),
n = getBody(),
r = function() {
return docElement.insertBefore(n, docElement.firstElementChild || docElement.firstChild)
}();
t.innerHTML = '';
var o = t.childNodes[0];
r.appendChild(t), o.focus();
try {
document.execCommand("InsertText", !1, "1,1")
} catch (i) {}
return e = "number" === o.type && 1.1 === o.valueAsNumber && o.checkValidity(), r.removeChild(t), n.fake && r.parentNode.removeChild(r), e
}), Modernizr.addTest("checked", function() {
return testStyles("#modernizr {position:absolute} #modernizr input {margin-left:10px} #modernizr :checked {margin-left:20px;display:block}", function(e) {
var t = createElement("input");
return t.setAttribute("type", "checkbox"), t.setAttribute("checked", "checked"), e.appendChild(t), 20 === t.offsetLeft
})
}), testStyles("#modernizr{display: table; direction: ltr}#modernizr div{display: table-cell; padding: 10px}", function(e) {
var t, n = e.childNodes;
t = n[0].offsetLeft < n[1].offsetLeft, Modernizr.addTest("displaytable", t, {
aliases: ["display-table"]
})
}, 2);
var blacklist = function() {
var e = navigator.userAgent,
t = e.match(/applewebkit\/([0-9]+)/gi) && parseFloat(RegExp.$1),
n = e.match(/w(eb)?osbrowser/gi),
r = e.match(/windows phone/gi) && e.match(/iemobile\/([0-9])+/gi) && parseFloat(RegExp.$1) >= 9,
o = 533 > t && e.match(/android/gi);
return n || o || r
}();
blacklist ? Modernizr.addTest("fontface", !1) : testStyles('@font-face {font-family:"font";src:url("https://")}', function(e, t) {
var n = document.getElementById("smodernizr"),
r = n.sheet || n.styleSheet,
o = r ? r.cssRules && r.cssRules[0] ? r.cssRules[0].cssText : r.cssText || "" : "",
i = /src/i.test(o) && 0 === o.indexOf(t.split(" ")[0]);
Modernizr.addTest("fontface", i)
}), testStyles('#modernizr{font:0/0 a}#modernizr:after{content:":)";visibility:hidden;font:7px/1 a}', function(e) {
Modernizr.addTest("generatedcontent", e.offsetHeight >= 7)
}), Modernizr.addTest("cssinvalid", function() {
return testStyles("#modernizr input{height:0;border:0;padding:0;margin:0;width:10px} #modernizr input:invalid{width:50px}", function(e) {
var t = createElement("input");
return t.required = !0, e.appendChild(t), t.clientWidth > 10
})
}), testStyles("#modernizr div {width:100px} #modernizr :last-child{width:200px;display:block}", function(e) {
Modernizr.addTest("lastchild", e.lastChild.offsetWidth > e.firstChild.offsetWidth)
}, 2), testStyles("#modernizr{position: absolute; top: -10em; visibility:hidden; font: normal 10px arial;}#subpixel{float: left; font-size: 33.3333%;}", function(e) {
var t = e.firstChild;
t.innerHTML = "This is a text written in Arial", Modernizr.addTest("subpixelfont", window.getComputedStyle ? "44px" !== window.getComputedStyle(t, null).getPropertyValue("width") : !1)
}, 1, ["subpixel"]), Modernizr.addTest("cssvalid", function() {
return testStyles("#modernizr input{height:0;border:0;padding:0;margin:0;width:10px} #modernizr input:valid{width:50px}", function(e) {
var t = createElement("input");
return e.appendChild(t), t.clientWidth > 10
})
}), Modernizr.addTest("details", function() {
var e, t = createElement("details");
return "open" in t ? (testStyles("#modernizr details{display:block}", function(n) {
n.appendChild(t), t.innerHTML = "ab", e = t.offsetHeight, t.open = !0, e = e != t.offsetHeight
}), e) : !1
});
var mq = function() {
var e = window.matchMedia || window.msMatchMedia;
return e ? function(t) {
var n = e(t);
return n && n.matches || !1
} : function(e) {
var t = !1;
return injectElementWithStyles("@media " + e + " { #modernizr { position: absolute; } }", function(e) {
t = "absolute" == (window.getComputedStyle ? window.getComputedStyle(e, null) : e.currentStyle).position
}), t
}
}();
ModernizrProto.mq = mq, Modernizr.addTest("mediaqueries", mq("only all"));
var toStringFn = {}.toString;
Modernizr.addTest("svgclippaths", function() {
return !!document.createElementNS && /SVGClipPath/.test(toStringFn.call(document.createElementNS("http://www.w3.org/2000/svg", "clipPath")))
}), Modernizr.addTest("svgforeignobject", function() {
return !!document.createElementNS && /SVGForeignObject/.test(toStringFn.call(document.createElementNS("http://www.w3.org/2000/svg", "foreignObject")))
}), Modernizr.addTest("smil", function() {
return !!document.createElementNS && /SVGAnimate/.test(toStringFn.call(document.createElementNS("http://www.w3.org/2000/svg", "animate")))
});
var testXhrType = function(e) {
if ("undefined" == typeof XMLHttpRequest) return !1;
var t = new XMLHttpRequest;
t.open("get", "/", !0);
try {
t.responseType = e
} catch (n) {
return !1
}
return "response" in t && t.responseType == e
};
Modernizr.addTest("xhrresponsetypearraybuffer", testXhrType("arraybuffer")), Modernizr.addTest("xhrresponsetypedocument", testXhrType("document")), Modernizr.addTest("xhrresponsetypejson", testXhrType("json")), Modernizr.addTest("xhrresponsetypetext", testXhrType("text")), Modernizr.addTest("xhrresponsetypeblob", testXhrType("blob"));
var mStyle = {
style: modElem.elem.style
};
Modernizr._q.unshift(function() {
delete mStyle.style
});
var testProp = ModernizrProto.testProp = function(e, t, n) {
return testProps([e], undefined, t, n)
};
Modernizr.addTest("textshadow", testProp("textShadow", "1px 1px")), ModernizrProto.testAllProps = testPropsAll, ModernizrProto.testAllProps = testAllProps, Modernizr.addTest("borderradius", testAllProps("borderRadius", "0px", !0)), Modernizr.addTest("boxshadow", testAllProps("boxShadow", "1px 1px", !0)), Modernizr.addTest("csstransitions", testAllProps("transition", "all", !0)), Modernizr.addTest("csspseudotransitions", function() {
var e = !1;
if (!Modernizr.csstransitions || !window.getComputedStyle) return e;
var t = '#modernizr:before { content:" "; font-size:5px;' + Modernizr._prefixes.join("transition:0s 100s;") + "}#modernizr.trigger:before { font-size:10px; }";
return Modernizr.testStyles(t, function(t) {
window.getComputedStyle(t, ":before").getPropertyValue("font-size"), t.className += "trigger", e = "5px" === window.getComputedStyle(t, ":before").getPropertyValue("font-size")
}), e
}), Modernizr.addTest("boxsizing", testAllProps("boxSizing", "border-box", !0) && (document.documentMode === undefined || document.documentMode > 7)), Modernizr.addTest("flexboxtweener", testAllProps("flexAlign", "end", !0)), Modernizr.addTest("flexboxlegacy", testAllProps("boxDirection", "reverse", !0)), Modernizr.addTest("overflowscrolling", testAllProps("overflowScrolling", "touch", !0)), Modernizr.addTest("cssresize", testAllProps("resize", "both", !0)), Modernizr.addTest("shapes", testAllProps("shapeOutside", "content-box", !0)), Modernizr.addTest("flexwrap", testAllProps("flexWrap", "wrap", !0)), Modernizr.addTest("cssanimations", testAllProps("animationName", "a", !0)), Modernizr.addTest("csspseudoanimations", function() {
var e = !1;
if (!Modernizr.cssanimations || !window.getComputedStyle) return e;
var t = ["@", Modernizr._prefixes.join("keyframes csspseudoanimations { from { font-size: 10px; } }@").replace(/\@$/, ""), '#modernizr:before { content:" "; font-size:5px;', Modernizr._prefixes.join("animation:csspseudoanimations 1ms infinite;"), "}"].join("");
return Modernizr.testStyles(t, function(t) {
e = "10px" === window.getComputedStyle(t, ":before").getPropertyValue("font-size")
}), e
}), Modernizr.addTest("appearance", testAllProps("appearance")), Modernizr.addTest("bgpositionxy", function() {
return testAllProps("backgroundPositionX", "3px", !0) && testAllProps("backgroundPositionY", "5px", !0)
}), Modernizr.addTest("backgroundcliptext", function() {
return testAllProps("backgroundClip", "text")
}), Modernizr.addTest("bgrepeatround", testAllProps("backgroundRepeat", "round")), Modernizr.addTest("bgrepeatspace", testAllProps("backgroundRepeat", "space")), Modernizr.addTest("backgroundsize", testAllProps("backgroundSize", "100%", !0)), Modernizr.addTest("bgsizecover", testAllProps("backgroundSize", "cover")), Modernizr.addTest("borderimage", testAllProps("borderImage", "url() 1", !0)),
function() {
Modernizr.addTest("csscolumns", function() {
var e = !1,
t = testAllProps("columnCount");
try {
(e = !!t) && (e = new Boolean(e))
} catch (n) {}
return e
});
for (var e, t, n = ["Width", "Span", "Fill", "Gap", "Rule", "RuleColor", "RuleStyle", "RuleWidth", "BreakBefore", "BreakAfter", "BreakInside"], r = 0; r < n.length; r++) e = n[r].toLowerCase(), t = testAllProps("column" + n[r]), ("breakbefore" === e || "breakafter" === e || "breakinside" == e) && (t = t || testAllProps(n[r])), Modernizr.addTest("csscolumns." + e, t)
}(), Modernizr.addTest("displayrunin", testAllProps("display", "run-in"), {
aliases: ["display-runin"]
}), Modernizr.addTest("ellipsis", testAllProps("textOverflow", "ellipsis")), Modernizr.addTest("cssfilters", function() {
if (Modernizr.supports) return testAllProps("filter", "blur(2px)");
var e = createElement("a");
return e.style.cssText = prefixes.join("filter:blur(2px); "), !!e.style.length && (document.documentMode === undefined || document.documentMode > 9)
}), Modernizr.addTest("flexbox", testAllProps("flexBasis", "1px", !0)), Modernizr.addAsyncTest(function() {
function e() {
function n() {
try {
var e = createElement("div"),
t = createElement("span"),
n = e.style,
r = 0,
o = 0,
i = !1,
a = document.body.firstElementChild || document.body.firstChild;
return e.appendChild(t), t.innerHTML = "Bacon ipsum dolor sit amet jerky velit in culpa hamburger et. Laborum dolor proident, enim dolore duis commodo et strip steak. Salami anim et, veniam consectetur dolore qui tenderloin jowl velit sirloin. Et ad culpa, fatback cillum jowl ball tip ham hock nulla short ribs pariatur aute. Pig pancetta ham bresaola, ut boudin nostrud commodo flank esse cow tongue culpa. Pork belly bresaola enim pig, ea consectetur nisi. Fugiat officia turkey, ea cow jowl pariatur ullamco proident do laborum velit sausage. Magna biltong sint tri-tip commodo sed bacon, esse proident aliquip. Ullamco ham sint fugiat, velit in enim sed mollit nulla cow ut adipisicing nostrud consectetur. Proident dolore beef ribs, laborum nostrud meatball ea laboris rump cupidatat labore culpa. Shankle minim beef, velit sint cupidatat fugiat tenderloin pig et ball tip. Ut cow fatback salami, bacon ball tip et in shank strip steak bresaola. In ut pork belly sed mollit tri-tip magna culpa veniam, short ribs qui in andouille ham consequat. Dolore bacon t-bone, velit short ribs enim strip steak nulla. Voluptate labore ut, biltong swine irure jerky. Cupidatat excepteur aliquip salami dolore. Ball tip strip steak in pork dolor. Ad in esse biltong. Dolore tenderloin exercitation ad pork loin t-bone, dolore in chicken ball tip qui pig. Ut culpa tongue, sint ribeye dolore ex shank voluptate hamburger. Jowl et tempor, boudin pork chop labore ham hock drumstick consectetur tri-tip elit swine meatball chicken ground round. Proident shankle mollit dolore. Shoulder ut duis t-bone quis reprehenderit. Meatloaf dolore minim strip steak, laboris ea aute bacon beef ribs elit shank in veniam drumstick qui. Ex laboris meatball cow tongue pork belly. Ea ball tip reprehenderit pig, sed fatback boudin dolore flank aliquip laboris eu quis. Beef ribs duis beef, cow corned beef adipisicing commodo nisi deserunt exercitation. Cillum dolor t-bone spare ribs, ham hock est sirloin. Brisket irure meatloaf in, boudin pork belly sirloin ball tip. Sirloin sint irure nisi nostrud aliqua. Nostrud nulla aute, enim officia culpa ham hock. Aliqua reprehenderit dolore sunt nostrud sausage, ea boudin pork loin ut t-bone ham tempor. Tri-tip et pancetta drumstick laborum. Ham hock magna do nostrud in proident. Ex ground round fatback, venison non ribeye in.", document.body.insertBefore(e, a), n.cssText = "position:absolute;top:0;left:0;width:5em;text-align:justify;text-justification:newspaper;", r = t.offsetHeight, o = t.offsetWidth, n.cssText = "position:absolute;top:0;left:0;width:5em;text-align:justify;text-justification:newspaper;" + prefixes.join("hyphens:auto; "), i = t.offsetHeight != r || t.offsetWidth != o, document.body.removeChild(e), e.removeChild(t), i
} catch (d) {
return !1
}
}
function r(e, t) {
try {
var n = createElement("div"),
r = createElement("span"),
o = n.style,
i = 0,
a = !1,
d = !1,
s = !1,
A = document.body.firstElementChild || document.body.firstChild;
return o.cssText = "position:absolute;top:0;left:0;overflow:visible;width:1.25em;", n.appendChild(r), document.body.insertBefore(n, A), r.innerHTML = "mm", i = r.offsetHeight, r.innerHTML = "m" + e + "m", d = r.offsetHeight > i, t ? (r.innerHTML = "m
m", i = r.offsetWidth, r.innerHTML = "m" + e + "m", s = r.offsetWidth > i) : s = !0, d === !0 && s === !0 && (a = !0), document.body.removeChild(n), n.removeChild(r), a
} catch (l) {
return !1
}
}
function o(e) {
try {
var t, n = createElement("input"),
r = createElement("div"),
o = "lebowski",
i = !1,
a = document.body.firstElementChild || document.body.firstChild;
if (r.innerHTML = o + e + o, document.body.insertBefore(r, a), document.body.insertBefore(n, r), n.setSelectionRange ? (n.focus(), n.setSelectionRange(0, 0)) : n.createTextRange && (t = n.createTextRange(), t.collapse(!0), t.moveEnd("character", 0), t.moveStart("character", 0), t.select()), window.find) i = window.find(o + o);
else try {
t = window.self.document.body.createTextRange(), i = t.findText(o + o)
} catch (d) {
i = !1
}
return document.body.removeChild(r), document.body.removeChild(n), i
} catch (d) {
return !1
}
}
return document.body || document.getElementsByTagName("body")[0] ? (addTest("csshyphens", function() {
if (!testAllProps("hyphens", "auto", !0)) return !1;
try {
return n()
} catch (e) {
return !1
}
}), addTest("softhyphens", function() {
try {
return r("", !0) && r("", !1)
} catch (e) {
return !1
}
}), void addTest("softhyphensfind", function() {
try {
return o("") && o("")
} catch (e) {
return !1
}
})) : void setTimeout(e, t)
}
var t = 300;
setTimeout(e, t)
}), Modernizr.addTest("cssmask", testAllProps("maskRepeat", "repeat-x", !0)), Modernizr.addTest("cssreflections", testAllProps("boxReflect", "above", !0)), Modernizr.addTest("textalignlast", testAllProps("textAlignLast")), Modernizr.addTest("csstransforms", function() {
return -1 === navigator.userAgent.indexOf("Android 2.") && testAllProps("transform", "scale(1)", !0)
}), Modernizr.addTest("csstransforms3d", function() {
var e = !!testAllProps("perspective", "1px", !0),
t = Modernizr._config.usePrefixes;
if (e && (!t || "webkitPerspective" in docElement.style)) {
var n;
Modernizr.supports ? n = "@supports (perspective: 1px)" : (n = "@media (transform-3d)", t && (n += ",(-webkit-transform-3d)")), n += "{#modernizr{left:9px;position:absolute;height:5px;margin:0;padding:0;border:0}}", testStyles(n, function(t) {
e = 9 === t.offsetLeft && 5 === t.offsetHeight
})
}
return e
}), Modernizr.addTest("preserve3d", testAllProps("transformStyle", "preserve-3d")), Modernizr.addTest("userselect", testAllProps("userSelect", "none", !0));
var prefixed = ModernizrProto.prefixed = function(e, t, n) {
return 0 === e.indexOf("@") ? atRule(e) : (-1 != e.indexOf("-") && (e = cssToDOM(e)), t ? testPropsAll(e, t, n) : testPropsAll(e, "pfx"))
};
Modernizr.addTest("batteryapi", !!prefixed("battery", navigator), {
aliases: ["battery-api"]
}), Modernizr.addTest("dart", !!prefixed("startDart", navigator));
var prefixedCSS = ModernizrProto.prefixedCSS = function(e) {
var t = prefixed(e);
return t && domToCSS(t)
};
Modernizr.addTest("fullscreen", !(!prefixed("exitFullscreen", document, !1) && !prefixed("cancelFullScreen", document, !1))), Modernizr.addTest("gamepads", !!prefixed("getGamepads", navigator));
var indexeddb = prefixed("indexedDB", window);
Modernizr.addTest("indexeddb", !!indexeddb), indexeddb && Modernizr.addTest("indexeddb.deletedatabase", "deleteDatabase" in indexeddb), Modernizr.addAsyncTest(function() {
var e, t, n = prefixed("indexedDB", window),
r = "detect-blob-support",
o = !1;
if (!Modernizr.indexeddb || !Modernizr.indexeddb.deleteDatabase) return !1;
try {
n.deleteDatabase(r).onsuccess = function() {
e = n.open(r, 1), e.onupgradeneeded = function() {
e.result.createObjectStore("store")
}, e.onsuccess = function() {
t = e.result;
try {
t.transaction("store", "readwrite").objectStore("store").put(new Blob, "key"), o = !0
} catch (i) {
o = !1
} finally {
addTest("indexeddbblob", o), t.close(), n.deleteDatabase(r)
}
}
}
} catch (i) {
addTest("indexeddbblob", !1)
}
}), Modernizr.addTest("intl", !!prefixed("Intl", window)), Modernizr.addTest("pagevisibility", !!prefixed("hidden", document, !1)), Modernizr.addTest("performance", !!prefixed("performance", window)), Modernizr.addTest("pointerlock", !!prefixed("exitPointerLock", document)), Modernizr.addTest("quotamanagement", function() {
var e = prefixed("temporaryStorage", navigator),
t = prefixed("persistentStorage", navigator);
return !(!e || !t)
}), Modernizr.addTest("requestanimationframe", !!prefixed("requestAnimationFrame", window), {
aliases: ["raf"]
}), Modernizr.addTest("vibrate", !!prefixed("vibrate", navigator)), Modernizr.addTest("webintents", !!prefixed("startActivity", navigator)), Modernizr.addTest("lowbattery", function() {
var e = .2,
t = prefixed("battery", navigator);
return !!(t && !t.charging && t.level <= e)
});
var crypto = prefixed("crypto", window),
supportsGetRandomValues;
if (crypto && "getRandomValues" in crypto && "Uint32Array" in window) {
var array = new Uint32Array(10),
values = crypto.getRandomValues(array);
supportsGetRandomValues = values && is(values[0], "number")
}
Modernizr.addTest("getrandomvalues", !!supportsGetRandomValues), Modernizr.addTest("objectfit", !!prefixed("objectFit"), {
aliases: ["object-fit"]
}), Modernizr.addTest("backgroundblendmode", prefixed("backgroundBlendMode", "text")), Modernizr.addTest("filesystem", !!prefixed("requestFileSystem", window)), Modernizr.addTest("requestautocomplete", !!prefixed("requestAutocomplete", createElement("form"))), Modernizr.addTest("speechrecognition", !!prefixed("SpeechRecognition", window));
var url = prefixed("URL", window, !1);
url = url && window[url], Modernizr.addTest("bloburls", url && "revokeObjectURL" in url && "createObjectURL" in url), Modernizr.addAsyncTest(function() {
function e() {
addTest("transferables", !1), t()
}
function t() {
d && URL.revokeObjectURL(d), s && s.terminate(), o && clearTimeout(o)
}
var n = !!(Modernizr.blobconstructor && Modernizr.bloburls && Modernizr.webworkers && Modernizr.typedarrays);
if (!n) return addTest("transferables", !1);
try {
var r, o, i = 'var hello = "world"',
a = new Blob([i], {
type: "text/javascript"
}),
d = URL.createObjectURL(a),
s = new Worker(d);
s.onerror = e, o = setTimeout(e, 200), r = new ArrayBuffer(1), s.postMessage(r, [r]), addTest("transferables", 0 === r.byteLength), t()
} catch (A) {
e()
}
}), Modernizr.addTest("getusermedia", !!prefixed("getUserMedia", navigator)), Modernizr.addTest("peerconnection", !!prefixed("RTCPeerConnection", window)), Modernizr.addTest("datachannel", function() {
if (!Modernizr.peerconnection) return !1;
for (var e = 0, t = domPrefixes.length; t > e; e++) {
var n = window[domPrefixes[e] + "RTCPeerConnection"];
if (n) {
var r = new n({
iceServers: [{
url: "stun:0"
}]
});
return "createDataChannel" in r
}
}
return !1
}), Modernizr.addTest("matchmedia", !!prefixed("matchMedia", window)), Modernizr.addTest("wrapflow", function() {
var e = prefixed("wrapFlow");
if (!e || isSVG) return !1;
var t = e.replace(/([A-Z])/g, function(e, t) {
return "-" + t.toLowerCase()
}).replace(/^ms-/, "-ms-"),
n = createElement("div"),
r = createElement("div"),
o = createElement("span");
r.style.cssText = "position: absolute; left: 50px; width: 100px; height: 20px;" + t + ":end;", o.innerText = "X", n.appendChild(r), n.appendChild(o), docElement.appendChild(n);
var i = o.offsetLeft;
return docElement.removeChild(n), r = o = n = undefined, 150 == i
}), testRunner(), setClasses(classes), delete ModernizrProto.addTest, delete ModernizrProto.addAsyncTest;
for (var i = 0; i < Modernizr._q.length; i++) Modernizr._q[i]();
window.Modernizr = Modernizr
}(window, document);