(function(n,t){"use strict";typeof define=="function"&&define.amd?define(t):typeof exports=="object"?module.exports=t():n.returnExports=t()})(this,function(){var t=Function.call,n=Object.prototype,r=t.bind(n.hasOwnProperty),g=t.bind(n.propertyIsEnumerable),nt=t.bind(n.toString),v,y,s,h,u=r(n,"__defineGetter__"),i,c,p,w,f,b,a,k,d,e,o;if(u&&(v=t.bind(n.__defineGetter__),y=t.bind(n.__defineSetter__),s=t.bind(n.__lookupGetter__),h=t.bind(n.__lookupSetter__)),i=function(n){return n==null||typeof n!="object"&&typeof n!="function"},Object.getPrototypeOf||(Object.getPrototypeOf=function(t){var i=t.__proto__;return i||i===null?i:nt(t.constructor)==="[object Function]"?t.constructor.prototype:t instanceof Object?n:null}),c=function(n){try{return n.sentinel=0,Object.getOwnPropertyDescriptor(n,"sentinel").value===0}catch(t){return!1}},Object.defineProperty&&(p=c({}),w=typeof document=="undefined"||c(document.createElement("div")),w&&p||(f=Object.getOwnPropertyDescriptor)),(!Object.getOwnPropertyDescriptor||f)&&(b="Object.getOwnPropertyDescriptor called on a non-object: ",Object.getOwnPropertyDescriptor=function(t,e){var o,v,a,c,l;if(i(t))throw new TypeError(b+t);if(f)try{return f.call(Object,t,e)}catch(y){}return r(t,e)?(o={enumerable:g(t,e),configurable:!0},u&&(v=t.__proto__,a=t!==n,a&&(t.__proto__=n),c=s(t,e),l=h(t,e),a&&(t.__proto__=v),c||l))?(c&&(o.get=c),l&&(o.set=l),o):(o.value=t[e],o.writable=!0,o):o}),Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(n){return Object.keys(n)}),!Object.create){var l,tt=!({__proto__:null}instanceof Object),it=function(){if(!document.domain)return!1;try{return!!new ActiveXObject("htmlfile")}catch(n){return!1}},rt=function(){var i,n,t;return n=new ActiveXObject("htmlfile"),t="script",n.write("<"+t+"><\/"+t+">"),n.close(),i=n.parentWindow.Object.prototype,n=null,i},ut=function(){var n=document.createElement("iframe"),t=document.body||document.documentElement,i;return n.style.display="none",t.appendChild(n),n.src="javascript:",i=n.contentWindow.Object.prototype,t.removeChild(n),n=null,i};l=tt||typeof document=="undefined"?function(){return{__proto__:null}}:function(){var n=it()?rt():ut(),t;return delete n.constructor,delete n.hasOwnProperty,delete n.propertyIsEnumerable,delete n.isPrototypeOf,delete n.toLocaleString,delete n.toString,delete n.valueOf,t=function(){},t.prototype=n,l=function(){return new t},new t};Object.create=function(n,t){var r,u=function(){};if(n===null)r=l();else{if(n!==null&&i(n))throw new TypeError("Object prototype may only be an Object or null");u.prototype=n;r=new u;r.__proto__=n}return t!==void 0&&Object.defineProperties(r,t),r}}if(a=function(n){try{return Object.defineProperty(n,"sentinel",{}),"sentinel"in n}catch(t){return!1}},Object.defineProperty&&(k=a({}),d=typeof document=="undefined"||a(document.createElement("div")),k&&d||(e=Object.defineProperty,o=Object.defineProperties)),!Object.defineProperty||e){var ft="Property description must be an object: ",et="Object.defineProperty called on non-object: ",ot="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,r,f){var l,o,c;if(i(t))throw new TypeError(et+t);if(i(f))throw new TypeError(ft+f);if(e)try{return e.call(Object,t,r,f)}catch(a){}if("value"in f)u&&(s(t,r)||h(t,r))?(l=t.__proto__,t.__proto__=n,delete t[r],t[r]=f.value,t.__proto__=l):t[r]=f.value;else{if(o="get"in f,c="set"in f,!u&&(o||c))throw new TypeError(ot);o&&v(t,r,f.get);c&&y(t,r,f.set)}return t}}(!Object.defineProperties||o)&&(Object.defineProperties=function(n,t){if(o)try{return o.call(Object,n,t)}catch(i){}return Object.keys(t).forEach(function(i){i!=="__proto__"&&Object.defineProperty(n,i,t[i])}),n});Object.seal||(Object.seal=function(n){if(Object(n)!==n)throw new TypeError("Object.seal can only be called on Objects.");return n});Object.freeze||(Object.freeze=function(n){if(Object(n)!==n)throw new TypeError("Object.freeze can only be called on Objects.");return n});try{Object.freeze(function(){})}catch(ti){Object.freeze=function(n){return function(t){return typeof t=="function"?t:n(t)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(n){if(Object(n)!==n)throw new TypeError("Object.preventExtensions can only be called on Objects.");return n});Object.isSealed||(Object.isSealed=function(n){if(Object(n)!==n)throw new TypeError("Object.isSealed can only be called on Objects.");return!1});Object.isFrozen||(Object.isFrozen=function(n){if(Object(n)!==n)throw new TypeError("Object.isFrozen can only be called on Objects.");return!1});Object.isExtensible||(Object.isExtensible=function(n){var t,i;if(Object(n)!==n)throw new TypeError("Object.isExtensible can only be called on Objects.");for(t="";r(n,t);)t+="?";return n[t]=!0,i=r(n,t),delete n[t],i})})