// This file is used for internal testing with Karma only, it should not be used in real applications. // function.name (all IE) /*! @source http://stackoverflow.com/questions/6903762/function-name-not-supported-in-ie*/ if (!Object.hasOwnProperty('name')) { Object.defineProperty(Function.prototype, 'name', { get: function() { var matches = this.toString().match(/^\s*function\s*((?![0-9])[a-zA-Z0-9_$]*)\s*\(/); var name = matches && matches.length > 1 ? matches[1] : ""; // For better performance only parse once, and then cache the // result through a new accessor for repeated access. Object.defineProperty(this, 'name', {value: name}); return name; } }); } // URL polyfill for SystemJS (all IE) /*! @source https://github.com/ModuleLoader/es6-module-loader/blob/master/src/url-polyfill.js*/ // from https://gist.github.com/Yaffle/1088850 (function(global) { function URLPolyfill(url, baseURL) { if (typeof url != 'string') { throw new TypeError('URL must be a string'); } var m = String(url).replace(/^\s+|\s+$/g, "").match(/^([^:\/?#]+:)?(?:\/\/(?:([^:@\/?#]*)(?::([^:@\/?#]*))?@)?(([^:\/?#]*)(?::(\d*))?))?([^?#]*)(\?[^#]*)?(#[\s\S]*)?/); if (!m) { throw new RangeError(); } var protocol = m[1] || ""; var username = m[2] || ""; var password = m[3] || ""; var host = m[4] || ""; var hostname = m[5] || ""; var port = m[6] || ""; var pathname = m[7] || ""; var search = m[8] || ""; var hash = m[9] || ""; if (baseURL !== undefined) { var base = baseURL instanceof URLPolyfill ? baseURL : new URLPolyfill(baseURL); var flag = protocol === "" && host === "" && username === ""; if (flag && pathname === "" && search === "") { search = base.search; } if (flag && pathname.charAt(0) !== "/") { pathname = (pathname !== "" ? (((base.host !== "" || base.username !== "") && base.pathname === "" ? "/" : "") + base.pathname.slice(0, base.pathname.lastIndexOf("/") + 1) + pathname) : base.pathname); } // dot segments removal var output = []; pathname.replace(/^(\.\.?(\/|$))+/, "") .replace(/\/(\.(\/|$))+/g, "/") .replace(/\/\.\.$/, "/../") .replace(/\/?[^\/]*/g, function (p) { if (p === "/..") { output.pop(); } else { output.push(p); } }); pathname = output.join("").replace(/^\//, pathname.charAt(0) === "/" ? "/" : ""); if (flag) { port = base.port; hostname = base.hostname; host = base.host; password = base.password; username = base.username; } if (protocol === "") { protocol = base.protocol; } } // convert windows file URLs to use / if (protocol == 'file:') pathname = pathname.replace(/\\/g, '/'); this.origin = protocol + (protocol !== "" || host !== "" ? "//" : "") + host; this.href = protocol + (protocol !== "" || host !== "" ? "//" : "") + (username !== "" ? username + (password !== "" ? ":" + password : "") + "@" : "") + host + pathname + search + hash; this.protocol = protocol; this.username = username; this.password = password; this.host = host; this.hostname = hostname; this.port = port; this.pathname = pathname; this.search = search; this.hash = hash; } global.URLPolyfill = URLPolyfill; })(typeof self != 'undefined' ? self : global); //classList (IE9) /*! @license please refer to http://unlicense.org/ */ /*! @author Eli Grey */ /*! @source https://github.com/eligrey/classList.js */ ;if("document" in self&&!("classList" in document.createElement("_"))){(function(j){"use strict";if(!("Element" in j)){return}var a="classList",f="prototype",m=j.Element[f],b=Object,k=String[f].trim||function(){return this.replace(/^\s+|\s+$/g,"")},c=Array[f].indexOf||function(q){var p=0,o=this.length;for(;p> 0; } function ToUint32(v) { return v >>> 0; } // Snapshot intrinsics var LN2 = Math.LN2, abs = Math.abs, floor = Math.floor, log = Math.log, max = Math.max, min = Math.min, pow = Math.pow, round = Math.round; // emulate ES5 getter/setter API using legacy APIs // http://blogs.msdn.com/b/ie/archive/2010/09/07/transitioning-existing-code-to-the-es5-getter-setter-apis.aspx // (second clause tests for Object.defineProperty() in IE<9 that only supports extending DOM prototypes, but // note that IE<9 does not support __defineGetter__ or __defineSetter__ so it just renders the method harmless) (function() { var orig = Object.defineProperty; var dom_only = !(function(){try{return Object.defineProperty({},'x',{});}catch(_){return false;}}()); if (!orig || dom_only) { Object.defineProperty = function (o, prop, desc) { // In IE8 try built-in implementation for defining properties on DOM prototypes. if (orig) try { return orig(o, prop, desc); } catch (_) {} if (o !== Object(o)) throw TypeError('Object.defineProperty called on non-object'); if (Object.prototype.__defineGetter__ && ('get' in desc)) Object.prototype.__defineGetter__.call(o, prop, desc.get); if (Object.prototype.__defineSetter__ && ('set' in desc)) Object.prototype.__defineSetter__.call(o, prop, desc.set); if ('value' in desc) o[prop] = desc.value; return o; }; } }()); // ES5: Make obj[index] an alias for obj._getter(index)/obj._setter(index, value) // for index in 0 ... obj.length function makeArrayAccessors(obj) { if ('TYPED_ARRAY_POLYFILL_NO_ARRAY_ACCESSORS' in global) return; if (obj.length > MAX_ARRAY_LENGTH) throw RangeError('Array too large for polyfill'); function makeArrayAccessor(index) { Object.defineProperty(obj, index, { 'get': function() { return obj._getter(index); }, 'set': function(v) { obj._setter(index, v); }, enumerable: true, configurable: false }); } var i; for (i = 0; i < obj.length; i += 1) { makeArrayAccessor(i); } } // Internal conversion functions: // pack() - take a number (interpreted as Type), output a byte array // unpack() - take a byte array, output a Type-like number function as_signed(value, bits) { var s = 32 - bits; return (value << s) >> s; } function as_unsigned(value, bits) { var s = 32 - bits; return (value << s) >>> s; } function packI8(n) { return [n & 0xff]; } function unpackI8(bytes) { return as_signed(bytes[0], 8); } function packU8(n) { return [n & 0xff]; } function unpackU8(bytes) { return as_unsigned(bytes[0], 8); } function packU8Clamped(n) { n = round(Number(n)); return [n < 0 ? 0 : n > 0xff ? 0xff : n & 0xff]; } function packI16(n) { return [n & 0xff, (n >> 8) & 0xff]; } function unpackI16(bytes) { return as_signed(bytes[1] << 8 | bytes[0], 16); } function packU16(n) { return [n & 0xff, (n >> 8) & 0xff]; } function unpackU16(bytes) { return as_unsigned(bytes[1] << 8 | bytes[0], 16); } function packI32(n) { return [n & 0xff, (n >> 8) & 0xff, (n >> 16) & 0xff, (n >> 24) & 0xff]; } function unpackI32(bytes) { return as_signed(bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0], 32); } function packU32(n) { return [n & 0xff, (n >> 8) & 0xff, (n >> 16) & 0xff, (n >> 24) & 0xff]; } function unpackU32(bytes) { return as_unsigned(bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0], 32); } function packIEEE754(v, ebits, fbits) { var bias = (1 << (ebits - 1)) - 1; function roundToEven(n) { var w = floor(n), f = n - w; if (f < 0.5) return w; if (f > 0.5) return w + 1; return w % 2 ? w + 1 : w; } // Compute sign, exponent, fraction var s, e, f; if (v !== v) { // NaN // http://dev.w3.org/2006/webapi/WebIDL/#es-type-mapping e = (1 << ebits) - 1; f = pow(2, fbits - 1); s = 0; } else if (v === Infinity || v === -Infinity) { e = (1 << ebits) - 1; f = 0; s = (v < 0) ? 1 : 0; } else if (v === 0) { e = 0; f = 0; s = (1 / v === -Infinity) ? 1 : 0; } else { s = v < 0; v = abs(v); if (v >= pow(2, 1 - bias)) { // Normalized e = min(floor(log(v) / LN2), 1023); var significand = v / pow(2, e); if (significand < 1) { e -= 1; significand *= 2; } if (significand >= 2) { e += 1; significand /= 2; } var d = pow(2, fbits); f = roundToEven(significand * d) - d; e += bias; if (f / d >= 1) { e += 1; f = 0; } if (e > 2 * bias) { // Overflow e = (1 << ebits) - 1; f = 0; } } else { // Denormalized e = 0; f = roundToEven(v / pow(2, 1 - bias - fbits)); } } // Pack sign, exponent, fraction var bits = [], i; for (i = fbits; i; i -= 1) { bits.push(f % 2 ? 1 : 0); f = floor(f / 2); } for (i = ebits; i; i -= 1) { bits.push(e % 2 ? 1 : 0); e = floor(e / 2); } bits.push(s ? 1 : 0); bits.reverse(); var str = bits.join(''); // Bits to bytes var bytes = []; while (str.length) { bytes.unshift(parseInt(str.substring(0, 8), 2)); str = str.substring(8); } return bytes; } function unpackIEEE754(bytes, ebits, fbits) { // Bytes to bits var bits = [], i, j, b, str, bias, s, e, f; for (i = 0; i < bytes.length; ++i) { b = bytes[i]; for (j = 8; j; j -= 1) { bits.push(b % 2 ? 1 : 0); b = b >> 1; } } bits.reverse(); str = bits.join(''); // Unpack sign, exponent, fraction bias = (1 << (ebits - 1)) - 1; s = parseInt(str.substring(0, 1), 2) ? -1 : 1; e = parseInt(str.substring(1, 1 + ebits), 2); f = parseInt(str.substring(1 + ebits), 2); // Produce number if (e === (1 << ebits) - 1) { return f !== 0 ? NaN : s * Infinity; } else if (e > 0) { // Normalized return s * pow(2, e - bias) * (1 + f / pow(2, fbits)); } else if (f !== 0) { // Denormalized return s * pow(2, -(bias - 1)) * (f / pow(2, fbits)); } else { return s < 0 ? -0 : 0; } } function unpackF64(b) { return unpackIEEE754(b, 11, 52); } function packF64(v) { return packIEEE754(v, 11, 52); } function unpackF32(b) { return unpackIEEE754(b, 8, 23); } function packF32(v) { return packIEEE754(v, 8, 23); } // // 3 The ArrayBuffer Type // (function() { function ArrayBuffer(length) { length = ToInt32(length); if (length < 0) throw RangeError('ArrayBuffer size is not a small enough positive integer.'); Object.defineProperty(this, 'byteLength', {value: length}); Object.defineProperty(this, '_bytes', {value: Array(length)}); for (var i = 0; i < length; i += 1) this._bytes[i] = 0; } global.ArrayBuffer = global.ArrayBuffer || ArrayBuffer; // // 5 The Typed Array View Types // function $TypedArray$() { // %TypedArray% ( length ) if (!arguments.length || typeof arguments[0] !== 'object') { return (function(length) { length = ToInt32(length); if (length < 0) throw RangeError('length is not a small enough positive integer.'); Object.defineProperty(this, 'length', {value: length}); Object.defineProperty(this, 'byteLength', {value: length * this.BYTES_PER_ELEMENT}); Object.defineProperty(this, 'buffer', {value: new ArrayBuffer(this.byteLength)}); Object.defineProperty(this, 'byteOffset', {value: 0}); }).apply(this, arguments); } // %TypedArray% ( typedArray ) if (arguments.length >= 1 && Type(arguments[0]) === 'object' && arguments[0] instanceof $TypedArray$) { return (function(typedArray){ if (this.constructor !== typedArray.constructor) throw TypeError(); var byteLength = typedArray.length * this.BYTES_PER_ELEMENT; Object.defineProperty(this, 'buffer', {value: new ArrayBuffer(byteLength)}); Object.defineProperty(this, 'byteLength', {value: byteLength}); Object.defineProperty(this, 'byteOffset', {value: 0}); Object.defineProperty(this, 'length', {value: typedArray.length}); for (var i = 0; i < this.length; i += 1) this._setter(i, typedArray._getter(i)); }).apply(this, arguments); } // %TypedArray% ( array ) if (arguments.length >= 1 && Type(arguments[0]) === 'object' && !(arguments[0] instanceof $TypedArray$) && !(arguments[0] instanceof ArrayBuffer || Class(arguments[0]) === 'ArrayBuffer')) { return (function(array) { var byteLength = array.length * this.BYTES_PER_ELEMENT; Object.defineProperty(this, 'buffer', {value: new ArrayBuffer(byteLength)}); Object.defineProperty(this, 'byteLength', {value: byteLength}); Object.defineProperty(this, 'byteOffset', {value: 0}); Object.defineProperty(this, 'length', {value: array.length}); for (var i = 0; i < this.length; i += 1) { var s = array[i]; this._setter(i, Number(s)); } }).apply(this, arguments); } // %TypedArray% ( buffer, byteOffset=0, length=undefined ) if (arguments.length >= 1 && Type(arguments[0]) === 'object' && (arguments[0] instanceof ArrayBuffer || Class(arguments[0]) === 'ArrayBuffer')) { return (function(buffer, byteOffset, length) { byteOffset = ToUint32(byteOffset); if (byteOffset > buffer.byteLength) throw RangeError('byteOffset out of range'); // The given byteOffset must be a multiple of the element // size of the specific type, otherwise an exception is raised. if (byteOffset % this.BYTES_PER_ELEMENT) throw RangeError('buffer length minus the byteOffset is not a multiple of the element size.'); if (length === undefined) { var byteLength = buffer.byteLength - byteOffset; if (byteLength % this.BYTES_PER_ELEMENT) throw RangeError('length of buffer minus byteOffset not a multiple of the element size'); length = byteLength / this.BYTES_PER_ELEMENT; } else { length = ToUint32(length); byteLength = length * this.BYTES_PER_ELEMENT; } if ((byteOffset + byteLength) > buffer.byteLength) throw RangeError('byteOffset and length reference an area beyond the end of the buffer'); Object.defineProperty(this, 'buffer', {value: buffer}); Object.defineProperty(this, 'byteLength', {value: byteLength}); Object.defineProperty(this, 'byteOffset', {value: byteOffset}); Object.defineProperty(this, 'length', {value: length}); }).apply(this, arguments); } // %TypedArray% ( all other argument combinations ) throw TypeError(); } // Properties of the %TypedArray Instrinsic Object // %TypedArray%.from ( source , mapfn=undefined, thisArg=undefined ) Object.defineProperty($TypedArray$, 'from', {value: function(iterable) { return new this(iterable); }}); // %TypedArray%.of ( ...items ) Object.defineProperty($TypedArray$, 'of', {value: function(/*...items*/) { return new this(arguments); }}); // %TypedArray%.prototype var $TypedArrayPrototype$ = {}; $TypedArray$.prototype = $TypedArrayPrototype$; // WebIDL: getter type (unsigned long index); Object.defineProperty($TypedArray$.prototype, '_getter', {value: function(index) { if (arguments.length < 1) throw SyntaxError('Not enough arguments'); index = ToUint32(index); if (index >= this.length) return undefined; var bytes = [], i, o; for (i = 0, o = this.byteOffset + index * this.BYTES_PER_ELEMENT; i < this.BYTES_PER_ELEMENT; i += 1, o += 1) { bytes.push(this.buffer._bytes[o]); } return this._unpack(bytes); }}); // NONSTANDARD: convenience alias for getter: type get(unsigned long index); Object.defineProperty($TypedArray$.prototype, 'get', {value: $TypedArray$.prototype._getter}); // WebIDL: setter void (unsigned long index, type value); Object.defineProperty($TypedArray$.prototype, '_setter', {value: function(index, value) { if (arguments.length < 2) throw SyntaxError('Not enough arguments'); index = ToUint32(index); if (index >= this.length) return; var bytes = this._pack(value), i, o; for (i = 0, o = this.byteOffset + index * this.BYTES_PER_ELEMENT; i < this.BYTES_PER_ELEMENT; i += 1, o += 1) { this.buffer._bytes[o] = bytes[i]; } }}); // get %TypedArray%.prototype.buffer // get %TypedArray%.prototype.byteLength // get %TypedArray%.prototype.byteOffset // -- applied directly to the object in the constructor // %TypedArray%.prototype.constructor Object.defineProperty($TypedArray$.prototype, 'constructor', {value: $TypedArray$}); // %TypedArray%.prototype.copyWithin (target, start, end = this.length ) Object.defineProperty($TypedArray$.prototype, 'copyWithin', {value: function(target, start) { var end = arguments[2]; var o = ToObject(this); var lenVal = o.length; var len = ToUint32(lenVal); len = max(len, 0); var relativeTarget = ToInt32(target); var to; if (relativeTarget < 0) to = max(len + relativeTarget, 0); else to = min(relativeTarget, len); var relativeStart = ToInt32(start); var from; if (relativeStart < 0) from = max(len + relativeStart, 0); else from = min(relativeStart, len); var relativeEnd; if (end === undefined) relativeEnd = len; else relativeEnd = ToInt32(end); var final; if (relativeEnd < 0) final = max(len + relativeEnd, 0); else final = min(relativeEnd, len); var count = min(final - from, len - to); var direction; if (from < to && to < from + count) { direction = -1; from = from + count - 1; to = to + count - 1; } else { direction = 1; } while (count > 0) { o._setter(to, o._getter(from)); from = from + direction; to = to + direction; count = count - 1; } return o; }}); // %TypedArray%.prototype.entries ( ) // -- defined in es6.js to shim browsers w/ native TypedArrays // %TypedArray%.prototype.every ( callbackfn, thisArg = undefined ) Object.defineProperty($TypedArray$.prototype, 'every', {value: function(callbackfn) { if (this === undefined || this === null) throw TypeError(); var t = Object(this); var len = ToUint32(t.length); if (!IsCallable(callbackfn)) throw TypeError(); var thisArg = arguments[1]; for (var i = 0; i < len; i++) { if (!callbackfn.call(thisArg, t._getter(i), i, t)) return false; } return true; }}); // %TypedArray%.prototype.fill (value, start = 0, end = this.length ) Object.defineProperty($TypedArray$.prototype, 'fill', {value: function(value) { var start = arguments[1], end = arguments[2]; var o = ToObject(this); var lenVal = o.length; var len = ToUint32(lenVal); len = max(len, 0); var relativeStart = ToInt32(start); var k; if (relativeStart < 0) k = max((len + relativeStart), 0); else k = min(relativeStart, len); var relativeEnd; if (end === undefined) relativeEnd = len; else relativeEnd = ToInt32(end); var final; if (relativeEnd < 0) final = max((len + relativeEnd), 0); else final = min(relativeEnd, len); while (k < final) { o._setter(k, value); k += 1; } return o; }}); // %TypedArray%.prototype.filter ( callbackfn, thisArg = undefined ) Object.defineProperty($TypedArray$.prototype, 'filter', {value: function(callbackfn) { if (this === undefined || this === null) throw TypeError(); var t = Object(this); var len = ToUint32(t.length); if (!IsCallable(callbackfn)) throw TypeError(); var res = []; var thisp = arguments[1]; for (var i = 0; i < len; i++) { var val = t._getter(i); // in case fun mutates this if (callbackfn.call(thisp, val, i, t)) res.push(val); } return new this.constructor(res); }}); // %TypedArray%.prototype.find (predicate, thisArg = undefined) Object.defineProperty($TypedArray$.prototype, 'find', {value: function(predicate) { var o = ToObject(this); var lenValue = o.length; var len = ToUint32(lenValue); if (!IsCallable(predicate)) throw TypeError(); var t = arguments.length > 1 ? arguments[1] : undefined; var k = 0; while (k < len) { var kValue = o._getter(k); var testResult = predicate.call(t, kValue, k, o); if (Boolean(testResult)) return kValue; ++k; } return undefined; }}); // %TypedArray%.prototype.findIndex ( predicate, thisArg = undefined ) Object.defineProperty($TypedArray$.prototype, 'findIndex', {value: function(predicate) { var o = ToObject(this); var lenValue = o.length; var len = ToUint32(lenValue); if (!IsCallable(predicate)) throw TypeError(); var t = arguments.length > 1 ? arguments[1] : undefined; var k = 0; while (k < len) { var kValue = o._getter(k); var testResult = predicate.call(t, kValue, k, o); if (Boolean(testResult)) return k; ++k; } return -1; }}); // %TypedArray%.prototype.forEach ( callbackfn, thisArg = undefined ) Object.defineProperty($TypedArray$.prototype, 'forEach', {value: function(callbackfn) { if (this === undefined || this === null) throw TypeError(); var t = Object(this); var len = ToUint32(t.length); if (!IsCallable(callbackfn)) throw TypeError(); var thisp = arguments[1]; for (var i = 0; i < len; i++) callbackfn.call(thisp, t._getter(i), i, t); }}); // %TypedArray%.prototype.indexOf (searchElement, fromIndex = 0 ) Object.defineProperty($TypedArray$.prototype, 'indexOf', {value: function(searchElement) { if (this === undefined || this === null) throw TypeError(); var t = Object(this); var len = ToUint32(t.length); if (len === 0) return -1; var n = 0; if (arguments.length > 0) { n = Number(arguments[1]); if (n !== n) { n = 0; } else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0)) { n = (n > 0 || -1) * floor(abs(n)); } } if (n >= len) return -1; var k = n >= 0 ? n : max(len - abs(n), 0); for (; k < len; k++) { if (t._getter(k) === searchElement) { return k; } } return -1; }}); // %TypedArray%.prototype.join ( separator ) Object.defineProperty($TypedArray$.prototype, 'join', {value: function(separator) { if (this === undefined || this === null) throw TypeError(); var t = Object(this); var len = ToUint32(t.length); var tmp = Array(len); for (var i = 0; i < len; ++i) tmp[i] = t._getter(i); return tmp.join(separator === undefined ? ',' : separator); // Hack for IE7 }}); // %TypedArray%.prototype.keys ( ) // -- defined in es6.js to shim browsers w/ native TypedArrays // %TypedArray%.prototype.lastIndexOf ( searchElement, fromIndex = this.length-1 ) Object.defineProperty($TypedArray$.prototype, 'lastIndexOf', {value: function(searchElement) { if (this === undefined || this === null) throw TypeError(); var t = Object(this); var len = ToUint32(t.length); if (len === 0) return -1; var n = len; if (arguments.length > 1) { n = Number(arguments[1]); if (n !== n) { n = 0; } else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0)) { n = (n > 0 || -1) * floor(abs(n)); } } var k = n >= 0 ? min(n, len - 1) : len - abs(n); for (; k >= 0; k--) { if (t._getter(k) === searchElement) return k; } return -1; }}); // get %TypedArray%.prototype.length // -- applied directly to the object in the constructor // %TypedArray%.prototype.map ( callbackfn, thisArg = undefined ) Object.defineProperty($TypedArray$.prototype, 'map', {value: function(callbackfn) { if (this === undefined || this === null) throw TypeError(); var t = Object(this); var len = ToUint32(t.length); if (!IsCallable(callbackfn)) throw TypeError(); var res = []; res.length = len; var thisp = arguments[1]; for (var i = 0; i < len; i++) res[i] = callbackfn.call(thisp, t._getter(i), i, t); return new this.constructor(res); }}); // %TypedArray%.prototype.reduce ( callbackfn [, initialValue] ) Object.defineProperty($TypedArray$.prototype, 'reduce', {value: function(callbackfn) { if (this === undefined || this === null) throw TypeError(); var t = Object(this); var len = ToUint32(t.length); if (!IsCallable(callbackfn)) throw TypeError(); // no value to return if no initial value and an empty array if (len === 0 && arguments.length === 1) throw TypeError(); var k = 0; var accumulator; if (arguments.length >= 2) { accumulator = arguments[1]; } else { accumulator = t._getter(k++); } while (k < len) { accumulator = callbackfn.call(undefined, accumulator, t._getter(k), k, t); k++; } return accumulator; }}); // %TypedArray%.prototype.reduceRight ( callbackfn [, initialValue] ) Object.defineProperty($TypedArray$.prototype, 'reduceRight', {value: function(callbackfn) { if (this === undefined || this === null) throw TypeError(); var t = Object(this); var len = ToUint32(t.length); if (!IsCallable(callbackfn)) throw TypeError(); // no value to return if no initial value, empty array if (len === 0 && arguments.length === 1) throw TypeError(); var k = len - 1; var accumulator; if (arguments.length >= 2) { accumulator = arguments[1]; } else { accumulator = t._getter(k--); } while (k >= 0) { accumulator = callbackfn.call(undefined, accumulator, t._getter(k), k, t); k--; } return accumulator; }}); // %TypedArray%.prototype.reverse ( ) Object.defineProperty($TypedArray$.prototype, 'reverse', {value: function() { if (this === undefined || this === null) throw TypeError(); var t = Object(this); var len = ToUint32(t.length); var half = floor(len / 2); for (var i = 0, j = len - 1; i < half; ++i, --j) { var tmp = t._getter(i); t._setter(i, t._getter(j)); t._setter(j, tmp); } return t; }}); // %TypedArray%.prototype.set(array, offset = 0 ) // %TypedArray%.prototype.set(typedArray, offset = 0 ) // WebIDL: void set(TypedArray array, optional unsigned long offset); // WebIDL: void set(sequence array, optional unsigned long offset); Object.defineProperty($TypedArray$.prototype, 'set', {value: function(index, value) { if (arguments.length < 1) throw SyntaxError('Not enough arguments'); var array, sequence, offset, len, i, s, d, byteOffset, byteLength, tmp; if (typeof arguments[0] === 'object' && arguments[0].constructor === this.constructor) { // void set(TypedArray array, optional unsigned long offset); array = arguments[0]; offset = ToUint32(arguments[1]); if (offset + array.length > this.length) { throw RangeError('Offset plus length of array is out of range'); } byteOffset = this.byteOffset + offset * this.BYTES_PER_ELEMENT; byteLength = array.length * this.BYTES_PER_ELEMENT; if (array.buffer === this.buffer) { tmp = []; for (i = 0, s = array.byteOffset; i < byteLength; i += 1, s += 1) { tmp[i] = array.buffer._bytes[s]; } for (i = 0, d = byteOffset; i < byteLength; i += 1, d += 1) { this.buffer._bytes[d] = tmp[i]; } } else { for (i = 0, s = array.byteOffset, d = byteOffset; i < byteLength; i += 1, s += 1, d += 1) { this.buffer._bytes[d] = array.buffer._bytes[s]; } } } else if (typeof arguments[0] === 'object' && typeof arguments[0].length !== 'undefined') { // void set(sequence array, optional unsigned long offset); sequence = arguments[0]; len = ToUint32(sequence.length); offset = ToUint32(arguments[1]); if (offset + len > this.length) { throw RangeError('Offset plus length of array is out of range'); } for (i = 0; i < len; i += 1) { s = sequence[i]; this._setter(offset + i, Number(s)); } } else { throw TypeError('Unexpected argument type(s)'); } }}); // %TypedArray%.prototype.slice ( start, end ) Object.defineProperty($TypedArray$.prototype, 'slice', {value: function(start, end) { var o = ToObject(this); var lenVal = o.length; var len = ToUint32(lenVal); var relativeStart = ToInt32(start); var k = (relativeStart < 0) ? max(len + relativeStart, 0) : min(relativeStart, len); var relativeEnd = (end === undefined) ? len : ToInt32(end); var final = (relativeEnd < 0) ? max(len + relativeEnd, 0) : min(relativeEnd, len); var count = final - k; var c = o.constructor; var a = new c(count); var n = 0; while (k < final) { var kValue = o._getter(k); a._setter(n, kValue); ++k; ++n; } return a; }}); // %TypedArray%.prototype.some ( callbackfn, thisArg = undefined ) Object.defineProperty($TypedArray$.prototype, 'some', {value: function(callbackfn) { if (this === undefined || this === null) throw TypeError(); var t = Object(this); var len = ToUint32(t.length); if (!IsCallable(callbackfn)) throw TypeError(); var thisp = arguments[1]; for (var i = 0; i < len; i++) { if (callbackfn.call(thisp, t._getter(i), i, t)) { return true; } } return false; }}); // %TypedArray%.prototype.sort ( comparefn ) Object.defineProperty($TypedArray$.prototype, 'sort', {value: function(comparefn) { if (this === undefined || this === null) throw TypeError(); var t = Object(this); var len = ToUint32(t.length); var tmp = Array(len); for (var i = 0; i < len; ++i) tmp[i] = t._getter(i); if (comparefn) tmp.sort(comparefn); else tmp.sort(); // Hack for IE8/9 for (i = 0; i < len; ++i) t._setter(i, tmp[i]); return t; }}); // %TypedArray%.prototype.subarray(begin = 0, end = this.length ) // WebIDL: TypedArray subarray(long begin, optional long end); Object.defineProperty($TypedArray$.prototype, 'subarray', {value: function(start, end) { function clamp(v, min, max) { return v < min ? min : v > max ? max : v; } start = ToInt32(start); end = ToInt32(end); if (arguments.length < 1) { start = 0; } if (arguments.length < 2) { end = this.length; } if (start < 0) { start = this.length + start; } if (end < 0) { end = this.length + end; } start = clamp(start, 0, this.length); end = clamp(end, 0, this.length); var len = end - start; if (len < 0) { len = 0; } return new this.constructor( this.buffer, this.byteOffset + start * this.BYTES_PER_ELEMENT, len); }}); // %TypedArray%.prototype.toLocaleString ( ) // %TypedArray%.prototype.toString ( ) // %TypedArray%.prototype.values ( ) // %TypedArray%.prototype [ @@iterator ] ( ) // get %TypedArray%.prototype [ @@toStringTag ] // -- defined in es6.js to shim browsers w/ native TypedArrays function makeTypedArray(elementSize, pack, unpack) { // Each TypedArray type requires a distinct constructor instance with // identical logic, which this produces. var TypedArray = function() { Object.defineProperty(this, 'constructor', {value: TypedArray}); $TypedArray$.apply(this, arguments); makeArrayAccessors(this); }; if ('__proto__' in TypedArray) { TypedArray.__proto__ = $TypedArray$; } else { TypedArray.from = $TypedArray$.from; TypedArray.of = $TypedArray$.of; } TypedArray.BYTES_PER_ELEMENT = elementSize; var TypedArrayPrototype = function() {}; TypedArrayPrototype.prototype = $TypedArrayPrototype$; TypedArray.prototype = new TypedArrayPrototype(); Object.defineProperty(TypedArray.prototype, 'BYTES_PER_ELEMENT', {value: elementSize}); Object.defineProperty(TypedArray.prototype, '_pack', {value: pack}); Object.defineProperty(TypedArray.prototype, '_unpack', {value: unpack}); return TypedArray; } var Int8Array = makeTypedArray(1, packI8, unpackI8); var Uint8Array = makeTypedArray(1, packU8, unpackU8); var Uint8ClampedArray = makeTypedArray(1, packU8Clamped, unpackU8); var Int16Array = makeTypedArray(2, packI16, unpackI16); var Uint16Array = makeTypedArray(2, packU16, unpackU16); var Int32Array = makeTypedArray(4, packI32, unpackI32); var Uint32Array = makeTypedArray(4, packU32, unpackU32); var Float32Array = makeTypedArray(4, packF32, unpackF32); var Float64Array = makeTypedArray(8, packF64, unpackF64); global.Int8Array = global.Int8Array || Int8Array; global.Uint8Array = global.Uint8Array || Uint8Array; global.Uint8ClampedArray = global.Uint8ClampedArray || Uint8ClampedArray; global.Int16Array = global.Int16Array || Int16Array; global.Uint16Array = global.Uint16Array || Uint16Array; global.Int32Array = global.Int32Array || Int32Array; global.Uint32Array = global.Uint32Array || Uint32Array; global.Float32Array = global.Float32Array || Float32Array; global.Float64Array = global.Float64Array || Float64Array; }()); // // 6 The DataView View Type // (function() { function r(array, index) { return IsCallable(array.get) ? array.get(index) : array[index]; } var IS_BIG_ENDIAN = (function() { var u16array = new Uint16Array([0x1234]), u8array = new Uint8Array(u16array.buffer); return r(u8array, 0) === 0x12; }()); // DataView(buffer, byteOffset=0, byteLength=undefined) // WebIDL: Constructor(ArrayBuffer buffer, // optional unsigned long byteOffset, // optional unsigned long byteLength) function DataView(buffer, byteOffset, byteLength) { if (!(buffer instanceof ArrayBuffer || Class(buffer) === 'ArrayBuffer')) throw TypeError(); byteOffset = ToUint32(byteOffset); if (byteOffset > buffer.byteLength) throw RangeError('byteOffset out of range'); if (byteLength === undefined) byteLength = buffer.byteLength - byteOffset; else byteLength = ToUint32(byteLength); if ((byteOffset + byteLength) > buffer.byteLength) throw RangeError('byteOffset and length reference an area beyond the end of the buffer'); Object.defineProperty(this, 'buffer', {value: buffer}); Object.defineProperty(this, 'byteLength', {value: byteLength}); Object.defineProperty(this, 'byteOffset', {value: byteOffset}); }; // get DataView.prototype.buffer // get DataView.prototype.byteLength // get DataView.prototype.byteOffset // -- applied directly to instances by the constructor function makeGetter(arrayType) { return function GetViewValue(byteOffset, littleEndian) { byteOffset = ToUint32(byteOffset); if (byteOffset + arrayType.BYTES_PER_ELEMENT > this.byteLength) throw RangeError('Array index out of range'); byteOffset += this.byteOffset; var uint8Array = new Uint8Array(this.buffer, byteOffset, arrayType.BYTES_PER_ELEMENT), bytes = []; for (var i = 0; i < arrayType.BYTES_PER_ELEMENT; i += 1) bytes.push(r(uint8Array, i)); if (Boolean(littleEndian) === Boolean(IS_BIG_ENDIAN)) bytes.reverse(); return r(new arrayType(new Uint8Array(bytes).buffer), 0); }; } Object.defineProperty(DataView.prototype, 'getUint8', {value: makeGetter(Uint8Array)}); Object.defineProperty(DataView.prototype, 'getInt8', {value: makeGetter(Int8Array)}); Object.defineProperty(DataView.prototype, 'getUint16', {value: makeGetter(Uint16Array)}); Object.defineProperty(DataView.prototype, 'getInt16', {value: makeGetter(Int16Array)}); Object.defineProperty(DataView.prototype, 'getUint32', {value: makeGetter(Uint32Array)}); Object.defineProperty(DataView.prototype, 'getInt32', {value: makeGetter(Int32Array)}); Object.defineProperty(DataView.prototype, 'getFloat32', {value: makeGetter(Float32Array)}); Object.defineProperty(DataView.prototype, 'getFloat64', {value: makeGetter(Float64Array)}); function makeSetter(arrayType) { return function SetViewValue(byteOffset, value, littleEndian) { byteOffset = ToUint32(byteOffset); if (byteOffset + arrayType.BYTES_PER_ELEMENT > this.byteLength) throw RangeError('Array index out of range'); // Get bytes var typeArray = new arrayType([value]), byteArray = new Uint8Array(typeArray.buffer), bytes = [], i, byteView; for (i = 0; i < arrayType.BYTES_PER_ELEMENT; i += 1) bytes.push(r(byteArray, i)); // Flip if necessary if (Boolean(littleEndian) === Boolean(IS_BIG_ENDIAN)) bytes.reverse(); // Write them byteView = new Uint8Array(this.buffer, byteOffset, arrayType.BYTES_PER_ELEMENT); byteView.set(bytes); }; } Object.defineProperty(DataView.prototype, 'setUint8', {value: makeSetter(Uint8Array)}); Object.defineProperty(DataView.prototype, 'setInt8', {value: makeSetter(Int8Array)}); Object.defineProperty(DataView.prototype, 'setUint16', {value: makeSetter(Uint16Array)}); Object.defineProperty(DataView.prototype, 'setInt16', {value: makeSetter(Int16Array)}); Object.defineProperty(DataView.prototype, 'setUint32', {value: makeSetter(Uint32Array)}); Object.defineProperty(DataView.prototype, 'setInt32', {value: makeSetter(Int32Array)}); Object.defineProperty(DataView.prototype, 'setFloat32', {value: makeSetter(Float32Array)}); Object.defineProperty(DataView.prototype, 'setFloat64', {value: makeSetter(Float64Array)}); global.DataView = global.DataView || DataView; }()); }(self)); //Blob (IE9) /*! @source http://purl.eligrey.com/github/Blob.js/blob/master/Blob.js */ /* Blob.js * A Blob implementation. * 2014-07-24 * * By Eli Grey, http://eligrey.com * By Devin Samarin, https://github.com/dsamarin * License: MIT * See https://github.com/eligrey/Blob.js/blob/master/LICENSE.md */ /*global self, unescape */ /*jslint bitwise: true, regexp: true, confusion: true, es5: true, vars: true, white: true, plusplus: true */ /*! @source http://purl.eligrey.com/github/Blob.js/blob/master/Blob.js */ (function (view) { "use strict"; view.URL = view.URL || view.webkitURL; if (view.Blob && view.URL) { try { new Blob; return; } catch (e) {} } // Internally we use a BlobBuilder implementation to base Blob off of // in order to support older browsers that only have BlobBuilder var BlobBuilder = view.BlobBuilder || view.WebKitBlobBuilder || view.MozBlobBuilder || (function(view) { var get_class = function(object) { return Object.prototype.toString.call(object).match(/^\[object\s(.*)\]$/)[1]; } , FakeBlobBuilder = function BlobBuilder() { this.data = []; } , FakeBlob = function Blob(data, type, encoding) { this.data = data; this.size = data.length; this.type = type; this.encoding = encoding; } , FBB_proto = FakeBlobBuilder.prototype , FB_proto = FakeBlob.prototype , FileReaderSync = view.FileReaderSync , FileException = function(type) { this.code = this[this.name = type]; } , file_ex_codes = ( "NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR " + "NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR" ).split(" ") , file_ex_code = file_ex_codes.length , real_URL = view.URL || view.webkitURL || view , real_create_object_URL = real_URL.createObjectURL , real_revoke_object_URL = real_URL.revokeObjectURL , URL = real_URL , btoa = view.btoa , atob = view.atob , ArrayBuffer = view.ArrayBuffer , Uint8Array = view.Uint8Array , origin = /^[\w-]+:\/*\[?[\w\.:-]+\]?(?::[0-9]+)?/ ; FakeBlob.fake = FB_proto.fake = true; while (file_ex_code--) { FileException.prototype[file_ex_codes[file_ex_code]] = file_ex_code + 1; } // Polyfill URL if (!real_URL.createObjectURL) { URL = view.URL = function(uri) { var uri_info = document.createElementNS("http://www.w3.org/1999/xhtml", "a") , uri_origin ; uri_info.href = uri; if (!("origin" in uri_info)) { if (uri_info.protocol.toLowerCase() === "data:") { uri_info.origin = null; } else { uri_origin = uri.match(origin); uri_info.origin = uri_origin && uri_origin[1]; } } return uri_info; }; } URL.createObjectURL = function(blob) { var type = blob.type , data_URI_header ; if (type === null) { type = "application/octet-stream"; } if (blob instanceof FakeBlob) { data_URI_header = "data:" + type; if (blob.encoding === "base64") { return data_URI_header + ";base64," + blob.data; } else if (blob.encoding === "URI") { return data_URI_header + "," + decodeURIComponent(blob.data); } if (btoa) { return data_URI_header + ";base64," + btoa(blob.data); } else { return data_URI_header + "," + encodeURIComponent(blob.data); } } else if (real_create_object_URL) { return real_create_object_URL.call(real_URL, blob); } }; URL.revokeObjectURL = function(object_URL) { if (object_URL.substring(0, 5) !== "data:" && real_revoke_object_URL) { real_revoke_object_URL.call(real_URL, object_URL); } }; FBB_proto.append = function(data/*, endings*/) { var bb = this.data; // decode data to a binary string if (Uint8Array && (data instanceof ArrayBuffer || data instanceof Uint8Array)) { var str = "" , buf = new Uint8Array(data) , i = 0 , buf_len = buf.length ; for (; i < buf_len; i++) { str += String.fromCharCode(buf[i]); } bb.push(str); } else if (get_class(data) === "Blob" || get_class(data) === "File") { if (FileReaderSync) { var fr = new FileReaderSync; bb.push(fr.readAsBinaryString(data)); } else { // async FileReader won't work as BlobBuilder is sync throw new FileException("NOT_READABLE_ERR"); } } else if (data instanceof FakeBlob) { if (data.encoding === "base64" && atob) { bb.push(atob(data.data)); } else if (data.encoding === "URI") { bb.push(decodeURIComponent(data.data)); } else if (data.encoding === "raw") { bb.push(data.data); } } else { if (typeof data !== "string") { data += ""; // convert unsupported types to strings } // decode UTF-16 to binary string bb.push(unescape(encodeURIComponent(data))); } }; FBB_proto.getBlob = function(type) { if (!arguments.length) { type = null; } return new FakeBlob(this.data.join(""), type, "raw"); }; FBB_proto.toString = function() { return "[object BlobBuilder]"; }; FB_proto.slice = function(start, end, type) { var args = arguments.length; if (args < 3) { type = null; } return new FakeBlob( this.data.slice(start, args > 1 ? end : this.data.length) , type , this.encoding ); }; FB_proto.toString = function() { return "[object Blob]"; }; FB_proto.close = function() { this.size = 0; delete this.data; }; return FakeBlobBuilder; }(view)); view.Blob = function(blobParts, options) { var type = options ? (options.type || "") : ""; var builder = new BlobBuilder(); if (blobParts) { for (var i = 0, len = blobParts.length; i < len; i++) { if (Uint8Array && blobParts[i] instanceof Uint8Array) { builder.append(blobParts[i].buffer); } else { builder.append(blobParts[i]); } } } var blob = builder.getBlob(type); if (!blob.slice && blob.webkitSlice) { blob.slice = blob.webkitSlice; } return blob; }; var getPrototypeOf = Object.getPrototypeOf || function(object) { return object.__proto__; }; view.Blob.prototype = getPrototypeOf(new view.Blob()); }(typeof self !== "undefined" && self || typeof window !== "undefined" && window || this.content || this)); //FormData (IE9) /*! @source https://github.com/francois2metz/html5-formdata/blob/master/formdata.js */ /** * Emulate FormData for some browsers * MIT License * (c) 2010 François de Metz */ (function(w) { if (w.FormData) return; function FormData() { this.fake = true; this.boundary = "--------FormData" + Math.random(); this._fields = []; } FormData.prototype.append = function(key, value) { this._fields.push([key, value]); } FormData.prototype.toString = function() { var boundary = this.boundary; var body = ""; this._fields.forEach(function(field) { body += "--" + boundary + "\r\n"; // file upload if (field[1].name) { var file = field[1]; body += "Content-Disposition: form-data; name=\""+ field[0] +"\"; filename=\""+ file.name +"\"\r\n"; body += "Content-Type: "+ file.type +"\r\n\r\n"; body += file.getAsBinary() + "\r\n"; } else { body += "Content-Disposition: form-data; name=\""+ field[0] +"\";\r\n\r\n"; body += field[1] + "\r\n"; } }); body += "--" + boundary +"--"; return body; } w.FormData = FormData; })(window); // Intl (IE9, IE10, all Safari, all Android) /*! @source https://github.com/andyearnshaw/Intl.js */ /*! @licence https://github.com/andyearnshaw/Intl.js/blob/master/LICENSE.txt */ !function(e,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):e.IntlPolyfill=r()}(this,function(){"use strict";function e(e){if("function"==typeof Math.log10)return Math.floor(Math.log10(e));var r=Math.round(Math.log(e)*Math.LOG10E);return r-(Number("1e"+r)>e)}function r(e){for(var t in e)(e instanceof r||ee.call(e,t))&&re(this,t,{value:e[t],enumerable:!0,writable:!0,configurable:!0})}function t(){re(this,"length",{writable:!0,value:0}),arguments.length&&oe.apply(this,ae.call(arguments))}function n(){if(ue.disableRegExpRestore)return function(){};for(var e={lastMatch:RegExp.lastMatch||"",leftContext:RegExp.leftContext,multiline:RegExp.multiline,input:RegExp.input},r=!1,n=1;n<=9;n++)r=(e["$"+n]=RegExp["$"+n])||r;return function(){var n=/[.?*+^$[\]\\(){}|-]/g,a=e.lastMatch.replace(n,"\\$&"),i=new t;if(r)for(var o=1;o<=9;o++){var s=e["$"+o];s?(s=s.replace(n,"\\$&"),a=a.replace(s,"("+s+")")):a="()"+a,oe.call(i,a.slice(0,a.indexOf("(")+1)),a=a.slice(a.indexOf("(")+1)}var l=se.call(i,"")+a;l=l.replace(/(\\\(|\\\)|[^()])+/g,function(e){return"[\\s\\S]{"+e.replace("\\","").length+"}"});var c=new RegExp(l,e.multiline?"gm":"g");c.lastIndex=e.leftContext.length,c.exec(e.input)}}function a(e){if(null===e)throw new TypeError("Cannot convert null or undefined to object");return Object(e)}function i(e){return ee.call(e,"__getInternalProperties")?e.__getInternalProperties(ge):ne(null)}function o(e){Se=e}function s(e){for(var r=e.length;r--;){var t=e.charAt(r);t>="a"&&t<="z"&&(e=e.slice(0,r)+t.toUpperCase()+e.slice(r+1))}return e}function l(e){return!!ze.test(e)&&(!ke.test(e)&&!Fe.test(e))}function c(e){var r=void 0,t=void 0;e=e.toLowerCase(),t=e.split("-");for(var n=1,a=t.length;n1&&(r.sort(),e=e.replace(RegExp("(?:"+Oe.source+")+","i"),se.call(r,""))),ee.call(Ee.tags,e)&&(e=Ee.tags[e]),t=e.split("-");for(var i=1,o=t.length;i-1)return t;var n=t.lastIndexOf("-");if(n<0)return;n>=2&&"-"===t.charAt(n-2)&&(n-=2),t=t.substring(0,n)}}function v(e,t){for(var n=0,a=t.length,i=void 0,o=void 0,s=void 0;n2){var O=u[F+1],S=k.call(D,O);S!==-1&&(j=O,z="-"+w+"-"+j)}else{var E=k(D,"true");E!==-1&&(j="true")}}if(ee.call(n,"[["+w+"]]")){var L=n["[["+w+"]]"];k.call(D,L)!==-1&&L!==j&&(j=L,z="")}h["[["+w+"]]"]=j,p+=z,y++}if(p.length>2){var P=l.indexOf("-x-");if(P===-1)l+=p;else{var N=l.substring(0,P),T=l.substring(P);l=N+p+T}l=c(l)}return h["[[locale]]"]=l,h}function p(e,r){for(var n=r.length,a=new t,i=0;in)throw new RangeError("Value is not a number or outside accepted range");return Math.floor(i)}return a}function D(){var e=arguments[0],r=arguments[1];return this&&this!==sr?j(a(this),e,r):new sr.NumberFormat(e,r)}function j(e,o,s){var l=i(e),c=n();if(l["[[initializedIntlObject]]"]===!0)throw new TypeError("`this` object has already been initialized as an Intl object");re(e,"__getInternalProperties",{value:function(){if(arguments[0]===ge)return l}}),l["[[initializedIntlObject]]"]=!0;var u=f(o);s=void 0===s?{}:a(s);var m=new r,v=w(s,"localeMatcher","string",new t("lookup","best fit"),"best fit");m["[[localeMatcher]]"]=v;var d=ue.NumberFormat["[[localeData]]"],p=h(ue.NumberFormat["[[availableLocales]]"],u,m,ue.NumberFormat["[[relevantExtensionKeys]]"],d);l["[[locale]]"]=p["[[locale]]"],l["[[numberingSystem]]"]=p["[[nu]]"],l["[[dataLocale]]"]=p["[[dataLocale]]"];var y=p["[[dataLocale]]"],b=w(s,"style","string",new t("decimal","percent","currency"),"decimal");l["[[style]]"]=b;var D=w(s,"currency","string");if(void 0!==D&&!g(D))throw new RangeError("'"+D+"' is not a valid currency code");if("currency"===b&&void 0===D)throw new TypeError("Currency code is required when style is currency");var j=void 0;"currency"===b&&(D=D.toUpperCase(),l["[[currency]]"]=D,j=z(D));var F=w(s,"currencyDisplay","string",new t("code","symbol","name"),"symbol");"currency"===b&&(l["[[currencyDisplay]]"]=F);var O=x(s,"minimumIntegerDigits",1,21,1);l["[[minimumIntegerDigits]]"]=O;var S="currency"===b?j:0,E=x(s,"minimumFractionDigits",0,20,S);l["[[minimumFractionDigits]]"]=E;var L="currency"===b?Math.max(E,j):"percent"===b?Math.max(E,0):Math.max(E,3),P=x(s,"maximumFractionDigits",E,20,L);l["[[maximumFractionDigits]]"]=P;var N=s.minimumSignificantDigits,T=s.maximumSignificantDigits;void 0===N&&void 0===T||(N=x(s,"minimumSignificantDigits",1,21,1),T=x(s,"maximumSignificantDigits",N,21,21),l["[[minimumSignificantDigits]]"]=N,l["[[maximumSignificantDigits]]"]=T);var _=w(s,"useGrouping","boolean",void 0,!0);l["[[useGrouping]]"]=_;var I=d[y],A=I.patterns,M=A[b];return l["[[positivePattern]]"]=M.positivePattern,l["[[negativePattern]]"]=M.negativePattern,l["[[boundFormat]]"]=void 0,l["[[initializedNumberFormat]]"]=!0,Q&&(e.format=k.call(e)),c(),e}function z(e){return void 0!==lr[e]?lr[e]:2}function k(){var e=null!==this&&"object"===ir.typeof(this)&&i(this);if(!e||!e["[[initializedNumberFormat]]"])throw new TypeError("`this` value for format() is not an initialized Intl.NumberFormat object.");if(void 0===e["[[boundFormat]]"]){var r=function(e){return S(this,Number(e))},t=ce.call(r,this);e["[[boundFormat]]"]=t}return e["[[boundFormat]]"]}function F(e,r){for(var t=O(e,r),n=[],a=0,i=0;t.length>i;i++){var o=t[i],s={};s.type=o["[[type]]"],s.value=o["[[value]]"],n[a]=s,a+=1}return n}function O(e,r){var n=i(e),a=n["[[dataLocale]]"],o=n["[[numberingSystem]]"],s=ue.NumberFormat["[[localeData]]"][a],l=s.symbols[o]||s.symbols.latn,c=void 0;!isNaN(r)&&r<0?(r=-r,c=n["[[negativePattern]]"]):c=n["[[positivePattern]]"];for(var u=new t,g=c.indexOf("{",0),f=0,m=0,v=c.length;g>-1&&gm){var d=c.substring(m,g);oe.call(u,{"[[type]]":"literal","[[value]]":d})}var h=c.substring(g+1,f);if("number"===h)if(isNaN(r)){var p=l.nan;oe.call(u,{"[[type]]":"nan","[[value]]":p})}else if(isFinite(r)){"percent"===n["[[style]]"]&&isFinite(r)&&(r*=100);var y=void 0;y=ee.call(n,"[[minimumSignificantDigits]]")&&ee.call(n,"[[maximumSignificantDigits]]")?E(r,n["[[minimumSignificantDigits]]"],n["[[maximumSignificantDigits]]"]):L(r,n["[[minimumIntegerDigits]]"],n["[[minimumFractionDigits]]"],n["[[maximumFractionDigits]]"]),cr[o]?!function(){var e=cr[o];y=String(y).replace(/\d/g,function(r){return e[r]})}():y=String(y);var b=void 0,w=void 0,x=y.indexOf(".",0);if(x>0?(b=y.substring(0,x),w=y.substring(x+1,x.length)):(b=y,w=void 0),n["[[useGrouping]]"]===!0){var D=l.group,j=[],z=s.patterns.primaryGroupSize||3,k=s.patterns.secondaryGroupSize||z;if(b.length>z){var F=b.length-z,O=F%k,S=b.slice(0,O);for(S.length&&oe.call(j,S);Oa;a++){var i=t[a];n+=i["[[value]]"]}return n}function E(r,t,n){var a=n,i=void 0,o=void 0;if(0===r)i=se.call(Array(a+1),"0"),o=0;else{o=e(Math.abs(r));var s=Math.round(Math.exp(Math.abs(o-a+1)*Math.LN10));i=String(Math.round(o-a+1<0?r*s:r/s))}if(o>=a)return i+se.call(Array(o-a+1+1),"0");if(o===a-1)return i;if(o>=0?i=i.slice(0,o+1)+"."+i.slice(o+1):o<0&&(i="0."+se.call(Array(-(o+1)+1),"0")+i),i.indexOf(".")>=0&&n>t){for(var l=n-t;l>0&&"0"===i.charAt(i.length-1);)i=i.slice(0,-1),l--;"."===i.charAt(i.length-1)&&(i=i.slice(0,-1))}return i}function L(e,r,t,n){var a=n,i=Math.pow(10,a)*e,o=0===i?"0":i.toFixed(0),s=void 0,l=(s=o.indexOf("e"))>-1?o.slice(s+1):0;l&&(o=o.slice(0,s).replace(".",""),o+=se.call(Array(l-(o.length-1)+1),"0"));var c=void 0;if(0!==a){var u=o.length;if(u<=a){var g=se.call(Array(a+1-u+1),"0");o=g+o,u=a+1}var f=o.substring(0,u-a),m=o.substring(u-a,o.length);o=f+"."+m,c=f.length}else c=o.length;for(var v=n-t;v>0&&"0"===o.slice(-1);)o=o.slice(0,-1),v--;if("."===o.slice(-1)&&(o=o.slice(0,-1)),cl&&(l=m,c=f),u++}return c}function $(e,r){var t=[];for(var n in pr)ee.call(pr,n)&&void 0!==e["[["+n+"]]"]&&t.push(n);if(1===t.length){var a=R(t[0],e["[["+t[0]+"]]"]);if(a)return a}for(var i=120,o=20,s=8,l=6,c=6,u=3,g=2,f=1,m=-(1/0),v=void 0,d=0,h=r.length;d=2||k>=2&&z<=1?F>0?y-=l:F<0&&(y-=s):F>1?y-=u:F<-1&&(y-=c)}}p._.hour12!==e.hour12&&(y-=f),y>m&&(m=y,v=p),d++}return v}function K(){var e=null!==this&&"object"===ir.typeof(this)&&i(this);if(!e||!e["[[initializedDateTimeFormat]]"])throw new TypeError("`this` value for format() is not an initialized Intl.DateTimeFormat object.");if(void 0===e["[[boundFormat]]"]){var r=function(){var e=Number(0===arguments.length?Date.now():arguments[0]);return H(this,e)},t=ce.call(r,this);e["[[boundFormat]]"]=t}return e["[[boundFormat]]"]}function Y(e,r){if(!isFinite(r))throw new RangeError("Invalid valid date passed to format");var a=e.__getInternalProperties(ge);n();for(var i=a["[[locale]]"],o=new sr.NumberFormat([i],{useGrouping:!1}),s=new sr.NumberFormat([i],{minimumIntegerDigits:2,useGrouping:!1}),l=X(r,a["[[calendar]]"],a["[[timeZone]]"]),c=a["[[pattern]]"],u=new t,g=0,f=c.indexOf("{"),m=0,v=a["[[dataLocale]]"],d=ue.DateTimeFormat["[[localeData]]"][v].calendars,h=a["[[calendar]]"];f!==-1;){var p=void 0;if(m=c.indexOf("}",f),m===-1)throw new Error("Unclosed pattern");f>g&&oe.call(u,{type:"literal",value:c.substring(g,f)});var y=c.substring(f+1,m);if(pr.hasOwnProperty(y)){var b=a["[["+y+"]]"],w=l["[["+y+"]]"];if("year"===y&&w<=0?w=1-w:"month"===y?w++:"hour"===y&&a["[[hour12]]"]===!0&&(w%=12,0===w&&a["[[hourNo0]]"]===!0&&(w=12)),"numeric"===b)p=S(o,w);else if("2-digit"===b)p=S(s,w),p.length>2&&(p=p.slice(-2));else if(b in hr)switch(y){case"month":p=q(d,h,"months",b,l["[["+y+"]]"]);break;case"weekday":try{p=q(d,h,"days",b,l["[["+y+"]]"])}catch(e){throw new Error("Could not find weekday data for locale "+i)}break;case"timeZoneName":p="";break;case"era":try{p=q(d,h,"eras",b,l["[["+y+"]]"])}catch(e){throw new Error("Could not find era data for locale "+i)}break;default:p=l["[["+y+"]]"]}oe.call(u,{type:y,value:p})}else if("ampm"===y){var x=l["[[hour]]"];p=q(d,h,"dayPeriods",x>11?"pm":"am",null),oe.call(u,{type:"dayPeriod",value:p})}else oe.call(u,{type:"literal",value:c.substring(f,m+1)});g=m+1,f=c.indexOf("{",g)}return ma;a++){var i=t[a];n+=i.value}return n}function W(e,r){for(var t=Y(e,r),n=[],a=0;t.length>a;a++){var i=t[a];n.push({type:i.type,value:i.value})}return n}function X(e,t,n){var a=new Date(e),i="get"+(n||"");return new r({"[[weekday]]":a[i+"Day"](),"[[era]]":+(a[i+"FullYear"]()>=0),"[[year]]":a[i+"FullYear"](),"[[month]]":a[i+"Month"](),"[[day]]":a[i+"Date"](),"[[hour]]":a[i+"Hours"](),"[[minute]]":a[i+"Minutes"](),"[[second]]":a[i+"Seconds"](),"[[inDST]]":!1})}function V(e,r){if(!e.number)throw new Error("Object passed doesn't contain locale data for Intl.NumberFormat");var t=void 0,n=[r],a=r.split("-");for(a.length>2&&4===a[1].length&&oe.call(n,a[0]+"-"+a[2]);t=le.call(n);)oe.call(ue.NumberFormat["[[availableLocales]]"],t),ue.NumberFormat["[[localeData]]"][t]=e.number,e.date&&(e.date.nu=e.number.nu,oe.call(ue.DateTimeFormat["[[availableLocales]]"],t),ue.DateTimeFormat["[[localeData]]"][t]=e.date);void 0===Se&&o(r)}var J=function(){var e={};try{return Object.defineProperty(e,"a",{get:function(){return 1}}),1===e.a}catch(e){return!1}}(),Q=!J&&!Object.prototype.__defineGetter__,ee=Object.prototype.hasOwnProperty,re=J?Object.defineProperty:function(e,r,t){"get"in t&&e.__defineGetter__?e.__defineGetter__(r,t.get):(!ee.call(e,r)||"value"in t)&&(e[r]=t.value)},te=Array.prototype.indexOf||function(e){var r=this;if(!r.length)return-1;for(var t=arguments[1]||0,n=r.length;t1){for(var l=Array(o),c=0;c=0||Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t},He=function(e,r){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!r||"object"!=typeof r&&"function"!=typeof r?e:r},We="undefined"==typeof global?self:global,Xe=function e(r,t,n,a){var i=Object.getOwnPropertyDescriptor(r,t);if(void 0===i){var o=Object.getPrototypeOf(r);null!==o&&e(o,t,n,a)}else if("value"in i&&i.writable)i.value=n;else{var s=i.set;void 0!==s&&s.call(a,n)}return n},Ve=function(){function e(e,r){var t=[],n=!0,a=!1,i=void 0;try{for(var o,s=e[Symbol.iterator]();!(n=(o=s.next()).done)&&(t.push(o.value),!r||t.length!==r);n=!0);}catch(e){a=!0,i=e}finally{try{!n&&s.return&&s.return()}finally{if(a)throw i}}return t}return function(r,t){if(Array.isArray(r))return r;if(Symbol.iterator in Object(r))return e(r,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),Je=function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e)){for(var t,n=[],a=e[Symbol.iterator]();!(t=a.next()).done&&(n.push(t.value), !r||n.length!==r););return n}throw new TypeError("Invalid attempt to destructure non-iterable instance")},Qe=function(e,r){return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(r)}}))},er=function(e,r){return e.raw=r,e},rr=function(e,r,t){if(e===t)throw new ReferenceError(r+" is not defined - temporal dead zone");return e},tr={},nr=function(e){return Array.isArray(e)?e:Array.from(e)},ar=function(e){if(Array.isArray(e)){for(var r=0,t=Array(e.length);r