This repository has been archived by the owner on Aug 25, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 58
/
Copy pathfirebase-app.js.map
1 lines (1 loc) · 195 KB
/
firebase-app.js.map
1
{"version":3,"file":"firebase-app.js","sources":["../../node_modules/whatwg-fetch/fetch.js","../polyfill/dist/index.esm.js","../../node_modules/tslib/tslib.es6.js","../util/dist/index.esm.js","../app/dist/index.esm.js"],"sourcesContent":["(function(self) {\n 'use strict';\n\n if (self.fetch) {\n return\n }\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob: 'FileReader' in self && 'Blob' in self && (function() {\n try {\n new Blob()\n return true\n } catch(e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isDataView = function(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n var isArrayBufferView = ArrayBuffer.isView || function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue+','+value : value\n }\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n }\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n }\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n }\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n }\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n }\n\n Headers.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) { items.push(name) })\n return iteratorFor(items)\n }\n\n Headers.prototype.values = function() {\n var items = []\n this.forEach(function(value) { items.push(value) })\n return iteratorFor(items)\n }\n\n Headers.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) { items.push([name, value]) })\n return iteratorFor(items)\n }\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n throw new Error('unsupported BodyInit type')\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return (methods.indexOf(upcased) > -1) ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'omit'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n }\n\n Request.prototype.clone = function() {\n return new Request(this, { body: this._bodyInit })\n }\n\n function decode(body) {\n var form = new FormData()\n body.trim().split('&').forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers()\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ')\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n }\n\n Body.call(Request.prototype)\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = options.status === undefined ? 200 : options.status\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : 'OK'\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n }\n\n Body.call(Response.prototype)\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n }\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n }\n\n var redirectStatuses = [301, 302, 303, 307, 308]\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n }\n\n self.Headers = Headers\n self.Request = Request\n self.Response = Response\n\n self.fetch = function(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n var xhr = new XMLHttpRequest()\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n }\n self.fetch.polyfill = true\n})(typeof self !== 'undefined' ? self : this);\n","import 'whatwg-fetch';\n\n// Store setTimeout reference so promise-polyfill will be unaffected by\n// other code modifying setTimeout (like sinon.useFakeTimers())\nvar setTimeoutFunc = setTimeout;\n\nfunction noop() {}\n\n// Polyfill for Function.prototype.bind\nfunction bind(fn, thisArg) {\n return function() {\n fn.apply(thisArg, arguments);\n };\n}\n\nfunction Promise(fn) {\n if (!(this instanceof Promise))\n throw new TypeError('Promises must be constructed via new');\n if (typeof fn !== 'function') throw new TypeError('not a function');\n this._state = 0;\n this._handled = false;\n this._value = undefined;\n this._deferreds = [];\n\n doResolve(fn, this);\n}\n\nfunction handle(self, deferred) {\n while (self._state === 3) {\n self = self._value;\n }\n if (self._state === 0) {\n self._deferreds.push(deferred);\n return;\n }\n self._handled = true;\n Promise._immediateFn(function() {\n var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n (self._state === 1 ? resolve : reject)(deferred.promise, self._value);\n return;\n }\n var ret;\n try {\n ret = cb(self._value);\n } catch (e) {\n reject(deferred.promise, e);\n return;\n }\n resolve(deferred.promise, ret);\n });\n}\n\nfunction resolve(self, newValue) {\n try {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self)\n throw new TypeError('A promise cannot be resolved with itself.');\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = newValue.then;\n if (newValue instanceof Promise) {\n self._state = 3;\n self._value = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(bind(then, newValue), self);\n return;\n }\n }\n self._state = 1;\n self._value = newValue;\n finale(self);\n } catch (e) {\n reject(self, e);\n }\n}\n\nfunction reject(self, newValue) {\n self._state = 2;\n self._value = newValue;\n finale(self);\n}\n\nfunction finale(self) {\n if (self._state === 2 && self._deferreds.length === 0) {\n Promise._immediateFn(function() {\n if (!self._handled) {\n Promise._unhandledRejectionFn(self._value);\n }\n });\n }\n\n for (var i = 0, len = self._deferreds.length; i < len; i++) {\n handle(self, self._deferreds[i]);\n }\n self._deferreds = null;\n}\n\nfunction Handler(onFulfilled, onRejected, promise) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, self) {\n var done = false;\n try {\n fn(\n function(value) {\n if (done) return;\n done = true;\n resolve(self, value);\n },\n function(reason) {\n if (done) return;\n done = true;\n reject(self, reason);\n }\n );\n } catch (ex) {\n if (done) return;\n done = true;\n reject(self, ex);\n }\n}\n\nPromise.prototype['catch'] = function(onRejected) {\n return this.then(null, onRejected);\n};\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n var prom = new this.constructor(noop);\n\n handle(this, new Handler(onFulfilled, onRejected, prom));\n return prom;\n};\n\nPromise.prototype['finally'] = function(callback) {\n var constructor = this.constructor;\n return this.then(\n function(value) {\n return constructor.resolve(callback()).then(function() {\n return value;\n });\n },\n function(reason) {\n return constructor.resolve(callback()).then(function() {\n return constructor.reject(reason);\n });\n }\n );\n};\n\nPromise.all = function(arr) {\n return new Promise(function(resolve, reject) {\n if (!arr || typeof arr.length === 'undefined')\n throw new TypeError('Promise.all accepts an array');\n var args = Array.prototype.slice.call(arr);\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n\n function res(i, val) {\n try {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n var then = val.then;\n if (typeof then === 'function') {\n then.call(\n val,\n function(val) {\n res(i, val);\n },\n reject\n );\n return;\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n } catch (ex) {\n reject(ex);\n }\n }\n\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nPromise.resolve = function(value) {\n if (value && typeof value === 'object' && value.constructor === Promise) {\n return value;\n }\n\n return new Promise(function(resolve) {\n resolve(value);\n });\n};\n\nPromise.reject = function(value) {\n return new Promise(function(resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function(values) {\n return new Promise(function(resolve, reject) {\n for (var i = 0, len = values.length; i < len; i++) {\n values[i].then(resolve, reject);\n }\n });\n};\n\n// Use polyfill for setImmediate for performance gains\nPromise._immediateFn =\n (typeof setImmediate === 'function' &&\n function(fn) {\n setImmediate(fn);\n }) ||\n function(fn) {\n setTimeoutFunc(fn, 0);\n };\n\nPromise._unhandledRejectionFn = function _unhandledRejectionFn(err) {\n if (typeof console !== 'undefined' && console) {\n console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console\n }\n};\n\nvar globalNS = (function() {\n // the only reliable means to get the global object is\n // `Function('return this')()`\n // However, this causes CSP violations in Chrome apps.\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('unable to locate global object');\n})();\n\nif (!globalNS.Promise) {\n globalNS.Promise = Promise;\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar _global = createCommonjsModule(function (module) {\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n});\n\nvar _core = createCommonjsModule(function (module) {\nvar core = module.exports = { version: '2.5.5' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n});\nvar _core_1 = _core.version;\n\nvar _isObject = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\nvar _anObject = function (it) {\n if (!_isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n\nvar _fails = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n\n// Thank's IE8 for his funny defineProperty\nvar _descriptors = !_fails(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\nvar document = _global.document;\n// typeof document.createElement is 'object' in old IE\nvar is = _isObject(document) && _isObject(document.createElement);\nvar _domCreate = function (it) {\n return is ? document.createElement(it) : {};\n};\n\nvar _ie8DomDefine = !_descriptors && !_fails(function () {\n return Object.defineProperty(_domCreate('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n\n// 7.1.1 ToPrimitive(input [, PreferredType])\n\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nvar _toPrimitive = function (it, S) {\n if (!_isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !_isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\nvar dP = Object.defineProperty;\n\nvar f = _descriptors ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n _anObject(O);\n P = _toPrimitive(P, true);\n _anObject(Attributes);\n if (_ie8DomDefine) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\nvar _objectDp = {\n\tf: f\n};\n\nvar _propertyDesc = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\nvar _hide = _descriptors ? function (object, key, value) {\n return _objectDp.f(object, key, _propertyDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\nvar hasOwnProperty = {}.hasOwnProperty;\nvar _has = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n\nvar id = 0;\nvar px = Math.random();\nvar _uid = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\nvar _redefine = createCommonjsModule(function (module) {\nvar SRC = _uid('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\n_core.inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) _has(val, 'name') || _hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) _has(val, SRC) || _hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === _global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n _hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n _hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n});\n\nvar _aFunction = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n\n// optional / simple context binding\n\nvar _ctx = function (fn, that, length) {\n _aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? _global : IS_STATIC ? _global[name] || (_global[name] = {}) : (_global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? _core : _core[name] || (_core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? _ctx(out, _global) : IS_PROTO && typeof out == 'function' ? _ctx(Function.call, out) : out;\n // extend global\n if (target) _redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) _hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\n_global.core = _core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nvar _export = $export;\n\nvar toString = {}.toString;\n\nvar _cof = function (it) {\n return toString.call(it).slice(8, -1);\n};\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\n\n// eslint-disable-next-line no-prototype-builtins\nvar _iobject = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return _cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n// 7.2.1 RequireObjectCoercible(argument)\nvar _defined = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n// 7.1.13 ToObject(argument)\n\nvar _toObject = function (it) {\n return Object(_defined(it));\n};\n\n// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nvar _toInteger = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n// 7.1.15 ToLength\n\nvar min = Math.min;\nvar _toLength = function (it) {\n return it > 0 ? min(_toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n// 7.2.2 IsArray(argument)\n\nvar _isArray = Array.isArray || function isArray(arg) {\n return _cof(arg) == 'Array';\n};\n\nvar SHARED = '__core-js_shared__';\nvar store = _global[SHARED] || (_global[SHARED] = {});\nvar _shared = function (key) {\n return store[key] || (store[key] = {});\n};\n\nvar _wks = createCommonjsModule(function (module) {\nvar store = _shared('wks');\n\nvar Symbol = _global.Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : _uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n});\n\nvar SPECIES = _wks('species');\n\nvar _arraySpeciesConstructor = function (original) {\n var C;\n if (_isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || _isArray(C.prototype))) C = undefined;\n if (_isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n\n// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\n\n\nvar _arraySpeciesCreate = function (original, length) {\n return new (_arraySpeciesConstructor(original))(length);\n};\n\n// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\n\n\n\n\n\nvar _arrayMethods = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || _arraySpeciesCreate;\n return function ($this, callbackfn, that) {\n var O = _toObject($this);\n var self = _iobject(O);\n var f = _ctx(callbackfn, that, 3);\n var length = _toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n\n// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = _wks('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) _hide(ArrayProto, UNSCOPABLES, {});\nvar _addToUnscopables = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\n\nvar $find = _arrayMethods(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n_export(_export.P + _export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n_addToUnscopables(KEY);\n\nvar find = _core.Array.find;\n\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\n\nvar $find$1 = _arrayMethods(6);\nvar KEY$1 = 'findIndex';\nvar forced$1 = true;\n// Shouldn't skip holes\nif (KEY$1 in []) Array(1)[KEY$1](function () { forced$1 = false; });\n_export(_export.P + _export.F * forced$1, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find$1(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n_addToUnscopables(KEY$1);\n\nvar findIndex = _core.Array.findIndex;\n\n// to indexed object, toObject with fallback for non-array-like ES3 strings\n\n\nvar _toIobject = function (it) {\n return _iobject(_defined(it));\n};\n\nvar max = Math.max;\nvar min$1 = Math.min;\nvar _toAbsoluteIndex = function (index, length) {\n index = _toInteger(index);\n return index < 0 ? max(index + length, 0) : min$1(index, length);\n};\n\n// false -> Array#indexOf\n// true -> Array#includes\n\n\n\nvar _arrayIncludes = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = _toIobject($this);\n var length = _toLength(O.length);\n var index = _toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nvar shared = _shared('keys');\n\nvar _sharedKey = function (key) {\n return shared[key] || (shared[key] = _uid(key));\n};\n\nvar arrayIndexOf = _arrayIncludes(false);\nvar IE_PROTO = _sharedKey('IE_PROTO');\n\nvar _objectKeysInternal = function (object, names) {\n var O = _toIobject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) _has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (_has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n// IE 8- don't enum bug keys\nvar _enumBugKeys = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n// 19.1.2.14 / 15.2.3.14 Object.keys(O)\n\n\n\nvar _objectKeys = Object.keys || function keys(O) {\n return _objectKeysInternal(O, _enumBugKeys);\n};\n\nvar f$1 = Object.getOwnPropertySymbols;\n\nvar _objectGops = {\n\tf: f$1\n};\n\nvar f$2 = {}.propertyIsEnumerable;\n\nvar _objectPie = {\n\tf: f$2\n};\n\n// 19.1.2.1 Object.assign(target, source, ...)\n\n\n\n\n\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nvar _objectAssign = !$assign || _fails(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = _toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = _objectGops.f;\n var isEnum = _objectPie.f;\n while (aLen > index) {\n var S = _iobject(arguments[index++]);\n var keys = getSymbols ? _objectKeys(S).concat(getSymbols(S)) : _objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n\n// 19.1.3.1 Object.assign(target, source)\n\n\n_export(_export.S + _export.F, 'Object', { assign: _objectAssign });\n\nvar assign = _core.Object.assign;\n\n// 7.2.8 IsRegExp(argument)\n\n\nvar MATCH = _wks('match');\nvar _isRegexp = function (it) {\n var isRegExp;\n return _isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : _cof(it) == 'RegExp');\n};\n\n// helper for String#{startsWith, endsWith, includes}\n\n\n\nvar _stringContext = function (that, searchString, NAME) {\n if (_isRegexp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(_defined(that));\n};\n\nvar MATCH$1 = _wks('match');\nvar _failsIsRegexp = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH$1] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n_export(_export.P + _export.F * _failsIsRegexp(STARTS_WITH), 'String', {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = _stringContext(this, searchString, STARTS_WITH);\n var index = _toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n\nvar startsWith = _core.String.startsWith;\n\nvar _stringRepeat = function repeat(count) {\n var str = String(_defined(this));\n var res = '';\n var n = _toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError(\"Count can't be negative\");\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;\n return res;\n};\n\n_export(_export.P, 'String', {\n // 21.1.3.13 String.prototype.repeat(count)\n repeat: _stringRepeat\n});\n\nvar repeat = _core.String.repeat;\n\nvar _meta = createCommonjsModule(function (module) {\nvar META = _uid('meta');\n\n\nvar setDesc = _objectDp.f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !_fails(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!_isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!_has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!_has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !_has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n});\nvar _meta_1 = _meta.KEY;\nvar _meta_2 = _meta.NEED;\nvar _meta_3 = _meta.fastKey;\nvar _meta_4 = _meta.getWeak;\nvar _meta_5 = _meta.onFreeze;\n\nvar def = _objectDp.f;\n\nvar TAG = _wks('toStringTag');\n\nvar _setToStringTag = function (it, tag, stat) {\n if (it && !_has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n\nvar f$3 = _wks;\n\nvar _wksExt = {\n\tf: f$3\n};\n\nvar _library = false;\n\nvar defineProperty = _objectDp.f;\nvar _wksDefine = function (name) {\n var $Symbol = _core.Symbol || (_core.Symbol = _library ? {} : _global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: _wksExt.f(name) });\n};\n\n// all enumerable object keys, includes symbols\n\n\n\nvar _enumKeys = function (it) {\n var result = _objectKeys(it);\n var getSymbols = _objectGops.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = _objectPie.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n\nvar _objectDps = _descriptors ? Object.defineProperties : function defineProperties(O, Properties) {\n _anObject(O);\n var keys = _objectKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) _objectDp.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n\nvar document$1 = _global.document;\nvar _html = document$1 && document$1.documentElement;\n\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n\n\n\nvar IE_PROTO$1 = _sharedKey('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE$1 = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = _domCreate('iframe');\n var i = _enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n _html.appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE$1][_enumBugKeys[i]];\n return createDict();\n};\n\nvar _objectCreate = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE$1] = _anObject(O);\n result = new Empty();\n Empty[PROTOTYPE$1] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO$1] = O;\n } else result = createDict();\n return Properties === undefined ? result : _objectDps(result, Properties);\n};\n\n// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\n\nvar hiddenKeys = _enumBugKeys.concat('length', 'prototype');\n\nvar f$4 = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return _objectKeysInternal(O, hiddenKeys);\n};\n\nvar _objectGopn = {\n\tf: f$4\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\n\nvar gOPN = _objectGopn.f;\nvar toString$1 = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nvar f$5 = function getOwnPropertyNames(it) {\n return windowNames && toString$1.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(_toIobject(it));\n};\n\nvar _objectGopnExt = {\n\tf: f$5\n};\n\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar f$6 = _descriptors ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = _toIobject(O);\n P = _toPrimitive(P, true);\n if (_ie8DomDefine) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (_has(O, P)) return _propertyDesc(!_objectPie.f.call(O, P), O[P]);\n};\n\nvar _objectGopd = {\n\tf: f$6\n};\n\n// ECMAScript 6 symbols shim\n\n\n\n\n\nvar META = _meta.KEY;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar gOPD$1 = _objectGopd.f;\nvar dP$1 = _objectDp.f;\nvar gOPN$1 = _objectGopnExt.f;\nvar $Symbol = _global.Symbol;\nvar $JSON = _global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE$2 = 'prototype';\nvar HIDDEN = _wks('_hidden');\nvar TO_PRIMITIVE = _wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = _shared('symbol-registry');\nvar AllSymbols = _shared('symbols');\nvar OPSymbols = _shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE$2];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = _global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE$2] || !QObject[PROTOTYPE$2].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = _descriptors && _fails(function () {\n return _objectCreate(dP$1({}, 'a', {\n get: function () { return dP$1(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD$1(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP$1(it, key, D);\n if (protoDesc && it !== ObjectProto) dP$1(ObjectProto, key, protoDesc);\n} : dP$1;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _objectCreate($Symbol[PROTOTYPE$2]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n _anObject(it);\n key = _toPrimitive(key, true);\n _anObject(D);\n if (_has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!_has(it, HIDDEN)) dP$1(it, HIDDEN, _propertyDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (_has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _objectCreate(D, { enumerable: _propertyDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP$1(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n _anObject(it);\n var keys = _enumKeys(P = _toIobject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _objectCreate(it) : $defineProperties(_objectCreate(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = _toPrimitive(key, true));\n if (this === ObjectProto && _has(AllSymbols, key) && !_has(OPSymbols, key)) return false;\n return E || !_has(this, key) || !_has(AllSymbols, key) || _has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = _toIobject(it);\n key = _toPrimitive(key, true);\n if (it === ObjectProto && _has(AllSymbols, key) && !_has(OPSymbols, key)) return;\n var D = gOPD$1(it, key);\n if (D && _has(AllSymbols, key) && !(_has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN$1(_toIobject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!_has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN$1(IS_OP ? OPSymbols : _toIobject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (_has(AllSymbols, key = names[i++]) && (IS_OP ? _has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = _uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (_has(this, HIDDEN) && _has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, _propertyDesc(1, value));\n };\n if (_descriptors && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n _redefine($Symbol[PROTOTYPE$2], 'toString', function toString() {\n return this._k;\n });\n\n _objectGopd.f = $getOwnPropertyDescriptor;\n _objectDp.f = $defineProperty;\n _objectGopn.f = _objectGopnExt.f = $getOwnPropertyNames;\n _objectPie.f = $propertyIsEnumerable;\n _objectGops.f = $getOwnPropertySymbols;\n\n if (_descriptors && !_library) {\n _redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n _wksExt.f = function (name) {\n return wrap(_wks(name));\n };\n}\n\n_export(_export.G + _export.W + _export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)_wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = _objectKeys(_wks.store), k = 0; wellKnownSymbols.length > k;) _wksDefine(wellKnownSymbols[k++]);\n\n_export(_export.S + _export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return _has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n_export(_export.S + _export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && _export(_export.S + _export.F * (!USE_NATIVE || _fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!_isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!_isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE$2][TO_PRIMITIVE] || _hide($Symbol[PROTOTYPE$2], TO_PRIMITIVE, $Symbol[PROTOTYPE$2].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\n_setToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\n_setToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\n_setToStringTag(_global.JSON, 'JSON', true);\n\n// getting tag from 19.1.3.6 Object.prototype.toString()\n\nvar TAG$1 = _wks('toStringTag');\n// ES3 wrong here\nvar ARG = _cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nvar _classof = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG$1)) == 'string' ? T\n // builtinTag case\n : ARG ? _cof(O)\n // ES3 arguments fallback\n : (B = _cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n// 19.1.3.6 Object.prototype.toString()\n\nvar test = {};\ntest[_wks('toStringTag')] = 'z';\nif (test + '' != '[object z]') {\n _redefine(Object.prototype, 'toString', function toString() {\n return '[object ' + _classof(this) + ']';\n }, true);\n}\n\n_wksDefine('asyncIterator');\n\n_wksDefine('observable');\n\nvar symbol = _core.Symbol;\n\n// true -> String#at\n// false -> String#codePointAt\nvar _stringAt = function (TO_STRING) {\n return function (that, pos) {\n var s = String(_defined(that));\n var i = _toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n\nvar _iterators = {};\n\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n_hide(IteratorPrototype, _wks('iterator'), function () { return this; });\n\nvar _iterCreate = function (Constructor, NAME, next) {\n Constructor.prototype = _objectCreate(IteratorPrototype, { next: _propertyDesc(1, next) });\n _setToStringTag(Constructor, NAME + ' Iterator');\n};\n\n// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\n\n\nvar IE_PROTO$2 = _sharedKey('IE_PROTO');\nvar ObjectProto$1 = Object.prototype;\n\nvar _objectGpo = Object.getPrototypeOf || function (O) {\n O = _toObject(O);\n if (_has(O, IE_PROTO$2)) return O[IE_PROTO$2];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto$1 : null;\n};\n\nvar ITERATOR = _wks('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nvar _iterDefine = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n _iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = _objectGpo($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n _setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!_library && typeof IteratorPrototype[ITERATOR] != 'function') _hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!_library || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n _hide(proto, ITERATOR, $default);\n }\n // Plug for library\n _iterators[NAME] = $default;\n _iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) _redefine(proto, key, methods[key]);\n } else _export(_export.P + _export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n\nvar $at = _stringAt(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\n_iterDefine(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n\nvar _iterStep = function (done, value) {\n return { value: value, done: !!done };\n};\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nvar es6_array_iterator = _iterDefine(Array, 'Array', function (iterated, kind) {\n this._t = _toIobject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return _iterStep(1);\n }\n if (kind == 'keys') return _iterStep(0, index);\n if (kind == 'values') return _iterStep(0, O[index]);\n return _iterStep(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\n_iterators.Arguments = _iterators.Array;\n\n_addToUnscopables('keys');\n_addToUnscopables('values');\n_addToUnscopables('entries');\n\nvar ITERATOR$1 = _wks('iterator');\nvar TO_STRING_TAG = _wks('toStringTag');\nvar ArrayValues = _iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = _objectKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = _global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR$1]) _hide(proto, ITERATOR$1, ArrayValues);\n if (!proto[TO_STRING_TAG]) _hide(proto, TO_STRING_TAG, NAME);\n _iterators[NAME] = ArrayValues;\n if (explicit) for (key in es6_array_iterator) if (!proto[key]) _redefine(proto, key, es6_array_iterator[key], true);\n }\n}\n\nvar iterator = _wksExt.f('iterator');\n\n/**\r\n * Copyright 2017 Google Inc.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [0, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { if (o[n]) i[n] = function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; }; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator];\r\n return m ? m.call(o) : typeof __values === \"function\" ? __values(o) : o[Symbol.iterator]();\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { __extends } from 'tslib';\n\n/**\r\n * Copyright 2017 Google Inc.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview Firebase constants. Some of these (@defines) can be overridden at compile-time.\r\n */\r\nvar CONSTANTS = {\r\n /**\r\n * @define {boolean} Whether this is the client Node.js SDK.\r\n */\r\n NODE_CLIENT: false,\r\n /**\r\n * @define {boolean} Whether this is the Admin Node.js SDK.\r\n */\r\n NODE_ADMIN: false,\r\n /**\r\n * Firebase SDK Version\r\n */\r\n SDK_VERSION: '${JSCORE_VERSION}'\r\n};\n\n/**\r\n * Copyright 2017 Google Inc.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Throws an error if the provided assertion is falsy\r\n * @param {*} assertion The assertion to be tested for falsiness\r\n * @param {!string} message The message to display if the check fails\r\n */\r\nvar assert = function (assertion, message) {\r\n if (!assertion) {\r\n throw assertionError(message);\r\n }\r\n};\r\n/**\r\n * Returns an Error object suitable for throwing.\r\n * @param {string} message\r\n * @return {!Error}\r\n */\r\nvar assertionError = function (message) {\r\n return new Error('Firebase Database (' +\r\n CONSTANTS.SDK_VERSION +\r\n ') INTERNAL ASSERT FAILED: ' +\r\n message);\r\n};\n\n/**\r\n * Copyright 2017 Google Inc.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar stringToByteArray = function (str) {\r\n // TODO(user): Use native implementations if/when available\r\n var out = [], p = 0;\r\n for (var i = 0; i < str.length; i++) {\r\n var c = str.charCodeAt(i);\r\n if (c < 128) {\r\n out[p++] = c;\r\n }\r\n else if (c < 2048) {\r\n out[p++] = (c >> 6) | 192;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else if ((c & 0xfc00) == 0xd800 &&\r\n i + 1 < str.length &&\r\n (str.charCodeAt(i + 1) & 0xfc00) == 0xdc00) {\r\n // Surrogate Pair\r\n c = 0x10000 + ((c & 0x03ff) << 10) + (str.charCodeAt(++i) & 0x03ff);\r\n out[p++] = (c >> 18) | 240;\r\n out[p++] = ((c >> 12) & 63) | 128;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else {\r\n out[p++] = (c >> 12) | 224;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n }\r\n return out;\r\n};\r\n/**\r\n * Turns an array of numbers into the string given by the concatenation of the\r\n * characters to which the numbers correspond.\r\n * @param {Array<number>} bytes Array of numbers representing characters.\r\n * @return {string} Stringification of the array.\r\n */\r\nvar byteArrayToString = function (bytes) {\r\n // TODO(user): Use native implementations if/when available\r\n var out = [], pos = 0, c = 0;\r\n while (pos < bytes.length) {\r\n var c1 = bytes[pos++];\r\n if (c1 < 128) {\r\n out[c++] = String.fromCharCode(c1);\r\n }\r\n else if (c1 > 191 && c1 < 224) {\r\n var c2 = bytes[pos++];\r\n out[c++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));\r\n }\r\n else if (c1 > 239 && c1 < 365) {\r\n // Surrogate Pair\r\n var c2 = bytes[pos++];\r\n var c3 = bytes[pos++];\r\n var c4 = bytes[pos++];\r\n var u = (((c1 & 7) << 18) | ((c2 & 63) << 12) | ((c3 & 63) << 6) | (c4 & 63)) -\r\n 0x10000;\r\n out[c++] = String.fromCharCode(0xd800 + (u >> 10));\r\n out[c++] = String.fromCharCode(0xdc00 + (u & 1023));\r\n }\r\n else {\r\n var c2 = bytes[pos++];\r\n var c3 = bytes[pos++];\r\n out[c++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\r\n }\r\n }\r\n return out.join('');\r\n};\r\n// Static lookup maps, lazily populated by init_()\r\nvar base64 = {\r\n /**\r\n * Maps bytes to characters.\r\n * @type {Object}\r\n * @private\r\n */\r\n byteToCharMap_: null,\r\n /**\r\n * Maps characters to bytes.\r\n * @type {Object}\r\n * @private\r\n */\r\n charToByteMap_: null,\r\n /**\r\n * Maps bytes to websafe characters.\r\n * @type {Object}\r\n * @private\r\n */\r\n byteToCharMapWebSafe_: null,\r\n /**\r\n * Maps websafe characters to bytes.\r\n * @type {Object}\r\n * @private\r\n */\r\n charToByteMapWebSafe_: null,\r\n /**\r\n * Our default alphabet, shared between\r\n * ENCODED_VALS and ENCODED_VALS_WEBSAFE\r\n * @type {string}\r\n */\r\n ENCODED_VALS_BASE: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + 'abcdefghijklmnopqrstuvwxyz' + '0123456789',\r\n /**\r\n * Our default alphabet. Value 64 (=) is special; it means \"nothing.\"\r\n * @type {string}\r\n */\r\n get ENCODED_VALS() {\r\n return this.ENCODED_VALS_BASE + '+/=';\r\n },\r\n /**\r\n * Our websafe alphabet.\r\n * @type {string}\r\n */\r\n get ENCODED_VALS_WEBSAFE() {\r\n return this.ENCODED_VALS_BASE + '-_.';\r\n },\r\n /**\r\n * Whether this browser supports the atob and btoa functions. This extension\r\n * started at Mozilla but is now implemented by many browsers. We use the\r\n * ASSUME_* variables to avoid pulling in the full useragent detection library\r\n * but still allowing the standard per-browser compilations.\r\n *\r\n * @type {boolean}\r\n */\r\n HAS_NATIVE_SUPPORT: typeof atob === 'function',\r\n /**\r\n * Base64-encode an array of bytes.\r\n *\r\n * @param {Array<number>|Uint8Array} input An array of bytes (numbers with\r\n * value in [0, 255]) to encode.\r\n * @param {boolean=} opt_webSafe Boolean indicating we should use the\r\n * alternative alphabet.\r\n * @return {string} The base64 encoded string.\r\n */\r\n encodeByteArray: function (input, opt_webSafe) {\r\n if (!Array.isArray(input)) {\r\n throw Error('encodeByteArray takes an array as a parameter');\r\n }\r\n this.init_();\r\n var byteToCharMap = opt_webSafe\r\n ? this.byteToCharMapWebSafe_\r\n : this.byteToCharMap_;\r\n var output = [];\r\n for (var i = 0; i < input.length; i += 3) {\r\n var byte1 = input[i];\r\n var haveByte2 = i + 1 < input.length;\r\n var byte2 = haveByte2 ? input[i + 1] : 0;\r\n var haveByte3 = i + 2 < input.length;\r\n var byte3 = haveByte3 ? input[i + 2] : 0;\r\n var outByte1 = byte1 >> 2;\r\n var outByte2 = ((byte1 & 0x03) << 4) | (byte2 >> 4);\r\n var outByte3 = ((byte2 & 0x0f) << 2) | (byte3 >> 6);\r\n var outByte4 = byte3 & 0x3f;\r\n if (!haveByte3) {\r\n outByte4 = 64;\r\n if (!haveByte2) {\r\n outByte3 = 64;\r\n }\r\n }\r\n output.push(byteToCharMap[outByte1], byteToCharMap[outByte2], byteToCharMap[outByte3], byteToCharMap[outByte4]);\r\n }\r\n return output.join('');\r\n },\r\n /**\r\n * Base64-encode a string.\r\n *\r\n * @param {string} input A string to encode.\r\n * @param {boolean=} opt_webSafe If true, we should use the\r\n * alternative alphabet.\r\n * @return {string} The base64 encoded string.\r\n */\r\n encodeString: function (input, opt_webSafe) {\r\n // Shortcut for Mozilla browsers that implement\r\n // a native base64 encoder in the form of \"btoa/atob\"\r\n if (this.HAS_NATIVE_SUPPORT && !opt_webSafe) {\r\n return btoa(input);\r\n }\r\n return this.encodeByteArray(stringToByteArray(input), opt_webSafe);\r\n },\r\n /**\r\n * Base64-decode a string.\r\n *\r\n * @param {string} input to decode.\r\n * @param {boolean=} opt_webSafe True if we should use the\r\n * alternative alphabet.\r\n * @return {string} string representing the decoded value.\r\n */\r\n decodeString: function (input, opt_webSafe) {\r\n // Shortcut for Mozilla browsers that implement\r\n // a native base64 encoder in the form of \"btoa/atob\"\r\n if (this.HAS_NATIVE_SUPPORT && !opt_webSafe) {\r\n return atob(input);\r\n }\r\n return byteArrayToString(this.decodeStringToByteArray(input, opt_webSafe));\r\n },\r\n /**\r\n * Base64-decode a string.\r\n *\r\n * In base-64 decoding, groups of four characters are converted into three\r\n * bytes. If the encoder did not apply padding, the input length may not\r\n * be a multiple of 4.\r\n *\r\n * In this case, the last group will have fewer than 4 characters, and\r\n * padding will be inferred. If the group has one or two characters, it decodes\r\n * to one byte. If the group has three characters, it decodes to two bytes.\r\n *\r\n * @param {string} input Input to decode.\r\n * @param {boolean=} opt_webSafe True if we should use the web-safe alphabet.\r\n * @return {!Array<number>} bytes representing the decoded value.\r\n */\r\n decodeStringToByteArray: function (input, opt_webSafe) {\r\n this.init_();\r\n var charToByteMap = opt_webSafe\r\n ? this.charToByteMapWebSafe_\r\n : this.charToByteMap_;\r\n var output = [];\r\n for (var i = 0; i < input.length;) {\r\n var byte1 = charToByteMap[input.charAt(i++)];\r\n var haveByte2 = i < input.length;\r\n var byte2 = haveByte2 ? charToByteMap[input.charAt(i)] : 0;\r\n ++i;\r\n var haveByte3 = i < input.length;\r\n var byte3 = haveByte3 ? charToByteMap[input.charAt(i)] : 64;\r\n ++i;\r\n var haveByte4 = i < input.length;\r\n var byte4 = haveByte4 ? charToByteMap[input.charAt(i)] : 64;\r\n ++i;\r\n if (byte1 == null || byte2 == null || byte3 == null || byte4 == null) {\r\n throw Error();\r\n }\r\n var outByte1 = (byte1 << 2) | (byte2 >> 4);\r\n output.push(outByte1);\r\n if (byte3 != 64) {\r\n var outByte2 = ((byte2 << 4) & 0xf0) | (byte3 >> 2);\r\n output.push(outByte2);\r\n if (byte4 != 64) {\r\n var outByte3 = ((byte3 << 6) & 0xc0) | byte4;\r\n output.push(outByte3);\r\n }\r\n }\r\n }\r\n return output;\r\n },\r\n /**\r\n * Lazy static initialization function. Called before\r\n * accessing any of the static map variables.\r\n * @private\r\n */\r\n init_: function () {\r\n if (!this.byteToCharMap_) {\r\n this.byteToCharMap_ = {};\r\n this.charToByteMap_ = {};\r\n this.byteToCharMapWebSafe_ = {};\r\n this.charToByteMapWebSafe_ = {};\r\n // We want quick mappings back and forth, so we precompute two maps.\r\n for (var i = 0; i < this.ENCODED_VALS.length; i++) {\r\n this.byteToCharMap_[i] = this.ENCODED_VALS.charAt(i);\r\n this.charToByteMap_[this.byteToCharMap_[i]] = i;\r\n this.byteToCharMapWebSafe_[i] = this.ENCODED_VALS_WEBSAFE.charAt(i);\r\n this.charToByteMapWebSafe_[this.byteToCharMapWebSafe_[i]] = i;\r\n // Be forgiving when decoding and correctly decode both encodings.\r\n if (i >= this.ENCODED_VALS_BASE.length) {\r\n this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(i)] = i;\r\n this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(i)] = i;\r\n }\r\n }\r\n }\r\n }\r\n};\r\n/**\r\n * URL-safe base64 encoding\r\n * @param {!string} str\r\n * @return {!string}\r\n */\r\nvar base64Encode = function (str) {\r\n var utf8Bytes = stringToByteArray(str);\r\n return base64.encodeByteArray(utf8Bytes, true);\r\n};\r\n/**\r\n * URL-safe base64 decoding\r\n *\r\n * NOTE: DO NOT use the global atob() function - it does NOT support the\r\n * base64Url variant encoding.\r\n *\r\n * @param {string} str To be decoded\r\n * @return {?string} Decoded result, if possible\r\n */\r\nvar base64Decode = function (str) {\r\n try {\r\n return base64.decodeString(str, true);\r\n }\r\n catch (e) {\r\n console.error('base64Decode failed: ', e);\r\n }\r\n return null;\r\n};\n\n/**\r\n * Copyright 2017 Google Inc.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Do a deep-copy of basic JavaScript Objects or Arrays.\r\n */\r\nfunction deepCopy(value) {\r\n return deepExtend(undefined, value);\r\n}\r\n/**\r\n * Copy properties from source to target (recursively allows extension\r\n * of Objects and Arrays). Scalar values in the target are over-written.\r\n * If target is undefined, an object of the appropriate type will be created\r\n * (and returned).\r\n *\r\n * We recursively copy all child properties of plain Objects in the source- so\r\n * that namespace- like dictionaries are merged.\r\n *\r\n * Note that the target can be a function, in which case the properties in\r\n * the source Object are copied onto it as static properties of the Function.\r\n */\r\nfunction deepExtend(target, source) {\r\n if (!(source instanceof Object)) {\r\n return source;\r\n }\r\n switch (source.constructor) {\r\n case Date:\r\n // Treat Dates like scalars; if the target date object had any child\r\n // properties - they will be lost!\r\n var dateValue = source;\r\n return new Date(dateValue.getTime());\r\n case Object:\r\n if (target === undefined) {\r\n target = {};\r\n }\r\n break;\r\n case Array:\r\n // Always copy the array source and overwrite the target.\r\n target = [];\r\n break;\r\n default:\r\n // Not a plain Object - treat it as a scalar.\r\n return source;\r\n }\r\n for (var prop in source) {\r\n if (!source.hasOwnProperty(prop)) {\r\n continue;\r\n }\r\n target[prop] = deepExtend(target[prop], source[prop]);\r\n }\r\n return target;\r\n}\r\n// TODO: Really needed (for JSCompiler type checking)?\r\nfunction patchProperty(obj, prop, value) {\r\n obj[prop] = value;\r\n}\n\n/**\r\n * Copyright 2017 Google Inc.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar Deferred = /** @class */ (function () {\r\n function Deferred() {\r\n var _this = this;\r\n this.promise = new Promise(function (resolve, reject) {\r\n _this.resolve = resolve;\r\n _this.reject = reject;\r\n });\r\n }\r\n /**\r\n * Our API internals are not promiseified and cannot because our callback APIs have subtle expectations around\r\n * invoking promises inline, which Promises are forbidden to do. This method accepts an optional node-style callback\r\n * and returns a node-style callback which will resolve or reject the Deferred's promise.\r\n * @param {((?function(?(Error)): (?|undefined))| (?function(?(Error),?=): (?|undefined)))=} callback\r\n * @return {!function(?(Error), ?=)}\r\n */\r\n Deferred.prototype.wrapCallback = function (callback) {\r\n var _this = this;\r\n return function (error, value) {\r\n if (error) {\r\n _this.reject(error);\r\n }\r\n else {\r\n _this.resolve(value);\r\n }\r\n if (typeof callback === 'function') {\r\n // Attaching noop handler just in case developer wasn't expecting\r\n // promises\r\n _this.promise.catch(function () { });\r\n // Some of our callbacks don't expect a value and our own tests\r\n // assert that the parameter length is 1\r\n if (callback.length === 1) {\r\n callback(error);\r\n }\r\n else {\r\n callback(error, value);\r\n }\r\n }\r\n };\r\n };\r\n return Deferred;\r\n}());\n\n/**\r\n * Copyright 2017 Google Inc.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns navigator.userAgent string or '' if it's not defined.\r\n * @return {string} user agent string\r\n */\r\nvar getUA = function () {\r\n if (typeof navigator !== 'undefined' &&\r\n typeof navigator['userAgent'] === 'string') {\r\n return navigator['userAgent'];\r\n }\r\n else {\r\n return '';\r\n }\r\n};\r\n/**\r\n * Detect Cordova / PhoneGap / Ionic frameworks on a mobile device.\r\n *\r\n * Deliberately does not rely on checking `file://` URLs (as this fails PhoneGap in the Ripple emulator) nor\r\n * Cordova `onDeviceReady`, which would normally wait for a callback.\r\n *\r\n * @return {boolean} isMobileCordova\r\n */\r\nvar isMobileCordova = function () {\r\n return (typeof window !== 'undefined' &&\r\n !!(window['cordova'] || window['phonegap'] || window['PhoneGap']) &&\r\n /ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test(getUA()));\r\n};\r\n/**\r\n * Detect React Native.\r\n *\r\n * @return {boolean} True if ReactNative environment is detected.\r\n */\r\nvar isReactNative = function () {\r\n return (typeof navigator === 'object' && navigator['product'] === 'ReactNative');\r\n};\r\n/**\r\n * Detect Node.js.\r\n *\r\n * @return {boolean} True if Node.js environment is detected.\r\n */\r\nvar isNodeSdk = function () {\r\n return CONSTANTS.NODE_CLIENT === true || CONSTANTS.NODE_ADMIN === true;\r\n};\n\nvar ERROR_NAME = 'FirebaseError';\r\nvar captureStackTrace = Error\r\n .captureStackTrace;\r\n// Export for faking in tests\r\nfunction patchCapture(captureFake) {\r\n var result = captureStackTrace;\r\n captureStackTrace = captureFake;\r\n return result;\r\n}\r\nvar FirebaseError = /** @class */ (function () {\r\n function FirebaseError(code, message) {\r\n this.code = code;\r\n this.message = message;\r\n // We want the stack value, if implemented by Error\r\n if (captureStackTrace) {\r\n // Patches this.stack, omitted calls above ErrorFactory#create\r\n captureStackTrace(this, ErrorFactory.prototype.create);\r\n }\r\n else {\r\n try {\r\n // In case of IE11, stack will be set only after error is raised.\r\n // https://docs.microsoft.com/en-us/scripting/javascript/reference/stack-property-error-javascript\r\n throw Error.apply(this, arguments);\r\n }\r\n catch (err) {\r\n this.name = ERROR_NAME;\r\n // Make non-enumerable getter for the property.\r\n Object.defineProperty(this, 'stack', {\r\n get: function () {\r\n return err.stack;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n return FirebaseError;\r\n}());\r\n// Back-door inheritance\r\nFirebaseError.prototype = Object.create(Error.prototype);\r\nFirebaseError.prototype.constructor = FirebaseError;\r\nFirebaseError.prototype.name = ERROR_NAME;\r\nvar ErrorFactory = /** @class */ (function () {\r\n function ErrorFactory(service, serviceName, errors) {\r\n this.service = service;\r\n this.serviceName = serviceName;\r\n this.errors = errors;\r\n // Matches {$name}, by default.\r\n this.pattern = /\\{\\$([^}]+)}/g;\r\n // empty\r\n }\r\n ErrorFactory.prototype.create = function (code, data) {\r\n if (data === undefined) {\r\n data = {};\r\n }\r\n var template = this.errors[code];\r\n var fullCode = this.service + '/' + code;\r\n var message;\r\n if (template === undefined) {\r\n message = 'Error';\r\n }\r\n else {\r\n message = template.replace(this.pattern, function (match, key) {\r\n var value = data[key];\r\n return value !== undefined ? value.toString() : '<' + key + '?>';\r\n });\r\n }\r\n // Service: Error message (service/code).\r\n message = this.serviceName + ': ' + message + ' (' + fullCode + ').';\r\n var err = new FirebaseError(fullCode, message);\r\n // Populate the Error object with message parts for programmatic\r\n // accesses (e.g., e.file).\r\n for (var prop in data) {\r\n if (!data.hasOwnProperty(prop) || prop.slice(-1) === '_') {\r\n continue;\r\n }\r\n err[prop] = data[prop];\r\n }\r\n return err;\r\n };\r\n return ErrorFactory;\r\n}());\n\n/**\r\n * Copyright 2017 Google Inc.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Evaluates a JSON string into a javascript object.\r\n *\r\n * @param {string} str A string containing JSON.\r\n * @return {*} The javascript object representing the specified JSON.\r\n */\r\nfunction jsonEval(str) {\r\n return JSON.parse(str);\r\n}\r\n/**\r\n * Returns JSON representing a javascript object.\r\n * @param {*} data Javascript object to be stringified.\r\n * @return {string} The JSON contents of the object.\r\n */\r\nfunction stringify(data) {\r\n return JSON.stringify(data);\r\n}\n\n/**\r\n * Copyright 2017 Google Inc.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Decodes a Firebase auth. token into constituent parts.\r\n *\r\n * Notes:\r\n * - May return with invalid / incomplete claims if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n *\r\n * @param {?string} token\r\n * @return {{header: *, claims: *, data: *, signature: string}}\r\n */\r\nvar decode = function (token) {\r\n var header = {}, claims = {}, data = {}, signature = '';\r\n try {\r\n var parts = token.split('.');\r\n header = jsonEval(base64Decode(parts[0]) || '');\r\n claims = jsonEval(base64Decode(parts[1]) || '');\r\n signature = parts[2];\r\n data = claims['d'] || {};\r\n delete claims['d'];\r\n }\r\n catch (e) { }\r\n return {\r\n header: header,\r\n claims: claims,\r\n data: data,\r\n signature: signature\r\n };\r\n};\r\n/**\r\n * Decodes a Firebase auth. token and checks the validity of its time-based claims. Will return true if the\r\n * token is within the time window authorized by the 'nbf' (not-before) and 'iat' (issued-at) claims.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n *\r\n * @param {?string} token\r\n * @return {boolean}\r\n */\r\nvar isValidTimestamp = function (token) {\r\n var claims = decode(token).claims, now = Math.floor(new Date().getTime() / 1000), validSince, validUntil;\r\n if (typeof claims === 'object') {\r\n if (claims.hasOwnProperty('nbf')) {\r\n validSince = claims['nbf'];\r\n }\r\n else if (claims.hasOwnProperty('iat')) {\r\n validSince = claims['iat'];\r\n }\r\n if (claims.hasOwnProperty('exp')) {\r\n validUntil = claims['exp'];\r\n }\r\n else {\r\n // token will expire after 24h by default\r\n validUntil = validSince + 86400;\r\n }\r\n }\r\n return (now && validSince && validUntil && now >= validSince && now <= validUntil);\r\n};\r\n/**\r\n * Decodes a Firebase auth. token and returns its issued at time if valid, null otherwise.\r\n *\r\n * Notes:\r\n * - May return null if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n *\r\n * @param {?string} token\r\n * @return {?number}\r\n */\r\nvar issuedAtTime = function (token) {\r\n var claims = decode(token).claims;\r\n if (typeof claims === 'object' && claims.hasOwnProperty('iat')) {\r\n return claims['iat'];\r\n }\r\n return null;\r\n};\r\n/**\r\n * Decodes a Firebase auth. token and checks the validity of its format. Expects a valid issued-at time and non-empty\r\n * signature.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n *\r\n * @param {?string} token\r\n * @return {boolean}\r\n */\r\nvar isValidFormat = function (token) {\r\n var decoded = decode(token), claims = decoded.claims;\r\n return (!!decoded.signature &&\r\n !!claims &&\r\n typeof claims === 'object' &&\r\n claims.hasOwnProperty('iat'));\r\n};\r\n/**\r\n * Attempts to peer into an auth token and determine if it's an admin auth token by looking at the claims portion.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n *\r\n * @param {?string} token\r\n * @return {boolean}\r\n */\r\nvar isAdmin = function (token) {\r\n var claims = decode(token).claims;\r\n return typeof claims === 'object' && claims['admin'] === true;\r\n};\n\n/**\r\n * Copyright 2017 Google Inc.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// See http://www.devthought.com/2012/01/18/an-object-is-not-a-hash/\r\nvar contains = function (obj, key) {\r\n return Object.prototype.hasOwnProperty.call(obj, key);\r\n};\r\nvar safeGet = function (obj, key) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key))\r\n return obj[key];\r\n // else return undefined.\r\n};\r\n/**\r\n * Enumerates the keys/values in an object, excluding keys defined on the prototype.\r\n *\r\n * @param {?Object.<K,V>} obj Object to enumerate.\r\n * @param {!function(K, V)} fn Function to call for each key and value.\r\n * @template K,V\r\n */\r\nvar forEach = function (obj, fn) {\r\n for (var key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n fn(key, obj[key]);\r\n }\r\n }\r\n};\r\n/**\r\n * Copies all the (own) properties from one object to another.\r\n * @param {!Object} objTo\r\n * @param {!Object} objFrom\r\n * @return {!Object} objTo\r\n */\r\nvar extend = function (objTo, objFrom) {\r\n forEach(objFrom, function (key, value) {\r\n objTo[key] = value;\r\n });\r\n return objTo;\r\n};\r\n/**\r\n * Returns a clone of the specified object.\r\n * @param {!Object} obj\r\n * @return {!Object} cloned obj.\r\n */\r\nvar clone = function (obj) {\r\n return extend({}, obj);\r\n};\r\n/**\r\n * Returns true if obj has typeof \"object\" and is not null. Unlike goog.isObject(), does not return true\r\n * for functions.\r\n *\r\n * @param obj {*} A potential object.\r\n * @returns {boolean} True if it's an object.\r\n */\r\nvar isNonNullObject = function (obj) {\r\n return typeof obj === 'object' && obj !== null;\r\n};\r\nvar isEmpty = function (obj) {\r\n for (var key in obj) {\r\n return false;\r\n }\r\n return true;\r\n};\r\nvar getCount = function (obj) {\r\n var rv = 0;\r\n for (var key in obj) {\r\n rv++;\r\n }\r\n return rv;\r\n};\r\nvar map = function (obj, f, opt_obj) {\r\n var res = {};\r\n for (var key in obj) {\r\n res[key] = f.call(opt_obj, obj[key], key, obj);\r\n }\r\n return res;\r\n};\r\nvar findKey = function (obj, fn, opt_this) {\r\n for (var key in obj) {\r\n if (fn.call(opt_this, obj[key], key, obj)) {\r\n return key;\r\n }\r\n }\r\n return undefined;\r\n};\r\nvar findValue = function (obj, fn, opt_this) {\r\n var key = findKey(obj, fn, opt_this);\r\n return key && obj[key];\r\n};\r\nvar getAnyKey = function (obj) {\r\n for (var key in obj) {\r\n return key;\r\n }\r\n};\r\nvar getValues = function (obj) {\r\n var res = [];\r\n var i = 0;\r\n for (var key in obj) {\r\n res[i++] = obj[key];\r\n }\r\n return res;\r\n};\r\n/**\r\n * Tests whether every key/value pair in an object pass the test implemented\r\n * by the provided function\r\n *\r\n * @param {?Object.<K,V>} obj Object to test.\r\n * @param {!function(K, V)} fn Function to call for each key and value.\r\n * @template K,V\r\n */\r\nvar every = function (obj, fn) {\r\n for (var key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n if (!fn(key, obj[key])) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n};\n\n/**\r\n * Copyright 2017 Google Inc.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns a querystring-formatted string (e.g. &arg=val&arg2=val2) from a params\r\n * object (e.g. {arg: 'val', arg2: 'val2'})\r\n * Note: You must prepend it with ? when adding it to a URL.\r\n *\r\n * @param {!Object} querystringParams\r\n * @return {string}\r\n */\r\nvar querystring = function (querystringParams) {\r\n var params = [];\r\n forEach(querystringParams, function (key, value) {\r\n if (Array.isArray(value)) {\r\n value.forEach(function (arrayVal) {\r\n params.push(encodeURIComponent(key) + '=' + encodeURIComponent(arrayVal));\r\n });\r\n }\r\n else {\r\n params.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\r\n }\r\n });\r\n return params.length ? '&' + params.join('&') : '';\r\n};\r\n/**\r\n * Decodes a querystring (e.g. ?arg=val&arg2=val2) into a params object (e.g. {arg: 'val', arg2: 'val2'})\r\n *\r\n * @param {string} querystring\r\n * @return {!Object}\r\n */\r\nvar querystringDecode = function (querystring) {\r\n var obj = {};\r\n var tokens = querystring.replace(/^\\?/, '').split('&');\r\n tokens.forEach(function (token) {\r\n if (token) {\r\n var key = token.split('=');\r\n obj[key[0]] = key[1];\r\n }\r\n });\r\n return obj;\r\n};\n\n/**\r\n * Copyright 2017 Google Inc.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// Copyright 2011 The Closure Library Authors. All Rights Reserved.\r\n//\r\n// Licensed under the Apache License, Version 2.0 (the \"License\");\r\n// you may not use this file except in compliance with the License.\r\n// You may obtain a copy of the License at\r\n//\r\n// http://www.apache.org/licenses/LICENSE-2.0\r\n//\r\n// Unless required by applicable law or agreed to in writing, software\r\n// distributed under the License is distributed on an \"AS-IS\" BASIS,\r\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n// See the License for the specific language governing permissions and\r\n// limitations under the License.\r\n/**\r\n * @fileoverview Abstract cryptographic hash interface.\r\n *\r\n * See Sha1 and Md5 for sample implementations.\r\n *\r\n */\r\n/**\r\n * Create a cryptographic hash instance.\r\n *\r\n * @constructor\r\n * @struct\r\n */\r\nvar Hash = /** @class */ (function () {\r\n function Hash() {\r\n /**\r\n * The block size for the hasher.\r\n * @type {number}\r\n */\r\n this.blockSize = -1;\r\n }\r\n return Hash;\r\n}());\n\n/**\r\n * Copyright 2017 Google Inc.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview SHA-1 cryptographic hash.\r\n * Variable names follow the notation in FIPS PUB 180-3:\r\n * http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf.\r\n *\r\n * Usage:\r\n * var sha1 = new sha1();\r\n * sha1.update(bytes);\r\n * var hash = sha1.digest();\r\n *\r\n * Performance:\r\n * Chrome 23: ~400 Mbit/s\r\n * Firefox 16: ~250 Mbit/s\r\n *\r\n */\r\n/**\r\n * SHA-1 cryptographic hash constructor.\r\n *\r\n * The properties declared here are discussed in the above algorithm document.\r\n * @constructor\r\n * @extends {Hash}\r\n * @final\r\n * @struct\r\n */\r\nvar Sha1 = /** @class */ (function (_super) {\r\n __extends(Sha1, _super);\r\n function Sha1() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Holds the previous values of accumulated variables a-e in the compress_\r\n * function.\r\n * @type {!Array<number>}\r\n * @private\r\n */\r\n _this.chain_ = [];\r\n /**\r\n * A buffer holding the partially computed hash result.\r\n * @type {!Array<number>}\r\n * @private\r\n */\r\n _this.buf_ = [];\r\n /**\r\n * An array of 80 bytes, each a part of the message to be hashed. Referred to\r\n * as the message schedule in the docs.\r\n * @type {!Array<number>}\r\n * @private\r\n */\r\n _this.W_ = [];\r\n /**\r\n * Contains data needed to pad messages less than 64 bytes.\r\n * @type {!Array<number>}\r\n * @private\r\n */\r\n _this.pad_ = [];\r\n /**\r\n * @private {number}\r\n */\r\n _this.inbuf_ = 0;\r\n /**\r\n * @private {number}\r\n */\r\n _this.total_ = 0;\r\n _this.blockSize = 512 / 8;\r\n _this.pad_[0] = 128;\r\n for (var i = 1; i < _this.blockSize; ++i) {\r\n _this.pad_[i] = 0;\r\n }\r\n _this.reset();\r\n return _this;\r\n }\r\n Sha1.prototype.reset = function () {\r\n this.chain_[0] = 0x67452301;\r\n this.chain_[1] = 0xefcdab89;\r\n this.chain_[2] = 0x98badcfe;\r\n this.chain_[3] = 0x10325476;\r\n this.chain_[4] = 0xc3d2e1f0;\r\n this.inbuf_ = 0;\r\n this.total_ = 0;\r\n };\r\n /**\r\n * Internal compress helper function.\r\n * @param {!Array<number>|!Uint8Array|string} buf Block to compress.\r\n * @param {number=} opt_offset Offset of the block in the buffer.\r\n * @private\r\n */\r\n Sha1.prototype.compress_ = function (buf, opt_offset) {\r\n if (!opt_offset) {\r\n opt_offset = 0;\r\n }\r\n var W = this.W_;\r\n // get 16 big endian words\r\n if (typeof buf === 'string') {\r\n for (var i = 0; i < 16; i++) {\r\n // TODO(user): [bug 8140122] Recent versions of Safari for Mac OS and iOS\r\n // have a bug that turns the post-increment ++ operator into pre-increment\r\n // during JIT compilation. We have code that depends heavily on SHA-1 for\r\n // correctness and which is affected by this bug, so I've removed all uses\r\n // of post-increment ++ in which the result value is used. We can revert\r\n // this change once the Safari bug\r\n // (https://bugs.webkit.org/show_bug.cgi?id=109036) has been fixed and\r\n // most clients have been updated.\r\n W[i] =\r\n (buf.charCodeAt(opt_offset) << 24) |\r\n (buf.charCodeAt(opt_offset + 1) << 16) |\r\n (buf.charCodeAt(opt_offset + 2) << 8) |\r\n buf.charCodeAt(opt_offset + 3);\r\n opt_offset += 4;\r\n }\r\n }\r\n else {\r\n for (var i = 0; i < 16; i++) {\r\n W[i] =\r\n (buf[opt_offset] << 24) |\r\n (buf[opt_offset + 1] << 16) |\r\n (buf[opt_offset + 2] << 8) |\r\n buf[opt_offset + 3];\r\n opt_offset += 4;\r\n }\r\n }\r\n // expand to 80 words\r\n for (var i = 16; i < 80; i++) {\r\n var t = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\r\n W[i] = ((t << 1) | (t >>> 31)) & 0xffffffff;\r\n }\r\n var a = this.chain_[0];\r\n var b = this.chain_[1];\r\n var c = this.chain_[2];\r\n var d = this.chain_[3];\r\n var e = this.chain_[4];\r\n var f, k;\r\n // TODO(user): Try to unroll this loop to speed up the computation.\r\n for (var i = 0; i < 80; i++) {\r\n if (i < 40) {\r\n if (i < 20) {\r\n f = d ^ (b & (c ^ d));\r\n k = 0x5a827999;\r\n }\r\n else {\r\n f = b ^ c ^ d;\r\n k = 0x6ed9eba1;\r\n }\r\n }\r\n else {\r\n if (i < 60) {\r\n f = (b & c) | (d & (b | c));\r\n k = 0x8f1bbcdc;\r\n }\r\n else {\r\n f = b ^ c ^ d;\r\n k = 0xca62c1d6;\r\n }\r\n }\r\n var t = (((a << 5) | (a >>> 27)) + f + e + k + W[i]) & 0xffffffff;\r\n e = d;\r\n d = c;\r\n c = ((b << 30) | (b >>> 2)) & 0xffffffff;\r\n b = a;\r\n a = t;\r\n }\r\n this.chain_[0] = (this.chain_[0] + a) & 0xffffffff;\r\n this.chain_[1] = (this.chain_[1] + b) & 0xffffffff;\r\n this.chain_[2] = (this.chain_[2] + c) & 0xffffffff;\r\n this.chain_[3] = (this.chain_[3] + d) & 0xffffffff;\r\n this.chain_[4] = (this.chain_[4] + e) & 0xffffffff;\r\n };\r\n Sha1.prototype.update = function (bytes, opt_length) {\r\n // TODO(johnlenz): tighten the function signature and remove this check\r\n if (bytes == null) {\r\n return;\r\n }\r\n if (opt_length === undefined) {\r\n opt_length = bytes.length;\r\n }\r\n var lengthMinusBlock = opt_length - this.blockSize;\r\n var n = 0;\r\n // Using local instead of member variables gives ~5% speedup on Firefox 16.\r\n var buf = this.buf_;\r\n var inbuf = this.inbuf_;\r\n // The outer while loop should execute at most twice.\r\n while (n < opt_length) {\r\n // When we have no data in the block to top up, we can directly process the\r\n // input buffer (assuming it contains sufficient data). This gives ~25%\r\n // speedup on Chrome 23 and ~15% speedup on Firefox 16, but requires that\r\n // the data is provided in large chunks (or in multiples of 64 bytes).\r\n if (inbuf == 0) {\r\n while (n <= lengthMinusBlock) {\r\n this.compress_(bytes, n);\r\n n += this.blockSize;\r\n }\r\n }\r\n if (typeof bytes === 'string') {\r\n while (n < opt_length) {\r\n buf[inbuf] = bytes.charCodeAt(n);\r\n ++inbuf;\r\n ++n;\r\n if (inbuf == this.blockSize) {\r\n this.compress_(buf);\r\n inbuf = 0;\r\n // Jump to the outer loop so we use the full-block optimization.\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n while (n < opt_length) {\r\n buf[inbuf] = bytes[n];\r\n ++inbuf;\r\n ++n;\r\n if (inbuf == this.blockSize) {\r\n this.compress_(buf);\r\n inbuf = 0;\r\n // Jump to the outer loop so we use the full-block optimization.\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n this.inbuf_ = inbuf;\r\n this.total_ += opt_length;\r\n };\r\n /** @override */\r\n Sha1.prototype.digest = function () {\r\n var digest = [];\r\n var totalBits = this.total_ * 8;\r\n // Add pad 0x80 0x00*.\r\n if (this.inbuf_ < 56) {\r\n this.update(this.pad_, 56 - this.inbuf_);\r\n }\r\n else {\r\n this.update(this.pad_, this.blockSize - (this.inbuf_ - 56));\r\n }\r\n // Add # bits.\r\n for (var i = this.blockSize - 1; i >= 56; i--) {\r\n this.buf_[i] = totalBits & 255;\r\n totalBits /= 256; // Don't use bit-shifting here!\r\n }\r\n this.compress_(this.buf_);\r\n var n = 0;\r\n for (var i = 0; i < 5; i++) {\r\n for (var j = 24; j >= 0; j -= 8) {\r\n digest[n] = (this.chain_[i] >> j) & 255;\r\n ++n;\r\n }\r\n }\r\n return digest;\r\n };\r\n return Sha1;\r\n}(Hash));\n\n/**\r\n * Helper to make a Subscribe function (just like Promise helps make a\r\n * Thenable).\r\n *\r\n * @param executor Function which can make calls to a single Observer\r\n * as a proxy.\r\n * @param onNoObservers Callback when count of Observers goes to zero.\r\n */\r\nfunction createSubscribe(executor, onNoObservers) {\r\n var proxy = new ObserverProxy(executor, onNoObservers);\r\n return proxy.subscribe.bind(proxy);\r\n}\r\n/**\r\n * Implement fan-out for any number of Observers attached via a subscribe\r\n * function.\r\n */\r\nvar ObserverProxy = /** @class */ (function () {\r\n /**\r\n * @param executor Function which can make calls to a single Observer\r\n * as a proxy.\r\n * @param onNoObservers Callback when count of Observers goes to zero.\r\n */\r\n function ObserverProxy(executor, onNoObservers) {\r\n var _this = this;\r\n this.observers = [];\r\n this.unsubscribes = [];\r\n this.observerCount = 0;\r\n // Micro-task scheduling by calling task.then().\r\n this.task = Promise.resolve();\r\n this.finalized = false;\r\n this.onNoObservers = onNoObservers;\r\n // Call the executor asynchronously so subscribers that are called\r\n // synchronously after the creation of the subscribe function\r\n // can still receive the very first value generated in the executor.\r\n this.task\r\n .then(function () {\r\n executor(_this);\r\n })\r\n .catch(function (e) {\r\n _this.error(e);\r\n });\r\n }\r\n ObserverProxy.prototype.next = function (value) {\r\n this.forEachObserver(function (observer) {\r\n observer.next(value);\r\n });\r\n };\r\n ObserverProxy.prototype.error = function (error) {\r\n this.forEachObserver(function (observer) {\r\n observer.error(error);\r\n });\r\n this.close(error);\r\n };\r\n ObserverProxy.prototype.complete = function () {\r\n this.forEachObserver(function (observer) {\r\n observer.complete();\r\n });\r\n this.close();\r\n };\r\n /**\r\n * Subscribe function that can be used to add an Observer to the fan-out list.\r\n *\r\n * - We require that no event is sent to a subscriber sychronously to their\r\n * call to subscribe().\r\n */\r\n ObserverProxy.prototype.subscribe = function (nextOrObserver, error, complete) {\r\n var _this = this;\r\n var observer;\r\n if (nextOrObserver === undefined &&\r\n error === undefined &&\r\n complete === undefined) {\r\n throw new Error('Missing Observer.');\r\n }\r\n // Assemble an Observer object when passed as callback functions.\r\n if (implementsAnyMethods(nextOrObserver, ['next', 'error', 'complete'])) {\r\n observer = nextOrObserver;\r\n }\r\n else {\r\n observer = {\r\n next: nextOrObserver,\r\n error: error,\r\n complete: complete\r\n };\r\n }\r\n if (observer.next === undefined) {\r\n observer.next = noop;\r\n }\r\n if (observer.error === undefined) {\r\n observer.error = noop;\r\n }\r\n if (observer.complete === undefined) {\r\n observer.complete = noop;\r\n }\r\n var unsub = this.unsubscribeOne.bind(this, this.observers.length);\r\n // Attempt to subscribe to a terminated Observable - we\r\n // just respond to the Observer with the final error or complete\r\n // event.\r\n if (this.finalized) {\r\n this.task.then(function () {\r\n try {\r\n if (_this.finalError) {\r\n observer.error(_this.finalError);\r\n }\r\n else {\r\n observer.complete();\r\n }\r\n }\r\n catch (e) {\r\n // nothing\r\n }\r\n return;\r\n });\r\n }\r\n this.observers.push(observer);\r\n return unsub;\r\n };\r\n // Unsubscribe is synchronous - we guarantee that no events are sent to\r\n // any unsubscribed Observer.\r\n ObserverProxy.prototype.unsubscribeOne = function (i) {\r\n if (this.observers === undefined || this.observers[i] === undefined) {\r\n return;\r\n }\r\n delete this.observers[i];\r\n this.observerCount -= 1;\r\n if (this.observerCount === 0 && this.onNoObservers !== undefined) {\r\n this.onNoObservers(this);\r\n }\r\n };\r\n ObserverProxy.prototype.forEachObserver = function (fn) {\r\n if (this.finalized) {\r\n // Already closed by previous event....just eat the additional values.\r\n return;\r\n }\r\n // Since sendOne calls asynchronously - there is no chance that\r\n // this.observers will become undefined.\r\n for (var i = 0; i < this.observers.length; i++) {\r\n this.sendOne(i, fn);\r\n }\r\n };\r\n // Call the Observer via one of it's callback function. We are careful to\r\n // confirm that the observe has not been unsubscribed since this asynchronous\r\n // function had been queued.\r\n ObserverProxy.prototype.sendOne = function (i, fn) {\r\n var _this = this;\r\n // Execute the callback asynchronously\r\n this.task.then(function () {\r\n if (_this.observers !== undefined && _this.observers[i] !== undefined) {\r\n try {\r\n fn(_this.observers[i]);\r\n }\r\n catch (e) {\r\n // Ignore exceptions raised in Observers or missing methods of an\r\n // Observer.\r\n // Log error to console. b/31404806\r\n if (typeof console !== 'undefined' && console.error) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n });\r\n };\r\n ObserverProxy.prototype.close = function (err) {\r\n var _this = this;\r\n if (this.finalized) {\r\n return;\r\n }\r\n this.finalized = true;\r\n if (err !== undefined) {\r\n this.finalError = err;\r\n }\r\n // Proxy is no longer needed - garbage collect references\r\n this.task.then(function () {\r\n _this.observers = undefined;\r\n _this.onNoObservers = undefined;\r\n });\r\n };\r\n return ObserverProxy;\r\n}());\r\n/** Turn synchronous function into one called asynchronously. */\r\nfunction async(fn, onError) {\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n Promise.resolve(true)\r\n .then(function () {\r\n fn.apply(void 0, args);\r\n })\r\n .catch(function (error) {\r\n if (onError) {\r\n onError(error);\r\n }\r\n });\r\n };\r\n}\r\n/**\r\n * Return true if the object passed in implements any of the named methods.\r\n */\r\nfunction implementsAnyMethods(obj, methods) {\r\n if (typeof obj !== 'object' || obj === null) {\r\n return false;\r\n }\r\n for (var _i = 0, methods_1 = methods; _i < methods_1.length; _i++) {\r\n var method = methods_1[_i];\r\n if (method in obj && typeof obj[method] === 'function') {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction noop() {\r\n // do nothing\r\n}\n\n/**\r\n * Copyright 2017 Google Inc.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Check to make sure the appropriate number of arguments are provided for a public function.\r\n * Throws an error if it fails.\r\n *\r\n * @param {!string} fnName The function name\r\n * @param {!number} minCount The minimum number of arguments to allow for the function call\r\n * @param {!number} maxCount The maximum number of argument to allow for the function call\r\n * @param {!number} argCount The actual number of arguments provided.\r\n */\r\nvar validateArgCount = function (fnName, minCount, maxCount, argCount) {\r\n var argError;\r\n if (argCount < minCount) {\r\n argError = 'at least ' + minCount;\r\n }\r\n else if (argCount > maxCount) {\r\n argError = maxCount === 0 ? 'none' : 'no more than ' + maxCount;\r\n }\r\n if (argError) {\r\n var error = fnName +\r\n ' failed: Was called with ' +\r\n argCount +\r\n (argCount === 1 ? ' argument.' : ' arguments.') +\r\n ' Expects ' +\r\n argError +\r\n '.';\r\n throw new Error(error);\r\n }\r\n};\r\n/**\r\n * Generates a string to prefix an error message about failed argument validation\r\n *\r\n * @param {!string} fnName The function name\r\n * @param {!number} argumentNumber The index of the argument\r\n * @param {boolean} optional Whether or not the argument is optional\r\n * @return {!string} The prefix to add to the error thrown for validation.\r\n */\r\nfunction errorPrefix(fnName, argumentNumber, optional) {\r\n var argName = '';\r\n switch (argumentNumber) {\r\n case 1:\r\n argName = optional ? 'first' : 'First';\r\n break;\r\n case 2:\r\n argName = optional ? 'second' : 'Second';\r\n break;\r\n case 3:\r\n argName = optional ? 'third' : 'Third';\r\n break;\r\n case 4:\r\n argName = optional ? 'fourth' : 'Fourth';\r\n break;\r\n default:\r\n throw new Error('errorPrefix called with argumentNumber > 4. Need to update it?');\r\n }\r\n var error = fnName + ' failed: ';\r\n error += argName + ' argument ';\r\n return error;\r\n}\r\n/**\r\n * @param {!string} fnName\r\n * @param {!number} argumentNumber\r\n * @param {!string} namespace\r\n * @param {boolean} optional\r\n */\r\nfunction validateNamespace(fnName, argumentNumber, namespace, optional) {\r\n if (optional && !namespace)\r\n return;\r\n if (typeof namespace !== 'string') {\r\n //TODO: I should do more validation here. We only allow certain chars in namespaces.\r\n throw new Error(errorPrefix(fnName, argumentNumber, optional) +\r\n 'must be a valid firebase namespace.');\r\n }\r\n}\r\nfunction validateCallback(fnName, argumentNumber, callback, optional) {\r\n if (optional && !callback)\r\n return;\r\n if (typeof callback !== 'function')\r\n throw new Error(errorPrefix(fnName, argumentNumber, optional) +\r\n 'must be a valid function.');\r\n}\r\nfunction validateContextObject(fnName, argumentNumber, context, optional) {\r\n if (optional && !context)\r\n return;\r\n if (typeof context !== 'object' || context === null)\r\n throw new Error(errorPrefix(fnName, argumentNumber, optional) +\r\n 'must be a valid context object.');\r\n}\n\n/**\r\n * Copyright 2017 Google Inc.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// Code originally came from goog.crypt.stringToUtf8ByteArray, but for some reason they\r\n// automatically replaced '\\r\\n' with '\\n', and they didn't handle surrogate pairs,\r\n// so it's been modified.\r\n// Note that not all Unicode characters appear as single characters in JavaScript strings.\r\n// fromCharCode returns the UTF-16 encoding of a character - so some Unicode characters\r\n// use 2 characters in Javascript. All 4-byte UTF-8 characters begin with a first\r\n// character in the range 0xD800 - 0xDBFF (the first character of a so-called surrogate\r\n// pair).\r\n// See http://www.ecma-international.org/ecma-262/5.1/#sec-15.1.3\r\n/**\r\n * @param {string} str\r\n * @return {Array}\r\n */\r\nvar stringToByteArray$1 = function (str) {\r\n var out = [], p = 0;\r\n for (var i = 0; i < str.length; i++) {\r\n var c = str.charCodeAt(i);\r\n // Is this the lead surrogate in a surrogate pair?\r\n if (c >= 0xd800 && c <= 0xdbff) {\r\n var high = c - 0xd800; // the high 10 bits.\r\n i++;\r\n assert(i < str.length, 'Surrogate pair missing trail surrogate.');\r\n var low = str.charCodeAt(i) - 0xdc00; // the low 10 bits.\r\n c = 0x10000 + (high << 10) + low;\r\n }\r\n if (c < 128) {\r\n out[p++] = c;\r\n }\r\n else if (c < 2048) {\r\n out[p++] = (c >> 6) | 192;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else if (c < 65536) {\r\n out[p++] = (c >> 12) | 224;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else {\r\n out[p++] = (c >> 18) | 240;\r\n out[p++] = ((c >> 12) & 63) | 128;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n }\r\n return out;\r\n};\r\n/**\r\n * Calculate length without actually converting; useful for doing cheaper validation.\r\n * @param {string} str\r\n * @return {number}\r\n */\r\nvar stringLength = function (str) {\r\n var p = 0;\r\n for (var i = 0; i < str.length; i++) {\r\n var c = str.charCodeAt(i);\r\n if (c < 128) {\r\n p++;\r\n }\r\n else if (c < 2048) {\r\n p += 2;\r\n }\r\n else if (c >= 0xd800 && c <= 0xdbff) {\r\n // Lead surrogate of a surrogate pair. The pair together will take 4 bytes to represent.\r\n p += 4;\r\n i++; // skip trail surrogate.\r\n }\r\n else {\r\n p += 3;\r\n }\r\n }\r\n return p;\r\n};\n\n/**\r\n * Copyright 2017 Google Inc.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\nexport { assert, assertionError, base64, base64Decode, base64Encode, CONSTANTS, deepCopy, deepExtend, patchProperty, Deferred, getUA, isMobileCordova, isNodeSdk, isReactNative, ErrorFactory, FirebaseError, patchCapture, jsonEval, stringify, decode, isAdmin, issuedAtTime, isValidFormat, isValidTimestamp, clone, contains, every, extend, findKey, findValue, forEach, getAnyKey, getCount, getValues, isEmpty, isNonNullObject, map, safeGet, querystring, querystringDecode, Sha1, async, createSubscribe, errorPrefix, validateArgCount, validateCallback, validateContextObject, validateNamespace, stringLength, stringToByteArray$1 as stringToByteArray };\n","import { createSubscribe, deepCopy, deepExtend, ErrorFactory, patchProperty } from '@firebase/util';\n\n/**\r\n * Copyright 2017 Google Inc.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar contains = function (obj, key) {\r\n return Object.prototype.hasOwnProperty.call(obj, key);\r\n};\r\nvar DEFAULT_ENTRY_NAME = '[DEFAULT]';\r\n// An array to capture listeners before the true auth functions\r\n// exist\r\nvar tokenListeners = [];\r\n/**\r\n * Global context object for a collection of services using\r\n * a shared authentication state.\r\n */\r\nvar FirebaseAppImpl = /** @class */ (function () {\r\n function FirebaseAppImpl(options, config, firebase_) {\r\n this.firebase_ = firebase_;\r\n this.isDeleted_ = false;\r\n this.services_ = {};\r\n this.name_ = config.name;\r\n this._automaticDataCollectionEnabled =\r\n config.automaticDataCollectionEnabled || false;\r\n this.options_ = deepCopy(options);\r\n this.INTERNAL = {\r\n getUid: function () { return null; },\r\n getToken: function () { return Promise.resolve(null); },\r\n addAuthTokenListener: function (callback) {\r\n tokenListeners.push(callback);\r\n // Make sure callback is called, asynchronously, in the absence of the auth module\r\n setTimeout(function () { return callback(null); }, 0);\r\n },\r\n removeAuthTokenListener: function (callback) {\r\n tokenListeners = tokenListeners.filter(function (listener) { return listener !== callback; });\r\n }\r\n };\r\n }\r\n Object.defineProperty(FirebaseAppImpl.prototype, \"automaticDataCollectionEnabled\", {\r\n get: function () {\r\n this.checkDestroyed_();\r\n return this._automaticDataCollectionEnabled;\r\n },\r\n set: function (val) {\r\n this.checkDestroyed_();\r\n this._automaticDataCollectionEnabled = val;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FirebaseAppImpl.prototype, \"name\", {\r\n get: function () {\r\n this.checkDestroyed_();\r\n return this.name_;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FirebaseAppImpl.prototype, \"options\", {\r\n get: function () {\r\n this.checkDestroyed_();\r\n return this.options_;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n FirebaseAppImpl.prototype.delete = function () {\r\n var _this = this;\r\n return new Promise(function (resolve) {\r\n _this.checkDestroyed_();\r\n resolve();\r\n })\r\n .then(function () {\r\n _this.firebase_.INTERNAL.removeApp(_this.name_);\r\n var services = [];\r\n Object.keys(_this.services_).forEach(function (serviceKey) {\r\n Object.keys(_this.services_[serviceKey]).forEach(function (instanceKey) {\r\n services.push(_this.services_[serviceKey][instanceKey]);\r\n });\r\n });\r\n return Promise.all(services.map(function (service) {\r\n return service.INTERNAL.delete();\r\n }));\r\n })\r\n .then(function () {\r\n _this.isDeleted_ = true;\r\n _this.services_ = {};\r\n });\r\n };\r\n /**\r\n * Return a service instance associated with this app (creating it\r\n * on demand), identified by the passed instanceIdentifier.\r\n *\r\n * NOTE: Currently storage is the only one that is leveraging this\r\n * functionality. They invoke it by calling:\r\n *\r\n * ```javascript\r\n * firebase.app().storage('STORAGE BUCKET ID')\r\n * ```\r\n *\r\n * The service name is passed to this already\r\n * @internal\r\n */\r\n FirebaseAppImpl.prototype._getService = function (name, instanceIdentifier) {\r\n if (instanceIdentifier === void 0) { instanceIdentifier = DEFAULT_ENTRY_NAME; }\r\n this.checkDestroyed_();\r\n if (!this.services_[name]) {\r\n this.services_[name] = {};\r\n }\r\n if (!this.services_[name][instanceIdentifier]) {\r\n /**\r\n * If a custom instance has been defined (i.e. not '[DEFAULT]')\r\n * then we will pass that instance on, otherwise we pass `null`\r\n */\r\n var instanceSpecifier = instanceIdentifier !== DEFAULT_ENTRY_NAME\r\n ? instanceIdentifier\r\n : undefined;\r\n var service = this.firebase_.INTERNAL.factories[name](this, this.extendApp.bind(this), instanceSpecifier);\r\n this.services_[name][instanceIdentifier] = service;\r\n }\r\n return this.services_[name][instanceIdentifier];\r\n };\r\n /**\r\n * Callback function used to extend an App instance at the time\r\n * of service instance creation.\r\n */\r\n FirebaseAppImpl.prototype.extendApp = function (props) {\r\n var _this = this;\r\n // Copy the object onto the FirebaseAppImpl prototype\r\n deepExtend(this, props);\r\n /**\r\n * If the app has overwritten the addAuthTokenListener stub, forward\r\n * the active token listeners on to the true fxn.\r\n *\r\n * TODO: This function is required due to our current module\r\n * structure. Once we are able to rely strictly upon a single module\r\n * implementation, this code should be refactored and Auth should\r\n * provide these stubs and the upgrade logic\r\n */\r\n if (props.INTERNAL && props.INTERNAL.addAuthTokenListener) {\r\n tokenListeners.forEach(function (listener) {\r\n _this.INTERNAL.addAuthTokenListener(listener);\r\n });\r\n tokenListeners = [];\r\n }\r\n };\r\n /**\r\n * This function will throw an Error if the App has already been deleted -\r\n * use before performing API actions on the App.\r\n */\r\n FirebaseAppImpl.prototype.checkDestroyed_ = function () {\r\n if (this.isDeleted_) {\r\n error('app-deleted', { name: this.name_ });\r\n }\r\n };\r\n return FirebaseAppImpl;\r\n}());\r\n// Prevent dead-code elimination of these methods w/o invalid property\r\n// copying.\r\n(FirebaseAppImpl.prototype.name && FirebaseAppImpl.prototype.options) ||\r\n FirebaseAppImpl.prototype.delete ||\r\n console.log('dc');\r\n/**\r\n * Return a firebase namespace object.\r\n *\r\n * In production, this will be called exactly once and the result\r\n * assigned to the 'firebase' global. It may be called multiple times\r\n * in unit tests.\r\n */\r\nfunction createFirebaseNamespace() {\r\n var apps_ = {};\r\n var factories = {};\r\n var appHooks = {};\r\n // A namespace is a plain JavaScript Object.\r\n var namespace = {\r\n // Hack to prevent Babel from modifying the object returned\r\n // as the firebase namespace.\r\n __esModule: true,\r\n initializeApp: initializeApp,\r\n app: app,\r\n apps: null,\r\n Promise: Promise,\r\n SDK_VERSION: '5.4.1',\r\n INTERNAL: {\r\n registerService: registerService,\r\n createFirebaseNamespace: createFirebaseNamespace,\r\n extendNamespace: extendNamespace,\r\n createSubscribe: createSubscribe,\r\n ErrorFactory: ErrorFactory,\r\n removeApp: removeApp,\r\n factories: factories,\r\n useAsService: useAsService,\r\n Promise: Promise,\r\n deepExtend: deepExtend\r\n }\r\n };\r\n // Inject a circular default export to allow Babel users who were previously\r\n // using:\r\n //\r\n // import firebase from 'firebase';\r\n // which becomes: var firebase = require('firebase').default;\r\n //\r\n // instead of\r\n //\r\n // import * as firebase from 'firebase';\r\n // which becomes: var firebase = require('firebase');\r\n patchProperty(namespace, 'default', namespace);\r\n // firebase.apps is a read-only getter.\r\n Object.defineProperty(namespace, 'apps', {\r\n get: getApps\r\n });\r\n /**\r\n * Called by App.delete() - but before any services associated with the App\r\n * are deleted.\r\n */\r\n function removeApp(name) {\r\n var app = apps_[name];\r\n callAppHooks(app, 'delete');\r\n delete apps_[name];\r\n }\r\n /**\r\n * Get the App object for a given name (or DEFAULT).\r\n */\r\n function app(name) {\r\n name = name || DEFAULT_ENTRY_NAME;\r\n if (!contains(apps_, name)) {\r\n error('no-app', { name: name });\r\n }\r\n return apps_[name];\r\n }\r\n patchProperty(app, 'App', FirebaseAppImpl);\r\n function initializeApp(options, rawConfig) {\r\n if (rawConfig === void 0) { rawConfig = {}; }\r\n if (typeof rawConfig !== 'object' || rawConfig === null) {\r\n var name_1 = rawConfig;\r\n rawConfig = { name: name_1 };\r\n }\r\n var config = rawConfig;\r\n if (config.name === undefined) {\r\n config.name = DEFAULT_ENTRY_NAME;\r\n }\r\n var name = config.name;\r\n if (typeof name !== 'string' || !name) {\r\n error('bad-app-name', { name: name + '' });\r\n }\r\n if (contains(apps_, name)) {\r\n error('duplicate-app', { name: name });\r\n }\r\n var app = new FirebaseAppImpl(options, config, namespace);\r\n apps_[name] = app;\r\n callAppHooks(app, 'create');\r\n return app;\r\n }\r\n /*\r\n * Return an array of all the non-deleted FirebaseApps.\r\n */\r\n function getApps() {\r\n // Make a copy so caller cannot mutate the apps list.\r\n return Object.keys(apps_).map(function (name) { return apps_[name]; });\r\n }\r\n /*\r\n * Register a Firebase Service.\r\n *\r\n * firebase.INTERNAL.registerService()\r\n *\r\n * TODO: Implement serviceProperties.\r\n */\r\n function registerService(name, createService, serviceProperties, appHook, allowMultipleInstances) {\r\n // Cannot re-register a service that already exists\r\n if (factories[name]) {\r\n error('duplicate-service', { name: name });\r\n }\r\n // Capture the service factory for later service instantiation\r\n factories[name] = createService;\r\n // Capture the appHook, if passed\r\n if (appHook) {\r\n appHooks[name] = appHook;\r\n // Run the **new** app hook on all existing apps\r\n getApps().forEach(function (app) {\r\n appHook('create', app);\r\n });\r\n }\r\n // The Service namespace is an accessor function ...\r\n var serviceNamespace = function (appArg) {\r\n if (appArg === void 0) { appArg = app(); }\r\n if (typeof appArg[name] !== 'function') {\r\n // Invalid argument.\r\n // This happens in the following case: firebase.storage('gs:/')\r\n error('invalid-app-argument', { name: name });\r\n }\r\n // Forward service instance lookup to the FirebaseApp.\r\n return appArg[name]();\r\n };\r\n // ... and a container for service-level properties.\r\n if (serviceProperties !== undefined) {\r\n deepExtend(serviceNamespace, serviceProperties);\r\n }\r\n // Monkey-patch the serviceNamespace onto the firebase namespace\r\n namespace[name] = serviceNamespace;\r\n // Patch the FirebaseAppImpl prototype\r\n FirebaseAppImpl.prototype[name] = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var serviceFxn = this._getService.bind(this, name);\r\n return serviceFxn.apply(this, allowMultipleInstances ? args : []);\r\n };\r\n return serviceNamespace;\r\n }\r\n /**\r\n * Patch the top-level firebase namespace with additional properties.\r\n *\r\n * firebase.INTERNAL.extendNamespace()\r\n */\r\n function extendNamespace(props) {\r\n deepExtend(namespace, props);\r\n }\r\n function callAppHooks(app, eventName) {\r\n Object.keys(factories).forEach(function (serviceName) {\r\n // Ignore virtual services\r\n var factoryName = useAsService(app, serviceName);\r\n if (factoryName === null) {\r\n return;\r\n }\r\n if (appHooks[factoryName]) {\r\n appHooks[factoryName](eventName, app);\r\n }\r\n });\r\n }\r\n // Map the requested service to a registered service name\r\n // (used to map auth to serverAuth service when needed).\r\n function useAsService(app, name) {\r\n if (name === 'serverAuth') {\r\n return null;\r\n }\r\n var useService = name;\r\n var options = app.options;\r\n return useService;\r\n }\r\n return namespace;\r\n}\r\nfunction error(code, args) {\r\n throw appErrors.create(code, args);\r\n}\r\n// TypeScript does not support non-string indexes!\r\n// let errors: {[code: AppError: string} = {\r\nvar errors = {\r\n 'no-app': \"No Firebase App '{$name}' has been created - \" +\r\n 'call Firebase App.initializeApp()',\r\n 'bad-app-name': \"Illegal App name: '{$name}\",\r\n 'duplicate-app': \"Firebase App named '{$name}' already exists\",\r\n 'app-deleted': \"Firebase App named '{$name}' already deleted\",\r\n 'duplicate-service': \"Firebase service named '{$name}' already registered\",\r\n 'sa-not-supported': 'Initializing the Firebase SDK with a service ' +\r\n 'account is only allowed in a Node.js environment. On client ' +\r\n 'devices, you should instead initialize the SDK with an api key and ' +\r\n 'auth domain',\r\n 'invalid-app-argument': 'firebase.{$name}() takes either no argument or a ' +\r\n 'Firebase App instance.'\r\n};\r\nvar appErrors = new ErrorFactory('app', 'Firebase', errors);\n\n/**\r\n * Copyright 2017 Google Inc.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar firebase = createFirebaseNamespace();\n\nexport default firebase;\nexport { firebase };\n"],"names":["self","fetch","support","searchParams","iterable","Symbol","blob","Blob","e","formData","arrayBuffer","viewClasses","isDataView","obj","DataView","prototype","isPrototypeOf","isArrayBufferView","ArrayBuffer","isView","indexOf","Object","toString","call","Headers","append","name","value","normalizeName","normalizeValue","oldValue","this","map","get","has","hasOwnProperty","set","forEach","callback","thisArg","keys","items","push","iteratorFor","values","entries","iterator","methods","Request","clone","body","_bodyInit","Body","Response","status","statusText","headers","url","error","response","type","redirectStatuses","redirect","RangeError","location","input","init","Promise","resolve","reject","request","xhr","XMLHttpRequest","onload","rawHeaders","options","getAllResponseHeaders","replace","split","line","parts","key","shift","trim","join","responseURL","responseText","onerror","TypeError","ontimeout","open","method","credentials","withCredentials","responseType","setRequestHeader","send","polyfill","String","test","toLowerCase","next","done","undefined","Array","isArray","header","getOwnPropertyNames","consumed","bodyUsed","fileReaderReady","reader","result","readBlobAsArrayBuffer","FileReader","promise","readAsArrayBuffer","bufferClone","buf","slice","view","Uint8Array","byteLength","buffer","_initBody","_bodyText","_bodyBlob","FormData","_bodyFormData","URLSearchParams","_bodyArrayBuffer","Error","rejected","then","text","readAsText","chars","length","i","fromCharCode","readArrayBufferAsText","decode","json","JSON","parse","upcased","mode","toUpperCase","referrer","form","bytes","decodeURIComponent","bodyInit","ok","setTimeoutFunc","setTimeout","noop","fn","_state","_handled","_value","_deferreds","doResolve","handle","deferred","_immediateFn","cb","onFulfilled","onRejected","ret","newValue","finale","apply","arguments","_unhandledRejectionFn","len","reason","ex","prom","constructor","all","arr","args","remaining","res","val","race","setImmediate","err","console","warn","globalNS","window","global","createCommonjsModule","module","exports","_global","Math","Function","__g","_core","core","version","__e","_isObject","it","_anObject","_fails","exec","_descriptors","defineProperty","a","document","is","createElement","_domCreate","_ie8DomDefine","_toPrimitive","S","valueOf","dP","_objectDp","f","O","P","Attributes","_propertyDesc","bitmap","enumerable","configurable","writable","_hide","object","_has","id","px","random","_uid","concat","_redefine","SRC","$toString","TPL","inspectSource","safe","isFunction","_ctx","that","_aFunction","b","c","$export","source","own","out","exp","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","IS_PROTO","IS_BIND","B","target","expProto","U","W","R","_export","_cof","_iobject","propertyIsEnumerable","_defined","_toObject","ceil","floor","_toInteger","isNaN","min","_toLength","_isArray","arg","store","_shared","_wks","USE_SYMBOL","SPECIES","_arraySpeciesCreate","original","C","_arrayMethods","TYPE","$create","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","create","$this","callbackfn","index","UNSCOPABLES","ArrayProto","_addToUnscopables","$find","forced","find","$find$1","forced$1","findIndex","IS_INCLUDES","_toIobject","max","min$1","shared","_sharedKey","arrayIndexOf","el","fromIndex","_toAbsoluteIndex","IE_PROTO","_objectKeysInternal","names","_enumBugKeys","_objectKeys","_objectGops","getOwnPropertySymbols","_objectPie","$assign","assign","_objectAssign","A","K","k","T","aLen","getSymbols","isEnum","j","MATCH","_stringContext","searchString","NAME","isRegExp","MATCH$1","$startsWith","KEY","re","_failsIsRegexp","startsWith","search","repeat","count","str","n","Infinity","_meta","META","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","w","meta","NEED","fastKey","getWeak","onFreeze","def","TAG","_setToStringTag","tag","stat","_wksExt","_wksDefine","$Symbol","charAt","_objectDps","defineProperties","Properties","document$1","_html","documentElement","IE_PROTO$1","Empty","createDict","iframeDocument","iframe","style","display","appendChild","src","contentWindow","write","lt","close","_objectCreate","hiddenKeys","_objectGopn","gOPN","toString$1","windowNames","_objectGopnExt","getWindowNames","gOPD","getOwnPropertyDescriptor","_objectGopd","gOPD$1","dP$1","gOPN$1","$JSON","_stringify","stringify","HIDDEN","TO_PRIMITIVE","SymbolRegistry","AllSymbols","OPSymbols","ObjectProto","USE_NATIVE","QObject","setter","findChild","setSymbolDesc","D","protoDesc","wrap","sym","_k","isSymbol","$defineProperty","$defineProperties","symbols","_enumKeys","l","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","$set","es6Symbols","wellKnownSymbols","for","keyFor","useSetter","useSimple","replacer","$replacer","TAG$1","ARG","tryGet","callee","_iterators","IteratorPrototype","TO_STRING","_iterCreate","Constructor","IE_PROTO$2","ObjectProto$1","_objectGpo","getPrototypeOf","ITERATOR","BUGGY","returnThis","_iterDefine","Base","DEFAULT","IS_SET","FORCED","getMethod","kind","proto","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","$at","pos","s","charCodeAt","iterated","_t","_i","point","_iterStep","es6_array_iterator","Arguments","ITERATOR$1","TO_STRING_TAG","ArrayValues","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","explicit","Collection","extendStatics","setPrototypeOf","__proto__","d","p","deepExtend","Date","getTime","prop","patchProperty","ERROR_NAME","captureStackTrace","FirebaseError","code","message","ErrorFactory","stack","service","serviceName","errors","pattern","data","template","fullCode","match","_super","Sha1","_this","chain_","buf_","W_","pad_","inbuf_","total_","blockSize","reset","__","__extends","compress_","opt_offset","t","update","opt_length","lengthMinusBlock","inbuf","digest","totalBits","createSubscribe","executor","onNoObservers","proxy","ObserverProxy","subscribe","bind","observers","unsubscribes","observerCount","task","finalized","catch","forEachObserver","observer","complete","nextOrObserver","methods_1","implementsAnyMethods","unsub","unsubscribeOne","finalError","sendOne","contains","DEFAULT_ENTRY_NAME","tokenListeners","FirebaseAppImpl","config","firebase_","isDeleted_","services_","name_","_automaticDataCollectionEnabled","automaticDataCollectionEnabled","options_","INTERNAL","getUid","getToken","addAuthTokenListener","removeAuthTokenListener","filter","listener","checkDestroyed_","delete","removeApp","services","serviceKey","instanceKey","_getService","instanceIdentifier","instanceSpecifier","factories","extendApp","props","appErrors","log","no-app","bad-app-name","duplicate-app","app-deleted","duplicate-service","sa-not-supported","invalid-app-argument","createFirebaseNamespace","apps_","appHooks","namespace","__esModule","initializeApp","rawConfig","name_1","app","callAppHooks","apps","SDK_VERSION","registerService","createService","serviceProperties","appHook","allowMultipleInstances","getApps","serviceNamespace","appArg","extendNamespace","useAsService","eventName","factoryName","useService"],"mappings":"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"}