{"version":3,"file":"static/chunks/549-1472e74044cbef3f.js","mappings":"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","sources":["webpack://_N_E/./node_modules/@babel/runtime/regenerator/index.js","webpack://_N_E/./node_modules/@emotion/sheet/dist/sheet.browser.esm.js","webpack://_N_E/./node_modules/@emotion/stylis/dist/stylis.browser.esm.js","webpack://_N_E/./node_modules/@emotion/cache/dist/cache.browser.esm.js","webpack://_N_E/./node_modules/@emotion/utils/dist/utils.browser.esm.js","webpack://_N_E/./node_modules/@emotion/hash/dist/hash.browser.esm.js","webpack://_N_E/./node_modules/@emotion/unitless/dist/unitless.browser.esm.js","webpack://_N_E/./node_modules/@emotion/memoize/dist/memoize.browser.esm.js","webpack://_N_E/./node_modules/@emotion/serialize/dist/serialize.browser.esm.js","webpack://_N_E/./node_modules/@emotion/core/dist/emotion-element-57a3a7a3.browser.esm.js","webpack://_N_E/./node_modules/@emotion/css/dist/css.browser.esm.js","webpack://_N_E/./node_modules/@emotion/core/dist/core.browser.esm.js","webpack://_N_E/./node_modules/@firebase/app-check/dist/index.cjs.js","webpack://_N_E/./node_modules/@firebase/app/dist/index.esm.js","webpack://_N_E/./node_modules/@firebase/component/dist/index.esm.js","webpack://_N_E/./node_modules/@firebase/logger/dist/index.esm.js","webpack://_N_E/./node_modules/@firebase/util/dist/index.esm.js","webpack://_N_E/./node_modules/@firebase/webchannel-wrapper/dist/index.esm.js","webpack://_N_E/./node_modules/@fortawesome/fontawesome-svg-core/index.es.js","webpack://_N_E/./node_modules/@fortawesome/react-fontawesome/index.es.js","webpack://_N_E/./node_modules/@restart/hooks/esm/useCallbackRef.js","webpack://_N_E/./node_modules/@restart/hooks/esm/useCommittedRef.js","webpack://_N_E/./node_modules/@restart/hooks/esm/useEventCallback.js","webpack://_N_E/./node_modules/@restart/hooks/esm/useMounted.js","webpack://_N_E/./node_modules/@restart/hooks/esm/useWillUnmount.js","webpack://_N_E/./node_modules/@restart/hooks/esm/useUpdatedRef.js","webpack://_N_E/./node_modules/camelcase-keys/index.js","webpack://_N_E/./node_modules/camelcase/index.js","webpack://_N_E/./node_modules/cleave.js/dist/cleave-react-node.js","webpack://_N_E/./node_modules/cleave.js/react.js","webpack://_N_E/./node_modules/dom-helpers/esm/addEventListener.js","webpack://_N_E/./node_modules/dom-helpers/esm/canUseDOM.js","webpack://_N_E/./node_modules/dom-helpers/esm/contains.js","webpack://_N_E/./node_modules/dom-helpers/esm/getComputedStyle.js","webpack://_N_E/./node_modules/dom-helpers/esm/ownerWindow.js","webpack://_N_E/./node_modules/dom-helpers/esm/hyphenate.js","webpack://_N_E/./node_modules/dom-helpers/esm/hyphenateStyle.js","webpack://_N_E/./node_modules/dom-helpers/esm/isTransform.js","webpack://_N_E/./node_modules/dom-helpers/esm/css.js","webpack://_N_E/./node_modules/dom-helpers/esm/hasClass.js","webpack://_N_E/./node_modules/dom-helpers/esm/listen.js","webpack://_N_E/./node_modules/dom-helpers/esm/ownerDocument.js","webpack://_N_E/./node_modules/dom-helpers/esm/querySelectorAll.js","webpack://_N_E/./node_modules/dom-helpers/esm/removeEventListener.js","webpack://_N_E/./node_modules/dom-helpers/esm/transitionEnd.js","webpack://_N_E/./node_modules/dom-helpers/esm/triggerEvent.js","webpack://_N_E/./node_modules/@firebase/firestore/dist/esm5/index.js","webpack://_N_E/./node_modules/@firebase/firestore/dist/esm5/bundle.js","webpack://_N_E/./node_modules/@firebase/functions/dist/index.esm.js","webpack://_N_E/./node_modules/@firebase/installations/dist/index.esm.js","webpack://_N_E/./node_modules/@firebase/messaging/dist/index.esm.js","webpack://_N_E/./node_modules/@firebase/storage/dist/index.browser.esm.js","webpack://_N_E/./node_modules/@firebase/performance/dist/index.esm.js","webpack://_N_E/./node_modules/@firebase/analytics/dist/index.esm.js","webpack://_N_E/./node_modules/@firebase/remote-config/dist/index.esm.js","webpack://_N_E/./node_modules/firebase/dist/index.esm.js","webpack://_N_E/./node_modules/idb/build/idb.js","webpack://_N_E/./node_modules/map-obj/index.js","webpack://_N_E/./node_modules/next/dist/client/image.js","webpack://_N_E/./node_modules/next/dist/client/link.js","webpack://_N_E/./node_modules/next/dist/client/use-intersection.js","webpack://_N_E/./node_modules/next/dist/shared/lib/amp-context.js","webpack://_N_E/./node_modules/next/dist/shared/lib/amp.js","webpack://_N_E/./node_modules/next/dist/shared/lib/dynamic.js","webpack://_N_E/./node_modules/next/dist/shared/lib/head.js","webpack://_N_E/./node_modules/next/dist/shared/lib/loadable-context.js","webpack://_N_E/./node_modules/next/dist/shared/lib/loadable.js","webpack://_N_E/./node_modules/next/dist/shared/lib/side-effect.js","webpack://_N_E/./node_modules/next/dynamic.js","webpack://_N_E/./node_modules/next/head.js","webpack://_N_E/./node_modules/next/image.js","webpack://_N_E/./node_modules/next/link.js","webpack://_N_E/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://_N_E/./node_modules/prop-types/index.js","webpack://_N_E/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://_N_E/./node_modules/quick-lru/index.js","webpack://_N_E/./node_modules/react-bootstrap/esm/Button.js","webpack://_N_E/./node_modules/react-bootstrap/esm/CardImg.js","webpack://_N_E/./node_modules/react-bootstrap/esm/Card.js","webpack://_N_E/./node_modules/react-bootstrap/esm/CardContext.js","webpack://_N_E/./node_modules/react-bootstrap/esm/CloseButton.js","webpack://_N_E/./node_modules/react-bootstrap/esm/Col.js","webpack://_N_E/./node_modules/react-bootstrap/esm/Fade.js","webpack://_N_E/./node_modules/react-bootstrap/esm/InputGroup.js","webpack://_N_E/./node_modules/dom-helpers/esm/scrollbarSize.js","webpack://_N_E/./node_modules/dom-helpers/esm/activeElement.js","webpack://_N_E/./node_modules/dom-helpers/esm/addClass.js","webpack://_N_E/./node_modules/dom-helpers/esm/removeClass.js","webpack://_N_E/./node_modules/dom-helpers/esm/isWindow.js","webpack://_N_E/./node_modules/dom-helpers/esm/isDocument.js","webpack://_N_E/./node_modules/react-overlays/esm/isOverflowing.js","webpack://_N_E/./node_modules/react-overlays/esm/manageAriaHidden.js","webpack://_N_E/./node_modules/react-overlays/esm/ModalManager.js","webpack://_N_E/./node_modules/react-overlays/esm/Modal.js","webpack://_N_E/./node_modules/@restart/hooks/esm/usePrevious.js","webpack://_N_E/./node_modules/react-bootstrap/esm/BootstrapModalManager.js","webpack://_N_E/./node_modules/react-bootstrap/esm/ModalBody.js","webpack://_N_E/./node_modules/react-bootstrap/esm/ModalContext.js","webpack://_N_E/./node_modules/react-bootstrap/esm/ModalDialog.js","webpack://_N_E/./node_modules/react-bootstrap/esm/ModalFooter.js","webpack://_N_E/./node_modules/react-bootstrap/esm/ModalHeader.js","webpack://_N_E/./node_modules/react-bootstrap/esm/Modal.js","webpack://_N_E/./node_modules/react-bootstrap/esm/ModalTitle.js","webpack://_N_E/./node_modules/react-bootstrap/esm/Row.js","webpack://_N_E/./node_modules/react-bootstrap/esm/SafeAnchor.js","webpack://_N_E/./node_modules/react-bootstrap/esm/ThemeProvider.js","webpack://_N_E/./node_modules/react-bootstrap/esm/createChainedFunction.js","webpack://_N_E/./node_modules/dom-helpers/esm/camelize.js","webpack://_N_E/./node_modules/react-bootstrap/esm/createWithBsPrefix.js","webpack://_N_E/./node_modules/react-bootstrap/esm/divWithClassName.js","webpack://_N_E/./node_modules/react-bootstrap/esm/transitionEndListener.js","webpack://_N_E/./node_modules/react-bootstrap/esm/triggerBrowserReflow.js","webpack://_N_E/./node_modules/react-bootstrap/node_modules/classnames/index.js","webpack://_N_E/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://_N_E/./node_modules/react-idle-timer/dist/index.es.js","webpack://_N_E/./node_modules/react-overlays/esm/useWaitForDOMRef.js","webpack://_N_E/./node_modules/react-spinners/MoonLoader.js","webpack://_N_E/./node_modules/react-spinners/helpers/colors.js","webpack://_N_E/./node_modules/react-spinners/helpers/index.js","webpack://_N_E/./node_modules/react-spinners/helpers/proptypes.js","webpack://_N_E/./node_modules/react-spinners/helpers/unitConverter.js","webpack://_N_E/./node_modules/react-transition-group/esm/config.js","webpack://_N_E/./node_modules/react-transition-group/esm/TransitionGroupContext.js","webpack://_N_E/./node_modules/react-transition-group/esm/Transition.js","webpack://_N_E/./node_modules/regenerator-runtime/runtime.js","webpack://_N_E/./node_modules/scroll-out/lib/index.js","webpack://_N_E/./node_modules/tslib/tslib.es6.js","webpack://_N_E/./node_modules/immer/dist/immer.esm.js","webpack://_N_E/./node_modules/use-immer/dist/use-immer.module.js","webpack://_N_E/./node_modules/use-subscription/cjs/use-subscription.production.min.js","webpack://_N_E/./node_modules/use-subscription/index.js","webpack://_N_E/./node_modules/warning/warning.js","webpack://_N_E/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://_N_E/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://_N_E/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://_N_E/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://_N_E/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://_N_E/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://_N_E/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://_N_E/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://_N_E/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://_N_E/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://_N_E/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://_N_E/./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://_N_E/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://_N_E/./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://_N_E/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://_N_E/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://_N_E/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://_N_E/./node_modules/next/dist/compiled/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://_N_E/./node_modules/next/dist/compiled/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://_N_E/./node_modules/next/dist/compiled/@babel/runtime/helpers/esm/slicedToArray.js","webpack://_N_E/./node_modules/next/dist/compiled/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://_N_E/./node_modules/next/dist/compiled/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://_N_E/./node_modules/next/dist/compiled/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://_N_E/./node_modules/next/dist/compiled/@babel/runtime/helpers/esm/unsupportedIterableToArray.js"],"sourcesContent":["module.exports = require(\"regenerator-runtime\");\n","/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n // $FlowFixMe\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n // $FlowFixMe\n return document.styleSheets[i];\n }\n }\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n return tag;\n}\n\nvar StyleSheet =\n/*#__PURE__*/\nfunction () {\n function StyleSheet(options) {\n this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n var _tag = createStyleElement(this);\n\n var before;\n\n if (this.tags.length === 0) {\n before = this.before;\n } else {\n before = this.tags[this.tags.length - 1].nextSibling;\n }\n\n this.container.insertBefore(_tag, before);\n this.tags.push(_tag);\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is a really hot path\n // we check the second character first because having \"i\"\n // as the second character will happen less often than\n // having \"@\" as the first character\n var isImportRule = rule.charCodeAt(1) === 105 && rule.charCodeAt(0) === 64; // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n\n sheet.insertRule(rule, // we need to insert @import rules before anything else\n // otherwise there will be an error\n // technically this means that the @import rules will\n // _usually_(not always since there could be multiple style tags)\n // be the first ones in prod and generally later in dev\n // this shouldn't really matter in the real world though\n // @import is generally only used for font faces from google fonts and etc.\n // so while this could be technically correct then it would be slower and larger\n // for a tiny bit of correctness that won't matter in the real world\n isImportRule ? 0 : sheet.cssRules.length);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n }\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n // $FlowFixMe\n this.tags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","function stylis_min (W) {\n function M(d, c, e, h, a) {\n for (var m = 0, b = 0, v = 0, n = 0, q, g, x = 0, K = 0, k, u = k = q = 0, l = 0, r = 0, I = 0, t = 0, B = e.length, J = B - 1, y, f = '', p = '', F = '', G = '', C; l < B;) {\n g = e.charCodeAt(l);\n l === J && 0 !== b + n + v + m && (0 !== b && (g = 47 === b ? 10 : 47), n = v = m = 0, B++, J++);\n\n if (0 === b + n + v + m) {\n if (l === J && (0 < r && (f = f.replace(N, '')), 0 < f.trim().length)) {\n switch (g) {\n case 32:\n case 9:\n case 59:\n case 13:\n case 10:\n break;\n\n default:\n f += e.charAt(l);\n }\n\n g = 59;\n }\n\n switch (g) {\n case 123:\n f = f.trim();\n q = f.charCodeAt(0);\n k = 1;\n\n for (t = ++l; l < B;) {\n switch (g = e.charCodeAt(l)) {\n case 123:\n k++;\n break;\n\n case 125:\n k--;\n break;\n\n case 47:\n switch (g = e.charCodeAt(l + 1)) {\n case 42:\n case 47:\n a: {\n for (u = l + 1; u < J; ++u) {\n switch (e.charCodeAt(u)) {\n case 47:\n if (42 === g && 42 === e.charCodeAt(u - 1) && l + 2 !== u) {\n l = u + 1;\n break a;\n }\n\n break;\n\n case 10:\n if (47 === g) {\n l = u + 1;\n break a;\n }\n\n }\n }\n\n l = u;\n }\n\n }\n\n break;\n\n case 91:\n g++;\n\n case 40:\n g++;\n\n case 34:\n case 39:\n for (; l++ < J && e.charCodeAt(l) !== g;) {\n }\n\n }\n\n if (0 === k) break;\n l++;\n }\n\n k = e.substring(t, l);\n 0 === q && (q = (f = f.replace(ca, '').trim()).charCodeAt(0));\n\n switch (q) {\n case 64:\n 0 < r && (f = f.replace(N, ''));\n g = f.charCodeAt(1);\n\n switch (g) {\n case 100:\n case 109:\n case 115:\n case 45:\n r = c;\n break;\n\n default:\n r = O;\n }\n\n k = M(c, r, k, g, a + 1);\n t = k.length;\n 0 < A && (r = X(O, f, I), C = H(3, k, r, c, D, z, t, g, a, h), f = r.join(''), void 0 !== C && 0 === (t = (k = C.trim()).length) && (g = 0, k = ''));\n if (0 < t) switch (g) {\n case 115:\n f = f.replace(da, ea);\n\n case 100:\n case 109:\n case 45:\n k = f + '{' + k + '}';\n break;\n\n case 107:\n f = f.replace(fa, '$1 $2');\n k = f + '{' + k + '}';\n k = 1 === w || 2 === w && L('@' + k, 3) ? '@-webkit-' + k + '@' + k : '@' + k;\n break;\n\n default:\n k = f + k, 112 === h && (k = (p += k, ''));\n } else k = '';\n break;\n\n default:\n k = M(c, X(c, f, I), k, h, a + 1);\n }\n\n F += k;\n k = I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n break;\n\n case 125:\n case 59:\n f = (0 < r ? f.replace(N, '') : f).trim();\n if (1 < (t = f.length)) switch (0 === u && (q = f.charCodeAt(0), 45 === q || 96 < q && 123 > q) && (t = (f = f.replace(' ', ':')).length), 0 < A && void 0 !== (C = H(1, f, c, d, D, z, p.length, h, a, h)) && 0 === (t = (f = C.trim()).length) && (f = '\\x00\\x00'), q = f.charCodeAt(0), g = f.charCodeAt(1), q) {\n case 0:\n break;\n\n case 64:\n if (105 === g || 99 === g) {\n G += f + e.charAt(l);\n break;\n }\n\n default:\n 58 !== f.charCodeAt(t - 1) && (p += P(f, q, g, f.charCodeAt(2)));\n }\n I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n }\n }\n\n switch (g) {\n case 13:\n case 10:\n 47 === b ? b = 0 : 0 === 1 + q && 107 !== h && 0 < f.length && (r = 1, f += '\\x00');\n 0 < A * Y && H(0, f, c, d, D, z, p.length, h, a, h);\n z = 1;\n D++;\n break;\n\n case 59:\n case 125:\n if (0 === b + n + v + m) {\n z++;\n break;\n }\n\n default:\n z++;\n y = e.charAt(l);\n\n switch (g) {\n case 9:\n case 32:\n if (0 === n + m + b) switch (x) {\n case 44:\n case 58:\n case 9:\n case 32:\n y = '';\n break;\n\n default:\n 32 !== g && (y = ' ');\n }\n break;\n\n case 0:\n y = '\\\\0';\n break;\n\n case 12:\n y = '\\\\f';\n break;\n\n case 11:\n y = '\\\\v';\n break;\n\n case 38:\n 0 === n + b + m && (r = I = 1, y = '\\f' + y);\n break;\n\n case 108:\n if (0 === n + b + m + E && 0 < u) switch (l - u) {\n case 2:\n 112 === x && 58 === e.charCodeAt(l - 3) && (E = x);\n\n case 8:\n 111 === K && (E = K);\n }\n break;\n\n case 58:\n 0 === n + b + m && (u = l);\n break;\n\n case 44:\n 0 === b + v + n + m && (r = 1, y += '\\r');\n break;\n\n case 34:\n case 39:\n 0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n break;\n\n case 91:\n 0 === n + b + v && m++;\n break;\n\n case 93:\n 0 === n + b + v && m--;\n break;\n\n case 41:\n 0 === n + b + m && v--;\n break;\n\n case 40:\n if (0 === n + b + m) {\n if (0 === q) switch (2 * x + 3 * K) {\n case 533:\n break;\n\n default:\n q = 1;\n }\n v++;\n }\n\n break;\n\n case 64:\n 0 === b + v + n + m + u + k && (k = 1);\n break;\n\n case 42:\n case 47:\n if (!(0 < n + m + v)) switch (b) {\n case 0:\n switch (2 * g + 3 * e.charCodeAt(l + 1)) {\n case 235:\n b = 47;\n break;\n\n case 220:\n t = l, b = 42;\n }\n\n break;\n\n case 42:\n 47 === g && 42 === x && t + 2 !== l && (33 === e.charCodeAt(t + 2) && (p += e.substring(t, l + 1)), y = '', b = 0);\n }\n }\n\n 0 === b && (f += y);\n }\n\n K = x;\n x = g;\n l++;\n }\n\n t = p.length;\n\n if (0 < t) {\n r = c;\n if (0 < A && (C = H(2, p, r, d, D, z, t, h, a, h), void 0 !== C && 0 === (p = C).length)) return G + p + F;\n p = r.join(',') + '{' + p + '}';\n\n if (0 !== w * E) {\n 2 !== w || L(p, 2) || (E = 0);\n\n switch (E) {\n case 111:\n p = p.replace(ha, ':-moz-$1') + p;\n break;\n\n case 112:\n p = p.replace(Q, '::-webkit-input-$1') + p.replace(Q, '::-moz-$1') + p.replace(Q, ':-ms-input-$1') + p;\n }\n\n E = 0;\n }\n }\n\n return G + p + F;\n }\n\n function X(d, c, e) {\n var h = c.trim().split(ia);\n c = h;\n var a = h.length,\n m = d.length;\n\n switch (m) {\n case 0:\n case 1:\n var b = 0;\n\n for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n c[b] = Z(d, c[b], e).trim();\n }\n\n break;\n\n default:\n var v = b = 0;\n\n for (c = []; b < a; ++b) {\n for (var n = 0; n < m; ++n) {\n c[v++] = Z(d[n] + ' ', h[b], e).trim();\n }\n }\n\n }\n\n return c;\n }\n\n function Z(d, c, e) {\n var h = c.charCodeAt(0);\n 33 > h && (h = (c = c.trim()).charCodeAt(0));\n\n switch (h) {\n case 38:\n return c.replace(F, '$1' + d.trim());\n\n case 58:\n return d.trim() + c.replace(F, '$1' + d.trim());\n\n default:\n if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n }\n\n return d + c;\n }\n\n function P(d, c, e, h) {\n var a = d + ';',\n m = 2 * c + 3 * e + 4 * h;\n\n if (944 === m) {\n d = a.indexOf(':', 9) + 1;\n var b = a.substring(d, a.length - 1).trim();\n b = a.substring(0, d).trim() + b + ';';\n return 1 === w || 2 === w && L(b, 1) ? '-webkit-' + b + b : b;\n }\n\n if (0 === w || 2 === w && !L(a, 1)) return a;\n\n switch (m) {\n case 1015:\n return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n\n case 951:\n return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n\n case 963:\n return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n\n case 1009:\n if (100 !== a.charCodeAt(4)) break;\n\n case 969:\n case 942:\n return '-webkit-' + a + a;\n\n case 978:\n return '-webkit-' + a + '-moz-' + a + a;\n\n case 1019:\n case 983:\n return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n\n case 883:\n if (45 === a.charCodeAt(8)) return '-webkit-' + a + a;\n if (0 < a.indexOf('image-set(', 11)) return a.replace(ja, '$1-webkit-$2') + a;\n break;\n\n case 932:\n if (45 === a.charCodeAt(4)) switch (a.charCodeAt(5)) {\n case 103:\n return '-webkit-box-' + a.replace('-grow', '') + '-webkit-' + a + '-ms-' + a.replace('grow', 'positive') + a;\n\n case 115:\n return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n\n case 98:\n return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n }\n return '-webkit-' + a + '-ms-' + a + a;\n\n case 964:\n return '-webkit-' + a + '-ms-flex-' + a + a;\n\n case 1023:\n if (99 !== a.charCodeAt(8)) break;\n b = a.substring(a.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n return '-webkit-box-pack' + b + '-webkit-' + a + '-ms-flex-pack' + b + a;\n\n case 1005:\n return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n\n case 1e3:\n b = a.substring(13).trim();\n c = b.indexOf('-') + 1;\n\n switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n case 226:\n b = a.replace(G, 'tb');\n break;\n\n case 232:\n b = a.replace(G, 'tb-rl');\n break;\n\n case 220:\n b = a.replace(G, 'lr');\n break;\n\n default:\n return a;\n }\n\n return '-webkit-' + a + '-ms-' + b + a;\n\n case 1017:\n if (-1 === a.indexOf('sticky', 9)) break;\n\n case 975:\n c = (a = d).length - 10;\n b = (33 === a.charCodeAt(c) ? a.substring(0, c) : a).substring(d.indexOf(':', 7) + 1).trim();\n\n switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n case 203:\n if (111 > b.charCodeAt(8)) break;\n\n case 115:\n a = a.replace(b, '-webkit-' + b) + ';' + a;\n break;\n\n case 207:\n case 102:\n a = a.replace(b, '-webkit-' + (102 < m ? 'inline-' : '') + 'box') + ';' + a.replace(b, '-webkit-' + b) + ';' + a.replace(b, '-ms-' + b + 'box') + ';' + a;\n }\n\n return a + ';';\n\n case 938:\n if (45 === a.charCodeAt(5)) switch (a.charCodeAt(6)) {\n case 105:\n return b = a.replace('-items', ''), '-webkit-' + a + '-webkit-box-' + b + '-ms-flex-' + b + a;\n\n case 115:\n return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n\n default:\n return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n }\n break;\n\n case 973:\n case 989:\n if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n\n case 931:\n case 953:\n if (!0 === la.test(d)) return 115 === (b = d.substring(d.indexOf(':') + 1)).charCodeAt(0) ? P(d.replace('stretch', 'fill-available'), c, e, h).replace(':fill-available', ':stretch') : a.replace(b, '-webkit-' + b) + a.replace(b, '-moz-' + b.replace('fill-', '')) + a;\n break;\n\n case 962:\n if (a = '-webkit-' + a + (102 === a.charCodeAt(5) ? '-ms-' + a : '') + a, 211 === e + h && 105 === a.charCodeAt(13) && 0 < a.indexOf('transform', 10)) return a.substring(0, a.indexOf(';', 27) + 1).replace(ma, '$1-webkit-$2') + a;\n }\n\n return a;\n }\n\n function L(d, c) {\n var e = d.indexOf(1 === c ? ':' : '{'),\n h = d.substring(0, 3 !== c ? e : 10);\n e = d.substring(e + 1, d.length - 1);\n return R(2 !== c ? h : h.replace(na, '$1'), e, c);\n }\n\n function ea(d, c) {\n var e = P(c, c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2));\n return e !== c + ';' ? e.replace(oa, ' or ($1)').substring(4) : '(' + c + ')';\n }\n\n function H(d, c, e, h, a, m, b, v, n, q) {\n for (var g = 0, x = c, w; g < A; ++g) {\n switch (w = S[g].call(B, d, x, e, h, a, m, b, v, n, q)) {\n case void 0:\n case !1:\n case !0:\n case null:\n break;\n\n default:\n x = w;\n }\n }\n\n if (x !== c) return x;\n }\n\n function T(d) {\n switch (d) {\n case void 0:\n case null:\n A = S.length = 0;\n break;\n\n default:\n if ('function' === typeof d) S[A++] = d;else if ('object' === typeof d) for (var c = 0, e = d.length; c < e; ++c) {\n T(d[c]);\n } else Y = !!d | 0;\n }\n\n return T;\n }\n\n function U(d) {\n d = d.prefix;\n void 0 !== d && (R = null, d ? 'function' !== typeof d ? w = 1 : (w = 2, R = d) : w = 0);\n return U;\n }\n\n function B(d, c) {\n var e = d;\n 33 > e.charCodeAt(0) && (e = e.trim());\n V = e;\n e = [V];\n\n if (0 < A) {\n var h = H(-1, c, e, e, D, z, 0, 0, 0, 0);\n void 0 !== h && 'string' === typeof h && (c = h);\n }\n\n var a = M(O, e, c, 0, 0);\n 0 < A && (h = H(-2, a, e, e, D, z, a.length, 0, 0, 0), void 0 !== h && (a = h));\n V = '';\n E = 0;\n z = D = 1;\n return a;\n }\n\n var ca = /^\\0+/g,\n N = /[\\0\\r\\f]/g,\n aa = /: */g,\n ka = /zoo|gra/,\n ma = /([,: ])(transform)/g,\n ia = /,\\r+?/g,\n F = /([\\t\\r\\n ])*\\f?&/g,\n fa = /@(k\\w+)\\s*(\\S*)\\s*/,\n Q = /::(place)/g,\n ha = /:(read-only)/g,\n G = /[svh]\\w+-[tblr]{2}/,\n da = /\\(\\s*(.*)\\s*\\)/g,\n oa = /([\\s\\S]*?);/g,\n ba = /-self|flex-/g,\n na = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n la = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n ja = /([^-])(image-set\\()/,\n z = 1,\n D = 1,\n E = 0,\n w = 1,\n O = [],\n S = [],\n A = 0,\n R = null,\n Y = 0,\n V = '';\n B.use = T;\n B.set = U;\n void 0 !== W && U(W);\n return B;\n}\n\nexport default stylis_min;\n","import { StyleSheet } from '@emotion/sheet';\nimport Stylis from '@emotion/stylis';\nimport '@emotion/weak-memoize';\n\n// https://github.com/thysultan/stylis.js/tree/master/plugins/rule-sheet\n// inlined to avoid umd wrapper and peerDep warnings/installing stylis\n// since we use stylis after closure compiler\nvar delimiter = '/*|*/';\nvar needle = delimiter + '}';\n\nfunction toSheet(block) {\n if (block) {\n Sheet.current.insert(block + '}');\n }\n}\n\nvar Sheet = {\n current: null\n};\nvar ruleSheet = function ruleSheet(context, content, selectors, parents, line, column, length, ns, depth, at) {\n switch (context) {\n // property\n case 1:\n {\n switch (content.charCodeAt(0)) {\n case 64:\n {\n // @import\n Sheet.current.insert(content + ';');\n return '';\n }\n // charcode for l\n\n case 108:\n {\n // charcode for b\n // this ignores label\n if (content.charCodeAt(2) === 98) {\n return '';\n }\n }\n }\n\n break;\n }\n // selector\n\n case 2:\n {\n if (ns === 0) return content + delimiter;\n break;\n }\n // at-rule\n\n case 3:\n {\n switch (ns) {\n // @font-face, @page\n case 102:\n case 112:\n {\n Sheet.current.insert(selectors[0] + content);\n return '';\n }\n\n default:\n {\n return content + (at === 0 ? delimiter : '');\n }\n }\n }\n\n case -2:\n {\n content.split(needle).forEach(toSheet);\n }\n }\n};\n\nvar createCache = function createCache(options) {\n if (options === undefined) options = {};\n var key = options.key || 'css';\n var stylisOptions;\n\n if (options.prefix !== undefined) {\n stylisOptions = {\n prefix: options.prefix\n };\n }\n\n var stylis = new Stylis(stylisOptions);\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe\n if (/[^a-z-]/.test(key)) {\n throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n }\n }\n\n var inserted = {}; // $FlowFixMe\n\n var container;\n\n {\n container = options.container || document.head;\n var nodes = document.querySelectorAll(\"style[data-emotion-\" + key + \"]\");\n Array.prototype.forEach.call(nodes, function (node) {\n var attrib = node.getAttribute(\"data-emotion-\" + key); // $FlowFixMe\n\n attrib.split(' ').forEach(function (id) {\n inserted[id] = true;\n });\n\n if (node.parentNode !== container) {\n container.appendChild(node);\n }\n });\n }\n\n var _insert;\n\n {\n stylis.use(options.stylisPlugins)(ruleSheet);\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n var name = serialized.name;\n Sheet.current = sheet;\n\n if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n var map = serialized.map;\n Sheet.current = {\n insert: function insert(rule) {\n sheet.insert(rule + map);\n }\n };\n }\n\n stylis(selector, serialized.styles);\n\n if (shouldCache) {\n cache.inserted[name] = true;\n }\n };\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // https://esbench.com/bench/5bf7371a4cd7e6009ef61d0a\n var commentStart = /\\/\\*/g;\n var commentEnd = /\\*\\//g;\n stylis.use(function (context, content) {\n switch (context) {\n case -1:\n {\n while (commentStart.test(content)) {\n commentEnd.lastIndex = commentStart.lastIndex;\n\n if (commentEnd.test(content)) {\n commentStart.lastIndex = commentEnd.lastIndex;\n continue;\n }\n\n throw new Error('Your styles have an unterminated comment (\"/*\" without corresponding \"*/\").');\n }\n\n commentStart.lastIndex = 0;\n break;\n }\n }\n });\n stylis.use(function (context, content, selectors) {\n switch (context) {\n case -1:\n {\n var flag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n var unsafePseudoClasses = content.match(/(:first|:nth|:nth-last)-child/g);\n\n if (unsafePseudoClasses && cache.compat !== true) {\n unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n var ignoreRegExp = new RegExp(unsafePseudoClass + \".*\\\\/\\\\* \" + flag + \" \\\\*\\\\/\");\n var ignore = ignoreRegExp.test(content);\n\n if (unsafePseudoClass && !ignore) {\n console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n }\n });\n }\n\n break;\n }\n }\n });\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n return cache;\n};\n\nexport default createCache;\n","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className]);\n } else {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false && cache.compat !== undefined) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n var maybeStyles = cache.insert(\".\" + className, current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport default murmur2;\n","var unitlessKeys = {\n animationIterationCount: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","function memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n var contentValuePattern = /(attr|calc|counters?|url)\\(/;\n var contentValues = ['normal', 'none', 'counter', 'open-quote', 'close-quote', 'no-open-quote', 'no-close-quote', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n var msPattern = /^-ms-/;\n var hyphenPattern = /-(.)/g;\n var hyphenatedCache = {};\n\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n console.error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n\n var processed = oldProcessStyleValue(key, value);\n\n if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n hyphenatedCache[key] = true;\n console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n return _char.toUpperCase();\n }) + \"?\");\n }\n\n return processed;\n };\n}\n\nvar shouldWarnAboutInterpolatingClassNameFromCss = true;\n\nfunction handleInterpolation(mergedProps, registered, interpolation, couldBeSelectorInterpolation) {\n if (interpolation == null) {\n return '';\n }\n\n if (interpolation.__emotion_styles !== undefined) {\n if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n }\n\n return interpolation;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n if (interpolation.anim === 1) {\n cursor = {\n name: interpolation.name,\n styles: interpolation.styles,\n next: cursor\n };\n return interpolation.name;\n }\n\n if (interpolation.styles !== undefined) {\n var next = interpolation.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = interpolation.styles + \";\";\n\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\n\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result, couldBeSelectorInterpolation);\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n\n break;\n }\n\n case 'string':\n if (process.env.NODE_ENV !== 'production') {\n var matched = [];\n var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n var fakeVarName = \"animation\" + matched.length;\n matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n return \"${\" + fakeVarName + \"}\";\n });\n\n if (matched.length) {\n console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n }\n }\n\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n if (registered == null) {\n return interpolation;\n }\n\n var cached = registered[interpolation];\n\n if (process.env.NODE_ENV !== 'production' && couldBeSelectorInterpolation && shouldWarnAboutInterpolatingClassNameFromCss && cached !== undefined) {\n console.error('Interpolating a className from css`` is not recommended and will cause problems with composition.\\n' + 'Interpolating a className from css`` will be completely unsupported in a future major version of Emotion');\n shouldWarnAboutInterpolatingClassNameFromCss = false;\n }\n\n return cached !== undefined && !couldBeSelectorInterpolation ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i], false);\n }\n } else {\n for (var _key in obj) {\n var value = obj[_key];\n\n if (typeof value !== 'object') {\n if (registered != null && registered[value] !== undefined) {\n string += _key + \"{\" + registered[value] + \"}\";\n } else if (isProcessableValue(value)) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n }\n } else {\n if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value, false);\n\n switch (_key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(_key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n }\n\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*;/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings, false);\n } else {\n if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i], styles.charCodeAt(styles.length - 1) === 46);\n\n if (stringMode) {\n if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[i];\n }\n }\n\n var sourceMap;\n\n if (process.env.NODE_ENV !== 'production') {\n styles = styles.replace(sourceMapPattern, function (match) {\n sourceMap = match;\n return '';\n });\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + // $FlowFixMe we know it's not null\n match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n return {\n name: name,\n styles: styles,\n map: sourceMap,\n next: cursor,\n toString: function toString() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n }\n };\n }\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n};\n\nexport { serializeStyles };\n","import '@babel/runtime/helpers/inheritsLoose';\nimport { createContext, forwardRef, createElement } from 'react';\nimport createCache from '@emotion/cache';\nimport { getRegisteredStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar EmotionCacheContext = /*#__PURE__*/createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? createCache() : null);\nvar ThemeContext = /*#__PURE__*/createContext({});\nvar CacheProvider = EmotionCacheContext.Provider;\n\nvar withEmotionCache = function withEmotionCache(func) {\n var render = function render(props, ref) {\n return /*#__PURE__*/createElement(EmotionCacheContext.Consumer, null, function (cache) {\n return func(props, cache, ref);\n });\n }; // $FlowFixMe\n\n\n return /*#__PURE__*/forwardRef(render);\n};\n\n// thus we only need to replace what is a valid character for JS, but not for CSS\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n return identifier.replace(/\\$/g, '-');\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n props.css.indexOf(':') !== -1) {\n throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/css' like this: css`\" + props.css + \"`\");\n }\n\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n\n newProps[typePropName] = type; // TODO: check if this still works with all of those different JSX functions\n\n if (process.env.NODE_ENV !== 'production') {\n var error = new Error();\n\n if (error.stack) {\n // chrome\n var match = error.stack.match(/at (?:Object\\.|Module\\.|)(?:jsx|createEmotionProps).*\\n\\s+at (?:Object\\.|)([A-Z][A-Za-z$]+) /);\n\n if (!match) {\n // safari and firefox\n match = error.stack.match(/.*\\n([A-Z][A-Za-z$]+)@/);\n }\n\n if (match) {\n newProps[labelPropName] = sanitizeIdentifier(match[1]);\n }\n }\n }\n\n return newProps;\n};\n\nvar render = function render(cache, props, theme, ref) {\n var cssProp = theme === null ? props.css : props.css(theme); // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n\n var type = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(registeredStyles);\n\n if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n var labelFromStack = props[labelPropName];\n\n if (labelFromStack) {\n serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n }\n }\n\n var rules = insertStyles(cache, serialized, typeof type === 'string');\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n newProps[key] = props[key];\n }\n }\n\n newProps.ref = ref;\n newProps.className = className;\n var ele = /*#__PURE__*/createElement(type, newProps);\n\n return ele;\n}; // eslint-disable-next-line no-undef\n\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n if (typeof props.css === 'function') {\n return /*#__PURE__*/createElement(ThemeContext.Consumer, null, function (theme) {\n return render(cache, props, theme, ref);\n });\n }\n\n return render(cache, props, null, ref);\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Emotion.displayName = 'EmotionCssPropInternal';\n}\n\nexport { CacheProvider as C, Emotion as E, ThemeContext as T, createEmotionProps as c, hasOwnProperty as h, withEmotionCache as w };\n","import { serializeStyles } from '@emotion/serialize';\n\nfunction css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return serializeStyles(args);\n}\n\nexport default css;\n","import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport { createElement, Component } from 'react';\nimport '@emotion/cache';\nimport { h as hasOwnProperty, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext } from './emotion-element-57a3a7a3.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, w as withEmotionCache } from './emotion-element-57a3a7a3.browser.esm.js';\nimport { insertStyles, getRegisteredStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { StyleSheet } from '@emotion/sheet';\nimport css from '@emotion/css';\nexport { default as css } from '@emotion/css';\n\nvar jsx = function jsx(type, props) {\n var args = arguments;\n\n if (props == null || !hasOwnProperty.call(props, 'css')) {\n // $FlowFixMe\n return createElement.apply(undefined, args);\n }\n\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n createElementArgArray[1] = createEmotionProps(type, props);\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n } // $FlowFixMe\n\n\n return createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false;\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n // probably using the custom createElement which\n // means it will be turned into a className prop\n // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n props.className || props.css)) {\n console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n warnedAboutCssPropForGlobal = true;\n }\n\n var styles = props.styles;\n\n if (typeof styles === 'function') {\n return /*#__PURE__*/createElement(ThemeContext.Consumer, null, function (theme) {\n var serialized = serializeStyles([styles(theme)]);\n return /*#__PURE__*/createElement(InnerGlobal, {\n serialized: serialized,\n cache: cache\n });\n });\n }\n\n var serialized = serializeStyles([styles]);\n return /*#__PURE__*/createElement(InnerGlobal, {\n serialized: serialized,\n cache: cache\n });\n});\n\n// maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\nvar InnerGlobal = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(InnerGlobal, _React$Component);\n\n function InnerGlobal(props, context, updater) {\n return _React$Component.call(this, props, context, updater) || this;\n }\n\n var _proto = InnerGlobal.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.sheet = new StyleSheet({\n key: this.props.cache.key + \"-global\",\n nonce: this.props.cache.sheet.nonce,\n container: this.props.cache.sheet.container\n }); // $FlowFixMe\n\n var node = document.querySelector(\"style[data-emotion-\" + this.props.cache.key + \"=\\\"\" + this.props.serialized.name + \"\\\"]\");\n\n if (node !== null) {\n this.sheet.tags.push(node);\n }\n\n if (this.props.cache.sheet.tags.length) {\n this.sheet.before = this.props.cache.sheet.tags[0];\n }\n\n this.insertStyles();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (prevProps.serialized.name !== this.props.serialized.name) {\n this.insertStyles();\n }\n };\n\n _proto.insertStyles = function insertStyles$1() {\n if (this.props.serialized.next !== undefined) {\n // insert keyframes\n insertStyles(this.props.cache, this.props.serialized.next, true);\n }\n\n if (this.sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = this.sheet.tags[this.sheet.tags.length - 1].nextElementSibling;\n this.sheet.before = element;\n this.sheet.flush();\n }\n\n this.props.cache.insert(\"\", this.props.serialized, this.sheet, false);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.sheet.flush();\n };\n\n _proto.render = function render() {\n\n return null;\n };\n\n return InnerGlobal;\n}(Component);\n\nvar keyframes = function keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n};\n\nvar classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar ClassNames = withEmotionCache(function (props, context) {\n return /*#__PURE__*/createElement(ThemeContext.Consumer, null, function (theme) {\n var hasRendered = false;\n\n var css = function css() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('css can only be used during render');\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, context.registered);\n\n {\n insertStyles(context, serialized, false);\n }\n\n return context.key + \"-\" + serialized.name;\n };\n\n var cx = function cx() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('cx can only be used during render');\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge(context.registered, css, classnames(args));\n };\n\n var content = {\n css: css,\n cx: cx,\n theme: theme\n };\n var ele = props.children(content);\n hasRendered = true;\n\n return ele;\n });\n});\n\nexport { ClassNames, Global, jsx as createElement, jsx, keyframes };\n","'use strict';\n\nvar firebase = require('@firebase/app');\nvar component = require('@firebase/component');\nvar tslib = require('tslib');\nvar util = require('@firebase/util');\nvar logger$1 = require('@firebase/logger');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar firebase__default = /*#__PURE__*/_interopDefaultLegacy(firebase);\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\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 _a;\r\nvar ERRORS = (_a = {},\r\n _a[\"already-activated\" /* ALREADY_ACTIVATED */] = 'You are trying to activate AppCheck for FirebaseApp {$appName}, ' +\r\n 'while it is already activated. ' +\r\n 'AppCheck can only be activated once.',\r\n _a[\"use-before-activation\" /* USE_BEFORE_ACTIVATION */] = 'AppCheck is being used before activate() is called for FirebaseApp {$appName}. ' +\r\n 'Please make sure you call activate() before instantiating other Firebase services.',\r\n _a[\"fetch-network-error\" /* FETCH_NETWORK_ERROR */] = 'Fetch failed to connect to a network. Check Internet connection. ' +\r\n 'Original error: {$originalErrorMessage}.',\r\n _a[\"fetch-parse-error\" /* FETCH_PARSE_ERROR */] = 'Fetch client could not parse response.' +\r\n ' Original error: {$originalErrorMessage}.',\r\n _a[\"fetch-status-error\" /* FETCH_STATUS_ERROR */] = 'Fetch server returned an HTTP error status. HTTP status: {$httpStatus}.',\r\n _a[\"storage-open\" /* STORAGE_OPEN */] = 'Error thrown when opening storage. Original error: {$originalErrorMessage}.',\r\n _a[\"storage-get\" /* STORAGE_GET */] = 'Error thrown when reading from storage. Original error: {$originalErrorMessage}.',\r\n _a[\"storage-set\" /* STORAGE_WRITE */] = 'Error thrown when writing to storage. Original error: {$originalErrorMessage}.',\r\n _a[\"recaptcha-error\" /* RECAPTCHA_ERROR */] = 'ReCAPTCHA error.',\r\n _a);\r\nvar ERROR_FACTORY = new util.ErrorFactory('appCheck', 'AppCheck', ERRORS);\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\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 APP_CHECK_STATES = new Map();\r\nvar DEFAULT_STATE = {\r\n activated: false,\r\n tokenObservers: []\r\n};\r\nvar DEBUG_STATE = {\r\n enabled: false\r\n};\r\nfunction getState(app) {\r\n return APP_CHECK_STATES.get(app) || DEFAULT_STATE;\r\n}\r\nfunction setState(app, state) {\r\n APP_CHECK_STATES.set(app, state);\r\n}\r\nfunction getDebugState() {\r\n return DEBUG_STATE;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\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 BASE_ENDPOINT = 'https://content-firebaseappcheck.googleapis.com/v1beta';\r\nvar EXCHANGE_RECAPTCHA_TOKEN_METHOD = 'exchangeRecaptchaToken';\r\nvar EXCHANGE_DEBUG_TOKEN_METHOD = 'exchangeDebugToken';\r\nvar TOKEN_REFRESH_TIME = {\r\n /**\r\n * The offset time before token natural expiration to run the refresh.\r\n * This is currently 5 minutes.\r\n */\r\n OFFSET_DURATION: 5 * 60 * 1000,\r\n /**\r\n * This is the first retrial wait after an error. This is currently\r\n * 30 seconds.\r\n */\r\n RETRIAL_MIN_WAIT: 30 * 1000,\r\n /**\r\n * This is the maximum retrial wait, currently 16 minutes.\r\n */\r\n RETRIAL_MAX_WAIT: 16 * 60 * 1000\r\n};\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\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 * Port from auth proactiverefresh.js\r\n *\r\n */\r\n// TODO: move it to @firebase/util?\r\n// TODO: allow to config whether refresh should happen in the background\r\nvar Refresher = /** @class */ (function () {\r\n function Refresher(operation, retryPolicy, getWaitDuration, lowerBound, upperBound) {\r\n this.operation = operation;\r\n this.retryPolicy = retryPolicy;\r\n this.getWaitDuration = getWaitDuration;\r\n this.lowerBound = lowerBound;\r\n this.upperBound = upperBound;\r\n this.pending = null;\r\n this.nextErrorWaitInterval = lowerBound;\r\n if (lowerBound > upperBound) {\r\n throw new Error('Proactive refresh lower bound greater than upper bound!');\r\n }\r\n }\r\n Refresher.prototype.start = function () {\r\n this.nextErrorWaitInterval = this.lowerBound;\r\n this.process(true).catch(function () {\r\n /* we don't care about the result */\r\n });\r\n };\r\n Refresher.prototype.stop = function () {\r\n if (this.pending) {\r\n this.pending.reject('cancelled');\r\n this.pending = null;\r\n }\r\n };\r\n Refresher.prototype.isRunning = function () {\r\n return !!this.pending;\r\n };\r\n Refresher.prototype.process = function (hasSucceeded) {\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n var error_1;\r\n return tslib.__generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.stop();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 6, , 7]);\r\n this.pending = new util.Deferred();\r\n return [4 /*yield*/, sleep(this.getNextRun(hasSucceeded))];\r\n case 2:\r\n _a.sent();\r\n // Why do we resolve a promise, then immediate wait for it?\r\n // We do it to make the promise chain cancellable.\r\n // We can call stop() which rejects the promise before the following line execute, which makes\r\n // the code jump to the catch block.\r\n // TODO: unit test this\r\n this.pending.resolve();\r\n return [4 /*yield*/, this.pending.promise];\r\n case 3:\r\n _a.sent();\r\n this.pending = new util.Deferred();\r\n return [4 /*yield*/, this.operation()];\r\n case 4:\r\n _a.sent();\r\n this.pending.resolve();\r\n return [4 /*yield*/, this.pending.promise];\r\n case 5:\r\n _a.sent();\r\n this.process(true).catch(function () {\r\n /* we don't care about the result */\r\n });\r\n return [3 /*break*/, 7];\r\n case 6:\r\n error_1 = _a.sent();\r\n if (this.retryPolicy(error_1)) {\r\n this.process(false).catch(function () {\r\n /* we don't care about the result */\r\n });\r\n }\r\n else {\r\n this.stop();\r\n }\r\n return [3 /*break*/, 7];\r\n case 7: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n Refresher.prototype.getNextRun = function (hasSucceeded) {\r\n if (hasSucceeded) {\r\n // If last operation succeeded, reset next error wait interval and return\r\n // the default wait duration.\r\n this.nextErrorWaitInterval = this.lowerBound;\r\n // Return typical wait duration interval after a successful operation.\r\n return this.getWaitDuration();\r\n }\r\n else {\r\n // Get next error wait interval.\r\n var currentErrorWaitInterval = this.nextErrorWaitInterval;\r\n // Double interval for next consecutive error.\r\n this.nextErrorWaitInterval *= 2;\r\n // Make sure next wait interval does not exceed the maximum upper bound.\r\n if (this.nextErrorWaitInterval > this.upperBound) {\r\n this.nextErrorWaitInterval = this.upperBound;\r\n }\r\n return currentErrorWaitInterval;\r\n }\r\n };\r\n return Refresher;\r\n}());\r\nfunction sleep(ms) {\r\n return new Promise(function (resolve) {\r\n setTimeout(resolve, ms);\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\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\nfunction getRecaptcha() {\r\n return self.grecaptcha;\r\n}\r\nfunction ensureActivated(app) {\r\n if (!getState(app).activated) {\r\n throw ERROR_FACTORY.create(\"use-before-activation\" /* USE_BEFORE_ACTIVATION */, {\r\n appName: app.name\r\n });\r\n }\r\n}\r\n/**\r\n * Copied from https://stackoverflow.com/a/2117523\r\n */\r\nfunction uuidv4() {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n var r = (Math.random() * 16) | 0, v = c === 'x' ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n}\r\n/**\r\n * Stringify and base64 encode token error data.\r\n *\r\n * @param tokenError Error data, currently hardcoded.\r\n */\r\nfunction formatDummyToken(tokenErrorData) {\r\n return util.base64.encodeString(JSON.stringify(tokenErrorData), \r\n /* webSafe= */ false);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\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\nfunction exchangeToken(_a, platformLoggerProvider) {\r\n var url = _a.url, body = _a.body;\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n var headers, platformLogger, options, response, originalError_1, responseBody, originalError_2, match, timeToLiveAsNumber, now;\r\n return tslib.__generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n headers = {\r\n 'Content-Type': 'application/json'\r\n };\r\n platformLogger = platformLoggerProvider.getImmediate({\r\n optional: true\r\n });\r\n if (platformLogger) {\r\n headers['X-Firebase-Client'] = platformLogger.getPlatformInfoString();\r\n }\r\n options = {\r\n method: 'POST',\r\n body: JSON.stringify(body),\r\n headers: headers\r\n };\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, fetch(url, options)];\r\n case 2:\r\n response = _b.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n originalError_1 = _b.sent();\r\n throw ERROR_FACTORY.create(\"fetch-network-error\" /* FETCH_NETWORK_ERROR */, {\r\n originalErrorMessage: originalError_1.message\r\n });\r\n case 4:\r\n if (response.status !== 200) {\r\n throw ERROR_FACTORY.create(\"fetch-status-error\" /* FETCH_STATUS_ERROR */, {\r\n httpStatus: response.status\r\n });\r\n }\r\n _b.label = 5;\r\n case 5:\r\n _b.trys.push([5, 7, , 8]);\r\n return [4 /*yield*/, response.json()];\r\n case 6:\r\n // JSON parsing throws SyntaxError if the response body isn't a JSON string.\r\n responseBody = _b.sent();\r\n return [3 /*break*/, 8];\r\n case 7:\r\n originalError_2 = _b.sent();\r\n throw ERROR_FACTORY.create(\"fetch-parse-error\" /* FETCH_PARSE_ERROR */, {\r\n originalErrorMessage: originalError_2.message\r\n });\r\n case 8:\r\n match = responseBody.ttl.match(/^([\\d.]+)(s)$/);\r\n if (!match || !match[2] || isNaN(Number(match[1]))) {\r\n throw ERROR_FACTORY.create(\"fetch-parse-error\" /* FETCH_PARSE_ERROR */, {\r\n originalErrorMessage: \"ttl field (timeToLive) is not in standard Protobuf Duration \" +\r\n (\"format: \" + responseBody.ttl)\r\n });\r\n }\r\n timeToLiveAsNumber = Number(match[1]) * 1000;\r\n now = Date.now();\r\n return [2 /*return*/, {\r\n token: responseBody.attestationToken,\r\n expireTimeMillis: now + timeToLiveAsNumber,\r\n issuedAtTimeMillis: now\r\n }];\r\n }\r\n });\r\n });\r\n}\r\nfunction getExchangeRecaptchaTokenRequest(app, reCAPTCHAToken) {\r\n var _a = app.options, projectId = _a.projectId, appId = _a.appId, apiKey = _a.apiKey;\r\n return {\r\n url: BASE_ENDPOINT + \"/projects/\" + projectId + \"/apps/\" + appId + \":\" + EXCHANGE_RECAPTCHA_TOKEN_METHOD + \"?key=\" + apiKey,\r\n body: {\r\n // eslint-disable-next-line\r\n recaptcha_token: reCAPTCHAToken\r\n }\r\n };\r\n}\r\nfunction getExchangeDebugTokenRequest(app, debugToken) {\r\n var _a = app.options, projectId = _a.projectId, appId = _a.appId, apiKey = _a.apiKey;\r\n return {\r\n url: BASE_ENDPOINT + \"/projects/\" + projectId + \"/apps/\" + appId + \":\" + EXCHANGE_DEBUG_TOKEN_METHOD + \"?key=\" + apiKey,\r\n body: {\r\n // eslint-disable-next-line\r\n debug_token: debugToken\r\n }\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\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 DB_NAME = 'firebase-app-check-database';\r\nvar DB_VERSION = 1;\r\nvar STORE_NAME = 'firebase-app-check-store';\r\nvar DEBUG_TOKEN_KEY = 'debug-token';\r\nvar dbPromise = null;\r\nfunction getDBPromise() {\r\n if (dbPromise) {\r\n return dbPromise;\r\n }\r\n dbPromise = new Promise(function (resolve, reject) {\r\n try {\r\n var request = indexedDB.open(DB_NAME, DB_VERSION);\r\n request.onsuccess = function (event) {\r\n resolve(event.target.result);\r\n };\r\n request.onerror = function (event) {\r\n var _a;\r\n reject(ERROR_FACTORY.create(\"storage-open\" /* STORAGE_OPEN */, {\r\n originalErrorMessage: (_a = event.target.error) === null || _a === void 0 ? void 0 : _a.message\r\n }));\r\n };\r\n request.onupgradeneeded = function (event) {\r\n var db = event.target.result;\r\n // We don't use 'break' in this switch statement, the fall-through\r\n // behavior is what we want, because if there are multiple versions between\r\n // the old version and the current version, we want ALL the migrations\r\n // that correspond to those versions to run, not only the last one.\r\n // eslint-disable-next-line default-case\r\n switch (event.oldVersion) {\r\n case 0:\r\n db.createObjectStore(STORE_NAME, {\r\n keyPath: 'compositeKey'\r\n });\r\n }\r\n };\r\n }\r\n catch (e) {\r\n reject(ERROR_FACTORY.create(\"storage-open\" /* STORAGE_OPEN */, {\r\n originalErrorMessage: e.message\r\n }));\r\n }\r\n });\r\n return dbPromise;\r\n}\r\nfunction readTokenFromIndexedDB(app) {\r\n return read(computeKey(app));\r\n}\r\nfunction writeTokenToIndexedDB(app, token) {\r\n return write(computeKey(app), token);\r\n}\r\nfunction writeDebugTokenToIndexedDB(token) {\r\n return write(DEBUG_TOKEN_KEY, token);\r\n}\r\nfunction readDebugTokenFromIndexedDB() {\r\n return read(DEBUG_TOKEN_KEY);\r\n}\r\nfunction write(key, value) {\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n var db, transaction, store, request;\r\n return tslib.__generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, getDBPromise()];\r\n case 1:\r\n db = _a.sent();\r\n transaction = db.transaction(STORE_NAME, 'readwrite');\r\n store = transaction.objectStore(STORE_NAME);\r\n request = store.put({\r\n compositeKey: key,\r\n value: value\r\n });\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n request.onsuccess = function (_event) {\r\n resolve();\r\n };\r\n transaction.onerror = function (event) {\r\n var _a;\r\n reject(ERROR_FACTORY.create(\"storage-set\" /* STORAGE_WRITE */, {\r\n originalErrorMessage: (_a = event.target.error) === null || _a === void 0 ? void 0 : _a.message\r\n }));\r\n };\r\n })];\r\n }\r\n });\r\n });\r\n}\r\nfunction read(key) {\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n var db, transaction, store, request;\r\n return tslib.__generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, getDBPromise()];\r\n case 1:\r\n db = _a.sent();\r\n transaction = db.transaction(STORE_NAME, 'readonly');\r\n store = transaction.objectStore(STORE_NAME);\r\n request = store.get(key);\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n request.onsuccess = function (event) {\r\n var result = event.target.result;\r\n if (result) {\r\n resolve(result.value);\r\n }\r\n else {\r\n resolve(undefined);\r\n }\r\n };\r\n transaction.onerror = function (event) {\r\n var _a;\r\n reject(ERROR_FACTORY.create(\"storage-get\" /* STORAGE_GET */, {\r\n originalErrorMessage: (_a = event.target.error) === null || _a === void 0 ? void 0 : _a.message\r\n }));\r\n };\r\n })];\r\n }\r\n });\r\n });\r\n}\r\nfunction computeKey(app) {\r\n return app.options.appId + \"-\" + app.name;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\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 logger = new logger$1.Logger('@firebase/app-check');\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\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 * Always resolves. In case of an error reading from indexeddb, resolve with undefined\r\n */\r\nfunction readTokenFromStorage(app) {\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n var token, e_1;\r\n return tslib.__generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!util.isIndexedDBAvailable()) return [3 /*break*/, 5];\r\n token = undefined;\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, readTokenFromIndexedDB(app)];\r\n case 2:\r\n token = _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_1 = _a.sent();\r\n // swallow the error and return undefined\r\n logger.warn(\"Failed to read token from indexeddb. Error: \" + e_1);\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/, token];\r\n case 5: return [2 /*return*/, undefined];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Always resolves. In case of an error writing to indexeddb, print a warning and resolve the promise\r\n */\r\nfunction writeTokenToStorage(app, token) {\r\n if (util.isIndexedDBAvailable()) {\r\n return writeTokenToIndexedDB(app, token).catch(function (e) {\r\n // swallow the error and resolve the promise\r\n logger.warn(\"Failed to write token to indexeddb. Error: \" + e);\r\n });\r\n }\r\n return Promise.resolve();\r\n}\r\nfunction readOrCreateDebugTokenFromStorage() {\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n var existingDebugToken, newToken;\r\n return tslib.__generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n existingDebugToken = undefined;\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, readDebugTokenFromIndexedDB()];\r\n case 2:\r\n existingDebugToken = _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 4:\r\n if (!existingDebugToken) {\r\n newToken = uuidv4();\r\n // We don't need to block on writing to indexeddb\r\n // In case persistence failed, a new debug token will be generated everytime the page is refreshed.\r\n // It renders the debug token useless because you have to manually register(whitelist) the new token in the firebase console again and again.\r\n // If you see this error trying to use debug token, it probably means you are using a browser that doesn't support indexeddb.\r\n // You should switch to a different browser that supports indexeddb\r\n writeDebugTokenToIndexedDB(newToken).catch(function (e) {\r\n return logger.warn(\"Failed to persist debug token to indexeddb. Error: \" + e);\r\n });\r\n // Not using logger because I don't think we ever want this accidentally hidden?\r\n console.log(\"AppCheck debug token: \" + newToken + \". You will need to whitelist it in the Firebase console for it to work\");\r\n return [2 /*return*/, newToken];\r\n }\r\n else {\r\n return [2 /*return*/, existingDebugToken];\r\n }\r\n }\r\n });\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\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\nfunction isDebugMode() {\r\n var debugState = getDebugState();\r\n return debugState.enabled;\r\n}\r\nfunction getDebugToken() {\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n var state;\r\n return tslib.__generator(this, function (_a) {\r\n state = getDebugState();\r\n if (state.enabled && state.token) {\r\n return [2 /*return*/, state.token.promise];\r\n }\r\n else {\r\n // should not happen!\r\n throw Error(\"\\n Can't get debug token in production mode.\\n \");\r\n }\r\n });\r\n });\r\n}\r\nfunction initializeDebugMode() {\r\n var globals = util.getGlobal();\r\n if (typeof globals.FIREBASE_APPCHECK_DEBUG_TOKEN !== 'string' &&\r\n globals.FIREBASE_APPCHECK_DEBUG_TOKEN !== true) {\r\n return;\r\n }\r\n var debugState = getDebugState();\r\n debugState.enabled = true;\r\n var deferredToken = new util.Deferred();\r\n debugState.token = deferredToken;\r\n if (typeof globals.FIREBASE_APPCHECK_DEBUG_TOKEN === 'string') {\r\n deferredToken.resolve(globals.FIREBASE_APPCHECK_DEBUG_TOKEN);\r\n }\r\n else {\r\n deferredToken.resolve(readOrCreateDebugTokenFromStorage());\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\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// Initial hardcoded value agreed upon across platforms for initial launch.\r\n// Format left open for possible dynamic error values and other fields in the future.\r\nvar defaultTokenErrorData = { error: 'UNKNOWN_ERROR' };\r\n/**\r\n * This function will always resolve.\r\n * The result will contain an error field if there is any error.\r\n * In case there is an error, the token field in the result will be populated with a dummy value\r\n */\r\nfunction getToken$2(app, platformLoggerProvider, forceRefresh) {\r\n if (forceRefresh === void 0) { forceRefresh = false; }\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n var state, token, error, cachedToken, tokenFromDebugExchange, _a, _b, _c, e_1, interopTokenResult;\r\n return tslib.__generator(this, function (_d) {\r\n switch (_d.label) {\r\n case 0:\r\n ensureActivated(app);\r\n state = getState(app);\r\n token = state.token;\r\n error = undefined;\r\n if (!!token) return [3 /*break*/, 2];\r\n return [4 /*yield*/, state.cachedTokenPromise];\r\n case 1:\r\n cachedToken = _d.sent();\r\n if (cachedToken && isValid(cachedToken)) {\r\n token = cachedToken;\r\n setState(app, tslib.__assign(tslib.__assign({}, state), { token: token }));\r\n // notify all listeners with the cached token\r\n notifyTokenListeners(app, { token: token.token });\r\n }\r\n _d.label = 2;\r\n case 2:\r\n // Return the cached token (from either memory or indexedDB) if it's valid\r\n if (!forceRefresh && token && isValid(token)) {\r\n return [2 /*return*/, {\r\n token: token.token\r\n }];\r\n }\r\n if (!isDebugMode()) return [3 /*break*/, 6];\r\n _a = exchangeToken;\r\n _b = getExchangeDebugTokenRequest;\r\n _c = [app];\r\n return [4 /*yield*/, getDebugToken()];\r\n case 3: return [4 /*yield*/, _a.apply(void 0, [_b.apply(void 0, _c.concat([_d.sent()])), platformLoggerProvider])];\r\n case 4:\r\n tokenFromDebugExchange = _d.sent();\r\n // Write debug token to indexedDB.\r\n return [4 /*yield*/, writeTokenToStorage(app, tokenFromDebugExchange)];\r\n case 5:\r\n // Write debug token to indexedDB.\r\n _d.sent();\r\n // Write debug token to state.\r\n setState(app, tslib.__assign(tslib.__assign({}, state), { token: tokenFromDebugExchange }));\r\n return [2 /*return*/, { token: tokenFromDebugExchange.token }];\r\n case 6:\r\n _d.trys.push([6, 8, , 9]);\r\n return [4 /*yield*/, state.provider.getToken()];\r\n case 7:\r\n // state.provider is populated in initializeAppCheck()\r\n // ensureActivated() at the top of this function checks that\r\n // initializeAppCheck() has been called.\r\n token = _d.sent();\r\n return [3 /*break*/, 9];\r\n case 8:\r\n e_1 = _d.sent();\r\n // `getToken()` should never throw, but logging error text to console will aid debugging.\r\n logger.error(e_1);\r\n error = e_1;\r\n return [3 /*break*/, 9];\r\n case 9:\r\n if (!!token) return [3 /*break*/, 10];\r\n // if token is undefined, there must be an error.\r\n // we return a dummy token along with the error\r\n interopTokenResult = makeDummyTokenResult(error);\r\n return [3 /*break*/, 12];\r\n case 10:\r\n interopTokenResult = {\r\n token: token.token\r\n };\r\n // write the new token to the memory state as well as the persistent storage.\r\n // Only do it if we got a valid new token\r\n setState(app, tslib.__assign(tslib.__assign({}, state), { token: token }));\r\n return [4 /*yield*/, writeTokenToStorage(app, token)];\r\n case 11:\r\n _d.sent();\r\n _d.label = 12;\r\n case 12:\r\n notifyTokenListeners(app, interopTokenResult);\r\n return [2 /*return*/, interopTokenResult];\r\n }\r\n });\r\n });\r\n}\r\nfunction addTokenListener(app, platformLoggerProvider, type, listener, onError) {\r\n var state = getState(app);\r\n var tokenListener = {\r\n next: listener,\r\n error: onError,\r\n type: type\r\n };\r\n var newState = tslib.__assign(tslib.__assign({}, state), { tokenObservers: tslib.__spreadArray(tslib.__spreadArray([], state.tokenObservers), [tokenListener]) });\r\n /**\r\n * Invoke the listener with the valid token, then start the token refresher\r\n */\r\n if (!newState.tokenRefresher) {\r\n var tokenRefresher = createTokenRefresher(app, platformLoggerProvider);\r\n newState.tokenRefresher = tokenRefresher;\r\n }\r\n // Create the refresher but don't start it if `isTokenAutoRefreshEnabled`\r\n // is not true.\r\n if (!newState.tokenRefresher.isRunning() && state.isTokenAutoRefreshEnabled) {\r\n newState.tokenRefresher.start();\r\n }\r\n // Invoke the listener async immediately if there is a valid token\r\n // in memory.\r\n if (state.token && isValid(state.token)) {\r\n var validToken_1 = state.token;\r\n Promise.resolve()\r\n .then(function () { return listener({ token: validToken_1.token }); })\r\n .catch(function () {\r\n /** Ignore errors in listeners. */\r\n });\r\n }\r\n else if (state.token == null) {\r\n // Only check cache if there was no token. If the token was invalid,\r\n // skip this and rely on exchange endpoint.\r\n void state\r\n .cachedTokenPromise // Storage token promise. Always populated in `activate()`.\r\n .then(function (cachedToken) {\r\n if (cachedToken && isValid(cachedToken)) {\r\n listener({ token: cachedToken.token });\r\n }\r\n })\r\n .catch(function () {\r\n /** Ignore errors in listeners. */\r\n });\r\n }\r\n setState(app, newState);\r\n}\r\nfunction removeTokenListener(app, listener) {\r\n var state = getState(app);\r\n var newObservers = state.tokenObservers.filter(function (tokenObserver) { return tokenObserver.next !== listener; });\r\n if (newObservers.length === 0 &&\r\n state.tokenRefresher &&\r\n state.tokenRefresher.isRunning()) {\r\n state.tokenRefresher.stop();\r\n }\r\n setState(app, tslib.__assign(tslib.__assign({}, state), { tokenObservers: newObservers }));\r\n}\r\nfunction createTokenRefresher(app, platformLoggerProvider) {\r\n var _this = this;\r\n return new Refresher(\r\n // Keep in mind when this fails for any reason other than the ones\r\n // for which we should retry, it will effectively stop the proactive refresh.\r\n function () { return tslib.__awaiter(_this, void 0, void 0, function () {\r\n var state, result;\r\n return tslib.__generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n state = getState(app);\r\n if (!!state.token) return [3 /*break*/, 2];\r\n return [4 /*yield*/, getToken$2(app, platformLoggerProvider)];\r\n case 1:\r\n result = _a.sent();\r\n return [3 /*break*/, 4];\r\n case 2: return [4 /*yield*/, getToken$2(app, platformLoggerProvider, true)];\r\n case 3:\r\n result = _a.sent();\r\n _a.label = 4;\r\n case 4:\r\n // getToken() always resolves. In case the result has an error field defined, it means the operation failed, and we should retry.\r\n if (result.error) {\r\n throw result.error;\r\n }\r\n return [2 /*return*/];\r\n }\r\n });\r\n }); }, function () {\r\n // TODO: when should we retry?\r\n return true;\r\n }, function () {\r\n var state = getState(app);\r\n if (state.token) {\r\n // issuedAtTime + (50% * total TTL) + 5 minutes\r\n var nextRefreshTimeMillis = state.token.issuedAtTimeMillis +\r\n (state.token.expireTimeMillis - state.token.issuedAtTimeMillis) *\r\n 0.5 +\r\n 5 * 60 * 1000;\r\n // Do not allow refresh time to be past (expireTime - 5 minutes)\r\n var latestAllowableRefresh = state.token.expireTimeMillis - 5 * 60 * 1000;\r\n nextRefreshTimeMillis = Math.min(nextRefreshTimeMillis, latestAllowableRefresh);\r\n return Math.max(0, nextRefreshTimeMillis - Date.now());\r\n }\r\n else {\r\n return 0;\r\n }\r\n }, TOKEN_REFRESH_TIME.RETRIAL_MIN_WAIT, TOKEN_REFRESH_TIME.RETRIAL_MAX_WAIT);\r\n}\r\nfunction notifyTokenListeners(app, token) {\r\n var observers = getState(app).tokenObservers;\r\n for (var _i = 0, observers_1 = observers; _i < observers_1.length; _i++) {\r\n var observer = observers_1[_i];\r\n try {\r\n if (observer.type === \"EXTERNAL\" /* EXTERNAL */ && token.error != null) {\r\n // If this listener was added by a 3P call, send any token error to\r\n // the supplied error handler. A 3P observer always has an error\r\n // handler.\r\n observer.error(token.error);\r\n }\r\n else {\r\n // If the token has no error field, always return the token.\r\n // If this is a 2P listener, return the token, whether or not it\r\n // has an error field.\r\n observer.next(token);\r\n }\r\n }\r\n catch (ignored) {\r\n // Errors in the listener function itself are always ignored.\r\n }\r\n }\r\n}\r\nfunction isValid(token) {\r\n return token.expireTimeMillis - Date.now() > 0;\r\n}\r\nfunction makeDummyTokenResult(error) {\r\n return {\r\n token: formatDummyToken(defaultTokenErrorData),\r\n error: error\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\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 RECAPTCHA_URL = 'https://www.google.com/recaptcha/api.js';\r\nfunction initialize(app, siteKey) {\r\n var state = getState(app);\r\n var initialized = new util.Deferred();\r\n setState(app, tslib.__assign(tslib.__assign({}, state), { reCAPTCHAState: { initialized: initialized } }));\r\n var divId = \"fire_app_check_\" + app.name;\r\n var invisibleDiv = document.createElement('div');\r\n invisibleDiv.id = divId;\r\n invisibleDiv.style.display = 'none';\r\n document.body.appendChild(invisibleDiv);\r\n var grecaptcha = getRecaptcha();\r\n if (!grecaptcha) {\r\n loadReCAPTCHAScript(function () {\r\n var grecaptcha = getRecaptcha();\r\n if (!grecaptcha) {\r\n // it shouldn't happen.\r\n throw new Error('no recaptcha');\r\n }\r\n grecaptcha.ready(function () {\r\n // Invisible widgets allow us to set a different siteKey for each widget, so we use them to support multiple apps\r\n renderInvisibleWidget(app, siteKey, grecaptcha, divId);\r\n initialized.resolve(grecaptcha);\r\n });\r\n });\r\n }\r\n else {\r\n grecaptcha.ready(function () {\r\n renderInvisibleWidget(app, siteKey, grecaptcha, divId);\r\n initialized.resolve(grecaptcha);\r\n });\r\n }\r\n return initialized.promise;\r\n}\r\nfunction getToken$1(app) {\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n var reCAPTCHAState, recaptcha;\r\n return tslib.__generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n ensureActivated(app);\r\n reCAPTCHAState = getState(app).reCAPTCHAState;\r\n return [4 /*yield*/, reCAPTCHAState.initialized.promise];\r\n case 1:\r\n recaptcha = _a.sent();\r\n return [2 /*return*/, new Promise(function (resolve, _reject) {\r\n // Updated after initialization is complete.\r\n var reCAPTCHAState = getState(app).reCAPTCHAState;\r\n recaptcha.ready(function () {\r\n resolve(\r\n // widgetId is guaranteed to be available if reCAPTCHAState.initialized.promise resolved.\r\n recaptcha.execute(reCAPTCHAState.widgetId, {\r\n action: 'fire_app_check'\r\n }));\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n *\r\n * @param app\r\n * @param container - Id of a HTML element.\r\n */\r\nfunction renderInvisibleWidget(app, siteKey, grecaptcha, container) {\r\n var widgetId = grecaptcha.render(container, {\r\n sitekey: siteKey,\r\n size: 'invisible'\r\n });\r\n var state = getState(app);\r\n setState(app, tslib.__assign(tslib.__assign({}, state), { reCAPTCHAState: tslib.__assign(tslib.__assign({}, state.reCAPTCHAState), { // state.reCAPTCHAState is set in the initialize()\r\n widgetId: widgetId }) }));\r\n}\r\nfunction loadReCAPTCHAScript(onload) {\r\n var script = document.createElement('script');\r\n script.src = \"\" + RECAPTCHA_URL;\r\n script.onload = onload;\r\n document.head.appendChild(script);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\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 * App Check provider that can obtain a reCAPTCHA V3 token and exchange it\r\n * for an App Check token.\r\n */\r\nvar ReCaptchaV3Provider = /** @class */ (function () {\r\n /**\r\n * Create a ReCaptchaV3Provider instance.\r\n * @param siteKey - ReCAPTCHA V3 siteKey.\r\n */\r\n function ReCaptchaV3Provider(_siteKey) {\r\n this._siteKey = _siteKey;\r\n }\r\n /**\r\n * Returns an App Check token.\r\n * @internal\r\n */\r\n ReCaptchaV3Provider.prototype.getToken = function () {\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n var attestedClaimsToken;\r\n return tslib.__generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!this._app || !this._platformLoggerProvider) {\r\n // This should only occur if user has not called initializeAppCheck().\r\n // We don't have an appName to provide if so.\r\n // This should already be caught in the top level `getToken()` function.\r\n throw ERROR_FACTORY.create(\"use-before-activation\" /* USE_BEFORE_ACTIVATION */, {\r\n appName: ''\r\n });\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, getToken$1(this._app)];\r\n case 2:\r\n attestedClaimsToken = _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n _a.sent();\r\n // reCaptcha.execute() throws null which is not very descriptive.\r\n throw ERROR_FACTORY.create(\"recaptcha-error\" /* RECAPTCHA_ERROR */);\r\n case 4: return [2 /*return*/, exchangeToken(getExchangeRecaptchaTokenRequest(this._app, attestedClaimsToken), this._platformLoggerProvider)];\r\n }\r\n });\r\n });\r\n };\r\n ReCaptchaV3Provider.prototype.initialize = function (app, platformLoggerProvider) {\r\n this._app = app;\r\n this._platformLoggerProvider = platformLoggerProvider;\r\n initialize(app, this._siteKey).catch(function () {\r\n /* we don't care about the initialization result */\r\n });\r\n };\r\n return ReCaptchaV3Provider;\r\n}());\r\n/**\r\n * Custom provider class.\r\n */\r\nvar CustomProvider = /** @class */ (function () {\r\n function CustomProvider(_customProviderOptions) {\r\n this._customProviderOptions = _customProviderOptions;\r\n }\r\n /**\r\n * @internal\r\n */\r\n CustomProvider.prototype.getToken = function () {\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n var customToken, issuedAtTimeSeconds, issuedAtTimeMillis;\r\n return tslib.__generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!this._app) {\r\n // This should only occur if user has not called initializeAppCheck().\r\n // We don't have an appName to provide if so.\r\n // This should already be caught in the top level `getToken()` function.\r\n throw ERROR_FACTORY.create(\"use-before-activation\" /* USE_BEFORE_ACTIVATION */, {\r\n appName: ''\r\n });\r\n }\r\n return [4 /*yield*/, this._customProviderOptions.getToken()];\r\n case 1:\r\n customToken = _a.sent();\r\n issuedAtTimeSeconds = util.issuedAtTime(customToken.token);\r\n issuedAtTimeMillis = issuedAtTimeSeconds !== null &&\r\n issuedAtTimeSeconds < Date.now() &&\r\n issuedAtTimeSeconds > 0\r\n ? issuedAtTimeSeconds * 1000\r\n : Date.now();\r\n return [2 /*return*/, tslib.__assign(tslib.__assign({}, customToken), { issuedAtTimeMillis: issuedAtTimeMillis })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * @internal\r\n */\r\n CustomProvider.prototype.initialize = function (app) {\r\n this._app = app;\r\n };\r\n return CustomProvider;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\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 *\r\n * @param app\r\n * @param siteKeyOrProvider - optional custom attestation provider\r\n * or reCAPTCHA provider\r\n * @param isTokenAutoRefreshEnabled - if true, enables auto refresh\r\n * of appCheck token.\r\n */\r\nfunction activate(app, siteKeyOrProvider, platformLoggerProvider, isTokenAutoRefreshEnabled) {\r\n var state = getState(app);\r\n if (state.activated) {\r\n throw ERROR_FACTORY.create(\"already-activated\" /* ALREADY_ACTIVATED */, {\r\n appName: app.name\r\n });\r\n }\r\n var newState = tslib.__assign(tslib.__assign({}, state), { activated: true });\r\n // Read cached token from storage if it exists and store it in memory.\r\n newState.cachedTokenPromise = readTokenFromStorage(app).then(function (cachedToken) {\r\n if (cachedToken && isValid(cachedToken)) {\r\n setState(app, tslib.__assign(tslib.__assign({}, getState(app)), { token: cachedToken }));\r\n }\r\n return cachedToken;\r\n });\r\n if (typeof siteKeyOrProvider === 'string') {\r\n newState.provider = new ReCaptchaV3Provider(siteKeyOrProvider);\r\n }\r\n else if (siteKeyOrProvider instanceof ReCaptchaV3Provider ||\r\n siteKeyOrProvider instanceof CustomProvider) {\r\n newState.provider = siteKeyOrProvider;\r\n }\r\n else {\r\n // Process \"old\" custom provider to avoid breaking previous users.\r\n // This was defined at beta release as simply an object with a\r\n // getToken() method.\r\n newState.provider = new CustomProvider({\r\n getToken: siteKeyOrProvider.getToken\r\n });\r\n }\r\n // Use value of global `automaticDataCollectionEnabled` (which\r\n // itself defaults to false if not specified in config) if\r\n // `isTokenAutoRefreshEnabled` param was not provided by user.\r\n newState.isTokenAutoRefreshEnabled =\r\n isTokenAutoRefreshEnabled === undefined\r\n ? app.automaticDataCollectionEnabled\r\n : isTokenAutoRefreshEnabled;\r\n setState(app, newState);\r\n newState.provider.initialize(app, platformLoggerProvider);\r\n}\r\nfunction setTokenAutoRefreshEnabled(app, isTokenAutoRefreshEnabled) {\r\n var state = getState(app);\r\n // This will exist if any product libraries have called\r\n // `addTokenListener()`\r\n if (state.tokenRefresher) {\r\n if (isTokenAutoRefreshEnabled === true) {\r\n state.tokenRefresher.start();\r\n }\r\n else {\r\n state.tokenRefresher.stop();\r\n }\r\n }\r\n setState(app, tslib.__assign(tslib.__assign({}, state), { isTokenAutoRefreshEnabled: isTokenAutoRefreshEnabled }));\r\n}\r\n/**\r\n * Differs from internal getToken in that it throws the error.\r\n */\r\nfunction getToken(app, platformLoggerProvider, forceRefresh) {\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n var result;\r\n return tslib.__generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, getToken$2(app, platformLoggerProvider, forceRefresh)];\r\n case 1:\r\n result = _a.sent();\r\n if (result.error) {\r\n throw result.error;\r\n }\r\n return [2 /*return*/, { token: result.token }];\r\n }\r\n });\r\n });\r\n}\r\nfunction onTokenChanged(app, platformLoggerProvider, onNextOrObserver, onError, \r\n/**\r\n * NOTE: Although an `onCompletion` callback can be provided, it will\r\n * never be called because the token stream is never-ending.\r\n * It is added only for API consistency with the observer pattern, which\r\n * we follow in JS APIs.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nonCompletion) {\r\n var nextFn = function () { };\r\n var errorFn = function () { };\r\n if (onNextOrObserver.next != null) {\r\n nextFn = onNextOrObserver.next.bind(onNextOrObserver);\r\n }\r\n else {\r\n nextFn = onNextOrObserver;\r\n }\r\n if (onNextOrObserver.error != null) {\r\n errorFn = onNextOrObserver.error.bind(onNextOrObserver);\r\n }\r\n else if (onError) {\r\n errorFn = onError;\r\n }\r\n addTokenListener(app, platformLoggerProvider, \"EXTERNAL\" /* EXTERNAL */, nextFn, errorFn);\r\n return function () { return removeTokenListener(app, nextFn); };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\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\nfunction factory(app, platformLoggerProvider) {\r\n return {\r\n app: app,\r\n activate: function (siteKeyOrProvider, isTokenAutoRefreshEnabled) {\r\n return activate(app, \r\n // Public types of ReCaptchaV3Provider/CustomProvider don't\r\n // expose getToken() and aren't recognized as the internal\r\n // class version of themselves.\r\n siteKeyOrProvider, platformLoggerProvider, isTokenAutoRefreshEnabled);\r\n },\r\n setTokenAutoRefreshEnabled: function (isTokenAutoRefreshEnabled) {\r\n return setTokenAutoRefreshEnabled(app, isTokenAutoRefreshEnabled);\r\n },\r\n getToken: function (forceRefresh) {\r\n return getToken(app, platformLoggerProvider, forceRefresh);\r\n },\r\n onTokenChanged: function (onNextOrObserver, onError, onCompletion) {\r\n return onTokenChanged(app, platformLoggerProvider, \r\n /**\r\n * This can still be an observer. Need to do this casting because\r\n * according to Typescript: \"Implementation signatures of overloads\r\n * are not externally visible\"\r\n */\r\n onNextOrObserver, onError);\r\n },\r\n INTERNAL: {\r\n delete: function () {\r\n var tokenObservers = getState(app).tokenObservers;\r\n for (var _i = 0, tokenObservers_1 = tokenObservers; _i < tokenObservers_1.length; _i++) {\r\n var tokenObserver = tokenObservers_1[_i];\r\n removeTokenListener(app, tokenObserver.next);\r\n }\r\n return Promise.resolve();\r\n }\r\n }\r\n };\r\n}\r\nfunction internalFactory(app, platformLoggerProvider) {\r\n return {\r\n getToken: function (forceRefresh) {\r\n return getToken$2(app, platformLoggerProvider, forceRefresh);\r\n },\r\n addTokenListener: function (listener) {\r\n return addTokenListener(app, platformLoggerProvider, \"INTERNAL\" /* INTERNAL */, listener);\r\n },\r\n removeTokenListener: function (listener) { return removeTokenListener(app, listener); }\r\n };\r\n}\n\nvar name = \"@firebase/app-check\";\nvar version = \"0.3.2\";\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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 APP_CHECK_NAME = 'appCheck';\r\nvar APP_CHECK_NAME_INTERNAL = 'app-check-internal';\r\nfunction registerAppCheck(firebase) {\r\n // The public interface\r\n firebase.INTERNAL.registerComponent(new component.Component(APP_CHECK_NAME, function (container) {\r\n // getImmediate for FirebaseApp will always succeed\r\n var app = container.getProvider('app').getImmediate();\r\n var platformLoggerProvider = container.getProvider('platform-logger');\r\n return factory(app, platformLoggerProvider);\r\n }, \"PUBLIC\" /* PUBLIC */)\r\n .setServiceProps({\r\n ReCaptchaV3Provider: ReCaptchaV3Provider,\r\n CustomProvider: CustomProvider\r\n })\r\n /**\r\n * AppCheck can only be initialized by explicitly calling firebase.appCheck()\r\n * We don't want firebase products that consume AppCheck to gate on AppCheck\r\n * if the user doesn't intend them to, just because the AppCheck component\r\n * is registered.\r\n */\r\n .setInstantiationMode(\"EXPLICIT\" /* EXPLICIT */)\r\n /**\r\n * Because all firebase products that depend on app-check depend on app-check-internal directly,\r\n * we need to initialize app-check-internal after app-check is initialized to make it\r\n * available to other firebase products.\r\n */\r\n .setInstanceCreatedCallback(function (container, _instanceIdentifier, _instance) {\r\n var appCheckInternalProvider = container.getProvider(APP_CHECK_NAME_INTERNAL);\r\n appCheckInternalProvider.initialize();\r\n }));\r\n // The internal interface used by other Firebase products\r\n firebase.INTERNAL.registerComponent(new component.Component(APP_CHECK_NAME_INTERNAL, function (container) {\r\n // getImmediate for FirebaseApp will always succeed\r\n var app = container.getProvider('app').getImmediate();\r\n var platformLoggerProvider = container.getProvider('platform-logger');\r\n return internalFactory(app, platformLoggerProvider);\r\n }, \"PUBLIC\" /* PUBLIC */).setInstantiationMode(\"EXPLICIT\" /* EXPLICIT */));\r\n firebase.registerVersion(name, version);\r\n}\r\nregisterAppCheck(firebase__default['default']);\r\ninitializeDebugMode();\n//# sourceMappingURL=index.cjs.js.map\n","import { __assign } from 'tslib';\nimport { ErrorFactory, deepCopy, contains, deepExtend, createSubscribe, isBrowser, isNode } from '@firebase/util';\nimport { ComponentContainer, Component } from '@firebase/component';\nimport { Logger, setLogLevel, setUserLogHandler } from '@firebase/logger';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 _a$1;\r\nvar ERRORS = (_a$1 = {},\r\n _a$1[\"no-app\" /* NO_APP */] = \"No Firebase App '{$appName}' has been created - \" +\r\n 'call Firebase App.initializeApp()',\r\n _a$1[\"bad-app-name\" /* BAD_APP_NAME */] = \"Illegal App name: '{$appName}\",\r\n _a$1[\"duplicate-app\" /* DUPLICATE_APP */] = \"Firebase App named '{$appName}' already exists\",\r\n _a$1[\"app-deleted\" /* APP_DELETED */] = \"Firebase App named '{$appName}' already deleted\",\r\n _a$1[\"invalid-app-argument\" /* INVALID_APP_ARGUMENT */] = 'firebase.{$appName}() takes either no argument or a ' +\r\n 'Firebase App instance.',\r\n _a$1[\"invalid-log-argument\" /* INVALID_LOG_ARGUMENT */] = 'First argument to `onLog` must be null or a function.',\r\n _a$1);\r\nvar ERROR_FACTORY = new ErrorFactory('app', 'Firebase', ERRORS);\n\nvar name$c = \"@firebase/app\";\nvar version$1 = \"0.6.30\";\n\nvar name$b = \"@firebase/analytics\";\n\nvar name$a = \"@firebase/app-check\";\n\nvar name$9 = \"@firebase/auth\";\n\nvar name$8 = \"@firebase/database\";\n\nvar name$7 = \"@firebase/functions\";\n\nvar name$6 = \"@firebase/installations\";\n\nvar name$5 = \"@firebase/messaging\";\n\nvar name$4 = \"@firebase/performance\";\n\nvar name$3 = \"@firebase/remote-config\";\n\nvar name$2 = \"@firebase/storage\";\n\nvar name$1 = \"@firebase/firestore\";\n\nvar name = \"firebase-wrapper\";\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 _a;\r\nvar DEFAULT_ENTRY_NAME = '[DEFAULT]';\r\nvar PLATFORM_LOG_STRING = (_a = {},\r\n _a[name$c] = 'fire-core',\r\n _a[name$b] = 'fire-analytics',\r\n _a[name$a] = 'fire-app-check',\r\n _a[name$9] = 'fire-auth',\r\n _a[name$8] = 'fire-rtdb',\r\n _a[name$7] = 'fire-fn',\r\n _a[name$6] = 'fire-iid',\r\n _a[name$5] = 'fire-fcm',\r\n _a[name$4] = 'fire-perf',\r\n _a[name$3] = 'fire-rc',\r\n _a[name$2] = 'fire-gcs',\r\n _a[name$1] = 'fire-fst',\r\n _a['fire-js'] = 'fire-js',\r\n _a[name] = 'fire-js-all',\r\n _a);\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 logger = new Logger('@firebase/app');\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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 * 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 var _this = this;\r\n this.firebase_ = firebase_;\r\n this.isDeleted_ = false;\r\n this.name_ = config.name;\r\n this.automaticDataCollectionEnabled_ =\r\n config.automaticDataCollectionEnabled || false;\r\n this.options_ = deepCopy(options);\r\n this.container = new ComponentContainer(config.name);\r\n // add itself to container\r\n this._addComponent(new Component('app', function () { return _this; }, \"PUBLIC\" /* PUBLIC */));\r\n // populate ComponentContainer with existing components\r\n this.firebase_.INTERNAL.components.forEach(function (component) {\r\n return _this._addComponent(component);\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: false,\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: false,\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: false,\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 return Promise.all(_this.container.getProviders().map(function (provider) { return provider.delete(); }));\r\n })\r\n .then(function () {\r\n _this.isDeleted_ = true;\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 and functions are the only ones that are 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 var _a;\r\n if (instanceIdentifier === void 0) { instanceIdentifier = DEFAULT_ENTRY_NAME; }\r\n this.checkDestroyed_();\r\n // Initialize instance if InstatiationMode is `EXPLICIT`.\r\n var provider = this.container.getProvider(name);\r\n if (!provider.isInitialized() &&\r\n ((_a = provider.getComponent()) === null || _a === void 0 ? void 0 : _a.instantiationMode) === \"EXPLICIT\" /* EXPLICIT */) {\r\n provider.initialize();\r\n }\r\n // getImmediate will always succeed because _getService is only called for registered components.\r\n return provider.getImmediate({\r\n identifier: instanceIdentifier\r\n });\r\n };\r\n /**\r\n * Remove a service instance from the cache, so we will create a new instance for this service\r\n * when people try to get this service again.\r\n *\r\n * NOTE: currently only firestore is using this functionality to support firestore shutdown.\r\n *\r\n * @param name The service name\r\n * @param instanceIdentifier instance identifier in case multiple instances are allowed\r\n * @internal\r\n */\r\n FirebaseAppImpl.prototype._removeServiceInstance = function (name, instanceIdentifier) {\r\n if (instanceIdentifier === void 0) { instanceIdentifier = DEFAULT_ENTRY_NAME; }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n this.container.getProvider(name).clearInstance(instanceIdentifier);\r\n };\r\n /**\r\n * @param component the component being added to this app's container\r\n */\r\n FirebaseAppImpl.prototype._addComponent = function (component) {\r\n try {\r\n this.container.addComponent(component);\r\n }\r\n catch (e) {\r\n logger.debug(\"Component \" + component.name + \" failed to register with FirebaseApp \" + this.name, e);\r\n }\r\n };\r\n FirebaseAppImpl.prototype._addOrOverwriteComponent = function (component) {\r\n this.container.addOrOverwriteComponent(component);\r\n };\r\n FirebaseAppImpl.prototype.toJSON = function () {\r\n return {\r\n name: this.name,\r\n automaticDataCollectionEnabled: this.automaticDataCollectionEnabled,\r\n options: this.options\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 throw ERROR_FACTORY.create(\"app-deleted\" /* APP_DELETED */, { appName: 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');\n\nvar version = \"8.10.0\";\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 * Because auth can't share code with other components, we attach the utility functions\r\n * in an internal namespace to share code.\r\n * This function return a firebase namespace object without\r\n * any utility functions, so it can be shared between the regular firebaseNamespace and\r\n * the lite version.\r\n */\r\nfunction createFirebaseNamespaceCore(firebaseAppImpl) {\r\n var apps = {};\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n var components = new Map();\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 // @ts-ignore\r\n __esModule: true,\r\n initializeApp: initializeApp,\r\n // @ts-ignore\r\n app: app,\r\n registerVersion: registerVersion,\r\n setLogLevel: setLogLevel,\r\n onLog: onLog,\r\n // @ts-ignore\r\n apps: null,\r\n SDK_VERSION: version,\r\n INTERNAL: {\r\n registerComponent: registerComponent,\r\n removeApp: removeApp,\r\n components: components,\r\n useAsService: useAsService\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n 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 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 throw ERROR_FACTORY.create(\"no-app\" /* NO_APP */, { appName: name });\r\n }\r\n return apps[name];\r\n }\r\n // @ts-ignore\r\n 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 throw ERROR_FACTORY.create(\"bad-app-name\" /* BAD_APP_NAME */, {\r\n appName: String(name)\r\n });\r\n }\r\n if (contains(apps, name)) {\r\n throw ERROR_FACTORY.create(\"duplicate-app\" /* DUPLICATE_APP */, { appName: name });\r\n }\r\n var app = new firebaseAppImpl(options, config, namespace);\r\n apps[name] = app;\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 function registerComponent(component) {\r\n var componentName = component.name;\r\n if (components.has(componentName)) {\r\n logger.debug(\"There were multiple attempts to register component \" + componentName + \".\");\r\n return component.type === \"PUBLIC\" /* PUBLIC */\r\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n namespace[componentName]\r\n : null;\r\n }\r\n components.set(componentName, component);\r\n // create service namespace for public components\r\n if (component.type === \"PUBLIC\" /* PUBLIC */) {\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n if (typeof appArg[componentName] !== 'function') {\r\n // Invalid argument.\r\n // This happens in the following case: firebase.storage('gs:/')\r\n throw ERROR_FACTORY.create(\"invalid-app-argument\" /* INVALID_APP_ARGUMENT */, {\r\n appName: componentName\r\n });\r\n }\r\n // Forward service instance lookup to the FirebaseApp.\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return appArg[componentName]();\r\n };\r\n // ... and a container for service-level properties.\r\n if (component.serviceProps !== undefined) {\r\n deepExtend(serviceNamespace, component.serviceProps);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n namespace[componentName] = serviceNamespace;\r\n // Patch the FirebaseAppImpl prototype\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n firebaseAppImpl.prototype[componentName] =\r\n // TODO: The eslint disable can be removed and the 'ignoreRestArgs'\r\n // option added to the no-explicit-any rule when ESlint releases it.\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n 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, componentName);\r\n return serviceFxn.apply(this, component.multipleInstances ? args : []);\r\n };\r\n }\r\n // add the component to existing app instances\r\n for (var _i = 0, _a = Object.keys(apps); _i < _a.length; _i++) {\r\n var appName = _a[_i];\r\n apps[appName]._addComponent(component);\r\n }\r\n return component.type === \"PUBLIC\" /* PUBLIC */\r\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n namespace[componentName]\r\n : null;\r\n }\r\n function registerVersion(libraryKeyOrName, version, variant) {\r\n var _a;\r\n // TODO: We can use this check to whitelist strings when/if we set up\r\n // a good whitelist system.\r\n var library = (_a = PLATFORM_LOG_STRING[libraryKeyOrName]) !== null && _a !== void 0 ? _a : libraryKeyOrName;\r\n if (variant) {\r\n library += \"-\" + variant;\r\n }\r\n var libraryMismatch = library.match(/\\s|\\//);\r\n var versionMismatch = version.match(/\\s|\\//);\r\n if (libraryMismatch || versionMismatch) {\r\n var warning = [\r\n \"Unable to register library \\\"\" + library + \"\\\" with version \\\"\" + version + \"\\\":\"\r\n ];\r\n if (libraryMismatch) {\r\n warning.push(\"library name \\\"\" + library + \"\\\" contains illegal characters (whitespace or \\\"/\\\")\");\r\n }\r\n if (libraryMismatch && versionMismatch) {\r\n warning.push('and');\r\n }\r\n if (versionMismatch) {\r\n warning.push(\"version name \\\"\" + version + \"\\\" contains illegal characters (whitespace or \\\"/\\\")\");\r\n }\r\n logger.warn(warning.join(' '));\r\n return;\r\n }\r\n registerComponent(new Component(library + \"-version\", function () { return ({ library: library, version: version }); }, \"VERSION\" /* VERSION */));\r\n }\r\n function onLog(logCallback, options) {\r\n if (logCallback !== null && typeof logCallback !== 'function') {\r\n throw ERROR_FACTORY.create(\"invalid-log-argument\" /* INVALID_LOG_ARGUMENT */);\r\n }\r\n setUserLogHandler(logCallback, options);\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 return useService;\r\n }\r\n return namespace;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 * 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 namespace = createFirebaseNamespaceCore(FirebaseAppImpl);\r\n namespace.INTERNAL = __assign(__assign({}, namespace.INTERNAL), { createFirebaseNamespace: createFirebaseNamespace,\r\n extendNamespace: extendNamespace,\r\n createSubscribe: createSubscribe,\r\n ErrorFactory: ErrorFactory,\r\n deepExtend: deepExtend });\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 return namespace;\r\n}\r\nvar firebase$1 = createFirebaseNamespace();\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 PlatformLoggerService = /** @class */ (function () {\r\n function PlatformLoggerService(container) {\r\n this.container = container;\r\n }\r\n // In initial implementation, this will be called by installations on\r\n // auth token refresh, and installations will send this string.\r\n PlatformLoggerService.prototype.getPlatformInfoString = function () {\r\n var providers = this.container.getProviders();\r\n // Loop through providers and get library/version pairs from any that are\r\n // version components.\r\n return providers\r\n .map(function (provider) {\r\n if (isVersionServiceProvider(provider)) {\r\n var service = provider.getImmediate();\r\n return service.library + \"/\" + service.version;\r\n }\r\n else {\r\n return null;\r\n }\r\n })\r\n .filter(function (logString) { return logString; })\r\n .join(' ');\r\n };\r\n return PlatformLoggerService;\r\n}());\r\n/**\r\n *\r\n * @param provider check if this provider provides a VersionService\r\n *\r\n * NOTE: Using Provider<'app-version'> is a hack to indicate that the provider\r\n * provides VersionService. The provider is not necessarily a 'app-version'\r\n * provider.\r\n */\r\nfunction isVersionServiceProvider(provider) {\r\n var component = provider.getComponent();\r\n return (component === null || component === void 0 ? void 0 : component.type) === \"VERSION\" /* VERSION */;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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\nfunction registerCoreComponents(firebase, variant) {\r\n firebase.INTERNAL.registerComponent(new Component('platform-logger', function (container) { return new PlatformLoggerService(container); }, \"PRIVATE\" /* PRIVATE */));\r\n // Register `app` package.\r\n firebase.registerVersion(name$c, version$1, variant);\r\n // Register platform SDK identifier (no version).\r\n firebase.registerVersion('fire-js', '');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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// Firebase Lite detection test\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nif (isBrowser() && self.firebase !== undefined) {\r\n logger.warn(\"\\n Warning: Firebase is already defined in the global scope. Please make sure\\n Firebase library is only loaded once.\\n \");\r\n // eslint-disable-next-line\r\n var sdkVersion = self.firebase.SDK_VERSION;\r\n if (sdkVersion && sdkVersion.indexOf('LITE') >= 0) {\r\n logger.warn(\"\\n Warning: You are trying to load Firebase while using Firebase Performance standalone script.\\n You should load Firebase Performance with this instance of Firebase to avoid loading duplicate code.\\n \");\r\n }\r\n}\r\nvar initializeApp = firebase$1.initializeApp;\r\n// TODO: This disable can be removed and the 'ignoreRestArgs' option added to\r\n// the no-explicit-any rule when ESlint releases it.\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfirebase$1.initializeApp = 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 // Environment check before initializing app\r\n // Do the check in initializeApp, so people have a chance to disable it by setting logLevel\r\n // in @firebase/logger\r\n if (isNode()) {\r\n logger.warn(\"\\n Warning: This is a browser-targeted Firebase bundle but it appears it is being\\n run in a Node environment. If running in a Node environment, make sure you\\n are using the bundle specified by the \\\"main\\\" field in package.json.\\n \\n If you are using Webpack, you can specify \\\"main\\\" as the first item in\\n \\\"resolve.mainFields\\\":\\n https://webpack.js.org/configuration/resolve/#resolvemainfields\\n \\n If using Rollup, use the @rollup/plugin-node-resolve plugin and specify \\\"main\\\"\\n as the first item in \\\"mainFields\\\", e.g. ['main', 'module'].\\n https://github.com/rollup/@rollup/plugin-node-resolve\\n \");\r\n }\r\n return initializeApp.apply(undefined, args);\r\n};\r\nvar firebase = firebase$1;\r\nregisterCoreComponents(firebase);\n\nexport default firebase;\nexport { firebase };\n//# sourceMappingURL=index.esm.js.map\n","import { __values, __read, __awaiter, __generator, __spreadArray } from 'tslib';\nimport { Deferred } from '@firebase/util';\n\n/**\r\n * Component for service name T, e.g. `auth`, `auth-internal`\r\n */\r\nvar Component = /** @class */ (function () {\r\n /**\r\n *\r\n * @param name The public service name, e.g. app, auth, firestore, database\r\n * @param instanceFactory Service factory responsible for creating the public interface\r\n * @param type whether the service provided by the component is public or private\r\n */\r\n function Component(name, instanceFactory, type) {\r\n this.name = name;\r\n this.instanceFactory = instanceFactory;\r\n this.type = type;\r\n this.multipleInstances = false;\r\n /**\r\n * Properties to be added to the service namespace\r\n */\r\n this.serviceProps = {};\r\n this.instantiationMode = \"LAZY\" /* LAZY */;\r\n this.onInstanceCreated = null;\r\n }\r\n Component.prototype.setInstantiationMode = function (mode) {\r\n this.instantiationMode = mode;\r\n return this;\r\n };\r\n Component.prototype.setMultipleInstances = function (multipleInstances) {\r\n this.multipleInstances = multipleInstances;\r\n return this;\r\n };\r\n Component.prototype.setServiceProps = function (props) {\r\n this.serviceProps = props;\r\n return this;\r\n };\r\n Component.prototype.setInstanceCreatedCallback = function (callback) {\r\n this.onInstanceCreated = callback;\r\n return this;\r\n };\r\n return Component;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 DEFAULT_ENTRY_NAME = '[DEFAULT]';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 * Provider for instance for service name T, e.g. 'auth', 'auth-internal'\r\n * NameServiceMapping[T] is an alias for the type of the instance\r\n */\r\nvar Provider = /** @class */ (function () {\r\n function Provider(name, container) {\r\n this.name = name;\r\n this.container = container;\r\n this.component = null;\r\n this.instances = new Map();\r\n this.instancesDeferred = new Map();\r\n this.instancesOptions = new Map();\r\n this.onInitCallbacks = new Map();\r\n }\r\n /**\r\n * @param identifier A provider can provide mulitple instances of a service\r\n * if this.component.multipleInstances is true.\r\n */\r\n Provider.prototype.get = function (identifier) {\r\n // if multipleInstances is not supported, use the default name\r\n var normalizedIdentifier = this.normalizeInstanceIdentifier(identifier);\r\n if (!this.instancesDeferred.has(normalizedIdentifier)) {\r\n var deferred = new Deferred();\r\n this.instancesDeferred.set(normalizedIdentifier, deferred);\r\n if (this.isInitialized(normalizedIdentifier) ||\r\n this.shouldAutoInitialize()) {\r\n // initialize the service if it can be auto-initialized\r\n try {\r\n var instance = this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier\r\n });\r\n if (instance) {\r\n deferred.resolve(instance);\r\n }\r\n }\r\n catch (e) {\r\n // when the instance factory throws an exception during get(), it should not cause\r\n // a fatal error. We just return the unresolved promise in this case.\r\n }\r\n }\r\n }\r\n return this.instancesDeferred.get(normalizedIdentifier).promise;\r\n };\r\n Provider.prototype.getImmediate = function (options) {\r\n var _a;\r\n // if multipleInstances is not supported, use the default name\r\n var normalizedIdentifier = this.normalizeInstanceIdentifier(options === null || options === void 0 ? void 0 : options.identifier);\r\n var optional = (_a = options === null || options === void 0 ? void 0 : options.optional) !== null && _a !== void 0 ? _a : false;\r\n if (this.isInitialized(normalizedIdentifier) ||\r\n this.shouldAutoInitialize()) {\r\n try {\r\n return this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier\r\n });\r\n }\r\n catch (e) {\r\n if (optional) {\r\n return null;\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n }\r\n else {\r\n // In case a component is not initialized and should/can not be auto-initialized at the moment, return null if the optional flag is set, or throw\r\n if (optional) {\r\n return null;\r\n }\r\n else {\r\n throw Error(\"Service \" + this.name + \" is not available\");\r\n }\r\n }\r\n };\r\n Provider.prototype.getComponent = function () {\r\n return this.component;\r\n };\r\n Provider.prototype.setComponent = function (component) {\r\n var e_1, _a;\r\n if (component.name !== this.name) {\r\n throw Error(\"Mismatching Component \" + component.name + \" for Provider \" + this.name + \".\");\r\n }\r\n if (this.component) {\r\n throw Error(\"Component for \" + this.name + \" has already been provided\");\r\n }\r\n this.component = component;\r\n // return early without attempting to initialize the component if the component requires explicit initialization (calling `Provider.initialize()`)\r\n if (!this.shouldAutoInitialize()) {\r\n return;\r\n }\r\n // if the service is eager, initialize the default instance\r\n if (isComponentEager(component)) {\r\n try {\r\n this.getOrInitializeService({ instanceIdentifier: DEFAULT_ENTRY_NAME });\r\n }\r\n catch (e) {\r\n // when the instance factory for an eager Component throws an exception during the eager\r\n // initialization, it should not cause a fatal error.\r\n // TODO: Investigate if we need to make it configurable, because some component may want to cause\r\n // a fatal error in this case?\r\n }\r\n }\r\n try {\r\n // Create service instances for the pending promises and resolve them\r\n // NOTE: if this.multipleInstances is false, only the default instance will be created\r\n // and all promises with resolve with it regardless of the identifier.\r\n for (var _b = __values(this.instancesDeferred.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var _d = __read(_c.value, 2), instanceIdentifier = _d[0], instanceDeferred = _d[1];\r\n var normalizedIdentifier = this.normalizeInstanceIdentifier(instanceIdentifier);\r\n try {\r\n // `getOrInitializeService()` should always return a valid instance since a component is guaranteed. use ! to make typescript happy.\r\n var instance = this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier\r\n });\r\n instanceDeferred.resolve(instance);\r\n }\r\n catch (e) {\r\n // when the instance factory throws an exception, it should not cause\r\n // a fatal error. We just leave the promise unresolved.\r\n }\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n };\r\n Provider.prototype.clearInstance = function (identifier) {\r\n if (identifier === void 0) { identifier = DEFAULT_ENTRY_NAME; }\r\n this.instancesDeferred.delete(identifier);\r\n this.instancesOptions.delete(identifier);\r\n this.instances.delete(identifier);\r\n };\r\n // app.delete() will call this method on every provider to delete the services\r\n // TODO: should we mark the provider as deleted?\r\n Provider.prototype.delete = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var services;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n services = Array.from(this.instances.values());\r\n return [4 /*yield*/, Promise.all(__spreadArray(__spreadArray([], __read(services\r\n .filter(function (service) { return 'INTERNAL' in service; }) // legacy services\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n .map(function (service) { return service.INTERNAL.delete(); }))), __read(services\r\n .filter(function (service) { return '_delete' in service; }) // modularized services\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n .map(function (service) { return service._delete(); }))))];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n Provider.prototype.isComponentSet = function () {\r\n return this.component != null;\r\n };\r\n Provider.prototype.isInitialized = function (identifier) {\r\n if (identifier === void 0) { identifier = DEFAULT_ENTRY_NAME; }\r\n return this.instances.has(identifier);\r\n };\r\n Provider.prototype.getOptions = function (identifier) {\r\n if (identifier === void 0) { identifier = DEFAULT_ENTRY_NAME; }\r\n return this.instancesOptions.get(identifier) || {};\r\n };\r\n Provider.prototype.initialize = function (opts) {\r\n var e_2, _a;\r\n if (opts === void 0) { opts = {}; }\r\n var _b = opts.options, options = _b === void 0 ? {} : _b;\r\n var normalizedIdentifier = this.normalizeInstanceIdentifier(opts.instanceIdentifier);\r\n if (this.isInitialized(normalizedIdentifier)) {\r\n throw Error(this.name + \"(\" + normalizedIdentifier + \") has already been initialized\");\r\n }\r\n if (!this.isComponentSet()) {\r\n throw Error(\"Component \" + this.name + \" has not been registered yet\");\r\n }\r\n var instance = this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier,\r\n options: options\r\n });\r\n try {\r\n // resolve any pending promise waiting for the service instance\r\n for (var _c = __values(this.instancesDeferred.entries()), _d = _c.next(); !_d.done; _d = _c.next()) {\r\n var _e = __read(_d.value, 2), instanceIdentifier = _e[0], instanceDeferred = _e[1];\r\n var normalizedDeferredIdentifier = this.normalizeInstanceIdentifier(instanceIdentifier);\r\n if (normalizedIdentifier === normalizedDeferredIdentifier) {\r\n instanceDeferred.resolve(instance);\r\n }\r\n }\r\n }\r\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\r\n finally {\r\n try {\r\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\r\n }\r\n finally { if (e_2) throw e_2.error; }\r\n }\r\n return instance;\r\n };\r\n /**\r\n *\r\n * @param callback - a function that will be invoked after the provider has been initialized by calling provider.initialize().\r\n * The function is invoked SYNCHRONOUSLY, so it should not execute any longrunning tasks in order to not block the program.\r\n *\r\n * @param identifier An optional instance identifier\r\n * @returns a function to unregister the callback\r\n */\r\n Provider.prototype.onInit = function (callback, identifier) {\r\n var _a;\r\n var normalizedIdentifier = this.normalizeInstanceIdentifier(identifier);\r\n var existingCallbacks = (_a = this.onInitCallbacks.get(normalizedIdentifier)) !== null && _a !== void 0 ? _a : new Set();\r\n existingCallbacks.add(callback);\r\n this.onInitCallbacks.set(normalizedIdentifier, existingCallbacks);\r\n var existingInstance = this.instances.get(normalizedIdentifier);\r\n if (existingInstance) {\r\n callback(existingInstance, normalizedIdentifier);\r\n }\r\n return function () {\r\n existingCallbacks.delete(callback);\r\n };\r\n };\r\n /**\r\n * Invoke onInit callbacks synchronously\r\n * @param instance the service instance`\r\n */\r\n Provider.prototype.invokeOnInitCallbacks = function (instance, identifier) {\r\n var e_3, _a;\r\n var callbacks = this.onInitCallbacks.get(identifier);\r\n if (!callbacks) {\r\n return;\r\n }\r\n try {\r\n for (var callbacks_1 = __values(callbacks), callbacks_1_1 = callbacks_1.next(); !callbacks_1_1.done; callbacks_1_1 = callbacks_1.next()) {\r\n var callback = callbacks_1_1.value;\r\n try {\r\n callback(instance, identifier);\r\n }\r\n catch (_b) {\r\n // ignore errors in the onInit callback\r\n }\r\n }\r\n }\r\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\r\n finally {\r\n try {\r\n if (callbacks_1_1 && !callbacks_1_1.done && (_a = callbacks_1.return)) _a.call(callbacks_1);\r\n }\r\n finally { if (e_3) throw e_3.error; }\r\n }\r\n };\r\n Provider.prototype.getOrInitializeService = function (_a) {\r\n var instanceIdentifier = _a.instanceIdentifier, _b = _a.options, options = _b === void 0 ? {} : _b;\r\n var instance = this.instances.get(instanceIdentifier);\r\n if (!instance && this.component) {\r\n instance = this.component.instanceFactory(this.container, {\r\n instanceIdentifier: normalizeIdentifierForFactory(instanceIdentifier),\r\n options: options\r\n });\r\n this.instances.set(instanceIdentifier, instance);\r\n this.instancesOptions.set(instanceIdentifier, options);\r\n /**\r\n * Invoke onInit listeners.\r\n * Note this.component.onInstanceCreated is different, which is used by the component creator,\r\n * while onInit listeners are registered by consumers of the provider.\r\n */\r\n this.invokeOnInitCallbacks(instance, instanceIdentifier);\r\n /**\r\n * Order is important\r\n * onInstanceCreated() should be called after this.instances.set(instanceIdentifier, instance); which\r\n * makes `isInitialized()` return true.\r\n */\r\n if (this.component.onInstanceCreated) {\r\n try {\r\n this.component.onInstanceCreated(this.container, instanceIdentifier, instance);\r\n }\r\n catch (_c) {\r\n // ignore errors in the onInstanceCreatedCallback\r\n }\r\n }\r\n }\r\n return instance || null;\r\n };\r\n Provider.prototype.normalizeInstanceIdentifier = function (identifier) {\r\n if (identifier === void 0) { identifier = DEFAULT_ENTRY_NAME; }\r\n if (this.component) {\r\n return this.component.multipleInstances ? identifier : DEFAULT_ENTRY_NAME;\r\n }\r\n else {\r\n return identifier; // assume multiple instances are supported before the component is provided.\r\n }\r\n };\r\n Provider.prototype.shouldAutoInitialize = function () {\r\n return (!!this.component &&\r\n this.component.instantiationMode !== \"EXPLICIT\" /* EXPLICIT */);\r\n };\r\n return Provider;\r\n}());\r\n// undefined should be passed to the service factory for the default instance\r\nfunction normalizeIdentifierForFactory(identifier) {\r\n return identifier === DEFAULT_ENTRY_NAME ? undefined : identifier;\r\n}\r\nfunction isComponentEager(component) {\r\n return component.instantiationMode === \"EAGER\" /* EAGER */;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 * ComponentContainer that provides Providers for service name T, e.g. `auth`, `auth-internal`\r\n */\r\nvar ComponentContainer = /** @class */ (function () {\r\n function ComponentContainer(name) {\r\n this.name = name;\r\n this.providers = new Map();\r\n }\r\n /**\r\n *\r\n * @param component Component being added\r\n * @param overwrite When a component with the same name has already been registered,\r\n * if overwrite is true: overwrite the existing component with the new component and create a new\r\n * provider with the new component. It can be useful in tests where you want to use different mocks\r\n * for different tests.\r\n * if overwrite is false: throw an exception\r\n */\r\n ComponentContainer.prototype.addComponent = function (component) {\r\n var provider = this.getProvider(component.name);\r\n if (provider.isComponentSet()) {\r\n throw new Error(\"Component \" + component.name + \" has already been registered with \" + this.name);\r\n }\r\n provider.setComponent(component);\r\n };\r\n ComponentContainer.prototype.addOrOverwriteComponent = function (component) {\r\n var provider = this.getProvider(component.name);\r\n if (provider.isComponentSet()) {\r\n // delete the existing provider from the container, so we can register the new component\r\n this.providers.delete(component.name);\r\n }\r\n this.addComponent(component);\r\n };\r\n /**\r\n * getProvider provides a type safe interface where it can only be called with a field name\r\n * present in NameServiceMapping interface.\r\n *\r\n * Firebase SDKs providing services should extend NameServiceMapping interface to register\r\n * themselves.\r\n */\r\n ComponentContainer.prototype.getProvider = function (name) {\r\n if (this.providers.has(name)) {\r\n return this.providers.get(name);\r\n }\r\n // create a Provider for a service that hasn't registered with Firebase\r\n var provider = new Provider(name, this);\r\n this.providers.set(name, provider);\r\n return provider;\r\n };\r\n ComponentContainer.prototype.getProviders = function () {\r\n return Array.from(this.providers.values());\r\n };\r\n return ComponentContainer;\r\n}());\n\nexport { Component, ComponentContainer, Provider };\n//# sourceMappingURL=index.esm.js.map\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\r\nfunction __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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 _a;\r\n/**\r\n * A container for all of the Logger instances\r\n */\r\nvar instances = [];\r\n/**\r\n * The JS SDK supports 5 log levels and also allows a user the ability to\r\n * silence the logs altogether.\r\n *\r\n * The order is a follows:\r\n * DEBUG < VERBOSE < INFO < WARN < ERROR\r\n *\r\n * All of the log types above the current log level will be captured (i.e. if\r\n * you set the log level to `INFO`, errors will still be logged, but `DEBUG` and\r\n * `VERBOSE` logs will not)\r\n */\r\nvar LogLevel;\r\n(function (LogLevel) {\r\n LogLevel[LogLevel[\"DEBUG\"] = 0] = \"DEBUG\";\r\n LogLevel[LogLevel[\"VERBOSE\"] = 1] = \"VERBOSE\";\r\n LogLevel[LogLevel[\"INFO\"] = 2] = \"INFO\";\r\n LogLevel[LogLevel[\"WARN\"] = 3] = \"WARN\";\r\n LogLevel[LogLevel[\"ERROR\"] = 4] = \"ERROR\";\r\n LogLevel[LogLevel[\"SILENT\"] = 5] = \"SILENT\";\r\n})(LogLevel || (LogLevel = {}));\r\nvar levelStringToEnum = {\r\n 'debug': LogLevel.DEBUG,\r\n 'verbose': LogLevel.VERBOSE,\r\n 'info': LogLevel.INFO,\r\n 'warn': LogLevel.WARN,\r\n 'error': LogLevel.ERROR,\r\n 'silent': LogLevel.SILENT\r\n};\r\n/**\r\n * The default log level\r\n */\r\nvar defaultLogLevel = LogLevel.INFO;\r\n/**\r\n * By default, `console.debug` is not displayed in the developer console (in\r\n * chrome). To avoid forcing users to have to opt-in to these logs twice\r\n * (i.e. once for firebase, and once in the console), we are sending `DEBUG`\r\n * logs to the `console.log` function.\r\n */\r\nvar ConsoleMethod = (_a = {},\r\n _a[LogLevel.DEBUG] = 'log',\r\n _a[LogLevel.VERBOSE] = 'log',\r\n _a[LogLevel.INFO] = 'info',\r\n _a[LogLevel.WARN] = 'warn',\r\n _a[LogLevel.ERROR] = 'error',\r\n _a);\r\n/**\r\n * The default log handler will forward DEBUG, VERBOSE, INFO, WARN, and ERROR\r\n * messages on to their corresponding console counterparts (if the log method\r\n * is supported by the current log level)\r\n */\r\nvar defaultLogHandler = function (instance, logType) {\r\n var args = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n args[_i - 2] = arguments[_i];\r\n }\r\n if (logType < instance.logLevel) {\r\n return;\r\n }\r\n var now = new Date().toISOString();\r\n var method = ConsoleMethod[logType];\r\n if (method) {\r\n console[method].apply(console, __spreadArrays([\"[\" + now + \"] \" + instance.name + \":\"], args));\r\n }\r\n else {\r\n throw new Error(\"Attempted to log a message with an invalid logType (value: \" + logType + \")\");\r\n }\r\n};\r\nvar Logger = /** @class */ (function () {\r\n /**\r\n * Gives you an instance of a Logger to capture messages according to\r\n * Firebase's logging scheme.\r\n *\r\n * @param name The name that the logs will be associated with\r\n */\r\n function Logger(name) {\r\n this.name = name;\r\n /**\r\n * The log level of the given Logger instance.\r\n */\r\n this._logLevel = defaultLogLevel;\r\n /**\r\n * The main (internal) log handler for the Logger instance.\r\n * Can be set to a new function in internal package code but not by user.\r\n */\r\n this._logHandler = defaultLogHandler;\r\n /**\r\n * The optional, additional, user-defined log handler for the Logger instance.\r\n */\r\n this._userLogHandler = null;\r\n /**\r\n * Capture the current instance for later use\r\n */\r\n instances.push(this);\r\n }\r\n Object.defineProperty(Logger.prototype, \"logLevel\", {\r\n get: function () {\r\n return this._logLevel;\r\n },\r\n set: function (val) {\r\n if (!(val in LogLevel)) {\r\n throw new TypeError(\"Invalid value \\\"\" + val + \"\\\" assigned to `logLevel`\");\r\n }\r\n this._logLevel = val;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n // Workaround for setter/getter having to be the same type.\r\n Logger.prototype.setLogLevel = function (val) {\r\n this._logLevel = typeof val === 'string' ? levelStringToEnum[val] : val;\r\n };\r\n Object.defineProperty(Logger.prototype, \"logHandler\", {\r\n get: function () {\r\n return this._logHandler;\r\n },\r\n set: function (val) {\r\n if (typeof val !== 'function') {\r\n throw new TypeError('Value assigned to `logHandler` must be a function');\r\n }\r\n this._logHandler = val;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Logger.prototype, \"userLogHandler\", {\r\n get: function () {\r\n return this._userLogHandler;\r\n },\r\n set: function (val) {\r\n this._userLogHandler = val;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * The functions below are all based on the `console` interface\r\n */\r\n Logger.prototype.debug = 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 this._userLogHandler && this._userLogHandler.apply(this, __spreadArrays([this, LogLevel.DEBUG], args));\r\n this._logHandler.apply(this, __spreadArrays([this, LogLevel.DEBUG], args));\r\n };\r\n Logger.prototype.log = 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 this._userLogHandler && this._userLogHandler.apply(this, __spreadArrays([this, LogLevel.VERBOSE], args));\r\n this._logHandler.apply(this, __spreadArrays([this, LogLevel.VERBOSE], args));\r\n };\r\n Logger.prototype.info = 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 this._userLogHandler && this._userLogHandler.apply(this, __spreadArrays([this, LogLevel.INFO], args));\r\n this._logHandler.apply(this, __spreadArrays([this, LogLevel.INFO], args));\r\n };\r\n Logger.prototype.warn = 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 this._userLogHandler && this._userLogHandler.apply(this, __spreadArrays([this, LogLevel.WARN], args));\r\n this._logHandler.apply(this, __spreadArrays([this, LogLevel.WARN], args));\r\n };\r\n Logger.prototype.error = 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 this._userLogHandler && this._userLogHandler.apply(this, __spreadArrays([this, LogLevel.ERROR], args));\r\n this._logHandler.apply(this, __spreadArrays([this, LogLevel.ERROR], args));\r\n };\r\n return Logger;\r\n}());\r\nfunction setLogLevel(level) {\r\n instances.forEach(function (inst) {\r\n inst.setLogLevel(level);\r\n });\r\n}\r\nfunction setUserLogHandler(logCallback, options) {\r\n var _loop_1 = function (instance) {\r\n var customLogLevel = null;\r\n if (options && options.level) {\r\n customLogLevel = levelStringToEnum[options.level];\r\n }\r\n if (logCallback === null) {\r\n instance.userLogHandler = null;\r\n }\r\n else {\r\n instance.userLogHandler = function (instance, level) {\r\n var args = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n args[_i - 2] = arguments[_i];\r\n }\r\n var message = args\r\n .map(function (arg) {\r\n if (arg == null) {\r\n return null;\r\n }\r\n else if (typeof arg === 'string') {\r\n return arg;\r\n }\r\n else if (typeof arg === 'number' || typeof arg === 'boolean') {\r\n return arg.toString();\r\n }\r\n else if (arg instanceof Error) {\r\n return arg.message;\r\n }\r\n else {\r\n try {\r\n return JSON.stringify(arg);\r\n }\r\n catch (ignored) {\r\n return null;\r\n }\r\n }\r\n })\r\n .filter(function (arg) { return arg; })\r\n .join(' ');\r\n if (level >= (customLogLevel !== null && customLogLevel !== void 0 ? customLogLevel : instance.logLevel)) {\r\n logCallback({\r\n level: LogLevel[level].toLowerCase(),\r\n message: message,\r\n args: args,\r\n type: instance.name\r\n });\r\n }\r\n };\r\n }\r\n };\r\n for (var _i = 0, instances_1 = instances; _i < instances_1.length; _i++) {\r\n var instance = instances_1[_i];\r\n _loop_1(instance);\r\n }\r\n}\n\nexport { LogLevel, Logger, setLogLevel, setUserLogHandler };\n//# sourceMappingURL=index.esm.js.map\n","import { __assign, __extends } from 'tslib';\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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 * @license\r\n * Copyright 2017 Google LLC\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 */\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 */\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 * @license\r\n * Copyright 2017 Google LLC\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$1 = function (str) {\r\n // TODO(user): Use native implementations if/when available\r\n var out = [];\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 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 bytes Array of numbers representing characters.\r\n * @return 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 = [];\r\n var 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// We define it as an object literal instead of a class because a class compiled down to es5 can't\r\n// be treeshaked. https://github.com/rollup/rollup/issues/1691\r\n// Static lookup maps, lazily populated by init_()\r\nvar base64 = {\r\n /**\r\n * Maps bytes to characters.\r\n */\r\n byteToCharMap_: null,\r\n /**\r\n * Maps characters to bytes.\r\n */\r\n charToByteMap_: null,\r\n /**\r\n * Maps bytes to websafe characters.\r\n * @private\r\n */\r\n byteToCharMapWebSafe_: null,\r\n /**\r\n * Maps websafe characters to bytes.\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 */\r\n ENCODED_VALS_BASE: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + 'abcdefghijklmnopqrstuvwxyz' + '0123456789',\r\n /**\r\n * Our default alphabet. Value 64 (=) is special; it means \"nothing.\"\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 */\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 */\r\n HAS_NATIVE_SUPPORT: typeof atob === 'function',\r\n /**\r\n * Base64-encode an array of bytes.\r\n *\r\n * @param input An array of bytes (numbers with\r\n * value in [0, 255]) to encode.\r\n * @param webSafe Boolean indicating we should use the\r\n * alternative alphabet.\r\n * @return The base64 encoded string.\r\n */\r\n encodeByteArray: function (input, 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 = 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 input A string to encode.\r\n * @param webSafe If true, we should use the\r\n * alternative alphabet.\r\n * @return The base64 encoded string.\r\n */\r\n encodeString: function (input, 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 && !webSafe) {\r\n return btoa(input);\r\n }\r\n return this.encodeByteArray(stringToByteArray$1(input), webSafe);\r\n },\r\n /**\r\n * Base64-decode a string.\r\n *\r\n * @param input to decode.\r\n * @param webSafe True if we should use the\r\n * alternative alphabet.\r\n * @return string representing the decoded value.\r\n */\r\n decodeString: function (input, 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 && !webSafe) {\r\n return atob(input);\r\n }\r\n return byteArrayToString(this.decodeStringToByteArray(input, 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 input Input to decode.\r\n * @param webSafe True if we should use the web-safe alphabet.\r\n * @return bytes representing the decoded value.\r\n */\r\n decodeStringToByteArray: function (input, webSafe) {\r\n this.init_();\r\n var charToByteMap = 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 */\r\nvar base64Encode = function (str) {\r\n var utf8Bytes = stringToByteArray$1(str);\r\n return base64.encodeByteArray(utf8Bytes, true);\r\n};\r\n/**\r\n * URL-safe base64 encoding (without \".\" padding in the end).\r\n * e.g. Used in JSON Web Token (JWT) parts.\r\n */\r\nvar base64urlEncodeWithoutPadding = function (str) {\r\n // Use base64url encoding and remove padding in the end (dot characters).\r\n return base64Encode(str).replace(/\\./g, '');\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 str To be decoded\r\n * @return 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 * @license\r\n * Copyright 2017 Google LLC\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\n * Note: we don't merge __proto__ to prevent prototype pollution\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 // use isValidKey to guard against prototype pollution. See https://snyk.io/vuln/SNYK-JS-LODASH-450202\r\n if (!source.hasOwnProperty(prop) || !isValidKey(prop)) {\r\n continue;\r\n }\r\n target[prop] = deepExtend(target[prop], source[prop]);\r\n }\r\n return target;\r\n}\r\nfunction isValidKey(key) {\r\n return key !== '__proto__';\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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.reject = function () { };\r\n this.resolve = function () { };\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 */\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 * @license\r\n * Copyright 2021 Google LLC\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\nfunction createMockUserToken(token, projectId) {\r\n if (token.uid) {\r\n throw new Error('The \"uid\" field is no longer supported by mockUserToken. Please use \"sub\" instead for Firebase Auth User ID.');\r\n }\r\n // Unsecured JWTs use \"none\" as the algorithm.\r\n var header = {\r\n alg: 'none',\r\n type: 'JWT'\r\n };\r\n var project = projectId || 'demo-project';\r\n var iat = token.iat || 0;\r\n var sub = token.sub || token.user_id;\r\n if (!sub) {\r\n throw new Error(\"mockUserToken must contain 'sub' or 'user_id' field!\");\r\n }\r\n var payload = __assign({ \r\n // Set all required fields to decent defaults\r\n iss: \"https://securetoken.google.com/\" + project, aud: project, iat: iat, exp: iat + 3600, auth_time: iat, sub: sub, user_id: sub, firebase: {\r\n sign_in_provider: 'custom',\r\n identities: {}\r\n } }, token);\r\n // Unsecured JWTs use the empty string as a signature.\r\n var signature = '';\r\n return [\r\n base64urlEncodeWithoutPadding(JSON.stringify(header)),\r\n base64urlEncodeWithoutPadding(JSON.stringify(payload)),\r\n signature\r\n ].join('.');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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 user agent string\r\n */\r\nfunction getUA() {\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\r\n * in the Ripple emulator) nor Cordova `onDeviceReady`, which would normally\r\n * wait for a callback.\r\n */\r\nfunction isMobileCordova() {\r\n return (typeof window !== 'undefined' &&\r\n // @ts-ignore Setting up an broadly applicable index signature for Window\r\n // just to deal with this case would probably be a bad idea.\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 Node.js.\r\n *\r\n * @return true if Node.js environment is detected.\r\n */\r\n// Node detection logic from: https://github.com/iliakan/detect-node/\r\nfunction isNode() {\r\n try {\r\n return (Object.prototype.toString.call(global.process) === '[object process]');\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n}\r\n/**\r\n * Detect Browser Environment\r\n */\r\nfunction isBrowser() {\r\n return typeof self === 'object' && self.self === self;\r\n}\r\nfunction isBrowserExtension() {\r\n var runtime = typeof chrome === 'object'\r\n ? chrome.runtime\r\n : typeof browser === 'object'\r\n ? browser.runtime\r\n : undefined;\r\n return typeof runtime === 'object' && runtime.id !== undefined;\r\n}\r\n/**\r\n * Detect React Native.\r\n *\r\n * @return true if ReactNative environment is detected.\r\n */\r\nfunction isReactNative() {\r\n return (typeof navigator === 'object' && navigator['product'] === 'ReactNative');\r\n}\r\n/** Detects Electron apps. */\r\nfunction isElectron() {\r\n return getUA().indexOf('Electron/') >= 0;\r\n}\r\n/** Detects Internet Explorer. */\r\nfunction isIE() {\r\n var ua = getUA();\r\n return ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\r\n}\r\n/** Detects Universal Windows Platform apps. */\r\nfunction isUWP() {\r\n return getUA().indexOf('MSAppHost/') >= 0;\r\n}\r\n/**\r\n * Detect whether the current SDK build is the Node version.\r\n *\r\n * @return true if it's the Node SDK build.\r\n */\r\nfunction isNodeSdk() {\r\n return CONSTANTS.NODE_CLIENT === true || CONSTANTS.NODE_ADMIN === true;\r\n}\r\n/** Returns true if we are running in Safari. */\r\nfunction isSafari() {\r\n return (!isNode() &&\r\n navigator.userAgent.includes('Safari') &&\r\n !navigator.userAgent.includes('Chrome'));\r\n}\r\n/**\r\n * This method checks if indexedDB is supported by current browser/service worker context\r\n * @return true if indexedDB is supported by current browser/service worker context\r\n */\r\nfunction isIndexedDBAvailable() {\r\n return 'indexedDB' in self && indexedDB != null;\r\n}\r\n/**\r\n * This method validates browser/sw context for indexedDB by opening a dummy indexedDB database and reject\r\n * if errors occur during the database open operation.\r\n *\r\n * @throws exception if current browser/sw context can't run idb.open (ex: Safari iframe, Firefox\r\n * private browsing)\r\n */\r\nfunction validateIndexedDBOpenable() {\r\n return new Promise(function (resolve, reject) {\r\n try {\r\n var preExist_1 = true;\r\n var DB_CHECK_NAME_1 = 'validate-browser-context-for-indexeddb-analytics-module';\r\n var request_1 = self.indexedDB.open(DB_CHECK_NAME_1);\r\n request_1.onsuccess = function () {\r\n request_1.result.close();\r\n // delete database only when it doesn't pre-exist\r\n if (!preExist_1) {\r\n self.indexedDB.deleteDatabase(DB_CHECK_NAME_1);\r\n }\r\n resolve(true);\r\n };\r\n request_1.onupgradeneeded = function () {\r\n preExist_1 = false;\r\n };\r\n request_1.onerror = function () {\r\n var _a;\r\n reject(((_a = request_1.error) === null || _a === void 0 ? void 0 : _a.message) || '');\r\n };\r\n }\r\n catch (error) {\r\n reject(error);\r\n }\r\n });\r\n}\r\n/**\r\n *\r\n * This method checks whether cookie is enabled within current browser\r\n * @return true if cookie is enabled within current browser\r\n */\r\nfunction areCookiesEnabled() {\r\n if (!navigator || !navigator.cookieEnabled) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n/**\r\n * Polyfill for `globalThis` object.\r\n * @returns the `globalThis` object for the given environment.\r\n */\r\nfunction getGlobal() {\r\n if (typeof self !== 'undefined') {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined') {\r\n return window;\r\n }\r\n if (typeof global !== 'undefined') {\r\n return global;\r\n }\r\n throw new Error('Unable to locate global object.');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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 ERROR_NAME = 'FirebaseError';\r\n// Based on code from:\r\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Custom_Error_Types\r\nvar FirebaseError = /** @class */ (function (_super) {\r\n __extends(FirebaseError, _super);\r\n function FirebaseError(code, message, customData) {\r\n var _this = _super.call(this, message) || this;\r\n _this.code = code;\r\n _this.customData = customData;\r\n _this.name = ERROR_NAME;\r\n // Fix For ES5\r\n // https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\r\n Object.setPrototypeOf(_this, FirebaseError.prototype);\r\n // Maintains proper stack trace for where our error was thrown.\r\n // Only available on V8.\r\n if (Error.captureStackTrace) {\r\n Error.captureStackTrace(_this, ErrorFactory.prototype.create);\r\n }\r\n return _this;\r\n }\r\n return FirebaseError;\r\n}(Error));\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 }\r\n ErrorFactory.prototype.create = function (code) {\r\n var data = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n data[_i - 1] = arguments[_i];\r\n }\r\n var customData = data[0] || {};\r\n var fullCode = this.service + \"/\" + code;\r\n var template = this.errors[code];\r\n var message = template ? replaceTemplate(template, customData) : 'Error';\r\n // Service Name: Error message (service/code).\r\n var fullMessage = this.serviceName + \": \" + message + \" (\" + fullCode + \").\";\r\n var error = new FirebaseError(fullCode, fullMessage, customData);\r\n return error;\r\n };\r\n return ErrorFactory;\r\n}());\r\nfunction replaceTemplate(template, data) {\r\n return template.replace(PATTERN, function (_, key) {\r\n var value = data[key];\r\n return value != null ? String(value) : \"<\" + key + \"?>\";\r\n });\r\n}\r\nvar PATTERN = /\\{\\$([^}]+)}/g;\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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 * @license\r\n * Copyright 2017 Google LLC\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\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\nvar isValidTimestamp = function (token) {\r\n var claims = decode(token).claims;\r\n var now = Math.floor(new Date().getTime() / 1000);\r\n var validSince = 0, validUntil = 0;\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 &&\r\n !!validSince &&\r\n !!validUntil &&\r\n now >= validSince &&\r\n 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\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.\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\nvar isValidFormat = function (token) {\r\n var decoded = decode(token), claims = decoded.claims;\r\n return !!claims && typeof claims === 'object' && 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\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 * @license\r\n * Copyright 2017 Google LLC\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\nfunction contains(obj, key) {\r\n return Object.prototype.hasOwnProperty.call(obj, key);\r\n}\r\nfunction safeGet(obj, key) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n return obj[key];\r\n }\r\n else {\r\n return undefined;\r\n }\r\n}\r\nfunction isEmpty(obj) {\r\n for (var key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction map(obj, fn, contextObj) {\r\n var res = {};\r\n for (var key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n res[key] = fn.call(contextObj, obj[key], key, obj);\r\n }\r\n }\r\n return res;\r\n}\r\n/**\r\n * Deep equal two objects. Support Arrays and Objects.\r\n */\r\nfunction deepEqual(a, b) {\r\n if (a === b) {\r\n return true;\r\n }\r\n var aKeys = Object.keys(a);\r\n var bKeys = Object.keys(b);\r\n for (var _i = 0, aKeys_1 = aKeys; _i < aKeys_1.length; _i++) {\r\n var k = aKeys_1[_i];\r\n if (!bKeys.includes(k)) {\r\n return false;\r\n }\r\n var aProp = a[k];\r\n var bProp = b[k];\r\n if (isObject(aProp) && isObject(bProp)) {\r\n if (!deepEqual(aProp, bProp)) {\r\n return false;\r\n }\r\n }\r\n else if (aProp !== bProp) {\r\n return false;\r\n }\r\n }\r\n for (var _a = 0, bKeys_1 = bKeys; _a < bKeys_1.length; _a++) {\r\n var k = bKeys_1[_a];\r\n if (!aKeys.includes(k)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction isObject(thing) {\r\n return thing !== null && typeof thing === 'object';\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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\r\n * params object (e.g. {arg: 'val', arg2: 'val2'})\r\n * Note: You must prepend it with ? when adding it to a URL.\r\n */\r\nfunction querystring(querystringParams) {\r\n var params = [];\r\n var _loop_1 = 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 for (var _i = 0, _a = Object.entries(querystringParams); _i < _a.length; _i++) {\r\n var _b = _a[_i], key = _b[0], value = _b[1];\r\n _loop_1(key, value);\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\r\n * (e.g. {arg: 'val', arg2: 'val2'})\r\n */\r\nfunction querystringDecode(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 _a = token.split('='), key = _a[0], value = _a[1];\r\n obj[decodeURIComponent(key)] = decodeURIComponent(value);\r\n }\r\n });\r\n return obj;\r\n}\r\n/**\r\n * Extract the query string part of a URL, including the leading question mark (if present).\r\n */\r\nfunction extractQuerystring(url) {\r\n var queryStart = url.indexOf('?');\r\n if (!queryStart) {\r\n return '';\r\n }\r\n var fragmentStart = url.indexOf('#', queryStart);\r\n return url.substring(queryStart, fragmentStart > 0 ? fragmentStart : undefined);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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 * @final\r\n * @struct\r\n */\r\nvar Sha1 = /** @class */ (function () {\r\n function Sha1() {\r\n /**\r\n * Holds the previous values of accumulated variables a-e in the compress_\r\n * function.\r\n * @private\r\n */\r\n this.chain_ = [];\r\n /**\r\n * A buffer holding the partially computed hash result.\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 * @private\r\n */\r\n this.W_ = [];\r\n /**\r\n * Contains data needed to pad messages less than 64 bytes.\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 }\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 buf Block to compress.\r\n * @param offset Offset of the block in the buffer.\r\n * @private\r\n */\r\n Sha1.prototype.compress_ = function (buf, offset) {\r\n if (!offset) {\r\n 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(offset) << 24) |\r\n (buf.charCodeAt(offset + 1) << 16) |\r\n (buf.charCodeAt(offset + 2) << 8) |\r\n buf.charCodeAt(offset + 3);\r\n 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[offset] << 24) |\r\n (buf[offset + 1] << 16) |\r\n (buf[offset + 2] << 8) |\r\n buf[offset + 3];\r\n 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, 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 (length === undefined) {\r\n length = bytes.length;\r\n }\r\n var lengthMinusBlock = 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 < 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 < 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 < 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_ += 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}());\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, [\r\n 'next',\r\n 'error',\r\n 'complete'\r\n ])) {\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 // eslint-disable-next-line @typescript-eslint/no-floating-promises\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 // eslint-disable-next-line @typescript-eslint/no-floating-promises\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 // eslint-disable-next-line @typescript-eslint/no-floating-promises\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\n// eslint-disable-next-line @typescript-eslint/ban-types\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 * @license\r\n * Copyright 2017 Google LLC\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 fnName The function name\r\n * @param minCount The minimum number of arguments to allow for the function call\r\n * @param maxCount The maximum number of argument to allow for the function call\r\n * @param 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 fnName The function name\r\n * @param argName The name of the argument\r\n * @return The prefix to add to the error thrown for validation.\r\n */\r\nfunction errorPrefix(fnName, argName) {\r\n return fnName + \" failed: \" + argName + \" argument \";\r\n}\r\n/**\r\n * @param fnName\r\n * @param argumentNumber\r\n * @param namespace\r\n * @param optional\r\n */\r\nfunction validateNamespace(fnName, namespace, optional) {\r\n if (optional && !namespace) {\r\n return;\r\n }\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, 'namespace') + 'must be a valid firebase namespace.');\r\n }\r\n}\r\nfunction validateCallback(fnName, argumentName, \r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\ncallback, optional) {\r\n if (optional && !callback) {\r\n return;\r\n }\r\n if (typeof callback !== 'function') {\r\n throw new Error(errorPrefix(fnName, argumentName) + 'must be a valid function.');\r\n }\r\n}\r\nfunction validateContextObject(fnName, argumentName, context, optional) {\r\n if (optional && !context) {\r\n return;\r\n }\r\n if (typeof context !== 'object' || context === null) {\r\n throw new Error(errorPrefix(fnName, argumentName) + 'must be a valid context object.');\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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 = function (str) {\r\n var out = [];\r\n var 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 * @license\r\n * Copyright 2019 Google LLC\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 * The amount of milliseconds to exponentially increase.\r\n */\r\nvar DEFAULT_INTERVAL_MILLIS = 1000;\r\n/**\r\n * The factor to backoff by.\r\n * Should be a number greater than 1.\r\n */\r\nvar DEFAULT_BACKOFF_FACTOR = 2;\r\n/**\r\n * The maximum milliseconds to increase to.\r\n *\r\n *

Visible for testing\r\n */\r\nvar MAX_VALUE_MILLIS = 4 * 60 * 60 * 1000; // Four hours, like iOS and Android.\r\n/**\r\n * The percentage of backoff time to randomize by.\r\n * See\r\n * http://go/safe-client-behavior#step-1-determine-the-appropriate-retry-interval-to-handle-spike-traffic\r\n * for context.\r\n *\r\n *

Visible for testing\r\n */\r\nvar RANDOM_FACTOR = 0.5;\r\n/**\r\n * Based on the backoff method from\r\n * https://github.com/google/closure-library/blob/master/closure/goog/math/exponentialbackoff.js.\r\n * Extracted here so we don't need to pass metadata and a stateful ExponentialBackoff object around.\r\n */\r\nfunction calculateBackoffMillis(backoffCount, intervalMillis, backoffFactor) {\r\n if (intervalMillis === void 0) { intervalMillis = DEFAULT_INTERVAL_MILLIS; }\r\n if (backoffFactor === void 0) { backoffFactor = DEFAULT_BACKOFF_FACTOR; }\r\n // Calculates an exponentially increasing value.\r\n // Deviation: calculates value from count and a constant interval, so we only need to save value\r\n // and count to restore state.\r\n var currBaseValue = intervalMillis * Math.pow(backoffFactor, backoffCount);\r\n // A random \"fuzz\" to avoid waves of retries.\r\n // Deviation: randomFactor is required.\r\n var randomWait = Math.round(\r\n // A fraction of the backoff value to add/subtract.\r\n // Deviation: changes multiplication order to improve readability.\r\n RANDOM_FACTOR *\r\n currBaseValue *\r\n // A random float (rounded to int by Math.round above) in the range [-1, 1]. Determines\r\n // if we add or subtract.\r\n (Math.random() - 0.5) *\r\n 2);\r\n // Limits backoff to max to avoid effectively permanent backoff.\r\n return Math.min(MAX_VALUE_MILLIS, currBaseValue + randomWait);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\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 * Provide English ordinal letters after a number\r\n */\r\nfunction ordinal(i) {\r\n if (!Number.isFinite(i)) {\r\n return \"\" + i;\r\n }\r\n return i + indicator(i);\r\n}\r\nfunction indicator(i) {\r\n i = Math.abs(i);\r\n var cent = i % 100;\r\n if (cent >= 10 && cent <= 20) {\r\n return 'th';\r\n }\r\n var dec = i % 10;\r\n if (dec === 1) {\r\n return 'st';\r\n }\r\n if (dec === 2) {\r\n return 'nd';\r\n }\r\n if (dec === 3) {\r\n return 'rd';\r\n }\r\n return 'th';\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\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\nfunction getModularInstance(service) {\r\n if (service && service._delegate) {\r\n return service._delegate;\r\n }\r\n else {\r\n return service;\r\n }\r\n}\n\nexport { CONSTANTS, Deferred, ErrorFactory, FirebaseError, MAX_VALUE_MILLIS, RANDOM_FACTOR, Sha1, areCookiesEnabled, assert, assertionError, async, base64, base64Decode, base64Encode, base64urlEncodeWithoutPadding, calculateBackoffMillis, contains, createMockUserToken, createSubscribe, decode, deepCopy, deepEqual, deepExtend, errorPrefix, extractQuerystring, getGlobal, getModularInstance, getUA, isAdmin, isBrowser, isBrowserExtension, isElectron, isEmpty, isIE, isIndexedDBAvailable, isMobileCordova, isNode, isNodeSdk, isReactNative, isSafari, isUWP, isValidFormat, isValidTimestamp, issuedAtTime, jsonEval, map, ordinal, querystring, querystringDecode, safeGet, stringLength, stringToByteArray, stringify, validateArgCount, validateCallback, validateContextObject, validateIndexedDBOpenable, validateNamespace };\n//# sourceMappingURL=index.esm.js.map\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n 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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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\nfunction __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") 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 throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nvar k, goog = goog || {}, l = commonjsGlobal || self;\r\nfunction aa() { }\r\nfunction ba(a) { var b = typeof a; b = \"object\" != b ? b : a ? Array.isArray(a) ? \"array\" : b : \"null\"; return \"array\" == b || \"object\" == b && \"number\" == typeof a.length; }\r\nfunction p(a) { var b = typeof a; return \"object\" == b && null != a || \"function\" == b; }\r\nfunction da(a) { return Object.prototype.hasOwnProperty.call(a, ea) && a[ea] || (a[ea] = ++fa); }\r\nvar ea = \"closure_uid_\" + (1E9 * Math.random() >>> 0), fa = 0;\r\nfunction ha(a, b, c) { return a.call.apply(a.bind, arguments); }\r\nfunction ia(a, b, c) { if (!a)\r\n throw Error(); if (2 < arguments.length) {\r\n var d = Array.prototype.slice.call(arguments, 2);\r\n return function () { var e = Array.prototype.slice.call(arguments); Array.prototype.unshift.apply(e, d); return a.apply(b, e); };\r\n} return function () { return a.apply(b, arguments); }; }\r\nfunction q(a, b, c) { Function.prototype.bind && -1 != Function.prototype.bind.toString().indexOf(\"native code\") ? q = ha : q = ia; return q.apply(null, arguments); }\r\nfunction ja(a, b) { var c = Array.prototype.slice.call(arguments, 1); return function () { var d = c.slice(); d.push.apply(d, arguments); return a.apply(this, d); }; }\r\nfunction t(a, b) { function c() { } c.prototype = b.prototype; a.Z = b.prototype; a.prototype = new c; a.prototype.constructor = a; a.Vb = function (d, e, f) { for (var h = Array(arguments.length - 2), n = 2; n < arguments.length; n++)\r\n h[n - 2] = arguments[n]; return b.prototype[e].apply(d, h); }; }\r\nfunction v() { this.s = this.s; this.o = this.o; }\r\nvar ka = 0, la = {};\r\nv.prototype.s = !1;\r\nv.prototype.na = function () { if (!this.s && (this.s = !0, this.M(), 0 != ka)) {\r\n var a = da(this);\r\n delete la[a];\r\n} };\r\nv.prototype.M = function () { if (this.o)\r\n for (; this.o.length;)\r\n this.o.shift()(); };\r\nvar ma = Array.prototype.indexOf ? function (a, b) { return Array.prototype.indexOf.call(a, b, void 0); } : function (a, b) { if (\"string\" === typeof a)\r\n return \"string\" !== typeof b || 1 != b.length ? -1 : a.indexOf(b, 0); for (var c = 0; c < a.length; c++)\r\n if (c in a && a[c] === b)\r\n return c; return -1; }, na = Array.prototype.forEach ? function (a, b, c) { Array.prototype.forEach.call(a, b, c); } : function (a, b, c) { var d = a.length, e = \"string\" === typeof a ? a.split(\"\") : a; for (var f = 0; f < d; f++)\r\n f in e && b.call(c, e[f], f, a); };\r\nfunction oa(a) { a: {\r\n var b = pa;\r\n var c = a.length, d = \"string\" === typeof a ? a.split(\"\") : a;\r\n for (var e = 0; e < c; e++)\r\n if (e in d && b.call(void 0, d[e], e, a)) {\r\n b = e;\r\n break a;\r\n }\r\n b = -1;\r\n} return 0 > b ? null : \"string\" === typeof a ? a.charAt(b) : a[b]; }\r\nfunction qa(a) { return Array.prototype.concat.apply([], arguments); }\r\nfunction ra(a) { var b = a.length; if (0 < b) {\r\n var c = Array(b);\r\n for (var d = 0; d < b; d++)\r\n c[d] = a[d];\r\n return c;\r\n} return []; }\r\nfunction sa(a) { return /^[\\s\\xa0]*$/.test(a); }\r\nvar ta = String.prototype.trim ? function (a) { return a.trim(); } : function (a) { return /^[\\s\\xa0]*([\\s\\S]*?)[\\s\\xa0]*$/.exec(a)[1]; };\r\nfunction w(a, b) { return -1 != a.indexOf(b); }\r\nfunction ua(a, b) { return a < b ? -1 : a > b ? 1 : 0; }\r\nvar x;\r\na: {\r\n var va = l.navigator;\r\n if (va) {\r\n var wa = va.userAgent;\r\n if (wa) {\r\n x = wa;\r\n break a;\r\n }\r\n }\r\n x = \"\";\r\n}\r\nfunction xa(a, b, c) { for (var d in a)\r\n b.call(c, a[d], d, a); }\r\nfunction ya(a) { var b = {}; for (var c in a)\r\n b[c] = a[c]; return b; }\r\nvar za = \"constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf\".split(\" \");\r\nfunction Aa(a, b) { var c, d; for (var e = 1; e < arguments.length; e++) {\r\n d = arguments[e];\r\n for (c in d)\r\n a[c] = d[c];\r\n for (var f = 0; f < za.length; f++)\r\n c = za[f], Object.prototype.hasOwnProperty.call(d, c) && (a[c] = d[c]);\r\n} }\r\nfunction Ca(a) { Ca[\" \"](a); return a; }\r\nCa[\" \"] = aa;\r\nfunction Fa(a) { var b = Ga; return Object.prototype.hasOwnProperty.call(b, 9) ? b[9] : b[9] = a(9); }\r\nvar Ha = w(x, \"Opera\"), y = w(x, \"Trident\") || w(x, \"MSIE\"), Ia = w(x, \"Edge\"), Ja = Ia || y, Ka = w(x, \"Gecko\") && !(w(x.toLowerCase(), \"webkit\") && !w(x, \"Edge\")) && !(w(x, \"Trident\") || w(x, \"MSIE\")) && !w(x, \"Edge\"), La = w(x.toLowerCase(), \"webkit\") && !w(x, \"Edge\");\r\nfunction Ma() { var a = l.document; return a ? a.documentMode : void 0; }\r\nvar Na;\r\na: {\r\n var Oa = \"\", Pa = function () { var a = x; if (Ka)\r\n return /rv:([^\\);]+)(\\)|;)/.exec(a); if (Ia)\r\n return /Edge\\/([\\d\\.]+)/.exec(a); if (y)\r\n return /\\b(?:MSIE|rv)[: ]([^\\);]+)(\\)|;)/.exec(a); if (La)\r\n return /WebKit\\/(\\S+)/.exec(a); if (Ha)\r\n return /(?:Version)[ \\/]?(\\S+)/.exec(a); }();\r\n Pa && (Oa = Pa ? Pa[1] : \"\");\r\n if (y) {\r\n var Qa = Ma();\r\n if (null != Qa && Qa > parseFloat(Oa)) {\r\n Na = String(Qa);\r\n break a;\r\n }\r\n }\r\n Na = Oa;\r\n}\r\nvar Ga = {};\r\nfunction Ra() { return Fa(function () { var a = 0; var b = ta(String(Na)).split(\".\"), c = ta(\"9\").split(\".\"), d = Math.max(b.length, c.length); for (var h = 0; 0 == a && h < d; h++) {\r\n var e = b[h] || \"\", f = c[h] || \"\";\r\n do {\r\n e = /(\\d*)(\\D*)(.*)/.exec(e) || [\"\", \"\", \"\", \"\"];\r\n f = /(\\d*)(\\D*)(.*)/.exec(f) || [\"\", \"\", \"\", \"\"];\r\n if (0 == e[0].length && 0 == f[0].length)\r\n break;\r\n a = ua(0 == e[1].length ? 0 : parseInt(e[1], 10), 0 == f[1].length ? 0 : parseInt(f[1], 10)) || ua(0 == e[2].length, 0 == f[2].length) || ua(e[2], f[2]);\r\n e = e[3];\r\n f = f[3];\r\n } while (0 == a);\r\n} return 0 <= a; }); }\r\nvar Sa;\r\nif (l.document && y) {\r\n var Ta = Ma();\r\n Sa = Ta ? Ta : parseInt(Na, 10) || void 0;\r\n}\r\nelse\r\n Sa = void 0;\r\nvar Ua = Sa;\r\nvar Va = function () { if (!l.addEventListener || !Object.defineProperty)\r\n return !1; var a = !1, b = Object.defineProperty({}, \"passive\", { get: function () { a = !0; } }); try {\r\n l.addEventListener(\"test\", aa, b), l.removeEventListener(\"test\", aa, b);\r\n}\r\ncatch (c) { } return a; }();\r\nfunction z(a, b) { this.type = a; this.g = this.target = b; this.defaultPrevented = !1; }\r\nz.prototype.h = function () { this.defaultPrevented = !0; };\r\nfunction A(a, b) {\r\n z.call(this, a ? a.type : \"\");\r\n this.relatedTarget = this.g = this.target = null;\r\n this.button = this.screenY = this.screenX = this.clientY = this.clientX = 0;\r\n this.key = \"\";\r\n this.metaKey = this.shiftKey = this.altKey = this.ctrlKey = !1;\r\n this.state = null;\r\n this.pointerId = 0;\r\n this.pointerType = \"\";\r\n this.i = null;\r\n if (a) {\r\n var c = this.type = a.type, d = a.changedTouches && a.changedTouches.length ? a.changedTouches[0] : null;\r\n this.target = a.target || a.srcElement;\r\n this.g = b;\r\n if (b = a.relatedTarget) {\r\n if (Ka) {\r\n a: {\r\n try {\r\n Ca(b.nodeName);\r\n var e = !0;\r\n break a;\r\n }\r\n catch (f) { }\r\n e =\r\n !1;\r\n }\r\n e || (b = null);\r\n }\r\n }\r\n else\r\n \"mouseover\" == c ? b = a.fromElement : \"mouseout\" == c && (b = a.toElement);\r\n this.relatedTarget = b;\r\n d ? (this.clientX = void 0 !== d.clientX ? d.clientX : d.pageX, this.clientY = void 0 !== d.clientY ? d.clientY : d.pageY, this.screenX = d.screenX || 0, this.screenY = d.screenY || 0) : (this.clientX = void 0 !== a.clientX ? a.clientX : a.pageX, this.clientY = void 0 !== a.clientY ? a.clientY : a.pageY, this.screenX = a.screenX || 0, this.screenY = a.screenY || 0);\r\n this.button = a.button;\r\n this.key = a.key || \"\";\r\n this.ctrlKey = a.ctrlKey;\r\n this.altKey = a.altKey;\r\n this.shiftKey =\r\n a.shiftKey;\r\n this.metaKey = a.metaKey;\r\n this.pointerId = a.pointerId || 0;\r\n this.pointerType = \"string\" === typeof a.pointerType ? a.pointerType : Wa[a.pointerType] || \"\";\r\n this.state = a.state;\r\n this.i = a;\r\n a.defaultPrevented && A.Z.h.call(this);\r\n }\r\n}\r\nt(A, z);\r\nvar Wa = { 2: \"touch\", 3: \"pen\", 4: \"mouse\" };\r\nA.prototype.h = function () { A.Z.h.call(this); var a = this.i; a.preventDefault ? a.preventDefault() : a.returnValue = !1; };\r\nvar B = \"closure_listenable_\" + (1E6 * Math.random() | 0);\r\nvar Xa = 0;\r\nfunction Ya(a, b, c, d, e) { this.listener = a; this.proxy = null; this.src = b; this.type = c; this.capture = !!d; this.ia = e; this.key = ++Xa; this.ca = this.fa = !1; }\r\nfunction Za(a) { a.ca = !0; a.listener = null; a.proxy = null; a.src = null; a.ia = null; }\r\nfunction $a(a) { this.src = a; this.g = {}; this.h = 0; }\r\n$a.prototype.add = function (a, b, c, d, e) { var f = a.toString(); a = this.g[f]; a || (a = this.g[f] = [], this.h++); var h = ab(a, b, d, e); -1 < h ? (b = a[h], c || (b.fa = !1)) : (b = new Ya(b, this.src, f, !!d, e), b.fa = c, a.push(b)); return b; };\r\nfunction bb(a, b) { var c = b.type; if (c in a.g) {\r\n var d = a.g[c], e = ma(d, b), f;\r\n (f = 0 <= e) && Array.prototype.splice.call(d, e, 1);\r\n f && (Za(b), 0 == a.g[c].length && (delete a.g[c], a.h--));\r\n} }\r\nfunction ab(a, b, c, d) { for (var e = 0; e < a.length; ++e) {\r\n var f = a[e];\r\n if (!f.ca && f.listener == b && f.capture == !!c && f.ia == d)\r\n return e;\r\n} return -1; }\r\nvar cb = \"closure_lm_\" + (1E6 * Math.random() | 0), db = {};\r\nfunction fb(a, b, c, d, e) { if (d && d.once)\r\n return gb(a, b, c, d, e); if (Array.isArray(b)) {\r\n for (var f = 0; f < b.length; f++)\r\n fb(a, b[f], c, d, e);\r\n return null;\r\n} c = hb(c); return a && a[B] ? a.N(b, c, p(d) ? !!d.capture : !!d, e) : ib(a, b, c, !1, d, e); }\r\nfunction ib(a, b, c, d, e, f) { if (!b)\r\n throw Error(\"Invalid event type\"); var h = p(e) ? !!e.capture : !!e, n = jb(a); n || (a[cb] = n = new $a(a)); c = n.add(b, c, d, h, f); if (c.proxy)\r\n return c; d = kb(); c.proxy = d; d.src = a; d.listener = c; if (a.addEventListener)\r\n Va || (e = h), void 0 === e && (e = !1), a.addEventListener(b.toString(), d, e);\r\nelse if (a.attachEvent)\r\n a.attachEvent(lb(b.toString()), d);\r\nelse if (a.addListener && a.removeListener)\r\n a.addListener(d);\r\nelse\r\n throw Error(\"addEventListener and attachEvent are unavailable.\"); return c; }\r\nfunction kb() { function a(c) { return b.call(a.src, a.listener, c); } var b = mb; return a; }\r\nfunction gb(a, b, c, d, e) { if (Array.isArray(b)) {\r\n for (var f = 0; f < b.length; f++)\r\n gb(a, b[f], c, d, e);\r\n return null;\r\n} c = hb(c); return a && a[B] ? a.O(b, c, p(d) ? !!d.capture : !!d, e) : ib(a, b, c, !0, d, e); }\r\nfunction nb(a, b, c, d, e) { if (Array.isArray(b))\r\n for (var f = 0; f < b.length; f++)\r\n nb(a, b[f], c, d, e);\r\nelse\r\n (d = p(d) ? !!d.capture : !!d, c = hb(c), a && a[B]) ? (a = a.i, b = String(b).toString(), b in a.g && (f = a.g[b], c = ab(f, c, d, e), -1 < c && (Za(f[c]), Array.prototype.splice.call(f, c, 1), 0 == f.length && (delete a.g[b], a.h--)))) : a && (a = jb(a)) && (b = a.g[b.toString()], a = -1, b && (a = ab(b, c, d, e)), (c = -1 < a ? b[a] : null) && ob(c)); }\r\nfunction ob(a) { if (\"number\" !== typeof a && a && !a.ca) {\r\n var b = a.src;\r\n if (b && b[B])\r\n bb(b.i, a);\r\n else {\r\n var c = a.type, d = a.proxy;\r\n b.removeEventListener ? b.removeEventListener(c, d, a.capture) : b.detachEvent ? b.detachEvent(lb(c), d) : b.addListener && b.removeListener && b.removeListener(d);\r\n (c = jb(b)) ? (bb(c, a), 0 == c.h && (c.src = null, b[cb] = null)) : Za(a);\r\n }\r\n} }\r\nfunction lb(a) { return a in db ? db[a] : db[a] = \"on\" + a; }\r\nfunction mb(a, b) { if (a.ca)\r\n a = !0;\r\nelse {\r\n b = new A(b, this);\r\n var c = a.listener, d = a.ia || a.src;\r\n a.fa && ob(a);\r\n a = c.call(d, b);\r\n} return a; }\r\nfunction jb(a) { a = a[cb]; return a instanceof $a ? a : null; }\r\nvar pb = \"__closure_events_fn_\" + (1E9 * Math.random() >>> 0);\r\nfunction hb(a) { if (\"function\" === typeof a)\r\n return a; a[pb] || (a[pb] = function (b) { return a.handleEvent(b); }); return a[pb]; }\r\nfunction C() { v.call(this); this.i = new $a(this); this.P = this; this.I = null; }\r\nt(C, v);\r\nC.prototype[B] = !0;\r\nC.prototype.removeEventListener = function (a, b, c, d) { nb(this, a, b, c, d); };\r\nfunction D(a, b) { var c, d = a.I; if (d)\r\n for (c = []; d; d = d.I)\r\n c.push(d); a = a.P; d = b.type || b; if (\"string\" === typeof b)\r\n b = new z(b, a);\r\nelse if (b instanceof z)\r\n b.target = b.target || a;\r\nelse {\r\n var e = b;\r\n b = new z(d, a);\r\n Aa(b, e);\r\n} e = !0; if (c)\r\n for (var f = c.length - 1; 0 <= f; f--) {\r\n var h = b.g = c[f];\r\n e = qb(h, d, !0, b) && e;\r\n } h = b.g = a; e = qb(h, d, !0, b) && e; e = qb(h, d, !1, b) && e; if (c)\r\n for (f = 0; f < c.length; f++)\r\n h = b.g = c[f], e = qb(h, d, !1, b) && e; }\r\nC.prototype.M = function () { C.Z.M.call(this); if (this.i) {\r\n var a = this.i, c;\r\n for (c in a.g) {\r\n for (var d = a.g[c], e = 0; e < d.length; e++)\r\n Za(d[e]);\r\n delete a.g[c];\r\n a.h--;\r\n }\r\n} this.I = null; };\r\nC.prototype.N = function (a, b, c, d) { return this.i.add(String(a), b, !1, c, d); };\r\nC.prototype.O = function (a, b, c, d) { return this.i.add(String(a), b, !0, c, d); };\r\nfunction qb(a, b, c, d) { b = a.i.g[String(b)]; if (!b)\r\n return !0; b = b.concat(); for (var e = !0, f = 0; f < b.length; ++f) {\r\n var h = b[f];\r\n if (h && !h.ca && h.capture == c) {\r\n var n = h.listener, u = h.ia || h.src;\r\n h.fa && bb(a.i, h);\r\n e = !1 !== n.call(u, d) && e;\r\n }\r\n} return e && !d.defaultPrevented; }\r\nvar rb = l.JSON.stringify;\r\nfunction sb() { var a = tb; var b = null; a.g && (b = a.g, a.g = a.g.next, a.g || (a.h = null), b.next = null); return b; }\r\nvar ub = /** @class */ (function () {\r\n function ub() {\r\n this.h = this.g = null;\r\n }\r\n ub.prototype.add = function (a, b) { var c = vb.get(); c.set(a, b); this.h ? this.h.next = c : this.g = c; this.h = c; };\r\n return ub;\r\n}());\r\nvar vb = new /** @class */ (function () {\r\n function class_2(a, b) {\r\n this.i = a;\r\n this.j = b;\r\n this.h = 0;\r\n this.g = null;\r\n }\r\n class_2.prototype.get = function () { var a; 0 < this.h ? (this.h--, a = this.g, this.g = a.next, a.next = null) : a = this.i(); return a; };\r\n return class_2;\r\n}())(function () { return new wb; }, function (a) { return a.reset(); });\r\nvar wb = /** @class */ (function () {\r\n function wb() {\r\n this.next = this.g = this.h = null;\r\n }\r\n wb.prototype.set = function (a, b) { this.h = a; this.g = b; this.next = null; };\r\n wb.prototype.reset = function () { this.next = this.g = this.h = null; };\r\n return wb;\r\n}());\r\nfunction yb(a) { l.setTimeout(function () { throw a; }, 0); }\r\nfunction zb(a, b) { Ab || Bb(); Cb || (Ab(), Cb = !0); tb.add(a, b); }\r\nvar Ab;\r\nfunction Bb() { var a = l.Promise.resolve(void 0); Ab = function () { a.then(Db); }; }\r\nvar Cb = !1, tb = new ub;\r\nfunction Db() { for (var a; a = sb();) {\r\n try {\r\n a.h.call(a.g);\r\n }\r\n catch (c) {\r\n yb(c);\r\n }\r\n var b = vb;\r\n b.j(a);\r\n 100 > b.h && (b.h++, a.next = b.g, b.g = a);\r\n} Cb = !1; }\r\nfunction Eb(a, b) { C.call(this); this.h = a || 1; this.g = b || l; this.j = q(this.kb, this); this.l = Date.now(); }\r\nt(Eb, C);\r\nk = Eb.prototype;\r\nk.da = !1;\r\nk.S = null;\r\nk.kb = function () { if (this.da) {\r\n var a = Date.now() - this.l;\r\n 0 < a && a < .8 * this.h ? this.S = this.g.setTimeout(this.j, this.h - a) : (this.S && (this.g.clearTimeout(this.S), this.S = null), D(this, \"tick\"), this.da && (Fb(this), this.start()));\r\n} };\r\nk.start = function () { this.da = !0; this.S || (this.S = this.g.setTimeout(this.j, this.h), this.l = Date.now()); };\r\nfunction Fb(a) { a.da = !1; a.S && (a.g.clearTimeout(a.S), a.S = null); }\r\nk.M = function () { Eb.Z.M.call(this); Fb(this); delete this.g; };\r\nfunction Gb(a, b, c) { if (\"function\" === typeof a)\r\n c && (a = q(a, c));\r\nelse if (a && \"function\" == typeof a.handleEvent)\r\n a = q(a.handleEvent, a);\r\nelse\r\n throw Error(\"Invalid listener argument\"); return 2147483647 < Number(b) ? -1 : l.setTimeout(a, b || 0); }\r\nfunction Hb(a) { a.g = Gb(function () { a.g = null; a.i && (a.i = !1, Hb(a)); }, a.j); var b = a.h; a.h = null; a.m.apply(null, b); }\r\nvar Ib = /** @class */ (function (_super) {\r\n __extends(Ib, _super);\r\n function Ib(a, b) {\r\n var _this = _super.call(this) || this;\r\n _this.m = a;\r\n _this.j = b;\r\n _this.h = null;\r\n _this.i = !1;\r\n _this.g = null;\r\n return _this;\r\n }\r\n Ib.prototype.l = function (a) { this.h = arguments; this.g ? this.i = !0 : Hb(this); };\r\n Ib.prototype.M = function () { _super.prototype.M.call(this); this.g && (l.clearTimeout(this.g), this.g = null, this.i = !1, this.h = null); };\r\n return Ib;\r\n}(v));\r\nfunction E(a) { v.call(this); this.h = a; this.g = {}; }\r\nt(E, v);\r\nvar Jb = [];\r\nfunction Kb(a, b, c, d) { Array.isArray(c) || (c && (Jb[0] = c.toString()), c = Jb); for (var e = 0; e < c.length; e++) {\r\n var f = fb(b, c[e], d || a.handleEvent, !1, a.h || a);\r\n if (!f)\r\n break;\r\n a.g[f.key] = f;\r\n} }\r\nfunction Lb(a) { xa(a.g, function (b, c) { this.g.hasOwnProperty(c) && ob(b); }, a); a.g = {}; }\r\nE.prototype.M = function () { E.Z.M.call(this); Lb(this); };\r\nE.prototype.handleEvent = function () { throw Error(\"EventHandler.handleEvent not implemented\"); };\r\nfunction Mb() { this.g = !0; }\r\nMb.prototype.Aa = function () { this.g = !1; };\r\nfunction Nb(a, b, c, d, e, f) { a.info(function () { if (a.g)\r\n if (f) {\r\n var h = \"\";\r\n for (var n = f.split(\"&\"), u = 0; u < n.length; u++) {\r\n var m = n[u].split(\"=\");\r\n if (1 < m.length) {\r\n var r = m[0];\r\n m = m[1];\r\n var G = r.split(\"_\");\r\n h = 2 <= G.length && \"type\" == G[1] ? h + (r + \"=\" + m + \"&\") : h + (r + \"=redacted&\");\r\n }\r\n }\r\n }\r\n else\r\n h = null;\r\nelse\r\n h = f; return \"XMLHTTP REQ (\" + d + \") [attempt \" + e + \"]: \" + b + \"\\n\" + c + \"\\n\" + h; }); }\r\nfunction Ob(a, b, c, d, e, f, h) { a.info(function () { return \"XMLHTTP RESP (\" + d + \") [ attempt \" + e + \"]: \" + b + \"\\n\" + c + \"\\n\" + f + \" \" + h; }); }\r\nfunction F(a, b, c, d) { a.info(function () { return \"XMLHTTP TEXT (\" + b + \"): \" + Pb(a, c) + (d ? \" \" + d : \"\"); }); }\r\nfunction Qb(a, b) { a.info(function () { return \"TIMEOUT: \" + b; }); }\r\nMb.prototype.info = function () { };\r\nfunction Pb(a, b) { if (!a.g)\r\n return b; if (!b)\r\n return null; try {\r\n var c = JSON.parse(b);\r\n if (c)\r\n for (a = 0; a < c.length; a++)\r\n if (Array.isArray(c[a])) {\r\n var d = c[a];\r\n if (!(2 > d.length)) {\r\n var e = d[1];\r\n if (Array.isArray(e) && !(1 > e.length)) {\r\n var f = e[0];\r\n if (\"noop\" != f && \"stop\" != f && \"close\" != f)\r\n for (var h = 1; h < e.length; h++)\r\n e[h] = \"\";\r\n }\r\n }\r\n }\r\n return rb(c);\r\n}\r\ncatch (n) {\r\n return b;\r\n} }\r\nvar H = {}, Rb = null;\r\nfunction Sb() { return Rb = Rb || new C; }\r\nH.Ma = \"serverreachability\";\r\nfunction Tb(a) { z.call(this, H.Ma, a); }\r\nt(Tb, z);\r\nfunction I(a) { var b = Sb(); D(b, new Tb(b, a)); }\r\nH.STAT_EVENT = \"statevent\";\r\nfunction Ub(a, b) { z.call(this, H.STAT_EVENT, a); this.stat = b; }\r\nt(Ub, z);\r\nfunction J(a) { var b = Sb(); D(b, new Ub(b, a)); }\r\nH.Na = \"timingevent\";\r\nfunction Vb(a, b) { z.call(this, H.Na, a); this.size = b; }\r\nt(Vb, z);\r\nfunction K(a, b) { if (\"function\" !== typeof a)\r\n throw Error(\"Fn must not be null and must be a function\"); return l.setTimeout(function () { a(); }, b); }\r\nvar Wb = { NO_ERROR: 0, lb: 1, yb: 2, xb: 3, sb: 4, wb: 5, zb: 6, Ja: 7, TIMEOUT: 8, Cb: 9 };\r\nvar Xb = { qb: \"complete\", Mb: \"success\", Ka: \"error\", Ja: \"abort\", Eb: \"ready\", Fb: \"readystatechange\", TIMEOUT: \"timeout\", Ab: \"incrementaldata\", Db: \"progress\", tb: \"downloadprogress\", Ub: \"uploadprogress\" };\r\nfunction Yb() { }\r\nYb.prototype.h = null;\r\nfunction Zb(a) { return a.h || (a.h = a.i()); }\r\nfunction $b() { }\r\nvar L = { OPEN: \"a\", pb: \"b\", Ka: \"c\", Bb: \"d\" };\r\nfunction ac() { z.call(this, \"d\"); }\r\nt(ac, z);\r\nfunction bc() { z.call(this, \"c\"); }\r\nt(bc, z);\r\nvar cc;\r\nfunction dc() { }\r\nt(dc, Yb);\r\ndc.prototype.g = function () { return new XMLHttpRequest; };\r\ndc.prototype.i = function () { return {}; };\r\ncc = new dc;\r\nfunction M(a, b, c, d) { this.l = a; this.j = b; this.m = c; this.X = d || 1; this.V = new E(this); this.P = ec; a = Ja ? 125 : void 0; this.W = new Eb(a); this.H = null; this.i = !1; this.s = this.A = this.v = this.K = this.F = this.Y = this.B = null; this.D = []; this.g = null; this.C = 0; this.o = this.u = null; this.N = -1; this.I = !1; this.O = 0; this.L = null; this.aa = this.J = this.$ = this.U = !1; this.h = new fc; }\r\nfunction fc() { this.i = null; this.g = \"\"; this.h = !1; }\r\nvar ec = 45E3, gc = {}, hc = {};\r\nk = M.prototype;\r\nk.setTimeout = function (a) { this.P = a; };\r\nfunction ic(a, b, c) { a.K = 1; a.v = jc(N(b)); a.s = c; a.U = !0; kc(a, null); }\r\nfunction kc(a, b) { a.F = Date.now(); lc(a); a.A = N(a.v); var c = a.A, d = a.X; Array.isArray(d) || (d = [String(d)]); mc(c.h, \"t\", d); a.C = 0; c = a.l.H; a.h = new fc; a.g = nc(a.l, c ? b : null, !a.s); 0 < a.O && (a.L = new Ib(q(a.Ia, a, a.g), a.O)); Kb(a.V, a.g, \"readystatechange\", a.gb); b = a.H ? ya(a.H) : {}; a.s ? (a.u || (a.u = \"POST\"), b[\"Content-Type\"] = \"application/x-www-form-urlencoded\", a.g.ea(a.A, a.u, a.s, b)) : (a.u = \"GET\", a.g.ea(a.A, a.u, null, b)); I(1); Nb(a.j, a.u, a.A, a.m, a.X, a.s); }\r\nk.gb = function (a) { a = a.target; var b = this.L; b && 3 == O(a) ? b.l() : this.Ia(a); };\r\nk.Ia = function (a) {\r\n try {\r\n if (a == this.g)\r\n a: {\r\n var r = O(this.g);\r\n var b = this.g.Da();\r\n var G = this.g.ba();\r\n if (!(3 > r) && (3 != r || Ja || this.g && (this.h.h || this.g.ga() || oc(this.g)))) {\r\n this.I || 4 != r || 7 == b || (8 == b || 0 >= G ? I(3) : I(2));\r\n pc(this);\r\n var c = this.g.ba();\r\n this.N = c;\r\n b: if (qc(this)) {\r\n var d = oc(this.g);\r\n a = \"\";\r\n var e = d.length, f = 4 == O(this.g);\r\n if (!this.h.i) {\r\n if (\"undefined\" === typeof TextDecoder) {\r\n P(this);\r\n rc(this);\r\n var h = \"\";\r\n break b;\r\n }\r\n this.h.i = new l.TextDecoder;\r\n }\r\n for (b = 0; b < e; b++)\r\n this.h.h = !0, a += this.h.i.decode(d[b], { stream: f && b == e - 1 });\r\n d.splice(0, e);\r\n this.h.g += a;\r\n this.C = 0;\r\n h = this.h.g;\r\n }\r\n else\r\n h = this.g.ga();\r\n this.i = 200 == c;\r\n Ob(this.j, this.u, this.A, this.m, this.X, r, c);\r\n if (this.i) {\r\n if (this.$ && !this.J) {\r\n b: {\r\n if (this.g) {\r\n var n, u = this.g;\r\n if ((n = u.g ? u.g.getResponseHeader(\"X-HTTP-Initial-Response\") : null) && !sa(n)) {\r\n var m = n;\r\n break b;\r\n }\r\n }\r\n m = null;\r\n }\r\n if (c = m)\r\n F(this.j, this.m, c, \"Initial handshake response via X-HTTP-Initial-Response\"), this.J = !0, sc(this, c);\r\n else {\r\n this.i = !1;\r\n this.o = 3;\r\n J(12);\r\n P(this);\r\n rc(this);\r\n break a;\r\n }\r\n }\r\n this.U ? (tc(this, r, h), Ja && this.i && 3 == r && (Kb(this.V, this.W, \"tick\", this.fb),\r\n this.W.start())) : (F(this.j, this.m, h, null), sc(this, h));\r\n 4 == r && P(this);\r\n this.i && !this.I && (4 == r ? uc(this.l, this) : (this.i = !1, lc(this)));\r\n }\r\n else\r\n 400 == c && 0 < h.indexOf(\"Unknown SID\") ? (this.o = 3, J(12)) : (this.o = 0, J(13)), P(this), rc(this);\r\n }\r\n }\r\n }\r\n catch (r) { }\r\n finally { }\r\n};\r\nfunction qc(a) { return a.g ? \"GET\" == a.u && 2 != a.K && a.l.Ba : !1; }\r\nfunction tc(a, b, c) {\r\n var d = !0, e;\r\n for (; !a.I && a.C < c.length;)\r\n if (e = vc(a, c), e == hc) {\r\n 4 == b && (a.o = 4, J(14), d = !1);\r\n F(a.j, a.m, null, \"[Incomplete Response]\");\r\n break;\r\n }\r\n else if (e == gc) {\r\n a.o = 4;\r\n J(15);\r\n F(a.j, a.m, c, \"[Invalid Chunk]\");\r\n d = !1;\r\n break;\r\n }\r\n else\r\n F(a.j, a.m, e, null), sc(a, e);\r\n qc(a) && e != hc && e != gc && (a.h.g = \"\", a.C = 0);\r\n 4 != b || 0 != c.length || a.h.h || (a.o = 1, J(16), d = !1);\r\n a.i = a.i && d;\r\n d ? 0 < c.length && !a.aa && (a.aa = !0, b = a.l, b.g == a && b.$ && !b.L && (b.h.info(\"Great, no buffering proxy detected. Bytes received: \" + c.length), wc(b), b.L = !0, J(11))) : (F(a.j, a.m, c, \"[Invalid Chunked Response]\"), P(a), rc(a));\r\n}\r\nk.fb = function () { if (this.g) {\r\n var a = O(this.g), b = this.g.ga();\r\n this.C < b.length && (pc(this), tc(this, a, b), this.i && 4 != a && lc(this));\r\n} };\r\nfunction vc(a, b) { var c = a.C, d = b.indexOf(\"\\n\", c); if (-1 == d)\r\n return hc; c = Number(b.substring(c, d)); if (isNaN(c))\r\n return gc; d += 1; if (d + c > b.length)\r\n return hc; b = b.substr(d, c); a.C = d + c; return b; }\r\nk.cancel = function () { this.I = !0; P(this); };\r\nfunction lc(a) { a.Y = Date.now() + a.P; xc(a, a.P); }\r\nfunction xc(a, b) { if (null != a.B)\r\n throw Error(\"WatchDog timer not null\"); a.B = K(q(a.eb, a), b); }\r\nfunction pc(a) { a.B && (l.clearTimeout(a.B), a.B = null); }\r\nk.eb = function () { this.B = null; var a = Date.now(); 0 <= a - this.Y ? (Qb(this.j, this.A), 2 != this.K && (I(3), J(17)), P(this), this.o = 2, rc(this)) : xc(this, this.Y - a); };\r\nfunction rc(a) { 0 == a.l.G || a.I || uc(a.l, a); }\r\nfunction P(a) { pc(a); var b = a.L; b && \"function\" == typeof b.na && b.na(); a.L = null; Fb(a.W); Lb(a.V); a.g && (b = a.g, a.g = null, b.abort(), b.na()); }\r\nfunction sc(a, b) {\r\n try {\r\n var c = a.l;\r\n if (0 != c.G && (c.g == a || yc(c.i, a)))\r\n if (c.I = a.N, !a.J && yc(c.i, a) && 3 == c.G) {\r\n try {\r\n var d = c.Ca.g.parse(b);\r\n }\r\n catch (m) {\r\n d = null;\r\n }\r\n if (Array.isArray(d) && 3 == d.length) {\r\n var e = d;\r\n if (0 == e[0])\r\n a: {\r\n if (!c.u) {\r\n if (c.g)\r\n if (c.g.F + 3E3 < a.F)\r\n zc(c), Ac(c);\r\n else\r\n break a;\r\n Bc(c);\r\n J(18);\r\n }\r\n }\r\n else\r\n c.ta = e[1], 0 < c.ta - c.U && 37500 > e[2] && c.N && 0 == c.A && !c.v && (c.v = K(q(c.ab, c), 6E3));\r\n if (1 >= Cc(c.i) && c.ka) {\r\n try {\r\n c.ka();\r\n }\r\n catch (m) { }\r\n c.ka = void 0;\r\n }\r\n }\r\n else\r\n Q(c, 11);\r\n }\r\n else if ((a.J || c.g == a) && zc(c), !sa(b))\r\n for (e = c.Ca.g.parse(b), b = 0; b < e.length; b++) {\r\n var m = e[b];\r\n c.U = m[0];\r\n m = m[1];\r\n if (2 == c.G)\r\n if (\"c\" == m[0]) {\r\n c.J = m[1];\r\n c.la = m[2];\r\n var r = m[3];\r\n null != r && (c.ma = r, c.h.info(\"VER=\" + c.ma));\r\n var G = m[4];\r\n null != G && (c.za = G, c.h.info(\"SVER=\" + c.za));\r\n var Da = m[5];\r\n null != Da && \"number\" === typeof Da && 0 < Da && (d = 1.5 * Da, c.K = d, c.h.info(\"backChannelRequestTimeoutMs_=\" + d));\r\n d = c;\r\n var ca = a.g;\r\n if (ca) {\r\n var Ea = ca.g ? ca.g.getResponseHeader(\"X-Client-Wire-Protocol\") : null;\r\n if (Ea) {\r\n var f = d.i;\r\n !f.g && (w(Ea, \"spdy\") || w(Ea, \"quic\") || w(Ea, \"h2\")) && (f.j = f.l, f.g = new Set, f.h && (Dc(f, f.h), f.h = null));\r\n }\r\n if (d.D) {\r\n var xb = ca.g ? ca.g.getResponseHeader(\"X-HTTP-Session-Id\") : null;\r\n xb && (d.sa = xb, R(d.F, d.D, xb));\r\n }\r\n }\r\n c.G = 3;\r\n c.j && c.j.xa();\r\n c.$ && (c.O = Date.now() - a.F, c.h.info(\"Handshake RTT: \" + c.O + \"ms\"));\r\n d = c;\r\n var h = a;\r\n d.oa = Ec(d, d.H ? d.la : null, d.W);\r\n if (h.J) {\r\n Fc(d.i, h);\r\n var n = h, u = d.K;\r\n u && n.setTimeout(u);\r\n n.B && (pc(n), lc(n));\r\n d.g = h;\r\n }\r\n else\r\n Gc(d);\r\n 0 < c.l.length && Hc(c);\r\n }\r\n else\r\n \"stop\" != m[0] && \"close\" != m[0] || Q(c, 7);\r\n else\r\n 3 == c.G && (\"stop\" == m[0] || \"close\" == m[0] ? \"stop\" == m[0] ? Q(c, 7) : Ic(c) : \"noop\" != m[0] && c.j && c.j.wa(m), c.A = 0);\r\n }\r\n I(4);\r\n }\r\n catch (m) { }\r\n}\r\nfunction Jc(a) { if (a.R && \"function\" == typeof a.R)\r\n return a.R(); if (\"string\" === typeof a)\r\n return a.split(\"\"); if (ba(a)) {\r\n for (var b = [], c = a.length, d = 0; d < c; d++)\r\n b.push(a[d]);\r\n return b;\r\n} b = []; c = 0; for (d in a)\r\n b[c++] = a[d]; return b; }\r\nfunction Kc(a, b) { if (a.forEach && \"function\" == typeof a.forEach)\r\n a.forEach(b, void 0);\r\nelse if (ba(a) || \"string\" === typeof a)\r\n na(a, b, void 0);\r\nelse {\r\n if (a.T && \"function\" == typeof a.T)\r\n var c = a.T();\r\n else if (a.R && \"function\" == typeof a.R)\r\n c = void 0;\r\n else if (ba(a) || \"string\" === typeof a) {\r\n c = [];\r\n for (var d = a.length, e = 0; e < d; e++)\r\n c.push(e);\r\n }\r\n else\r\n for (e in c = [], d = 0, a)\r\n c[d++] = e;\r\n d = Jc(a);\r\n e = d.length;\r\n for (var f = 0; f < e; f++)\r\n b.call(void 0, d[f], c && c[f], a);\r\n} }\r\nfunction S(a, b) { this.h = {}; this.g = []; this.i = 0; var c = arguments.length; if (1 < c) {\r\n if (c % 2)\r\n throw Error(\"Uneven number of arguments\");\r\n for (var d = 0; d < c; d += 2)\r\n this.set(arguments[d], arguments[d + 1]);\r\n}\r\nelse if (a)\r\n if (a instanceof S)\r\n for (c = a.T(), d = 0; d < c.length; d++)\r\n this.set(c[d], a.get(c[d]));\r\n else\r\n for (d in a)\r\n this.set(d, a[d]); }\r\nk = S.prototype;\r\nk.R = function () { Lc(this); for (var a = [], b = 0; b < this.g.length; b++)\r\n a.push(this.h[this.g[b]]); return a; };\r\nk.T = function () { Lc(this); return this.g.concat(); };\r\nfunction Lc(a) { if (a.i != a.g.length) {\r\n for (var b = 0, c = 0; b < a.g.length;) {\r\n var d = a.g[b];\r\n T(a.h, d) && (a.g[c++] = d);\r\n b++;\r\n }\r\n a.g.length = c;\r\n} if (a.i != a.g.length) {\r\n var e = {};\r\n for (c = b = 0; b < a.g.length;)\r\n d = a.g[b], T(e, d) || (a.g[c++] = d, e[d] = 1), b++;\r\n a.g.length = c;\r\n} }\r\nk.get = function (a, b) { return T(this.h, a) ? this.h[a] : b; };\r\nk.set = function (a, b) { T(this.h, a) || (this.i++, this.g.push(a)); this.h[a] = b; };\r\nk.forEach = function (a, b) { for (var c = this.T(), d = 0; d < c.length; d++) {\r\n var e = c[d], f = this.get(e);\r\n a.call(b, f, e, this);\r\n} };\r\nfunction T(a, b) { return Object.prototype.hasOwnProperty.call(a, b); }\r\nvar Mc = /^(?:([^:/?#.]+):)?(?:\\/\\/(?:([^\\\\/?#]*)@)?([^\\\\/?#]*?)(?::([0-9]+))?(?=[\\\\/?#]|$))?([^?#]+)?(?:\\?([^#]*))?(?:#([\\s\\S]*))?$/;\r\nfunction Nc(a, b) { if (a) {\r\n a = a.split(\"&\");\r\n for (var c = 0; c < a.length; c++) {\r\n var d = a[c].indexOf(\"=\"), e = null;\r\n if (0 <= d) {\r\n var f = a[c].substring(0, d);\r\n e = a[c].substring(d + 1);\r\n }\r\n else\r\n f = a[c];\r\n b(f, e ? decodeURIComponent(e.replace(/\\+/g, \" \")) : \"\");\r\n }\r\n} }\r\nfunction U(a, b) { this.i = this.s = this.j = \"\"; this.m = null; this.o = this.l = \"\"; this.g = !1; if (a instanceof U) {\r\n this.g = void 0 !== b ? b : a.g;\r\n Oc(this, a.j);\r\n this.s = a.s;\r\n Pc(this, a.i);\r\n Qc(this, a.m);\r\n this.l = a.l;\r\n b = a.h;\r\n var c = new Rc;\r\n c.i = b.i;\r\n b.g && (c.g = new S(b.g), c.h = b.h);\r\n Sc(this, c);\r\n this.o = a.o;\r\n}\r\nelse\r\n a && (c = String(a).match(Mc)) ? (this.g = !!b, Oc(this, c[1] || \"\", !0), this.s = Tc(c[2] || \"\"), Pc(this, c[3] || \"\", !0), Qc(this, c[4]), this.l = Tc(c[5] || \"\", !0), Sc(this, c[6] || \"\", !0), this.o = Tc(c[7] || \"\")) : (this.g = !!b, this.h = new Rc(null, this.g)); }\r\nU.prototype.toString = function () { var a = [], b = this.j; b && a.push(Uc(b, Vc, !0), \":\"); var c = this.i; if (c || \"file\" == b)\r\n a.push(\"//\"), (b = this.s) && a.push(Uc(b, Vc, !0), \"@\"), a.push(encodeURIComponent(String(c)).replace(/%25([0-9a-fA-F]{2})/g, \"%$1\")), c = this.m, null != c && a.push(\":\", String(c)); if (c = this.l)\r\n this.i && \"/\" != c.charAt(0) && a.push(\"/\"), a.push(Uc(c, \"/\" == c.charAt(0) ? Wc : Xc, !0)); (c = this.h.toString()) && a.push(\"?\", c); (c = this.o) && a.push(\"#\", Uc(c, Yc)); return a.join(\"\"); };\r\nfunction N(a) { return new U(a); }\r\nfunction Oc(a, b, c) { a.j = c ? Tc(b, !0) : b; a.j && (a.j = a.j.replace(/:$/, \"\")); }\r\nfunction Pc(a, b, c) { a.i = c ? Tc(b, !0) : b; }\r\nfunction Qc(a, b) { if (b) {\r\n b = Number(b);\r\n if (isNaN(b) || 0 > b)\r\n throw Error(\"Bad port number \" + b);\r\n a.m = b;\r\n}\r\nelse\r\n a.m = null; }\r\nfunction Sc(a, b, c) { b instanceof Rc ? (a.h = b, Zc(a.h, a.g)) : (c || (b = Uc(b, $c)), a.h = new Rc(b, a.g)); }\r\nfunction R(a, b, c) { a.h.set(b, c); }\r\nfunction jc(a) { R(a, \"zx\", Math.floor(2147483648 * Math.random()).toString(36) + Math.abs(Math.floor(2147483648 * Math.random()) ^ Date.now()).toString(36)); return a; }\r\nfunction ad(a) { return a instanceof U ? N(a) : new U(a, void 0); }\r\nfunction bd(a, b, c, d) { var e = new U(null, void 0); a && Oc(e, a); b && Pc(e, b); c && Qc(e, c); d && (e.l = d); return e; }\r\nfunction Tc(a, b) { return a ? b ? decodeURI(a.replace(/%25/g, \"%2525\")) : decodeURIComponent(a) : \"\"; }\r\nfunction Uc(a, b, c) { return \"string\" === typeof a ? (a = encodeURI(a).replace(b, cd), c && (a = a.replace(/%25([0-9a-fA-F]{2})/g, \"%$1\")), a) : null; }\r\nfunction cd(a) { a = a.charCodeAt(0); return \"%\" + (a >> 4 & 15).toString(16) + (a & 15).toString(16); }\r\nvar Vc = /[#\\/\\?@]/g, Xc = /[#\\?:]/g, Wc = /[#\\?]/g, $c = /[#\\?@]/g, Yc = /#/g;\r\nfunction Rc(a, b) { this.h = this.g = null; this.i = a || null; this.j = !!b; }\r\nfunction V(a) { a.g || (a.g = new S, a.h = 0, a.i && Nc(a.i, function (b, c) { a.add(decodeURIComponent(b.replace(/\\+/g, \" \")), c); })); }\r\nk = Rc.prototype;\r\nk.add = function (a, b) { V(this); this.i = null; a = W(this, a); var c = this.g.get(a); c || this.g.set(a, c = []); c.push(b); this.h += 1; return this; };\r\nfunction dd(a, b) { V(a); b = W(a, b); T(a.g.h, b) && (a.i = null, a.h -= a.g.get(b).length, a = a.g, T(a.h, b) && (delete a.h[b], a.i--, a.g.length > 2 * a.i && Lc(a))); }\r\nfunction ed(a, b) { V(a); b = W(a, b); return T(a.g.h, b); }\r\nk.forEach = function (a, b) { V(this); this.g.forEach(function (c, d) { na(c, function (e) { a.call(b, e, d, this); }, this); }, this); };\r\nk.T = function () { V(this); for (var a = this.g.R(), b = this.g.T(), c = [], d = 0; d < b.length; d++)\r\n for (var e = a[d], f = 0; f < e.length; f++)\r\n c.push(b[d]); return c; };\r\nk.R = function (a) { V(this); var b = []; if (\"string\" === typeof a)\r\n ed(this, a) && (b = qa(b, this.g.get(W(this, a))));\r\nelse {\r\n a = this.g.R();\r\n for (var c = 0; c < a.length; c++)\r\n b = qa(b, a[c]);\r\n} return b; };\r\nk.set = function (a, b) { V(this); this.i = null; a = W(this, a); ed(this, a) && (this.h -= this.g.get(a).length); this.g.set(a, [b]); this.h += 1; return this; };\r\nk.get = function (a, b) { if (!a)\r\n return b; a = this.R(a); return 0 < a.length ? String(a[0]) : b; };\r\nfunction mc(a, b, c) { dd(a, b); 0 < c.length && (a.i = null, a.g.set(W(a, b), ra(c)), a.h += c.length); }\r\nk.toString = function () { if (this.i)\r\n return this.i; if (!this.g)\r\n return \"\"; for (var a = [], b = this.g.T(), c = 0; c < b.length; c++) {\r\n var d = b[c], e = encodeURIComponent(String(d));\r\n d = this.R(d);\r\n for (var f = 0; f < d.length; f++) {\r\n var h = e;\r\n \"\" !== d[f] && (h += \"=\" + encodeURIComponent(String(d[f])));\r\n a.push(h);\r\n }\r\n} return this.i = a.join(\"&\"); };\r\nfunction W(a, b) { b = String(b); a.j && (b = b.toLowerCase()); return b; }\r\nfunction Zc(a, b) { b && !a.j && (V(a), a.i = null, a.g.forEach(function (c, d) { var e = d.toLowerCase(); d != e && (dd(this, d), mc(this, e, c)); }, a)); a.j = b; }\r\nvar fd = /** @class */ (function () {\r\n function fd(a, b) {\r\n this.h = a;\r\n this.g = b;\r\n }\r\n return fd;\r\n}());\r\nfunction gd(a) { this.l = a || hd; l.PerformanceNavigationTiming ? (a = l.performance.getEntriesByType(\"navigation\"), a = 0 < a.length && (\"hq\" == a[0].nextHopProtocol || \"h2\" == a[0].nextHopProtocol)) : a = !!(l.g && l.g.Ea && l.g.Ea() && l.g.Ea().Zb); this.j = a ? this.l : 1; this.g = null; 1 < this.j && (this.g = new Set); this.h = null; this.i = []; }\r\nvar hd = 10;\r\nfunction id(a) { return a.h ? !0 : a.g ? a.g.size >= a.j : !1; }\r\nfunction Cc(a) { return a.h ? 1 : a.g ? a.g.size : 0; }\r\nfunction yc(a, b) { return a.h ? a.h == b : a.g ? a.g.has(b) : !1; }\r\nfunction Dc(a, b) { a.g ? a.g.add(b) : a.h = b; }\r\nfunction Fc(a, b) { a.h && a.h == b ? a.h = null : a.g && a.g.has(b) && a.g.delete(b); }\r\ngd.prototype.cancel = function () {\r\n var e_1, _a;\r\n this.i = jd(this);\r\n if (this.h)\r\n this.h.cancel(), this.h = null;\r\n else if (this.g && 0 !== this.g.size) {\r\n try {\r\n for (var _b = __values(this.g.values()), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var a = _c.value;\r\n a.cancel();\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n this.g.clear();\r\n }\r\n};\r\nfunction jd(a) {\r\n var e_2, _a;\r\n if (null != a.h)\r\n return a.i.concat(a.h.D);\r\n if (null != a.g && 0 !== a.g.size) {\r\n var b = a.i;\r\n try {\r\n for (var _b = __values(a.g.values()), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var c = _c.value;\r\n b = b.concat(c.D);\r\n }\r\n }\r\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\r\n finally {\r\n try {\r\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\r\n }\r\n finally { if (e_2) throw e_2.error; }\r\n }\r\n return b;\r\n }\r\n return ra(a.i);\r\n}\r\nfunction kd() { }\r\nkd.prototype.stringify = function (a) { return l.JSON.stringify(a, void 0); };\r\nkd.prototype.parse = function (a) { return l.JSON.parse(a, void 0); };\r\nfunction ld() { this.g = new kd; }\r\nfunction md(a, b, c) { var d = c || \"\"; try {\r\n Kc(a, function (e, f) { var h = e; p(e) && (h = rb(e)); b.push(d + f + \"=\" + encodeURIComponent(h)); });\r\n}\r\ncatch (e) {\r\n throw b.push(d + \"type=\" + encodeURIComponent(\"_badmap\")), e;\r\n} }\r\nfunction nd(a, b) { var c = new Mb; if (l.Image) {\r\n var d_1 = new Image;\r\n d_1.onload = ja(od, c, d_1, \"TestLoadImage: loaded\", !0, b);\r\n d_1.onerror = ja(od, c, d_1, \"TestLoadImage: error\", !1, b);\r\n d_1.onabort = ja(od, c, d_1, \"TestLoadImage: abort\", !1, b);\r\n d_1.ontimeout = ja(od, c, d_1, \"TestLoadImage: timeout\", !1, b);\r\n l.setTimeout(function () { if (d_1.ontimeout)\r\n d_1.ontimeout(); }, 1E4);\r\n d_1.src = a;\r\n}\r\nelse\r\n b(!1); }\r\nfunction od(a, b, c, d, e) { try {\r\n b.onload = null, b.onerror = null, b.onabort = null, b.ontimeout = null, e(d);\r\n}\r\ncatch (f) { } }\r\nfunction pd(a) { this.l = a.$b || null; this.j = a.ib || !1; }\r\nt(pd, Yb);\r\npd.prototype.g = function () { return new qd(this.l, this.j); };\r\npd.prototype.i = function (a) { return function () { return a; }; }({});\r\nfunction qd(a, b) { C.call(this); this.D = a; this.u = b; this.m = void 0; this.readyState = rd; this.status = 0; this.responseType = this.responseText = this.response = this.statusText = \"\"; this.onreadystatechange = null; this.v = new Headers; this.h = null; this.C = \"GET\"; this.B = \"\"; this.g = !1; this.A = this.j = this.l = null; }\r\nt(qd, C);\r\nvar rd = 0;\r\nk = qd.prototype;\r\nk.open = function (a, b) { if (this.readyState != rd)\r\n throw this.abort(), Error(\"Error reopening a connection\"); this.C = a; this.B = b; this.readyState = 1; sd(this); };\r\nk.send = function (a) { if (1 != this.readyState)\r\n throw this.abort(), Error(\"need to call open() first. \"); this.g = !0; var b = { headers: this.v, method: this.C, credentials: this.m, cache: void 0 }; a && (b.body = a); (this.D || l).fetch(new Request(this.B, b)).then(this.Va.bind(this), this.ha.bind(this)); };\r\nk.abort = function () { this.response = this.responseText = \"\"; this.v = new Headers; this.status = 0; this.j && this.j.cancel(\"Request was aborted.\"); 1 <= this.readyState && this.g && 4 != this.readyState && (this.g = !1, td(this)); this.readyState = rd; };\r\nk.Va = function (a) {\r\n if (this.g && (this.l = a, this.h || (this.status = this.l.status, this.statusText = this.l.statusText, this.h = a.headers, this.readyState = 2, sd(this)), this.g && (this.readyState = 3, sd(this), this.g)))\r\n if (\"arraybuffer\" === this.responseType)\r\n a.arrayBuffer().then(this.Ta.bind(this), this.ha.bind(this));\r\n else if (\"undefined\" !== typeof l.ReadableStream && \"body\" in a) {\r\n this.j = a.body.getReader();\r\n if (this.u) {\r\n if (this.responseType)\r\n throw Error('responseType must be empty for \"streamBinaryChunks\" mode responses.');\r\n this.response =\r\n [];\r\n }\r\n else\r\n this.response = this.responseText = \"\", this.A = new TextDecoder;\r\n ud(this);\r\n }\r\n else\r\n a.text().then(this.Ua.bind(this), this.ha.bind(this));\r\n};\r\nfunction ud(a) { a.j.read().then(a.Sa.bind(a)).catch(a.ha.bind(a)); }\r\nk.Sa = function (a) { if (this.g) {\r\n if (this.u && a.value)\r\n this.response.push(a.value);\r\n else if (!this.u) {\r\n var b = a.value ? a.value : new Uint8Array(0);\r\n if (b = this.A.decode(b, { stream: !a.done }))\r\n this.response = this.responseText += b;\r\n }\r\n a.done ? td(this) : sd(this);\r\n 3 == this.readyState && ud(this);\r\n} };\r\nk.Ua = function (a) { this.g && (this.response = this.responseText = a, td(this)); };\r\nk.Ta = function (a) { this.g && (this.response = a, td(this)); };\r\nk.ha = function () { this.g && td(this); };\r\nfunction td(a) { a.readyState = 4; a.l = null; a.j = null; a.A = null; sd(a); }\r\nk.setRequestHeader = function (a, b) { this.v.append(a, b); };\r\nk.getResponseHeader = function (a) { return this.h ? this.h.get(a.toLowerCase()) || \"\" : \"\"; };\r\nk.getAllResponseHeaders = function () { if (!this.h)\r\n return \"\"; var a = [], b = this.h.entries(); for (var c = b.next(); !c.done;)\r\n c = c.value, a.push(c[0] + \": \" + c[1]), c = b.next(); return a.join(\"\\r\\n\"); };\r\nfunction sd(a) { a.onreadystatechange && a.onreadystatechange.call(a); }\r\nObject.defineProperty(qd.prototype, \"withCredentials\", { get: function () { return \"include\" === this.m; }, set: function (a) { this.m = a ? \"include\" : \"same-origin\"; } });\r\nvar vd = l.JSON.parse;\r\nfunction X(a) { C.call(this); this.headers = new S; this.u = a || null; this.h = !1; this.C = this.g = null; this.H = \"\"; this.m = 0; this.j = \"\"; this.l = this.F = this.v = this.D = !1; this.B = 0; this.A = null; this.J = wd; this.K = this.L = !1; }\r\nt(X, C);\r\nvar wd = \"\", xd = /^https?$/i, yd = [\"POST\", \"PUT\"];\r\nk = X.prototype;\r\nk.ea = function (a, b, c, d) {\r\n if (this.g)\r\n throw Error(\"[goog.net.XhrIo] Object is active with another request=\" + this.H + \"; newUri=\" + a);\r\n b = b ? b.toUpperCase() : \"GET\";\r\n this.H = a;\r\n this.j = \"\";\r\n this.m = 0;\r\n this.D = !1;\r\n this.h = !0;\r\n this.g = this.u ? this.u.g() : cc.g();\r\n this.C = this.u ? Zb(this.u) : Zb(cc);\r\n this.g.onreadystatechange = q(this.Fa, this);\r\n try {\r\n this.F = !0, this.g.open(b, String(a), !0), this.F = !1;\r\n }\r\n catch (f) {\r\n zd(this, f);\r\n return;\r\n }\r\n a = c || \"\";\r\n var e = new S(this.headers);\r\n d && Kc(d, function (f, h) { e.set(h, f); });\r\n d = oa(e.T());\r\n c = l.FormData && a instanceof l.FormData;\r\n !(0 <= ma(yd, b)) || d || c || e.set(\"Content-Type\", \"application/x-www-form-urlencoded;charset=utf-8\");\r\n e.forEach(function (f, h) { this.g.setRequestHeader(h, f); }, this);\r\n this.J && (this.g.responseType = this.J);\r\n \"withCredentials\" in this.g && this.g.withCredentials !== this.L && (this.g.withCredentials = this.L);\r\n try {\r\n Ad(this), 0 < this.B && ((this.K = Bd(this.g)) ? (this.g.timeout = this.B, this.g.ontimeout = q(this.pa, this)) : this.A = Gb(this.pa, this.B, this)), this.v = !0, this.g.send(a), this.v = !1;\r\n }\r\n catch (f) {\r\n zd(this, f);\r\n }\r\n};\r\nfunction Bd(a) { return y && Ra() && \"number\" === typeof a.timeout && void 0 !== a.ontimeout; }\r\nfunction pa(a) { return \"content-type\" == a.toLowerCase(); }\r\nk.pa = function () { \"undefined\" != typeof goog && this.g && (this.j = \"Timed out after \" + this.B + \"ms, aborting\", this.m = 8, D(this, \"timeout\"), this.abort(8)); };\r\nfunction zd(a, b) { a.h = !1; a.g && (a.l = !0, a.g.abort(), a.l = !1); a.j = b; a.m = 5; Cd(a); Dd(a); }\r\nfunction Cd(a) { a.D || (a.D = !0, D(a, \"complete\"), D(a, \"error\")); }\r\nk.abort = function (a) { this.g && this.h && (this.h = !1, this.l = !0, this.g.abort(), this.l = !1, this.m = a || 7, D(this, \"complete\"), D(this, \"abort\"), Dd(this)); };\r\nk.M = function () { this.g && (this.h && (this.h = !1, this.l = !0, this.g.abort(), this.l = !1), Dd(this, !0)); X.Z.M.call(this); };\r\nk.Fa = function () { this.s || (this.F || this.v || this.l ? Ed(this) : this.cb()); };\r\nk.cb = function () { Ed(this); };\r\nfunction Ed(a) {\r\n if (a.h && \"undefined\" != typeof goog && (!a.C[1] || 4 != O(a) || 2 != a.ba()))\r\n if (a.v && 4 == O(a))\r\n Gb(a.Fa, 0, a);\r\n else if (D(a, \"readystatechange\"), 4 == O(a)) {\r\n a.h = !1;\r\n try {\r\n var n = a.ba();\r\n a: switch (n) {\r\n case 200:\r\n case 201:\r\n case 202:\r\n case 204:\r\n case 206:\r\n case 304:\r\n case 1223:\r\n var b = !0;\r\n break a;\r\n default: b = !1;\r\n }\r\n var c;\r\n if (!(c = b)) {\r\n var d;\r\n if (d = 0 === n) {\r\n var e = String(a.H).match(Mc)[1] || null;\r\n if (!e && l.self && l.self.location) {\r\n var f = l.self.location.protocol;\r\n e = f.substr(0, f.length - 1);\r\n }\r\n d = !xd.test(e ? e.toLowerCase() : \"\");\r\n }\r\n c = d;\r\n }\r\n if (c)\r\n D(a, \"complete\"), D(a, \"success\");\r\n else {\r\n a.m = 6;\r\n try {\r\n var h = 2 < O(a) ? a.g.statusText : \"\";\r\n }\r\n catch (u) {\r\n h = \"\";\r\n }\r\n a.j = h + \" [\" + a.ba() + \"]\";\r\n Cd(a);\r\n }\r\n }\r\n finally {\r\n Dd(a);\r\n }\r\n }\r\n}\r\nfunction Dd(a, b) { if (a.g) {\r\n Ad(a);\r\n var c = a.g, d = a.C[0] ? aa : null;\r\n a.g = null;\r\n a.C = null;\r\n b || D(a, \"ready\");\r\n try {\r\n c.onreadystatechange = d;\r\n }\r\n catch (e) { }\r\n} }\r\nfunction Ad(a) { a.g && a.K && (a.g.ontimeout = null); a.A && (l.clearTimeout(a.A), a.A = null); }\r\nfunction O(a) { return a.g ? a.g.readyState : 0; }\r\nk.ba = function () { try {\r\n return 2 < O(this) ? this.g.status : -1;\r\n}\r\ncatch (a) {\r\n return -1;\r\n} };\r\nk.ga = function () { try {\r\n return this.g ? this.g.responseText : \"\";\r\n}\r\ncatch (a) {\r\n return \"\";\r\n} };\r\nk.Qa = function (a) { if (this.g) {\r\n var b = this.g.responseText;\r\n a && 0 == b.indexOf(a) && (b = b.substring(a.length));\r\n return vd(b);\r\n} };\r\nfunction oc(a) { try {\r\n if (!a.g)\r\n return null;\r\n if (\"response\" in a.g)\r\n return a.g.response;\r\n switch (a.J) {\r\n case wd:\r\n case \"text\": return a.g.responseText;\r\n case \"arraybuffer\": if (\"mozResponseArrayBuffer\" in a.g)\r\n return a.g.mozResponseArrayBuffer;\r\n }\r\n return null;\r\n}\r\ncatch (b) {\r\n return null;\r\n} }\r\nk.Da = function () { return this.m; };\r\nk.La = function () { return \"string\" === typeof this.j ? this.j : String(this.j); };\r\nfunction Fd(a) { var b = \"\"; xa(a, function (c, d) { b += d; b += \":\"; b += c; b += \"\\r\\n\"; }); return b; }\r\nfunction Gd(a, b, c) { a: {\r\n for (d in c) {\r\n var d = !1;\r\n break a;\r\n }\r\n d = !0;\r\n} d || (c = Fd(c), \"string\" === typeof a ? (null != c && encodeURIComponent(String(c))) : R(a, b, c)); }\r\nfunction Hd(a, b, c) { return c && c.internalChannelParams ? c.internalChannelParams[a] || b : b; }\r\nfunction Id(a) {\r\n this.za = 0;\r\n this.l = [];\r\n this.h = new Mb;\r\n this.la = this.oa = this.F = this.W = this.g = this.sa = this.D = this.aa = this.o = this.P = this.s = null;\r\n this.Za = this.V = 0;\r\n this.Xa = Hd(\"failFast\", !1, a);\r\n this.N = this.v = this.u = this.m = this.j = null;\r\n this.X = !0;\r\n this.I = this.ta = this.U = -1;\r\n this.Y = this.A = this.C = 0;\r\n this.Pa = Hd(\"baseRetryDelayMs\", 5E3, a);\r\n this.$a = Hd(\"retryDelaySeedMs\", 1E4, a);\r\n this.Ya = Hd(\"forwardChannelMaxRetries\", 2, a);\r\n this.ra = Hd(\"forwardChannelRequestTimeoutMs\", 2E4, a);\r\n this.qa = a && a.xmlHttpFactory || void 0;\r\n this.Ba = a && a.Yb || !1;\r\n this.K = void 0;\r\n this.H = a && a.supportsCrossDomainXhr || !1;\r\n this.J = \"\";\r\n this.i = new gd(a && a.concurrentRequestLimit);\r\n this.Ca = new ld;\r\n this.ja = a && a.fastHandshake || !1;\r\n this.Ra = a && a.Wb || !1;\r\n a && a.Aa && this.h.Aa();\r\n a && a.forceLongPolling && (this.X = !1);\r\n this.$ = !this.ja && this.X && a && a.detectBufferingProxy || !1;\r\n this.ka = void 0;\r\n this.O = 0;\r\n this.L = !1;\r\n this.B = null;\r\n this.Wa = !a || !1 !== a.Xb;\r\n}\r\nk = Id.prototype;\r\nk.ma = 8;\r\nk.G = 1;\r\nfunction Ic(a) { Jd(a); if (3 == a.G) {\r\n var b = a.V++, c = N(a.F);\r\n R(c, \"SID\", a.J);\r\n R(c, \"RID\", b);\r\n R(c, \"TYPE\", \"terminate\");\r\n Kd(a, c);\r\n b = new M(a, a.h, b, void 0);\r\n b.K = 2;\r\n b.v = jc(N(c));\r\n c = !1;\r\n l.navigator && l.navigator.sendBeacon && (c = l.navigator.sendBeacon(b.v.toString(), \"\"));\r\n !c && l.Image && ((new Image).src = b.v, c = !0);\r\n c || (b.g = nc(b.l, null), b.g.ea(b.v));\r\n b.F = Date.now();\r\n lc(b);\r\n} Ld(a); }\r\nk.hb = function (a) { try {\r\n this.h.info(\"Origin Trials invoked: \" + a);\r\n}\r\ncatch (b) { } };\r\nfunction Ac(a) { a.g && (wc(a), a.g.cancel(), a.g = null); }\r\nfunction Jd(a) { Ac(a); a.u && (l.clearTimeout(a.u), a.u = null); zc(a); a.i.cancel(); a.m && (\"number\" === typeof a.m && l.clearTimeout(a.m), a.m = null); }\r\nfunction Md(a, b) { a.l.push(new fd(a.Za++, b)); 3 == a.G && Hc(a); }\r\nfunction Hc(a) { id(a.i) || a.m || (a.m = !0, zb(a.Ha, a), a.C = 0); }\r\nfunction Nd(a, b) { if (Cc(a.i) >= a.i.j - (a.m ? 1 : 0))\r\n return !1; if (a.m)\r\n return a.l = b.D.concat(a.l), !0; if (1 == a.G || 2 == a.G || a.C >= (a.Xa ? 0 : a.Ya))\r\n return !1; a.m = K(q(a.Ha, a, b), Od(a, a.C)); a.C++; return !0; }\r\nk.Ha = function (a) {\r\n if (this.m)\r\n if (this.m = null, 1 == this.G) {\r\n if (!a) {\r\n this.V = Math.floor(1E5 * Math.random());\r\n a = this.V++;\r\n var e = new M(this, this.h, a, void 0);\r\n var f = this.s;\r\n this.P && (f ? (f = ya(f), Aa(f, this.P)) : f = this.P);\r\n null === this.o && (e.H = f);\r\n if (this.ja)\r\n a: {\r\n var b = 0;\r\n for (var c = 0; c < this.l.length; c++) {\r\n b: {\r\n var d = this.l[c];\r\n if (\"__data__\" in d.g && (d = d.g.__data__, \"string\" === typeof d)) {\r\n d = d.length;\r\n break b;\r\n }\r\n d = void 0;\r\n }\r\n if (void 0 === d)\r\n break;\r\n b += d;\r\n if (4096 < b) {\r\n b = c;\r\n break a;\r\n }\r\n if (4096 === b || c === this.l.length - 1) {\r\n b = c + 1;\r\n break a;\r\n }\r\n }\r\n b = 1E3;\r\n }\r\n else\r\n b = 1E3;\r\n b =\r\n Pd(this, e, b);\r\n c = N(this.F);\r\n R(c, \"RID\", a);\r\n R(c, \"CVER\", 22);\r\n this.D && R(c, \"X-HTTP-Session-Id\", this.D);\r\n Kd(this, c);\r\n this.o && f && Gd(c, this.o, f);\r\n Dc(this.i, e);\r\n this.Ra && R(c, \"TYPE\", \"init\");\r\n this.ja ? (R(c, \"$req\", b), R(c, \"SID\", \"null\"), e.$ = !0, ic(e, c, null)) : ic(e, c, b);\r\n this.G = 2;\r\n }\r\n }\r\n else\r\n 3 == this.G && (a ? Qd(this, a) : 0 == this.l.length || id(this.i) || Qd(this));\r\n};\r\nfunction Qd(a, b) { var c; b ? c = b.m : c = a.V++; var d = N(a.F); R(d, \"SID\", a.J); R(d, \"RID\", c); R(d, \"AID\", a.U); Kd(a, d); a.o && a.s && Gd(d, a.o, a.s); c = new M(a, a.h, c, a.C + 1); null === a.o && (c.H = a.s); b && (a.l = b.D.concat(a.l)); b = Pd(a, c, 1E3); c.setTimeout(Math.round(.5 * a.ra) + Math.round(.5 * a.ra * Math.random())); Dc(a.i, c); ic(c, d, b); }\r\nfunction Kd(a, b) { a.j && Kc({}, function (c, d) { R(b, d, c); }); }\r\nfunction Pd(a, b, c) { c = Math.min(a.l.length, c); var d = a.j ? q(a.j.Oa, a.j, a) : null; a: {\r\n var e = a.l;\r\n var f = -1;\r\n for (;;) {\r\n var h = [\"count=\" + c];\r\n -1 == f ? 0 < c ? (f = e[0].h, h.push(\"ofs=\" + f)) : f = 0 : h.push(\"ofs=\" + f);\r\n var n = !0;\r\n for (var u = 0; u < c; u++) {\r\n var m = e[u].h;\r\n var r = e[u].g;\r\n m -= f;\r\n if (0 > m)\r\n f = Math.max(0, e[u].h - 100), n = !1;\r\n else\r\n try {\r\n md(r, h, \"req\" + m + \"_\");\r\n }\r\n catch (G) {\r\n d && d(r);\r\n }\r\n }\r\n if (n) {\r\n d = h.join(\"&\");\r\n break a;\r\n }\r\n }\r\n} a = a.l.splice(0, c); b.D = a; return d; }\r\nfunction Gc(a) { a.g || a.u || (a.Y = 1, zb(a.Ga, a), a.A = 0); }\r\nfunction Bc(a) { if (a.g || a.u || 3 <= a.A)\r\n return !1; a.Y++; a.u = K(q(a.Ga, a), Od(a, a.A)); a.A++; return !0; }\r\nk.Ga = function () { this.u = null; Rd(this); if (this.$ && !(this.L || null == this.g || 0 >= this.O)) {\r\n var a = 2 * this.O;\r\n this.h.info(\"BP detection timer enabled: \" + a);\r\n this.B = K(q(this.bb, this), a);\r\n} };\r\nk.bb = function () { this.B && (this.B = null, this.h.info(\"BP detection timeout reached.\"), this.h.info(\"Buffering proxy detected and switch to long-polling!\"), this.N = !1, this.L = !0, J(10), Ac(this), Rd(this)); };\r\nfunction wc(a) { null != a.B && (l.clearTimeout(a.B), a.B = null); }\r\nfunction Rd(a) { a.g = new M(a, a.h, \"rpc\", a.Y); null === a.o && (a.g.H = a.s); a.g.O = 0; var b = N(a.oa); R(b, \"RID\", \"rpc\"); R(b, \"SID\", a.J); R(b, \"CI\", a.N ? \"0\" : \"1\"); R(b, \"AID\", a.U); Kd(a, b); R(b, \"TYPE\", \"xmlhttp\"); a.o && a.s && Gd(b, a.o, a.s); a.K && a.g.setTimeout(a.K); var c = a.g; a = a.la; c.K = 1; c.v = jc(N(b)); c.s = null; c.U = !0; kc(c, a); }\r\nk.ab = function () { null != this.v && (this.v = null, Ac(this), Bc(this), J(19)); };\r\nfunction zc(a) { null != a.v && (l.clearTimeout(a.v), a.v = null); }\r\nfunction uc(a, b) { var c = null; if (a.g == b) {\r\n zc(a);\r\n wc(a);\r\n a.g = null;\r\n var d = 2;\r\n}\r\nelse if (yc(a.i, b))\r\n c = b.D, Fc(a.i, b), d = 1;\r\nelse\r\n return; a.I = b.N; if (0 != a.G)\r\n if (b.i)\r\n if (1 == d) {\r\n c = b.s ? b.s.length : 0;\r\n b = Date.now() - b.F;\r\n var e = a.C;\r\n d = Sb();\r\n D(d, new Vb(d, c, b, e));\r\n Hc(a);\r\n }\r\n else\r\n Gc(a);\r\n else if (e = b.o, 3 == e || 0 == e && 0 < a.I || !(1 == d && Nd(a, b) || 2 == d && Bc(a)))\r\n switch (c && 0 < c.length && (b = a.i, b.i = b.i.concat(c)), e) {\r\n case 1:\r\n Q(a, 5);\r\n break;\r\n case 4:\r\n Q(a, 10);\r\n break;\r\n case 3:\r\n Q(a, 6);\r\n break;\r\n default: Q(a, 2);\r\n } }\r\nfunction Od(a, b) { var c = a.Pa + Math.floor(Math.random() * a.$a); a.j || (c *= 2); return c * b; }\r\nfunction Q(a, b) { a.h.info(\"Error code \" + b); if (2 == b) {\r\n var c = null;\r\n a.j && (c = null);\r\n var d = q(a.jb, a);\r\n c || (c = new U(\"//www.google.com/images/cleardot.gif\"), l.location && \"http\" == l.location.protocol || Oc(c, \"https\"), jc(c));\r\n nd(c.toString(), d);\r\n}\r\nelse\r\n J(2); a.G = 0; a.j && a.j.va(b); Ld(a); Jd(a); }\r\nk.jb = function (a) { a ? (this.h.info(\"Successfully pinged google.com\"), J(2)) : (this.h.info(\"Failed to ping google.com\"), J(1)); };\r\nfunction Ld(a) { a.G = 0; a.I = -1; if (a.j) {\r\n if (0 != jd(a.i).length || 0 != a.l.length)\r\n a.i.i.length = 0, ra(a.l), a.l.length = 0;\r\n a.j.ua();\r\n} }\r\nfunction Ec(a, b, c) { var d = ad(c); if (\"\" != d.i)\r\n b && Pc(d, b + \".\" + d.i), Qc(d, d.m);\r\nelse {\r\n var e = l.location;\r\n d = bd(e.protocol, b ? b + \".\" + e.hostname : e.hostname, +e.port, c);\r\n} a.aa && xa(a.aa, function (e, f) { R(d, f, e); }); b = a.D; c = a.sa; b && c && R(d, b, c); R(d, \"VER\", a.ma); Kd(a, d); return d; }\r\nfunction nc(a, b, c) { if (b && !a.H)\r\n throw Error(\"Can't create secondary domain capable XhrIo object.\"); b = c && a.Ba && !a.qa ? new X(new pd({ ib: !0 })) : new X(a.qa); b.L = a.H; return b; }\r\nfunction Sd() { }\r\nk = Sd.prototype;\r\nk.xa = function () { };\r\nk.wa = function () { };\r\nk.va = function () { };\r\nk.ua = function () { };\r\nk.Oa = function () { };\r\nfunction Td() { if (y && !(10 <= Number(Ua)))\r\n throw Error(\"Environmental error: no available transport.\"); }\r\nTd.prototype.g = function (a, b) { return new Y(a, b); };\r\nfunction Y(a, b) {\r\n C.call(this);\r\n this.g = new Id(b);\r\n this.l = a;\r\n this.h = b && b.messageUrlParams || null;\r\n a = b && b.messageHeaders || null;\r\n b && b.clientProtocolHeaderRequired && (a ? a[\"X-Client-Protocol\"] = \"webchannel\" : a = { \"X-Client-Protocol\": \"webchannel\" });\r\n this.g.s = a;\r\n a = b && b.initMessageHeaders || null;\r\n b && b.messageContentType && (a ? a[\"X-WebChannel-Content-Type\"] = b.messageContentType : a = { \"X-WebChannel-Content-Type\": b.messageContentType });\r\n b && b.ya && (a ? a[\"X-WebChannel-Client-Profile\"] = b.ya : a = { \"X-WebChannel-Client-Profile\": b.ya });\r\n this.g.P =\r\n a;\r\n (a = b && b.httpHeadersOverwriteParam) && !sa(a) && (this.g.o = a);\r\n this.A = b && b.supportsCrossDomainXhr || !1;\r\n this.v = b && b.sendRawJson || !1;\r\n (b = b && b.httpSessionIdParam) && !sa(b) && (this.g.D = b, a = this.h, null !== a && b in a && (a = this.h, b in a && delete a[b]));\r\n this.j = new Z(this);\r\n}\r\nt(Y, C);\r\nY.prototype.m = function () { this.g.j = this.j; this.A && (this.g.H = !0); var a = this.g, b = this.l, c = this.h || void 0; a.Wa && (a.h.info(\"Origin Trials enabled.\"), zb(q(a.hb, a, b))); J(0); a.W = b; a.aa = c || {}; a.N = a.X; a.F = Ec(a, null, a.W); Hc(a); };\r\nY.prototype.close = function () { Ic(this.g); };\r\nY.prototype.u = function (a) { if (\"string\" === typeof a) {\r\n var b = {};\r\n b.__data__ = a;\r\n Md(this.g, b);\r\n}\r\nelse\r\n this.v ? (b = {}, b.__data__ = rb(a), Md(this.g, b)) : Md(this.g, a); };\r\nY.prototype.M = function () { this.g.j = null; delete this.j; Ic(this.g); delete this.g; Y.Z.M.call(this); };\r\nfunction Ud(a) { ac.call(this); var b = a.__sm__; if (b) {\r\n a: {\r\n for (var c in b) {\r\n a = c;\r\n break a;\r\n }\r\n a = void 0;\r\n }\r\n if (this.i = a)\r\n a = this.i, b = null !== b && a in b ? b[a] : void 0;\r\n this.data = b;\r\n}\r\nelse\r\n this.data = a; }\r\nt(Ud, ac);\r\nfunction Vd() { bc.call(this); this.status = 1; }\r\nt(Vd, bc);\r\nfunction Z(a) { this.g = a; }\r\nt(Z, Sd);\r\nZ.prototype.xa = function () { D(this.g, \"a\"); };\r\nZ.prototype.wa = function (a) { D(this.g, new Ud(a)); };\r\nZ.prototype.va = function (a) { D(this.g, new Vd(a)); };\r\nZ.prototype.ua = function () { D(this.g, \"b\"); }; /*\r\n\n Copyright 2017 Google LLC\r\n\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\n http://www.apache.org/licenses/LICENSE-2.0\r\n\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\nTd.prototype.createWebChannel = Td.prototype.g;\r\nY.prototype.send = Y.prototype.u;\r\nY.prototype.open = Y.prototype.m;\r\nY.prototype.close = Y.prototype.close;\r\nWb.NO_ERROR = 0;\r\nWb.TIMEOUT = 8;\r\nWb.HTTP_ERROR = 6;\r\nXb.COMPLETE = \"complete\";\r\n$b.EventType = L;\r\nL.OPEN = \"a\";\r\nL.CLOSE = \"b\";\r\nL.ERROR = \"c\";\r\nL.MESSAGE = \"d\";\r\nC.prototype.listen = C.prototype.N;\r\nX.prototype.listenOnce = X.prototype.O;\r\nX.prototype.getLastError = X.prototype.La;\r\nX.prototype.getLastErrorCode = X.prototype.Da;\r\nX.prototype.getStatus = X.prototype.ba;\r\nX.prototype.getResponseJson = X.prototype.Qa;\r\nX.prototype.getResponseText = X.prototype.ga;\r\nX.prototype.send = X.prototype.ea;\r\nvar createWebChannelTransport = function () { return new Td; };\r\nvar getStatEventTarget = function () { return Sb(); };\r\nvar ErrorCode = Wb;\r\nvar EventType = Xb;\r\nvar Event = H;\r\nvar Stat = { rb: 0, ub: 1, vb: 2, Ob: 3, Tb: 4, Qb: 5, Rb: 6, Pb: 7, Nb: 8, Sb: 9, PROXY: 10, NOPROXY: 11, Lb: 12, Hb: 13, Ib: 14, Gb: 15, Jb: 16, Kb: 17, nb: 18, mb: 19, ob: 20 };\r\nvar FetchXmlHttpFactory = pd;\r\nvar WebChannel = $b;\r\nvar XhrIo = X;\r\n\r\nvar esm = {\r\n createWebChannelTransport: createWebChannelTransport,\r\n getStatEventTarget: getStatEventTarget,\r\n ErrorCode: ErrorCode,\r\n EventType: EventType,\r\n Event: Event,\r\n Stat: Stat,\r\n FetchXmlHttpFactory: FetchXmlHttpFactory,\r\n WebChannel: WebChannel,\r\n XhrIo: XhrIo\r\n};\n\nexport default esm;\nexport { ErrorCode, Event, EventType, FetchXmlHttpFactory, Stat, WebChannel, XhrIo, createWebChannelTransport, getStatEventTarget };\n//# sourceMappingURL=index.esm.js.map\n","/*!\n * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nvar noop = function noop() {};\n\nvar _WINDOW = {};\nvar _DOCUMENT = {};\nvar _MUTATION_OBSERVER = null;\nvar _PERFORMANCE = {\n mark: noop,\n measure: noop\n};\n\ntry {\n if (typeof window !== 'undefined') _WINDOW = window;\n if (typeof document !== 'undefined') _DOCUMENT = document;\n if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;\n if (typeof performance !== 'undefined') _PERFORMANCE = performance;\n} catch (e) {}\n\nvar _ref = _WINDOW.navigator || {},\n _ref$userAgent = _ref.userAgent,\n userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;\n\nvar WINDOW = _WINDOW;\nvar DOCUMENT = _DOCUMENT;\nvar MUTATION_OBSERVER = _MUTATION_OBSERVER;\nvar PERFORMANCE = _PERFORMANCE;\nvar IS_BROWSER = !!WINDOW.document;\nvar IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nvar IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\n\nvar NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nvar UNITS_IN_GRID = 16;\nvar DEFAULT_FAMILY_PREFIX = 'fa';\nvar DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nvar DATA_FA_I2SVG = 'data-fa-i2svg';\nvar DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nvar DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\nvar DATA_PREFIX = 'data-prefix';\nvar DATA_ICON = 'data-icon';\nvar HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\nvar MUTATION_APPROACH_ASYNC = 'async';\nvar TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\nvar PRODUCTION = function () {\n try {\n return process.env.NODE_ENV === 'production';\n } catch (e) {\n return false;\n }\n}();\nvar PREFIX_TO_STYLE = {\n 'fas': 'solid',\n 'far': 'regular',\n 'fal': 'light',\n 'fad': 'duotone',\n 'fab': 'brands',\n 'fak': 'kit',\n 'fa': 'solid'\n};\nvar STYLE_TO_PREFIX = {\n 'solid': 'fas',\n 'regular': 'far',\n 'light': 'fal',\n 'duotone': 'fad',\n 'brands': 'fab',\n 'kit': 'fak'\n};\nvar LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nvar FONT_FAMILY_PATTERN = /Font Awesome ([5 ]*)(Solid|Regular|Light|Duotone|Brands|Free|Pro|Kit).*/i; // TODO: do we need to handle font-weight for kit SVG pseudo-elements?\n\nvar FONT_WEIGHT_TO_PREFIX = {\n '900': 'fas',\n '400': 'far',\n 'normal': 'far',\n '300': 'fal'\n};\nvar oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nvar oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);\nvar ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\nvar DUOTONE_CLASSES = {\n GROUP: 'group',\n SWAP_OPACITY: 'swap-opacity',\n PRIMARY: 'primary',\n SECONDARY: 'secondary'\n};\nvar RESERVED_CLASSES = ['xs', 'sm', 'lg', 'fw', 'ul', 'li', 'border', 'pull-left', 'pull-right', 'spin', 'pulse', 'rotate-90', 'rotate-180', 'rotate-270', 'flip-horizontal', 'flip-vertical', 'flip-both', 'stack', 'stack-1x', 'stack-2x', 'inverse', 'layers', 'layers-text', 'layers-counter', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY].concat(oneToTen.map(function (n) {\n return \"\".concat(n, \"x\");\n})).concat(oneToTwenty.map(function (n) {\n return \"w-\".concat(n);\n}));\n\nvar initial = WINDOW.FontAwesomeConfig || {};\n\nfunction getAttrConfig(attr) {\n var element = DOCUMENT.querySelector('script[' + attr + ']');\n\n if (element) {\n return element.getAttribute(attr);\n }\n}\n\nfunction coerce(val) {\n // Getting an empty string will occur if the attribute is set on the HTML tag but without a value\n // We'll assume that this is an indication that it should be toggled to true\n // For example \n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\n\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n var attrs = [['data-family-prefix', 'familyPrefix'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n attrs.forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n attr = _ref2[0],\n key = _ref2[1];\n\n var val = coerce(getAttrConfig(attr));\n\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\n\nvar _default = {\n familyPrefix: DEFAULT_FAMILY_PREFIX,\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n mutateApproach: 'async',\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n};\n\nvar _config = _objectSpread({}, _default, initial);\n\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\n\nvar config = _objectSpread({}, _config);\n\nWINDOW.FontAwesomeConfig = config;\n\nvar w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\n\nvar functions = [];\n\nvar listener = function listener() {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(function (fn) {\n return fn();\n });\n};\n\nvar loaded = false;\n\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nfunction domready (fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nvar PENDING = 'pending';\nvar SETTLED = 'settled';\nvar FULFILLED = 'fulfilled';\nvar REJECTED = 'rejected';\n\nvar NOOP = function NOOP() {};\n\nvar isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function';\nvar asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate;\nvar asyncQueue = [];\nvar asyncTimer;\n\nfunction asyncFlush() {\n // run promise callbacks\n for (var i = 0; i < asyncQueue.length; i++) {\n asyncQueue[i][0](asyncQueue[i][1]);\n } // reset async asyncQueue\n\n\n asyncQueue = [];\n asyncTimer = false;\n}\n\nfunction asyncCall(callback, arg) {\n asyncQueue.push([callback, arg]);\n\n if (!asyncTimer) {\n asyncTimer = true;\n asyncSetTimer(asyncFlush, 0);\n }\n}\n\nfunction invokeResolver(resolver, promise) {\n function resolvePromise(value) {\n resolve(promise, value);\n }\n\n function rejectPromise(reason) {\n reject(promise, reason);\n }\n\n try {\n resolver(resolvePromise, rejectPromise);\n } catch (e) {\n rejectPromise(e);\n }\n}\n\nfunction invokeCallback(subscriber) {\n var owner = subscriber.owner;\n var settled = owner._state;\n var value = owner._data;\n var callback = subscriber[settled];\n var promise = subscriber.then;\n\n if (typeof callback === 'function') {\n settled = FULFILLED;\n\n try {\n value = callback(value);\n } catch (e) {\n reject(promise, e);\n }\n }\n\n if (!handleThenable(promise, value)) {\n if (settled === FULFILLED) {\n resolve(promise, value);\n }\n\n if (settled === REJECTED) {\n reject(promise, value);\n }\n }\n}\n\nfunction handleThenable(promise, value) {\n var resolved;\n\n try {\n if (promise === value) {\n throw new TypeError('A promises callback cannot return that same promise.');\n }\n\n if (value && (typeof value === 'function' || _typeof(value) === 'object')) {\n // then should be retrieved only once\n var then = value.then;\n\n if (typeof then === 'function') {\n then.call(value, function (val) {\n if (!resolved) {\n resolved = true;\n\n if (value === val) {\n fulfill(promise, val);\n } else {\n resolve(promise, val);\n }\n }\n }, function (reason) {\n if (!resolved) {\n resolved = true;\n reject(promise, reason);\n }\n });\n return true;\n }\n }\n } catch (e) {\n if (!resolved) {\n reject(promise, e);\n }\n\n return true;\n }\n\n return false;\n}\n\nfunction resolve(promise, value) {\n if (promise === value || !handleThenable(promise, value)) {\n fulfill(promise, value);\n }\n}\n\nfunction fulfill(promise, value) {\n if (promise._state === PENDING) {\n promise._state = SETTLED;\n promise._data = value;\n asyncCall(publishFulfillment, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state === PENDING) {\n promise._state = SETTLED;\n promise._data = reason;\n asyncCall(publishRejection, promise);\n }\n}\n\nfunction publish(promise) {\n promise._then = promise._then.forEach(invokeCallback);\n}\n\nfunction publishFulfillment(promise) {\n promise._state = FULFILLED;\n publish(promise);\n}\n\nfunction publishRejection(promise) {\n promise._state = REJECTED;\n publish(promise);\n\n if (!promise._handled && isNode) {\n global.process.emit('unhandledRejection', promise._data, promise);\n }\n}\n\nfunction notifyRejectionHandled(promise) {\n global.process.emit('rejectionHandled', promise);\n}\n/**\n * @class\n */\n\n\nfunction P(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('Promise resolver ' + resolver + ' is not a function');\n }\n\n if (this instanceof P === false) {\n throw new TypeError('Failed to construct \\'Promise\\': Please use the \\'new\\' operator, this object constructor cannot be called as a function.');\n }\n\n this._then = [];\n invokeResolver(resolver, this);\n}\n\nP.prototype = {\n constructor: P,\n _state: PENDING,\n _then: null,\n _data: undefined,\n _handled: false,\n then: function then(onFulfillment, onRejection) {\n var subscriber = {\n owner: this,\n then: new this.constructor(NOOP),\n fulfilled: onFulfillment,\n rejected: onRejection\n };\n\n if ((onRejection || onFulfillment) && !this._handled) {\n this._handled = true;\n\n if (this._state === REJECTED && isNode) {\n asyncCall(notifyRejectionHandled, this);\n }\n }\n\n if (this._state === FULFILLED || this._state === REJECTED) {\n // already resolved, call callback async\n asyncCall(invokeCallback, subscriber);\n } else {\n // subscribe\n this._then.push(subscriber);\n }\n\n return subscriber.then;\n },\n catch: function _catch(onRejection) {\n return this.then(null, onRejection);\n }\n};\n\nP.all = function (promises) {\n if (!Array.isArray(promises)) {\n throw new TypeError('You must pass an array to Promise.all().');\n }\n\n return new P(function (resolve, reject) {\n var results = [];\n var remaining = 0;\n\n function resolver(index) {\n remaining++;\n return function (value) {\n results[index] = value;\n\n if (! --remaining) {\n resolve(results);\n }\n };\n }\n\n for (var i = 0, promise; i < promises.length; i++) {\n promise = promises[i];\n\n if (promise && typeof promise.then === 'function') {\n promise.then(resolver(i), reject);\n } else {\n results[i] = promise;\n }\n }\n\n if (!remaining) {\n resolve(results);\n }\n });\n};\n\nP.race = function (promises) {\n if (!Array.isArray(promises)) {\n throw new TypeError('You must pass an array to Promise.race().');\n }\n\n return new P(function (resolve, reject) {\n for (var i = 0, promise; i < promises.length; i++) {\n promise = promises[i];\n\n if (promise && typeof promise.then === 'function') {\n promise.then(resolve, reject);\n } else {\n resolve(promise);\n }\n }\n });\n};\n\nP.resolve = function (value) {\n if (value && _typeof(value) === 'object' && value.constructor === P) {\n return value;\n }\n\n return new P(function (resolve) {\n resolve(value);\n });\n};\n\nP.reject = function (reason) {\n return new P(function (resolve, reject) {\n reject(reason);\n });\n};\n\nvar picked = typeof Promise === 'function' ? Promise : P;\n\nvar d = UNITS_IN_GRID;\nvar meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\n\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n\n var style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n var headChildren = DOCUMENT.head.childNodes;\n var beforeChild = null;\n\n for (var i = headChildren.length - 1; i > -1; i--) {\n var child = headChildren[i];\n var tagName = (child.tagName || '').toUpperCase();\n\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\nvar idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n var size = 12;\n var id = '';\n\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n\n return id;\n}\nfunction toArray(obj) {\n var array = [];\n\n for (var i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n\n return array;\n}\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n return i;\n });\n }\n}\nfunction getIconName(familyPrefix, cls) {\n var parts = cls.split('-');\n var prefix = parts[0];\n var iconName = parts.slice(1).join('-');\n\n if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(//g, '>');\n}\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce(function (acc, styleName) {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName], \";\");\n }, '');\n}\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n var transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer: outer,\n inner: inner,\n path: path\n };\n}\nfunction transformForCss(_ref2) {\n var transform = _ref2.transform,\n _ref2$width = _ref2.width,\n width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n _ref2$height = _ref2.height,\n height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n _ref2$startCentered = _ref2.startCentered,\n startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n var val = '';\n\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d - width / 2, \"em, \").concat(transform.y / d - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d, \"em), calc(-50% + \").concat(transform.y / d, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d, \"em, \").concat(transform.y / d, \"em) \");\n }\n\n val += \"scale(\".concat(transform.size / d * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\n\nvar ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\n\nfunction fillBlack(abstract) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (abstract.attributes && (abstract.attributes.fill || force)) {\n abstract.attributes.fill = 'black';\n }\n\n return abstract;\n}\n\nfunction deGroup(abstract) {\n if (abstract.tag === 'g') {\n return abstract.children;\n } else {\n return [abstract];\n }\n}\n\nfunction makeIconMasking (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n mask = _ref.mask,\n explicitMaskId = _ref.maskId,\n transform = _ref.transform;\n var mainWidth = main.width,\n mainPath = main.icon;\n var maskWidth = mask.width,\n maskPath = mask.icon;\n var trans = transformForSvg({\n transform: transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n var maskRect = {\n tag: 'rect',\n attributes: _objectSpread({}, ALL_SPACE, {\n fill: 'white'\n })\n };\n var maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n var maskInnerGroup = {\n tag: 'g',\n attributes: _objectSpread({}, trans.inner),\n children: [fillBlack(_objectSpread({\n tag: mainPath.tag,\n attributes: _objectSpread({}, mainPath.attributes, trans.path)\n }, maskInnerGroupChildrenMixin))]\n };\n var maskOuterGroup = {\n tag: 'g',\n attributes: _objectSpread({}, trans.outer),\n children: [maskInnerGroup]\n };\n var maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n var clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n var maskTag = {\n tag: 'mask',\n attributes: _objectSpread({}, ALL_SPACE, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n var defs = {\n tag: 'defs',\n children: [{\n tag: 'clipPath',\n attributes: {\n id: clipId\n },\n children: deGroup(maskPath)\n }, maskTag]\n };\n children.push(defs, {\n tag: 'rect',\n attributes: _objectSpread({\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\")\n }, ALL_SPACE)\n });\n return {\n children: children,\n attributes: attributes\n };\n}\n\nfunction makeIconStandard (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n transform = _ref.transform,\n styles = _ref.styles;\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n if (transformIsMeaningful(transform)) {\n var trans = transformForSvg({\n transform: transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n children.push({\n tag: 'g',\n attributes: _objectSpread({}, trans.outer),\n children: [{\n tag: 'g',\n attributes: _objectSpread({}, trans.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _objectSpread({}, main.icon.attributes, trans.path)\n }]\n }]\n });\n } else {\n children.push(main.icon);\n }\n\n return {\n children: children,\n attributes: attributes\n };\n}\n\nfunction asIcon (_ref) {\n var children = _ref.children,\n main = _ref.main,\n mask = _ref.mask,\n attributes = _ref.attributes,\n styles = _ref.styles,\n transform = _ref.transform;\n\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n var width = main.width,\n height = main.height;\n var offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_objectSpread({}, styles, {\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n }));\n }\n\n return [{\n tag: 'svg',\n attributes: attributes,\n children: children\n }];\n}\n\nfunction asSymbol (_ref) {\n var prefix = _ref.prefix,\n iconName = _ref.iconName,\n children = _ref.children,\n attributes = _ref.attributes,\n symbol = _ref.symbol;\n var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.familyPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _objectSpread({}, attributes, {\n id: id\n }),\n children: children\n }]\n }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n var _params$icons = params.icons,\n main = _params$icons.main,\n mask = _params$icons.mask,\n prefix = params.prefix,\n iconName = params.iconName,\n transform = params.transform,\n symbol = params.symbol,\n title = params.title,\n maskId = params.maskId,\n titleId = params.titleId,\n extra = params.extra,\n _params$watchable = params.watchable,\n watchable = _params$watchable === void 0 ? false : _params$watchable;\n\n var _ref = mask.found ? mask : main,\n width = _ref.width,\n height = _ref.height;\n\n var isUploadedIcon = prefix === 'fak';\n var widthClass = isUploadedIcon ? '' : \"fa-w-\".concat(Math.ceil(width / height * 16));\n var attrClass = [config.replacementClass, iconName ? \"\".concat(config.familyPrefix, \"-\").concat(iconName) : '', widthClass].filter(function (c) {\n return extra.classes.indexOf(c) === -1;\n }).filter(function (c) {\n return c !== '' || !!c;\n }).concat(extra.classes).join(' ');\n var content = {\n children: [],\n attributes: _objectSpread({}, extra.attributes, {\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': extra.attributes.role || 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n })\n };\n var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n } : {};\n\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n\n if (title) content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n },\n children: [title]\n });\n\n var args = _objectSpread({}, content, {\n prefix: prefix,\n iconName: iconName,\n main: main,\n mask: mask,\n maskId: maskId,\n transform: transform,\n symbol: symbol,\n styles: _objectSpread({}, uploadedIconWidthStyle, extra.styles)\n });\n\n var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args),\n children = _ref2.children,\n attributes = _ref2.attributes;\n\n args.children = children;\n args.attributes = attributes;\n\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\nfunction makeLayersTextAbstract(params) {\n var content = params.content,\n width = params.width,\n height = params.height,\n transform = params.transform,\n title = params.title,\n extra = params.extra,\n _params$watchable2 = params.watchable,\n watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n\n var attributes = _objectSpread({}, extra.attributes, title ? {\n 'title': title\n } : {}, {\n 'class': extra.classes.join(' ')\n });\n\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n\n var styles = _objectSpread({}, extra.styles);\n\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform: transform,\n startCentered: true,\n width: width,\n height: height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\nfunction makeLayersCounterAbstract(params) {\n var content = params.content,\n title = params.title,\n extra = params.extra;\n\n var attributes = _objectSpread({}, extra.attributes, title ? {\n 'title': title\n } : {}, {\n 'class': extra.classes.join(' ')\n });\n\n var styleString = joinStyles(extra.styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\n\nvar noop$1 = function noop() {};\n\nvar p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nvar preamble = \"FA \\\"5.15.4\\\"\";\n\nvar begin = function begin(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return function () {\n return end(name);\n };\n};\n\nvar end = function end(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\n\nvar perf = {\n begin: begin,\n end: end\n};\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\n\n\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i,\n key,\n result;\n\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n\n return result;\n};\n\nfunction toHex(unicode) {\n var result = '';\n\n for (var i = 0; i < unicode.length; i++) {\n var hex = unicode.charCodeAt(i).toString(16);\n result += ('000' + hex).slice(-4);\n }\n\n return result;\n}\n\nfunction defineIcons(prefix, icons) {\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _params$skipHooks = params.skipHooks,\n skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n var normalized = Object.keys(icons).reduce(function (acc, iconName) {\n var icon = icons[iconName];\n var expanded = !!icon.icon;\n\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n\n return acc;\n }, {});\n\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalized);\n } else {\n namespace.styles[prefix] = _objectSpread({}, namespace.styles[prefix] || {}, normalized);\n }\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll easy the upgrade process for our users by automatically defining\n * this as well.\n */\n\n\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\n\nvar styles = namespace.styles,\n shims = namespace.shims;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\nvar build = function build() {\n var lookup = function lookup(reducer) {\n return reduce(styles, function (o, style, prefix) {\n o[prefix] = reduce(style, reducer, {});\n return o;\n }, {});\n };\n\n _byUnicode = lookup(function (acc, icon, iconName) {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n\n return acc;\n });\n _byLigature = lookup(function (acc, icon, iconName) {\n var ligatures = icon[2];\n acc[iconName] = iconName;\n ligatures.forEach(function (ligature) {\n acc[ligature] = iconName;\n });\n return acc;\n });\n var hasRegular = 'far' in styles;\n _byOldName = reduce(shims, function (acc, shim) {\n var oldName = shim[0];\n var prefix = shim[1];\n var iconName = shim[2];\n\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n\n acc[oldName] = {\n prefix: prefix,\n iconName: iconName\n };\n return acc;\n }, {});\n};\nbuild();\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\n\nvar styles$1 = namespace.styles;\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\nfunction getCanonicalIcon(values) {\n return values.reduce(function (acc, cls) {\n var iconName = getIconName(config.familyPrefix, cls);\n\n if (styles$1[cls]) {\n acc.prefix = cls;\n } else if (config.autoFetchSvg && Object.keys(PREFIX_TO_STYLE).indexOf(cls) > -1) {\n acc.prefix = cls;\n } else if (iconName) {\n var shim = acc.prefix === 'fa' ? byOldName(iconName) : {};\n acc.iconName = shim.iconName || iconName;\n acc.prefix = shim.prefix || acc.prefix;\n } else if (cls !== config.replacementClass && cls.indexOf('fa-w-') !== 0) {\n acc.rest.push(cls);\n }\n\n return acc;\n }, emptyCanonicalIcon());\n}\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix: prefix,\n iconName: iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\nfunction toHtml(abstractNodes) {\n var tag = abstractNodes.tag,\n _abstractNodes$attrib = abstractNodes.attributes,\n attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n _abstractNodes$childr = abstractNodes.children,\n children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"\");\n }\n}\n\nvar noop$2 = function noop() {};\n\nfunction isWatched(node) {\n var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\n\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n\n var mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\n\nvar mutators = {\n replace: function replace(mutation) {\n var node = mutation[0];\n var abstract = mutation[1];\n var newOuterHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n\n if (node.parentNode && node.outerHTML) {\n node.outerHTML = newOuterHTML + (config.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? \"\") : '');\n } else if (node.parentNode) {\n var newNode = document.createElement('span');\n node.parentNode.replaceChild(newNode, node);\n newNode.outerHTML = newOuterHTML;\n }\n },\n nest: function nest(mutation) {\n var node = mutation[0];\n var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n\n var forSvg = new RegExp(\"\".concat(config.familyPrefix, \"-.*\"));\n delete abstract[0].attributes.style;\n delete abstract[0].attributes.id;\n var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n var newInnerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.setAttribute('class', splitClasses.toNode.join(' '));\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\n\nfunction performOperationSync(op) {\n op();\n}\n\nfunction perform(mutations, callback) {\n var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n var frame = performOperationSync;\n\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n\n frame(function () {\n var mutator = getMutator();\n var mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\nvar disabled = false;\nfunction disableObservation() {\n disabled = true;\n}\nfunction enableObservation() {\n disabled = false;\n}\nvar mo = null;\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n\n if (!config.observeMutations) {\n return;\n }\n\n var treeCallback = options.treeCallback,\n nodeCallback = options.nodeCallback,\n pseudoElementsCallback = options.pseudoElementsCallback,\n _options$observeMutat = options.observeMutationsRoot,\n observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n mo = new MUTATION_OBSERVER(function (objects) {\n if (disabled) return;\n toArray(objects).forEach(function (mutationRecord) {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n\n treeCallback(mutationRecord.target);\n }\n\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class') {\n var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n prefix = _getCanonicalIcon.prefix,\n iconName = _getCanonicalIcon.iconName;\n\n if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix);\n if (iconName) mutationRecord.target.setAttribute('data-icon', iconName);\n } else {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n}\nfunction disconnect() {\n if (!mo) return;\n mo.disconnect();\n}\n\nfunction styleParser (node) {\n var style = node.getAttribute('style');\n var val = [];\n\n if (style) {\n val = style.split(';').reduce(function (acc, style) {\n var styles = style.split(':');\n var prop = styles[0];\n var value = styles.slice(1);\n\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n\n return acc;\n }, {});\n }\n\n return val;\n}\n\nfunction classParser (node) {\n var existingPrefix = node.getAttribute('data-prefix');\n var existingIconName = node.getAttribute('data-icon');\n var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n var val = getCanonicalIcon(classArray(node));\n\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n\n if (val.prefix && innerText.length > 1) {\n val.iconName = byLigature(val.prefix, node.innerText);\n } else if (val.prefix && innerText.length === 1) {\n val.iconName = byUnicode(val.prefix, toHex(node.innerText));\n }\n\n return val;\n}\n\nvar parseTransformString = function parseTransformString(transformString) {\n var transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n\n if (!transformString) {\n return transform;\n } else {\n return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n var parts = n.toLowerCase().split('-');\n var first = parts[0];\n var rest = parts.slice(1).join('-');\n\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n\n rest = parseFloat(rest);\n\n if (isNaN(rest)) {\n return acc;\n }\n\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n\n case 'left':\n acc.x = acc.x - rest;\n break;\n\n case 'right':\n acc.x = acc.x + rest;\n break;\n\n case 'up':\n acc.y = acc.y - rest;\n break;\n\n case 'down':\n acc.y = acc.y + rest;\n break;\n\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n\n return acc;\n }, transform);\n }\n};\nfunction transformParser (node) {\n return parseTransformString(node.getAttribute('data-fa-transform'));\n}\n\nfunction symbolParser (node) {\n var symbol = node.getAttribute('data-fa-symbol');\n return symbol === null ? false : symbol === '' ? true : symbol;\n}\n\nfunction attributesParser (node) {\n var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n\n return acc;\n }, {});\n var title = node.getAttribute('title');\n var titleId = node.getAttribute('data-fa-title-id');\n\n if (config.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n extraAttributes['aria-hidden'] = 'true';\n extraAttributes['focusable'] = 'false';\n }\n }\n\n return extraAttributes;\n}\n\nfunction maskParser (node) {\n var mask = node.getAttribute('data-fa-mask');\n\n if (!mask) {\n return emptyCanonicalIcon();\n } else {\n return getCanonicalIcon(mask.split(' ').map(function (i) {\n return i.trim();\n }));\n }\n}\n\nfunction blankMeta() {\n return {\n iconName: null,\n title: null,\n titleId: null,\n prefix: null,\n transform: meaninglessTransform,\n symbol: false,\n mask: null,\n maskId: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\nfunction parseMeta(node) {\n var _classParser = classParser(node),\n iconName = _classParser.iconName,\n prefix = _classParser.prefix,\n extraClasses = _classParser.rest;\n\n var extraStyles = styleParser(node);\n var transform = transformParser(node);\n var symbol = symbolParser(node);\n var extraAttributes = attributesParser(node);\n var mask = maskParser(node);\n return {\n iconName: iconName,\n title: node.getAttribute('title'),\n titleId: node.getAttribute('data-fa-title-id'),\n prefix: prefix,\n transform: transform,\n symbol: symbol,\n mask: mask,\n maskId: node.getAttribute('data-fa-mask-id'),\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n };\n}\n\nfunction MissingIcon(error) {\n this.name = 'MissingIcon';\n this.message = error || 'Icon unavailable';\n this.stack = new Error().stack;\n}\nMissingIcon.prototype = Object.create(Error.prototype);\nMissingIcon.prototype.constructor = MissingIcon;\n\nvar FILL = {\n fill: 'currentColor'\n};\nvar ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n};\nvar RING = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n })\n};\n\nvar OPACITY_ANIMATE = _objectSpread({}, ANIMATION_BASE, {\n attributeName: 'opacity'\n});\n\nvar DOT = {\n tag: 'circle',\n attributes: _objectSpread({}, FILL, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, ANIMATION_BASE, {\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n })\n }, {\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '1;0;1;1;0;1;'\n })\n }]\n};\nvar QUESTION = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '1;0;0;0;0;1;'\n })\n }]\n};\nvar EXCLAMATION = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '0;0;1;1;0;0;'\n })\n }]\n};\nvar missing = {\n tag: 'g',\n children: [RING, DOT, QUESTION, EXCLAMATION]\n};\n\nvar styles$2 = namespace.styles;\nfunction asFoundIcon(icon) {\n var width = icon[0];\n var height = icon[1];\n\n var _icon$slice = icon.slice(4),\n _icon$slice2 = _slicedToArray(_icon$slice, 1),\n vectorData = _icon$slice2[0];\n\n var element = null;\n\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n fill: 'currentColor',\n d: vectorData[1]\n }\n }]\n };\n } else {\n element = {\n tag: 'path',\n attributes: {\n fill: 'currentColor',\n d: vectorData\n }\n };\n }\n\n return {\n found: true,\n width: width,\n height: height,\n icon: element\n };\n}\nfunction findIcon(iconName, prefix) {\n return new picked(function (resolve, reject) {\n var val = {\n found: false,\n width: 512,\n height: 512,\n icon: missing\n };\n\n if (iconName && prefix && styles$2[prefix] && styles$2[prefix][iconName]) {\n var icon = styles$2[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n\n if (iconName && prefix && !config.showMissingIcons) {\n reject(new MissingIcon(\"Icon is missing for prefix \".concat(prefix, \" with icon name \").concat(iconName)));\n } else {\n resolve(val);\n }\n });\n}\n\nvar styles$3 = namespace.styles;\n\nfunction generateSvgReplacementMutation(node, nodeMeta) {\n var iconName = nodeMeta.iconName,\n title = nodeMeta.title,\n titleId = nodeMeta.titleId,\n prefix = nodeMeta.prefix,\n transform = nodeMeta.transform,\n symbol = nodeMeta.symbol,\n mask = nodeMeta.mask,\n maskId = nodeMeta.maskId,\n extra = nodeMeta.extra;\n return new picked(function (resolve, reject) {\n picked.all([findIcon(iconName, prefix), findIcon(mask.iconName, mask.prefix)]).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n main = _ref2[0],\n mask = _ref2[1];\n\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main: main,\n mask: mask\n },\n prefix: prefix,\n iconName: iconName,\n transform: transform,\n symbol: symbol,\n mask: mask,\n maskId: maskId,\n title: title,\n titleId: titleId,\n extra: extra,\n watchable: true\n })]);\n });\n });\n}\n\nfunction generateLayersText(node, nodeMeta) {\n var title = nodeMeta.title,\n transform = nodeMeta.transform,\n extra = nodeMeta.extra;\n var width = null;\n var height = null;\n\n if (IS_IE) {\n var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n var boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n\n return picked.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width: width,\n height: height,\n transform: transform,\n title: title,\n extra: extra,\n watchable: true\n })]);\n}\n\nfunction generateMutation(node) {\n var nodeMeta = parseMeta(node);\n\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return generateLayersText(node, nodeMeta);\n } else {\n return generateSvgReplacementMutation(node, nodeMeta);\n }\n}\n\nfunction onTree(root) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return;\n var htmlClassList = DOCUMENT.documentElement.classList;\n\n var hclAdd = function hclAdd(suffix) {\n return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var hclRemove = function hclRemove(suffix) {\n return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$3);\n var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p) {\n return \".\".concat(p, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n })).join(', ');\n\n if (prefixesDomQuery.length === 0) {\n return;\n }\n\n var candidates = [];\n\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e) {// noop\n }\n\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return;\n }\n\n var mark = perf.begin('onTree');\n var mutations = candidates.reduce(function (acc, node) {\n try {\n var mutation = generateMutation(node);\n\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e) {\n if (!PRODUCTION) {\n if (e instanceof MissingIcon) {\n console.error(e);\n }\n }\n }\n\n return acc;\n }, []);\n return new picked(function (resolve, reject) {\n picked.all(mutations).then(function (resolvedMutations) {\n perform(resolvedMutations, function () {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(function () {\n mark();\n reject();\n });\n });\n}\nfunction onNode(node) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(function (mutation) {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\n\nfunction replaceForPosition(node, position) {\n var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new picked(function (resolve, reject) {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n\n var children = toArray(node.children);\n var alreadyProcessedPseudoElement = children.filter(function (c) {\n return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n })[0];\n var styles = WINDOW.getComputedStyle(node, position);\n var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n var fontWeight = styles.getPropertyValue('font-weight');\n var content = styles.getPropertyValue('content');\n\n if (alreadyProcessedPseudoElement && !fontFamily) {\n // If we've already processed it but the current computed style does not result in a font-family,\n // that probably means that a class name that was previously present to make the icon has been\n // removed. So we now should delete the icon.\n node.removeChild(alreadyProcessedPseudoElement);\n return resolve();\n } else if (fontFamily && content !== 'none' && content !== '') {\n var _content = styles.getPropertyValue('content');\n\n var prefix = ~['Solid', 'Regular', 'Light', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight];\n var hexValue = toHex(_content.length === 3 ? _content.substr(1, 1) : _content);\n var iconName = byUnicode(prefix, hexValue);\n var iconIdentifier = iconName; // Only convert the pseudo element in this :before/:after position into an icon if we haven't\n // already done so with the same prefix and iconName\n\n if (iconName && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n\n var meta = blankMeta();\n var extra = meta.extra;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(function (main) {\n var abstract = makeInlineSvgAbstract(_objectSpread({}, meta, {\n icons: {\n main: main,\n mask: emptyCanonicalIcon()\n },\n prefix: prefix,\n iconName: iconIdentifier,\n extra: extra,\n watchable: true\n }));\n var element = DOCUMENT.createElement('svg');\n\n if (position === ':before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n\n element.outerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\n\nfunction replace(node) {\n return picked.all([replaceForPosition(node, ':before'), replaceForPosition(node, ':after')]);\n}\n\nfunction processable(node) {\n return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\n\nfunction searchPseudoElements (root) {\n if (!IS_DOM) return;\n return new picked(function (resolve, reject) {\n var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n var end = perf.begin('searchPseudoElements');\n disableObservation();\n picked.all(operations).then(function () {\n end();\n enableObservation();\n resolve();\n }).catch(function () {\n end();\n enableObservation();\n reject();\n });\n });\n}\n\nvar baseStyles = \"svg:not(:root).svg-inline--fa {\\n overflow: visible;\\n}\\n\\n.svg-inline--fa {\\n display: inline-block;\\n font-size: inherit;\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.225em;\\n}\\n.svg-inline--fa.fa-w-1 {\\n width: 0.0625em;\\n}\\n.svg-inline--fa.fa-w-2 {\\n width: 0.125em;\\n}\\n.svg-inline--fa.fa-w-3 {\\n width: 0.1875em;\\n}\\n.svg-inline--fa.fa-w-4 {\\n width: 0.25em;\\n}\\n.svg-inline--fa.fa-w-5 {\\n width: 0.3125em;\\n}\\n.svg-inline--fa.fa-w-6 {\\n width: 0.375em;\\n}\\n.svg-inline--fa.fa-w-7 {\\n width: 0.4375em;\\n}\\n.svg-inline--fa.fa-w-8 {\\n width: 0.5em;\\n}\\n.svg-inline--fa.fa-w-9 {\\n width: 0.5625em;\\n}\\n.svg-inline--fa.fa-w-10 {\\n width: 0.625em;\\n}\\n.svg-inline--fa.fa-w-11 {\\n width: 0.6875em;\\n}\\n.svg-inline--fa.fa-w-12 {\\n width: 0.75em;\\n}\\n.svg-inline--fa.fa-w-13 {\\n width: 0.8125em;\\n}\\n.svg-inline--fa.fa-w-14 {\\n width: 0.875em;\\n}\\n.svg-inline--fa.fa-w-15 {\\n width: 0.9375em;\\n}\\n.svg-inline--fa.fa-w-16 {\\n width: 1em;\\n}\\n.svg-inline--fa.fa-w-17 {\\n width: 1.0625em;\\n}\\n.svg-inline--fa.fa-w-18 {\\n width: 1.125em;\\n}\\n.svg-inline--fa.fa-w-19 {\\n width: 1.1875em;\\n}\\n.svg-inline--fa.fa-w-20 {\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: 0.3em;\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: 0.3em;\\n width: auto;\\n}\\n.svg-inline--fa.fa-border {\\n height: 1.5em;\\n}\\n.svg-inline--fa.fa-li {\\n width: 2em;\\n}\\n.svg-inline--fa.fa-fw {\\n width: 1.25em;\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -0.125em;\\n width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: #ff253a;\\n border-radius: 1em;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n color: #fff;\\n height: 1.5em;\\n line-height: 1;\\n max-width: 5em;\\n min-width: 1.5em;\\n overflow: hidden;\\n padding: 0.25em;\\n right: 0;\\n text-overflow: ellipsis;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: 0;\\n right: 0;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom right;\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: 0;\\n left: 0;\\n right: auto;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom left;\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n right: 0;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: 0;\\n right: auto;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top left;\\n transform-origin: top left;\\n}\\n\\n.fa-lg {\\n font-size: 1.3333333333em;\\n line-height: 0.75em;\\n vertical-align: -0.0667em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\n}\\n\\n.fa-1x {\\n font-size: 1em;\\n}\\n\\n.fa-2x {\\n font-size: 2em;\\n}\\n\\n.fa-3x {\\n font-size: 3em;\\n}\\n\\n.fa-4x {\\n font-size: 4em;\\n}\\n\\n.fa-5x {\\n font-size: 5em;\\n}\\n\\n.fa-6x {\\n font-size: 6em;\\n}\\n\\n.fa-7x {\\n font-size: 7em;\\n}\\n\\n.fa-8x {\\n font-size: 8em;\\n}\\n\\n.fa-9x {\\n font-size: 9em;\\n}\\n\\n.fa-10x {\\n font-size: 10em;\\n}\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: 2.5em;\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: -2em;\\n position: absolute;\\n text-align: center;\\n width: 2em;\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border: solid 0.08em #eee;\\n border-radius: 0.1em;\\n padding: 0.2em 0.25em 0.15em;\\n}\\n\\n.fa-pull-left {\\n float: left;\\n}\\n\\n.fa-pull-right {\\n float: right;\\n}\\n\\n.fa.fa-pull-left,\\n.fas.fa-pull-left,\\n.far.fa-pull-left,\\n.fal.fa-pull-left,\\n.fab.fa-pull-left {\\n margin-right: 0.3em;\\n}\\n.fa.fa-pull-right,\\n.fas.fa-pull-right,\\n.far.fa-pull-right,\\n.fal.fa-pull-right,\\n.fab.fa-pull-right {\\n margin-left: 0.3em;\\n}\\n\\n.fa-spin {\\n -webkit-animation: fa-spin 2s infinite linear;\\n animation: fa-spin 2s infinite linear;\\n}\\n\\n.fa-pulse {\\n -webkit-animation: fa-spin 1s infinite steps(8);\\n animation: fa-spin 1s infinite steps(8);\\n}\\n\\n@-webkit-keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\\n@keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\\\";\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\\\";\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\\\";\\n -webkit-transform: rotate(270deg);\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\\\";\\n -webkit-transform: scale(-1, 1);\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(1, -1);\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(-1, -1);\\n transform: scale(-1, -1);\\n}\\n\\n:root .fa-rotate-90,\\n:root .fa-rotate-180,\\n:root .fa-rotate-270,\\n:root .fa-flip-horizontal,\\n:root .fa-flip-vertical,\\n:root .fa-flip-both {\\n -webkit-filter: none;\\n filter: none;\\n}\\n\\n.fa-stack {\\n display: inline-block;\\n height: 2em;\\n position: relative;\\n width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2.5em;\\n}\\n\\n.fa-inverse {\\n color: #fff;\\n}\\n\\n.sr-only {\\n border: 0;\\n clip: rect(0, 0, 0, 0);\\n height: 1px;\\n margin: -1px;\\n overflow: hidden;\\n padding: 0;\\n position: absolute;\\n width: 1px;\\n}\\n\\n.sr-only-focusable:active, .sr-only-focusable:focus {\\n clip: auto;\\n height: auto;\\n margin: 0;\\n overflow: visible;\\n position: static;\\n width: auto;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: 1;\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: 1;\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black;\\n}\\n\\n.fad.fa-inverse {\\n color: #fff;\\n}\";\n\nfunction css () {\n var dfp = DEFAULT_FAMILY_PREFIX;\n var drc = DEFAULT_REPLACEMENT_CLASS;\n var fp = config.familyPrefix;\n var rc = config.replacementClass;\n var s = baseStyles;\n\n if (fp !== dfp || rc !== drc) {\n var dPatt = new RegExp(\"\\\\.\".concat(dfp, \"\\\\-\"), 'g');\n var customPropPatt = new RegExp(\"\\\\--\".concat(dfp, \"\\\\-\"), 'g');\n var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n\n return s;\n}\n\nvar Library =\n/*#__PURE__*/\nfunction () {\n function Library() {\n _classCallCheck(this, Library);\n\n this.definitions = {};\n }\n\n _createClass(Library, [{\n key: \"add\",\n value: function add() {\n var _this = this;\n\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n\n var additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(function (key) {\n _this.definitions[key] = _objectSpread({}, _this.definitions[key] || {}, additions[key]);\n defineIcons(key, additions[key]);\n build();\n });\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.definitions = {};\n }\n }, {\n key: \"_pullDefinitions\",\n value: function _pullDefinitions(additions, definition) {\n var normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(function (key) {\n var _normalized$key = normalized[key],\n prefix = _normalized$key.prefix,\n iconName = _normalized$key.iconName,\n icon = _normalized$key.icon;\n if (!additions[prefix]) additions[prefix] = {};\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n }]);\n\n return Library;\n}();\n\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n\n _cssInserted = true;\n }\n}\n\nfunction apiObject(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function get() {\n return val.abstract.map(function (a) {\n return toHtml(a);\n });\n }\n });\n Object.defineProperty(val, 'node', {\n get: function get() {\n if (!IS_DOM) return;\n var container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\n\nfunction findIconDefinition(iconLookup) {\n var _iconLookup$prefix = iconLookup.prefix,\n prefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix,\n iconName = iconLookup.iconName;\n if (!iconName) return;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\n\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n var mask = params.mask;\n\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n\n return next(iconDefinition, _objectSpread({}, params, {\n mask: mask\n }));\n };\n}\n\nvar library = new Library();\nvar noAuto = function noAuto() {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n disconnect();\n};\nvar _cssInserted = false;\nvar dom = {\n i2svg: function i2svg() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (IS_DOM) {\n ensureCss();\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node,\n _params$callback = params.callback,\n callback = _params$callback === void 0 ? function () {} : _params$callback;\n\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n\n return onTree(node, callback);\n } else {\n return picked.reject('Operation requires a DOM of some kind.');\n }\n },\n css: css,\n insertCss: function insertCss$$1() {\n if (!_cssInserted) {\n insertCss(css());\n\n _cssInserted = true;\n }\n },\n watch: function watch() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var autoReplaceSvgRoot = params.autoReplaceSvgRoot,\n observeMutationsRoot = params.observeMutationsRoot;\n\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n\n config.observeMutations = true;\n domready(function () {\n autoReplace({\n autoReplaceSvgRoot: autoReplaceSvgRoot\n });\n observe({\n treeCallback: onTree,\n nodeCallback: onNode,\n pseudoElementsCallback: searchPseudoElements,\n observeMutationsRoot: observeMutationsRoot\n });\n });\n }\n};\nvar parse = {\n transform: function transform(transformString) {\n return parseTransformString(transformString);\n }\n};\nvar icon = resolveIcons(function (iconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$symbol = params.symbol,\n symbol = _params$symbol === void 0 ? false : _params$symbol,\n _params$mask = params.mask,\n mask = _params$mask === void 0 ? null : _params$mask,\n _params$maskId = params.maskId,\n maskId = _params$maskId === void 0 ? null : _params$maskId,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$titleId = params.titleId,\n titleId = _params$titleId === void 0 ? null : _params$titleId,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n if (!iconDefinition) return;\n var prefix = iconDefinition.prefix,\n iconName = iconDefinition.iconName,\n icon = iconDefinition.icon;\n return apiObject(_objectSpread({\n type: 'icon'\n }, iconDefinition), function () {\n ensureCss();\n\n if (config.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n attributes['aria-hidden'] = 'true';\n attributes['focusable'] = 'false';\n }\n }\n\n return makeInlineSvgAbstract({\n icons: {\n main: asFoundIcon(icon),\n mask: mask ? asFoundIcon(mask.icon) : {\n found: false,\n width: null,\n height: null,\n icon: {}\n }\n },\n prefix: prefix,\n iconName: iconName,\n transform: _objectSpread({}, meaninglessTransform, transform),\n symbol: symbol,\n title: title,\n maskId: maskId,\n titleId: titleId,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: classes\n }\n });\n });\n});\nvar text = function text(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform2 = params.transform,\n transform = _params$transform2 === void 0 ? meaninglessTransform : _params$transform2,\n _params$title2 = params.title,\n title = _params$title2 === void 0 ? null : _params$title2,\n _params$classes2 = params.classes,\n classes = _params$classes2 === void 0 ? [] : _params$classes2,\n _params$attributes2 = params.attributes,\n attributes = _params$attributes2 === void 0 ? {} : _params$attributes2,\n _params$styles2 = params.styles,\n styles = _params$styles2 === void 0 ? {} : _params$styles2;\n return apiObject({\n type: 'text',\n content: content\n }, function () {\n ensureCss();\n return makeLayersTextAbstract({\n content: content,\n transform: _objectSpread({}, meaninglessTransform, transform),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n }\n });\n });\n};\nvar counter = function counter(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$title3 = params.title,\n title = _params$title3 === void 0 ? null : _params$title3,\n _params$classes3 = params.classes,\n classes = _params$classes3 === void 0 ? [] : _params$classes3,\n _params$attributes3 = params.attributes,\n attributes = _params$attributes3 === void 0 ? {} : _params$attributes3,\n _params$styles3 = params.styles,\n styles = _params$styles3 === void 0 ? {} : _params$styles3;\n return apiObject({\n type: 'counter',\n content: content\n }, function () {\n ensureCss();\n return makeLayersCounterAbstract({\n content: content.toString(),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n }\n });\n });\n};\nvar layer = function layer(assembler) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$classes4 = params.classes,\n classes = _params$classes4 === void 0 ? [] : _params$classes4;\n return apiObject({\n type: 'layer'\n }, function () {\n ensureCss();\n var children = [];\n assembler(function (args) {\n Array.isArray(args) ? args.map(function (a) {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n return [{\n tag: 'span',\n attributes: {\n class: [\"\".concat(config.familyPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n },\n children: children\n }];\n });\n};\nvar api = {\n noAuto: noAuto,\n config: config,\n dom: dom,\n library: library,\n parse: parse,\n findIconDefinition: findIconDefinition,\n icon: icon,\n text: text,\n counter: counter,\n layer: layer,\n toHtml: toHtml\n};\n\nvar autoReplace = function autoReplace() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\n\nexport { icon, noAuto, config, toHtml, layer, text, counter, library, dom, parse, findIconDefinition };\n","import { parse, icon } from '@fortawesome/fontawesome-svg-core';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\n// Get CSS class list from a props object\nfunction classList(props) {\n var _classes;\n\n var spin = props.spin,\n pulse = props.pulse,\n fixedWidth = props.fixedWidth,\n inverse = props.inverse,\n border = props.border,\n listItem = props.listItem,\n flip = props.flip,\n size = props.size,\n rotation = props.rotation,\n pull = props.pull; // map of CSS class names to properties\n\n var classes = (_classes = {\n 'fa-spin': spin,\n 'fa-pulse': pulse,\n 'fa-fw': fixedWidth,\n 'fa-inverse': inverse,\n 'fa-border': border,\n 'fa-li': listItem,\n 'fa-flip-horizontal': flip === 'horizontal' || flip === 'both',\n 'fa-flip-vertical': flip === 'vertical' || flip === 'both'\n }, _defineProperty(_classes, \"fa-\".concat(size), typeof size !== 'undefined' && size !== null), _defineProperty(_classes, \"fa-rotate-\".concat(rotation), typeof rotation !== 'undefined' && rotation !== null && rotation !== 0), _defineProperty(_classes, \"fa-pull-\".concat(pull), typeof pull !== 'undefined' && pull !== null), _defineProperty(_classes, 'fa-swap-opacity', props.swapOpacity), _classes); // map over all the keys in the classes object\n // return an array of the keys where the value for the key is not null\n\n return Object.keys(classes).map(function (key) {\n return classes[key] ? key : null;\n }).filter(function (key) {\n return key;\n });\n}\n\n// Camelize taken from humps\n// humps is copyright © 2012+ Dom Christie\n// Released under the MIT license.\n// Performant way to determine if object coerces to a number\nfunction _isNumerical(obj) {\n obj = obj - 0; // eslint-disable-next-line no-self-compare\n\n return obj === obj;\n}\n\nfunction camelize(string) {\n if (_isNumerical(string)) {\n return string;\n } // eslint-disable-next-line no-useless-escape\n\n\n string = string.replace(/[\\-_\\s]+(.)?/g, function (match, chr) {\n return chr ? chr.toUpperCase() : '';\n }); // Ensure 1st char is always lowercase\n\n return string.substr(0, 1).toLowerCase() + string.substr(1);\n}\n\nfunction capitalize(val) {\n return val.charAt(0).toUpperCase() + val.slice(1);\n}\n\nfunction styleToObject(style) {\n return style.split(';').map(function (s) {\n return s.trim();\n }).filter(function (s) {\n return s;\n }).reduce(function (acc, pair) {\n var i = pair.indexOf(':');\n var prop = camelize(pair.slice(0, i));\n var value = pair.slice(i + 1).trim();\n prop.startsWith('webkit') ? acc[capitalize(prop)] = value : acc[prop] = value;\n return acc;\n }, {});\n}\n\nfunction convert(createElement, element) {\n var extraProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (typeof element === 'string') {\n return element;\n }\n\n var children = (element.children || []).map(function (child) {\n return convert(createElement, child);\n });\n /* eslint-disable dot-notation */\n\n var mixins = Object.keys(element.attributes || {}).reduce(function (acc, key) {\n var val = element.attributes[key];\n\n switch (key) {\n case 'class':\n acc.attrs['className'] = val;\n delete element.attributes['class'];\n break;\n\n case 'style':\n acc.attrs['style'] = styleToObject(val);\n break;\n\n default:\n if (key.indexOf('aria-') === 0 || key.indexOf('data-') === 0) {\n acc.attrs[key.toLowerCase()] = val;\n } else {\n acc.attrs[camelize(key)] = val;\n }\n\n }\n\n return acc;\n }, {\n attrs: {}\n });\n\n var _extraProps$style = extraProps.style,\n existingStyle = _extraProps$style === void 0 ? {} : _extraProps$style,\n remaining = _objectWithoutProperties(extraProps, [\"style\"]);\n\n mixins.attrs['style'] = _objectSpread2({}, mixins.attrs['style'], {}, existingStyle);\n /* eslint-enable */\n\n return createElement.apply(void 0, [element.tag, _objectSpread2({}, mixins.attrs, {}, remaining)].concat(_toConsumableArray(children)));\n}\n\nvar PRODUCTION = false;\n\ntry {\n PRODUCTION = process.env.NODE_ENV === 'production';\n} catch (e) {}\n\nfunction log () {\n if (!PRODUCTION && console && typeof console.error === 'function') {\n var _console;\n\n (_console = console).error.apply(_console, arguments);\n }\n}\n\nfunction normalizeIconArgs(icon) {\n // this has everything that it needs to be rendered which means it was probably imported\n // directly from an icon svg package\n if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName && icon.icon) {\n return icon;\n }\n\n if (parse.icon) {\n return parse.icon(icon);\n } // if the icon is null, there's nothing to do\n\n\n if (icon === null) {\n return null;\n } // if the icon is an object and has a prefix and an icon name, return it\n\n\n if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName) {\n return icon;\n } // if it's an array with length of two\n\n\n if (Array.isArray(icon) && icon.length === 2) {\n // use the first item as prefix, second as icon name\n return {\n prefix: icon[0],\n iconName: icon[1]\n };\n } // if it's a string, use it as the icon name\n\n\n if (typeof icon === 'string') {\n return {\n prefix: 'fas',\n iconName: icon\n };\n }\n}\n\n// creates an object with a key of key\n// and a value of value\n// if certain conditions are met\nfunction objectWithKey(key, value) {\n // if the value is a non-empty array\n // or it's not an array but it is truthy\n // then create the object with the key and the value\n // if not, return an empty array\n return Array.isArray(value) && value.length > 0 || !Array.isArray(value) && value ? _defineProperty({}, key, value) : {};\n}\n\nfunction FontAwesomeIcon(_ref) {\n var forwardedRef = _ref.forwardedRef,\n props = _objectWithoutProperties(_ref, [\"forwardedRef\"]);\n\n var iconArgs = props.icon,\n maskArgs = props.mask,\n symbol = props.symbol,\n className = props.className,\n title = props.title,\n titleId = props.titleId;\n var iconLookup = normalizeIconArgs(iconArgs);\n var classes = objectWithKey('classes', [].concat(_toConsumableArray(classList(props)), _toConsumableArray(className.split(' '))));\n var transform = objectWithKey('transform', typeof props.transform === 'string' ? parse.transform(props.transform) : props.transform);\n var mask = objectWithKey('mask', normalizeIconArgs(maskArgs));\n var renderedIcon = icon(iconLookup, _objectSpread2({}, classes, {}, transform, {}, mask, {\n symbol: symbol,\n title: title,\n titleId: titleId\n }));\n\n if (!renderedIcon) {\n log('Could not find icon', iconLookup);\n return null;\n }\n\n var abstract = renderedIcon.abstract;\n var extraProps = {\n ref: forwardedRef\n };\n Object.keys(props).forEach(function (key) {\n // eslint-disable-next-line no-prototype-builtins\n if (!FontAwesomeIcon.defaultProps.hasOwnProperty(key)) {\n extraProps[key] = props[key];\n }\n });\n return convertCurry(abstract[0], extraProps);\n}\nFontAwesomeIcon.displayName = 'FontAwesomeIcon';\nFontAwesomeIcon.propTypes = {\n border: PropTypes.bool,\n className: PropTypes.string,\n mask: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n fixedWidth: PropTypes.bool,\n inverse: PropTypes.bool,\n flip: PropTypes.oneOf(['horizontal', 'vertical', 'both']),\n icon: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n listItem: PropTypes.bool,\n pull: PropTypes.oneOf(['right', 'left']),\n pulse: PropTypes.bool,\n rotation: PropTypes.oneOf([0, 90, 180, 270]),\n size: PropTypes.oneOf(['lg', 'xs', 'sm', '1x', '2x', '3x', '4x', '5x', '6x', '7x', '8x', '9x', '10x']),\n spin: PropTypes.bool,\n symbol: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n title: PropTypes.string,\n transform: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n swapOpacity: PropTypes.bool\n};\nFontAwesomeIcon.defaultProps = {\n border: false,\n className: '',\n mask: null,\n fixedWidth: false,\n inverse: false,\n flip: null,\n icon: null,\n listItem: false,\n pull: null,\n pulse: false,\n rotation: null,\n size: null,\n spin: false,\n symbol: false,\n title: '',\n transform: null,\n swapOpacity: false\n};\nvar convertCurry = convert.bind(null, React.createElement);\n\nexport { FontAwesomeIcon };\n","import { useState } from 'react';\n/**\n * A convenience hook around `useState` designed to be paired with\n * the component [callback ref](https://reactjs.org/docs/refs-and-the-dom.html#callback-refs) api.\n * Callback refs are useful over `useRef()` when you need to respond to the ref being set\n * instead of lazily accessing it in an effect.\n *\n * ```ts\n * const [element, attachRef] = useCallbackRef()\n *\n * useEffect(() => {\n * if (!element) return\n *\n * const calendar = new FullCalendar.Calendar(element)\n *\n * return () => {\n * calendar.destroy()\n * }\n * }, [element])\n *\n * return

\n * ```\n *\n * @category refs\n */\n\nexport default function useCallbackRef() {\n return useState(null);\n}","import { useEffect, useRef } from 'react';\n/**\n * Creates a `Ref` whose value is updated in an effect, ensuring the most recent\n * value is the one rendered with. Generally only required for Concurrent mode usage\n * where previous work in `render()` may be discarded befor being used.\n *\n * This is safe to access in an event handler.\n *\n * @param value The `Ref` value\n */\n\nfunction useCommittedRef(value) {\n var ref = useRef(value);\n useEffect(function () {\n ref.current = value;\n }, [value]);\n return ref;\n}\n\nexport default useCommittedRef;","import { useCallback } from 'react';\nimport useCommittedRef from './useCommittedRef';\nexport default function useEventCallback(fn) {\n var ref = useCommittedRef(fn);\n return useCallback(function () {\n return ref.current && ref.current.apply(ref, arguments);\n }, [ref]);\n}","import { useRef, useEffect } from 'react';\n/**\n * Track whether a component is current mounted. Generally less preferable than\n * properlly canceling effects so they don't run after a component is unmounted,\n * but helpful in cases where that isn't feasible, such as a `Promise` resolution.\n *\n * @returns a function that returns the current isMounted state of the component\n *\n * ```ts\n * const [data, setData] = useState(null)\n * const isMounted = useMounted()\n *\n * useEffect(() => {\n * fetchdata().then((newData) => {\n * if (isMounted()) {\n * setData(newData);\n * }\n * })\n * })\n * ```\n */\n\nexport default function useMounted() {\n var mounted = useRef(true);\n var isMounted = useRef(function () {\n return mounted.current;\n });\n useEffect(function () {\n return function () {\n mounted.current = false;\n };\n }, []);\n return isMounted.current;\n}","import useUpdatedRef from './useUpdatedRef';\nimport { useEffect } from 'react';\n/**\n * Attach a callback that fires when a component unmounts\n *\n * @param fn Handler to run when the component unmounts\n * @category effects\n */\n\nexport default function useWillUnmount(fn) {\n var onUnmount = useUpdatedRef(fn);\n useEffect(function () {\n return function () {\n return onUnmount.current();\n };\n }, []);\n}","import { useRef } from 'react';\n/**\n * Returns a ref that is immediately updated with the new value\n *\n * @param value The Ref value\n * @category refs\n */\n\nexport default function useUpdatedRef(value) {\n var valueRef = useRef(value);\n valueRef.current = value;\n return valueRef;\n}","'use strict';\nconst mapObj = require('map-obj');\nconst camelCase = require('camelcase');\nconst QuickLru = require('quick-lru');\n\nconst has = (array, key) => array.some(x => {\n\tif (typeof x === 'string') {\n\t\treturn x === key;\n\t}\n\n\tx.lastIndex = 0;\n\treturn x.test(key);\n});\n\nconst cache = new QuickLru({maxSize: 100000});\n\n// Reproduces behavior from `map-obj`\nconst isObject = value =>\n\ttypeof value === 'object' &&\n\tvalue !== null &&\n\t!(value instanceof RegExp) &&\n\t!(value instanceof Error) &&\n\t!(value instanceof Date);\n\nconst camelCaseConvert = (input, options) => {\n\tif (!isObject(input)) {\n\t\treturn input;\n\t}\n\n\toptions = {\n\t\tdeep: false,\n\t\tpascalCase: false,\n\t\t...options\n\t};\n\n\tconst {exclude, pascalCase, stopPaths, deep} = options;\n\n\tconst stopPathsSet = new Set(stopPaths);\n\n\tconst makeMapper = parentPath => (key, value) => {\n\t\tif (deep && isObject(value)) {\n\t\t\tconst path = parentPath === undefined ? key : `${parentPath}.${key}`;\n\n\t\t\tif (!stopPathsSet.has(path)) {\n\t\t\t\tvalue = mapObj(value, makeMapper(path));\n\t\t\t}\n\t\t}\n\n\t\tif (!(exclude && has(exclude, key))) {\n\t\t\tconst cacheKey = pascalCase ? `${key}_` : key;\n\n\t\t\tif (cache.has(cacheKey)) {\n\t\t\t\tkey = cache.get(cacheKey);\n\t\t\t} else {\n\t\t\t\tconst ret = camelCase(key, {pascalCase});\n\n\t\t\t\tif (key.length < 100) { // Prevent abuse\n\t\t\t\t\tcache.set(cacheKey, ret);\n\t\t\t\t}\n\n\t\t\t\tkey = ret;\n\t\t\t}\n\t\t}\n\n\t\treturn [key, value];\n\t};\n\n\treturn mapObj(input, makeMapper(undefined));\n};\n\nmodule.exports = (input, options) => {\n\tif (Array.isArray(input)) {\n\t\treturn Object.keys(input).map(key => camelCaseConvert(input[key], options));\n\t}\n\n\treturn camelCaseConvert(input, options);\n};\n","'use strict';\n\nconst preserveCamelCase = string => {\n\tlet isLastCharLower = false;\n\tlet isLastCharUpper = false;\n\tlet isLastLastCharUpper = false;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst character = string[i];\n\n\t\tif (isLastCharLower && /[a-zA-Z]/.test(character) && character.toUpperCase() === character) {\n\t\t\tstring = string.slice(0, i) + '-' + string.slice(i);\n\t\t\tisLastCharLower = false;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = true;\n\t\t\ti++;\n\t\t} else if (isLastCharUpper && isLastLastCharUpper && /[a-zA-Z]/.test(character) && character.toLowerCase() === character) {\n\t\t\tstring = string.slice(0, i - 1) + '-' + string.slice(i - 1);\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = false;\n\t\t\tisLastCharLower = true;\n\t\t} else {\n\t\t\tisLastCharLower = character.toLowerCase() === character && character.toUpperCase() !== character;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = character.toUpperCase() === character && character.toLowerCase() !== character;\n\t\t}\n\t}\n\n\treturn string;\n};\n\nconst camelCase = (input, options) => {\n\tif (!(typeof input === 'string' || Array.isArray(input))) {\n\t\tthrow new TypeError('Expected the input to be `string | string[]`');\n\t}\n\n\toptions = Object.assign({\n\t\tpascalCase: false\n\t}, options);\n\n\tconst postProcess = x => options.pascalCase ? x.charAt(0).toUpperCase() + x.slice(1) : x;\n\n\tif (Array.isArray(input)) {\n\t\tinput = input.map(x => x.trim())\n\t\t\t.filter(x => x.length)\n\t\t\t.join('-');\n\t} else {\n\t\tinput = input.trim();\n\t}\n\n\tif (input.length === 0) {\n\t\treturn '';\n\t}\n\n\tif (input.length === 1) {\n\t\treturn options.pascalCase ? input.toUpperCase() : input.toLowerCase();\n\t}\n\n\tconst hasUpperCase = input !== input.toLowerCase();\n\n\tif (hasUpperCase) {\n\t\tinput = preserveCamelCase(input);\n\t}\n\n\tinput = input\n\t\t.replace(/^[_.\\- ]+/, '')\n\t\t.toLowerCase()\n\t\t.replace(/[_.\\- ]+(\\w|$)/g, (_, p1) => p1.toUpperCase())\n\t\t.replace(/\\d+(\\w|$)/g, m => m.toUpperCase());\n\n\treturn postProcess(input);\n};\n\nmodule.exports = camelCase;\n// TODO: Remove this for the next major release\nmodule.exports.default = camelCase;\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Cleave\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"Cleave\"] = factory(root[\"React\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\n\tvar React = __webpack_require__(1); // eslint-disable-line no-unused-vars\n\tvar CreateReactClass = __webpack_require__(2);\n\n\tvar NumeralFormatter = __webpack_require__(9);\n\tvar DateFormatter = __webpack_require__(10);\n\tvar TimeFormatter = __webpack_require__(11);\n\tvar PhoneFormatter = __webpack_require__(12);\n\tvar CreditCardDetector = __webpack_require__(13);\n\tvar Util = __webpack_require__(14);\n\tvar DefaultProperties = __webpack_require__(15);\n\n\tvar cleaveReactClass = CreateReactClass({\n\t componentDidMount: function componentDidMount() {\n\t this.init();\n\t },\n\n\t componentDidUpdate: function componentDidUpdate(prevProps) {\n\t var owner = this,\n\t phoneRegionCode = (owner.props.options || {}).phoneRegionCode,\n\t newValue = owner.props.value,\n\t pps = owner.properties;\n\n\t owner.updateRegisteredEvents(owner.props);\n\t if (prevProps.value !== newValue && newValue !== undefined && newValue !== null) {\n\t newValue = newValue.toString();\n\n\t if (newValue !== owner.properties.result) {\n\t owner.properties.initValue = newValue;\n\t owner.onInput(newValue, true);\n\t }\n\t }\n\n\t // update phone region code\n\t var prevPhoneRegionCode = (prevProps.options || {}).phoneRegionCode;\n\t if (prevPhoneRegionCode !== phoneRegionCode && phoneRegionCode && phoneRegionCode !== owner.properties.phoneRegionCode) {\n\t owner.properties.phoneRegionCode = phoneRegionCode;\n\t owner.initPhoneFormatter();\n\t owner.onInput(owner.properties.result);\n\t }\n\n\t Util.setSelection(owner.element, owner.state.cursorPosition, pps.document);\n\t },\n\n\t updateRegisteredEvents: function updateRegisteredEvents(props) {\n\t var owner = this,\n\t _owner$registeredEven = owner.registeredEvents,\n\t onKeyDown = _owner$registeredEven.onKeyDown,\n\t onChange = _owner$registeredEven.onChange,\n\t onFocus = _owner$registeredEven.onFocus,\n\t onBlur = _owner$registeredEven.onBlur,\n\t onInit = _owner$registeredEven.onInit;\n\n\n\t if (props.onInit && props.onInit !== onInit) owner.registeredEvents.onInit = props.onInit;\n\t if (props.onChange && props.onChange !== onChange) owner.registeredEvents.onChange = props.onChange;\n\t if (props.onFocus && props.onFocus !== onFocus) owner.registeredEvents.onFocus = props.onFocus;\n\t if (props.onBlur && props.onBlur !== onBlur) owner.registeredEvents.onBlur = props.onBlur;\n\t if (props.onKeyDown && props.onKeyDown !== onKeyDown) owner.registeredEvents.onKeyDown = props.onKeyDown;\n\t },\n\n\t getInitialState: function getInitialState() {\n\t var owner = this,\n\t _owner$props = owner.props,\n\t value = _owner$props.value,\n\t options = _owner$props.options,\n\t onKeyDown = _owner$props.onKeyDown,\n\t onChange = _owner$props.onChange,\n\t onFocus = _owner$props.onFocus,\n\t onBlur = _owner$props.onBlur,\n\t onInit = _owner$props.onInit;\n\n\n\t owner.registeredEvents = {\n\t onInit: onInit || Util.noop,\n\t onChange: onChange || Util.noop,\n\t onFocus: onFocus || Util.noop,\n\t onBlur: onBlur || Util.noop,\n\t onKeyDown: onKeyDown || Util.noop\n\t };\n\n\t if (!options) {\n\t options = {};\n\t }\n\n\t options.initValue = value;\n\n\t owner.properties = DefaultProperties.assign({}, options);\n\n\t return {\n\t value: owner.properties.result,\n\t cursorPosition: 0\n\t };\n\t },\n\n\t init: function init() {\n\t var owner = this,\n\t pps = owner.properties;\n\n\t // so no need for this lib at all\n\t if (!pps.numeral && !pps.phone && !pps.creditCard && !pps.time && !pps.date && pps.blocksLength === 0 && !pps.prefix) {\n\t owner.onInput(pps.initValue);\n\t owner.registeredEvents.onInit(owner);\n\n\t return;\n\t }\n\n\t pps.maxLength = Util.getMaxLength(pps.blocks);\n\n\t owner.isAndroid = Util.isAndroid();\n\n\t owner.initPhoneFormatter();\n\t owner.initDateFormatter();\n\t owner.initTimeFormatter();\n\t owner.initNumeralFormatter();\n\n\t // avoid touch input field if value is null\n\t // otherwise Firefox will add red box-shadow for \n\t if (pps.initValue || pps.prefix && !pps.noImmediatePrefix) {\n\t owner.onInput(pps.initValue);\n\t }\n\n\t owner.registeredEvents.onInit(owner);\n\t },\n\n\t initNumeralFormatter: function initNumeralFormatter() {\n\t var owner = this,\n\t pps = owner.properties;\n\n\t if (!pps.numeral) {\n\t return;\n\t }\n\n\t pps.numeralFormatter = new NumeralFormatter(pps.numeralDecimalMark, pps.numeralIntegerScale, pps.numeralDecimalScale, pps.numeralThousandsGroupStyle, pps.numeralPositiveOnly, pps.stripLeadingZeroes, pps.prefix, pps.signBeforePrefix, pps.tailPrefix, pps.delimiter);\n\t },\n\n\t initTimeFormatter: function initTimeFormatter() {\n\t var owner = this,\n\t pps = owner.properties;\n\n\t if (!pps.time) {\n\t return;\n\t }\n\n\t pps.timeFormatter = new TimeFormatter(pps.timePattern, pps.timeFormat);\n\t pps.blocks = pps.timeFormatter.getBlocks();\n\t pps.blocksLength = pps.blocks.length;\n\t pps.maxLength = Util.getMaxLength(pps.blocks);\n\t },\n\n\t initDateFormatter: function initDateFormatter() {\n\t var owner = this,\n\t pps = owner.properties;\n\n\t if (!pps.date) {\n\t return;\n\t }\n\n\t pps.dateFormatter = new DateFormatter(pps.datePattern, pps.dateMin, pps.dateMax);\n\t pps.blocks = pps.dateFormatter.getBlocks();\n\t pps.blocksLength = pps.blocks.length;\n\t pps.maxLength = Util.getMaxLength(pps.blocks);\n\t },\n\n\t initPhoneFormatter: function initPhoneFormatter() {\n\t var owner = this,\n\t pps = owner.properties;\n\n\t if (!pps.phone) {\n\t return;\n\t }\n\n\t // Cleave.AsYouTypeFormatter should be provided by\n\t // external google closure lib\n\t try {\n\t pps.phoneFormatter = new PhoneFormatter(new pps.root.Cleave.AsYouTypeFormatter(pps.phoneRegionCode), pps.delimiter);\n\t } catch (ex) {\n\t throw new Error('Please include phone-type-formatter.{country}.js lib');\n\t }\n\t },\n\n\t setRawValue: function setRawValue(value) {\n\t var owner = this,\n\t pps = owner.properties;\n\n\t value = value !== undefined && value !== null ? value.toString() : '';\n\n\t if (pps.numeral) {\n\t value = value.replace('.', pps.numeralDecimalMark);\n\t }\n\n\t pps.postDelimiterBackspace = false;\n\n\t owner.onChange({\n\t target: { value: value },\n\n\t // Methods to better resemble a SyntheticEvent\n\t stopPropagation: Util.noop,\n\t preventDefault: Util.noop,\n\t persist: Util.noop\n\t });\n\t },\n\n\t getRawValue: function getRawValue() {\n\t var owner = this,\n\t pps = owner.properties,\n\t rawValue = pps.result;\n\n\t if (pps.rawValueTrimPrefix) {\n\t rawValue = Util.getPrefixStrippedValue(rawValue, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters, pps.noImmediatePrefix, pps.tailPrefix, pps.signBeforePrefix);\n\t }\n\n\t if (pps.numeral) {\n\t rawValue = pps.numeralFormatter ? pps.numeralFormatter.getRawValue(rawValue) : '';\n\t } else {\n\t rawValue = Util.stripDelimiters(rawValue, pps.delimiter, pps.delimiters);\n\t }\n\n\t return rawValue;\n\t },\n\n\t getISOFormatDate: function getISOFormatDate() {\n\t var owner = this,\n\t pps = owner.properties;\n\n\t return pps.date ? pps.dateFormatter.getISOFormatDate() : '';\n\t },\n\n\t getISOFormatTime: function getISOFormatTime() {\n\t var owner = this,\n\t pps = owner.properties;\n\n\t return pps.time ? pps.timeFormatter.getISOFormatTime() : '';\n\t },\n\n\t onInit: function onInit(owner) {\n\t return owner;\n\t },\n\n\t onKeyDown: function onKeyDown(event) {\n\t var owner = this,\n\t pps = owner.properties,\n\t charCode = event.which || event.keyCode;\n\n\t owner.lastInputValue = pps.result;\n\t owner.isBackward = charCode === 8;\n\n\t owner.registeredEvents.onKeyDown(event);\n\t },\n\n\t onFocus: function onFocus(event) {\n\t var owner = this,\n\t pps = owner.properties;\n\n\t if (pps.prefix && pps.noImmediatePrefix && !event.target.value) {\n\t owner.onInput(pps.prefix);\n\t }\n\n\t event.target.rawValue = owner.getRawValue();\n\t event.target.value = pps.result;\n\n\t owner.registeredEvents.onFocus(event);\n\n\t Util.fixPrefixCursor(owner.element, pps.prefix, pps.delimiter, pps.delimiters);\n\t },\n\n\t onBlur: function onBlur(event) {\n\t var owner = this,\n\t pps = owner.properties;\n\n\t event.target.rawValue = owner.getRawValue();\n\t event.target.value = pps.result;\n\n\t owner.registeredEvents.onBlur(event);\n\t },\n\n\t onChange: function onChange(event) {\n\t var owner = this,\n\t pps = owner.properties;\n\n\t owner.isBackward = owner.isBackward || event.inputType === 'deleteContentBackward';\n\t // hit backspace when last character is delimiter\n\t var postDelimiter = Util.getPostDelimiter(owner.lastInputValue, pps.delimiter, pps.delimiters);\n\n\t if (owner.isBackward && postDelimiter) {\n\t pps.postDelimiterBackspace = postDelimiter;\n\t } else {\n\t pps.postDelimiterBackspace = false;\n\t }\n\n\t owner.onInput(event.target.value);\n\n\t event.target.rawValue = owner.getRawValue();\n\t event.target.value = pps.result;\n\n\t owner.registeredEvents.onChange(event);\n\t },\n\n\t onInput: function onInput(value, fromProps) {\n\t var owner = this,\n\t pps = owner.properties;\n\n\t // case 1: delete one more character \"4\"\n\t // 1234*| -> hit backspace -> 123|\n\t // case 2: last character is not delimiter which is:\n\t // 12|34* -> hit backspace -> 1|34*\n\t var postDelimiterAfter = Util.getPostDelimiter(value, pps.delimiter, pps.delimiters);\n\t if (!fromProps && !pps.numeral && pps.postDelimiterBackspace && !postDelimiterAfter) {\n\t value = Util.headStr(value, value.length - pps.postDelimiterBackspace.length);\n\t }\n\n\t // phone formatter\n\t if (pps.phone) {\n\t if (pps.prefix && (!pps.noImmediatePrefix || value.length)) {\n\t pps.result = pps.prefix + pps.phoneFormatter.format(value).slice(pps.prefix.length);\n\t } else {\n\t pps.result = pps.phoneFormatter.format(value);\n\t }\n\t owner.updateValueState();\n\n\t return;\n\t }\n\n\t // numeral formatter\n\t if (pps.numeral) {\n\t // Do not show prefix when noImmediatePrefix is specified\n\t // This mostly because we need to show user the native input placeholder\n\t if (pps.prefix && pps.noImmediatePrefix && value.length === 0) {\n\t pps.result = '';\n\t } else {\n\t pps.result = pps.numeralFormatter.format(value);\n\t }\n\t owner.updateValueState();\n\n\t return;\n\t }\n\n\t // date\n\t if (pps.date) {\n\t value = pps.dateFormatter.getValidatedDate(value);\n\t }\n\n\t // time\n\t if (pps.time) {\n\t value = pps.timeFormatter.getValidatedTime(value);\n\t }\n\n\t // strip delimiters\n\t value = Util.stripDelimiters(value, pps.delimiter, pps.delimiters);\n\n\t // strip prefix\n\t value = Util.getPrefixStrippedValue(value, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters, pps.noImmediatePrefix, pps.tailPrefix, pps.signBeforePrefix);\n\n\t // strip non-numeric characters\n\t value = pps.numericOnly ? Util.strip(value, /[^\\d]/g) : value;\n\n\t // convert case\n\t value = pps.uppercase ? value.toUpperCase() : value;\n\t value = pps.lowercase ? value.toLowerCase() : value;\n\n\t // prevent from showing prefix when no immediate option enabled with empty input value\n\t if (pps.prefix) {\n\t if (pps.tailPrefix) {\n\t value = value + pps.prefix;\n\t } else {\n\t value = pps.prefix + value;\n\t }\n\n\t // no blocks specified, no need to do formatting\n\t if (pps.blocksLength === 0) {\n\t pps.result = value;\n\t owner.updateValueState();\n\n\t return;\n\t }\n\t }\n\n\t // update credit card props\n\t if (pps.creditCard) {\n\t owner.updateCreditCardPropsByValue(value);\n\t }\n\n\t // strip over length characters\n\t value = pps.maxLength > 0 ? Util.headStr(value, pps.maxLength) : value;\n\n\t // apply blocks\n\t pps.result = Util.getFormattedValue(value, pps.blocks, pps.blocksLength, pps.delimiter, pps.delimiters, pps.delimiterLazyShow);\n\n\t owner.updateValueState();\n\t },\n\n\t updateCreditCardPropsByValue: function updateCreditCardPropsByValue(value) {\n\t var owner = this,\n\t pps = owner.properties,\n\t creditCardInfo;\n\n\t // At least one of the first 4 characters has changed\n\t if (Util.headStr(pps.result, 4) === Util.headStr(value, 4)) {\n\t return;\n\t }\n\n\t creditCardInfo = CreditCardDetector.getInfo(value, pps.creditCardStrictMode);\n\n\t pps.blocks = creditCardInfo.blocks;\n\t pps.blocksLength = pps.blocks.length;\n\t pps.maxLength = Util.getMaxLength(pps.blocks);\n\n\t // credit card type changed\n\t if (pps.creditCardType !== creditCardInfo.type) {\n\t pps.creditCardType = creditCardInfo.type;\n\n\t pps.onCreditCardTypeChanged.call(owner, pps.creditCardType);\n\t }\n\t },\n\n\t updateValueState: function updateValueState() {\n\t var owner = this,\n\t pps = owner.properties;\n\n\t if (!owner.element) {\n\t owner.setState({ value: pps.result });\n\t return;\n\t }\n\n\t var endPos = owner.element.selectionEnd;\n\t var oldValue = owner.element.value;\n\t var newValue = pps.result;\n\n\t owner.lastInputValue = newValue;\n\n\t endPos = Util.getNextCursorPosition(endPos, oldValue, newValue, pps.delimiter, pps.delimiters);\n\n\t if (owner.isAndroid) {\n\t window.setTimeout(function () {\n\t owner.setState({ value: newValue, cursorPosition: endPos });\n\t }, 1);\n\n\t return;\n\t }\n\n\t owner.setState({ value: newValue, cursorPosition: endPos });\n\t },\n\n\t render: function render() {\n\t var owner = this;\n\t // eslint-disable-next-line\n\n\t var _owner$props2 = owner.props,\n\t value = _owner$props2.value,\n\t options = _owner$props2.options,\n\t onKeyDown = _owner$props2.onKeyDown,\n\t onFocus = _owner$props2.onFocus,\n\t onBlur = _owner$props2.onBlur,\n\t onChange = _owner$props2.onChange,\n\t onInit = _owner$props2.onInit,\n\t htmlRef = _owner$props2.htmlRef,\n\t propsToTransfer = _objectWithoutProperties(_owner$props2, ['value', 'options', 'onKeyDown', 'onFocus', 'onBlur', 'onChange', 'onInit', 'htmlRef']);\n\n\t return React.createElement('input', _extends({\n\t type: 'text',\n\t ref: function ref(_ref) {\n\t owner.element = _ref;\n\n\t if (!htmlRef) {\n\t return;\n\t }\n\n\t htmlRef.apply(this, arguments);\n\t },\n\t value: owner.state.value,\n\t onKeyDown: owner.onKeyDown,\n\t onChange: owner.onChange,\n\t onFocus: owner.onFocus,\n\t onBlur: owner.onBlur\n\t }, propsToTransfer));\n\t }\n\t});\n\n\tmodule.exports = cleaveReactClass;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t *\n\t * This source code is licensed under the MIT license found in the\n\t * LICENSE file in the root directory of this source tree.\n\t *\n\t */\n\n\t'use strict';\n\n\tvar React = __webpack_require__(1);\n\tvar factory = __webpack_require__(3);\n\n\tif (typeof React === 'undefined') {\n\t throw Error(\n\t 'create-react-class could not find the React object. If you are using script tags, ' +\n\t 'make sure that React is being loaded before create-react-class.'\n\t );\n\t}\n\n\t// Hack to grab NoopUpdateQueue from isomorphic React\n\tvar ReactNoopUpdateQueue = new React.Component().updater;\n\n\tmodule.exports = factory(\n\t React.Component,\n\t React.isValidElement,\n\t ReactNoopUpdateQueue\n\t);\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t *\n\t * This source code is licensed under the MIT license found in the\n\t * LICENSE file in the root directory of this source tree.\n\t *\n\t */\n\n\t'use strict';\n\n\tvar _assign = __webpack_require__(4);\n\n\tvar emptyObject = __webpack_require__(5);\n\tvar _invariant = __webpack_require__(6);\n\n\tif (process.env.NODE_ENV !== 'production') {\n\t var warning = __webpack_require__(7);\n\t}\n\n\tvar MIXINS_KEY = 'mixins';\n\n\t// Helper function to allow the creation of anonymous functions which do not\n\t// have .name set to the name of the variable being assigned to.\n\tfunction identity(fn) {\n\t return fn;\n\t}\n\n\tvar ReactPropTypeLocationNames;\n\tif (process.env.NODE_ENV !== 'production') {\n\t ReactPropTypeLocationNames = {\n\t prop: 'prop',\n\t context: 'context',\n\t childContext: 'child context'\n\t };\n\t} else {\n\t ReactPropTypeLocationNames = {};\n\t}\n\n\tfunction factory(ReactComponent, isValidElement, ReactNoopUpdateQueue) {\n\t /**\n\t * Policies that describe methods in `ReactClassInterface`.\n\t */\n\n\t var injectedMixins = [];\n\n\t /**\n\t * Composite components are higher-level components that compose other composite\n\t * or host components.\n\t *\n\t * To create a new type of `ReactClass`, pass a specification of\n\t * your new class to `React.createClass`. The only requirement of your class\n\t * specification is that you implement a `render` method.\n\t *\n\t * var MyComponent = React.createClass({\n\t * render: function() {\n\t * return
Hello World
;\n\t * }\n\t * });\n\t *\n\t * The class specification supports a specific protocol of methods that have\n\t * special meaning (e.g. `render`). See `ReactClassInterface` for\n\t * more the comprehensive protocol. Any other properties and methods in the\n\t * class specification will be available on the prototype.\n\t *\n\t * @interface ReactClassInterface\n\t * @internal\n\t */\n\t var ReactClassInterface = {\n\t /**\n\t * An array of Mixin objects to include when defining your component.\n\t *\n\t * @type {array}\n\t * @optional\n\t */\n\t mixins: 'DEFINE_MANY',\n\n\t /**\n\t * An object containing properties and methods that should be defined on\n\t * the component's constructor instead of its prototype (static methods).\n\t *\n\t * @type {object}\n\t * @optional\n\t */\n\t statics: 'DEFINE_MANY',\n\n\t /**\n\t * Definition of prop types for this component.\n\t *\n\t * @type {object}\n\t * @optional\n\t */\n\t propTypes: 'DEFINE_MANY',\n\n\t /**\n\t * Definition of context types for this component.\n\t *\n\t * @type {object}\n\t * @optional\n\t */\n\t contextTypes: 'DEFINE_MANY',\n\n\t /**\n\t * Definition of context types this component sets for its children.\n\t *\n\t * @type {object}\n\t * @optional\n\t */\n\t childContextTypes: 'DEFINE_MANY',\n\n\t // ==== Definition methods ====\n\n\t /**\n\t * Invoked when the component is mounted. Values in the mapping will be set on\n\t * `this.props` if that prop is not specified (i.e. using an `in` check).\n\t *\n\t * This method is invoked before `getInitialState` and therefore cannot rely\n\t * on `this.state` or use `this.setState`.\n\t *\n\t * @return {object}\n\t * @optional\n\t */\n\t getDefaultProps: 'DEFINE_MANY_MERGED',\n\n\t /**\n\t * Invoked once before the component is mounted. The return value will be used\n\t * as the initial value of `this.state`.\n\t *\n\t * getInitialState: function() {\n\t * return {\n\t * isOn: false,\n\t * fooBaz: new BazFoo()\n\t * }\n\t * }\n\t *\n\t * @return {object}\n\t * @optional\n\t */\n\t getInitialState: 'DEFINE_MANY_MERGED',\n\n\t /**\n\t * @return {object}\n\t * @optional\n\t */\n\t getChildContext: 'DEFINE_MANY_MERGED',\n\n\t /**\n\t * Uses props from `this.props` and state from `this.state` to render the\n\t * structure of the component.\n\t *\n\t * No guarantees are made about when or how often this method is invoked, so\n\t * it must not have side effects.\n\t *\n\t * render: function() {\n\t * var name = this.props.name;\n\t * return
Hello, {name}!
;\n\t * }\n\t *\n\t * @return {ReactComponent}\n\t * @required\n\t */\n\t render: 'DEFINE_ONCE',\n\n\t // ==== Delegate methods ====\n\n\t /**\n\t * Invoked when the component is initially created and about to be mounted.\n\t * This may have side effects, but any external subscriptions or data created\n\t * by this method must be cleaned up in `componentWillUnmount`.\n\t *\n\t * @optional\n\t */\n\t componentWillMount: 'DEFINE_MANY',\n\n\t /**\n\t * Invoked when the component has been mounted and has a DOM representation.\n\t * However, there is no guarantee that the DOM node is in the document.\n\t *\n\t * Use this as an opportunity to operate on the DOM when the component has\n\t * been mounted (initialized and rendered) for the first time.\n\t *\n\t * @param {DOMElement} rootNode DOM element representing the component.\n\t * @optional\n\t */\n\t componentDidMount: 'DEFINE_MANY',\n\n\t /**\n\t * Invoked before the component receives new props.\n\t *\n\t * Use this as an opportunity to react to a prop transition by updating the\n\t * state using `this.setState`. Current props are accessed via `this.props`.\n\t *\n\t * componentWillReceiveProps: function(nextProps, nextContext) {\n\t * this.setState({\n\t * likesIncreasing: nextProps.likeCount > this.props.likeCount\n\t * });\n\t * }\n\t *\n\t * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n\t * transition may cause a state change, but the opposite is not true. If you\n\t * need it, you are probably looking for `componentWillUpdate`.\n\t *\n\t * @param {object} nextProps\n\t * @optional\n\t */\n\t componentWillReceiveProps: 'DEFINE_MANY',\n\n\t /**\n\t * Invoked while deciding if the component should be updated as a result of\n\t * receiving new props, state and/or context.\n\t *\n\t * Use this as an opportunity to `return false` when you're certain that the\n\t * transition to the new props/state/context will not require a component\n\t * update.\n\t *\n\t * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n\t * return !equal(nextProps, this.props) ||\n\t * !equal(nextState, this.state) ||\n\t * !equal(nextContext, this.context);\n\t * }\n\t *\n\t * @param {object} nextProps\n\t * @param {?object} nextState\n\t * @param {?object} nextContext\n\t * @return {boolean} True if the component should update.\n\t * @optional\n\t */\n\t shouldComponentUpdate: 'DEFINE_ONCE',\n\n\t /**\n\t * Invoked when the component is about to update due to a transition from\n\t * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n\t * and `nextContext`.\n\t *\n\t * Use this as an opportunity to perform preparation before an update occurs.\n\t *\n\t * NOTE: You **cannot** use `this.setState()` in this method.\n\t *\n\t * @param {object} nextProps\n\t * @param {?object} nextState\n\t * @param {?object} nextContext\n\t * @param {ReactReconcileTransaction} transaction\n\t * @optional\n\t */\n\t componentWillUpdate: 'DEFINE_MANY',\n\n\t /**\n\t * Invoked when the component's DOM representation has been updated.\n\t *\n\t * Use this as an opportunity to operate on the DOM when the component has\n\t * been updated.\n\t *\n\t * @param {object} prevProps\n\t * @param {?object} prevState\n\t * @param {?object} prevContext\n\t * @param {DOMElement} rootNode DOM element representing the component.\n\t * @optional\n\t */\n\t componentDidUpdate: 'DEFINE_MANY',\n\n\t /**\n\t * Invoked when the component is about to be removed from its parent and have\n\t * its DOM representation destroyed.\n\t *\n\t * Use this as an opportunity to deallocate any external resources.\n\t *\n\t * NOTE: There is no `componentDidUnmount` since your component will have been\n\t * destroyed by that point.\n\t *\n\t * @optional\n\t */\n\t componentWillUnmount: 'DEFINE_MANY',\n\n\t /**\n\t * Replacement for (deprecated) `componentWillMount`.\n\t *\n\t * @optional\n\t */\n\t UNSAFE_componentWillMount: 'DEFINE_MANY',\n\n\t /**\n\t * Replacement for (deprecated) `componentWillReceiveProps`.\n\t *\n\t * @optional\n\t */\n\t UNSAFE_componentWillReceiveProps: 'DEFINE_MANY',\n\n\t /**\n\t * Replacement for (deprecated) `componentWillUpdate`.\n\t *\n\t * @optional\n\t */\n\t UNSAFE_componentWillUpdate: 'DEFINE_MANY',\n\n\t // ==== Advanced methods ====\n\n\t /**\n\t * Updates the component's currently mounted DOM representation.\n\t *\n\t * By default, this implements React's rendering and reconciliation algorithm.\n\t * Sophisticated clients may wish to override this.\n\t *\n\t * @param {ReactReconcileTransaction} transaction\n\t * @internal\n\t * @overridable\n\t */\n\t updateComponent: 'OVERRIDE_BASE'\n\t };\n\n\t /**\n\t * Similar to ReactClassInterface but for static methods.\n\t */\n\t var ReactClassStaticInterface = {\n\t /**\n\t * This method is invoked after a component is instantiated and when it\n\t * receives new props. Return an object to update state in response to\n\t * prop changes. Return null to indicate no change to state.\n\t *\n\t * If an object is returned, its keys will be merged into the existing state.\n\t *\n\t * @return {object || null}\n\t * @optional\n\t */\n\t getDerivedStateFromProps: 'DEFINE_MANY_MERGED'\n\t };\n\n\t /**\n\t * Mapping from class specification keys to special processing functions.\n\t *\n\t * Although these are declared like instance properties in the specification\n\t * when defining classes using `React.createClass`, they are actually static\n\t * and are accessible on the constructor instead of the prototype. Despite\n\t * being static, they must be defined outside of the \"statics\" key under\n\t * which all other static methods are defined.\n\t */\n\t var RESERVED_SPEC_KEYS = {\n\t displayName: function(Constructor, displayName) {\n\t Constructor.displayName = displayName;\n\t },\n\t mixins: function(Constructor, mixins) {\n\t if (mixins) {\n\t for (var i = 0; i < mixins.length; i++) {\n\t mixSpecIntoComponent(Constructor, mixins[i]);\n\t }\n\t }\n\t },\n\t childContextTypes: function(Constructor, childContextTypes) {\n\t if (process.env.NODE_ENV !== 'production') {\n\t validateTypeDef(Constructor, childContextTypes, 'childContext');\n\t }\n\t Constructor.childContextTypes = _assign(\n\t {},\n\t Constructor.childContextTypes,\n\t childContextTypes\n\t );\n\t },\n\t contextTypes: function(Constructor, contextTypes) {\n\t if (process.env.NODE_ENV !== 'production') {\n\t validateTypeDef(Constructor, contextTypes, 'context');\n\t }\n\t Constructor.contextTypes = _assign(\n\t {},\n\t Constructor.contextTypes,\n\t contextTypes\n\t );\n\t },\n\t /**\n\t * Special case getDefaultProps which should move into statics but requires\n\t * automatic merging.\n\t */\n\t getDefaultProps: function(Constructor, getDefaultProps) {\n\t if (Constructor.getDefaultProps) {\n\t Constructor.getDefaultProps = createMergedResultFunction(\n\t Constructor.getDefaultProps,\n\t getDefaultProps\n\t );\n\t } else {\n\t Constructor.getDefaultProps = getDefaultProps;\n\t }\n\t },\n\t propTypes: function(Constructor, propTypes) {\n\t if (process.env.NODE_ENV !== 'production') {\n\t validateTypeDef(Constructor, propTypes, 'prop');\n\t }\n\t Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);\n\t },\n\t statics: function(Constructor, statics) {\n\t mixStaticSpecIntoComponent(Constructor, statics);\n\t },\n\t autobind: function() {}\n\t };\n\n\t function validateTypeDef(Constructor, typeDef, location) {\n\t for (var propName in typeDef) {\n\t if (typeDef.hasOwnProperty(propName)) {\n\t // use a warning instead of an _invariant so components\n\t // don't show up in prod but only in __DEV__\n\t if (process.env.NODE_ENV !== 'production') {\n\t warning(\n\t typeof typeDef[propName] === 'function',\n\t '%s: %s type `%s` is invalid; it must be a function, usually from ' +\n\t 'React.PropTypes.',\n\t Constructor.displayName || 'ReactClass',\n\t ReactPropTypeLocationNames[location],\n\t propName\n\t );\n\t }\n\t }\n\t }\n\t }\n\n\t function validateMethodOverride(isAlreadyDefined, name) {\n\t var specPolicy = ReactClassInterface.hasOwnProperty(name)\n\t ? ReactClassInterface[name]\n\t : null;\n\n\t // Disallow overriding of base class methods unless explicitly allowed.\n\t if (ReactClassMixin.hasOwnProperty(name)) {\n\t _invariant(\n\t specPolicy === 'OVERRIDE_BASE',\n\t 'ReactClassInterface: You are attempting to override ' +\n\t '`%s` from your class specification. Ensure that your method names ' +\n\t 'do not overlap with React methods.',\n\t name\n\t );\n\t }\n\n\t // Disallow defining methods more than once unless explicitly allowed.\n\t if (isAlreadyDefined) {\n\t _invariant(\n\t specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED',\n\t 'ReactClassInterface: You are attempting to define ' +\n\t '`%s` on your component more than once. This conflict may be due ' +\n\t 'to a mixin.',\n\t name\n\t );\n\t }\n\t }\n\n\t /**\n\t * Mixin helper which handles policy validation and reserved\n\t * specification keys when building React classes.\n\t */\n\t function mixSpecIntoComponent(Constructor, spec) {\n\t if (!spec) {\n\t if (process.env.NODE_ENV !== 'production') {\n\t var typeofSpec = typeof spec;\n\t var isMixinValid = typeofSpec === 'object' && spec !== null;\n\n\t if (process.env.NODE_ENV !== 'production') {\n\t warning(\n\t isMixinValid,\n\t \"%s: You're attempting to include a mixin that is either null \" +\n\t 'or not an object. Check the mixins included by the component, ' +\n\t 'as well as any mixins they include themselves. ' +\n\t 'Expected object but got %s.',\n\t Constructor.displayName || 'ReactClass',\n\t spec === null ? null : typeofSpec\n\t );\n\t }\n\t }\n\n\t return;\n\t }\n\n\t _invariant(\n\t typeof spec !== 'function',\n\t \"ReactClass: You're attempting to \" +\n\t 'use a component class or function as a mixin. Instead, just use a ' +\n\t 'regular object.'\n\t );\n\t _invariant(\n\t !isValidElement(spec),\n\t \"ReactClass: You're attempting to \" +\n\t 'use a component as a mixin. Instead, just use a regular object.'\n\t );\n\n\t var proto = Constructor.prototype;\n\t var autoBindPairs = proto.__reactAutoBindPairs;\n\n\t // By handling mixins before any other properties, we ensure the same\n\t // chaining order is applied to methods with DEFINE_MANY policy, whether\n\t // mixins are listed before or after these methods in the spec.\n\t if (spec.hasOwnProperty(MIXINS_KEY)) {\n\t RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n\t }\n\n\t for (var name in spec) {\n\t if (!spec.hasOwnProperty(name)) {\n\t continue;\n\t }\n\n\t if (name === MIXINS_KEY) {\n\t // We have already handled mixins in a special case above.\n\t continue;\n\t }\n\n\t var property = spec[name];\n\t var isAlreadyDefined = proto.hasOwnProperty(name);\n\t validateMethodOverride(isAlreadyDefined, name);\n\n\t if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n\t RESERVED_SPEC_KEYS[name](Constructor, property);\n\t } else {\n\t // Setup methods on prototype:\n\t // The following member methods should not be automatically bound:\n\t // 1. Expected ReactClass methods (in the \"interface\").\n\t // 2. Overridden methods (that were mixed in).\n\t var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n\t var isFunction = typeof property === 'function';\n\t var shouldAutoBind =\n\t isFunction &&\n\t !isReactClassMethod &&\n\t !isAlreadyDefined &&\n\t spec.autobind !== false;\n\n\t if (shouldAutoBind) {\n\t autoBindPairs.push(name, property);\n\t proto[name] = property;\n\t } else {\n\t if (isAlreadyDefined) {\n\t var specPolicy = ReactClassInterface[name];\n\n\t // These cases should already be caught by validateMethodOverride.\n\t _invariant(\n\t isReactClassMethod &&\n\t (specPolicy === 'DEFINE_MANY_MERGED' ||\n\t specPolicy === 'DEFINE_MANY'),\n\t 'ReactClass: Unexpected spec policy %s for key %s ' +\n\t 'when mixing in component specs.',\n\t specPolicy,\n\t name\n\t );\n\n\t // For methods which are defined more than once, call the existing\n\t // methods before calling the new property, merging if appropriate.\n\t if (specPolicy === 'DEFINE_MANY_MERGED') {\n\t proto[name] = createMergedResultFunction(proto[name], property);\n\t } else if (specPolicy === 'DEFINE_MANY') {\n\t proto[name] = createChainedFunction(proto[name], property);\n\t }\n\t } else {\n\t proto[name] = property;\n\t if (process.env.NODE_ENV !== 'production') {\n\t // Add verbose displayName to the function, which helps when looking\n\t // at profiling tools.\n\t if (typeof property === 'function' && spec.displayName) {\n\t proto[name].displayName = spec.displayName + '_' + name;\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\n\t function mixStaticSpecIntoComponent(Constructor, statics) {\n\t if (!statics) {\n\t return;\n\t }\n\n\t for (var name in statics) {\n\t var property = statics[name];\n\t if (!statics.hasOwnProperty(name)) {\n\t continue;\n\t }\n\n\t var isReserved = name in RESERVED_SPEC_KEYS;\n\t _invariant(\n\t !isReserved,\n\t 'ReactClass: You are attempting to define a reserved ' +\n\t 'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' +\n\t 'as an instance property instead; it will still be accessible on the ' +\n\t 'constructor.',\n\t name\n\t );\n\n\t var isAlreadyDefined = name in Constructor;\n\t if (isAlreadyDefined) {\n\t var specPolicy = ReactClassStaticInterface.hasOwnProperty(name)\n\t ? ReactClassStaticInterface[name]\n\t : null;\n\n\t _invariant(\n\t specPolicy === 'DEFINE_MANY_MERGED',\n\t 'ReactClass: You are attempting to define ' +\n\t '`%s` on your component more than once. This conflict may be ' +\n\t 'due to a mixin.',\n\t name\n\t );\n\n\t Constructor[name] = createMergedResultFunction(Constructor[name], property);\n\n\t return;\n\t }\n\n\t Constructor[name] = property;\n\t }\n\t }\n\n\t /**\n\t * Merge two objects, but throw if both contain the same key.\n\t *\n\t * @param {object} one The first object, which is mutated.\n\t * @param {object} two The second object\n\t * @return {object} one after it has been mutated to contain everything in two.\n\t */\n\t function mergeIntoWithNoDuplicateKeys(one, two) {\n\t _invariant(\n\t one && two && typeof one === 'object' && typeof two === 'object',\n\t 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.'\n\t );\n\n\t for (var key in two) {\n\t if (two.hasOwnProperty(key)) {\n\t _invariant(\n\t one[key] === undefined,\n\t 'mergeIntoWithNoDuplicateKeys(): ' +\n\t 'Tried to merge two objects with the same key: `%s`. This conflict ' +\n\t 'may be due to a mixin; in particular, this may be caused by two ' +\n\t 'getInitialState() or getDefaultProps() methods returning objects ' +\n\t 'with clashing keys.',\n\t key\n\t );\n\t one[key] = two[key];\n\t }\n\t }\n\t return one;\n\t }\n\n\t /**\n\t * Creates a function that invokes two functions and merges their return values.\n\t *\n\t * @param {function} one Function to invoke first.\n\t * @param {function} two Function to invoke second.\n\t * @return {function} Function that invokes the two argument functions.\n\t * @private\n\t */\n\t function createMergedResultFunction(one, two) {\n\t return function mergedResult() {\n\t var a = one.apply(this, arguments);\n\t var b = two.apply(this, arguments);\n\t if (a == null) {\n\t return b;\n\t } else if (b == null) {\n\t return a;\n\t }\n\t var c = {};\n\t mergeIntoWithNoDuplicateKeys(c, a);\n\t mergeIntoWithNoDuplicateKeys(c, b);\n\t return c;\n\t };\n\t }\n\n\t /**\n\t * Creates a function that invokes two functions and ignores their return vales.\n\t *\n\t * @param {function} one Function to invoke first.\n\t * @param {function} two Function to invoke second.\n\t * @return {function} Function that invokes the two argument functions.\n\t * @private\n\t */\n\t function createChainedFunction(one, two) {\n\t return function chainedFunction() {\n\t one.apply(this, arguments);\n\t two.apply(this, arguments);\n\t };\n\t }\n\n\t /**\n\t * Binds a method to the component.\n\t *\n\t * @param {object} component Component whose method is going to be bound.\n\t * @param {function} method Method to be bound.\n\t * @return {function} The bound method.\n\t */\n\t function bindAutoBindMethod(component, method) {\n\t var boundMethod = method.bind(component);\n\t if (process.env.NODE_ENV !== 'production') {\n\t boundMethod.__reactBoundContext = component;\n\t boundMethod.__reactBoundMethod = method;\n\t boundMethod.__reactBoundArguments = null;\n\t var componentName = component.constructor.displayName;\n\t var _bind = boundMethod.bind;\n\t boundMethod.bind = function(newThis) {\n\t for (\n\t var _len = arguments.length,\n\t args = Array(_len > 1 ? _len - 1 : 0),\n\t _key = 1;\n\t _key < _len;\n\t _key++\n\t ) {\n\t args[_key - 1] = arguments[_key];\n\t }\n\n\t // User is trying to bind() an autobound method; we effectively will\n\t // ignore the value of \"this\" that the user is trying to use, so\n\t // let's warn.\n\t if (newThis !== component && newThis !== null) {\n\t if (process.env.NODE_ENV !== 'production') {\n\t warning(\n\t false,\n\t 'bind(): React component methods may only be bound to the ' +\n\t 'component instance. See %s',\n\t componentName\n\t );\n\t }\n\t } else if (!args.length) {\n\t if (process.env.NODE_ENV !== 'production') {\n\t warning(\n\t false,\n\t 'bind(): You are binding a component method to the component. ' +\n\t 'React does this for you automatically in a high-performance ' +\n\t 'way, so you can safely remove this call. See %s',\n\t componentName\n\t );\n\t }\n\t return boundMethod;\n\t }\n\t var reboundMethod = _bind.apply(boundMethod, arguments);\n\t reboundMethod.__reactBoundContext = component;\n\t reboundMethod.__reactBoundMethod = method;\n\t reboundMethod.__reactBoundArguments = args;\n\t return reboundMethod;\n\t };\n\t }\n\t return boundMethod;\n\t }\n\n\t /**\n\t * Binds all auto-bound methods in a component.\n\t *\n\t * @param {object} component Component whose method is going to be bound.\n\t */\n\t function bindAutoBindMethods(component) {\n\t var pairs = component.__reactAutoBindPairs;\n\t for (var i = 0; i < pairs.length; i += 2) {\n\t var autoBindKey = pairs[i];\n\t var method = pairs[i + 1];\n\t component[autoBindKey] = bindAutoBindMethod(component, method);\n\t }\n\t }\n\n\t var IsMountedPreMixin = {\n\t componentDidMount: function() {\n\t this.__isMounted = true;\n\t }\n\t };\n\n\t var IsMountedPostMixin = {\n\t componentWillUnmount: function() {\n\t this.__isMounted = false;\n\t }\n\t };\n\n\t /**\n\t * Add more to the ReactClass base class. These are all legacy features and\n\t * therefore not already part of the modern ReactComponent.\n\t */\n\t var ReactClassMixin = {\n\t /**\n\t * TODO: This will be deprecated because state should always keep a consistent\n\t * type signature and the only use case for this, is to avoid that.\n\t */\n\t replaceState: function(newState, callback) {\n\t this.updater.enqueueReplaceState(this, newState, callback);\n\t },\n\n\t /**\n\t * Checks whether or not this composite component is mounted.\n\t * @return {boolean} True if mounted, false otherwise.\n\t * @protected\n\t * @final\n\t */\n\t isMounted: function() {\n\t if (process.env.NODE_ENV !== 'production') {\n\t warning(\n\t this.__didWarnIsMounted,\n\t '%s: isMounted is deprecated. Instead, make sure to clean up ' +\n\t 'subscriptions and pending requests in componentWillUnmount to ' +\n\t 'prevent memory leaks.',\n\t (this.constructor && this.constructor.displayName) ||\n\t this.name ||\n\t 'Component'\n\t );\n\t this.__didWarnIsMounted = true;\n\t }\n\t return !!this.__isMounted;\n\t }\n\t };\n\n\t var ReactClassComponent = function() {};\n\t _assign(\n\t ReactClassComponent.prototype,\n\t ReactComponent.prototype,\n\t ReactClassMixin\n\t );\n\n\t /**\n\t * Creates a composite component class given a class specification.\n\t * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n\t *\n\t * @param {object} spec Class specification (which must define `render`).\n\t * @return {function} Component constructor function.\n\t * @public\n\t */\n\t function createClass(spec) {\n\t // To keep our warnings more understandable, we'll use a little hack here to\n\t // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\n\t // unnecessarily identify a class without displayName as 'Constructor'.\n\t var Constructor = identity(function(props, context, updater) {\n\t // This constructor gets overridden by mocks. The argument is used\n\t // by mocks to assert on what gets mounted.\n\n\t if (process.env.NODE_ENV !== 'production') {\n\t warning(\n\t this instanceof Constructor,\n\t 'Something is calling a React component directly. Use a factory or ' +\n\t 'JSX instead. See: https://fb.me/react-legacyfactory'\n\t );\n\t }\n\n\t // Wire up auto-binding\n\t if (this.__reactAutoBindPairs.length) {\n\t bindAutoBindMethods(this);\n\t }\n\n\t this.props = props;\n\t this.context = context;\n\t this.refs = emptyObject;\n\t this.updater = updater || ReactNoopUpdateQueue;\n\n\t this.state = null;\n\n\t // ReactClasses doesn't have constructors. Instead, they use the\n\t // getInitialState and componentWillMount methods for initialization.\n\n\t var initialState = this.getInitialState ? this.getInitialState() : null;\n\t if (process.env.NODE_ENV !== 'production') {\n\t // We allow auto-mocks to proceed as if they're returning null.\n\t if (\n\t initialState === undefined &&\n\t this.getInitialState._isMockFunction\n\t ) {\n\t // This is probably bad practice. Consider warning here and\n\t // deprecating this convenience.\n\t initialState = null;\n\t }\n\t }\n\t _invariant(\n\t typeof initialState === 'object' && !Array.isArray(initialState),\n\t '%s.getInitialState(): must return an object or null',\n\t Constructor.displayName || 'ReactCompositeComponent'\n\t );\n\n\t this.state = initialState;\n\t });\n\t Constructor.prototype = new ReactClassComponent();\n\t Constructor.prototype.constructor = Constructor;\n\t Constructor.prototype.__reactAutoBindPairs = [];\n\n\t injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\n\t mixSpecIntoComponent(Constructor, IsMountedPreMixin);\n\t mixSpecIntoComponent(Constructor, spec);\n\t mixSpecIntoComponent(Constructor, IsMountedPostMixin);\n\n\t // Initialize the defaultProps property after all mixins have been merged.\n\t if (Constructor.getDefaultProps) {\n\t Constructor.defaultProps = Constructor.getDefaultProps();\n\t }\n\n\t if (process.env.NODE_ENV !== 'production') {\n\t // This is a tag to indicate that the use of these method names is ok,\n\t // since it's used with createClass. If it's not, then it's likely a\n\t // mistake so we'll warn you to use the static property, property\n\t // initializer or constructor respectively.\n\t if (Constructor.getDefaultProps) {\n\t Constructor.getDefaultProps.isReactClassApproved = {};\n\t }\n\t if (Constructor.prototype.getInitialState) {\n\t Constructor.prototype.getInitialState.isReactClassApproved = {};\n\t }\n\t }\n\n\t _invariant(\n\t Constructor.prototype.render,\n\t 'createClass(...): Class specification must implement a `render` method.'\n\t );\n\n\t if (process.env.NODE_ENV !== 'production') {\n\t warning(\n\t !Constructor.prototype.componentShouldUpdate,\n\t '%s has a method called ' +\n\t 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n\t 'The name is phrased as a question because the function is ' +\n\t 'expected to return a value.',\n\t spec.displayName || 'A component'\n\t );\n\t warning(\n\t !Constructor.prototype.componentWillRecieveProps,\n\t '%s has a method called ' +\n\t 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?',\n\t spec.displayName || 'A component'\n\t );\n\t warning(\n\t !Constructor.prototype.UNSAFE_componentWillRecieveProps,\n\t '%s has a method called UNSAFE_componentWillRecieveProps(). ' +\n\t 'Did you mean UNSAFE_componentWillReceiveProps()?',\n\t spec.displayName || 'A component'\n\t );\n\t }\n\n\t // Reduce time spent doing lookups by setting these on the prototype.\n\t for (var methodName in ReactClassInterface) {\n\t if (!Constructor.prototype[methodName]) {\n\t Constructor.prototype[methodName] = null;\n\t }\n\t }\n\n\t return Constructor;\n\t }\n\n\t return createClass;\n\t}\n\n\tmodule.exports = factory;\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\n\t/*\n\tobject-assign\n\t(c) Sindre Sorhus\n\t@license MIT\n\t*/\n\n\t'use strict';\n\t/* eslint-disable no-unused-vars */\n\tvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\n\tvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\tvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\n\tfunction toObject(val) {\n\t\tif (val === null || val === undefined) {\n\t\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t\t}\n\n\t\treturn Object(val);\n\t}\n\n\tfunction shouldUseNative() {\n\t\ttry {\n\t\t\tif (!Object.assign) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\t\ttest1[5] = 'de';\n\t\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\t\tvar test2 = {};\n\t\t\tfor (var i = 0; i < 10; i++) {\n\t\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t\t}\n\t\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\t\treturn test2[n];\n\t\t\t});\n\t\t\tif (order2.join('') !== '0123456789') {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\t\tvar test3 = {};\n\t\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\t\ttest3[letter] = letter;\n\t\t\t});\n\t\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t} catch (err) {\n\t\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\t\tvar from;\n\t\tvar to = toObject(target);\n\t\tvar symbols;\n\n\t\tfor (var s = 1; s < arguments.length; s++) {\n\t\t\tfrom = Object(arguments[s]);\n\n\t\t\tfor (var key in from) {\n\t\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\t\tto[key] = from[key];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (getOwnPropertySymbols) {\n\t\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn to;\n\t};\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t *\n\t * This source code is licensed under the MIT license found in the\n\t * LICENSE file in the root directory of this source tree.\n\t *\n\t */\n\n\t'use strict';\n\n\tvar emptyObject = {};\n\n\tif (process.env.NODE_ENV !== 'production') {\n\t Object.freeze(emptyObject);\n\t}\n\n\tmodule.exports = emptyObject;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t *\n\t * This source code is licensed under the MIT license found in the\n\t * LICENSE file in the root directory of this source tree.\n\t *\n\t */\n\n\t'use strict';\n\n\t/**\n\t * Use invariant() to assert state which your program assumes to be true.\n\t *\n\t * Provide sprintf-style format (only %s is supported) and arguments\n\t * to provide information about what broke and what you were\n\t * expecting.\n\t *\n\t * The invariant message will be stripped in production, but the invariant\n\t * will remain to ensure logic does not differ in production.\n\t */\n\n\tvar validateFormat = function validateFormat(format) {};\n\n\tif (process.env.NODE_ENV !== 'production') {\n\t validateFormat = function validateFormat(format) {\n\t if (format === undefined) {\n\t throw new Error('invariant requires an error message argument');\n\t }\n\t };\n\t}\n\n\tfunction invariant(condition, format, a, b, c, d, e, f) {\n\t validateFormat(format);\n\n\t if (!condition) {\n\t var error;\n\t if (format === undefined) {\n\t error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n\t } else {\n\t var args = [a, b, c, d, e, f];\n\t var argIndex = 0;\n\t error = new Error(format.replace(/%s/g, function () {\n\t return args[argIndex++];\n\t }));\n\t error.name = 'Invariant Violation';\n\t }\n\n\t error.framesToPop = 1; // we don't care about invariant's own frame\n\t throw error;\n\t }\n\t}\n\n\tmodule.exports = invariant;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright (c) 2014-present, Facebook, Inc.\n\t *\n\t * This source code is licensed under the MIT license found in the\n\t * LICENSE file in the root directory of this source tree.\n\t *\n\t */\n\n\t'use strict';\n\n\tvar emptyFunction = __webpack_require__(8);\n\n\t/**\n\t * Similar to invariant but only logs a warning if the condition is not met.\n\t * This can be used to log issues in development environments in critical\n\t * paths. Removing the logging code for production environments will keep the\n\t * same logic and follow the same code paths.\n\t */\n\n\tvar warning = emptyFunction;\n\n\tif (process.env.NODE_ENV !== 'production') {\n\t var printWarning = function printWarning(format) {\n\t for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t args[_key - 1] = arguments[_key];\n\t }\n\n\t var argIndex = 0;\n\t var message = 'Warning: ' + format.replace(/%s/g, function () {\n\t return args[argIndex++];\n\t });\n\t if (typeof console !== 'undefined') {\n\t console.error(message);\n\t }\n\t try {\n\t // --- Welcome to debugging React ---\n\t // This error was thrown as a convenience so that you can use this stack\n\t // to find the callsite that caused this warning to fire.\n\t throw new Error(message);\n\t } catch (x) {}\n\t };\n\n\t warning = function warning(condition, format) {\n\t if (format === undefined) {\n\t throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n\t }\n\n\t if (format.indexOf('Failed Composite propType: ') === 0) {\n\t return; // Ignore CompositeComponent proptype check.\n\t }\n\n\t if (!condition) {\n\t for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n\t args[_key2 - 2] = arguments[_key2];\n\t }\n\n\t printWarning.apply(undefined, [format].concat(args));\n\t }\n\t };\n\t}\n\n\tmodule.exports = warning;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports) {\n\n\t\"use strict\";\n\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t *\n\t * This source code is licensed under the MIT license found in the\n\t * LICENSE file in the root directory of this source tree.\n\t *\n\t * \n\t */\n\n\tfunction makeEmptyFunction(arg) {\n\t return function () {\n\t return arg;\n\t };\n\t}\n\n\t/**\n\t * This function accepts and discards inputs; it has no side effects. This is\n\t * primarily useful idiomatically for overridable function endpoints which\n\t * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n\t */\n\tvar emptyFunction = function emptyFunction() {};\n\n\temptyFunction.thatReturns = makeEmptyFunction;\n\temptyFunction.thatReturnsFalse = makeEmptyFunction(false);\n\temptyFunction.thatReturnsTrue = makeEmptyFunction(true);\n\temptyFunction.thatReturnsNull = makeEmptyFunction(null);\n\temptyFunction.thatReturnsThis = function () {\n\t return this;\n\t};\n\temptyFunction.thatReturnsArgument = function (arg) {\n\t return arg;\n\t};\n\n\tmodule.exports = emptyFunction;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\n\tvar NumeralFormatter = function NumeralFormatter(numeralDecimalMark, numeralIntegerScale, numeralDecimalScale, numeralThousandsGroupStyle, numeralPositiveOnly, stripLeadingZeroes, prefix, signBeforePrefix, tailPrefix, delimiter) {\n\t var owner = this;\n\n\t owner.numeralDecimalMark = numeralDecimalMark || '.';\n\t owner.numeralIntegerScale = numeralIntegerScale > 0 ? numeralIntegerScale : 0;\n\t owner.numeralDecimalScale = numeralDecimalScale >= 0 ? numeralDecimalScale : 2;\n\t owner.numeralThousandsGroupStyle = numeralThousandsGroupStyle || NumeralFormatter.groupStyle.thousand;\n\t owner.numeralPositiveOnly = !!numeralPositiveOnly;\n\t owner.stripLeadingZeroes = stripLeadingZeroes !== false;\n\t owner.prefix = prefix || prefix === '' ? prefix : '';\n\t owner.signBeforePrefix = !!signBeforePrefix;\n\t owner.tailPrefix = !!tailPrefix;\n\t owner.delimiter = delimiter || delimiter === '' ? delimiter : ',';\n\t owner.delimiterRE = delimiter ? new RegExp('\\\\' + delimiter, 'g') : '';\n\t};\n\n\tNumeralFormatter.groupStyle = {\n\t thousand: 'thousand',\n\t lakh: 'lakh',\n\t wan: 'wan',\n\t none: 'none'\n\t};\n\n\tNumeralFormatter.prototype = {\n\t getRawValue: function getRawValue(value) {\n\t return value.replace(this.delimiterRE, '').replace(this.numeralDecimalMark, '.');\n\t },\n\n\t format: function format(value) {\n\t var owner = this,\n\t parts,\n\t partSign,\n\t partSignAndPrefix,\n\t partInteger,\n\t partDecimal = '';\n\n\t // strip alphabet letters\n\t value = value.replace(/[A-Za-z]/g, '')\n\t // replace the first decimal mark with reserved placeholder\n\t .replace(owner.numeralDecimalMark, 'M')\n\n\t // strip non numeric letters except minus and \"M\"\n\t // this is to ensure prefix has been stripped\n\t .replace(/[^\\dM-]/g, '')\n\n\t // replace the leading minus with reserved placeholder\n\t .replace(/^\\-/, 'N')\n\n\t // strip the other minus sign (if present)\n\t .replace(/\\-/g, '')\n\n\t // replace the minus sign (if present)\n\t .replace('N', owner.numeralPositiveOnly ? '' : '-')\n\n\t // replace decimal mark\n\t .replace('M', owner.numeralDecimalMark);\n\n\t // strip any leading zeros\n\t if (owner.stripLeadingZeroes) {\n\t value = value.replace(/^(-)?0+(?=\\d)/, '$1');\n\t }\n\n\t partSign = value.slice(0, 1) === '-' ? '-' : '';\n\t if (typeof owner.prefix != 'undefined') {\n\t if (owner.signBeforePrefix) {\n\t partSignAndPrefix = partSign + owner.prefix;\n\t } else {\n\t partSignAndPrefix = owner.prefix + partSign;\n\t }\n\t } else {\n\t partSignAndPrefix = partSign;\n\t }\n\n\t partInteger = value;\n\n\t if (value.indexOf(owner.numeralDecimalMark) >= 0) {\n\t parts = value.split(owner.numeralDecimalMark);\n\t partInteger = parts[0];\n\t partDecimal = owner.numeralDecimalMark + parts[1].slice(0, owner.numeralDecimalScale);\n\t }\n\n\t if (partSign === '-') {\n\t partInteger = partInteger.slice(1);\n\t }\n\n\t if (owner.numeralIntegerScale > 0) {\n\t partInteger = partInteger.slice(0, owner.numeralIntegerScale);\n\t }\n\n\t switch (owner.numeralThousandsGroupStyle) {\n\t case NumeralFormatter.groupStyle.lakh:\n\t partInteger = partInteger.replace(/(\\d)(?=(\\d\\d)+\\d$)/g, '$1' + owner.delimiter);\n\n\t break;\n\n\t case NumeralFormatter.groupStyle.wan:\n\t partInteger = partInteger.replace(/(\\d)(?=(\\d{4})+$)/g, '$1' + owner.delimiter);\n\n\t break;\n\n\t case NumeralFormatter.groupStyle.thousand:\n\t partInteger = partInteger.replace(/(\\d)(?=(\\d{3})+$)/g, '$1' + owner.delimiter);\n\n\t break;\n\t }\n\n\t if (owner.tailPrefix) {\n\t return partSign + partInteger.toString() + (owner.numeralDecimalScale > 0 ? partDecimal.toString() : '') + owner.prefix;\n\t }\n\n\t return partSignAndPrefix + partInteger.toString() + (owner.numeralDecimalScale > 0 ? partDecimal.toString() : '');\n\t }\n\t};\n\n\tmodule.exports = NumeralFormatter;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\n\tvar DateFormatter = function DateFormatter(datePattern, dateMin, dateMax) {\n\t var owner = this;\n\n\t owner.date = [];\n\t owner.blocks = [];\n\t owner.datePattern = datePattern;\n\t owner.dateMin = dateMin.split('-').reverse().map(function (x) {\n\t return parseInt(x, 10);\n\t });\n\t if (owner.dateMin.length === 2) owner.dateMin.unshift(0);\n\n\t owner.dateMax = dateMax.split('-').reverse().map(function (x) {\n\t return parseInt(x, 10);\n\t });\n\t if (owner.dateMax.length === 2) owner.dateMax.unshift(0);\n\n\t owner.initBlocks();\n\t};\n\n\tDateFormatter.prototype = {\n\t initBlocks: function initBlocks() {\n\t var owner = this;\n\t owner.datePattern.forEach(function (value) {\n\t if (value === 'Y') {\n\t owner.blocks.push(4);\n\t } else {\n\t owner.blocks.push(2);\n\t }\n\t });\n\t },\n\n\t getISOFormatDate: function getISOFormatDate() {\n\t var owner = this,\n\t date = owner.date;\n\n\t return date[2] ? date[2] + '-' + owner.addLeadingZero(date[1]) + '-' + owner.addLeadingZero(date[0]) : '';\n\t },\n\n\t getBlocks: function getBlocks() {\n\t return this.blocks;\n\t },\n\n\t getValidatedDate: function getValidatedDate(value) {\n\t var owner = this,\n\t result = '';\n\n\t value = value.replace(/[^\\d]/g, '');\n\n\t owner.blocks.forEach(function (length, index) {\n\t if (value.length > 0) {\n\t var sub = value.slice(0, length),\n\t sub0 = sub.slice(0, 1),\n\t rest = value.slice(length);\n\n\t switch (owner.datePattern[index]) {\n\t case 'd':\n\t if (sub === '00') {\n\t sub = '01';\n\t } else if (parseInt(sub0, 10) > 3) {\n\t sub = '0' + sub0;\n\t } else if (parseInt(sub, 10) > 31) {\n\t sub = '31';\n\t }\n\n\t break;\n\n\t case 'm':\n\t if (sub === '00') {\n\t sub = '01';\n\t } else if (parseInt(sub0, 10) > 1) {\n\t sub = '0' + sub0;\n\t } else if (parseInt(sub, 10) > 12) {\n\t sub = '12';\n\t }\n\n\t break;\n\t }\n\n\t result += sub;\n\n\t // update remaining string\n\t value = rest;\n\t }\n\t });\n\n\t return this.getFixedDateString(result);\n\t },\n\n\t getFixedDateString: function getFixedDateString(value) {\n\t var owner = this,\n\t datePattern = owner.datePattern,\n\t date = [],\n\t dayIndex = 0,\n\t monthIndex = 0,\n\t yearIndex = 0,\n\t dayStartIndex = 0,\n\t monthStartIndex = 0,\n\t yearStartIndex = 0,\n\t day,\n\t month,\n\t year,\n\t fullYearDone = false;\n\n\t // mm-dd || dd-mm\n\t if (value.length === 4 && datePattern[0].toLowerCase() !== 'y' && datePattern[1].toLowerCase() !== 'y') {\n\t dayStartIndex = datePattern[0] === 'd' ? 0 : 2;\n\t monthStartIndex = 2 - dayStartIndex;\n\t day = parseInt(value.slice(dayStartIndex, dayStartIndex + 2), 10);\n\t month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10);\n\n\t date = this.getFixedDate(day, month, 0);\n\t }\n\n\t // yyyy-mm-dd || yyyy-dd-mm || mm-dd-yyyy || dd-mm-yyyy || dd-yyyy-mm || mm-yyyy-dd\n\t if (value.length === 8) {\n\t datePattern.forEach(function (type, index) {\n\t switch (type) {\n\t case 'd':\n\t dayIndex = index;\n\t break;\n\t case 'm':\n\t monthIndex = index;\n\t break;\n\t default:\n\t yearIndex = index;\n\t break;\n\t }\n\t });\n\n\t yearStartIndex = yearIndex * 2;\n\t dayStartIndex = dayIndex <= yearIndex ? dayIndex * 2 : dayIndex * 2 + 2;\n\t monthStartIndex = monthIndex <= yearIndex ? monthIndex * 2 : monthIndex * 2 + 2;\n\n\t day = parseInt(value.slice(dayStartIndex, dayStartIndex + 2), 10);\n\t month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10);\n\t year = parseInt(value.slice(yearStartIndex, yearStartIndex + 4), 10);\n\n\t fullYearDone = value.slice(yearStartIndex, yearStartIndex + 4).length === 4;\n\n\t date = this.getFixedDate(day, month, year);\n\t }\n\n\t // mm-yy || yy-mm\n\t if (value.length === 4 && (datePattern[0] === 'y' || datePattern[1] === 'y')) {\n\t monthStartIndex = datePattern[0] === 'm' ? 0 : 2;\n\t yearStartIndex = 2 - monthStartIndex;\n\t month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10);\n\t year = parseInt(value.slice(yearStartIndex, yearStartIndex + 2), 10);\n\n\t fullYearDone = value.slice(yearStartIndex, yearStartIndex + 2).length === 2;\n\n\t date = [0, month, year];\n\t }\n\n\t // mm-yyyy || yyyy-mm\n\t if (value.length === 6 && (datePattern[0] === 'Y' || datePattern[1] === 'Y')) {\n\t monthStartIndex = datePattern[0] === 'm' ? 0 : 4;\n\t yearStartIndex = 2 - 0.5 * monthStartIndex;\n\t month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10);\n\t year = parseInt(value.slice(yearStartIndex, yearStartIndex + 4), 10);\n\n\t fullYearDone = value.slice(yearStartIndex, yearStartIndex + 4).length === 4;\n\n\t date = [0, month, year];\n\t }\n\n\t date = owner.getRangeFixedDate(date);\n\t owner.date = date;\n\n\t var result = date.length === 0 ? value : datePattern.reduce(function (previous, current) {\n\t switch (current) {\n\t case 'd':\n\t return previous + (date[0] === 0 ? '' : owner.addLeadingZero(date[0]));\n\t case 'm':\n\t return previous + (date[1] === 0 ? '' : owner.addLeadingZero(date[1]));\n\t case 'y':\n\t return previous + (fullYearDone ? owner.addLeadingZeroForYear(date[2], false) : '');\n\t case 'Y':\n\t return previous + (fullYearDone ? owner.addLeadingZeroForYear(date[2], true) : '');\n\t }\n\t }, '');\n\n\t return result;\n\t },\n\n\t getRangeFixedDate: function getRangeFixedDate(date) {\n\t var owner = this,\n\t datePattern = owner.datePattern,\n\t dateMin = owner.dateMin || [],\n\t dateMax = owner.dateMax || [];\n\n\t if (!date.length || dateMin.length < 3 && dateMax.length < 3) return date;\n\n\t if (datePattern.find(function (x) {\n\t return x.toLowerCase() === 'y';\n\t }) && date[2] === 0) return date;\n\n\t if (dateMax.length && (dateMax[2] < date[2] || dateMax[2] === date[2] && (dateMax[1] < date[1] || dateMax[1] === date[1] && dateMax[0] < date[0]))) return dateMax;\n\n\t if (dateMin.length && (dateMin[2] > date[2] || dateMin[2] === date[2] && (dateMin[1] > date[1] || dateMin[1] === date[1] && dateMin[0] > date[0]))) return dateMin;\n\n\t return date;\n\t },\n\n\t getFixedDate: function getFixedDate(day, month, year) {\n\t day = Math.min(day, 31);\n\t month = Math.min(month, 12);\n\t year = parseInt(year || 0, 10);\n\n\t if (month < 7 && month % 2 === 0 || month > 8 && month % 2 === 1) {\n\t day = Math.min(day, month === 2 ? this.isLeapYear(year) ? 29 : 28 : 30);\n\t }\n\n\t return [day, month, year];\n\t },\n\n\t isLeapYear: function isLeapYear(year) {\n\t return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n\t },\n\n\t addLeadingZero: function addLeadingZero(number) {\n\t return (number < 10 ? '0' : '') + number;\n\t },\n\n\t addLeadingZeroForYear: function addLeadingZeroForYear(number, fullYearMode) {\n\t if (fullYearMode) {\n\t return (number < 10 ? '000' : number < 100 ? '00' : number < 1000 ? '0' : '') + number;\n\t }\n\n\t return (number < 10 ? '0' : '') + number;\n\t }\n\t};\n\n\tmodule.exports = DateFormatter;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\n\tvar TimeFormatter = function TimeFormatter(timePattern, timeFormat) {\n\t var owner = this;\n\n\t owner.time = [];\n\t owner.blocks = [];\n\t owner.timePattern = timePattern;\n\t owner.timeFormat = timeFormat;\n\t owner.initBlocks();\n\t};\n\n\tTimeFormatter.prototype = {\n\t initBlocks: function initBlocks() {\n\t var owner = this;\n\t owner.timePattern.forEach(function () {\n\t owner.blocks.push(2);\n\t });\n\t },\n\n\t getISOFormatTime: function getISOFormatTime() {\n\t var owner = this,\n\t time = owner.time;\n\n\t return time[2] ? owner.addLeadingZero(time[0]) + ':' + owner.addLeadingZero(time[1]) + ':' + owner.addLeadingZero(time[2]) : '';\n\t },\n\n\t getBlocks: function getBlocks() {\n\t return this.blocks;\n\t },\n\n\t getTimeFormatOptions: function getTimeFormatOptions() {\n\t var owner = this;\n\t if (String(owner.timeFormat) === '12') {\n\t return {\n\t maxHourFirstDigit: 1,\n\t maxHours: 12,\n\t maxMinutesFirstDigit: 5,\n\t maxMinutes: 60\n\t };\n\t }\n\n\t return {\n\t maxHourFirstDigit: 2,\n\t maxHours: 23,\n\t maxMinutesFirstDigit: 5,\n\t maxMinutes: 60\n\t };\n\t },\n\n\t getValidatedTime: function getValidatedTime(value) {\n\t var owner = this,\n\t result = '';\n\n\t value = value.replace(/[^\\d]/g, '');\n\n\t var timeFormatOptions = owner.getTimeFormatOptions();\n\n\t owner.blocks.forEach(function (length, index) {\n\t if (value.length > 0) {\n\t var sub = value.slice(0, length),\n\t sub0 = sub.slice(0, 1),\n\t rest = value.slice(length);\n\n\t switch (owner.timePattern[index]) {\n\n\t case 'h':\n\t if (parseInt(sub0, 10) > timeFormatOptions.maxHourFirstDigit) {\n\t sub = '0' + sub0;\n\t } else if (parseInt(sub, 10) > timeFormatOptions.maxHours) {\n\t sub = timeFormatOptions.maxHours + '';\n\t }\n\n\t break;\n\n\t case 'm':\n\t case 's':\n\t if (parseInt(sub0, 10) > timeFormatOptions.maxMinutesFirstDigit) {\n\t sub = '0' + sub0;\n\t } else if (parseInt(sub, 10) > timeFormatOptions.maxMinutes) {\n\t sub = timeFormatOptions.maxMinutes + '';\n\t }\n\t break;\n\t }\n\n\t result += sub;\n\n\t // update remaining string\n\t value = rest;\n\t }\n\t });\n\n\t return this.getFixedTimeString(result);\n\t },\n\n\t getFixedTimeString: function getFixedTimeString(value) {\n\t var owner = this,\n\t timePattern = owner.timePattern,\n\t time = [],\n\t secondIndex = 0,\n\t minuteIndex = 0,\n\t hourIndex = 0,\n\t secondStartIndex = 0,\n\t minuteStartIndex = 0,\n\t hourStartIndex = 0,\n\t second,\n\t minute,\n\t hour;\n\n\t if (value.length === 6) {\n\t timePattern.forEach(function (type, index) {\n\t switch (type) {\n\t case 's':\n\t secondIndex = index * 2;\n\t break;\n\t case 'm':\n\t minuteIndex = index * 2;\n\t break;\n\t case 'h':\n\t hourIndex = index * 2;\n\t break;\n\t }\n\t });\n\n\t hourStartIndex = hourIndex;\n\t minuteStartIndex = minuteIndex;\n\t secondStartIndex = secondIndex;\n\n\t second = parseInt(value.slice(secondStartIndex, secondStartIndex + 2), 10);\n\t minute = parseInt(value.slice(minuteStartIndex, minuteStartIndex + 2), 10);\n\t hour = parseInt(value.slice(hourStartIndex, hourStartIndex + 2), 10);\n\n\t time = this.getFixedTime(hour, minute, second);\n\t }\n\n\t if (value.length === 4 && owner.timePattern.indexOf('s') < 0) {\n\t timePattern.forEach(function (type, index) {\n\t switch (type) {\n\t case 'm':\n\t minuteIndex = index * 2;\n\t break;\n\t case 'h':\n\t hourIndex = index * 2;\n\t break;\n\t }\n\t });\n\n\t hourStartIndex = hourIndex;\n\t minuteStartIndex = minuteIndex;\n\n\t second = 0;\n\t minute = parseInt(value.slice(minuteStartIndex, minuteStartIndex + 2), 10);\n\t hour = parseInt(value.slice(hourStartIndex, hourStartIndex + 2), 10);\n\n\t time = this.getFixedTime(hour, minute, second);\n\t }\n\n\t owner.time = time;\n\n\t return time.length === 0 ? value : timePattern.reduce(function (previous, current) {\n\t switch (current) {\n\t case 's':\n\t return previous + owner.addLeadingZero(time[2]);\n\t case 'm':\n\t return previous + owner.addLeadingZero(time[1]);\n\t case 'h':\n\t return previous + owner.addLeadingZero(time[0]);\n\t }\n\t }, '');\n\t },\n\n\t getFixedTime: function getFixedTime(hour, minute, second) {\n\t second = Math.min(parseInt(second || 0, 10), 60);\n\t minute = Math.min(minute, 60);\n\t hour = Math.min(hour, 60);\n\n\t return [hour, minute, second];\n\t },\n\n\t addLeadingZero: function addLeadingZero(number) {\n\t return (number < 10 ? '0' : '') + number;\n\t }\n\t};\n\n\tmodule.exports = TimeFormatter;\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\n\tvar PhoneFormatter = function PhoneFormatter(formatter, delimiter) {\n\t var owner = this;\n\n\t owner.delimiter = delimiter || delimiter === '' ? delimiter : ' ';\n\t owner.delimiterRE = delimiter ? new RegExp('\\\\' + delimiter, 'g') : '';\n\n\t owner.formatter = formatter;\n\t};\n\n\tPhoneFormatter.prototype = {\n\t setFormatter: function setFormatter(formatter) {\n\t this.formatter = formatter;\n\t },\n\n\t format: function format(phoneNumber) {\n\t var owner = this;\n\n\t owner.formatter.clear();\n\n\t // only keep number and +\n\t phoneNumber = phoneNumber.replace(/[^\\d+]/g, '');\n\n\t // strip non-leading +\n\t phoneNumber = phoneNumber.replace(/^\\+/, 'B').replace(/\\+/g, '').replace('B', '+');\n\n\t // strip delimiter\n\t phoneNumber = phoneNumber.replace(owner.delimiterRE, '');\n\n\t var result = '',\n\t current,\n\t validated = false;\n\n\t for (var i = 0, iMax = phoneNumber.length; i < iMax; i++) {\n\t current = owner.formatter.inputDigit(phoneNumber.charAt(i));\n\n\t // has ()- or space inside\n\t if (/[\\s()-]/g.test(current)) {\n\t result = current;\n\n\t validated = true;\n\t } else {\n\t if (!validated) {\n\t result = current;\n\t }\n\t // else: over length input\n\t // it turns to invalid number again\n\t }\n\t }\n\n\t // strip ()\n\t // e.g. US: 7161234567 returns (716) 123-4567\n\t result = result.replace(/[()]/g, '');\n\t // replace library delimiter with user customized delimiter\n\t result = result.replace(/[\\s-]/g, owner.delimiter);\n\n\t return result;\n\t }\n\t};\n\n\tmodule.exports = PhoneFormatter;\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\n\tvar CreditCardDetector = {\n\t blocks: {\n\t uatp: [4, 5, 6],\n\t amex: [4, 6, 5],\n\t diners: [4, 6, 4],\n\t discover: [4, 4, 4, 4],\n\t mastercard: [4, 4, 4, 4],\n\t dankort: [4, 4, 4, 4],\n\t instapayment: [4, 4, 4, 4],\n\t jcb15: [4, 6, 5],\n\t jcb: [4, 4, 4, 4],\n\t maestro: [4, 4, 4, 4],\n\t visa: [4, 4, 4, 4],\n\t mir: [4, 4, 4, 4],\n\t unionPay: [4, 4, 4, 4],\n\t general: [4, 4, 4, 4]\n\t },\n\n\t re: {\n\t // starts with 1; 15 digits, not starts with 1800 (jcb card)\n\t uatp: /^(?!1800)1\\d{0,14}/,\n\n\t // starts with 34/37; 15 digits\n\t amex: /^3[47]\\d{0,13}/,\n\n\t // starts with 6011/65/644-649; 16 digits\n\t discover: /^(?:6011|65\\d{0,2}|64[4-9]\\d?)\\d{0,12}/,\n\n\t // starts with 300-305/309 or 36/38/39; 14 digits\n\t diners: /^3(?:0([0-5]|9)|[689]\\d?)\\d{0,11}/,\n\n\t // starts with 51-55/2221–2720; 16 digits\n\t mastercard: /^(5[1-5]\\d{0,2}|22[2-9]\\d{0,1}|2[3-7]\\d{0,2})\\d{0,12}/,\n\n\t // starts with 5019/4175/4571; 16 digits\n\t dankort: /^(5019|4175|4571)\\d{0,12}/,\n\n\t // starts with 637-639; 16 digits\n\t instapayment: /^63[7-9]\\d{0,13}/,\n\n\t // starts with 2131/1800; 15 digits\n\t jcb15: /^(?:2131|1800)\\d{0,11}/,\n\n\t // starts with 2131/1800/35; 16 digits\n\t jcb: /^(?:35\\d{0,2})\\d{0,12}/,\n\n\t // starts with 50/56-58/6304/67; 16 digits\n\t maestro: /^(?:5[0678]\\d{0,2}|6304|67\\d{0,2})\\d{0,12}/,\n\n\t // starts with 22; 16 digits\n\t mir: /^220[0-4]\\d{0,12}/,\n\n\t // starts with 4; 16 digits\n\t visa: /^4\\d{0,15}/,\n\n\t // starts with 62/81; 16 digits\n\t unionPay: /^(62|81)\\d{0,14}/\n\t },\n\n\t getStrictBlocks: function getStrictBlocks(block) {\n\t var total = block.reduce(function (prev, current) {\n\t return prev + current;\n\t }, 0);\n\n\t return block.concat(19 - total);\n\t },\n\n\t getInfo: function getInfo(value, strictMode) {\n\t var blocks = CreditCardDetector.blocks,\n\t re = CreditCardDetector.re;\n\n\t // Some credit card can have up to 19 digits number.\n\t // Set strictMode to true will remove the 16 max-length restrain,\n\t // however, I never found any website validate card number like\n\t // this, hence probably you don't want to enable this option.\n\t strictMode = !!strictMode;\n\n\t for (var key in re) {\n\t if (re[key].test(value)) {\n\t var matchedBlocks = blocks[key];\n\t return {\n\t type: key,\n\t blocks: strictMode ? this.getStrictBlocks(matchedBlocks) : matchedBlocks\n\t };\n\t }\n\t }\n\n\t return {\n\t type: 'unknown',\n\t blocks: strictMode ? this.getStrictBlocks(blocks.general) : blocks.general\n\t };\n\t }\n\t};\n\n\tmodule.exports = CreditCardDetector;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\n\tvar Util = {\n\t noop: function noop() {},\n\n\t strip: function strip(value, re) {\n\t return value.replace(re, '');\n\t },\n\n\t getPostDelimiter: function getPostDelimiter(value, delimiter, delimiters) {\n\t // single delimiter\n\t if (delimiters.length === 0) {\n\t return value.slice(-delimiter.length) === delimiter ? delimiter : '';\n\t }\n\n\t // multiple delimiters\n\t var matchedDelimiter = '';\n\t delimiters.forEach(function (current) {\n\t if (value.slice(-current.length) === current) {\n\t matchedDelimiter = current;\n\t }\n\t });\n\n\t return matchedDelimiter;\n\t },\n\n\t getDelimiterREByDelimiter: function getDelimiterREByDelimiter(delimiter) {\n\t return new RegExp(delimiter.replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1'), 'g');\n\t },\n\n\t getNextCursorPosition: function getNextCursorPosition(prevPos, oldValue, newValue, delimiter, delimiters) {\n\t // If cursor was at the end of value, just place it back.\n\t // Because new value could contain additional chars.\n\t if (oldValue.length === prevPos) {\n\t return newValue.length;\n\t }\n\n\t return prevPos + this.getPositionOffset(prevPos, oldValue, newValue, delimiter, delimiters);\n\t },\n\n\t getPositionOffset: function getPositionOffset(prevPos, oldValue, newValue, delimiter, delimiters) {\n\t var oldRawValue, newRawValue, lengthOffset;\n\n\t oldRawValue = this.stripDelimiters(oldValue.slice(0, prevPos), delimiter, delimiters);\n\t newRawValue = this.stripDelimiters(newValue.slice(0, prevPos), delimiter, delimiters);\n\t lengthOffset = oldRawValue.length - newRawValue.length;\n\n\t return lengthOffset !== 0 ? lengthOffset / Math.abs(lengthOffset) : 0;\n\t },\n\n\t stripDelimiters: function stripDelimiters(value, delimiter, delimiters) {\n\t var owner = this;\n\n\t // single delimiter\n\t if (delimiters.length === 0) {\n\t var delimiterRE = delimiter ? owner.getDelimiterREByDelimiter(delimiter) : '';\n\n\t return value.replace(delimiterRE, '');\n\t }\n\n\t // multiple delimiters\n\t delimiters.forEach(function (current) {\n\t current.split('').forEach(function (letter) {\n\t value = value.replace(owner.getDelimiterREByDelimiter(letter), '');\n\t });\n\t });\n\n\t return value;\n\t },\n\n\t headStr: function headStr(str, length) {\n\t return str.slice(0, length);\n\t },\n\n\t getMaxLength: function getMaxLength(blocks) {\n\t return blocks.reduce(function (previous, current) {\n\t return previous + current;\n\t }, 0);\n\t },\n\n\t // strip prefix\n\t // Before type | After type | Return value\n\t // PEFIX-... | PEFIX-... | ''\n\t // PREFIX-123 | PEFIX-123 | 123\n\t // PREFIX-123 | PREFIX-23 | 23\n\t // PREFIX-123 | PREFIX-1234 | 1234\n\t getPrefixStrippedValue: function getPrefixStrippedValue(value, prefix, prefixLength, prevResult, delimiter, delimiters, noImmediatePrefix, tailPrefix, signBeforePrefix) {\n\t // No prefix\n\t if (prefixLength === 0) {\n\t return value;\n\t }\n\n\t // Value is prefix\n\t if (value === prefix && value !== '') {\n\t return '';\n\t }\n\n\t if (signBeforePrefix && value.slice(0, 1) == '-') {\n\t var prev = prevResult.slice(0, 1) == '-' ? prevResult.slice(1) : prevResult;\n\t return '-' + this.getPrefixStrippedValue(value.slice(1), prefix, prefixLength, prev, delimiter, delimiters, noImmediatePrefix, tailPrefix, signBeforePrefix);\n\t }\n\n\t // Pre result prefix string does not match pre-defined prefix\n\t if (prevResult.slice(0, prefixLength) !== prefix && !tailPrefix) {\n\t // Check if the first time user entered something\n\t if (noImmediatePrefix && !prevResult && value) return value;\n\t return '';\n\t } else if (prevResult.slice(-prefixLength) !== prefix && tailPrefix) {\n\t // Check if the first time user entered something\n\t if (noImmediatePrefix && !prevResult && value) return value;\n\t return '';\n\t }\n\n\t var prevValue = this.stripDelimiters(prevResult, delimiter, delimiters);\n\n\t // New value has issue, someone typed in between prefix letters\n\t // Revert to pre value\n\t if (value.slice(0, prefixLength) !== prefix && !tailPrefix) {\n\t return prevValue.slice(prefixLength);\n\t } else if (value.slice(-prefixLength) !== prefix && tailPrefix) {\n\t return prevValue.slice(0, -prefixLength - 1);\n\t }\n\n\t // No issue, strip prefix for new value\n\t return tailPrefix ? value.slice(0, -prefixLength) : value.slice(prefixLength);\n\t },\n\n\t getFirstDiffIndex: function getFirstDiffIndex(prev, current) {\n\t var index = 0;\n\n\t while (prev.charAt(index) === current.charAt(index)) {\n\t if (prev.charAt(index++) === '') {\n\t return -1;\n\t }\n\t }\n\n\t return index;\n\t },\n\n\t getFormattedValue: function getFormattedValue(value, blocks, blocksLength, delimiter, delimiters, delimiterLazyShow) {\n\t var result = '',\n\t multipleDelimiters = delimiters.length > 0,\n\t currentDelimiter = '';\n\n\t // no options, normal input\n\t if (blocksLength === 0) {\n\t return value;\n\t }\n\n\t blocks.forEach(function (length, index) {\n\t if (value.length > 0) {\n\t var sub = value.slice(0, length),\n\t rest = value.slice(length);\n\n\t if (multipleDelimiters) {\n\t currentDelimiter = delimiters[delimiterLazyShow ? index - 1 : index] || currentDelimiter;\n\t } else {\n\t currentDelimiter = delimiter;\n\t }\n\n\t if (delimiterLazyShow) {\n\t if (index > 0) {\n\t result += currentDelimiter;\n\t }\n\n\t result += sub;\n\t } else {\n\t result += sub;\n\n\t if (sub.length === length && index < blocksLength - 1) {\n\t result += currentDelimiter;\n\t }\n\t }\n\n\t // update remaining string\n\t value = rest;\n\t }\n\t });\n\n\t return result;\n\t },\n\n\t // move cursor to the end\n\t // the first time user focuses on an input with prefix\n\t fixPrefixCursor: function fixPrefixCursor(el, prefix, delimiter, delimiters) {\n\t if (!el) {\n\t return;\n\t }\n\n\t var val = el.value,\n\t appendix = delimiter || delimiters[0] || ' ';\n\n\t if (!el.setSelectionRange || !prefix || prefix.length + appendix.length <= val.length) {\n\t return;\n\t }\n\n\t var len = val.length * 2;\n\n\t // set timeout to avoid blink\n\t setTimeout(function () {\n\t el.setSelectionRange(len, len);\n\t }, 1);\n\t },\n\n\t // Check if input field is fully selected\n\t checkFullSelection: function checkFullSelection(value) {\n\t try {\n\t var selection = window.getSelection() || document.getSelection() || {};\n\t return selection.toString().length === value.length;\n\t } catch (ex) {\n\t // Ignore\n\t }\n\n\t return false;\n\t },\n\n\t setSelection: function setSelection(element, position, doc) {\n\t if (element !== this.getActiveElement(doc)) {\n\t return;\n\t }\n\n\t // cursor is already in the end\n\t if (element && element.value.length <= position) {\n\t return;\n\t }\n\n\t if (element.createTextRange) {\n\t var range = element.createTextRange();\n\n\t range.move('character', position);\n\t range.select();\n\t } else {\n\t try {\n\t element.setSelectionRange(position, position);\n\t } catch (e) {\n\t // eslint-disable-next-line\n\t console.warn('The input element type does not support selection');\n\t }\n\t }\n\t },\n\n\t getActiveElement: function getActiveElement(parent) {\n\t var activeElement = parent.activeElement;\n\t if (activeElement && activeElement.shadowRoot) {\n\t return this.getActiveElement(activeElement.shadowRoot);\n\t }\n\t return activeElement;\n\t },\n\n\t isAndroid: function isAndroid() {\n\t return navigator && /android/i.test(navigator.userAgent);\n\t },\n\n\t // On Android chrome, the keyup and keydown events\n\t // always return key code 229 as a composition that\n\t // buffers the user’s keystrokes\n\t // see https://github.com/nosir/cleave.js/issues/147\n\t isAndroidBackspaceKeydown: function isAndroidBackspaceKeydown(lastInputValue, currentInputValue) {\n\t if (!this.isAndroid() || !lastInputValue || !currentInputValue) {\n\t return false;\n\t }\n\n\t return currentInputValue === lastInputValue.slice(0, -1);\n\t }\n\t};\n\n\tmodule.exports = Util;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\n\t/**\n\t * Props Assignment\n\t *\n\t * Separate this, so react module can share the usage\n\t */\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\tvar DefaultProperties = {\n\t // Maybe change to object-assign\n\t // for now just keep it as simple\n\t assign: function assign(target, opts) {\n\t target = target || {};\n\t opts = opts || {};\n\n\t // credit card\n\t target.creditCard = !!opts.creditCard;\n\t target.creditCardStrictMode = !!opts.creditCardStrictMode;\n\t target.creditCardType = '';\n\t target.onCreditCardTypeChanged = opts.onCreditCardTypeChanged || function () {};\n\n\t // phone\n\t target.phone = !!opts.phone;\n\t target.phoneRegionCode = opts.phoneRegionCode || 'AU';\n\t target.phoneFormatter = {};\n\n\t // time\n\t target.time = !!opts.time;\n\t target.timePattern = opts.timePattern || ['h', 'm', 's'];\n\t target.timeFormat = opts.timeFormat || '24';\n\t target.timeFormatter = {};\n\n\t // date\n\t target.date = !!opts.date;\n\t target.datePattern = opts.datePattern || ['d', 'm', 'Y'];\n\t target.dateMin = opts.dateMin || '';\n\t target.dateMax = opts.dateMax || '';\n\t target.dateFormatter = {};\n\n\t // numeral\n\t target.numeral = !!opts.numeral;\n\t target.numeralIntegerScale = opts.numeralIntegerScale > 0 ? opts.numeralIntegerScale : 0;\n\t target.numeralDecimalScale = opts.numeralDecimalScale >= 0 ? opts.numeralDecimalScale : 2;\n\t target.numeralDecimalMark = opts.numeralDecimalMark || '.';\n\t target.numeralThousandsGroupStyle = opts.numeralThousandsGroupStyle || 'thousand';\n\t target.numeralPositiveOnly = !!opts.numeralPositiveOnly;\n\t target.stripLeadingZeroes = opts.stripLeadingZeroes !== false;\n\t target.signBeforePrefix = !!opts.signBeforePrefix;\n\t target.tailPrefix = !!opts.tailPrefix;\n\n\t // others\n\t target.swapHiddenInput = !!opts.swapHiddenInput;\n\n\t target.numericOnly = target.creditCard || target.date || !!opts.numericOnly;\n\n\t target.uppercase = !!opts.uppercase;\n\t target.lowercase = !!opts.lowercase;\n\n\t target.prefix = target.creditCard || target.date ? '' : opts.prefix || '';\n\t target.noImmediatePrefix = !!opts.noImmediatePrefix;\n\t target.prefixLength = target.prefix.length;\n\t target.rawValueTrimPrefix = !!opts.rawValueTrimPrefix;\n\t target.copyDelimiter = !!opts.copyDelimiter;\n\n\t target.initValue = opts.initValue !== undefined && opts.initValue !== null ? opts.initValue.toString() : '';\n\n\t target.delimiter = opts.delimiter || opts.delimiter === '' ? opts.delimiter : opts.date ? '/' : opts.time ? ':' : opts.numeral ? ',' : opts.phone ? ' ' : ' ';\n\t target.delimiterLength = target.delimiter.length;\n\t target.delimiterLazyShow = !!opts.delimiterLazyShow;\n\t target.delimiters = opts.delimiters || [];\n\n\t target.blocks = opts.blocks || [];\n\t target.blocksLength = target.blocks.length;\n\n\t target.root = (typeof global === 'undefined' ? 'undefined' : _typeof(global)) === 'object' && global ? global : window;\n\t target.document = opts.document || target.root.document;\n\n\t target.maxLength = 0;\n\n\t target.backspace = false;\n\t target.result = '';\n\n\t target.onValueChanged = opts.onValueChanged || function () {};\n\n\t return target;\n\t }\n\t};\n\n\tmodule.exports = DefaultProperties;\n\n/***/ })\n/******/ ])\n});\n;","module.exports = require('./dist/cleave-react-node.js');\n","/* eslint-disable no-return-assign */\nimport canUseDOM from './canUseDOM';\nexport var optionsSupported = false;\nexport var onceSupported = false;\n\ntry {\n var options = {\n get passive() {\n return optionsSupported = true;\n },\n\n get once() {\n // eslint-disable-next-line no-multi-assign\n return onceSupported = optionsSupported = true;\n }\n\n };\n\n if (canUseDOM) {\n window.addEventListener('test', options, options);\n window.removeEventListener('test', options, true);\n }\n} catch (e) {\n /* */\n}\n\n/**\n * An `addEventListener` ponyfill, supports the `once` option\n * \n * @param node the element\n * @param eventName the event name\n * @param handle the handler\n * @param options event options\n */\nfunction addEventListener(node, eventName, handler, options) {\n if (options && typeof options !== 'boolean' && !onceSupported) {\n var once = options.once,\n capture = options.capture;\n var wrappedHandler = handler;\n\n if (!onceSupported && once) {\n wrappedHandler = handler.__once || function onceHandler(event) {\n this.removeEventListener(eventName, onceHandler, capture);\n handler.call(this, event);\n };\n\n handler.__once = wrappedHandler;\n }\n\n node.addEventListener(eventName, wrappedHandler, optionsSupported ? options : capture);\n }\n\n node.addEventListener(eventName, handler, options);\n}\n\nexport default addEventListener;","export default !!(typeof window !== 'undefined' && window.document && window.document.createElement);","/* eslint-disable no-bitwise, no-cond-assign */\n\n/**\n * Checks if an element contains another given element.\n * \n * @param context the context element\n * @param node the element to check\n */\nexport default function contains(context, node) {\n // HTML DOM and SVG DOM may have different support levels,\n // so we need to check on context instead of a document root element.\n if (context.contains) return context.contains(node);\n if (context.compareDocumentPosition) return context === node || !!(context.compareDocumentPosition(node) & 16);\n}","import ownerWindow from './ownerWindow';\n/**\n * Returns one or all computed style properties of an element.\n * \n * @param node the element\n * @param psuedoElement the style property\n */\n\nexport default function getComputedStyle(node, psuedoElement) {\n return ownerWindow(node).getComputedStyle(node, psuedoElement);\n}","import ownerDocument from './ownerDocument';\n/**\n * Returns the owner window of a given element.\n * \n * @param node the element\n */\n\nexport default function ownerWindow(node) {\n var doc = ownerDocument(node);\n return doc && doc.defaultView || window;\n}","var rUpper = /([A-Z])/g;\nexport default function hyphenate(string) {\n return string.replace(rUpper, '-$1').toLowerCase();\n}","/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\nimport hyphenate from './hyphenate';\nvar msPattern = /^ms-/;\nexport default function hyphenateStyleName(string) {\n return hyphenate(string).replace(msPattern, '-ms-');\n}","var supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\nexport default function isTransform(value) {\n return !!(value && supportedTransforms.test(value));\n}","import getComputedStyle from './getComputedStyle';\nimport hyphenate from './hyphenateStyle';\nimport isTransform from './isTransform';\n\nfunction style(node, property) {\n var css = '';\n var transforms = '';\n\n if (typeof property === 'string') {\n return node.style.getPropertyValue(hyphenate(property)) || getComputedStyle(node).getPropertyValue(hyphenate(property));\n }\n\n Object.keys(property).forEach(function (key) {\n var value = property[key];\n\n if (!value && value !== 0) {\n node.style.removeProperty(hyphenate(key));\n } else if (isTransform(key)) {\n transforms += key + \"(\" + value + \") \";\n } else {\n css += hyphenate(key) + \": \" + value + \";\";\n }\n });\n\n if (transforms) {\n css += \"transform: \" + transforms + \";\";\n }\n\n node.style.cssText += \";\" + css;\n}\n\nexport default style;","/**\n * Checks if a given element has a CSS class.\n * \n * @param element the element\n * @param className the CSS class name\n */\nexport default function hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);\n return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}","import addEventListener from './addEventListener';\nimport removeEventListener from './removeEventListener';\n\nfunction listen(node, eventName, handler, options) {\n addEventListener(node, eventName, handler, options);\n return function () {\n removeEventListener(node, eventName, handler, options);\n };\n}\n\nexport default listen;","/**\n * Returns the owner document of a given element.\n * \n * @param node the element\n */\nexport default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","var toArray = Function.prototype.bind.call(Function.prototype.call, [].slice);\n/**\n * Runs `querySelectorAll` on a given element.\n * \n * @param element the element\n * @param selector the selector\n */\n\nexport default function qsa(element, selector) {\n return toArray(element.querySelectorAll(selector));\n}","/**\n * A `removeEventListener` ponyfill\n * \n * @param node the element\n * @param eventName the event name\n * @param handle the handler\n * @param options event options\n */\nfunction removeEventListener(node, eventName, handler, options) {\n var capture = options && typeof options !== 'boolean' ? options.capture : options;\n node.removeEventListener(eventName, handler, capture);\n\n if (handler.__once) {\n node.removeEventListener(eventName, handler.__once, capture);\n }\n}\n\nexport default removeEventListener;","import css from './css';\nimport listen from './listen';\nimport triggerEvent from './triggerEvent';\n\nfunction parseDuration(node) {\n var str = css(node, 'transitionDuration') || '';\n var mult = str.indexOf('ms') === -1 ? 1000 : 1;\n return parseFloat(str) * mult;\n}\n\nfunction emulateTransitionEnd(element, duration, padding) {\n if (padding === void 0) {\n padding = 5;\n }\n\n var called = false;\n var handle = setTimeout(function () {\n if (!called) triggerEvent(element, 'transitionend', true);\n }, duration + padding);\n var remove = listen(element, 'transitionend', function () {\n called = true;\n }, {\n once: true\n });\n return function () {\n clearTimeout(handle);\n remove();\n };\n}\n\nexport default function transitionEnd(element, handler, duration, padding) {\n if (duration == null) duration = parseDuration(element) || 0;\n var removeEmulate = emulateTransitionEnd(element, duration, padding);\n var remove = listen(element, 'transitionend', handler);\n return function () {\n removeEmulate();\n remove();\n };\n}","/**\n * Triggers an event on a given element.\n * \n * @param node the element\n * @param eventName the event name to trigger\n * @param bubbles whether the event should bubble up\n * @param cancelable whether the event should be cancelable\n */\nexport default function triggerEvent(node, eventName, bubbles, cancelable) {\n if (bubbles === void 0) {\n bubbles = false;\n }\n\n if (cancelable === void 0) {\n cancelable = true;\n }\n\n if (node) {\n var event = document.createEvent('HTMLEvents');\n event.initEvent(eventName, bubbles, cancelable);\n node.dispatchEvent(event);\n }\n}","import e from \"@firebase/app\";\n\nimport { U as r, T as t, q as a, C as s, M as o, a as i, j as n, W as p, z as f, X as m, t as c, Z as u, n as l, s as b, r as g, o as d, Q as h, E as v } from \"./prebuilt-306f43d8-45d6f0b9.js\";\n\nimport { Component as w } from \"@firebase/component\";\n\nimport \"tslib\";\n\nimport \"@firebase/util\";\n\nimport \"@firebase/logger\";\n\nimport \"@firebase/webchannel-wrapper\";\n\nvar C = {\n Firestore: r,\n GeoPoint: s,\n Timestamp: o,\n Blob: i,\n Transaction: n,\n WriteBatch: p,\n DocumentReference: f,\n DocumentSnapshot: m,\n Query: c,\n QueryDocumentSnapshot: u,\n QuerySnapshot: l,\n CollectionReference: b,\n FieldPath: g,\n FieldValue: d,\n setLogLevel: h,\n CACHE_SIZE_UNLIMITED: v\n};\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Registers the main Firestore build with the components framework.\n * Persistence can be enabled via `firebase.firestore().enablePersistence()`.\n */\nfunction I(e) {\n !\n /**\n * Configures Firestore as part of the Firebase SDK by calling registerService.\n *\n * @param firebase - The FirebaseNamespace to register Firestore with\n * @param firestoreFactory - A factory function that returns a new Firestore\n * instance.\n */\n function(e, r) {\n e.INTERNAL.registerComponent(new w(\"firestore\", (function(e) {\n var t = e.getProvider(\"app\").getImmediate();\n return r(t, e.getProvider(\"auth-internal\"));\n }), \"PUBLIC\" /* PUBLIC */).setServiceProps(Object.assign({}, C)));\n }(e, (function(e, s) {\n return new r(e, new t(e, s), new a);\n })), e.registerVersion(\"@firebase/firestore\", \"2.4.0\");\n}\n\nI(e);\n\nexport { I as registerFirestore };\n//# sourceMappingURL=index.js.map\n","import { c as e, u as r, U as o } from \"./prebuilt-306f43d8-45d6f0b9.js\";\n\nimport \"tslib\";\n\nimport \"@firebase/util\";\n\nimport \"@firebase/logger\";\n\nimport \"@firebase/webchannel-wrapper\";\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Prototype patches bundle loading to Firestore.\n */ function t(o) {\n o.prototype.loadBundle = e, o.prototype.namedQuery = r;\n}\n\nt(o);\n\nexport { t as registerBundle };\n//# sourceMappingURL=bundle.js.map\n","import firebase from '@firebase/app';\nimport { __extends, __awaiter, __generator } from 'tslib';\nimport { Component } from '@firebase/component';\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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 * Standard error codes for different ways a request can fail, as defined by:\r\n * https://github.com/googleapis/googleapis/blob/master/google/rpc/code.proto\r\n *\r\n * This map is used primarily to convert from a backend error code string to\r\n * a client SDK error code string, and make sure it's in the supported set.\r\n */\r\nvar errorCodeMap = {\r\n OK: 'ok',\r\n CANCELLED: 'cancelled',\r\n UNKNOWN: 'unknown',\r\n INVALID_ARGUMENT: 'invalid-argument',\r\n DEADLINE_EXCEEDED: 'deadline-exceeded',\r\n NOT_FOUND: 'not-found',\r\n ALREADY_EXISTS: 'already-exists',\r\n PERMISSION_DENIED: 'permission-denied',\r\n UNAUTHENTICATED: 'unauthenticated',\r\n RESOURCE_EXHAUSTED: 'resource-exhausted',\r\n FAILED_PRECONDITION: 'failed-precondition',\r\n ABORTED: 'aborted',\r\n OUT_OF_RANGE: 'out-of-range',\r\n UNIMPLEMENTED: 'unimplemented',\r\n INTERNAL: 'internal',\r\n UNAVAILABLE: 'unavailable',\r\n DATA_LOSS: 'data-loss'\r\n};\r\n/**\r\n * An explicit error that can be thrown from a handler to send an error to the\r\n * client that called the function.\r\n */\r\nvar HttpsErrorImpl = /** @class */ (function (_super) {\r\n __extends(HttpsErrorImpl, _super);\r\n function HttpsErrorImpl(code, message, details) {\r\n var _this = _super.call(this, message) || this;\r\n // This is a workaround for a bug in TypeScript when extending Error:\r\n // tslint:disable-next-line\r\n // https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\r\n Object.setPrototypeOf(_this, HttpsErrorImpl.prototype);\r\n _this.code = code;\r\n _this.details = details;\r\n return _this;\r\n }\r\n return HttpsErrorImpl;\r\n}(Error));\r\n/**\r\n * Takes an HTTP status code and returns the corresponding ErrorCode.\r\n * This is the standard HTTP status code -> error mapping defined in:\r\n * https://github.com/googleapis/googleapis/blob/master/google/rpc/code.proto\r\n *\r\n * @param status An HTTP status code.\r\n * @return The corresponding ErrorCode, or ErrorCode.UNKNOWN if none.\r\n */\r\nfunction codeForHTTPStatus(status) {\r\n // Make sure any successful status is OK.\r\n if (status >= 200 && status < 300) {\r\n return 'ok';\r\n }\r\n switch (status) {\r\n case 0:\r\n // This can happen if the server returns 500.\r\n return 'internal';\r\n case 400:\r\n return 'invalid-argument';\r\n case 401:\r\n return 'unauthenticated';\r\n case 403:\r\n return 'permission-denied';\r\n case 404:\r\n return 'not-found';\r\n case 409:\r\n return 'aborted';\r\n case 429:\r\n return 'resource-exhausted';\r\n case 499:\r\n return 'cancelled';\r\n case 500:\r\n return 'internal';\r\n case 501:\r\n return 'unimplemented';\r\n case 503:\r\n return 'unavailable';\r\n case 504:\r\n return 'deadline-exceeded';\r\n }\r\n return 'unknown';\r\n}\r\n/**\r\n * Takes an HTTP response and returns the corresponding Error, if any.\r\n */\r\nfunction _errorForResponse(status, bodyJSON, serializer) {\r\n var code = codeForHTTPStatus(status);\r\n // Start with reasonable defaults from the status code.\r\n var description = code;\r\n var details = undefined;\r\n // Then look through the body for explicit details.\r\n try {\r\n var errorJSON = bodyJSON && bodyJSON.error;\r\n if (errorJSON) {\r\n var status_1 = errorJSON.status;\r\n if (typeof status_1 === 'string') {\r\n if (!errorCodeMap[status_1]) {\r\n // They must've included an unknown error code in the body.\r\n return new HttpsErrorImpl('internal', 'internal');\r\n }\r\n code = errorCodeMap[status_1];\r\n // TODO(klimt): Add better default descriptions for error enums.\r\n // The default description needs to be updated for the new code.\r\n description = status_1;\r\n }\r\n var message = errorJSON.message;\r\n if (typeof message === 'string') {\r\n description = message;\r\n }\r\n details = errorJSON.details;\r\n if (details !== undefined) {\r\n details = serializer.decode(details);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // If we couldn't parse explicit error data, that's fine.\r\n }\r\n if (code === 'ok') {\r\n // Technically, there's an edge case where a developer could explicitly\r\n // return an error code of OK, and we will treat it as success, but that\r\n // seems reasonable.\r\n return null;\r\n }\r\n return new HttpsErrorImpl(code, description, details);\r\n}\n\n/**\r\n * Helper class to get metadata that should be included with a function call.\r\n */\r\nvar ContextProvider = /** @class */ (function () {\r\n function ContextProvider(authProvider, messagingProvider) {\r\n var _this = this;\r\n this.auth = null;\r\n this.messaging = null;\r\n this.auth = authProvider.getImmediate({ optional: true });\r\n this.messaging = messagingProvider.getImmediate({\r\n optional: true\r\n });\r\n if (!this.auth) {\r\n authProvider.get().then(function (auth) { return (_this.auth = auth); }, function () {\r\n /* get() never rejects */\r\n });\r\n }\r\n if (!this.messaging) {\r\n messagingProvider.get().then(function (messaging) { return (_this.messaging = messaging); }, function () {\r\n /* get() never rejects */\r\n });\r\n }\r\n }\r\n ContextProvider.prototype.getAuthToken = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var token;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!this.auth) {\r\n return [2 /*return*/, undefined];\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.auth.getToken()];\r\n case 2:\r\n token = _a.sent();\r\n if (!token) {\r\n return [2 /*return*/, undefined];\r\n }\r\n return [2 /*return*/, token.accessToken];\r\n case 3:\r\n _a.sent();\r\n // If there's any error when trying to get the auth token, leave it off.\r\n return [2 /*return*/, undefined];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n ContextProvider.prototype.getInstanceIdToken = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!this.messaging ||\r\n !('Notification' in self) ||\r\n Notification.permission !== 'granted') {\r\n return [2 /*return*/, undefined];\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.messaging.getToken()];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n case 3:\r\n _a.sent();\r\n // We don't warn on this, because it usually means messaging isn't set up.\r\n // console.warn('Failed to retrieve instance id token.', e);\r\n // If there's any error when trying to get the token, leave it off.\r\n return [2 /*return*/, undefined];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n ContextProvider.prototype.getContext = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authToken, instanceIdToken;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.getAuthToken()];\r\n case 1:\r\n authToken = _a.sent();\r\n return [4 /*yield*/, this.getInstanceIdToken()];\r\n case 2:\r\n instanceIdToken = _a.sent();\r\n return [2 /*return*/, { authToken: authToken, instanceIdToken: instanceIdToken }];\r\n }\r\n });\r\n });\r\n };\r\n return ContextProvider;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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 LONG_TYPE = 'type.googleapis.com/google.protobuf.Int64Value';\r\nvar UNSIGNED_LONG_TYPE = 'type.googleapis.com/google.protobuf.UInt64Value';\r\nfunction mapValues(\r\n// { [k: string]: unknown } is no longer a wildcard assignment target after typescript 3.5\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\no, f) {\r\n var result = {};\r\n for (var key in o) {\r\n if (o.hasOwnProperty(key)) {\r\n result[key] = f(o[key]);\r\n }\r\n }\r\n return result;\r\n}\r\nvar Serializer = /** @class */ (function () {\r\n function Serializer() {\r\n }\r\n // Takes data and encodes it in a JSON-friendly way, such that types such as\r\n // Date are preserved.\r\n Serializer.prototype.encode = function (data) {\r\n var _this = this;\r\n if (data == null) {\r\n return null;\r\n }\r\n if (data instanceof Number) {\r\n data = data.valueOf();\r\n }\r\n if (typeof data === 'number' && isFinite(data)) {\r\n // Any number in JS is safe to put directly in JSON and parse as a double\r\n // without any loss of precision.\r\n return data;\r\n }\r\n if (data === true || data === false) {\r\n return data;\r\n }\r\n if (Object.prototype.toString.call(data) === '[object String]') {\r\n return data;\r\n }\r\n if (data instanceof Date) {\r\n return data.toISOString();\r\n }\r\n if (Array.isArray(data)) {\r\n return data.map(function (x) { return _this.encode(x); });\r\n }\r\n if (typeof data === 'function' || typeof data === 'object') {\r\n return mapValues(data, function (x) { return _this.encode(x); });\r\n }\r\n // If we got this far, the data is not encodable.\r\n throw new Error('Data cannot be encoded in JSON: ' + data);\r\n };\r\n // Takes data that's been encoded in a JSON-friendly form and returns a form\r\n // with richer datatypes, such as Dates, etc.\r\n Serializer.prototype.decode = function (json) {\r\n var _this = this;\r\n if (json == null) {\r\n return json;\r\n }\r\n if (json['@type']) {\r\n switch (json['@type']) {\r\n case LONG_TYPE:\r\n // Fall through and handle this the same as unsigned.\r\n case UNSIGNED_LONG_TYPE: {\r\n // Technically, this could work return a valid number for malformed\r\n // data if there was a number followed by garbage. But it's just not\r\n // worth all the extra code to detect that case.\r\n var value = Number(json['value']);\r\n if (isNaN(value)) {\r\n throw new Error('Data cannot be decoded from JSON: ' + json);\r\n }\r\n return value;\r\n }\r\n default: {\r\n throw new Error('Data cannot be decoded from JSON: ' + json);\r\n }\r\n }\r\n }\r\n if (Array.isArray(json)) {\r\n return json.map(function (x) { return _this.decode(x); });\r\n }\r\n if (typeof json === 'function' || typeof json === 'object') {\r\n return mapValues(json, function (x) { return _this.decode(x); });\r\n }\r\n // Anything else is safe to return.\r\n return json;\r\n };\r\n return Serializer;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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 Promise that will be rejected after the given duration.\r\n * The error will be of type HttpsErrorImpl.\r\n *\r\n * @param millis Number of milliseconds to wait before rejecting.\r\n */\r\nfunction failAfter(millis) {\r\n var timer;\r\n var promise = new Promise(function (_, reject) {\r\n timer = setTimeout(function () {\r\n reject(new HttpsErrorImpl('deadline-exceeded', 'deadline-exceeded'));\r\n }, millis);\r\n });\r\n return {\r\n timer: timer,\r\n promise: promise\r\n };\r\n}\r\n/**\r\n * The main class for the Firebase Functions SDK.\r\n */\r\nvar Service = /** @class */ (function () {\r\n /**\r\n * Creates a new Functions service for the given app and (optional) region or custom domain.\r\n * @param app_ The FirebaseApp to use.\r\n * @param regionOrCustomDomain_ one of:\r\n * a) A region to call functions from, such as us-central1\r\n * b) A custom domain to use as a functions prefix, such as https://mydomain.com\r\n */\r\n function Service(app_, authProvider, messagingProvider, appCheckProvider, regionOrCustomDomain_, fetchImpl) {\r\n var _this = this;\r\n if (regionOrCustomDomain_ === void 0) { regionOrCustomDomain_ = 'us-central1'; }\r\n this.app_ = app_;\r\n this.appCheckProvider = appCheckProvider;\r\n this.fetchImpl = fetchImpl;\r\n this.serializer = new Serializer();\r\n this.emulatorOrigin = null;\r\n this.INTERNAL = {\r\n delete: function () {\r\n return Promise.resolve(_this.deleteService());\r\n }\r\n };\r\n this.contextProvider = new ContextProvider(authProvider, messagingProvider);\r\n // Cancels all ongoing requests when resolved.\r\n this.cancelAllRequests = new Promise(function (resolve) {\r\n _this.deleteService = function () {\r\n return resolve();\r\n };\r\n });\r\n // Resolve the region or custom domain overload by attempting to parse it.\r\n try {\r\n var url = new URL(regionOrCustomDomain_);\r\n this.customDomain = url.origin;\r\n this.region = 'us-central1';\r\n }\r\n catch (e) {\r\n this.customDomain = null;\r\n this.region = regionOrCustomDomain_;\r\n }\r\n }\r\n Object.defineProperty(Service.prototype, \"app\", {\r\n get: function () {\r\n return this.app_;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * Returns the URL for a callable with the given name.\r\n * @param name The name of the callable.\r\n */\r\n Service.prototype._url = function (name) {\r\n var projectId = this.app_.options.projectId;\r\n if (this.emulatorOrigin !== null) {\r\n var origin_1 = this.emulatorOrigin;\r\n return origin_1 + \"/\" + projectId + \"/\" + this.region + \"/\" + name;\r\n }\r\n if (this.customDomain !== null) {\r\n return this.customDomain + \"/\" + name;\r\n }\r\n return \"https://\" + this.region + \"-\" + projectId + \".cloudfunctions.net/\" + name;\r\n };\r\n /**\r\n * Modify this instance to communicate with the Cloud Functions emulator.\r\n *\r\n * Note: this must be called before this instance has been used to do any operations.\r\n *\r\n * @param host The emulator host (ex: localhost)\r\n * @param port The emulator port (ex: 5001)\r\n */\r\n Service.prototype.useEmulator = function (host, port) {\r\n this.emulatorOrigin = \"http://\" + host + \":\" + port;\r\n };\r\n /**\r\n * Changes this instance to point to a Cloud Functions emulator running\r\n * locally. See https://firebase.google.com/docs/functions/local-emulator\r\n *\r\n * @deprecated Prefer the useEmulator(host, port) method.\r\n * @param origin The origin of the local emulator, such as\r\n * \"http://localhost:5005\".\r\n */\r\n Service.prototype.useFunctionsEmulator = function (origin) {\r\n this.emulatorOrigin = origin;\r\n };\r\n /**\r\n * Returns a reference to the callable https trigger with the given name.\r\n * @param name The name of the trigger.\r\n */\r\n Service.prototype.httpsCallable = function (name, options) {\r\n var _this = this;\r\n return function (data) {\r\n return _this.call(name, data, options || {});\r\n };\r\n };\r\n /**\r\n * Does an HTTP POST and returns the completed response.\r\n * @param url The url to post to.\r\n * @param body The JSON body of the post.\r\n * @param headers The HTTP headers to include in the request.\r\n * @return A Promise that will succeed when the request finishes.\r\n */\r\n Service.prototype.postJSON = function (url, body, headers) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var appCheckToken, response, json;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n headers['Content-Type'] = 'application/json';\r\n return [4 /*yield*/, this.getAppCheckToken()];\r\n case 1:\r\n appCheckToken = _a.sent();\r\n if (appCheckToken !== null) {\r\n headers['X-Firebase-AppCheck'] = appCheckToken;\r\n }\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n return [4 /*yield*/, this.fetchImpl(url, {\r\n method: 'POST',\r\n body: JSON.stringify(body),\r\n headers: headers\r\n })];\r\n case 3:\r\n response = _a.sent();\r\n return [3 /*break*/, 5];\r\n case 4:\r\n _a.sent();\r\n // This could be an unhandled error on the backend, or it could be a\r\n // network error. There's no way to know, since an unhandled error on the\r\n // backend will fail to set the proper CORS header, and thus will be\r\n // treated as a network error by fetch.\r\n return [2 /*return*/, {\r\n status: 0,\r\n json: null\r\n }];\r\n case 5:\r\n json = null;\r\n _a.label = 6;\r\n case 6:\r\n _a.trys.push([6, 8, , 9]);\r\n return [4 /*yield*/, response.json()];\r\n case 7:\r\n json = _a.sent();\r\n return [3 /*break*/, 9];\r\n case 8:\r\n _a.sent();\r\n return [3 /*break*/, 9];\r\n case 9: return [2 /*return*/, {\r\n status: response.status,\r\n json: json\r\n }];\r\n }\r\n });\r\n });\r\n };\r\n Service.prototype.getAppCheckToken = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var appCheck, result;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n appCheck = this.appCheckProvider.getImmediate({ optional: true });\r\n if (!appCheck) return [3 /*break*/, 2];\r\n return [4 /*yield*/, appCheck.getToken()];\r\n case 1:\r\n result = _a.sent();\r\n // If getToken() fails, it will still return a dummy token that also has\r\n // an error field containing the error message. We will send any token\r\n // provided here and show an error if/when it is rejected by the functions\r\n // endpoint.\r\n return [2 /*return*/, result.token];\r\n case 2: return [2 /*return*/, null];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Calls a callable function asynchronously and returns the result.\r\n * @param name The name of the callable trigger.\r\n * @param data The data to pass as params to the function.s\r\n */\r\n Service.prototype.call = function (name, data, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var url, body, headers, context, timeout, _a, timer, failAfterPromise, response, error, responseData, decodedData;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n url = this._url(name);\r\n // Encode any special types, such as dates, in the input data.\r\n data = this.serializer.encode(data);\r\n body = { data: data };\r\n headers = {};\r\n return [4 /*yield*/, this.contextProvider.getContext()];\r\n case 1:\r\n context = _b.sent();\r\n if (context.authToken) {\r\n headers['Authorization'] = 'Bearer ' + context.authToken;\r\n }\r\n if (context.instanceIdToken) {\r\n headers['Firebase-Instance-ID-Token'] = context.instanceIdToken;\r\n }\r\n timeout = options.timeout || 70000;\r\n _a = failAfter(timeout), timer = _a.timer, failAfterPromise = _a.promise;\r\n return [4 /*yield*/, Promise.race([\r\n clearTimeoutWrapper(timer, this.postJSON(url, body, headers)),\r\n failAfterPromise,\r\n clearTimeoutWrapper(timer, this.cancelAllRequests)\r\n ])];\r\n case 2:\r\n response = _b.sent();\r\n // If service was deleted, interrupted response throws an error.\r\n if (!response) {\r\n throw new HttpsErrorImpl('cancelled', 'Firebase Functions instance was deleted.');\r\n }\r\n error = _errorForResponse(response.status, response.json, this.serializer);\r\n if (error) {\r\n throw error;\r\n }\r\n if (!response.json) {\r\n throw new HttpsErrorImpl('internal', 'Response is not valid JSON object.');\r\n }\r\n responseData = response.json.data;\r\n // TODO(klimt): For right now, allow \"result\" instead of \"data\", for\r\n // backwards compatibility.\r\n if (typeof responseData === 'undefined') {\r\n responseData = response.json.result;\r\n }\r\n if (typeof responseData === 'undefined') {\r\n // Consider the response malformed.\r\n throw new HttpsErrorImpl('internal', 'Response is missing data field.');\r\n }\r\n decodedData = this.serializer.decode(responseData);\r\n return [2 /*return*/, { data: decodedData }];\r\n }\r\n });\r\n });\r\n };\r\n return Service;\r\n}());\r\nfunction clearTimeoutWrapper(timer, promise) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var result;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, promise];\r\n case 1:\r\n result = _a.sent();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n clearTimeout(timer);\r\n return [2 /*return*/, result];\r\n }\r\n });\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 * Type constant for Firebase Functions.\r\n */\r\nvar FUNCTIONS_TYPE = 'functions';\r\nfunction registerFunctions(instance, fetchImpl) {\r\n var namespaceExports = {\r\n // no-inline\r\n Functions: Service\r\n };\r\n function factory(container, _a) {\r\n var regionOrCustomDomain = _a.instanceIdentifier;\r\n // Dependencies\r\n var app = container.getProvider('app').getImmediate();\r\n var authProvider = container.getProvider('auth-internal');\r\n var appCheckProvider = container.getProvider('app-check-internal');\r\n var messagingProvider = container.getProvider('messaging');\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return new Service(app, authProvider, messagingProvider, appCheckProvider, regionOrCustomDomain, fetchImpl);\r\n }\r\n instance.INTERNAL.registerComponent(new Component(FUNCTIONS_TYPE, factory, \"PUBLIC\" /* PUBLIC */)\r\n .setServiceProps(namespaceExports)\r\n .setMultipleInstances(true));\r\n}\n\nvar name = \"@firebase/functions\";\nvar version = \"0.6.15\";\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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\nregisterFunctions(firebase, fetch.bind(self));\r\nfirebase.registerVersion(name, version);\n//# sourceMappingURL=index.esm.js.map\n","import firebase from '@firebase/app';\nimport { Component } from '@firebase/component';\nimport { __awaiter, __generator, __spreadArray, __read, __values, __assign } from 'tslib';\nimport { ErrorFactory, FirebaseError } from '@firebase/util';\nimport { openDb } from 'idb';\n\nvar name = \"@firebase/installations\";\nvar version = \"0.4.32\";\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 PENDING_TIMEOUT_MS = 10000;\r\nvar PACKAGE_VERSION = \"w:\" + version;\r\nvar INTERNAL_AUTH_VERSION = 'FIS_v2';\r\nvar INSTALLATIONS_API_URL = 'https://firebaseinstallations.googleapis.com/v1';\r\nvar TOKEN_EXPIRATION_BUFFER = 60 * 60 * 1000; // One hour\r\nvar SERVICE = 'installations';\r\nvar SERVICE_NAME = 'Installations';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 _a;\r\nvar ERROR_DESCRIPTION_MAP = (_a = {},\r\n _a[\"missing-app-config-values\" /* MISSING_APP_CONFIG_VALUES */] = 'Missing App configuration value: \"{$valueName}\"',\r\n _a[\"not-registered\" /* NOT_REGISTERED */] = 'Firebase Installation is not registered.',\r\n _a[\"installation-not-found\" /* INSTALLATION_NOT_FOUND */] = 'Firebase Installation not found.',\r\n _a[\"request-failed\" /* REQUEST_FAILED */] = '{$requestName} request failed with error \"{$serverCode} {$serverStatus}: {$serverMessage}\"',\r\n _a[\"app-offline\" /* APP_OFFLINE */] = 'Could not process request. Application offline.',\r\n _a[\"delete-pending-registration\" /* DELETE_PENDING_REGISTRATION */] = \"Can't delete installation while there is a pending registration request.\",\r\n _a);\r\nvar ERROR_FACTORY = new ErrorFactory(SERVICE, SERVICE_NAME, ERROR_DESCRIPTION_MAP);\r\n/** Returns true if error is a FirebaseError that is based on an error from the server. */\r\nfunction isServerError(error) {\r\n return (error instanceof FirebaseError &&\r\n error.code.includes(\"request-failed\" /* REQUEST_FAILED */));\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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\nfunction getInstallationsEndpoint(_a) {\r\n var projectId = _a.projectId;\r\n return INSTALLATIONS_API_URL + \"/projects/\" + projectId + \"/installations\";\r\n}\r\nfunction extractAuthTokenInfoFromResponse(response) {\r\n return {\r\n token: response.token,\r\n requestStatus: 2 /* COMPLETED */,\r\n expiresIn: getExpiresInFromResponseExpiresIn(response.expiresIn),\r\n creationTime: Date.now()\r\n };\r\n}\r\nfunction getErrorFromResponse(requestName, response) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var responseJson, errorData;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, response.json()];\r\n case 1:\r\n responseJson = _a.sent();\r\n errorData = responseJson.error;\r\n return [2 /*return*/, ERROR_FACTORY.create(\"request-failed\" /* REQUEST_FAILED */, {\r\n requestName: requestName,\r\n serverCode: errorData.code,\r\n serverMessage: errorData.message,\r\n serverStatus: errorData.status\r\n })];\r\n }\r\n });\r\n });\r\n}\r\nfunction getHeaders(_a) {\r\n var apiKey = _a.apiKey;\r\n return new Headers({\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n 'x-goog-api-key': apiKey\r\n });\r\n}\r\nfunction getHeadersWithAuth(appConfig, _a) {\r\n var refreshToken = _a.refreshToken;\r\n var headers = getHeaders(appConfig);\r\n headers.append('Authorization', getAuthorizationHeader(refreshToken));\r\n return headers;\r\n}\r\n/**\r\n * Calls the passed in fetch wrapper and returns the response.\r\n * If the returned response has a status of 5xx, re-runs the function once and\r\n * returns the response.\r\n */\r\nfunction retryIfServerError(fn) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var result;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, fn()];\r\n case 1:\r\n result = _a.sent();\r\n if (result.status >= 500 && result.status < 600) {\r\n // Internal Server Error. Retry request.\r\n return [2 /*return*/, fn()];\r\n }\r\n return [2 /*return*/, result];\r\n }\r\n });\r\n });\r\n}\r\nfunction getExpiresInFromResponseExpiresIn(responseExpiresIn) {\r\n // This works because the server will never respond with fractions of a second.\r\n return Number(responseExpiresIn.replace('s', '000'));\r\n}\r\nfunction getAuthorizationHeader(refreshToken) {\r\n return INTERNAL_AUTH_VERSION + \" \" + refreshToken;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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\nfunction createInstallationRequest(appConfig, _a) {\r\n var fid = _a.fid;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var endpoint, headers, body, request, response, responseValue, registeredInstallationEntry;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n endpoint = getInstallationsEndpoint(appConfig);\r\n headers = getHeaders(appConfig);\r\n body = {\r\n fid: fid,\r\n authVersion: INTERNAL_AUTH_VERSION,\r\n appId: appConfig.appId,\r\n sdkVersion: PACKAGE_VERSION\r\n };\r\n request = {\r\n method: 'POST',\r\n headers: headers,\r\n body: JSON.stringify(body)\r\n };\r\n return [4 /*yield*/, retryIfServerError(function () { return fetch(endpoint, request); })];\r\n case 1:\r\n response = _b.sent();\r\n if (!response.ok) return [3 /*break*/, 3];\r\n return [4 /*yield*/, response.json()];\r\n case 2:\r\n responseValue = _b.sent();\r\n registeredInstallationEntry = {\r\n fid: responseValue.fid || fid,\r\n registrationStatus: 2 /* COMPLETED */,\r\n refreshToken: responseValue.refreshToken,\r\n authToken: extractAuthTokenInfoFromResponse(responseValue.authToken)\r\n };\r\n return [2 /*return*/, registeredInstallationEntry];\r\n case 3: return [4 /*yield*/, getErrorFromResponse('Create Installation', response)];\r\n case 4: throw _b.sent();\r\n }\r\n });\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\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/** Returns a promise that resolves after given time passes. */\r\nfunction sleep(ms) {\r\n return new Promise(function (resolve) {\r\n setTimeout(resolve, ms);\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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\nfunction bufferToBase64UrlSafe(array) {\r\n var b64 = btoa(String.fromCharCode.apply(String, __spreadArray([], __read(array))));\r\n return b64.replace(/\\+/g, '-').replace(/\\//g, '_');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 VALID_FID_PATTERN = /^[cdef][\\w-]{21}$/;\r\nvar INVALID_FID = '';\r\n/**\r\n * Generates a new FID using random values from Web Crypto API.\r\n * Returns an empty string if FID generation fails for any reason.\r\n */\r\nfunction generateFid() {\r\n try {\r\n // A valid FID has exactly 22 base64 characters, which is 132 bits, or 16.5\r\n // bytes. our implementation generates a 17 byte array instead.\r\n var fidByteArray = new Uint8Array(17);\r\n var crypto_1 = self.crypto || self.msCrypto;\r\n crypto_1.getRandomValues(fidByteArray);\r\n // Replace the first 4 random bits with the constant FID header of 0b0111.\r\n fidByteArray[0] = 112 + (fidByteArray[0] % 16);\r\n var fid = encode(fidByteArray);\r\n return VALID_FID_PATTERN.test(fid) ? fid : INVALID_FID;\r\n }\r\n catch (_a) {\r\n // FID generation errored\r\n return INVALID_FID;\r\n }\r\n}\r\n/** Converts a FID Uint8Array to a base64 string representation. */\r\nfunction encode(fidByteArray) {\r\n var b64String = bufferToBase64UrlSafe(fidByteArray);\r\n // Remove the 23rd character that was added because of the extra 4 bits at the\r\n // end of our 17 byte array, and the '=' padding.\r\n return b64String.substr(0, 22);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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/** Returns a string key that can be used to identify the app. */\r\nfunction getKey(appConfig) {\r\n return appConfig.appName + \"!\" + appConfig.appId;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 fidChangeCallbacks = new Map();\r\n/**\r\n * Calls the onIdChange callbacks with the new FID value, and broadcasts the\r\n * change to other tabs.\r\n */\r\nfunction fidChanged(appConfig, fid) {\r\n var key = getKey(appConfig);\r\n callFidChangeCallbacks(key, fid);\r\n broadcastFidChange(key, fid);\r\n}\r\nfunction addCallback(appConfig, callback) {\r\n // Open the broadcast channel if it's not already open,\r\n // to be able to listen to change events from other tabs.\r\n getBroadcastChannel();\r\n var key = getKey(appConfig);\r\n var callbackSet = fidChangeCallbacks.get(key);\r\n if (!callbackSet) {\r\n callbackSet = new Set();\r\n fidChangeCallbacks.set(key, callbackSet);\r\n }\r\n callbackSet.add(callback);\r\n}\r\nfunction removeCallback(appConfig, callback) {\r\n var key = getKey(appConfig);\r\n var callbackSet = fidChangeCallbacks.get(key);\r\n if (!callbackSet) {\r\n return;\r\n }\r\n callbackSet.delete(callback);\r\n if (callbackSet.size === 0) {\r\n fidChangeCallbacks.delete(key);\r\n }\r\n // Close broadcast channel if there are no more callbacks.\r\n closeBroadcastChannel();\r\n}\r\nfunction callFidChangeCallbacks(key, fid) {\r\n var e_1, _a;\r\n var callbacks = fidChangeCallbacks.get(key);\r\n if (!callbacks) {\r\n return;\r\n }\r\n try {\r\n for (var callbacks_1 = __values(callbacks), callbacks_1_1 = callbacks_1.next(); !callbacks_1_1.done; callbacks_1_1 = callbacks_1.next()) {\r\n var callback = callbacks_1_1.value;\r\n callback(fid);\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (callbacks_1_1 && !callbacks_1_1.done && (_a = callbacks_1.return)) _a.call(callbacks_1);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n}\r\nfunction broadcastFidChange(key, fid) {\r\n var channel = getBroadcastChannel();\r\n if (channel) {\r\n channel.postMessage({ key: key, fid: fid });\r\n }\r\n closeBroadcastChannel();\r\n}\r\nvar broadcastChannel = null;\r\n/** Opens and returns a BroadcastChannel if it is supported by the browser. */\r\nfunction getBroadcastChannel() {\r\n if (!broadcastChannel && 'BroadcastChannel' in self) {\r\n broadcastChannel = new BroadcastChannel('[Firebase] FID Change');\r\n broadcastChannel.onmessage = function (e) {\r\n callFidChangeCallbacks(e.data.key, e.data.fid);\r\n };\r\n }\r\n return broadcastChannel;\r\n}\r\nfunction closeBroadcastChannel() {\r\n if (fidChangeCallbacks.size === 0 && broadcastChannel) {\r\n broadcastChannel.close();\r\n broadcastChannel = null;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 DATABASE_NAME = 'firebase-installations-database';\r\nvar DATABASE_VERSION = 1;\r\nvar OBJECT_STORE_NAME = 'firebase-installations-store';\r\nvar dbPromise = null;\r\nfunction getDbPromise() {\r\n if (!dbPromise) {\r\n dbPromise = openDb(DATABASE_NAME, DATABASE_VERSION, function (upgradeDB) {\r\n // We don't use 'break' in this switch statement, the fall-through\r\n // behavior is what we want, because if there are multiple versions between\r\n // the old version and the current version, we want ALL the migrations\r\n // that correspond to those versions to run, not only the last one.\r\n // eslint-disable-next-line default-case\r\n switch (upgradeDB.oldVersion) {\r\n case 0:\r\n upgradeDB.createObjectStore(OBJECT_STORE_NAME);\r\n }\r\n });\r\n }\r\n return dbPromise;\r\n}\r\n/** Assigns or overwrites the record for the given key with the given value. */\r\nfunction set(appConfig, value) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var key, db, tx, objectStore, oldValue;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n key = getKey(appConfig);\r\n return [4 /*yield*/, getDbPromise()];\r\n case 1:\r\n db = _a.sent();\r\n tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n objectStore = tx.objectStore(OBJECT_STORE_NAME);\r\n return [4 /*yield*/, objectStore.get(key)];\r\n case 2:\r\n oldValue = _a.sent();\r\n return [4 /*yield*/, objectStore.put(value, key)];\r\n case 3:\r\n _a.sent();\r\n return [4 /*yield*/, tx.complete];\r\n case 4:\r\n _a.sent();\r\n if (!oldValue || oldValue.fid !== value.fid) {\r\n fidChanged(appConfig, value.fid);\r\n }\r\n return [2 /*return*/, value];\r\n }\r\n });\r\n });\r\n}\r\n/** Removes record(s) from the objectStore that match the given key. */\r\nfunction remove(appConfig) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var key, db, tx;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n key = getKey(appConfig);\r\n return [4 /*yield*/, getDbPromise()];\r\n case 1:\r\n db = _a.sent();\r\n tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n return [4 /*yield*/, tx.objectStore(OBJECT_STORE_NAME).delete(key)];\r\n case 2:\r\n _a.sent();\r\n return [4 /*yield*/, tx.complete];\r\n case 3:\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Atomically updates a record with the result of updateFn, which gets\r\n * called with the current value. If newValue is undefined, the record is\r\n * deleted instead.\r\n * @return Updated value\r\n */\r\nfunction update(appConfig, updateFn) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var key, db, tx, store, oldValue, newValue;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n key = getKey(appConfig);\r\n return [4 /*yield*/, getDbPromise()];\r\n case 1:\r\n db = _a.sent();\r\n tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n store = tx.objectStore(OBJECT_STORE_NAME);\r\n return [4 /*yield*/, store.get(key)];\r\n case 2:\r\n oldValue = _a.sent();\r\n newValue = updateFn(oldValue);\r\n if (!(newValue === undefined)) return [3 /*break*/, 4];\r\n return [4 /*yield*/, store.delete(key)];\r\n case 3:\r\n _a.sent();\r\n return [3 /*break*/, 6];\r\n case 4: return [4 /*yield*/, store.put(newValue, key)];\r\n case 5:\r\n _a.sent();\r\n _a.label = 6;\r\n case 6: return [4 /*yield*/, tx.complete];\r\n case 7:\r\n _a.sent();\r\n if (newValue && (!oldValue || oldValue.fid !== newValue.fid)) {\r\n fidChanged(appConfig, newValue.fid);\r\n }\r\n return [2 /*return*/, newValue];\r\n }\r\n });\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 * Updates and returns the InstallationEntry from the database.\r\n * Also triggers a registration request if it is necessary and possible.\r\n */\r\nfunction getInstallationEntry(appConfig) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var registrationPromise, installationEntry;\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, update(appConfig, function (oldEntry) {\r\n var installationEntry = updateOrCreateInstallationEntry(oldEntry);\r\n var entryWithPromise = triggerRegistrationIfNecessary(appConfig, installationEntry);\r\n registrationPromise = entryWithPromise.registrationPromise;\r\n return entryWithPromise.installationEntry;\r\n })];\r\n case 1:\r\n installationEntry = _b.sent();\r\n if (!(installationEntry.fid === INVALID_FID)) return [3 /*break*/, 3];\r\n _a = {};\r\n return [4 /*yield*/, registrationPromise];\r\n case 2: \r\n // FID generation failed. Waiting for the FID from the server.\r\n return [2 /*return*/, (_a.installationEntry = _b.sent(), _a)];\r\n case 3: return [2 /*return*/, {\r\n installationEntry: installationEntry,\r\n registrationPromise: registrationPromise\r\n }];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Creates a new Installation Entry if one does not exist.\r\n * Also clears timed out pending requests.\r\n */\r\nfunction updateOrCreateInstallationEntry(oldEntry) {\r\n var entry = oldEntry || {\r\n fid: generateFid(),\r\n registrationStatus: 0 /* NOT_STARTED */\r\n };\r\n return clearTimedOutRequest(entry);\r\n}\r\n/**\r\n * If the Firebase Installation is not registered yet, this will trigger the\r\n * registration and return an InProgressInstallationEntry.\r\n *\r\n * If registrationPromise does not exist, the installationEntry is guaranteed\r\n * to be registered.\r\n */\r\nfunction triggerRegistrationIfNecessary(appConfig, installationEntry) {\r\n if (installationEntry.registrationStatus === 0 /* NOT_STARTED */) {\r\n if (!navigator.onLine) {\r\n // Registration required but app is offline.\r\n var registrationPromiseWithError = Promise.reject(ERROR_FACTORY.create(\"app-offline\" /* APP_OFFLINE */));\r\n return {\r\n installationEntry: installationEntry,\r\n registrationPromise: registrationPromiseWithError\r\n };\r\n }\r\n // Try registering. Change status to IN_PROGRESS.\r\n var inProgressEntry = {\r\n fid: installationEntry.fid,\r\n registrationStatus: 1 /* IN_PROGRESS */,\r\n registrationTime: Date.now()\r\n };\r\n var registrationPromise = registerInstallation(appConfig, inProgressEntry);\r\n return { installationEntry: inProgressEntry, registrationPromise: registrationPromise };\r\n }\r\n else if (installationEntry.registrationStatus === 1 /* IN_PROGRESS */) {\r\n return {\r\n installationEntry: installationEntry,\r\n registrationPromise: waitUntilFidRegistration(appConfig)\r\n };\r\n }\r\n else {\r\n return { installationEntry: installationEntry };\r\n }\r\n}\r\n/** This will be executed only once for each new Firebase Installation. */\r\nfunction registerInstallation(appConfig, installationEntry) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var registeredInstallationEntry, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 7]);\r\n return [4 /*yield*/, createInstallationRequest(appConfig, installationEntry)];\r\n case 1:\r\n registeredInstallationEntry = _a.sent();\r\n return [2 /*return*/, set(appConfig, registeredInstallationEntry)];\r\n case 2:\r\n e_1 = _a.sent();\r\n if (!(isServerError(e_1) && e_1.customData.serverCode === 409)) return [3 /*break*/, 4];\r\n // Server returned a \"FID can not be used\" error.\r\n // Generate a new ID next time.\r\n return [4 /*yield*/, remove(appConfig)];\r\n case 3:\r\n // Server returned a \"FID can not be used\" error.\r\n // Generate a new ID next time.\r\n _a.sent();\r\n return [3 /*break*/, 6];\r\n case 4: \r\n // Registration failed. Set FID as not registered.\r\n return [4 /*yield*/, set(appConfig, {\r\n fid: installationEntry.fid,\r\n registrationStatus: 0 /* NOT_STARTED */\r\n })];\r\n case 5:\r\n // Registration failed. Set FID as not registered.\r\n _a.sent();\r\n _a.label = 6;\r\n case 6: throw e_1;\r\n case 7: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/** Call if FID registration is pending in another request. */\r\nfunction waitUntilFidRegistration(appConfig) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var entry, _a, installationEntry, registrationPromise;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, updateInstallationRequest(appConfig)];\r\n case 1:\r\n entry = _b.sent();\r\n _b.label = 2;\r\n case 2:\r\n if (!(entry.registrationStatus === 1 /* IN_PROGRESS */)) return [3 /*break*/, 5];\r\n // createInstallation request still in progress.\r\n return [4 /*yield*/, sleep(100)];\r\n case 3:\r\n // createInstallation request still in progress.\r\n _b.sent();\r\n return [4 /*yield*/, updateInstallationRequest(appConfig)];\r\n case 4:\r\n entry = _b.sent();\r\n return [3 /*break*/, 2];\r\n case 5:\r\n if (!(entry.registrationStatus === 0 /* NOT_STARTED */)) return [3 /*break*/, 7];\r\n return [4 /*yield*/, getInstallationEntry(appConfig)];\r\n case 6:\r\n _a = _b.sent(), installationEntry = _a.installationEntry, registrationPromise = _a.registrationPromise;\r\n if (registrationPromise) {\r\n return [2 /*return*/, registrationPromise];\r\n }\r\n else {\r\n // if there is no registrationPromise, entry is registered.\r\n return [2 /*return*/, installationEntry];\r\n }\r\n case 7: return [2 /*return*/, entry];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Called only if there is a CreateInstallation request in progress.\r\n *\r\n * Updates the InstallationEntry in the DB based on the status of the\r\n * CreateInstallation request.\r\n *\r\n * Returns the updated InstallationEntry.\r\n */\r\nfunction updateInstallationRequest(appConfig) {\r\n return update(appConfig, function (oldEntry) {\r\n if (!oldEntry) {\r\n throw ERROR_FACTORY.create(\"installation-not-found\" /* INSTALLATION_NOT_FOUND */);\r\n }\r\n return clearTimedOutRequest(oldEntry);\r\n });\r\n}\r\nfunction clearTimedOutRequest(entry) {\r\n if (hasInstallationRequestTimedOut(entry)) {\r\n return {\r\n fid: entry.fid,\r\n registrationStatus: 0 /* NOT_STARTED */\r\n };\r\n }\r\n return entry;\r\n}\r\nfunction hasInstallationRequestTimedOut(installationEntry) {\r\n return (installationEntry.registrationStatus === 1 /* IN_PROGRESS */ &&\r\n installationEntry.registrationTime + PENDING_TIMEOUT_MS < Date.now());\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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\nfunction generateAuthTokenRequest(_a, installationEntry) {\r\n var appConfig = _a.appConfig, platformLoggerProvider = _a.platformLoggerProvider;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var endpoint, headers, platformLogger, body, request, response, responseValue, completedAuthToken;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n endpoint = getGenerateAuthTokenEndpoint(appConfig, installationEntry);\r\n headers = getHeadersWithAuth(appConfig, installationEntry);\r\n platformLogger = platformLoggerProvider.getImmediate({\r\n optional: true\r\n });\r\n if (platformLogger) {\r\n headers.append('x-firebase-client', platformLogger.getPlatformInfoString());\r\n }\r\n body = {\r\n installation: {\r\n sdkVersion: PACKAGE_VERSION\r\n }\r\n };\r\n request = {\r\n method: 'POST',\r\n headers: headers,\r\n body: JSON.stringify(body)\r\n };\r\n return [4 /*yield*/, retryIfServerError(function () { return fetch(endpoint, request); })];\r\n case 1:\r\n response = _b.sent();\r\n if (!response.ok) return [3 /*break*/, 3];\r\n return [4 /*yield*/, response.json()];\r\n case 2:\r\n responseValue = _b.sent();\r\n completedAuthToken = extractAuthTokenInfoFromResponse(responseValue);\r\n return [2 /*return*/, completedAuthToken];\r\n case 3: return [4 /*yield*/, getErrorFromResponse('Generate Auth Token', response)];\r\n case 4: throw _b.sent();\r\n }\r\n });\r\n });\r\n}\r\nfunction getGenerateAuthTokenEndpoint(appConfig, _a) {\r\n var fid = _a.fid;\r\n return getInstallationsEndpoint(appConfig) + \"/\" + fid + \"/authTokens:generate\";\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 valid authentication token for the installation. Generates a new\r\n * token if one doesn't exist, is expired or about to expire.\r\n *\r\n * Should only be called if the Firebase Installation is registered.\r\n */\r\nfunction refreshAuthToken(dependencies, forceRefresh) {\r\n if (forceRefresh === void 0) { forceRefresh = false; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var tokenPromise, entry, authToken, _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, update(dependencies.appConfig, function (oldEntry) {\r\n if (!isEntryRegistered(oldEntry)) {\r\n throw ERROR_FACTORY.create(\"not-registered\" /* NOT_REGISTERED */);\r\n }\r\n var oldAuthToken = oldEntry.authToken;\r\n if (!forceRefresh && isAuthTokenValid(oldAuthToken)) {\r\n // There is a valid token in the DB.\r\n return oldEntry;\r\n }\r\n else if (oldAuthToken.requestStatus === 1 /* IN_PROGRESS */) {\r\n // There already is a token request in progress.\r\n tokenPromise = waitUntilAuthTokenRequest(dependencies, forceRefresh);\r\n return oldEntry;\r\n }\r\n else {\r\n // No token or token expired.\r\n if (!navigator.onLine) {\r\n throw ERROR_FACTORY.create(\"app-offline\" /* APP_OFFLINE */);\r\n }\r\n var inProgressEntry = makeAuthTokenRequestInProgressEntry(oldEntry);\r\n tokenPromise = fetchAuthTokenFromServer(dependencies, inProgressEntry);\r\n return inProgressEntry;\r\n }\r\n })];\r\n case 1:\r\n entry = _b.sent();\r\n if (!tokenPromise) return [3 /*break*/, 3];\r\n return [4 /*yield*/, tokenPromise];\r\n case 2:\r\n _a = _b.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n _a = entry.authToken;\r\n _b.label = 4;\r\n case 4:\r\n authToken = _a;\r\n return [2 /*return*/, authToken];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Call only if FID is registered and Auth Token request is in progress.\r\n *\r\n * Waits until the current pending request finishes. If the request times out,\r\n * tries once in this thread as well.\r\n */\r\nfunction waitUntilAuthTokenRequest(dependencies, forceRefresh) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var entry, authToken;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, updateAuthTokenRequest(dependencies.appConfig)];\r\n case 1:\r\n entry = _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n if (!(entry.authToken.requestStatus === 1 /* IN_PROGRESS */)) return [3 /*break*/, 5];\r\n // generateAuthToken still in progress.\r\n return [4 /*yield*/, sleep(100)];\r\n case 3:\r\n // generateAuthToken still in progress.\r\n _a.sent();\r\n return [4 /*yield*/, updateAuthTokenRequest(dependencies.appConfig)];\r\n case 4:\r\n entry = _a.sent();\r\n return [3 /*break*/, 2];\r\n case 5:\r\n authToken = entry.authToken;\r\n if (authToken.requestStatus === 0 /* NOT_STARTED */) {\r\n // The request timed out or failed in a different call. Try again.\r\n return [2 /*return*/, refreshAuthToken(dependencies, forceRefresh)];\r\n }\r\n else {\r\n return [2 /*return*/, authToken];\r\n }\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Called only if there is a GenerateAuthToken request in progress.\r\n *\r\n * Updates the InstallationEntry in the DB based on the status of the\r\n * GenerateAuthToken request.\r\n *\r\n * Returns the updated InstallationEntry.\r\n */\r\nfunction updateAuthTokenRequest(appConfig) {\r\n return update(appConfig, function (oldEntry) {\r\n if (!isEntryRegistered(oldEntry)) {\r\n throw ERROR_FACTORY.create(\"not-registered\" /* NOT_REGISTERED */);\r\n }\r\n var oldAuthToken = oldEntry.authToken;\r\n if (hasAuthTokenRequestTimedOut(oldAuthToken)) {\r\n return __assign(__assign({}, oldEntry), { authToken: { requestStatus: 0 /* NOT_STARTED */ } });\r\n }\r\n return oldEntry;\r\n });\r\n}\r\nfunction fetchAuthTokenFromServer(dependencies, installationEntry) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authToken, updatedInstallationEntry, e_1, updatedInstallationEntry;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 3, , 8]);\r\n return [4 /*yield*/, generateAuthTokenRequest(dependencies, installationEntry)];\r\n case 1:\r\n authToken = _a.sent();\r\n updatedInstallationEntry = __assign(__assign({}, installationEntry), { authToken: authToken });\r\n return [4 /*yield*/, set(dependencies.appConfig, updatedInstallationEntry)];\r\n case 2:\r\n _a.sent();\r\n return [2 /*return*/, authToken];\r\n case 3:\r\n e_1 = _a.sent();\r\n if (!(isServerError(e_1) &&\r\n (e_1.customData.serverCode === 401 || e_1.customData.serverCode === 404))) return [3 /*break*/, 5];\r\n // Server returned a \"FID not found\" or a \"Invalid authentication\" error.\r\n // Generate a new ID next time.\r\n return [4 /*yield*/, remove(dependencies.appConfig)];\r\n case 4:\r\n // Server returned a \"FID not found\" or a \"Invalid authentication\" error.\r\n // Generate a new ID next time.\r\n _a.sent();\r\n return [3 /*break*/, 7];\r\n case 5:\r\n updatedInstallationEntry = __assign(__assign({}, installationEntry), { authToken: { requestStatus: 0 /* NOT_STARTED */ } });\r\n return [4 /*yield*/, set(dependencies.appConfig, updatedInstallationEntry)];\r\n case 6:\r\n _a.sent();\r\n _a.label = 7;\r\n case 7: throw e_1;\r\n case 8: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nfunction isEntryRegistered(installationEntry) {\r\n return (installationEntry !== undefined &&\r\n installationEntry.registrationStatus === 2 /* COMPLETED */);\r\n}\r\nfunction isAuthTokenValid(authToken) {\r\n return (authToken.requestStatus === 2 /* COMPLETED */ &&\r\n !isAuthTokenExpired(authToken));\r\n}\r\nfunction isAuthTokenExpired(authToken) {\r\n var now = Date.now();\r\n return (now < authToken.creationTime ||\r\n authToken.creationTime + authToken.expiresIn < now + TOKEN_EXPIRATION_BUFFER);\r\n}\r\n/** Returns an updated InstallationEntry with an InProgressAuthToken. */\r\nfunction makeAuthTokenRequestInProgressEntry(oldEntry) {\r\n var inProgressAuthToken = {\r\n requestStatus: 1 /* IN_PROGRESS */,\r\n requestTime: Date.now()\r\n };\r\n return __assign(__assign({}, oldEntry), { authToken: inProgressAuthToken });\r\n}\r\nfunction hasAuthTokenRequestTimedOut(authToken) {\r\n return (authToken.requestStatus === 1 /* IN_PROGRESS */ &&\r\n authToken.requestTime + PENDING_TIMEOUT_MS < Date.now());\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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\nfunction getId(dependencies) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a, installationEntry, registrationPromise;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, getInstallationEntry(dependencies.appConfig)];\r\n case 1:\r\n _a = _b.sent(), installationEntry = _a.installationEntry, registrationPromise = _a.registrationPromise;\r\n if (registrationPromise) {\r\n registrationPromise.catch(console.error);\r\n }\r\n else {\r\n // If the installation is already registered, update the authentication\r\n // token if needed.\r\n refreshAuthToken(dependencies).catch(console.error);\r\n }\r\n return [2 /*return*/, installationEntry.fid];\r\n }\r\n });\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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\nfunction getToken(dependencies, forceRefresh) {\r\n if (forceRefresh === void 0) { forceRefresh = false; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authToken;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, completeInstallationRegistration(dependencies.appConfig)];\r\n case 1:\r\n _a.sent();\r\n return [4 /*yield*/, refreshAuthToken(dependencies, forceRefresh)];\r\n case 2:\r\n authToken = _a.sent();\r\n return [2 /*return*/, authToken.token];\r\n }\r\n });\r\n });\r\n}\r\nfunction completeInstallationRegistration(appConfig) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var registrationPromise;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, getInstallationEntry(appConfig)];\r\n case 1:\r\n registrationPromise = (_a.sent()).registrationPromise;\r\n if (!registrationPromise) return [3 /*break*/, 3];\r\n // A createInstallation request is in progress. Wait until it finishes.\r\n return [4 /*yield*/, registrationPromise];\r\n case 2:\r\n // A createInstallation request is in progress. Wait until it finishes.\r\n _a.sent();\r\n _a.label = 3;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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\nfunction deleteInstallationRequest(appConfig, installationEntry) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var endpoint, headers, request, response;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n endpoint = getDeleteEndpoint(appConfig, installationEntry);\r\n headers = getHeadersWithAuth(appConfig, installationEntry);\r\n request = {\r\n method: 'DELETE',\r\n headers: headers\r\n };\r\n return [4 /*yield*/, retryIfServerError(function () { return fetch(endpoint, request); })];\r\n case 1:\r\n response = _a.sent();\r\n if (!!response.ok) return [3 /*break*/, 3];\r\n return [4 /*yield*/, getErrorFromResponse('Delete Installation', response)];\r\n case 2: throw _a.sent();\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nfunction getDeleteEndpoint(appConfig, _a) {\r\n var fid = _a.fid;\r\n return getInstallationsEndpoint(appConfig) + \"/\" + fid;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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\nfunction deleteInstallation(dependencies) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var appConfig, entry;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n appConfig = dependencies.appConfig;\r\n return [4 /*yield*/, update(appConfig, function (oldEntry) {\r\n if (oldEntry && oldEntry.registrationStatus === 0 /* NOT_STARTED */) {\r\n // Delete the unregistered entry without sending a deleteInstallation request.\r\n return undefined;\r\n }\r\n return oldEntry;\r\n })];\r\n case 1:\r\n entry = _a.sent();\r\n if (!entry) return [3 /*break*/, 6];\r\n if (!(entry.registrationStatus === 1 /* IN_PROGRESS */)) return [3 /*break*/, 2];\r\n // Can't delete while trying to register.\r\n throw ERROR_FACTORY.create(\"delete-pending-registration\" /* DELETE_PENDING_REGISTRATION */);\r\n case 2:\r\n if (!(entry.registrationStatus === 2 /* COMPLETED */)) return [3 /*break*/, 6];\r\n if (!!navigator.onLine) return [3 /*break*/, 3];\r\n throw ERROR_FACTORY.create(\"app-offline\" /* APP_OFFLINE */);\r\n case 3: return [4 /*yield*/, deleteInstallationRequest(appConfig, entry)];\r\n case 4:\r\n _a.sent();\r\n return [4 /*yield*/, remove(appConfig)];\r\n case 5:\r\n _a.sent();\r\n _a.label = 6;\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 * Sets a new callback that will get called when Installation ID changes.\r\n * Returns an unsubscribe function that will remove the callback when called.\r\n */\r\nfunction onIdChange(_a, callback) {\r\n var appConfig = _a.appConfig;\r\n addCallback(appConfig, callback);\r\n return function () {\r\n removeCallback(appConfig, callback);\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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\nfunction extractAppConfig(app) {\r\n var e_1, _a;\r\n if (!app || !app.options) {\r\n throw getMissingValueError('App Configuration');\r\n }\r\n if (!app.name) {\r\n throw getMissingValueError('App Name');\r\n }\r\n // Required app config keys\r\n var configKeys = [\r\n 'projectId',\r\n 'apiKey',\r\n 'appId'\r\n ];\r\n try {\r\n for (var configKeys_1 = __values(configKeys), configKeys_1_1 = configKeys_1.next(); !configKeys_1_1.done; configKeys_1_1 = configKeys_1.next()) {\r\n var keyName = configKeys_1_1.value;\r\n if (!app.options[keyName]) {\r\n throw getMissingValueError(keyName);\r\n }\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (configKeys_1_1 && !configKeys_1_1.done && (_a = configKeys_1.return)) _a.call(configKeys_1);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n return {\r\n appName: app.name,\r\n projectId: app.options.projectId,\r\n apiKey: app.options.apiKey,\r\n appId: app.options.appId\r\n };\r\n}\r\nfunction getMissingValueError(valueName) {\r\n return ERROR_FACTORY.create(\"missing-app-config-values\" /* MISSING_APP_CONFIG_VALUES */, {\r\n valueName: valueName\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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\nfunction registerInstallations(instance) {\r\n var installationsName = 'installations';\r\n instance.INTERNAL.registerComponent(new Component(installationsName, function (container) {\r\n var app = container.getProvider('app').getImmediate();\r\n // Throws if app isn't configured properly.\r\n var appConfig = extractAppConfig(app);\r\n var platformLoggerProvider = container.getProvider('platform-logger');\r\n var dependencies = {\r\n appConfig: appConfig,\r\n platformLoggerProvider: platformLoggerProvider\r\n };\r\n var installations = {\r\n app: app,\r\n getId: function () { return getId(dependencies); },\r\n getToken: function (forceRefresh) {\r\n return getToken(dependencies, forceRefresh);\r\n },\r\n delete: function () { return deleteInstallation(dependencies); },\r\n onIdChange: function (callback) {\r\n return onIdChange(dependencies, callback);\r\n }\r\n };\r\n return installations;\r\n }, \"PUBLIC\" /* PUBLIC */));\r\n instance.registerVersion(name, version);\r\n}\r\nregisterInstallations(firebase);\n\nexport { registerInstallations };\n//# sourceMappingURL=index.esm.js.map\n","import '@firebase/installations';\nimport { Component } from '@firebase/component';\nimport { ErrorFactory } from '@firebase/util';\nimport { __spreadArray, __read, __awaiter, __generator, __assign, __values } from 'tslib';\nimport { deleteDb, openDb } from 'idb';\nimport firebase from '@firebase/app';\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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 _a;\r\nvar ERROR_MAP = (_a = {},\r\n _a[\"missing-app-config-values\" /* MISSING_APP_CONFIG_VALUES */] = 'Missing App configuration value: \"{$valueName}\"',\r\n _a[\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */] = 'This method is available in a Window context.',\r\n _a[\"only-available-in-sw\" /* AVAILABLE_IN_SW */] = 'This method is available in a service worker context.',\r\n _a[\"permission-default\" /* PERMISSION_DEFAULT */] = 'The notification permission was not granted and dismissed instead.',\r\n _a[\"permission-blocked\" /* PERMISSION_BLOCKED */] = 'The notification permission was not granted and blocked instead.',\r\n _a[\"unsupported-browser\" /* UNSUPPORTED_BROWSER */] = \"This browser doesn't support the API's required to use the firebase SDK.\",\r\n _a[\"failed-service-worker-registration\" /* FAILED_DEFAULT_REGISTRATION */] = 'We are unable to register the default service worker. {$browserErrorMessage}',\r\n _a[\"token-subscribe-failed\" /* TOKEN_SUBSCRIBE_FAILED */] = 'A problem occurred while subscribing the user to FCM: {$errorInfo}',\r\n _a[\"token-subscribe-no-token\" /* TOKEN_SUBSCRIBE_NO_TOKEN */] = 'FCM returned no token when subscribing the user to push.',\r\n _a[\"token-unsubscribe-failed\" /* TOKEN_UNSUBSCRIBE_FAILED */] = 'A problem occurred while unsubscribing the ' +\r\n 'user from FCM: {$errorInfo}',\r\n _a[\"token-update-failed\" /* TOKEN_UPDATE_FAILED */] = 'A problem occurred while updating the user from FCM: {$errorInfo}',\r\n _a[\"token-update-no-token\" /* TOKEN_UPDATE_NO_TOKEN */] = 'FCM returned no token when updating the user to push.',\r\n _a[\"use-sw-after-get-token\" /* USE_SW_AFTER_GET_TOKEN */] = 'The useServiceWorker() method may only be called once and must be ' +\r\n 'called before calling getToken() to ensure your service worker is used.',\r\n _a[\"invalid-sw-registration\" /* INVALID_SW_REGISTRATION */] = 'The input to useServiceWorker() must be a ServiceWorkerRegistration.',\r\n _a[\"invalid-bg-handler\" /* INVALID_BG_HANDLER */] = 'The input to setBackgroundMessageHandler() must be a function.',\r\n _a[\"invalid-vapid-key\" /* INVALID_VAPID_KEY */] = 'The public VAPID key must be a string.',\r\n _a[\"use-vapid-key-after-get-token\" /* USE_VAPID_KEY_AFTER_GET_TOKEN */] = 'The usePublicVapidKey() method may only be called once and must be ' +\r\n 'called before calling getToken() to ensure your VAPID key is used.',\r\n _a);\r\nvar ERROR_FACTORY = new ErrorFactory('messaging', 'Messaging', ERROR_MAP);\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 DEFAULT_SW_PATH = '/firebase-messaging-sw.js';\r\nvar DEFAULT_SW_SCOPE = '/firebase-cloud-messaging-push-scope';\r\nvar DEFAULT_VAPID_KEY = 'BDOU99-h67HcA6JeFXHbSNMu7e2yNNu3RzoMj8TM4W88jITfq7ZmPvIM1Iv-4_l2LxQcYwhqby2xGpWwzjfAnG4';\r\nvar ENDPOINT = 'https://fcmregistrations.googleapis.com/v1';\r\n// Key of FCM Payload in Notification's data field.\r\nvar FCM_MSG = 'FCM_MSG';\r\nvar TAG = 'FirebaseMessaging: ';\r\n// Set to '1' if Analytics is enabled for the campaign\r\nvar CONSOLE_CAMPAIGN_ANALYTICS_ENABLED = 'google.c.a.e';\r\nvar CONSOLE_CAMPAIGN_ID = 'google.c.a.c_id';\r\nvar CONSOLE_CAMPAIGN_TIME = 'google.c.a.ts';\r\nvar CONSOLE_CAMPAIGN_NAME = 'google.c.a.c_l';\r\n// Due to the fact that onBackgroundMessage can't be awaited (to support rxjs), a silent push\r\n// warning might be shown by the browser if the callback fails to completes by the end of onPush.\r\n// Experiments were ran to determine the majority onBackground message clock time. This brief\r\n// blocking time would allow majority of the onBackgroundMessage callback to finish.\r\nvar BACKGROUND_HANDLE_EXECUTION_TIME_LIMIT_MS = 1000;\r\n// Preparation time for client to initialize and set up the message handler.\r\nvar FOREGROUND_HANDLE_PREPARATION_TIME_MS = 3000;\n\n/**\r\n * @license\r\n * Copyright 2018 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\r\n * in compliance with the License. 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 distributed under the License\r\n * is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express\r\n * or implied. See the License for the specific language governing permissions and limitations under\r\n * the License.\r\n */\r\nvar MessageType;\r\n(function (MessageType) {\r\n MessageType[\"PUSH_RECEIVED\"] = \"push-received\";\r\n MessageType[\"NOTIFICATION_CLICKED\"] = \"notification-clicked\";\r\n})(MessageType || (MessageType = {}));\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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\nfunction arrayToBase64(array) {\r\n var uint8Array = new Uint8Array(array);\r\n var base64String = btoa(String.fromCharCode.apply(String, __spreadArray([], __read(uint8Array))));\r\n return base64String.replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\r\n}\r\nfunction base64ToArray(base64String) {\r\n var padding = '='.repeat((4 - (base64String.length % 4)) % 4);\r\n var base64 = (base64String + padding)\r\n .replace(/\\-/g, '+')\r\n .replace(/_/g, '/');\r\n var rawData = atob(base64);\r\n var outputArray = new Uint8Array(rawData.length);\r\n for (var i = 0; i < rawData.length; ++i) {\r\n outputArray[i] = rawData.charCodeAt(i);\r\n }\r\n return outputArray;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 OLD_DB_NAME = 'fcm_token_details_db';\r\n/**\r\n * The last DB version of 'fcm_token_details_db' was 4. This is one higher, so that the upgrade\r\n * callback is called for all versions of the old DB.\r\n */\r\nvar OLD_DB_VERSION = 5;\r\nvar OLD_OBJECT_STORE_NAME = 'fcm_token_object_Store';\r\nfunction migrateOldDatabase(senderId) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var databases, dbNames, tokenDetails, db;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!('databases' in indexedDB)) return [3 /*break*/, 2];\r\n return [4 /*yield*/, indexedDB.databases()];\r\n case 1:\r\n databases = _a.sent();\r\n dbNames = databases.map(function (db) { return db.name; });\r\n if (!dbNames.includes(OLD_DB_NAME)) {\r\n // old DB didn't exist, no need to open.\r\n return [2 /*return*/, null];\r\n }\r\n _a.label = 2;\r\n case 2:\r\n tokenDetails = null;\r\n return [4 /*yield*/, openDb(OLD_DB_NAME, OLD_DB_VERSION, function (db) { return __awaiter(_this, void 0, void 0, function () {\r\n var objectStore, value, oldDetails, oldDetails, oldDetails;\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (db.oldVersion < 2) {\r\n // Database too old, skip migration.\r\n return [2 /*return*/];\r\n }\r\n if (!db.objectStoreNames.contains(OLD_OBJECT_STORE_NAME)) {\r\n // Database did not exist. Nothing to do.\r\n return [2 /*return*/];\r\n }\r\n objectStore = db.transaction.objectStore(OLD_OBJECT_STORE_NAME);\r\n return [4 /*yield*/, objectStore.index('fcmSenderId').get(senderId)];\r\n case 1:\r\n value = _b.sent();\r\n return [4 /*yield*/, objectStore.clear()];\r\n case 2:\r\n _b.sent();\r\n if (!value) {\r\n // No entry in the database, nothing to migrate.\r\n return [2 /*return*/];\r\n }\r\n if (db.oldVersion === 2) {\r\n oldDetails = value;\r\n if (!oldDetails.auth || !oldDetails.p256dh || !oldDetails.endpoint) {\r\n return [2 /*return*/];\r\n }\r\n tokenDetails = {\r\n token: oldDetails.fcmToken,\r\n createTime: (_a = oldDetails.createTime) !== null && _a !== void 0 ? _a : Date.now(),\r\n subscriptionOptions: {\r\n auth: oldDetails.auth,\r\n p256dh: oldDetails.p256dh,\r\n endpoint: oldDetails.endpoint,\r\n swScope: oldDetails.swScope,\r\n vapidKey: typeof oldDetails.vapidKey === 'string'\r\n ? oldDetails.vapidKey\r\n : arrayToBase64(oldDetails.vapidKey)\r\n }\r\n };\r\n }\r\n else if (db.oldVersion === 3) {\r\n oldDetails = value;\r\n tokenDetails = {\r\n token: oldDetails.fcmToken,\r\n createTime: oldDetails.createTime,\r\n subscriptionOptions: {\r\n auth: arrayToBase64(oldDetails.auth),\r\n p256dh: arrayToBase64(oldDetails.p256dh),\r\n endpoint: oldDetails.endpoint,\r\n swScope: oldDetails.swScope,\r\n vapidKey: arrayToBase64(oldDetails.vapidKey)\r\n }\r\n };\r\n }\r\n else if (db.oldVersion === 4) {\r\n oldDetails = value;\r\n tokenDetails = {\r\n token: oldDetails.fcmToken,\r\n createTime: oldDetails.createTime,\r\n subscriptionOptions: {\r\n auth: arrayToBase64(oldDetails.auth),\r\n p256dh: arrayToBase64(oldDetails.p256dh),\r\n endpoint: oldDetails.endpoint,\r\n swScope: oldDetails.swScope,\r\n vapidKey: arrayToBase64(oldDetails.vapidKey)\r\n }\r\n };\r\n }\r\n return [2 /*return*/];\r\n }\r\n });\r\n }); })];\r\n case 3:\r\n db = _a.sent();\r\n db.close();\r\n // Delete all old databases.\r\n return [4 /*yield*/, deleteDb(OLD_DB_NAME)];\r\n case 4:\r\n // Delete all old databases.\r\n _a.sent();\r\n return [4 /*yield*/, deleteDb('fcm_vapid_details_db')];\r\n case 5:\r\n _a.sent();\r\n return [4 /*yield*/, deleteDb('undefined')];\r\n case 6:\r\n _a.sent();\r\n return [2 /*return*/, checkTokenDetails(tokenDetails) ? tokenDetails : null];\r\n }\r\n });\r\n });\r\n}\r\nfunction checkTokenDetails(tokenDetails) {\r\n if (!tokenDetails || !tokenDetails.subscriptionOptions) {\r\n return false;\r\n }\r\n var subscriptionOptions = tokenDetails.subscriptionOptions;\r\n return (typeof tokenDetails.createTime === 'number' &&\r\n tokenDetails.createTime > 0 &&\r\n typeof tokenDetails.token === 'string' &&\r\n tokenDetails.token.length > 0 &&\r\n typeof subscriptionOptions.auth === 'string' &&\r\n subscriptionOptions.auth.length > 0 &&\r\n typeof subscriptionOptions.p256dh === 'string' &&\r\n subscriptionOptions.p256dh.length > 0 &&\r\n typeof subscriptionOptions.endpoint === 'string' &&\r\n subscriptionOptions.endpoint.length > 0 &&\r\n typeof subscriptionOptions.swScope === 'string' &&\r\n subscriptionOptions.swScope.length > 0 &&\r\n typeof subscriptionOptions.vapidKey === 'string' &&\r\n subscriptionOptions.vapidKey.length > 0);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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// Exported for tests.\r\nvar DATABASE_NAME = 'firebase-messaging-database';\r\nvar DATABASE_VERSION = 1;\r\nvar OBJECT_STORE_NAME = 'firebase-messaging-store';\r\nvar dbPromise = null;\r\nfunction getDbPromise() {\r\n if (!dbPromise) {\r\n dbPromise = openDb(DATABASE_NAME, DATABASE_VERSION, function (upgradeDb) {\r\n // We don't use 'break' in this switch statement, the fall-through behavior is what we want,\r\n // because if there are multiple versions between the old version and the current version, we\r\n // want ALL the migrations that correspond to those versions to run, not only the last one.\r\n // eslint-disable-next-line default-case\r\n switch (upgradeDb.oldVersion) {\r\n case 0:\r\n upgradeDb.createObjectStore(OBJECT_STORE_NAME);\r\n }\r\n });\r\n }\r\n return dbPromise;\r\n}\r\n/** Gets record(s) from the objectStore that match the given key. */\r\nfunction dbGet(firebaseDependencies) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var key, db, tokenDetails, oldTokenDetails;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n key = getKey(firebaseDependencies);\r\n return [4 /*yield*/, getDbPromise()];\r\n case 1:\r\n db = _a.sent();\r\n return [4 /*yield*/, db\r\n .transaction(OBJECT_STORE_NAME)\r\n .objectStore(OBJECT_STORE_NAME)\r\n .get(key)];\r\n case 2:\r\n tokenDetails = _a.sent();\r\n if (!tokenDetails) return [3 /*break*/, 3];\r\n return [2 /*return*/, tokenDetails];\r\n case 3: return [4 /*yield*/, migrateOldDatabase(firebaseDependencies.appConfig.senderId)];\r\n case 4:\r\n oldTokenDetails = _a.sent();\r\n if (!oldTokenDetails) return [3 /*break*/, 6];\r\n return [4 /*yield*/, dbSet(firebaseDependencies, oldTokenDetails)];\r\n case 5:\r\n _a.sent();\r\n return [2 /*return*/, oldTokenDetails];\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/** Assigns or overwrites the record for the given key with the given value. */\r\nfunction dbSet(firebaseDependencies, tokenDetails) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var key, db, tx;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n key = getKey(firebaseDependencies);\r\n return [4 /*yield*/, getDbPromise()];\r\n case 1:\r\n db = _a.sent();\r\n tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n return [4 /*yield*/, tx.objectStore(OBJECT_STORE_NAME).put(tokenDetails, key)];\r\n case 2:\r\n _a.sent();\r\n return [4 /*yield*/, tx.complete];\r\n case 3:\r\n _a.sent();\r\n return [2 /*return*/, tokenDetails];\r\n }\r\n });\r\n });\r\n}\r\n/** Removes record(s) from the objectStore that match the given key. */\r\nfunction dbRemove(firebaseDependencies) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var key, db, tx;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n key = getKey(firebaseDependencies);\r\n return [4 /*yield*/, getDbPromise()];\r\n case 1:\r\n db = _a.sent();\r\n tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n return [4 /*yield*/, tx.objectStore(OBJECT_STORE_NAME).delete(key)];\r\n case 2:\r\n _a.sent();\r\n return [4 /*yield*/, tx.complete];\r\n case 3:\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nfunction getKey(_a) {\r\n var appConfig = _a.appConfig;\r\n return appConfig.appId;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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\nfunction requestGetToken(firebaseDependencies, subscriptionOptions) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var headers, body, subscribeOptions, responseData, response, err_1, message;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, getHeaders(firebaseDependencies)];\r\n case 1:\r\n headers = _a.sent();\r\n body = getBody(subscriptionOptions);\r\n subscribeOptions = {\r\n method: 'POST',\r\n headers: headers,\r\n body: JSON.stringify(body)\r\n };\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 5, , 6]);\r\n return [4 /*yield*/, fetch(getEndpoint(firebaseDependencies.appConfig), subscribeOptions)];\r\n case 3:\r\n response = _a.sent();\r\n return [4 /*yield*/, response.json()];\r\n case 4:\r\n responseData = _a.sent();\r\n return [3 /*break*/, 6];\r\n case 5:\r\n err_1 = _a.sent();\r\n throw ERROR_FACTORY.create(\"token-subscribe-failed\" /* TOKEN_SUBSCRIBE_FAILED */, {\r\n errorInfo: err_1\r\n });\r\n case 6:\r\n if (responseData.error) {\r\n message = responseData.error.message;\r\n throw ERROR_FACTORY.create(\"token-subscribe-failed\" /* TOKEN_SUBSCRIBE_FAILED */, {\r\n errorInfo: message\r\n });\r\n }\r\n if (!responseData.token) {\r\n throw ERROR_FACTORY.create(\"token-subscribe-no-token\" /* TOKEN_SUBSCRIBE_NO_TOKEN */);\r\n }\r\n return [2 /*return*/, responseData.token];\r\n }\r\n });\r\n });\r\n}\r\nfunction requestUpdateToken(firebaseDependencies, tokenDetails) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var headers, body, updateOptions, responseData, response, err_2, message;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, getHeaders(firebaseDependencies)];\r\n case 1:\r\n headers = _a.sent();\r\n body = getBody(tokenDetails.subscriptionOptions);\r\n updateOptions = {\r\n method: 'PATCH',\r\n headers: headers,\r\n body: JSON.stringify(body)\r\n };\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 5, , 6]);\r\n return [4 /*yield*/, fetch(getEndpoint(firebaseDependencies.appConfig) + \"/\" + tokenDetails.token, updateOptions)];\r\n case 3:\r\n response = _a.sent();\r\n return [4 /*yield*/, response.json()];\r\n case 4:\r\n responseData = _a.sent();\r\n return [3 /*break*/, 6];\r\n case 5:\r\n err_2 = _a.sent();\r\n throw ERROR_FACTORY.create(\"token-update-failed\" /* TOKEN_UPDATE_FAILED */, {\r\n errorInfo: err_2\r\n });\r\n case 6:\r\n if (responseData.error) {\r\n message = responseData.error.message;\r\n throw ERROR_FACTORY.create(\"token-update-failed\" /* TOKEN_UPDATE_FAILED */, {\r\n errorInfo: message\r\n });\r\n }\r\n if (!responseData.token) {\r\n throw ERROR_FACTORY.create(\"token-update-no-token\" /* TOKEN_UPDATE_NO_TOKEN */);\r\n }\r\n return [2 /*return*/, responseData.token];\r\n }\r\n });\r\n });\r\n}\r\nfunction requestDeleteToken(firebaseDependencies, token) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var headers, unsubscribeOptions, response, responseData, message, err_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, getHeaders(firebaseDependencies)];\r\n case 1:\r\n headers = _a.sent();\r\n unsubscribeOptions = {\r\n method: 'DELETE',\r\n headers: headers\r\n };\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 5, , 6]);\r\n return [4 /*yield*/, fetch(getEndpoint(firebaseDependencies.appConfig) + \"/\" + token, unsubscribeOptions)];\r\n case 3:\r\n response = _a.sent();\r\n return [4 /*yield*/, response.json()];\r\n case 4:\r\n responseData = _a.sent();\r\n if (responseData.error) {\r\n message = responseData.error.message;\r\n throw ERROR_FACTORY.create(\"token-unsubscribe-failed\" /* TOKEN_UNSUBSCRIBE_FAILED */, {\r\n errorInfo: message\r\n });\r\n }\r\n return [3 /*break*/, 6];\r\n case 5:\r\n err_3 = _a.sent();\r\n throw ERROR_FACTORY.create(\"token-unsubscribe-failed\" /* TOKEN_UNSUBSCRIBE_FAILED */, {\r\n errorInfo: err_3\r\n });\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nfunction getEndpoint(_a) {\r\n var projectId = _a.projectId;\r\n return ENDPOINT + \"/projects/\" + projectId + \"/registrations\";\r\n}\r\nfunction getHeaders(_a) {\r\n var appConfig = _a.appConfig, installations = _a.installations;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authToken;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, installations.getToken()];\r\n case 1:\r\n authToken = _b.sent();\r\n return [2 /*return*/, new Headers({\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n 'x-goog-api-key': appConfig.apiKey,\r\n 'x-goog-firebase-installations-auth': \"FIS \" + authToken\r\n })];\r\n }\r\n });\r\n });\r\n}\r\nfunction getBody(_a) {\r\n var p256dh = _a.p256dh, auth = _a.auth, endpoint = _a.endpoint, vapidKey = _a.vapidKey;\r\n var body = {\r\n web: {\r\n endpoint: endpoint,\r\n auth: auth,\r\n p256dh: p256dh\r\n }\r\n };\r\n if (vapidKey !== DEFAULT_VAPID_KEY) {\r\n body.web.applicationPubKey = vapidKey;\r\n }\r\n return body;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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/** UpdateRegistration will be called once every week. */\r\nvar TOKEN_EXPIRATION_MS = 7 * 24 * 60 * 60 * 1000; // 7 days\r\nfunction getToken(firebaseDependencies, swRegistration, vapidKey) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var pushSubscription, tokenDetails, subscriptionOptions, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (Notification.permission !== 'granted') {\r\n throw ERROR_FACTORY.create(\"permission-blocked\" /* PERMISSION_BLOCKED */);\r\n }\r\n return [4 /*yield*/, getPushSubscription(swRegistration, vapidKey)];\r\n case 1:\r\n pushSubscription = _a.sent();\r\n return [4 /*yield*/, dbGet(firebaseDependencies)];\r\n case 2:\r\n tokenDetails = _a.sent();\r\n subscriptionOptions = {\r\n vapidKey: vapidKey,\r\n swScope: swRegistration.scope,\r\n endpoint: pushSubscription.endpoint,\r\n auth: arrayToBase64(pushSubscription.getKey('auth')),\r\n p256dh: arrayToBase64(pushSubscription.getKey('p256dh'))\r\n };\r\n if (!!tokenDetails) return [3 /*break*/, 3];\r\n // No token, get a new one.\r\n return [2 /*return*/, getNewToken(firebaseDependencies, subscriptionOptions)];\r\n case 3:\r\n if (!!isTokenValid(tokenDetails.subscriptionOptions, subscriptionOptions)) return [3 /*break*/, 8];\r\n _a.label = 4;\r\n case 4:\r\n _a.trys.push([4, 6, , 7]);\r\n return [4 /*yield*/, requestDeleteToken(firebaseDependencies, tokenDetails.token)];\r\n case 5:\r\n _a.sent();\r\n return [3 /*break*/, 7];\r\n case 6:\r\n e_1 = _a.sent();\r\n // Suppress errors because of #2364\r\n console.warn(e_1);\r\n return [3 /*break*/, 7];\r\n case 7: return [2 /*return*/, getNewToken(firebaseDependencies, subscriptionOptions)];\r\n case 8:\r\n if (Date.now() >= tokenDetails.createTime + TOKEN_EXPIRATION_MS) {\r\n // Weekly token refresh\r\n return [2 /*return*/, updateToken({\r\n token: tokenDetails.token,\r\n createTime: Date.now(),\r\n subscriptionOptions: subscriptionOptions\r\n }, firebaseDependencies, swRegistration)];\r\n }\r\n else {\r\n // Valid token, nothing to do.\r\n return [2 /*return*/, tokenDetails.token];\r\n }\r\n case 9: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * This method deletes the token from the database, unsubscribes the token from FCM, and unregisters\r\n * the push subscription if it exists.\r\n */\r\nfunction deleteToken(firebaseDependencies, swRegistration) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var tokenDetails, pushSubscription;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, dbGet(firebaseDependencies)];\r\n case 1:\r\n tokenDetails = _a.sent();\r\n if (!tokenDetails) return [3 /*break*/, 4];\r\n return [4 /*yield*/, requestDeleteToken(firebaseDependencies, tokenDetails.token)];\r\n case 2:\r\n _a.sent();\r\n return [4 /*yield*/, dbRemove(firebaseDependencies)];\r\n case 3:\r\n _a.sent();\r\n _a.label = 4;\r\n case 4: return [4 /*yield*/, swRegistration.pushManager.getSubscription()];\r\n case 5:\r\n pushSubscription = _a.sent();\r\n if (pushSubscription) {\r\n return [2 /*return*/, pushSubscription.unsubscribe()];\r\n }\r\n // If there's no SW, consider it a success.\r\n return [2 /*return*/, true];\r\n }\r\n });\r\n });\r\n}\r\nfunction updateToken(tokenDetails, firebaseDependencies, swRegistration) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var updatedToken, updatedTokenDetails, e_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 3, , 5]);\r\n return [4 /*yield*/, requestUpdateToken(firebaseDependencies, tokenDetails)];\r\n case 1:\r\n updatedToken = _a.sent();\r\n updatedTokenDetails = __assign(__assign({}, tokenDetails), { token: updatedToken, createTime: Date.now() });\r\n return [4 /*yield*/, dbSet(firebaseDependencies, updatedTokenDetails)];\r\n case 2:\r\n _a.sent();\r\n return [2 /*return*/, updatedToken];\r\n case 3:\r\n e_2 = _a.sent();\r\n return [4 /*yield*/, deleteToken(firebaseDependencies, swRegistration)];\r\n case 4:\r\n _a.sent();\r\n throw e_2;\r\n case 5: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nfunction getNewToken(firebaseDependencies, subscriptionOptions) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var token, tokenDetails;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, requestGetToken(firebaseDependencies, subscriptionOptions)];\r\n case 1:\r\n token = _a.sent();\r\n tokenDetails = {\r\n token: token,\r\n createTime: Date.now(),\r\n subscriptionOptions: subscriptionOptions\r\n };\r\n return [4 /*yield*/, dbSet(firebaseDependencies, tokenDetails)];\r\n case 2:\r\n _a.sent();\r\n return [2 /*return*/, tokenDetails.token];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Gets a PushSubscription for the current user.\r\n */\r\nfunction getPushSubscription(swRegistration, vapidKey) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var subscription;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, swRegistration.pushManager.getSubscription()];\r\n case 1:\r\n subscription = _a.sent();\r\n if (subscription) {\r\n return [2 /*return*/, subscription];\r\n }\r\n return [2 /*return*/, swRegistration.pushManager.subscribe({\r\n userVisibleOnly: true,\r\n // Chrome <= 75 doesn't support base64-encoded VAPID key. For backward compatibility, VAPID key\r\n // submitted to pushManager#subscribe must be of type Uint8Array.\r\n applicationServerKey: base64ToArray(vapidKey)\r\n })];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Checks if the saved tokenDetails object matches the configuration provided.\r\n */\r\nfunction isTokenValid(dbOptions, currentOptions) {\r\n var isVapidKeyEqual = currentOptions.vapidKey === dbOptions.vapidKey;\r\n var isEndpointEqual = currentOptions.endpoint === dbOptions.endpoint;\r\n var isAuthEqual = currentOptions.auth === dbOptions.auth;\r\n var isP256dhEqual = currentOptions.p256dh === dbOptions.p256dh;\r\n return isVapidKeyEqual && isEndpointEqual && isAuthEqual && isP256dhEqual;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\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\nfunction externalizePayload(internalPayload) {\r\n var payload = {\r\n from: internalPayload.from,\r\n // eslint-disable-next-line camelcase\r\n collapseKey: internalPayload.collapse_key,\r\n // eslint-disable-next-line camelcase\r\n messageId: internalPayload.fcm_message_id\r\n };\r\n propagateNotificationPayload(payload, internalPayload);\r\n propagateDataPayload(payload, internalPayload);\r\n propagateFcmOptions(payload, internalPayload);\r\n return payload;\r\n}\r\nfunction propagateNotificationPayload(payload, messagePayloadInternal) {\r\n if (!messagePayloadInternal.notification) {\r\n return;\r\n }\r\n payload.notification = {};\r\n var title = messagePayloadInternal.notification.title;\r\n if (!!title) {\r\n payload.notification.title = title;\r\n }\r\n var body = messagePayloadInternal.notification.body;\r\n if (!!body) {\r\n payload.notification.body = body;\r\n }\r\n var image = messagePayloadInternal.notification.image;\r\n if (!!image) {\r\n payload.notification.image = image;\r\n }\r\n}\r\nfunction propagateDataPayload(payload, messagePayloadInternal) {\r\n if (!messagePayloadInternal.data) {\r\n return;\r\n }\r\n payload.data = messagePayloadInternal.data;\r\n}\r\nfunction propagateFcmOptions(payload, messagePayloadInternal) {\r\n if (!messagePayloadInternal.fcmOptions) {\r\n return;\r\n }\r\n payload.fcmOptions = {};\r\n var link = messagePayloadInternal.fcmOptions.link;\r\n if (!!link) {\r\n payload.fcmOptions.link = link;\r\n }\r\n // eslint-disable-next-line camelcase\r\n var analyticsLabel = messagePayloadInternal.fcmOptions.analytics_label;\r\n if (!!analyticsLabel) {\r\n payload.fcmOptions.analyticsLabel = analyticsLabel;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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\nfunction isConsoleMessage(data) {\r\n // This message has a campaign ID, meaning it was sent using the Firebase Console.\r\n return typeof data === 'object' && !!data && CONSOLE_CAMPAIGN_ID in data;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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/** Returns a promise that resolves after given time passes. */\r\nfunction sleep(ms) {\r\n return new Promise(function (resolve) {\r\n setTimeout(resolve, ms);\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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 SwController = /** @class */ (function () {\r\n function SwController(firebaseDependencies) {\r\n var _this = this;\r\n this.firebaseDependencies = firebaseDependencies;\r\n // A boolean flag to determine wether an app is using onBackgroundMessage or\r\n // setBackgroundMessageHandler. onBackgroundMessage will receive a MessagePayload regardless of if\r\n // a notification is displayed. Whereas, setBackgroundMessageHandler will swallow the\r\n // MessagePayload if a NotificationPayload is included.\r\n this.isOnBackgroundMessageUsed = null;\r\n this.vapidKey = null;\r\n this.bgMessageHandler = null;\r\n self.addEventListener('push', function (e) {\r\n e.waitUntil(_this.onPush(e));\r\n });\r\n self.addEventListener('pushsubscriptionchange', function (e) {\r\n e.waitUntil(_this.onSubChange(e));\r\n });\r\n self.addEventListener('notificationclick', function (e) {\r\n e.waitUntil(_this.onNotificationClick(e));\r\n });\r\n }\r\n Object.defineProperty(SwController.prototype, \"app\", {\r\n get: function () {\r\n return this.firebaseDependencies.app;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * @deprecated. Use onBackgroundMessage(nextOrObserver: NextFn | Observer):\r\n * Unsubscribe instead.\r\n *\r\n * Calling setBackgroundMessageHandler will opt in to some specific behaviors.\r\n *\r\n * 1.) If a notification doesn't need to be shown due to a window already being visible, then push\r\n * messages will be sent to the page. 2.) If a notification needs to be shown, and the message\r\n * contains no notification data this method will be called and the promise it returns will be\r\n * passed to event.waitUntil. If you do not set this callback then all push messages will let and\r\n * the developer can handle them in a their own 'push' event callback\r\n *\r\n * @param callback The callback to be called when a push message is received and a notification\r\n * must be shown. The callback will be given the data from the push message.\r\n */\r\n SwController.prototype.setBackgroundMessageHandler = function (callback) {\r\n this.isOnBackgroundMessageUsed = false;\r\n if (!callback || typeof callback !== 'function') {\r\n throw ERROR_FACTORY.create(\"invalid-bg-handler\" /* INVALID_BG_HANDLER */);\r\n }\r\n this.bgMessageHandler = callback;\r\n };\r\n SwController.prototype.onBackgroundMessage = function (nextOrObserver) {\r\n var _this = this;\r\n this.isOnBackgroundMessageUsed = true;\r\n this.bgMessageHandler = nextOrObserver;\r\n return function () {\r\n _this.bgMessageHandler = null;\r\n };\r\n };\r\n // TODO: Remove getToken from SW Controller. Calling this from an old SW can cause all kinds of\r\n // trouble.\r\n SwController.prototype.getToken = function () {\r\n var _a, _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var tokenDetails;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n if (!!this.vapidKey) return [3 /*break*/, 2];\r\n return [4 /*yield*/, dbGet(this.firebaseDependencies)];\r\n case 1:\r\n tokenDetails = _c.sent();\r\n this.vapidKey =\r\n (_b = (_a = tokenDetails === null || tokenDetails === void 0 ? void 0 : tokenDetails.subscriptionOptions) === null || _a === void 0 ? void 0 : _a.vapidKey) !== null && _b !== void 0 ? _b : DEFAULT_VAPID_KEY;\r\n _c.label = 2;\r\n case 2: return [2 /*return*/, getToken(this.firebaseDependencies, self.registration, this.vapidKey)];\r\n }\r\n });\r\n });\r\n };\r\n // TODO: Remove deleteToken from SW Controller. Calling this from an old SW can cause all kinds of\r\n // trouble.\r\n SwController.prototype.deleteToken = function () {\r\n return deleteToken(this.firebaseDependencies, self.registration);\r\n };\r\n SwController.prototype.requestPermission = function () {\r\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */);\r\n };\r\n // TODO: Remove this together with getToken from SW Controller.\r\n SwController.prototype.usePublicVapidKey = function (vapidKey) {\r\n if (this.vapidKey !== null) {\r\n throw ERROR_FACTORY.create(\"use-vapid-key-after-get-token\" /* USE_VAPID_KEY_AFTER_GET_TOKEN */);\r\n }\r\n if (typeof vapidKey !== 'string' || vapidKey.length === 0) {\r\n throw ERROR_FACTORY.create(\"invalid-vapid-key\" /* INVALID_VAPID_KEY */);\r\n }\r\n this.vapidKey = vapidKey;\r\n };\r\n SwController.prototype.useServiceWorker = function () {\r\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */);\r\n };\r\n SwController.prototype.onMessage = function () {\r\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */);\r\n };\r\n SwController.prototype.onTokenRefresh = function () {\r\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */);\r\n };\r\n /**\r\n * A handler for push events that shows notifications based on the content of the payload.\r\n *\r\n * The payload must be a JSON-encoded Object with a `notification` key. The value of the\r\n * `notification` property will be used as the NotificationOptions object passed to\r\n * showNotification. Additionally, the `title` property of the notification object will be used as\r\n * the title.\r\n *\r\n * If there is no notification data in the payload then no notification will be shown.\r\n */\r\n SwController.prototype.onPush = function (event) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var internalPayload, clientList, isNotificationShown, payload;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n internalPayload = getMessagePayloadInternal(event);\r\n if (!internalPayload) {\r\n console.debug(TAG +\r\n 'failed to get parsed MessagePayload from the PushEvent. Skip handling the push.');\r\n return [2 /*return*/];\r\n }\r\n return [4 /*yield*/, getClientList()];\r\n case 1:\r\n clientList = _a.sent();\r\n if (hasVisibleClients(clientList)) {\r\n return [2 /*return*/, sendMessagePayloadInternalToWindows(clientList, internalPayload)];\r\n }\r\n isNotificationShown = false;\r\n if (!!!internalPayload.notification) return [3 /*break*/, 3];\r\n return [4 /*yield*/, showNotification(wrapInternalPayload(internalPayload))];\r\n case 2:\r\n _a.sent();\r\n isNotificationShown = true;\r\n _a.label = 3;\r\n case 3:\r\n // MessagePayload is only passed to `onBackgroundMessage`. Skip passing MessagePayload for\r\n // the legacy `setBackgroundMessageHandler` to preserve the SDK behaviors.\r\n if (isNotificationShown === true &&\r\n this.isOnBackgroundMessageUsed === false) {\r\n return [2 /*return*/];\r\n }\r\n if (!!this.bgMessageHandler) {\r\n payload = externalizePayload(internalPayload);\r\n if (typeof this.bgMessageHandler === 'function') {\r\n this.bgMessageHandler(payload);\r\n }\r\n else {\r\n this.bgMessageHandler.next(payload);\r\n }\r\n }\r\n // wait briefly to allow onBackgroundMessage to complete\r\n return [4 /*yield*/, sleep(BACKGROUND_HANDLE_EXECUTION_TIME_LIMIT_MS)];\r\n case 4:\r\n // wait briefly to allow onBackgroundMessage to complete\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n SwController.prototype.onSubChange = function (event) {\r\n var _a, _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var newSubscription, tokenDetails;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n newSubscription = event.newSubscription;\r\n if (!!newSubscription) return [3 /*break*/, 2];\r\n // Subscription revoked, delete token\r\n return [4 /*yield*/, deleteToken(this.firebaseDependencies, self.registration)];\r\n case 1:\r\n // Subscription revoked, delete token\r\n _c.sent();\r\n return [2 /*return*/];\r\n case 2: return [4 /*yield*/, dbGet(this.firebaseDependencies)];\r\n case 3:\r\n tokenDetails = _c.sent();\r\n return [4 /*yield*/, deleteToken(this.firebaseDependencies, self.registration)];\r\n case 4:\r\n _c.sent();\r\n return [4 /*yield*/, getToken(this.firebaseDependencies, self.registration, (_b = (_a = tokenDetails === null || tokenDetails === void 0 ? void 0 : tokenDetails.subscriptionOptions) === null || _a === void 0 ? void 0 : _a.vapidKey) !== null && _b !== void 0 ? _b : DEFAULT_VAPID_KEY)];\r\n case 5:\r\n _c.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n SwController.prototype.onNotificationClick = function (event) {\r\n var _a, _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var internalPayload, link, url, originUrl, client;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n internalPayload = (_b = (_a = event.notification) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b[FCM_MSG];\r\n if (!internalPayload) {\r\n return [2 /*return*/];\r\n }\r\n else if (event.action) {\r\n // User clicked on an action button. This will allow developers to act on action button clicks\r\n // by using a custom onNotificationClick listener that they define.\r\n return [2 /*return*/];\r\n }\r\n // Prevent other listeners from receiving the event\r\n event.stopImmediatePropagation();\r\n event.notification.close();\r\n link = getLink(internalPayload);\r\n if (!link) {\r\n return [2 /*return*/];\r\n }\r\n url = new URL(link, self.location.href);\r\n originUrl = new URL(self.location.origin);\r\n if (url.host !== originUrl.host) {\r\n return [2 /*return*/];\r\n }\r\n return [4 /*yield*/, getWindowClient(url)];\r\n case 1:\r\n client = _c.sent();\r\n if (!!client) return [3 /*break*/, 4];\r\n return [4 /*yield*/, self.clients.openWindow(link)];\r\n case 2:\r\n client = _c.sent();\r\n // Wait three seconds for the client to initialize and set up the message handler so that it\r\n // can receive the message.\r\n return [4 /*yield*/, sleep(FOREGROUND_HANDLE_PREPARATION_TIME_MS)];\r\n case 3:\r\n // Wait three seconds for the client to initialize and set up the message handler so that it\r\n // can receive the message.\r\n _c.sent();\r\n return [3 /*break*/, 6];\r\n case 4: return [4 /*yield*/, client.focus()];\r\n case 5:\r\n client = _c.sent();\r\n _c.label = 6;\r\n case 6:\r\n if (!client) {\r\n // Window Client will not be returned if it's for a third party origin.\r\n return [2 /*return*/];\r\n }\r\n internalPayload.messageType = MessageType.NOTIFICATION_CLICKED;\r\n internalPayload.isFirebaseMessaging = true;\r\n return [2 /*return*/, client.postMessage(internalPayload)];\r\n }\r\n });\r\n });\r\n };\r\n return SwController;\r\n}());\r\nfunction wrapInternalPayload(internalPayload) {\r\n var _a;\r\n var wrappedInternalPayload = __assign({}, internalPayload.notification);\r\n // Put the message payload under FCM_MSG name so we can identify the notification as being an FCM\r\n // notification vs a notification from somewhere else (i.e. normal web push or developer generated\r\n // notification).\r\n wrappedInternalPayload.data = (_a = {},\r\n _a[FCM_MSG] = internalPayload,\r\n _a);\r\n return wrappedInternalPayload;\r\n}\r\nfunction getMessagePayloadInternal(_a) {\r\n var data = _a.data;\r\n if (!data) {\r\n return null;\r\n }\r\n try {\r\n return data.json();\r\n }\r\n catch (err) {\r\n // Not JSON so not an FCM message.\r\n return null;\r\n }\r\n}\r\n/**\r\n * @param url The URL to look for when focusing a client.\r\n * @return Returns an existing window client or a newly opened WindowClient.\r\n */\r\nfunction getWindowClient(url) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var clientList, clientList_1, clientList_1_1, client, clientUrl;\r\n var e_1, _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, getClientList()];\r\n case 1:\r\n clientList = _b.sent();\r\n try {\r\n for (clientList_1 = __values(clientList), clientList_1_1 = clientList_1.next(); !clientList_1_1.done; clientList_1_1 = clientList_1.next()) {\r\n client = clientList_1_1.value;\r\n clientUrl = new URL(client.url, self.location.href);\r\n if (url.host === clientUrl.host) {\r\n return [2 /*return*/, client];\r\n }\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (clientList_1_1 && !clientList_1_1.done && (_a = clientList_1.return)) _a.call(clientList_1);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n return [2 /*return*/, null];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * @returns If there is currently a visible WindowClient, this method will resolve to true,\r\n * otherwise false.\r\n */\r\nfunction hasVisibleClients(clientList) {\r\n return clientList.some(function (client) {\r\n return client.visibilityState === 'visible' &&\r\n // Ignore chrome-extension clients as that matches the background pages of extensions, which\r\n // are always considered visible for some reason.\r\n !client.url.startsWith('chrome-extension://');\r\n });\r\n}\r\nfunction sendMessagePayloadInternalToWindows(clientList, internalPayload) {\r\n var e_2, _a;\r\n internalPayload.isFirebaseMessaging = true;\r\n internalPayload.messageType = MessageType.PUSH_RECEIVED;\r\n try {\r\n for (var clientList_2 = __values(clientList), clientList_2_1 = clientList_2.next(); !clientList_2_1.done; clientList_2_1 = clientList_2.next()) {\r\n var client = clientList_2_1.value;\r\n client.postMessage(internalPayload);\r\n }\r\n }\r\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\r\n finally {\r\n try {\r\n if (clientList_2_1 && !clientList_2_1.done && (_a = clientList_2.return)) _a.call(clientList_2);\r\n }\r\n finally { if (e_2) throw e_2.error; }\r\n }\r\n}\r\nfunction getClientList() {\r\n return self.clients.matchAll({\r\n type: 'window',\r\n includeUncontrolled: true\r\n // TS doesn't know that \"type: 'window'\" means it'll return WindowClient[]\r\n });\r\n}\r\nfunction showNotification(notificationPayloadInternal) {\r\n var _a;\r\n // Note: Firefox does not support the maxActions property.\r\n // https://developer.mozilla.org/en-US/docs/Web/API/notification/maxActions\r\n var actions = notificationPayloadInternal.actions;\r\n var maxActions = Notification.maxActions;\r\n if (actions && maxActions && actions.length > maxActions) {\r\n console.warn(\"This browser only supports \" + maxActions + \" actions. The remaining actions will not be displayed.\");\r\n }\r\n return self.registration.showNotification(\r\n /* title= */ (_a = notificationPayloadInternal.title) !== null && _a !== void 0 ? _a : '', notificationPayloadInternal);\r\n}\r\nfunction getLink(payload) {\r\n var _a, _b, _c;\r\n // eslint-disable-next-line camelcase\r\n var link = (_b = (_a = payload.fcmOptions) === null || _a === void 0 ? void 0 : _a.link) !== null && _b !== void 0 ? _b : (_c = payload.notification) === null || _c === void 0 ? void 0 : _c.click_action;\r\n if (link) {\r\n return link;\r\n }\r\n if (isConsoleMessage(payload.data)) {\r\n // Notification created in the Firebase Console. Redirect to origin.\r\n return self.location.origin;\r\n }\r\n else {\r\n return null;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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 WindowController = /** @class */ (function () {\r\n function WindowController(firebaseDependencies) {\r\n var _this = this;\r\n this.firebaseDependencies = firebaseDependencies;\r\n this.vapidKey = null;\r\n this.onMessageCallback = null;\r\n navigator.serviceWorker.addEventListener('message', function (e) {\r\n return _this.messageEventListener(e);\r\n });\r\n }\r\n Object.defineProperty(WindowController.prototype, \"app\", {\r\n get: function () {\r\n return this.firebaseDependencies.app;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n WindowController.prototype.messageEventListener = function (event) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var internalPayload, dataPayload;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n internalPayload = event.data;\r\n if (!internalPayload.isFirebaseMessaging) {\r\n return [2 /*return*/];\r\n }\r\n // onMessageCallback is either a function or observer/subscriber.\r\n // TODO: in the modularization release, have onMessage handle type MessagePayload as supposed to\r\n // the legacy payload where some fields are in snake cases.\r\n if (this.onMessageCallback &&\r\n internalPayload.messageType === MessageType.PUSH_RECEIVED) {\r\n if (typeof this.onMessageCallback === 'function') {\r\n this.onMessageCallback(stripInternalFields(Object.assign({}, internalPayload)));\r\n }\r\n else {\r\n this.onMessageCallback.next(Object.assign({}, internalPayload));\r\n }\r\n }\r\n dataPayload = internalPayload.data;\r\n if (!(isConsoleMessage(dataPayload) &&\r\n dataPayload[CONSOLE_CAMPAIGN_ANALYTICS_ENABLED] === '1')) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.logEvent(internalPayload.messageType, dataPayload)];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n WindowController.prototype.getVapidKey = function () {\r\n return this.vapidKey;\r\n };\r\n WindowController.prototype.getSwReg = function () {\r\n return this.swRegistration;\r\n };\r\n WindowController.prototype.getToken = function (options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(Notification.permission === 'default')) return [3 /*break*/, 2];\r\n return [4 /*yield*/, Notification.requestPermission()];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n if (Notification.permission !== 'granted') {\r\n throw ERROR_FACTORY.create(\"permission-blocked\" /* PERMISSION_BLOCKED */);\r\n }\r\n return [4 /*yield*/, this.updateVapidKey(options === null || options === void 0 ? void 0 : options.vapidKey)];\r\n case 3:\r\n _a.sent();\r\n return [4 /*yield*/, this.updateSwReg(options === null || options === void 0 ? void 0 : options.serviceWorkerRegistration)];\r\n case 4:\r\n _a.sent();\r\n return [2 /*return*/, getToken(this.firebaseDependencies, this.swRegistration, this.vapidKey)];\r\n }\r\n });\r\n });\r\n };\r\n WindowController.prototype.updateVapidKey = function (vapidKey) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (!!vapidKey) {\r\n this.vapidKey = vapidKey;\r\n }\r\n else if (!this.vapidKey) {\r\n this.vapidKey = DEFAULT_VAPID_KEY;\r\n }\r\n return [2 /*return*/];\r\n });\r\n });\r\n };\r\n WindowController.prototype.updateSwReg = function (swRegistration) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(!swRegistration && !this.swRegistration)) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.registerDefaultSw()];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n if (!swRegistration && !!this.swRegistration) {\r\n return [2 /*return*/];\r\n }\r\n if (!(swRegistration instanceof ServiceWorkerRegistration)) {\r\n throw ERROR_FACTORY.create(\"invalid-sw-registration\" /* INVALID_SW_REGISTRATION */);\r\n }\r\n this.swRegistration = swRegistration;\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n WindowController.prototype.registerDefaultSw = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a, e_1;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n _b.trys.push([0, 2, , 3]);\r\n _a = this;\r\n return [4 /*yield*/, navigator.serviceWorker.register(DEFAULT_SW_PATH, {\r\n scope: DEFAULT_SW_SCOPE\r\n })];\r\n case 1:\r\n _a.swRegistration = _b.sent();\r\n // The timing when browser updates sw when sw has an update is unreliable by my experiment. It\r\n // leads to version conflict when the SDK upgrades to a newer version in the main page, but sw\r\n // is stuck with the old version. For example,\r\n // https://github.com/firebase/firebase-js-sdk/issues/2590 The following line reliably updates\r\n // sw if there was an update.\r\n this.swRegistration.update().catch(function () {\r\n /* it is non blocking and we don't care if it failed */\r\n });\r\n return [3 /*break*/, 3];\r\n case 2:\r\n e_1 = _b.sent();\r\n throw ERROR_FACTORY.create(\"failed-service-worker-registration\" /* FAILED_DEFAULT_REGISTRATION */, {\r\n browserErrorMessage: e_1.message\r\n });\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n WindowController.prototype.deleteToken = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!!this.swRegistration) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.registerDefaultSw()];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2: return [2 /*return*/, deleteToken(this.firebaseDependencies, this.swRegistration)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Request permission if it is not currently granted.\r\n *\r\n * @return Resolves if the permission was granted, rejects otherwise.\r\n *\r\n * @deprecated Use Notification.requestPermission() instead.\r\n * https://developer.mozilla.org/en-US/docs/Web/API/Notification/requestPermission\r\n */\r\n WindowController.prototype.requestPermission = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var permissionResult;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (Notification.permission === 'granted') {\r\n return [2 /*return*/];\r\n }\r\n return [4 /*yield*/, Notification.requestPermission()];\r\n case 1:\r\n permissionResult = _a.sent();\r\n if (permissionResult === 'granted') {\r\n return [2 /*return*/];\r\n }\r\n else if (permissionResult === 'denied') {\r\n throw ERROR_FACTORY.create(\"permission-blocked\" /* PERMISSION_BLOCKED */);\r\n }\r\n else {\r\n throw ERROR_FACTORY.create(\"permission-default\" /* PERMISSION_DEFAULT */);\r\n }\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * @deprecated. Use getToken(options?: {vapidKey?: string; serviceWorkerRegistration?:\r\n * ServiceWorkerRegistration;}): Promise instead.\r\n */\r\n WindowController.prototype.usePublicVapidKey = function (vapidKey) {\r\n if (this.vapidKey !== null) {\r\n throw ERROR_FACTORY.create(\"use-vapid-key-after-get-token\" /* USE_VAPID_KEY_AFTER_GET_TOKEN */);\r\n }\r\n if (typeof vapidKey !== 'string' || vapidKey.length === 0) {\r\n throw ERROR_FACTORY.create(\"invalid-vapid-key\" /* INVALID_VAPID_KEY */);\r\n }\r\n this.vapidKey = vapidKey;\r\n };\r\n /**\r\n * @deprecated. Use getToken(options?: {vapidKey?: string; serviceWorkerRegistration?:\r\n * ServiceWorkerRegistration;}): Promise instead.\r\n */\r\n WindowController.prototype.useServiceWorker = function (swRegistration) {\r\n if (!(swRegistration instanceof ServiceWorkerRegistration)) {\r\n throw ERROR_FACTORY.create(\"invalid-sw-registration\" /* INVALID_SW_REGISTRATION */);\r\n }\r\n if (this.swRegistration) {\r\n throw ERROR_FACTORY.create(\"use-sw-after-get-token\" /* USE_SW_AFTER_GET_TOKEN */);\r\n }\r\n this.swRegistration = swRegistration;\r\n };\r\n /**\r\n * @param nextOrObserver An observer object or a function triggered on message.\r\n *\r\n * @return The unsubscribe function for the observer.\r\n */\r\n WindowController.prototype.onMessage = function (nextOrObserver) {\r\n var _this = this;\r\n this.onMessageCallback = nextOrObserver;\r\n return function () {\r\n _this.onMessageCallback = null;\r\n };\r\n };\r\n WindowController.prototype.setBackgroundMessageHandler = function () {\r\n throw ERROR_FACTORY.create(\"only-available-in-sw\" /* AVAILABLE_IN_SW */);\r\n };\r\n WindowController.prototype.onBackgroundMessage = function () {\r\n throw ERROR_FACTORY.create(\"only-available-in-sw\" /* AVAILABLE_IN_SW */);\r\n };\r\n /**\r\n * @deprecated No-op. It was initially designed with token rotation requests from server in mind.\r\n * However, the plan to implement such feature was abandoned.\r\n */\r\n WindowController.prototype.onTokenRefresh = function () {\r\n return function () { };\r\n };\r\n WindowController.prototype.logEvent = function (messageType, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var eventType, analytics;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n eventType = getEventType(messageType);\r\n return [4 /*yield*/, this.firebaseDependencies.analyticsProvider.get()];\r\n case 1:\r\n analytics = _a.sent();\r\n analytics.logEvent(eventType, {\r\n /* eslint-disable camelcase */\r\n message_id: data[CONSOLE_CAMPAIGN_ID],\r\n message_name: data[CONSOLE_CAMPAIGN_NAME],\r\n message_time: data[CONSOLE_CAMPAIGN_TIME],\r\n message_device_time: Math.floor(Date.now() / 1000)\r\n /* eslint-enable camelcase */\r\n });\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n return WindowController;\r\n}());\r\nfunction getEventType(messageType) {\r\n switch (messageType) {\r\n case MessageType.NOTIFICATION_CLICKED:\r\n return 'notification_open';\r\n case MessageType.PUSH_RECEIVED:\r\n return 'notification_foreground';\r\n default:\r\n throw new Error();\r\n }\r\n}\r\nfunction stripInternalFields(internalPayload) {\r\n delete internalPayload.messageType;\r\n delete internalPayload.isFirebaseMessaging;\r\n return internalPayload;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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\nfunction extractAppConfig(app) {\r\n var e_1, _a;\r\n if (!app || !app.options) {\r\n throw getMissingValueError('App Configuration Object');\r\n }\r\n if (!app.name) {\r\n throw getMissingValueError('App Name');\r\n }\r\n // Required app config keys\r\n var configKeys = [\r\n 'projectId',\r\n 'apiKey',\r\n 'appId',\r\n 'messagingSenderId'\r\n ];\r\n var options = app.options;\r\n try {\r\n for (var configKeys_1 = __values(configKeys), configKeys_1_1 = configKeys_1.next(); !configKeys_1_1.done; configKeys_1_1 = configKeys_1.next()) {\r\n var keyName = configKeys_1_1.value;\r\n if (!options[keyName]) {\r\n throw getMissingValueError(keyName);\r\n }\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (configKeys_1_1 && !configKeys_1_1.done && (_a = configKeys_1.return)) _a.call(configKeys_1);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n return {\r\n appName: app.name,\r\n projectId: options.projectId,\r\n apiKey: options.apiKey,\r\n appId: options.appId,\r\n senderId: options.messagingSenderId\r\n };\r\n}\r\nfunction getMissingValueError(valueName) {\r\n return ERROR_FACTORY.create(\"missing-app-config-values\" /* MISSING_APP_CONFIG_VALUES */, {\r\n valueName: valueName\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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 MESSAGING_NAME = 'messaging';\r\nfunction factoryMethod(container) {\r\n // Dependencies.\r\n var app = container.getProvider('app').getImmediate();\r\n var appConfig = extractAppConfig(app);\r\n var installations = container.getProvider('installations').getImmediate();\r\n var analyticsProvider = container.getProvider('analytics-internal');\r\n var firebaseDependencies = {\r\n app: app,\r\n appConfig: appConfig,\r\n installations: installations,\r\n analyticsProvider: analyticsProvider\r\n };\r\n if (!isSupported()) {\r\n throw ERROR_FACTORY.create(\"unsupported-browser\" /* UNSUPPORTED_BROWSER */);\r\n }\r\n if (self && 'ServiceWorkerGlobalScope' in self) {\r\n // Running in ServiceWorker context\r\n return new SwController(firebaseDependencies);\r\n }\r\n else {\r\n // Assume we are in the window context.\r\n return new WindowController(firebaseDependencies);\r\n }\r\n}\r\nvar NAMESPACE_EXPORTS = {\r\n isSupported: isSupported\r\n};\r\nfirebase.INTERNAL.registerComponent(new Component(MESSAGING_NAME, factoryMethod, \"PUBLIC\" /* PUBLIC */).setServiceProps(NAMESPACE_EXPORTS));\r\nfunction isSupported() {\r\n if (self && 'ServiceWorkerGlobalScope' in self) {\r\n // Running in ServiceWorker context\r\n return isSWControllerSupported();\r\n }\r\n else {\r\n // Assume we are in the window context.\r\n return isWindowControllerSupported();\r\n }\r\n}\r\n/**\r\n * Checks to see if the required APIs exist.\r\n */\r\nfunction isWindowControllerSupported() {\r\n return ('indexedDB' in window &&\r\n indexedDB !== null &&\r\n navigator.cookieEnabled &&\r\n 'serviceWorker' in navigator &&\r\n 'PushManager' in window &&\r\n 'Notification' in window &&\r\n 'fetch' in window &&\r\n ServiceWorkerRegistration.prototype.hasOwnProperty('showNotification') &&\r\n PushSubscription.prototype.hasOwnProperty('getKey'));\r\n}\r\n/**\r\n * Checks to see if the required APIs exist within SW Context.\r\n */\r\nfunction isSWControllerSupported() {\r\n return ('indexedDB' in self &&\r\n indexedDB !== null &&\r\n 'PushManager' in self &&\r\n 'Notification' in self &&\r\n ServiceWorkerRegistration.prototype.hasOwnProperty('showNotification') &&\r\n PushSubscription.prototype.hasOwnProperty('getKey'));\r\n}\n//# sourceMappingURL=index.esm.js.map\n","import firebase from '@firebase/app';\nimport { __extends, __spreadArray, __awaiter, __generator, __assign } from 'tslib';\nimport { FirebaseError, createMockUserToken, getModularInstance } from '@firebase/util';\nimport { Component } from '@firebase/component';\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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 Constants used in the Firebase Storage library.\r\n */\r\n/**\r\n * Domain name for firebase storage.\r\n */\r\nvar DEFAULT_HOST = 'firebasestorage.googleapis.com';\r\n/**\r\n * The key in Firebase config json for the storage bucket.\r\n */\r\nvar CONFIG_STORAGE_BUCKET_KEY = 'storageBucket';\r\n/**\r\n * 2 minutes\r\n *\r\n * The timeout for all operations except upload.\r\n */\r\nvar DEFAULT_MAX_OPERATION_RETRY_TIME = 2 * 60 * 1000;\r\n/**\r\n * 10 minutes\r\n *\r\n * The timeout for upload.\r\n */\r\nvar DEFAULT_MAX_UPLOAD_RETRY_TIME = 10 * 60 * 1000;\n\n/**\r\n * An error returned by the Firebase Storage SDK.\r\n * @public\r\n */\r\nvar FirebaseStorageError = /** @class */ (function (_super) {\r\n __extends(FirebaseStorageError, _super);\r\n /**\r\n * @param code - A StorageErrorCode string to be prefixed with 'storage/' and\r\n * added to the end of the message.\r\n * @param message - Error message.\r\n */\r\n function FirebaseStorageError(code, message) {\r\n var _this = _super.call(this, prependCode(code), \"Firebase Storage: \" + message + \" (\" + prependCode(code) + \")\") || this;\r\n /**\r\n * Stores custom error data unque to FirebaseStorageError.\r\n */\r\n _this.customData = { serverResponse: null };\r\n _this._baseMessage = _this.message;\r\n // Without this, `instanceof FirebaseStorageError`, in tests for example,\r\n // returns false.\r\n Object.setPrototypeOf(_this, FirebaseStorageError.prototype);\r\n return _this;\r\n }\r\n /**\r\n * Compares a StorageErrorCode against this error's code, filtering out the prefix.\r\n */\r\n FirebaseStorageError.prototype._codeEquals = function (code) {\r\n return prependCode(code) === this.code;\r\n };\r\n Object.defineProperty(FirebaseStorageError.prototype, \"serverResponse\", {\r\n /**\r\n * Optional response message that was added by the server.\r\n */\r\n get: function () {\r\n return this.customData.serverResponse;\r\n },\r\n set: function (serverResponse) {\r\n this.customData.serverResponse = serverResponse;\r\n if (this.customData.serverResponse) {\r\n this.message = this._baseMessage + \"\\n\" + this.customData.serverResponse;\r\n }\r\n else {\r\n this.message = this._baseMessage;\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return FirebaseStorageError;\r\n}(FirebaseError));\r\nfunction prependCode(code) {\r\n return 'storage/' + code;\r\n}\r\nfunction unknown() {\r\n var message = 'An unknown error occurred, please check the error payload for ' +\r\n 'server response.';\r\n return new FirebaseStorageError(\"unknown\" /* UNKNOWN */, message);\r\n}\r\nfunction objectNotFound(path) {\r\n return new FirebaseStorageError(\"object-not-found\" /* OBJECT_NOT_FOUND */, \"Object '\" + path + \"' does not exist.\");\r\n}\r\nfunction quotaExceeded(bucket) {\r\n return new FirebaseStorageError(\"quota-exceeded\" /* QUOTA_EXCEEDED */, \"Quota for bucket '\" +\r\n bucket +\r\n \"' exceeded, please view quota on \" +\r\n 'https://firebase.google.com/pricing/.');\r\n}\r\nfunction unauthenticated() {\r\n var message = 'User is not authenticated, please authenticate using Firebase ' +\r\n 'Authentication and try again.';\r\n return new FirebaseStorageError(\"unauthenticated\" /* UNAUTHENTICATED */, message);\r\n}\r\nfunction unauthorizedApp() {\r\n return new FirebaseStorageError(\"unauthorized-app\" /* UNAUTHORIZED_APP */, 'This app does not have permission to access Firebase Storage on this project.');\r\n}\r\nfunction unauthorized(path) {\r\n return new FirebaseStorageError(\"unauthorized\" /* UNAUTHORIZED */, \"User does not have permission to access '\" + path + \"'.\");\r\n}\r\nfunction retryLimitExceeded() {\r\n return new FirebaseStorageError(\"retry-limit-exceeded\" /* RETRY_LIMIT_EXCEEDED */, 'Max retry time for operation exceeded, please try again.');\r\n}\r\nfunction canceled() {\r\n return new FirebaseStorageError(\"canceled\" /* CANCELED */, 'User canceled the upload/download.');\r\n}\r\nfunction invalidUrl(url) {\r\n return new FirebaseStorageError(\"invalid-url\" /* INVALID_URL */, \"Invalid URL '\" + url + \"'.\");\r\n}\r\nfunction invalidDefaultBucket(bucket) {\r\n return new FirebaseStorageError(\"invalid-default-bucket\" /* INVALID_DEFAULT_BUCKET */, \"Invalid default bucket '\" + bucket + \"'.\");\r\n}\r\nfunction noDefaultBucket() {\r\n return new FirebaseStorageError(\"no-default-bucket\" /* NO_DEFAULT_BUCKET */, 'No default bucket ' +\r\n \"found. Did you set the '\" +\r\n CONFIG_STORAGE_BUCKET_KEY +\r\n \"' property when initializing the app?\");\r\n}\r\nfunction cannotSliceBlob() {\r\n return new FirebaseStorageError(\"cannot-slice-blob\" /* CANNOT_SLICE_BLOB */, 'Cannot slice blob for upload. Please retry the upload.');\r\n}\r\nfunction serverFileWrongSize() {\r\n return new FirebaseStorageError(\"server-file-wrong-size\" /* SERVER_FILE_WRONG_SIZE */, 'Server recorded incorrect upload file size, please retry the upload.');\r\n}\r\nfunction noDownloadURL() {\r\n return new FirebaseStorageError(\"no-download-url\" /* NO_DOWNLOAD_URL */, 'The given file does not have any download URLs.');\r\n}\r\nfunction invalidArgument(message) {\r\n return new FirebaseStorageError(\"invalid-argument\" /* INVALID_ARGUMENT */, message);\r\n}\r\nfunction appDeleted() {\r\n return new FirebaseStorageError(\"app-deleted\" /* APP_DELETED */, 'The Firebase app was deleted.');\r\n}\r\n/**\r\n * @param name - The name of the operation that was invalid.\r\n */\r\nfunction invalidRootOperation(name) {\r\n return new FirebaseStorageError(\"invalid-root-operation\" /* INVALID_ROOT_OPERATION */, \"The operation '\" +\r\n name +\r\n \"' cannot be performed on a root reference, create a non-root \" +\r\n \"reference using child, such as .child('file.png').\");\r\n}\r\n/**\r\n * @param format - The format that was not valid.\r\n * @param message - A message describing the format violation.\r\n */\r\nfunction invalidFormat(format, message) {\r\n return new FirebaseStorageError(\"invalid-format\" /* INVALID_FORMAT */, \"String does not match format '\" + format + \"': \" + message);\r\n}\r\n/**\r\n * @param message - A message describing the internal error.\r\n */\r\nfunction internalError(message) {\r\n throw new FirebaseStorageError(\"internal-error\" /* INTERNAL_ERROR */, 'Internal error: ' + message);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\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/** Converts a Base64 encoded string to a binary string. */\r\nfunction decodeBase64(encoded) {\r\n return atob(encoded);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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 * An enumeration of the possible string formats for upload.\r\n * @public\r\n */\r\nvar StringFormat = {\r\n /**\r\n * Indicates the string should be interpreted \"raw\", that is, as normal text.\r\n * The string will be interpreted as UTF-16, then uploaded as a UTF-8 byte\r\n * sequence.\r\n * Example: The string 'Hello! \\\\ud83d\\\\ude0a' becomes the byte sequence\r\n * 48 65 6c 6c 6f 21 20 f0 9f 98 8a\r\n */\r\n RAW: 'raw',\r\n /**\r\n * Indicates the string should be interpreted as base64-encoded data.\r\n * Padding characters (trailing '='s) are optional.\r\n * Example: The string 'rWmO++E6t7/rlw==' becomes the byte sequence\r\n * ad 69 8e fb e1 3a b7 bf eb 97\r\n */\r\n BASE64: 'base64',\r\n /**\r\n * Indicates the string should be interpreted as base64url-encoded data.\r\n * Padding characters (trailing '='s) are optional.\r\n * Example: The string 'rWmO--E6t7_rlw==' becomes the byte sequence\r\n * ad 69 8e fb e1 3a b7 bf eb 97\r\n */\r\n BASE64URL: 'base64url',\r\n /**\r\n * Indicates the string is a data URL, such as one obtained from\r\n * canvas.toDataURL().\r\n * Example: the string 'data:application/octet-stream;base64,aaaa'\r\n * becomes the byte sequence\r\n * 69 a6 9a\r\n * (the content-type \"application/octet-stream\" is also applied, but can\r\n * be overridden in the metadata object).\r\n */\r\n DATA_URL: 'data_url'\r\n};\r\nvar StringData = /** @class */ (function () {\r\n function StringData(data, contentType) {\r\n this.data = data;\r\n this.contentType = contentType || null;\r\n }\r\n return StringData;\r\n}());\r\nfunction dataFromString(format, stringData) {\r\n switch (format) {\r\n case StringFormat.RAW:\r\n return new StringData(utf8Bytes_(stringData));\r\n case StringFormat.BASE64:\r\n case StringFormat.BASE64URL:\r\n return new StringData(base64Bytes_(format, stringData));\r\n case StringFormat.DATA_URL:\r\n return new StringData(dataURLBytes_(stringData), dataURLContentType_(stringData));\r\n // do nothing\r\n }\r\n // assert(false);\r\n throw unknown();\r\n}\r\nfunction utf8Bytes_(value) {\r\n var b = [];\r\n for (var i = 0; i < value.length; i++) {\r\n var c = value.charCodeAt(i);\r\n if (c <= 127) {\r\n b.push(c);\r\n }\r\n else {\r\n if (c <= 2047) {\r\n b.push(192 | (c >> 6), 128 | (c & 63));\r\n }\r\n else {\r\n if ((c & 64512) === 55296) {\r\n // The start of a surrogate pair.\r\n var valid = i < value.length - 1 && (value.charCodeAt(i + 1) & 64512) === 56320;\r\n if (!valid) {\r\n // The second surrogate wasn't there.\r\n b.push(239, 191, 189);\r\n }\r\n else {\r\n var hi = c;\r\n var lo = value.charCodeAt(++i);\r\n c = 65536 | ((hi & 1023) << 10) | (lo & 1023);\r\n b.push(240 | (c >> 18), 128 | ((c >> 12) & 63), 128 | ((c >> 6) & 63), 128 | (c & 63));\r\n }\r\n }\r\n else {\r\n if ((c & 64512) === 56320) {\r\n // Invalid low surrogate.\r\n b.push(239, 191, 189);\r\n }\r\n else {\r\n b.push(224 | (c >> 12), 128 | ((c >> 6) & 63), 128 | (c & 63));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return new Uint8Array(b);\r\n}\r\nfunction percentEncodedBytes_(value) {\r\n var decoded;\r\n try {\r\n decoded = decodeURIComponent(value);\r\n }\r\n catch (e) {\r\n throw invalidFormat(StringFormat.DATA_URL, 'Malformed data URL.');\r\n }\r\n return utf8Bytes_(decoded);\r\n}\r\nfunction base64Bytes_(format, value) {\r\n switch (format) {\r\n case StringFormat.BASE64: {\r\n var hasMinus = value.indexOf('-') !== -1;\r\n var hasUnder = value.indexOf('_') !== -1;\r\n if (hasMinus || hasUnder) {\r\n var invalidChar = hasMinus ? '-' : '_';\r\n throw invalidFormat(format, \"Invalid character '\" +\r\n invalidChar +\r\n \"' found: is it base64url encoded?\");\r\n }\r\n break;\r\n }\r\n case StringFormat.BASE64URL: {\r\n var hasPlus = value.indexOf('+') !== -1;\r\n var hasSlash = value.indexOf('/') !== -1;\r\n if (hasPlus || hasSlash) {\r\n var invalidChar = hasPlus ? '+' : '/';\r\n throw invalidFormat(format, \"Invalid character '\" + invalidChar + \"' found: is it base64 encoded?\");\r\n }\r\n value = value.replace(/-/g, '+').replace(/_/g, '/');\r\n break;\r\n }\r\n // do nothing\r\n }\r\n var bytes;\r\n try {\r\n bytes = decodeBase64(value);\r\n }\r\n catch (e) {\r\n throw invalidFormat(format, 'Invalid character found');\r\n }\r\n var array = new Uint8Array(bytes.length);\r\n for (var i = 0; i < bytes.length; i++) {\r\n array[i] = bytes.charCodeAt(i);\r\n }\r\n return array;\r\n}\r\nvar DataURLParts = /** @class */ (function () {\r\n function DataURLParts(dataURL) {\r\n this.base64 = false;\r\n this.contentType = null;\r\n var matches = dataURL.match(/^data:([^,]+)?,/);\r\n if (matches === null) {\r\n throw invalidFormat(StringFormat.DATA_URL, \"Must be formatted 'data:[][;base64],\");\r\n }\r\n var middle = matches[1] || null;\r\n if (middle != null) {\r\n this.base64 = endsWith(middle, ';base64');\r\n this.contentType = this.base64\r\n ? middle.substring(0, middle.length - ';base64'.length)\r\n : middle;\r\n }\r\n this.rest = dataURL.substring(dataURL.indexOf(',') + 1);\r\n }\r\n return DataURLParts;\r\n}());\r\nfunction dataURLBytes_(dataUrl) {\r\n var parts = new DataURLParts(dataUrl);\r\n if (parts.base64) {\r\n return base64Bytes_(StringFormat.BASE64, parts.rest);\r\n }\r\n else {\r\n return percentEncodedBytes_(parts.rest);\r\n }\r\n}\r\nfunction dataURLContentType_(dataUrl) {\r\n var parts = new DataURLParts(dataUrl);\r\n return parts.contentType;\r\n}\r\nfunction endsWith(s, end) {\r\n var longEnough = s.length >= end.length;\r\n if (!longEnough) {\r\n return false;\r\n }\r\n return s.substring(s.length - end.length) === end;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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 * An event that is triggered on a task.\r\n */\r\nvar TaskEvent = {\r\n /**\r\n * For this event,\r\n *
    \r\n *
  • The `next` function is triggered on progress updates and when the\r\n * task is paused/resumed with an `UploadTaskSnapshot` as the first\r\n * argument.
  • \r\n *
  • The `error` function is triggered if the upload is canceled or fails\r\n * for another reason.
  • \r\n *
  • The `complete` function is triggered if the upload completes\r\n * successfully.
  • \r\n *
\r\n */\r\n STATE_CHANGED: 'state_changed'\r\n};\r\n/**\r\n * Represents the current state of a running upload.\r\n */\r\nvar TaskState = {\r\n /** The task is currently transferring data. */\r\n RUNNING: 'running',\r\n /** The task was paused by the user. */\r\n PAUSED: 'paused',\r\n /** The task completed successfully. */\r\n SUCCESS: 'success',\r\n /** The task was canceled. */\r\n CANCELED: 'canceled',\r\n /** The task failed with an error. */\r\n ERROR: 'error'\r\n};\r\nfunction taskStateFromInternalTaskState(state) {\r\n switch (state) {\r\n case \"running\" /* RUNNING */:\r\n case \"pausing\" /* PAUSING */:\r\n case \"canceling\" /* CANCELING */:\r\n return TaskState.RUNNING;\r\n case \"paused\" /* PAUSED */:\r\n return TaskState.PAUSED;\r\n case \"success\" /* SUCCESS */:\r\n return TaskState.SUCCESS;\r\n case \"canceled\" /* CANCELED */:\r\n return TaskState.CANCELED;\r\n case \"error\" /* ERROR */:\r\n return TaskState.ERROR;\r\n default:\r\n // TODO(andysoto): assert(false);\r\n return TaskState.ERROR;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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 * Error codes for requests made by the the XhrIo wrapper.\r\n */\r\nvar ErrorCode;\r\n(function (ErrorCode) {\r\n ErrorCode[ErrorCode[\"NO_ERROR\"] = 0] = \"NO_ERROR\";\r\n ErrorCode[ErrorCode[\"NETWORK_ERROR\"] = 1] = \"NETWORK_ERROR\";\r\n ErrorCode[ErrorCode[\"ABORT\"] = 2] = \"ABORT\";\r\n})(ErrorCode || (ErrorCode = {}));\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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 * Network layer for browsers. We use this instead of goog.net.XhrIo because\r\n * goog.net.XhrIo is hyuuuuge and doesn't work in React Native on Android.\r\n */\r\nvar XhrConnection = /** @class */ (function () {\r\n function XhrConnection() {\r\n var _this = this;\r\n this.sent_ = false;\r\n this.xhr_ = new XMLHttpRequest();\r\n this.errorCode_ = ErrorCode.NO_ERROR;\r\n this.sendPromise_ = new Promise(function (resolve) {\r\n _this.xhr_.addEventListener('abort', function () {\r\n _this.errorCode_ = ErrorCode.ABORT;\r\n resolve();\r\n });\r\n _this.xhr_.addEventListener('error', function () {\r\n _this.errorCode_ = ErrorCode.NETWORK_ERROR;\r\n resolve();\r\n });\r\n _this.xhr_.addEventListener('load', function () {\r\n resolve();\r\n });\r\n });\r\n }\r\n /**\r\n * @override\r\n */\r\n XhrConnection.prototype.send = function (url, method, body, headers) {\r\n if (this.sent_) {\r\n throw internalError('cannot .send() more than once');\r\n }\r\n this.sent_ = true;\r\n this.xhr_.open(method, url, true);\r\n if (headers !== undefined) {\r\n for (var key in headers) {\r\n if (headers.hasOwnProperty(key)) {\r\n this.xhr_.setRequestHeader(key, headers[key].toString());\r\n }\r\n }\r\n }\r\n if (body !== undefined) {\r\n this.xhr_.send(body);\r\n }\r\n else {\r\n this.xhr_.send();\r\n }\r\n return this.sendPromise_;\r\n };\r\n /**\r\n * @override\r\n */\r\n XhrConnection.prototype.getErrorCode = function () {\r\n if (!this.sent_) {\r\n throw internalError('cannot .getErrorCode() before sending');\r\n }\r\n return this.errorCode_;\r\n };\r\n /**\r\n * @override\r\n */\r\n XhrConnection.prototype.getStatus = function () {\r\n if (!this.sent_) {\r\n throw internalError('cannot .getStatus() before sending');\r\n }\r\n try {\r\n return this.xhr_.status;\r\n }\r\n catch (e) {\r\n return -1;\r\n }\r\n };\r\n /**\r\n * @override\r\n */\r\n XhrConnection.prototype.getResponseText = function () {\r\n if (!this.sent_) {\r\n throw internalError('cannot .getResponseText() before sending');\r\n }\r\n return this.xhr_.responseText;\r\n };\r\n /**\r\n * Aborts the request.\r\n * @override\r\n */\r\n XhrConnection.prototype.abort = function () {\r\n this.xhr_.abort();\r\n };\r\n /**\r\n * @override\r\n */\r\n XhrConnection.prototype.getResponseHeader = function (header) {\r\n return this.xhr_.getResponseHeader(header);\r\n };\r\n /**\r\n * @override\r\n */\r\n XhrConnection.prototype.addUploadProgressListener = function (listener) {\r\n if (this.xhr_.upload != null) {\r\n this.xhr_.upload.addEventListener('progress', listener);\r\n }\r\n };\r\n /**\r\n * @override\r\n */\r\n XhrConnection.prototype.removeUploadProgressListener = function (listener) {\r\n if (this.xhr_.upload != null) {\r\n this.xhr_.upload.removeEventListener('progress', listener);\r\n }\r\n };\r\n return XhrConnection;\r\n}());\r\nfunction newConnection() {\r\n return new XhrConnection();\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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 * Factory-like class for creating XhrIo instances.\r\n */\r\nvar ConnectionPool = /** @class */ (function () {\r\n function ConnectionPool() {\r\n }\r\n ConnectionPool.prototype.createConnection = function () {\r\n return newConnection();\r\n };\r\n return ConnectionPool;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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 * Firebase Storage location data.\r\n *\r\n * @internal\r\n */\r\nvar Location = /** @class */ (function () {\r\n function Location(bucket, path) {\r\n this.bucket = bucket;\r\n this.path_ = path;\r\n }\r\n Object.defineProperty(Location.prototype, \"path\", {\r\n get: function () {\r\n return this.path_;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Location.prototype, \"isRoot\", {\r\n get: function () {\r\n return this.path.length === 0;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Location.prototype.fullServerUrl = function () {\r\n var encode = encodeURIComponent;\r\n return '/b/' + encode(this.bucket) + '/o/' + encode(this.path);\r\n };\r\n Location.prototype.bucketOnlyServerUrl = function () {\r\n var encode = encodeURIComponent;\r\n return '/b/' + encode(this.bucket) + '/o';\r\n };\r\n Location.makeFromBucketSpec = function (bucketString, host) {\r\n var bucketLocation;\r\n try {\r\n bucketLocation = Location.makeFromUrl(bucketString, host);\r\n }\r\n catch (e) {\r\n // Not valid URL, use as-is. This lets you put bare bucket names in\r\n // config.\r\n return new Location(bucketString, '');\r\n }\r\n if (bucketLocation.path === '') {\r\n return bucketLocation;\r\n }\r\n else {\r\n throw invalidDefaultBucket(bucketString);\r\n }\r\n };\r\n Location.makeFromUrl = function (url, host) {\r\n var location = null;\r\n var bucketDomain = '([A-Za-z0-9.\\\\-_]+)';\r\n function gsModify(loc) {\r\n if (loc.path.charAt(loc.path.length - 1) === '/') {\r\n loc.path_ = loc.path_.slice(0, -1);\r\n }\r\n }\r\n var gsPath = '(/(.*))?$';\r\n var gsRegex = new RegExp('^gs://' + bucketDomain + gsPath, 'i');\r\n var gsIndices = { bucket: 1, path: 3 };\r\n function httpModify(loc) {\r\n loc.path_ = decodeURIComponent(loc.path);\r\n }\r\n var version = 'v[A-Za-z0-9_]+';\r\n var firebaseStorageHost = host.replace(/[.]/g, '\\\\.');\r\n var firebaseStoragePath = '(/([^?#]*).*)?$';\r\n var firebaseStorageRegExp = new RegExp(\"^https?://\" + firebaseStorageHost + \"/\" + version + \"/b/\" + bucketDomain + \"/o\" + firebaseStoragePath, 'i');\r\n var firebaseStorageIndices = { bucket: 1, path: 3 };\r\n var cloudStorageHost = host === DEFAULT_HOST\r\n ? '(?:storage.googleapis.com|storage.cloud.google.com)'\r\n : host;\r\n var cloudStoragePath = '([^?#]*)';\r\n var cloudStorageRegExp = new RegExp(\"^https?://\" + cloudStorageHost + \"/\" + bucketDomain + \"/\" + cloudStoragePath, 'i');\r\n var cloudStorageIndices = { bucket: 1, path: 2 };\r\n var groups = [\r\n { regex: gsRegex, indices: gsIndices, postModify: gsModify },\r\n {\r\n regex: firebaseStorageRegExp,\r\n indices: firebaseStorageIndices,\r\n postModify: httpModify\r\n },\r\n {\r\n regex: cloudStorageRegExp,\r\n indices: cloudStorageIndices,\r\n postModify: httpModify\r\n }\r\n ];\r\n for (var i = 0; i < groups.length; i++) {\r\n var group = groups[i];\r\n var captures = group.regex.exec(url);\r\n if (captures) {\r\n var bucketValue = captures[group.indices.bucket];\r\n var pathValue = captures[group.indices.path];\r\n if (!pathValue) {\r\n pathValue = '';\r\n }\r\n location = new Location(bucketValue, pathValue);\r\n group.postModify(location);\r\n break;\r\n }\r\n }\r\n if (location == null) {\r\n throw invalidUrl(url);\r\n }\r\n return location;\r\n };\r\n return Location;\r\n}());\n\n/**\r\n * A request whose promise always fails.\r\n */\r\nvar FailRequest = /** @class */ (function () {\r\n function FailRequest(error) {\r\n this.promise_ = Promise.reject(error);\r\n }\r\n /** @inheritDoc */\r\n FailRequest.prototype.getPromise = function () {\r\n return this.promise_;\r\n };\r\n /** @inheritDoc */\r\n FailRequest.prototype.cancel = function (_appDelete) {\r\n };\r\n return FailRequest;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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 * @param f May be invoked\r\n * before the function returns.\r\n * @param callback Get all the arguments passed to the function\r\n * passed to f, including the initial boolean.\r\n */\r\nfunction start(f, \r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\ncallback, timeout) {\r\n // TODO(andysoto): make this code cleaner (probably refactor into an actual\r\n // type instead of a bunch of functions with state shared in the closure)\r\n var waitSeconds = 1;\r\n // Would type this as \"number\" but that doesn't work for Node so ¯\\_(ツ)_/¯\r\n // TODO: find a way to exclude Node type definition for storage because storage only works in browser\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n var timeoutId = null;\r\n var hitTimeout = false;\r\n var cancelState = 0;\r\n function canceled() {\r\n return cancelState === 2;\r\n }\r\n var triggeredCallback = false;\r\n function triggerCallback() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (!triggeredCallback) {\r\n triggeredCallback = true;\r\n callback.apply(null, args);\r\n }\r\n }\r\n function callWithDelay(millis) {\r\n timeoutId = setTimeout(function () {\r\n timeoutId = null;\r\n f(handler, canceled());\r\n }, millis);\r\n }\r\n function handler(success) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n if (triggeredCallback) {\r\n return;\r\n }\r\n if (success) {\r\n triggerCallback.call.apply(triggerCallback, __spreadArray([null, success], args));\r\n return;\r\n }\r\n var mustStop = canceled() || hitTimeout;\r\n if (mustStop) {\r\n triggerCallback.call.apply(triggerCallback, __spreadArray([null, success], args));\r\n return;\r\n }\r\n if (waitSeconds < 64) {\r\n /* TODO(andysoto): don't back off so quickly if we know we're offline. */\r\n waitSeconds *= 2;\r\n }\r\n var waitMillis;\r\n if (cancelState === 1) {\r\n cancelState = 2;\r\n waitMillis = 0;\r\n }\r\n else {\r\n waitMillis = (waitSeconds + Math.random()) * 1000;\r\n }\r\n callWithDelay(waitMillis);\r\n }\r\n var stopped = false;\r\n function stop(wasTimeout) {\r\n if (stopped) {\r\n return;\r\n }\r\n stopped = true;\r\n if (triggeredCallback) {\r\n return;\r\n }\r\n if (timeoutId !== null) {\r\n if (!wasTimeout) {\r\n cancelState = 2;\r\n }\r\n clearTimeout(timeoutId);\r\n callWithDelay(0);\r\n }\r\n else {\r\n if (!wasTimeout) {\r\n cancelState = 1;\r\n }\r\n }\r\n }\r\n callWithDelay(0);\r\n setTimeout(function () {\r\n hitTimeout = true;\r\n stop(true);\r\n }, timeout);\r\n return stop;\r\n}\r\n/**\r\n * Stops the retry loop from repeating.\r\n * If the function is currently \"in between\" retries, it is invoked immediately\r\n * with the second parameter as \"true\". Otherwise, it will be invoked once more\r\n * after the current invocation finishes iff the current invocation would have\r\n * triggered another retry.\r\n */\r\nfunction stop(id) {\r\n id(false);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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\nfunction isJustDef(p) {\r\n return p !== void 0;\r\n}\r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\nfunction isFunction(p) {\r\n return typeof p === 'function';\r\n}\r\nfunction isNonArrayObject(p) {\r\n return typeof p === 'object' && !Array.isArray(p);\r\n}\r\nfunction isString(p) {\r\n return typeof p === 'string' || p instanceof String;\r\n}\r\nfunction isNativeBlob(p) {\r\n return isNativeBlobDefined() && p instanceof Blob;\r\n}\r\nfunction isNativeBlobDefined() {\r\n return typeof Blob !== 'undefined';\r\n}\r\nfunction validateNumber(argument, minValue, maxValue, value) {\r\n if (value < minValue) {\r\n throw invalidArgument(\"Invalid value for '\" + argument + \"'. Expected \" + minValue + \" or greater.\");\r\n }\r\n if (value > maxValue) {\r\n throw invalidArgument(\"Invalid value for '\" + argument + \"'. Expected \" + maxValue + \" or less.\");\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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\nfunction makeUrl(urlPart, host) {\r\n var protocolMatch = host.match(/^(\\w+):\\/\\/.+/);\r\n var protocol = protocolMatch === null || protocolMatch === void 0 ? void 0 : protocolMatch[1];\r\n var origin = host;\r\n if (protocol == null) {\r\n origin = \"https://\" + host;\r\n }\r\n return origin + \"/v0\" + urlPart;\r\n}\r\nfunction makeQueryString(params) {\r\n var encode = encodeURIComponent;\r\n var queryPart = '?';\r\n for (var key in params) {\r\n if (params.hasOwnProperty(key)) {\r\n var nextPart = encode(key) + '=' + encode(params[key]);\r\n queryPart = queryPart + nextPart + '&';\r\n }\r\n }\r\n // Chop off the extra '&' or '?' on the end\r\n queryPart = queryPart.slice(0, -1);\r\n return queryPart;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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 NetworkRequest = /** @class */ (function () {\r\n function NetworkRequest(url, method, headers, body, successCodes, additionalRetryCodes, callback, errorCallback, timeout, progressCallback, pool) {\r\n var _this = this;\r\n this.pendingConnection_ = null;\r\n this.backoffId_ = null;\r\n this.canceled_ = false;\r\n this.appDelete_ = false;\r\n this.url_ = url;\r\n this.method_ = method;\r\n this.headers_ = headers;\r\n this.body_ = body;\r\n this.successCodes_ = successCodes.slice();\r\n this.additionalRetryCodes_ = additionalRetryCodes.slice();\r\n this.callback_ = callback;\r\n this.errorCallback_ = errorCallback;\r\n this.progressCallback_ = progressCallback;\r\n this.timeout_ = timeout;\r\n this.pool_ = pool;\r\n this.promise_ = new Promise(function (resolve, reject) {\r\n _this.resolve_ = resolve;\r\n _this.reject_ = reject;\r\n _this.start_();\r\n });\r\n }\r\n /**\r\n * Actually starts the retry loop.\r\n */\r\n NetworkRequest.prototype.start_ = function () {\r\n var self = this;\r\n function doTheRequest(backoffCallback, canceled) {\r\n if (canceled) {\r\n backoffCallback(false, new RequestEndStatus(false, null, true));\r\n return;\r\n }\r\n var connection = self.pool_.createConnection();\r\n self.pendingConnection_ = connection;\r\n function progressListener(progressEvent) {\r\n var loaded = progressEvent.loaded;\r\n var total = progressEvent.lengthComputable ? progressEvent.total : -1;\r\n if (self.progressCallback_ !== null) {\r\n self.progressCallback_(loaded, total);\r\n }\r\n }\r\n if (self.progressCallback_ !== null) {\r\n connection.addUploadProgressListener(progressListener);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n connection\r\n .send(self.url_, self.method_, self.body_, self.headers_)\r\n .then(function () {\r\n if (self.progressCallback_ !== null) {\r\n connection.removeUploadProgressListener(progressListener);\r\n }\r\n self.pendingConnection_ = null;\r\n var hitServer = connection.getErrorCode() === ErrorCode.NO_ERROR;\r\n var status = connection.getStatus();\r\n if (!hitServer || self.isRetryStatusCode_(status)) {\r\n var wasCanceled = connection.getErrorCode() === ErrorCode.ABORT;\r\n backoffCallback(false, new RequestEndStatus(false, null, wasCanceled));\r\n return;\r\n }\r\n var successCode = self.successCodes_.indexOf(status) !== -1;\r\n backoffCallback(true, new RequestEndStatus(successCode, connection));\r\n });\r\n }\r\n /**\r\n * @param requestWentThrough - True if the request eventually went\r\n * through, false if it hit the retry limit or was canceled.\r\n */\r\n function backoffDone(requestWentThrough, status) {\r\n var resolve = self.resolve_;\r\n var reject = self.reject_;\r\n var connection = status.connection;\r\n if (status.wasSuccessCode) {\r\n try {\r\n var result = self.callback_(connection, connection.getResponseText());\r\n if (isJustDef(result)) {\r\n resolve(result);\r\n }\r\n else {\r\n resolve();\r\n }\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n }\r\n else {\r\n if (connection !== null) {\r\n var err = unknown();\r\n err.serverResponse = connection.getResponseText();\r\n if (self.errorCallback_) {\r\n reject(self.errorCallback_(connection, err));\r\n }\r\n else {\r\n reject(err);\r\n }\r\n }\r\n else {\r\n if (status.canceled) {\r\n var err = self.appDelete_ ? appDeleted() : canceled();\r\n reject(err);\r\n }\r\n else {\r\n var err = retryLimitExceeded();\r\n reject(err);\r\n }\r\n }\r\n }\r\n }\r\n if (this.canceled_) {\r\n backoffDone(false, new RequestEndStatus(false, null, true));\r\n }\r\n else {\r\n this.backoffId_ = start(doTheRequest, backoffDone, this.timeout_);\r\n }\r\n };\r\n /** @inheritDoc */\r\n NetworkRequest.prototype.getPromise = function () {\r\n return this.promise_;\r\n };\r\n /** @inheritDoc */\r\n NetworkRequest.prototype.cancel = function (appDelete) {\r\n this.canceled_ = true;\r\n this.appDelete_ = appDelete || false;\r\n if (this.backoffId_ !== null) {\r\n stop(this.backoffId_);\r\n }\r\n if (this.pendingConnection_ !== null) {\r\n this.pendingConnection_.abort();\r\n }\r\n };\r\n NetworkRequest.prototype.isRetryStatusCode_ = function (status) {\r\n // The codes for which to retry came from this page:\r\n // https://cloud.google.com/storage/docs/exponential-backoff\r\n var isFiveHundredCode = status >= 500 && status < 600;\r\n var extraRetryCodes = [\r\n // Request Timeout: web server didn't receive full request in time.\r\n 408,\r\n // Too Many Requests: you're getting rate-limited, basically.\r\n 429\r\n ];\r\n var isExtraRetryCode = extraRetryCodes.indexOf(status) !== -1;\r\n var isRequestSpecificRetryCode = this.additionalRetryCodes_.indexOf(status) !== -1;\r\n return isFiveHundredCode || isExtraRetryCode || isRequestSpecificRetryCode;\r\n };\r\n return NetworkRequest;\r\n}());\r\n/**\r\n * A collection of information about the result of a network request.\r\n * @param opt_canceled - Defaults to false.\r\n */\r\nvar RequestEndStatus = /** @class */ (function () {\r\n function RequestEndStatus(wasSuccessCode, connection, canceled) {\r\n this.wasSuccessCode = wasSuccessCode;\r\n this.connection = connection;\r\n this.canceled = !!canceled;\r\n }\r\n return RequestEndStatus;\r\n}());\r\nfunction addAuthHeader_(headers, authToken) {\r\n if (authToken !== null && authToken.length > 0) {\r\n headers['Authorization'] = 'Firebase ' + authToken;\r\n }\r\n}\r\nfunction addVersionHeader_(headers, firebaseVersion) {\r\n headers['X-Firebase-Storage-Version'] =\r\n 'webjs/' + (firebaseVersion !== null && firebaseVersion !== void 0 ? firebaseVersion : 'AppManager');\r\n}\r\nfunction addGmpidHeader_(headers, appId) {\r\n if (appId) {\r\n headers['X-Firebase-GMPID'] = appId;\r\n }\r\n}\r\nfunction addAppCheckHeader_(headers, appCheckToken) {\r\n if (appCheckToken !== null) {\r\n headers['X-Firebase-AppCheck'] = appCheckToken;\r\n }\r\n}\r\nfunction makeRequest(requestInfo, appId, authToken, appCheckToken, pool, firebaseVersion) {\r\n var queryPart = makeQueryString(requestInfo.urlParams);\r\n var url = requestInfo.url + queryPart;\r\n var headers = Object.assign({}, requestInfo.headers);\r\n addGmpidHeader_(headers, appId);\r\n addAuthHeader_(headers, authToken);\r\n addVersionHeader_(headers, firebaseVersion);\r\n addAppCheckHeader_(headers, appCheckToken);\r\n return new NetworkRequest(url, requestInfo.method, headers, requestInfo.body, requestInfo.successCodes, requestInfo.additionalRetryCodes, requestInfo.handler, requestInfo.errorHandler, requestInfo.timeout, requestInfo.progressCallback, pool);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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\nfunction getBlobBuilder() {\r\n if (typeof BlobBuilder !== 'undefined') {\r\n return BlobBuilder;\r\n }\r\n else if (typeof WebKitBlobBuilder !== 'undefined') {\r\n return WebKitBlobBuilder;\r\n }\r\n else {\r\n return undefined;\r\n }\r\n}\r\n/**\r\n * Concatenates one or more values together and converts them to a Blob.\r\n *\r\n * @param args The values that will make up the resulting blob.\r\n * @return The blob.\r\n */\r\nfunction getBlob() {\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 BlobBuilder = getBlobBuilder();\r\n if (BlobBuilder !== undefined) {\r\n var bb = new BlobBuilder();\r\n for (var i = 0; i < args.length; i++) {\r\n bb.append(args[i]);\r\n }\r\n return bb.getBlob();\r\n }\r\n else {\r\n if (isNativeBlobDefined()) {\r\n return new Blob(args);\r\n }\r\n else {\r\n throw new FirebaseStorageError(\"unsupported-environment\" /* UNSUPPORTED_ENVIRONMENT */, \"This browser doesn't seem to support creating Blobs\");\r\n }\r\n }\r\n}\r\n/**\r\n * Slices the blob. The returned blob contains data from the start byte\r\n * (inclusive) till the end byte (exclusive). Negative indices cannot be used.\r\n *\r\n * @param blob The blob to be sliced.\r\n * @param start Index of the starting byte.\r\n * @param end Index of the ending byte.\r\n * @return The blob slice or null if not supported.\r\n */\r\nfunction sliceBlob(blob, start, end) {\r\n if (blob.webkitSlice) {\r\n return blob.webkitSlice(start, end);\r\n }\r\n else if (blob.mozSlice) {\r\n return blob.mozSlice(start, end);\r\n }\r\n else if (blob.slice) {\r\n return blob.slice(start, end);\r\n }\r\n return null;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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 * @param opt_elideCopy - If true, doesn't copy mutable input data\r\n * (e.g. Uint8Arrays). Pass true only if you know the objects will not be\r\n * modified after this blob's construction.\r\n *\r\n * @internal\r\n */\r\nvar FbsBlob = /** @class */ (function () {\r\n function FbsBlob(data, elideCopy) {\r\n var size = 0;\r\n var blobType = '';\r\n if (isNativeBlob(data)) {\r\n this.data_ = data;\r\n size = data.size;\r\n blobType = data.type;\r\n }\r\n else if (data instanceof ArrayBuffer) {\r\n if (elideCopy) {\r\n this.data_ = new Uint8Array(data);\r\n }\r\n else {\r\n this.data_ = new Uint8Array(data.byteLength);\r\n this.data_.set(new Uint8Array(data));\r\n }\r\n size = this.data_.length;\r\n }\r\n else if (data instanceof Uint8Array) {\r\n if (elideCopy) {\r\n this.data_ = data;\r\n }\r\n else {\r\n this.data_ = new Uint8Array(data.length);\r\n this.data_.set(data);\r\n }\r\n size = data.length;\r\n }\r\n this.size_ = size;\r\n this.type_ = blobType;\r\n }\r\n FbsBlob.prototype.size = function () {\r\n return this.size_;\r\n };\r\n FbsBlob.prototype.type = function () {\r\n return this.type_;\r\n };\r\n FbsBlob.prototype.slice = function (startByte, endByte) {\r\n if (isNativeBlob(this.data_)) {\r\n var realBlob = this.data_;\r\n var sliced = sliceBlob(realBlob, startByte, endByte);\r\n if (sliced === null) {\r\n return null;\r\n }\r\n return new FbsBlob(sliced);\r\n }\r\n else {\r\n var slice = new Uint8Array(this.data_.buffer, startByte, endByte - startByte);\r\n return new FbsBlob(slice, true);\r\n }\r\n };\r\n FbsBlob.getBlob = 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 if (isNativeBlobDefined()) {\r\n var blobby = args.map(function (val) {\r\n if (val instanceof FbsBlob) {\r\n return val.data_;\r\n }\r\n else {\r\n return val;\r\n }\r\n });\r\n return new FbsBlob(getBlob.apply(null, blobby));\r\n }\r\n else {\r\n var uint8Arrays = args.map(function (val) {\r\n if (isString(val)) {\r\n return dataFromString(StringFormat.RAW, val).data;\r\n }\r\n else {\r\n // Blobs don't exist, so this has to be a Uint8Array.\r\n return val.data_;\r\n }\r\n });\r\n var finalLength_1 = 0;\r\n uint8Arrays.forEach(function (array) {\r\n finalLength_1 += array.byteLength;\r\n });\r\n var merged_1 = new Uint8Array(finalLength_1);\r\n var index_1 = 0;\r\n uint8Arrays.forEach(function (array) {\r\n for (var i = 0; i < array.length; i++) {\r\n merged_1[index_1++] = array[i];\r\n }\r\n });\r\n return new FbsBlob(merged_1, true);\r\n }\r\n };\r\n FbsBlob.prototype.uploadData = function () {\r\n return this.data_;\r\n };\r\n return FbsBlob;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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 the Object resulting from parsing the given JSON, or null if the\r\n * given string does not represent a JSON object.\r\n */\r\nfunction jsonObjectOrNull(s) {\r\n var obj;\r\n try {\r\n obj = JSON.parse(s);\r\n }\r\n catch (e) {\r\n return null;\r\n }\r\n if (isNonArrayObject(obj)) {\r\n return obj;\r\n }\r\n else {\r\n return null;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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 Contains helper methods for manipulating paths.\r\n */\r\n/**\r\n * @return Null if the path is already at the root.\r\n */\r\nfunction parent(path) {\r\n if (path.length === 0) {\r\n return null;\r\n }\r\n var index = path.lastIndexOf('/');\r\n if (index === -1) {\r\n return '';\r\n }\r\n var newPath = path.slice(0, index);\r\n return newPath;\r\n}\r\nfunction child(path, childPath) {\r\n var canonicalChildPath = childPath\r\n .split('/')\r\n .filter(function (component) { return component.length > 0; })\r\n .join('/');\r\n if (path.length === 0) {\r\n return canonicalChildPath;\r\n }\r\n else {\r\n return path + '/' + canonicalChildPath;\r\n }\r\n}\r\n/**\r\n * Returns the last component of a path.\r\n * '/foo/bar' -> 'bar'\r\n * '/foo/bar/baz/' -> 'baz/'\r\n * '/a' -> 'a'\r\n */\r\nfunction lastComponent(path) {\r\n var index = path.lastIndexOf('/', path.length - 2);\r\n if (index === -1) {\r\n return path;\r\n }\r\n else {\r\n return path.slice(index + 1);\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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\nfunction noXform_(metadata, value) {\r\n return value;\r\n}\r\nvar Mapping = /** @class */ (function () {\r\n function Mapping(server, local, writable, xform) {\r\n this.server = server;\r\n this.local = local || server;\r\n this.writable = !!writable;\r\n this.xform = xform || noXform_;\r\n }\r\n return Mapping;\r\n}());\r\nvar mappings_ = null;\r\nfunction xformPath(fullPath) {\r\n if (!isString(fullPath) || fullPath.length < 2) {\r\n return fullPath;\r\n }\r\n else {\r\n return lastComponent(fullPath);\r\n }\r\n}\r\nfunction getMappings() {\r\n if (mappings_) {\r\n return mappings_;\r\n }\r\n var mappings = [];\r\n mappings.push(new Mapping('bucket'));\r\n mappings.push(new Mapping('generation'));\r\n mappings.push(new Mapping('metageneration'));\r\n mappings.push(new Mapping('name', 'fullPath', true));\r\n function mappingsXformPath(_metadata, fullPath) {\r\n return xformPath(fullPath);\r\n }\r\n var nameMapping = new Mapping('name');\r\n nameMapping.xform = mappingsXformPath;\r\n mappings.push(nameMapping);\r\n /**\r\n * Coerces the second param to a number, if it is defined.\r\n */\r\n function xformSize(_metadata, size) {\r\n if (size !== undefined) {\r\n return Number(size);\r\n }\r\n else {\r\n return size;\r\n }\r\n }\r\n var sizeMapping = new Mapping('size');\r\n sizeMapping.xform = xformSize;\r\n mappings.push(sizeMapping);\r\n mappings.push(new Mapping('timeCreated'));\r\n mappings.push(new Mapping('updated'));\r\n mappings.push(new Mapping('md5Hash', null, true));\r\n mappings.push(new Mapping('cacheControl', null, true));\r\n mappings.push(new Mapping('contentDisposition', null, true));\r\n mappings.push(new Mapping('contentEncoding', null, true));\r\n mappings.push(new Mapping('contentLanguage', null, true));\r\n mappings.push(new Mapping('contentType', null, true));\r\n mappings.push(new Mapping('metadata', 'customMetadata', true));\r\n mappings_ = mappings;\r\n return mappings_;\r\n}\r\nfunction addRef(metadata, service) {\r\n function generateRef() {\r\n var bucket = metadata['bucket'];\r\n var path = metadata['fullPath'];\r\n var loc = new Location(bucket, path);\r\n return service._makeStorageReference(loc);\r\n }\r\n Object.defineProperty(metadata, 'ref', { get: generateRef });\r\n}\r\nfunction fromResource(service, resource, mappings) {\r\n var metadata = {};\r\n metadata['type'] = 'file';\r\n var len = mappings.length;\r\n for (var i = 0; i < len; i++) {\r\n var mapping = mappings[i];\r\n metadata[mapping.local] = mapping.xform(metadata, resource[mapping.server]);\r\n }\r\n addRef(metadata, service);\r\n return metadata;\r\n}\r\nfunction fromResourceString(service, resourceString, mappings) {\r\n var obj = jsonObjectOrNull(resourceString);\r\n if (obj === null) {\r\n return null;\r\n }\r\n var resource = obj;\r\n return fromResource(service, resource, mappings);\r\n}\r\nfunction downloadUrlFromResourceString(metadata, resourceString, host) {\r\n var obj = jsonObjectOrNull(resourceString);\r\n if (obj === null) {\r\n return null;\r\n }\r\n if (!isString(obj['downloadTokens'])) {\r\n // This can happen if objects are uploaded through GCS and retrieved\r\n // through list, so we don't want to throw an Error.\r\n return null;\r\n }\r\n var tokens = obj['downloadTokens'];\r\n if (tokens.length === 0) {\r\n return null;\r\n }\r\n var encode = encodeURIComponent;\r\n var tokensList = tokens.split(',');\r\n var urls = tokensList.map(function (token) {\r\n var bucket = metadata['bucket'];\r\n var path = metadata['fullPath'];\r\n var urlPart = '/b/' + encode(bucket) + '/o/' + encode(path);\r\n var base = makeUrl(urlPart, host);\r\n var queryString = makeQueryString({\r\n alt: 'media',\r\n token: token\r\n });\r\n return base + queryString;\r\n });\r\n return urls[0];\r\n}\r\nfunction toResourceString(metadata, mappings) {\r\n var resource = {};\r\n var len = mappings.length;\r\n for (var i = 0; i < len; i++) {\r\n var mapping = mappings[i];\r\n if (mapping.writable) {\r\n resource[mapping.server] = metadata[mapping.local];\r\n }\r\n }\r\n return JSON.stringify(resource);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 PREFIXES_KEY = 'prefixes';\r\nvar ITEMS_KEY = 'items';\r\nfunction fromBackendResponse(service, bucket, resource) {\r\n var listResult = {\r\n prefixes: [],\r\n items: [],\r\n nextPageToken: resource['nextPageToken']\r\n };\r\n if (resource[PREFIXES_KEY]) {\r\n for (var _i = 0, _a = resource[PREFIXES_KEY]; _i < _a.length; _i++) {\r\n var path = _a[_i];\r\n var pathWithoutTrailingSlash = path.replace(/\\/$/, '');\r\n var reference = service._makeStorageReference(new Location(bucket, pathWithoutTrailingSlash));\r\n listResult.prefixes.push(reference);\r\n }\r\n }\r\n if (resource[ITEMS_KEY]) {\r\n for (var _b = 0, _c = resource[ITEMS_KEY]; _b < _c.length; _b++) {\r\n var item = _c[_b];\r\n var reference = service._makeStorageReference(new Location(bucket, item['name']));\r\n listResult.items.push(reference);\r\n }\r\n }\r\n return listResult;\r\n}\r\nfunction fromResponseString(service, bucket, resourceString) {\r\n var obj = jsonObjectOrNull(resourceString);\r\n if (obj === null) {\r\n return null;\r\n }\r\n var resource = obj;\r\n return fromBackendResponse(service, bucket, resource);\r\n}\n\nvar RequestInfo = /** @class */ (function () {\r\n function RequestInfo(url, method, \r\n /**\r\n * Returns the value with which to resolve the request's promise. Only called\r\n * if the request is successful. Throw from this function to reject the\r\n * returned Request's promise with the thrown error.\r\n * Note: The XhrIo passed to this function may be reused after this callback\r\n * returns. Do not keep a reference to it in any way.\r\n */\r\n handler, timeout) {\r\n this.url = url;\r\n this.method = method;\r\n this.handler = handler;\r\n this.timeout = timeout;\r\n this.urlParams = {};\r\n this.headers = {};\r\n this.body = null;\r\n this.errorHandler = null;\r\n /**\r\n * Called with the current number of bytes uploaded and total size (-1 if not\r\n * computable) of the request body (i.e. used to report upload progress).\r\n */\r\n this.progressCallback = null;\r\n this.successCodes = [200];\r\n this.additionalRetryCodes = [];\r\n }\r\n return RequestInfo;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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 the UNKNOWN FirebaseStorageError if cndn is false.\r\n */\r\nfunction handlerCheck(cndn) {\r\n if (!cndn) {\r\n throw unknown();\r\n }\r\n}\r\nfunction metadataHandler(service, mappings) {\r\n function handler(xhr, text) {\r\n var metadata = fromResourceString(service, text, mappings);\r\n handlerCheck(metadata !== null);\r\n return metadata;\r\n }\r\n return handler;\r\n}\r\nfunction listHandler(service, bucket) {\r\n function handler(xhr, text) {\r\n var listResult = fromResponseString(service, bucket, text);\r\n handlerCheck(listResult !== null);\r\n return listResult;\r\n }\r\n return handler;\r\n}\r\nfunction downloadUrlHandler(service, mappings) {\r\n function handler(xhr, text) {\r\n var metadata = fromResourceString(service, text, mappings);\r\n handlerCheck(metadata !== null);\r\n return downloadUrlFromResourceString(metadata, text, service.host);\r\n }\r\n return handler;\r\n}\r\nfunction sharedErrorHandler(location) {\r\n function errorHandler(xhr, err) {\r\n var newErr;\r\n if (xhr.getStatus() === 401) {\r\n if (\r\n // This exact message string is the only consistent part of the\r\n // server's error response that identifies it as an App Check error.\r\n xhr.getResponseText().includes('Firebase App Check token is invalid')) {\r\n newErr = unauthorizedApp();\r\n }\r\n else {\r\n newErr = unauthenticated();\r\n }\r\n }\r\n else {\r\n if (xhr.getStatus() === 402) {\r\n newErr = quotaExceeded(location.bucket);\r\n }\r\n else {\r\n if (xhr.getStatus() === 403) {\r\n newErr = unauthorized(location.path);\r\n }\r\n else {\r\n newErr = err;\r\n }\r\n }\r\n }\r\n newErr.serverResponse = err.serverResponse;\r\n return newErr;\r\n }\r\n return errorHandler;\r\n}\r\nfunction objectErrorHandler(location) {\r\n var shared = sharedErrorHandler(location);\r\n function errorHandler(xhr, err) {\r\n var newErr = shared(xhr, err);\r\n if (xhr.getStatus() === 404) {\r\n newErr = objectNotFound(location.path);\r\n }\r\n newErr.serverResponse = err.serverResponse;\r\n return newErr;\r\n }\r\n return errorHandler;\r\n}\r\nfunction getMetadata$2(service, location, mappings) {\r\n var urlPart = location.fullServerUrl();\r\n var url = makeUrl(urlPart, service.host);\r\n var method = 'GET';\r\n var timeout = service.maxOperationRetryTime;\r\n var requestInfo = new RequestInfo(url, method, metadataHandler(service, mappings), timeout);\r\n requestInfo.errorHandler = objectErrorHandler(location);\r\n return requestInfo;\r\n}\r\nfunction list$2(service, location, delimiter, pageToken, maxResults) {\r\n var urlParams = {};\r\n if (location.isRoot) {\r\n urlParams['prefix'] = '';\r\n }\r\n else {\r\n urlParams['prefix'] = location.path + '/';\r\n }\r\n if (delimiter && delimiter.length > 0) {\r\n urlParams['delimiter'] = delimiter;\r\n }\r\n if (pageToken) {\r\n urlParams['pageToken'] = pageToken;\r\n }\r\n if (maxResults) {\r\n urlParams['maxResults'] = maxResults;\r\n }\r\n var urlPart = location.bucketOnlyServerUrl();\r\n var url = makeUrl(urlPart, service.host);\r\n var method = 'GET';\r\n var timeout = service.maxOperationRetryTime;\r\n var requestInfo = new RequestInfo(url, method, listHandler(service, location.bucket), timeout);\r\n requestInfo.urlParams = urlParams;\r\n requestInfo.errorHandler = sharedErrorHandler(location);\r\n return requestInfo;\r\n}\r\nfunction getDownloadUrl(service, location, mappings) {\r\n var urlPart = location.fullServerUrl();\r\n var url = makeUrl(urlPart, service.host);\r\n var method = 'GET';\r\n var timeout = service.maxOperationRetryTime;\r\n var requestInfo = new RequestInfo(url, method, downloadUrlHandler(service, mappings), timeout);\r\n requestInfo.errorHandler = objectErrorHandler(location);\r\n return requestInfo;\r\n}\r\nfunction updateMetadata$2(service, location, metadata, mappings) {\r\n var urlPart = location.fullServerUrl();\r\n var url = makeUrl(urlPart, service.host);\r\n var method = 'PATCH';\r\n var body = toResourceString(metadata, mappings);\r\n var headers = { 'Content-Type': 'application/json; charset=utf-8' };\r\n var timeout = service.maxOperationRetryTime;\r\n var requestInfo = new RequestInfo(url, method, metadataHandler(service, mappings), timeout);\r\n requestInfo.headers = headers;\r\n requestInfo.body = body;\r\n requestInfo.errorHandler = objectErrorHandler(location);\r\n return requestInfo;\r\n}\r\nfunction deleteObject$2(service, location) {\r\n var urlPart = location.fullServerUrl();\r\n var url = makeUrl(urlPart, service.host);\r\n var method = 'DELETE';\r\n var timeout = service.maxOperationRetryTime;\r\n function handler(_xhr, _text) { }\r\n var requestInfo = new RequestInfo(url, method, handler, timeout);\r\n requestInfo.successCodes = [200, 204];\r\n requestInfo.errorHandler = objectErrorHandler(location);\r\n return requestInfo;\r\n}\r\nfunction determineContentType_(metadata, blob) {\r\n return ((metadata && metadata['contentType']) ||\r\n (blob && blob.type()) ||\r\n 'application/octet-stream');\r\n}\r\nfunction metadataForUpload_(location, blob, metadata) {\r\n var metadataClone = Object.assign({}, metadata);\r\n metadataClone['fullPath'] = location.path;\r\n metadataClone['size'] = blob.size();\r\n if (!metadataClone['contentType']) {\r\n metadataClone['contentType'] = determineContentType_(null, blob);\r\n }\r\n return metadataClone;\r\n}\r\n/**\r\n * Prepare RequestInfo for uploads as Content-Type: multipart.\r\n */\r\nfunction multipartUpload(service, location, mappings, blob, metadata) {\r\n var urlPart = location.bucketOnlyServerUrl();\r\n var headers = {\r\n 'X-Goog-Upload-Protocol': 'multipart'\r\n };\r\n function genBoundary() {\r\n var str = '';\r\n for (var i = 0; i < 2; i++) {\r\n str = str + Math.random().toString().slice(2);\r\n }\r\n return str;\r\n }\r\n var boundary = genBoundary();\r\n headers['Content-Type'] = 'multipart/related; boundary=' + boundary;\r\n var metadata_ = metadataForUpload_(location, blob, metadata);\r\n var metadataString = toResourceString(metadata_, mappings);\r\n var preBlobPart = '--' +\r\n boundary +\r\n '\\r\\n' +\r\n 'Content-Type: application/json; charset=utf-8\\r\\n\\r\\n' +\r\n metadataString +\r\n '\\r\\n--' +\r\n boundary +\r\n '\\r\\n' +\r\n 'Content-Type: ' +\r\n metadata_['contentType'] +\r\n '\\r\\n\\r\\n';\r\n var postBlobPart = '\\r\\n--' + boundary + '--';\r\n var body = FbsBlob.getBlob(preBlobPart, blob, postBlobPart);\r\n if (body === null) {\r\n throw cannotSliceBlob();\r\n }\r\n var urlParams = { name: metadata_['fullPath'] };\r\n var url = makeUrl(urlPart, service.host);\r\n var method = 'POST';\r\n var timeout = service.maxUploadRetryTime;\r\n var requestInfo = new RequestInfo(url, method, metadataHandler(service, mappings), timeout);\r\n requestInfo.urlParams = urlParams;\r\n requestInfo.headers = headers;\r\n requestInfo.body = body.uploadData();\r\n requestInfo.errorHandler = sharedErrorHandler(location);\r\n return requestInfo;\r\n}\r\n/**\r\n * @param current The number of bytes that have been uploaded so far.\r\n * @param total The total number of bytes in the upload.\r\n * @param opt_finalized True if the server has finished the upload.\r\n * @param opt_metadata The upload metadata, should\r\n * only be passed if opt_finalized is true.\r\n */\r\nvar ResumableUploadStatus = /** @class */ (function () {\r\n function ResumableUploadStatus(current, total, finalized, metadata) {\r\n this.current = current;\r\n this.total = total;\r\n this.finalized = !!finalized;\r\n this.metadata = metadata || null;\r\n }\r\n return ResumableUploadStatus;\r\n}());\r\nfunction checkResumeHeader_(xhr, allowed) {\r\n var status = null;\r\n try {\r\n status = xhr.getResponseHeader('X-Goog-Upload-Status');\r\n }\r\n catch (e) {\r\n handlerCheck(false);\r\n }\r\n var allowedStatus = allowed || ['active'];\r\n handlerCheck(!!status && allowedStatus.indexOf(status) !== -1);\r\n return status;\r\n}\r\nfunction createResumableUpload(service, location, mappings, blob, metadata) {\r\n var urlPart = location.bucketOnlyServerUrl();\r\n var metadataForUpload = metadataForUpload_(location, blob, metadata);\r\n var urlParams = { name: metadataForUpload['fullPath'] };\r\n var url = makeUrl(urlPart, service.host);\r\n var method = 'POST';\r\n var headers = {\r\n 'X-Goog-Upload-Protocol': 'resumable',\r\n 'X-Goog-Upload-Command': 'start',\r\n 'X-Goog-Upload-Header-Content-Length': \"\" + blob.size(),\r\n 'X-Goog-Upload-Header-Content-Type': metadataForUpload['contentType'],\r\n 'Content-Type': 'application/json; charset=utf-8'\r\n };\r\n var body = toResourceString(metadataForUpload, mappings);\r\n var timeout = service.maxUploadRetryTime;\r\n function handler(xhr) {\r\n checkResumeHeader_(xhr);\r\n var url;\r\n try {\r\n url = xhr.getResponseHeader('X-Goog-Upload-URL');\r\n }\r\n catch (e) {\r\n handlerCheck(false);\r\n }\r\n handlerCheck(isString(url));\r\n return url;\r\n }\r\n var requestInfo = new RequestInfo(url, method, handler, timeout);\r\n requestInfo.urlParams = urlParams;\r\n requestInfo.headers = headers;\r\n requestInfo.body = body;\r\n requestInfo.errorHandler = sharedErrorHandler(location);\r\n return requestInfo;\r\n}\r\n/**\r\n * @param url From a call to fbs.requests.createResumableUpload.\r\n */\r\nfunction getResumableUploadStatus(service, location, url, blob) {\r\n var headers = { 'X-Goog-Upload-Command': 'query' };\r\n function handler(xhr) {\r\n var status = checkResumeHeader_(xhr, ['active', 'final']);\r\n var sizeString = null;\r\n try {\r\n sizeString = xhr.getResponseHeader('X-Goog-Upload-Size-Received');\r\n }\r\n catch (e) {\r\n handlerCheck(false);\r\n }\r\n if (!sizeString) {\r\n // null or empty string\r\n handlerCheck(false);\r\n }\r\n var size = Number(sizeString);\r\n handlerCheck(!isNaN(size));\r\n return new ResumableUploadStatus(size, blob.size(), status === 'final');\r\n }\r\n var method = 'POST';\r\n var timeout = service.maxUploadRetryTime;\r\n var requestInfo = new RequestInfo(url, method, handler, timeout);\r\n requestInfo.headers = headers;\r\n requestInfo.errorHandler = sharedErrorHandler(location);\r\n return requestInfo;\r\n}\r\n/**\r\n * Any uploads via the resumable upload API must transfer a number of bytes\r\n * that is a multiple of this number.\r\n */\r\nvar RESUMABLE_UPLOAD_CHUNK_SIZE = 256 * 1024;\r\n/**\r\n * @param url From a call to fbs.requests.createResumableUpload.\r\n * @param chunkSize Number of bytes to upload.\r\n * @param status The previous status.\r\n * If not passed or null, we start from the beginning.\r\n * @throws fbs.Error If the upload is already complete, the passed in status\r\n * has a final size inconsistent with the blob, or the blob cannot be sliced\r\n * for upload.\r\n */\r\nfunction continueResumableUpload(location, service, url, blob, chunkSize, mappings, status, progressCallback) {\r\n // TODO(andysoto): standardize on internal asserts\r\n // assert(!(opt_status && opt_status.finalized));\r\n var status_ = new ResumableUploadStatus(0, 0);\r\n if (status) {\r\n status_.current = status.current;\r\n status_.total = status.total;\r\n }\r\n else {\r\n status_.current = 0;\r\n status_.total = blob.size();\r\n }\r\n if (blob.size() !== status_.total) {\r\n throw serverFileWrongSize();\r\n }\r\n var bytesLeft = status_.total - status_.current;\r\n var bytesToUpload = bytesLeft;\r\n if (chunkSize > 0) {\r\n bytesToUpload = Math.min(bytesToUpload, chunkSize);\r\n }\r\n var startByte = status_.current;\r\n var endByte = startByte + bytesToUpload;\r\n var uploadCommand = bytesToUpload === bytesLeft ? 'upload, finalize' : 'upload';\r\n var headers = {\r\n 'X-Goog-Upload-Command': uploadCommand,\r\n 'X-Goog-Upload-Offset': \"\" + status_.current\r\n };\r\n var body = blob.slice(startByte, endByte);\r\n if (body === null) {\r\n throw cannotSliceBlob();\r\n }\r\n function handler(xhr, text) {\r\n // TODO(andysoto): Verify the MD5 of each uploaded range:\r\n // the 'x-range-md5' header comes back with status code 308 responses.\r\n // We'll only be able to bail out though, because you can't re-upload a\r\n // range that you previously uploaded.\r\n var uploadStatus = checkResumeHeader_(xhr, ['active', 'final']);\r\n var newCurrent = status_.current + bytesToUpload;\r\n var size = blob.size();\r\n var metadata;\r\n if (uploadStatus === 'final') {\r\n metadata = metadataHandler(service, mappings)(xhr, text);\r\n }\r\n else {\r\n metadata = null;\r\n }\r\n return new ResumableUploadStatus(newCurrent, size, uploadStatus === 'final', metadata);\r\n }\r\n var method = 'POST';\r\n var timeout = service.maxUploadRetryTime;\r\n var requestInfo = new RequestInfo(url, method, handler, timeout);\r\n requestInfo.headers = headers;\r\n requestInfo.body = body.uploadData();\r\n requestInfo.progressCallback = progressCallback || null;\r\n requestInfo.errorHandler = sharedErrorHandler(location);\r\n return requestInfo;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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 Observer = /** @class */ (function () {\r\n function Observer(nextOrObserver, error, complete) {\r\n var asFunctions = isFunction(nextOrObserver) || error != null || complete != null;\r\n if (asFunctions) {\r\n this.next = nextOrObserver;\r\n this.error = error;\r\n this.complete = complete;\r\n }\r\n else {\r\n var observer = nextOrObserver;\r\n this.next = observer.next;\r\n this.error = observer.error;\r\n this.complete = observer.complete;\r\n }\r\n }\r\n return Observer;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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 function that invokes f with its arguments asynchronously as a\r\n * microtask, i.e. as soon as possible after the current script returns back\r\n * into browser code.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\nfunction async(f) {\r\n return function () {\r\n var argsToForward = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n argsToForward[_i] = arguments[_i];\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n Promise.resolve().then(function () { return f.apply(void 0, argsToForward); });\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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 * Represents a blob being uploaded. Can be used to pause/resume/cancel the\r\n * upload and manage callbacks for various events.\r\n * @internal\r\n */\r\nvar UploadTask = /** @class */ (function () {\r\n /**\r\n * @param ref - The firebaseStorage.Reference object this task came\r\n * from, untyped to avoid cyclic dependencies.\r\n * @param blob - The blob to upload.\r\n */\r\n function UploadTask(ref, blob, metadata) {\r\n var _this = this;\r\n if (metadata === void 0) { metadata = null; }\r\n /**\r\n * Number of bytes transferred so far.\r\n */\r\n this._transferred = 0;\r\n this._needToFetchStatus = false;\r\n this._needToFetchMetadata = false;\r\n this._observers = [];\r\n this._error = undefined;\r\n this._uploadUrl = undefined;\r\n this._request = undefined;\r\n this._chunkMultiplier = 1;\r\n this._resolve = undefined;\r\n this._reject = undefined;\r\n this._ref = ref;\r\n this._blob = blob;\r\n this._metadata = metadata;\r\n this._mappings = getMappings();\r\n this._resumable = this._shouldDoResumable(this._blob);\r\n this._state = \"running\" /* RUNNING */;\r\n this._errorHandler = function (error) {\r\n _this._request = undefined;\r\n _this._chunkMultiplier = 1;\r\n if (error._codeEquals(\"canceled\" /* CANCELED */)) {\r\n _this._needToFetchStatus = true;\r\n _this.completeTransitions_();\r\n }\r\n else {\r\n _this._error = error;\r\n _this._transition(\"error\" /* ERROR */);\r\n }\r\n };\r\n this._metadataErrorHandler = function (error) {\r\n _this._request = undefined;\r\n if (error._codeEquals(\"canceled\" /* CANCELED */)) {\r\n _this.completeTransitions_();\r\n }\r\n else {\r\n _this._error = error;\r\n _this._transition(\"error\" /* ERROR */);\r\n }\r\n };\r\n this._promise = new Promise(function (resolve, reject) {\r\n _this._resolve = resolve;\r\n _this._reject = reject;\r\n _this._start();\r\n });\r\n // Prevent uncaught rejections on the internal promise from bubbling out\r\n // to the top level with a dummy handler.\r\n this._promise.then(null, function () { });\r\n }\r\n UploadTask.prototype._makeProgressCallback = function () {\r\n var _this = this;\r\n var sizeBefore = this._transferred;\r\n return function (loaded) { return _this._updateProgress(sizeBefore + loaded); };\r\n };\r\n UploadTask.prototype._shouldDoResumable = function (blob) {\r\n return blob.size() > 256 * 1024;\r\n };\r\n UploadTask.prototype._start = function () {\r\n if (this._state !== \"running\" /* RUNNING */) {\r\n // This can happen if someone pauses us in a resume callback, for example.\r\n return;\r\n }\r\n if (this._request !== undefined) {\r\n return;\r\n }\r\n if (this._resumable) {\r\n if (this._uploadUrl === undefined) {\r\n this._createResumable();\r\n }\r\n else {\r\n if (this._needToFetchStatus) {\r\n this._fetchStatus();\r\n }\r\n else {\r\n if (this._needToFetchMetadata) {\r\n // Happens if we miss the metadata on upload completion.\r\n this._fetchMetadata();\r\n }\r\n else {\r\n this._continueUpload();\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n this._oneShotUpload();\r\n }\r\n };\r\n UploadTask.prototype._resolveToken = function (callback) {\r\n var _this = this;\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n Promise.all([\r\n this._ref.storage._getAuthToken(),\r\n this._ref.storage._getAppCheckToken()\r\n ]).then(function (_a) {\r\n var authToken = _a[0], appCheckToken = _a[1];\r\n switch (_this._state) {\r\n case \"running\" /* RUNNING */:\r\n callback(authToken, appCheckToken);\r\n break;\r\n case \"canceling\" /* CANCELING */:\r\n _this._transition(\"canceled\" /* CANCELED */);\r\n break;\r\n case \"pausing\" /* PAUSING */:\r\n _this._transition(\"paused\" /* PAUSED */);\r\n break;\r\n }\r\n });\r\n };\r\n // TODO(andysoto): assert false\r\n UploadTask.prototype._createResumable = function () {\r\n var _this = this;\r\n this._resolveToken(function (authToken, appCheckToken) {\r\n var requestInfo = createResumableUpload(_this._ref.storage, _this._ref._location, _this._mappings, _this._blob, _this._metadata);\r\n var createRequest = _this._ref.storage._makeRequest(requestInfo, authToken, appCheckToken);\r\n _this._request = createRequest;\r\n createRequest.getPromise().then(function (url) {\r\n _this._request = undefined;\r\n _this._uploadUrl = url;\r\n _this._needToFetchStatus = false;\r\n _this.completeTransitions_();\r\n }, _this._errorHandler);\r\n });\r\n };\r\n UploadTask.prototype._fetchStatus = function () {\r\n var _this = this;\r\n // TODO(andysoto): assert(this.uploadUrl_ !== null);\r\n var url = this._uploadUrl;\r\n this._resolveToken(function (authToken, appCheckToken) {\r\n var requestInfo = getResumableUploadStatus(_this._ref.storage, _this._ref._location, url, _this._blob);\r\n var statusRequest = _this._ref.storage._makeRequest(requestInfo, authToken, appCheckToken);\r\n _this._request = statusRequest;\r\n statusRequest.getPromise().then(function (status) {\r\n status = status;\r\n _this._request = undefined;\r\n _this._updateProgress(status.current);\r\n _this._needToFetchStatus = false;\r\n if (status.finalized) {\r\n _this._needToFetchMetadata = true;\r\n }\r\n _this.completeTransitions_();\r\n }, _this._errorHandler);\r\n });\r\n };\r\n UploadTask.prototype._continueUpload = function () {\r\n var _this = this;\r\n var chunkSize = RESUMABLE_UPLOAD_CHUNK_SIZE * this._chunkMultiplier;\r\n var status = new ResumableUploadStatus(this._transferred, this._blob.size());\r\n // TODO(andysoto): assert(this.uploadUrl_ !== null);\r\n var url = this._uploadUrl;\r\n this._resolveToken(function (authToken, appCheckToken) {\r\n var requestInfo;\r\n try {\r\n requestInfo = continueResumableUpload(_this._ref._location, _this._ref.storage, url, _this._blob, chunkSize, _this._mappings, status, _this._makeProgressCallback());\r\n }\r\n catch (e) {\r\n _this._error = e;\r\n _this._transition(\"error\" /* ERROR */);\r\n return;\r\n }\r\n var uploadRequest = _this._ref.storage._makeRequest(requestInfo, authToken, appCheckToken);\r\n _this._request = uploadRequest;\r\n uploadRequest.getPromise().then(function (newStatus) {\r\n _this._increaseMultiplier();\r\n _this._request = undefined;\r\n _this._updateProgress(newStatus.current);\r\n if (newStatus.finalized) {\r\n _this._metadata = newStatus.metadata;\r\n _this._transition(\"success\" /* SUCCESS */);\r\n }\r\n else {\r\n _this.completeTransitions_();\r\n }\r\n }, _this._errorHandler);\r\n });\r\n };\r\n UploadTask.prototype._increaseMultiplier = function () {\r\n var currentSize = RESUMABLE_UPLOAD_CHUNK_SIZE * this._chunkMultiplier;\r\n // Max chunk size is 32M.\r\n if (currentSize < 32 * 1024 * 1024) {\r\n this._chunkMultiplier *= 2;\r\n }\r\n };\r\n UploadTask.prototype._fetchMetadata = function () {\r\n var _this = this;\r\n this._resolveToken(function (authToken, appCheckToken) {\r\n var requestInfo = getMetadata$2(_this._ref.storage, _this._ref._location, _this._mappings);\r\n var metadataRequest = _this._ref.storage._makeRequest(requestInfo, authToken, appCheckToken);\r\n _this._request = metadataRequest;\r\n metadataRequest.getPromise().then(function (metadata) {\r\n _this._request = undefined;\r\n _this._metadata = metadata;\r\n _this._transition(\"success\" /* SUCCESS */);\r\n }, _this._metadataErrorHandler);\r\n });\r\n };\r\n UploadTask.prototype._oneShotUpload = function () {\r\n var _this = this;\r\n this._resolveToken(function (authToken, appCheckToken) {\r\n var requestInfo = multipartUpload(_this._ref.storage, _this._ref._location, _this._mappings, _this._blob, _this._metadata);\r\n var multipartRequest = _this._ref.storage._makeRequest(requestInfo, authToken, appCheckToken);\r\n _this._request = multipartRequest;\r\n multipartRequest.getPromise().then(function (metadata) {\r\n _this._request = undefined;\r\n _this._metadata = metadata;\r\n _this._updateProgress(_this._blob.size());\r\n _this._transition(\"success\" /* SUCCESS */);\r\n }, _this._errorHandler);\r\n });\r\n };\r\n UploadTask.prototype._updateProgress = function (transferred) {\r\n var old = this._transferred;\r\n this._transferred = transferred;\r\n // A progress update can make the \"transferred\" value smaller (e.g. a\r\n // partial upload not completed by server, after which the \"transferred\"\r\n // value may reset to the value at the beginning of the request).\r\n if (this._transferred !== old) {\r\n this._notifyObservers();\r\n }\r\n };\r\n UploadTask.prototype._transition = function (state) {\r\n if (this._state === state) {\r\n return;\r\n }\r\n switch (state) {\r\n case \"canceling\" /* CANCELING */:\r\n // TODO(andysoto):\r\n // assert(this.state_ === InternalTaskState.RUNNING ||\r\n // this.state_ === InternalTaskState.PAUSING);\r\n this._state = state;\r\n if (this._request !== undefined) {\r\n this._request.cancel();\r\n }\r\n break;\r\n case \"pausing\" /* PAUSING */:\r\n // TODO(andysoto):\r\n // assert(this.state_ === InternalTaskState.RUNNING);\r\n this._state = state;\r\n if (this._request !== undefined) {\r\n this._request.cancel();\r\n }\r\n break;\r\n case \"running\" /* RUNNING */:\r\n // TODO(andysoto):\r\n // assert(this.state_ === InternalTaskState.PAUSED ||\r\n // this.state_ === InternalTaskState.PAUSING);\r\n var wasPaused = this._state === \"paused\" /* PAUSED */;\r\n this._state = state;\r\n if (wasPaused) {\r\n this._notifyObservers();\r\n this._start();\r\n }\r\n break;\r\n case \"paused\" /* PAUSED */:\r\n // TODO(andysoto):\r\n // assert(this.state_ === InternalTaskState.PAUSING);\r\n this._state = state;\r\n this._notifyObservers();\r\n break;\r\n case \"canceled\" /* CANCELED */:\r\n // TODO(andysoto):\r\n // assert(this.state_ === InternalTaskState.PAUSED ||\r\n // this.state_ === InternalTaskState.CANCELING);\r\n this._error = canceled();\r\n this._state = state;\r\n this._notifyObservers();\r\n break;\r\n case \"error\" /* ERROR */:\r\n // TODO(andysoto):\r\n // assert(this.state_ === InternalTaskState.RUNNING ||\r\n // this.state_ === InternalTaskState.PAUSING ||\r\n // this.state_ === InternalTaskState.CANCELING);\r\n this._state = state;\r\n this._notifyObservers();\r\n break;\r\n case \"success\" /* SUCCESS */:\r\n // TODO(andysoto):\r\n // assert(this.state_ === InternalTaskState.RUNNING ||\r\n // this.state_ === InternalTaskState.PAUSING ||\r\n // this.state_ === InternalTaskState.CANCELING);\r\n this._state = state;\r\n this._notifyObservers();\r\n break;\r\n }\r\n };\r\n UploadTask.prototype.completeTransitions_ = function () {\r\n switch (this._state) {\r\n case \"pausing\" /* PAUSING */:\r\n this._transition(\"paused\" /* PAUSED */);\r\n break;\r\n case \"canceling\" /* CANCELING */:\r\n this._transition(\"canceled\" /* CANCELED */);\r\n break;\r\n case \"running\" /* RUNNING */:\r\n this._start();\r\n break;\r\n }\r\n };\r\n Object.defineProperty(UploadTask.prototype, \"snapshot\", {\r\n /**\r\n * A snapshot of the current task state.\r\n */\r\n get: function () {\r\n var externalState = taskStateFromInternalTaskState(this._state);\r\n return {\r\n bytesTransferred: this._transferred,\r\n totalBytes: this._blob.size(),\r\n state: externalState,\r\n metadata: this._metadata,\r\n task: this,\r\n ref: this._ref\r\n };\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * Adds a callback for an event.\r\n * @param type - The type of event to listen for.\r\n * @param nextOrObserver -\r\n * The `next` function, which gets called for each item in\r\n * the event stream, or an observer object with some or all of these three\r\n * properties (`next`, `error`, `complete`).\r\n * @param error - A function that gets called with a `FirebaseStorageError`\r\n * if the event stream ends due to an error.\r\n * @param completed - A function that gets called if the\r\n * event stream ends normally.\r\n * @returns\r\n * If only the event argument is passed, returns a function you can use to\r\n * add callbacks (see the examples above). If more than just the event\r\n * argument is passed, returns a function you can call to unregister the\r\n * callbacks.\r\n */\r\n UploadTask.prototype.on = function (type, nextOrObserver, error, completed) {\r\n var _this = this;\r\n var observer = new Observer(nextOrObserver, error, completed);\r\n this._addObserver(observer);\r\n return function () {\r\n _this._removeObserver(observer);\r\n };\r\n };\r\n /**\r\n * This object behaves like a Promise, and resolves with its snapshot data\r\n * when the upload completes.\r\n * @param onFulfilled - The fulfillment callback. Promise chaining works as normal.\r\n * @param onRejected - The rejection callback.\r\n */\r\n UploadTask.prototype.then = function (onFulfilled, onRejected) {\r\n // These casts are needed so that TypeScript can infer the types of the\r\n // resulting Promise.\r\n return this._promise.then(onFulfilled, onRejected);\r\n };\r\n /**\r\n * Equivalent to calling `then(null, onRejected)`.\r\n */\r\n UploadTask.prototype.catch = function (onRejected) {\r\n return this.then(null, onRejected);\r\n };\r\n /**\r\n * Adds the given observer.\r\n */\r\n UploadTask.prototype._addObserver = function (observer) {\r\n this._observers.push(observer);\r\n this._notifyObserver(observer);\r\n };\r\n /**\r\n * Removes the given observer.\r\n */\r\n UploadTask.prototype._removeObserver = function (observer) {\r\n var i = this._observers.indexOf(observer);\r\n if (i !== -1) {\r\n this._observers.splice(i, 1);\r\n }\r\n };\r\n UploadTask.prototype._notifyObservers = function () {\r\n var _this = this;\r\n this._finishPromise();\r\n var observers = this._observers.slice();\r\n observers.forEach(function (observer) {\r\n _this._notifyObserver(observer);\r\n });\r\n };\r\n UploadTask.prototype._finishPromise = function () {\r\n if (this._resolve !== undefined) {\r\n var triggered = true;\r\n switch (taskStateFromInternalTaskState(this._state)) {\r\n case TaskState.SUCCESS:\r\n async(this._resolve.bind(null, this.snapshot))();\r\n break;\r\n case TaskState.CANCELED:\r\n case TaskState.ERROR:\r\n var toCall = this._reject;\r\n async(toCall.bind(null, this._error))();\r\n break;\r\n default:\r\n triggered = false;\r\n break;\r\n }\r\n if (triggered) {\r\n this._resolve = undefined;\r\n this._reject = undefined;\r\n }\r\n }\r\n };\r\n UploadTask.prototype._notifyObserver = function (observer) {\r\n var externalState = taskStateFromInternalTaskState(this._state);\r\n switch (externalState) {\r\n case TaskState.RUNNING:\r\n case TaskState.PAUSED:\r\n if (observer.next) {\r\n async(observer.next.bind(observer, this.snapshot))();\r\n }\r\n break;\r\n case TaskState.SUCCESS:\r\n if (observer.complete) {\r\n async(observer.complete.bind(observer))();\r\n }\r\n break;\r\n case TaskState.CANCELED:\r\n case TaskState.ERROR:\r\n if (observer.error) {\r\n async(observer.error.bind(observer, this._error))();\r\n }\r\n break;\r\n default:\r\n // TODO(andysoto): assert(false);\r\n if (observer.error) {\r\n async(observer.error.bind(observer, this._error))();\r\n }\r\n }\r\n };\r\n /**\r\n * Resumes a paused task. Has no effect on a currently running or failed task.\r\n * @returns True if the operation took effect, false if ignored.\r\n */\r\n UploadTask.prototype.resume = function () {\r\n var valid = this._state === \"paused\" /* PAUSED */ ||\r\n this._state === \"pausing\" /* PAUSING */;\r\n if (valid) {\r\n this._transition(\"running\" /* RUNNING */);\r\n }\r\n return valid;\r\n };\r\n /**\r\n * Pauses a currently running task. Has no effect on a paused or failed task.\r\n * @returns True if the operation took effect, false if ignored.\r\n */\r\n UploadTask.prototype.pause = function () {\r\n var valid = this._state === \"running\" /* RUNNING */;\r\n if (valid) {\r\n this._transition(\"pausing\" /* PAUSING */);\r\n }\r\n return valid;\r\n };\r\n /**\r\n * Cancels a currently running or paused task. Has no effect on a complete or\r\n * failed task.\r\n * @returns True if the operation took effect, false if ignored.\r\n */\r\n UploadTask.prototype.cancel = function () {\r\n var valid = this._state === \"running\" /* RUNNING */ ||\r\n this._state === \"pausing\" /* PAUSING */;\r\n if (valid) {\r\n this._transition(\"canceling\" /* CANCELING */);\r\n }\r\n return valid;\r\n };\r\n return UploadTask;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 * Provides methods to interact with a bucket in the Firebase Storage service.\r\n * @internal\r\n * @param _location - An fbs.location, or the URL at\r\n * which to base this object, in one of the following forms:\r\n * gs:///\r\n * http[s]://firebasestorage.googleapis.com/\r\n * /b//o/\r\n * Any query or fragment strings will be ignored in the http[s]\r\n * format. If no value is passed, the storage object will use a URL based on\r\n * the project ID of the base firebase.App instance.\r\n */\r\nvar Reference = /** @class */ (function () {\r\n function Reference(_service, location) {\r\n this._service = _service;\r\n if (location instanceof Location) {\r\n this._location = location;\r\n }\r\n else {\r\n this._location = Location.makeFromUrl(location, _service.host);\r\n }\r\n }\r\n /**\r\n * Returns the URL for the bucket and path this object references,\r\n * in the form gs:///\r\n * @override\r\n */\r\n Reference.prototype.toString = function () {\r\n return 'gs://' + this._location.bucket + '/' + this._location.path;\r\n };\r\n Reference.prototype._newRef = function (service, location) {\r\n return new Reference(service, location);\r\n };\r\n Object.defineProperty(Reference.prototype, \"root\", {\r\n /**\r\n * A reference to the root of this object's bucket.\r\n */\r\n get: function () {\r\n var location = new Location(this._location.bucket, '');\r\n return this._newRef(this._service, location);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Reference.prototype, \"bucket\", {\r\n /**\r\n * The name of the bucket containing this reference's object.\r\n */\r\n get: function () {\r\n return this._location.bucket;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Reference.prototype, \"fullPath\", {\r\n /**\r\n * The full path of this object.\r\n */\r\n get: function () {\r\n return this._location.path;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Reference.prototype, \"name\", {\r\n /**\r\n * The short name of this object, which is the last component of the full path.\r\n * For example, if fullPath is 'full/path/image.png', name is 'image.png'.\r\n */\r\n get: function () {\r\n return lastComponent(this._location.path);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Reference.prototype, \"storage\", {\r\n /**\r\n * The `StorageService` instance this `StorageReference` is associated with.\r\n */\r\n get: function () {\r\n return this._service;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Reference.prototype, \"parent\", {\r\n /**\r\n * A `StorageReference` pointing to the parent location of this `StorageReference`, or null if\r\n * this reference is the root.\r\n */\r\n get: function () {\r\n var newPath = parent(this._location.path);\r\n if (newPath === null) {\r\n return null;\r\n }\r\n var location = new Location(this._location.bucket, newPath);\r\n return new Reference(this._service, location);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * Utility function to throw an error in methods that do not accept a root reference.\r\n */\r\n Reference.prototype._throwIfRoot = function (name) {\r\n if (this._location.path === '') {\r\n throw invalidRootOperation(name);\r\n }\r\n };\r\n return Reference;\r\n}());\r\n/**\r\n * Uploads data to this object's location.\r\n * The upload can be paused and resumed, and exposes progress updates.\r\n * @public\r\n * @param ref - StorageReference where data should be uploaded.\r\n * @param data - The data to upload.\r\n * @param metadata - Metadata for the newly uploaded data.\r\n * @returns An UploadTask\r\n */\r\nfunction uploadBytesResumable$1(ref, data, metadata) {\r\n ref._throwIfRoot('uploadBytesResumable');\r\n return new UploadTask(ref, new FbsBlob(data), metadata);\r\n}\r\n/**\r\n * List all items (files) and prefixes (folders) under this storage reference.\r\n *\r\n * This is a helper method for calling list() repeatedly until there are\r\n * no more results. The default pagination size is 1000.\r\n *\r\n * Note: The results may not be consistent if objects are changed while this\r\n * operation is running.\r\n *\r\n * Warning: listAll may potentially consume too many resources if there are\r\n * too many results.\r\n * @public\r\n * @param ref - StorageReference to get list from.\r\n *\r\n * @returns A Promise that resolves with all the items and prefixes under\r\n * the current storage reference. `prefixes` contains references to\r\n * sub-directories and `items` contains references to objects in this\r\n * folder. `nextPageToken` is never returned.\r\n */\r\nfunction listAll$1(ref) {\r\n var accumulator = {\r\n prefixes: [],\r\n items: []\r\n };\r\n return listAllHelper(ref, accumulator).then(function () { return accumulator; });\r\n}\r\n/**\r\n * Separated from listAll because async functions can't use \"arguments\".\r\n * @param ref\r\n * @param accumulator\r\n * @param pageToken\r\n */\r\nfunction listAllHelper(ref, accumulator, pageToken) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var opt, nextPage;\r\n var _a, _b;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n opt = {\r\n // maxResults is 1000 by default.\r\n pageToken: pageToken\r\n };\r\n return [4 /*yield*/, list$1(ref, opt)];\r\n case 1:\r\n nextPage = _c.sent();\r\n (_a = accumulator.prefixes).push.apply(_a, nextPage.prefixes);\r\n (_b = accumulator.items).push.apply(_b, nextPage.items);\r\n if (!(nextPage.nextPageToken != null)) return [3 /*break*/, 3];\r\n return [4 /*yield*/, listAllHelper(ref, accumulator, nextPage.nextPageToken)];\r\n case 2:\r\n _c.sent();\r\n _c.label = 3;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * List items (files) and prefixes (folders) under this storage reference.\r\n *\r\n * List API is only available for Firebase Rules Version 2.\r\n *\r\n * GCS is a key-blob store. Firebase Storage imposes the semantic of '/'\r\n * delimited folder structure.\r\n * Refer to GCS's List API if you want to learn more.\r\n *\r\n * To adhere to Firebase Rules's Semantics, Firebase Storage does not\r\n * support objects whose paths end with \"/\" or contain two consecutive\r\n * \"/\"s. Firebase Storage List API will filter these unsupported objects.\r\n * list() may fail if there are too many unsupported objects in the bucket.\r\n * @public\r\n *\r\n * @param ref - StorageReference to get list from.\r\n * @param options - See ListOptions for details.\r\n * @returns A Promise that resolves with the items and prefixes.\r\n * `prefixes` contains references to sub-folders and `items`\r\n * contains references to objects in this folder. `nextPageToken`\r\n * can be used to get the rest of the results.\r\n */\r\nfunction list$1(ref, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var op, requestInfo;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (options != null) {\r\n if (typeof options.maxResults === 'number') {\r\n validateNumber('options.maxResults', \r\n /* minValue= */ 1, \r\n /* maxValue= */ 1000, options.maxResults);\r\n }\r\n }\r\n op = options || {};\r\n requestInfo = list$2(ref.storage, ref._location, \r\n /*delimiter= */ '/', op.pageToken, op.maxResults);\r\n return [4 /*yield*/, ref.storage.makeRequestWithTokens(requestInfo)];\r\n case 1: return [2 /*return*/, (_a.sent()).getPromise()];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * A promise that resolves with the metadata for this object. If this\r\n * object doesn't exist or metadata cannot be retreived, the promise is\r\n * rejected.\r\n * @public\r\n * @param ref - StorageReference to get metadata from.\r\n */\r\nfunction getMetadata$1(ref) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var requestInfo;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n ref._throwIfRoot('getMetadata');\r\n requestInfo = getMetadata$2(ref.storage, ref._location, getMappings());\r\n return [4 /*yield*/, ref.storage.makeRequestWithTokens(requestInfo)];\r\n case 1: return [2 /*return*/, (_a.sent()).getPromise()];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Updates the metadata for this object.\r\n * @public\r\n * @param ref - StorageReference to update metadata for.\r\n * @param metadata - The new metadata for the object.\r\n * Only values that have been explicitly set will be changed. Explicitly\r\n * setting a value to null will remove the metadata.\r\n * @returns A promise that resolves\r\n * with the new metadata for this object.\r\n * See `firebaseStorage.Reference.prototype.getMetadata`\r\n */\r\nfunction updateMetadata$1(ref, metadata) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var requestInfo;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n ref._throwIfRoot('updateMetadata');\r\n requestInfo = updateMetadata$2(ref.storage, ref._location, metadata, getMappings());\r\n return [4 /*yield*/, ref.storage.makeRequestWithTokens(requestInfo)];\r\n case 1: return [2 /*return*/, (_a.sent()).getPromise()];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Returns the download URL for the given Reference.\r\n * @public\r\n * @returns A promise that resolves with the download\r\n * URL for this object.\r\n */\r\nfunction getDownloadURL$1(ref) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var requestInfo;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n ref._throwIfRoot('getDownloadURL');\r\n requestInfo = getDownloadUrl(ref.storage, ref._location, getMappings());\r\n return [4 /*yield*/, ref.storage.makeRequestWithTokens(requestInfo)];\r\n case 1: return [2 /*return*/, (_a.sent())\r\n .getPromise()\r\n .then(function (url) {\r\n if (url === null) {\r\n throw noDownloadURL();\r\n }\r\n return url;\r\n })];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Deletes the object at this location.\r\n * @public\r\n * @param ref - StorageReference for object to delete.\r\n * @returns A promise that resolves if the deletion succeeds.\r\n */\r\nfunction deleteObject$1(ref) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var requestInfo;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n ref._throwIfRoot('deleteObject');\r\n requestInfo = deleteObject$2(ref.storage, ref._location);\r\n return [4 /*yield*/, ref.storage.makeRequestWithTokens(requestInfo)];\r\n case 1: return [2 /*return*/, (_a.sent()).getPromise()];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Returns reference for object obtained by appending `childPath` to `ref`.\r\n *\r\n * @param ref - StorageReference to get child of.\r\n * @param childPath - Child path from provided ref.\r\n * @returns A reference to the object obtained by\r\n * appending childPath, removing any duplicate, beginning, or trailing\r\n * slashes.\r\n *\r\n */\r\nfunction _getChild$1(ref, childPath) {\r\n var newPath = child(ref._location.path, childPath);\r\n var location = new Location(ref._location.bucket, newPath);\r\n return new Reference(ref.storage, location);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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\nfunction isUrl(path) {\r\n return /^[A-Za-z]+:\\/\\//.test(path);\r\n}\r\n/**\r\n * Returns a firebaseStorage.Reference for the given url.\r\n */\r\nfunction refFromURL(service, url) {\r\n return new Reference(service, url);\r\n}\r\n/**\r\n * Returns a firebaseStorage.Reference for the given path in the default\r\n * bucket.\r\n */\r\nfunction refFromPath(ref, path) {\r\n if (ref instanceof FirebaseStorageImpl) {\r\n var service = ref;\r\n if (service._bucket == null) {\r\n throw noDefaultBucket();\r\n }\r\n var reference = new Reference(service, service._bucket);\r\n if (path != null) {\r\n return refFromPath(reference, path);\r\n }\r\n else {\r\n return reference;\r\n }\r\n }\r\n else {\r\n // ref is a Reference\r\n if (path !== undefined) {\r\n return _getChild$1(ref, path);\r\n }\r\n else {\r\n return ref;\r\n }\r\n }\r\n}\r\nfunction ref$1(serviceOrRef, pathOrUrl) {\r\n if (pathOrUrl && isUrl(pathOrUrl)) {\r\n if (serviceOrRef instanceof FirebaseStorageImpl) {\r\n return refFromURL(serviceOrRef, pathOrUrl);\r\n }\r\n else {\r\n throw invalidArgument('To use ref(service, url), the first argument must be a Storage instance.');\r\n }\r\n }\r\n else {\r\n return refFromPath(serviceOrRef, pathOrUrl);\r\n }\r\n}\r\nfunction extractBucket(host, config) {\r\n var bucketString = config === null || config === void 0 ? void 0 : config[CONFIG_STORAGE_BUCKET_KEY];\r\n if (bucketString == null) {\r\n return null;\r\n }\r\n return Location.makeFromBucketSpec(bucketString, host);\r\n}\r\nfunction connectStorageEmulator$1(storage, host, port, options) {\r\n if (options === void 0) { options = {}; }\r\n storage.host = \"http://\" + host + \":\" + port;\r\n var mockUserToken = options.mockUserToken;\r\n if (mockUserToken) {\r\n storage._overrideAuthToken =\r\n typeof mockUserToken === 'string'\r\n ? mockUserToken\r\n : createMockUserToken(mockUserToken, storage.app.options.projectId);\r\n }\r\n}\r\n/**\r\n * A service that provides Firebase Storage Reference instances.\r\n * @public\r\n * @param opt_url - gs:// url to a custom Storage Bucket\r\n */\r\nvar FirebaseStorageImpl = /** @class */ (function () {\r\n function FirebaseStorageImpl(\r\n /**\r\n * FirebaseApp associated with this StorageService instance.\r\n */\r\n app, _authProvider, \r\n /**\r\n * @internal\r\n */\r\n _appCheckProvider, \r\n /**\r\n * @internal\r\n */\r\n _pool, _url, _firebaseVersion) {\r\n this.app = app;\r\n this._authProvider = _authProvider;\r\n this._appCheckProvider = _appCheckProvider;\r\n this._pool = _pool;\r\n this._url = _url;\r\n this._firebaseVersion = _firebaseVersion;\r\n this._bucket = null;\r\n /**\r\n * This string can be in the formats:\r\n * - host\r\n * - host:port\r\n * - protocol://host:port\r\n */\r\n this._host = DEFAULT_HOST;\r\n this._appId = null;\r\n this._deleted = false;\r\n this._maxOperationRetryTime = DEFAULT_MAX_OPERATION_RETRY_TIME;\r\n this._maxUploadRetryTime = DEFAULT_MAX_UPLOAD_RETRY_TIME;\r\n this._requests = new Set();\r\n if (_url != null) {\r\n this._bucket = Location.makeFromBucketSpec(_url, this._host);\r\n }\r\n else {\r\n this._bucket = extractBucket(this._host, this.app.options);\r\n }\r\n }\r\n Object.defineProperty(FirebaseStorageImpl.prototype, \"host\", {\r\n get: function () {\r\n return this._host;\r\n },\r\n /**\r\n * Set host string for this service.\r\n * @param host - host string in the form of host, host:port,\r\n * or protocol://host:port\r\n */\r\n set: function (host) {\r\n this._host = host;\r\n if (this._url != null) {\r\n this._bucket = Location.makeFromBucketSpec(this._url, host);\r\n }\r\n else {\r\n this._bucket = extractBucket(host, this.app.options);\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(FirebaseStorageImpl.prototype, \"maxUploadRetryTime\", {\r\n /**\r\n * The maximum time to retry uploads in milliseconds.\r\n */\r\n get: function () {\r\n return this._maxUploadRetryTime;\r\n },\r\n set: function (time) {\r\n validateNumber('time', \r\n /* minValue=*/ 0, \r\n /* maxValue= */ Number.POSITIVE_INFINITY, time);\r\n this._maxUploadRetryTime = time;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(FirebaseStorageImpl.prototype, \"maxOperationRetryTime\", {\r\n /**\r\n * The maximum time to retry operations other than uploads or downloads in\r\n * milliseconds.\r\n */\r\n get: function () {\r\n return this._maxOperationRetryTime;\r\n },\r\n set: function (time) {\r\n validateNumber('time', \r\n /* minValue=*/ 0, \r\n /* maxValue= */ Number.POSITIVE_INFINITY, time);\r\n this._maxOperationRetryTime = time;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n FirebaseStorageImpl.prototype._getAuthToken = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var auth, tokenData;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (this._overrideAuthToken) {\r\n return [2 /*return*/, this._overrideAuthToken];\r\n }\r\n auth = this._authProvider.getImmediate({ optional: true });\r\n if (!auth) return [3 /*break*/, 2];\r\n return [4 /*yield*/, auth.getToken()];\r\n case 1:\r\n tokenData = _a.sent();\r\n if (tokenData !== null) {\r\n return [2 /*return*/, tokenData.accessToken];\r\n }\r\n _a.label = 2;\r\n case 2: return [2 /*return*/, null];\r\n }\r\n });\r\n });\r\n };\r\n FirebaseStorageImpl.prototype._getAppCheckToken = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var appCheck, result;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n appCheck = this._appCheckProvider.getImmediate({ optional: true });\r\n if (!appCheck) return [3 /*break*/, 2];\r\n return [4 /*yield*/, appCheck.getToken()];\r\n case 1:\r\n result = _a.sent();\r\n // TODO: What do we want to do if there is an error getting the token?\r\n // Context: appCheck.getToken() will never throw even if an error happened. In the error case, a dummy token will be\r\n // returned along with an error field describing the error. In general, we shouldn't care about the error condition and just use\r\n // the token (actual or dummy) to send requests.\r\n return [2 /*return*/, result.token];\r\n case 2: return [2 /*return*/, null];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Stop running requests and prevent more from being created.\r\n */\r\n FirebaseStorageImpl.prototype._delete = function () {\r\n if (!this._deleted) {\r\n this._deleted = true;\r\n this._requests.forEach(function (request) { return request.cancel(); });\r\n this._requests.clear();\r\n }\r\n return Promise.resolve();\r\n };\r\n /**\r\n * Returns a new firebaseStorage.Reference object referencing this StorageService\r\n * at the given Location.\r\n */\r\n FirebaseStorageImpl.prototype._makeStorageReference = function (loc) {\r\n return new Reference(this, loc);\r\n };\r\n /**\r\n * @param requestInfo - HTTP RequestInfo object\r\n * @param authToken - Firebase auth token\r\n */\r\n FirebaseStorageImpl.prototype._makeRequest = function (requestInfo, authToken, appCheckToken) {\r\n var _this = this;\r\n if (!this._deleted) {\r\n var request_1 = makeRequest(requestInfo, this._appId, authToken, appCheckToken, this._pool, this._firebaseVersion);\r\n this._requests.add(request_1);\r\n // Request removes itself from set when complete.\r\n request_1.getPromise().then(function () { return _this._requests.delete(request_1); }, function () { return _this._requests.delete(request_1); });\r\n return request_1;\r\n }\r\n else {\r\n return new FailRequest(appDeleted());\r\n }\r\n };\r\n FirebaseStorageImpl.prototype.makeRequestWithTokens = function (requestInfo) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a, authToken, appCheckToken;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, Promise.all([\r\n this._getAuthToken(),\r\n this._getAppCheckToken()\r\n ])];\r\n case 1:\r\n _a = _b.sent(), authToken = _a[0], appCheckToken = _a[1];\r\n return [2 /*return*/, this._makeRequest(requestInfo, authToken, appCheckToken)];\r\n }\r\n });\r\n });\r\n };\r\n return FirebaseStorageImpl;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\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 * Uploads data to this object's location.\r\n * The upload can be paused and resumed, and exposes progress updates.\r\n * @public\r\n * @param ref - StorageReference where data should be uploaded.\r\n * @param data - The data to upload.\r\n * @param metadata - Metadata for the data to upload.\r\n * @returns An UploadTask\r\n */\r\nfunction uploadBytesResumable(ref, data, metadata) {\r\n ref = getModularInstance(ref);\r\n return uploadBytesResumable$1(ref, data, metadata);\r\n}\r\n/**\r\n * A promise that resolves with the metadata for this object. If this\r\n * object doesn't exist or metadata cannot be retreived, the promise is\r\n * rejected.\r\n * @public\r\n * @param ref - StorageReference to get metadata from.\r\n */\r\nfunction getMetadata(ref) {\r\n ref = getModularInstance(ref);\r\n return getMetadata$1(ref);\r\n}\r\n/**\r\n * Updates the metadata for this object.\r\n * @public\r\n * @param ref - StorageReference to update metadata for.\r\n * @param metadata - The new metadata for the object.\r\n * Only values that have been explicitly set will be changed. Explicitly\r\n * setting a value to null will remove the metadata.\r\n * @returns A promise that resolves with the new metadata for this object.\r\n */\r\nfunction updateMetadata(ref, metadata) {\r\n ref = getModularInstance(ref);\r\n return updateMetadata$1(ref, metadata);\r\n}\r\n/**\r\n * List items (files) and prefixes (folders) under this storage reference.\r\n *\r\n * List API is only available for Firebase Rules Version 2.\r\n *\r\n * GCS is a key-blob store. Firebase Storage imposes the semantic of '/'\r\n * delimited folder structure.\r\n * Refer to GCS's List API if you want to learn more.\r\n *\r\n * To adhere to Firebase Rules's Semantics, Firebase Storage does not\r\n * support objects whose paths end with \"/\" or contain two consecutive\r\n * \"/\"s. Firebase Storage List API will filter these unsupported objects.\r\n * list() may fail if there are too many unsupported objects in the bucket.\r\n * @public\r\n *\r\n * @param ref - StorageReference to get list from.\r\n * @param options - See ListOptions for details.\r\n * @returns A Promise that resolves with the items and prefixes.\r\n * `prefixes` contains references to sub-folders and `items`\r\n * contains references to objects in this folder. `nextPageToken`\r\n * can be used to get the rest of the results.\r\n */\r\nfunction list(ref, options) {\r\n ref = getModularInstance(ref);\r\n return list$1(ref, options);\r\n}\r\n/**\r\n * List all items (files) and prefixes (folders) under this storage reference.\r\n *\r\n * This is a helper method for calling list() repeatedly until there are\r\n * no more results. The default pagination size is 1000.\r\n *\r\n * Note: The results may not be consistent if objects are changed while this\r\n * operation is running.\r\n *\r\n * Warning: listAll may potentially consume too many resources if there are\r\n * too many results.\r\n * @public\r\n * @param ref - StorageReference to get list from.\r\n *\r\n * @returns A Promise that resolves with all the items and prefixes under\r\n * the current storage reference. `prefixes` contains references to\r\n * sub-directories and `items` contains references to objects in this\r\n * folder. `nextPageToken` is never returned.\r\n */\r\nfunction listAll(ref) {\r\n ref = getModularInstance(ref);\r\n return listAll$1(ref);\r\n}\r\n/**\r\n * Returns the download URL for the given Reference.\r\n * @public\r\n * @returns A promise that resolves with the download\r\n * URL for this object.\r\n */\r\nfunction getDownloadURL(ref) {\r\n ref = getModularInstance(ref);\r\n return getDownloadURL$1(ref);\r\n}\r\n/**\r\n * Deletes the object at this location.\r\n * @public\r\n * @param ref - StorageReference for object to delete.\r\n * @returns A promise that resolves if the deletion succeeds.\r\n */\r\nfunction deleteObject(ref) {\r\n ref = getModularInstance(ref);\r\n return deleteObject$1(ref);\r\n}\r\nfunction ref(serviceOrRef, pathOrUrl) {\r\n serviceOrRef = getModularInstance(serviceOrRef);\r\n return ref$1(serviceOrRef, pathOrUrl);\r\n}\r\n/**\r\n * @internal\r\n */\r\nfunction _getChild(ref, childPath) {\r\n return _getChild$1(ref, childPath);\r\n}\r\n/**\r\n * Modify this `StorageService` instance to communicate with the Cloud Storage emulator.\r\n *\r\n * @param storage - The `StorageService` instance\r\n * @param host - The emulator host (ex: localhost)\r\n * @param port - The emulator port (ex: 5001)\r\n * @param options.mockUserToken - the mock auth token to use for unit testing Security Rules.\r\n * @public\r\n */\r\nfunction connectStorageEmulator(storage, host, port, options) {\r\n if (options === void 0) { options = {}; }\r\n connectStorageEmulator$1(storage, host, port, options);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\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 UploadTaskSnapshotCompat = /** @class */ (function () {\r\n function UploadTaskSnapshotCompat(_delegate, task, ref) {\r\n this._delegate = _delegate;\r\n this.task = task;\r\n this.ref = ref;\r\n }\r\n Object.defineProperty(UploadTaskSnapshotCompat.prototype, \"bytesTransferred\", {\r\n get: function () {\r\n return this._delegate.bytesTransferred;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(UploadTaskSnapshotCompat.prototype, \"metadata\", {\r\n get: function () {\r\n return this._delegate.metadata;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(UploadTaskSnapshotCompat.prototype, \"state\", {\r\n get: function () {\r\n return this._delegate.state;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(UploadTaskSnapshotCompat.prototype, \"totalBytes\", {\r\n get: function () {\r\n return this._delegate.totalBytes;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return UploadTaskSnapshotCompat;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\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 UploadTaskCompat = /** @class */ (function () {\r\n function UploadTaskCompat(_delegate, _ref) {\r\n this._delegate = _delegate;\r\n this._ref = _ref;\r\n this.cancel = this._delegate.cancel.bind(this._delegate);\r\n this.catch = this._delegate.catch.bind(this._delegate);\r\n this.pause = this._delegate.pause.bind(this._delegate);\r\n this.resume = this._delegate.resume.bind(this._delegate);\r\n }\r\n Object.defineProperty(UploadTaskCompat.prototype, \"snapshot\", {\r\n get: function () {\r\n return new UploadTaskSnapshotCompat(this._delegate.snapshot, this, this._ref);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n UploadTaskCompat.prototype.then = function (onFulfilled, onRejected) {\r\n var _this = this;\r\n return this._delegate.then(function (snapshot) {\r\n if (onFulfilled) {\r\n return onFulfilled(new UploadTaskSnapshotCompat(snapshot, _this, _this._ref));\r\n }\r\n }, onRejected);\r\n };\r\n UploadTaskCompat.prototype.on = function (type, nextOrObserver, error, completed) {\r\n var _this = this;\r\n var wrappedNextOrObserver = undefined;\r\n if (!!nextOrObserver) {\r\n if (typeof nextOrObserver === 'function') {\r\n wrappedNextOrObserver = function (taskSnapshot) {\r\n return nextOrObserver(new UploadTaskSnapshotCompat(taskSnapshot, _this, _this._ref));\r\n };\r\n }\r\n else {\r\n wrappedNextOrObserver = {\r\n next: !!nextOrObserver.next\r\n ? function (taskSnapshot) {\r\n return nextOrObserver.next(new UploadTaskSnapshotCompat(taskSnapshot, _this, _this._ref));\r\n }\r\n : undefined,\r\n complete: nextOrObserver.complete || undefined,\r\n error: nextOrObserver.error || undefined\r\n };\r\n }\r\n }\r\n return this._delegate.on(type, wrappedNextOrObserver, error || undefined, completed || undefined);\r\n };\r\n return UploadTaskCompat;\r\n}());\n\nvar ListResultCompat = /** @class */ (function () {\r\n function ListResultCompat(_delegate, _service) {\r\n this._delegate = _delegate;\r\n this._service = _service;\r\n }\r\n Object.defineProperty(ListResultCompat.prototype, \"prefixes\", {\r\n get: function () {\r\n var _this = this;\r\n return this._delegate.prefixes.map(function (ref) { return new ReferenceCompat(ref, _this._service); });\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ListResultCompat.prototype, \"items\", {\r\n get: function () {\r\n var _this = this;\r\n return this._delegate.items.map(function (ref) { return new ReferenceCompat(ref, _this._service); });\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ListResultCompat.prototype, \"nextPageToken\", {\r\n get: function () {\r\n return this._delegate.nextPageToken || null;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return ListResultCompat;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\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 ReferenceCompat = /** @class */ (function () {\r\n function ReferenceCompat(_delegate, storage) {\r\n this._delegate = _delegate;\r\n this.storage = storage;\r\n }\r\n Object.defineProperty(ReferenceCompat.prototype, \"name\", {\r\n get: function () {\r\n return this._delegate.name;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ReferenceCompat.prototype, \"bucket\", {\r\n get: function () {\r\n return this._delegate.bucket;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ReferenceCompat.prototype, \"fullPath\", {\r\n get: function () {\r\n return this._delegate.fullPath;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ReferenceCompat.prototype.toString = function () {\r\n return this._delegate.toString();\r\n };\r\n /**\r\n * @returns A reference to the object obtained by\r\n * appending childPath, removing any duplicate, beginning, or trailing\r\n * slashes.\r\n */\r\n ReferenceCompat.prototype.child = function (childPath) {\r\n var reference = _getChild(this._delegate, childPath);\r\n return new ReferenceCompat(reference, this.storage);\r\n };\r\n Object.defineProperty(ReferenceCompat.prototype, \"root\", {\r\n get: function () {\r\n return new ReferenceCompat(this._delegate.root, this.storage);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ReferenceCompat.prototype, \"parent\", {\r\n /**\r\n * @returns A reference to the parent of the\r\n * current object, or null if the current object is the root.\r\n */\r\n get: function () {\r\n var reference = this._delegate.parent;\r\n if (reference == null) {\r\n return null;\r\n }\r\n return new ReferenceCompat(reference, this.storage);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * Uploads a blob to this object's location.\r\n * @param data - The blob to upload.\r\n * @returns An UploadTask that lets you control and\r\n * observe the upload.\r\n */\r\n ReferenceCompat.prototype.put = function (data, metadata) {\r\n this._throwIfRoot('put');\r\n return new UploadTaskCompat(uploadBytesResumable(this._delegate, data, metadata), this);\r\n };\r\n /**\r\n * Uploads a string to this object's location.\r\n * @param value - The string to upload.\r\n * @param format - The format of the string to upload.\r\n * @returns An UploadTask that lets you control and\r\n * observe the upload.\r\n */\r\n ReferenceCompat.prototype.putString = function (value, format, metadata) {\r\n if (format === void 0) { format = StringFormat.RAW; }\r\n this._throwIfRoot('putString');\r\n var data = dataFromString(format, value);\r\n var metadataClone = __assign({}, metadata);\r\n if (metadataClone['contentType'] == null && data.contentType != null) {\r\n metadataClone['contentType'] = data.contentType;\r\n }\r\n return new UploadTaskCompat(new UploadTask(this._delegate, new FbsBlob(data.data, true), metadataClone), this);\r\n };\r\n /**\r\n * List all items (files) and prefixes (folders) under this storage reference.\r\n *\r\n * This is a helper method for calling list() repeatedly until there are\r\n * no more results. The default pagination size is 1000.\r\n *\r\n * Note: The results may not be consistent if objects are changed while this\r\n * operation is running.\r\n *\r\n * Warning: listAll may potentially consume too many resources if there are\r\n * too many results.\r\n *\r\n * @returns A Promise that resolves with all the items and prefixes under\r\n * the current storage reference. `prefixes` contains references to\r\n * sub-directories and `items` contains references to objects in this\r\n * folder. `nextPageToken` is never returned.\r\n */\r\n ReferenceCompat.prototype.listAll = function () {\r\n var _this = this;\r\n return listAll(this._delegate).then(function (r) { return new ListResultCompat(r, _this.storage); });\r\n };\r\n /**\r\n * List items (files) and prefixes (folders) under this storage reference.\r\n *\r\n * List API is only available for Firebase Rules Version 2.\r\n *\r\n * GCS is a key-blob store. Firebase Storage imposes the semantic of '/'\r\n * delimited folder structure. Refer to GCS's List API if you want to learn more.\r\n *\r\n * To adhere to Firebase Rules's Semantics, Firebase Storage does not\r\n * support objects whose paths end with \"/\" or contain two consecutive\r\n * \"/\"s. Firebase Storage List API will filter these unsupported objects.\r\n * list() may fail if there are too many unsupported objects in the bucket.\r\n *\r\n * @param options - See ListOptions for details.\r\n * @returns A Promise that resolves with the items and prefixes.\r\n * `prefixes` contains references to sub-folders and `items`\r\n * contains references to objects in this folder. `nextPageToken`\r\n * can be used to get the rest of the results.\r\n */\r\n ReferenceCompat.prototype.list = function (options) {\r\n var _this = this;\r\n return list(this._delegate, options || undefined).then(function (r) { return new ListResultCompat(r, _this.storage); });\r\n };\r\n /**\r\n * A promise that resolves with the metadata for this object. If this\r\n * object doesn't exist or metadata cannot be retreived, the promise is\r\n * rejected.\r\n */\r\n ReferenceCompat.prototype.getMetadata = function () {\r\n return getMetadata(this._delegate);\r\n };\r\n /**\r\n * Updates the metadata for this object.\r\n * @param metadata - The new metadata for the object.\r\n * Only values that have been explicitly set will be changed. Explicitly\r\n * setting a value to null will remove the metadata.\r\n * @returns A promise that resolves\r\n * with the new metadata for this object.\r\n * @see firebaseStorage.Reference.prototype.getMetadata\r\n */\r\n ReferenceCompat.prototype.updateMetadata = function (metadata) {\r\n return updateMetadata(this._delegate, metadata);\r\n };\r\n /**\r\n * @returns A promise that resolves with the download\r\n * URL for this object.\r\n */\r\n ReferenceCompat.prototype.getDownloadURL = function () {\r\n return getDownloadURL(this._delegate);\r\n };\r\n /**\r\n * Deletes the object at this location.\r\n * @returns A promise that resolves if the deletion succeeds.\r\n */\r\n ReferenceCompat.prototype.delete = function () {\r\n this._throwIfRoot('delete');\r\n return deleteObject(this._delegate);\r\n };\r\n ReferenceCompat.prototype._throwIfRoot = function (name) {\r\n if (this._delegate._location.path === '') {\r\n throw invalidRootOperation(name);\r\n }\r\n };\r\n return ReferenceCompat;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\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 * A service that provides firebaseStorage.Reference instances.\r\n * @param opt_url gs:// url to a custom Storage Bucket\r\n */\r\nvar StorageServiceCompat = /** @class */ (function () {\r\n function StorageServiceCompat(app, _delegate) {\r\n this.app = app;\r\n this._delegate = _delegate;\r\n }\r\n Object.defineProperty(StorageServiceCompat.prototype, \"maxOperationRetryTime\", {\r\n get: function () {\r\n return this._delegate.maxOperationRetryTime;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(StorageServiceCompat.prototype, \"maxUploadRetryTime\", {\r\n get: function () {\r\n return this._delegate.maxUploadRetryTime;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * Returns a firebaseStorage.Reference for the given path in the default\r\n * bucket.\r\n */\r\n StorageServiceCompat.prototype.ref = function (path) {\r\n if (isUrl(path)) {\r\n throw invalidArgument('ref() expected a child path but got a URL, use refFromURL instead.');\r\n }\r\n return new ReferenceCompat(ref(this._delegate, path), this);\r\n };\r\n /**\r\n * Returns a firebaseStorage.Reference object for the given absolute URL,\r\n * which must be a gs:// or http[s]:// URL.\r\n */\r\n StorageServiceCompat.prototype.refFromURL = function (url) {\r\n if (!isUrl(url)) {\r\n throw invalidArgument('refFromURL() expected a full URL but got a child path, use ref() instead.');\r\n }\r\n try {\r\n Location.makeFromUrl(url, this._delegate.host);\r\n }\r\n catch (e) {\r\n throw invalidArgument('refFromUrl() expected a valid full URL but got an invalid one.');\r\n }\r\n return new ReferenceCompat(ref(this._delegate, url), this);\r\n };\r\n StorageServiceCompat.prototype.setMaxUploadRetryTime = function (time) {\r\n this._delegate.maxUploadRetryTime = time;\r\n };\r\n StorageServiceCompat.prototype.setMaxOperationRetryTime = function (time) {\r\n this._delegate.maxOperationRetryTime = time;\r\n };\r\n StorageServiceCompat.prototype.useEmulator = function (host, port, options) {\r\n if (options === void 0) { options = {}; }\r\n connectStorageEmulator(this._delegate, host, port, options);\r\n };\r\n return StorageServiceCompat;\r\n}());\n\nvar name = \"@firebase/storage\";\nvar version = \"0.7.0\";\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\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 * Type constant for Firebase Storage.\r\n */\r\nvar STORAGE_TYPE = 'storage';\r\nfunction factory(container, _a) {\r\n var url = _a.instanceIdentifier;\r\n // Dependencies\r\n // TODO: This should eventually be 'app-compat'\r\n var app = container.getProvider('app').getImmediate();\r\n var authProvider = container.getProvider('auth-internal');\r\n var appCheckProvider = container.getProvider('app-check-internal');\r\n // TODO: get StorageService instance from component framework instead\r\n // of creating a new one.\r\n var storageServiceCompat = new StorageServiceCompat(app, new FirebaseStorageImpl(app, authProvider, appCheckProvider, new ConnectionPool(), url, firebase.SDK_VERSION));\r\n return storageServiceCompat;\r\n}\r\nfunction registerStorage(instance) {\r\n var namespaceExports = {\r\n // no-inline\r\n TaskState: TaskState,\r\n TaskEvent: TaskEvent,\r\n StringFormat: StringFormat,\r\n Storage: FirebaseStorageImpl,\r\n Reference: ReferenceCompat\r\n };\r\n instance.INTERNAL.registerComponent(new Component(STORAGE_TYPE, factory, \"PUBLIC\" /* PUBLIC */)\r\n .setServiceProps(namespaceExports)\r\n .setMultipleInstances(true));\r\n instance.registerVersion(name, version);\r\n}\r\nregisterStorage(firebase);\n\nexport { registerStorage };\n//# sourceMappingURL=index.browser.esm.js.map\n","import firebase from '@firebase/app';\nimport '@firebase/installations';\nimport { __spreadArray, __assign } from 'tslib';\nimport { ErrorFactory, isIndexedDBAvailable, validateIndexedDBOpenable } from '@firebase/util';\nimport { Logger, LogLevel } from '@firebase/logger';\nimport { Component } from '@firebase/component';\n\nvar name = \"@firebase/performance\";\nvar version = \"0.4.18\";\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\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 SDK_VERSION = version;\r\n/** The prefix for start User Timing marks used for creating Traces. */\r\nvar TRACE_START_MARK_PREFIX = 'FB-PERF-TRACE-START';\r\n/** The prefix for stop User Timing marks used for creating Traces. */\r\nvar TRACE_STOP_MARK_PREFIX = 'FB-PERF-TRACE-STOP';\r\n/** The prefix for User Timing measure used for creating Traces. */\r\nvar TRACE_MEASURE_PREFIX = 'FB-PERF-TRACE-MEASURE';\r\n/** The prefix for out of the box page load Trace name. */\r\nvar OOB_TRACE_PAGE_LOAD_PREFIX = '_wt_';\r\nvar FIRST_PAINT_COUNTER_NAME = '_fp';\r\nvar FIRST_CONTENTFUL_PAINT_COUNTER_NAME = '_fcp';\r\nvar FIRST_INPUT_DELAY_COUNTER_NAME = '_fid';\r\nvar CONFIG_LOCAL_STORAGE_KEY = '@firebase/performance/config';\r\nvar CONFIG_EXPIRY_LOCAL_STORAGE_KEY = '@firebase/performance/configexpire';\r\nvar SERVICE = 'performance';\r\nvar SERVICE_NAME = 'Performance';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 _a;\r\nvar ERROR_DESCRIPTION_MAP = (_a = {},\r\n _a[\"trace started\" /* TRACE_STARTED_BEFORE */] = 'Trace {$traceName} was started before.',\r\n _a[\"trace stopped\" /* TRACE_STOPPED_BEFORE */] = 'Trace {$traceName} is not running.',\r\n _a[\"nonpositive trace startTime\" /* NONPOSITIVE_TRACE_START_TIME */] = 'Trace {$traceName} startTime should be positive.',\r\n _a[\"nonpositive trace duration\" /* NONPOSITIVE_TRACE_DURATION */] = 'Trace {$traceName} duration should be positive.',\r\n _a[\"no window\" /* NO_WINDOW */] = 'Window is not available.',\r\n _a[\"no app id\" /* NO_APP_ID */] = 'App id is not available.',\r\n _a[\"no project id\" /* NO_PROJECT_ID */] = 'Project id is not available.',\r\n _a[\"no api key\" /* NO_API_KEY */] = 'Api key is not available.',\r\n _a[\"invalid cc log\" /* INVALID_CC_LOG */] = 'Attempted to queue invalid cc event',\r\n _a[\"FB not default\" /* FB_NOT_DEFAULT */] = 'Performance can only start when Firebase app instance is the default one.',\r\n _a[\"RC response not ok\" /* RC_NOT_OK */] = 'RC response is not ok',\r\n _a[\"invalid attribute name\" /* INVALID_ATTRIBUTE_NAME */] = 'Attribute name {$attributeName} is invalid.',\r\n _a[\"invalid attribute value\" /* INVALID_ATTRIBUTE_VALUE */] = 'Attribute value {$attributeValue} is invalid.',\r\n _a[\"invalid custom metric name\" /* INVALID_CUSTOM_METRIC_NAME */] = 'Custom metric name {$customMetricName} is invalid',\r\n _a[\"invalid String merger input\" /* INVALID_STRING_MERGER_PARAMETER */] = 'Input for String merger is invalid, contact support team to resolve.',\r\n _a);\r\nvar ERROR_FACTORY = new ErrorFactory(SERVICE, SERVICE_NAME, ERROR_DESCRIPTION_MAP);\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 consoleLogger = new Logger(SERVICE_NAME);\r\nconsoleLogger.logLevel = LogLevel.INFO;\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 apiInstance;\r\nvar windowInstance;\r\n/**\r\n * This class holds a reference to various browser related objects injected by\r\n * set methods.\r\n */\r\nvar Api = /** @class */ (function () {\r\n function Api(window) {\r\n this.window = window;\r\n if (!window) {\r\n throw ERROR_FACTORY.create(\"no window\" /* NO_WINDOW */);\r\n }\r\n this.performance = window.performance;\r\n this.PerformanceObserver = window.PerformanceObserver;\r\n this.windowLocation = window.location;\r\n this.navigator = window.navigator;\r\n this.document = window.document;\r\n if (this.navigator && this.navigator.cookieEnabled) {\r\n // If user blocks cookies on the browser, accessing localStorage will\r\n // throw an exception.\r\n this.localStorage = window.localStorage;\r\n }\r\n if (window.perfMetrics && window.perfMetrics.onFirstInputDelay) {\r\n this.onFirstInputDelay = window.perfMetrics.onFirstInputDelay;\r\n }\r\n }\r\n Api.prototype.getUrl = function () {\r\n // Do not capture the string query part of url.\r\n return this.windowLocation.href.split('?')[0];\r\n };\r\n Api.prototype.mark = function (name) {\r\n if (!this.performance || !this.performance.mark) {\r\n return;\r\n }\r\n this.performance.mark(name);\r\n };\r\n Api.prototype.measure = function (measureName, mark1, mark2) {\r\n if (!this.performance || !this.performance.measure) {\r\n return;\r\n }\r\n this.performance.measure(measureName, mark1, mark2);\r\n };\r\n Api.prototype.getEntriesByType = function (type) {\r\n if (!this.performance || !this.performance.getEntriesByType) {\r\n return [];\r\n }\r\n return this.performance.getEntriesByType(type);\r\n };\r\n Api.prototype.getEntriesByName = function (name) {\r\n if (!this.performance || !this.performance.getEntriesByName) {\r\n return [];\r\n }\r\n return this.performance.getEntriesByName(name);\r\n };\r\n Api.prototype.getTimeOrigin = function () {\r\n // Polyfill the time origin with performance.timing.navigationStart.\r\n return (this.performance &&\r\n (this.performance.timeOrigin || this.performance.timing.navigationStart));\r\n };\r\n Api.prototype.requiredApisAvailable = function () {\r\n if (!fetch ||\r\n !Promise ||\r\n !this.navigator ||\r\n !this.navigator.cookieEnabled) {\r\n consoleLogger.info('Firebase Performance cannot start if browser does not support fetch and Promise or cookie is disabled.');\r\n return false;\r\n }\r\n if (!isIndexedDBAvailable()) {\r\n consoleLogger.info('IndexedDB is not supported by current browswer');\r\n return false;\r\n }\r\n return true;\r\n };\r\n Api.prototype.setupObserver = function (entryType, callback) {\r\n if (!this.PerformanceObserver) {\r\n return;\r\n }\r\n var observer = new this.PerformanceObserver(function (list) {\r\n for (var _i = 0, _a = list.getEntries(); _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n // `entry` is a PerformanceEntry instance.\r\n callback(entry);\r\n }\r\n });\r\n // Start observing the entry types you care about.\r\n observer.observe({ entryTypes: [entryType] });\r\n };\r\n Api.getInstance = function () {\r\n if (apiInstance === undefined) {\r\n apiInstance = new Api(windowInstance);\r\n }\r\n return apiInstance;\r\n };\r\n return Api;\r\n}());\r\nfunction setupApi(window) {\r\n windowInstance = window;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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\nfunction mergeStrings(part1, part2) {\r\n var sizeDiff = part1.length - part2.length;\r\n if (sizeDiff < 0 || sizeDiff > 1) {\r\n throw ERROR_FACTORY.create(\"invalid String merger input\" /* INVALID_STRING_MERGER_PARAMETER */);\r\n }\r\n var resultArray = [];\r\n for (var i = 0; i < part1.length; i++) {\r\n resultArray.push(part1.charAt(i));\r\n if (part2.length > i) {\r\n resultArray.push(part2.charAt(i));\r\n }\r\n }\r\n return resultArray.join('');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 settingsServiceInstance;\r\nvar SettingsService = /** @class */ (function () {\r\n function SettingsService() {\r\n // The variable which controls logging of automatic traces and HTTP/S network monitoring.\r\n this.instrumentationEnabled = true;\r\n // The variable which controls logging of custom traces.\r\n this.dataCollectionEnabled = true;\r\n // Configuration flags set through remote config.\r\n this.loggingEnabled = false;\r\n // Sampling rate between 0 and 1.\r\n this.tracesSamplingRate = 1;\r\n this.networkRequestsSamplingRate = 1;\r\n // Address of logging service.\r\n this.logEndPointUrl = 'https://firebaselogging.googleapis.com/v0cc/log?format=json_proto';\r\n // Performance event transport endpoint URL which should be compatible with proto3.\r\n // New Address for transport service, not configurable via Remote Config.\r\n this.flTransportEndpointUrl = mergeStrings('hts/frbslgigp.ogepscmv/ieo/eaylg', 'tp:/ieaeogn-agolai.o/1frlglgc/o');\r\n this.transportKey = mergeStrings('AzSC8r6ReiGqFMyfvgow', 'Iayx0u-XT3vksVM-pIV');\r\n // Source type for performance event logs.\r\n this.logSource = 462;\r\n // Flags which control per session logging of traces and network requests.\r\n this.logTraceAfterSampling = false;\r\n this.logNetworkAfterSampling = false;\r\n // TTL of config retrieved from remote config in hours.\r\n this.configTimeToLive = 12;\r\n }\r\n SettingsService.prototype.getAppId = function () {\r\n var appId = this.firebaseAppInstance &&\r\n this.firebaseAppInstance.options &&\r\n this.firebaseAppInstance.options.appId;\r\n if (!appId) {\r\n throw ERROR_FACTORY.create(\"no app id\" /* NO_APP_ID */);\r\n }\r\n return appId;\r\n };\r\n SettingsService.prototype.getProjectId = function () {\r\n var projectId = this.firebaseAppInstance &&\r\n this.firebaseAppInstance.options &&\r\n this.firebaseAppInstance.options.projectId;\r\n if (!projectId) {\r\n throw ERROR_FACTORY.create(\"no project id\" /* NO_PROJECT_ID */);\r\n }\r\n return projectId;\r\n };\r\n SettingsService.prototype.getApiKey = function () {\r\n var apiKey = this.firebaseAppInstance &&\r\n this.firebaseAppInstance.options &&\r\n this.firebaseAppInstance.options.apiKey;\r\n if (!apiKey) {\r\n throw ERROR_FACTORY.create(\"no api key\" /* NO_API_KEY */);\r\n }\r\n return apiKey;\r\n };\r\n SettingsService.prototype.getFlTransportFullUrl = function () {\r\n return this.flTransportEndpointUrl.concat('?key=', this.transportKey);\r\n };\r\n SettingsService.getInstance = function () {\r\n if (settingsServiceInstance === undefined) {\r\n settingsServiceInstance = new SettingsService();\r\n }\r\n return settingsServiceInstance;\r\n };\r\n return SettingsService;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 iid;\r\nfunction getIidPromise() {\r\n var iidPromise = SettingsService.getInstance().installationsService.getId();\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n iidPromise.then(function (iidVal) {\r\n iid = iidVal;\r\n });\r\n return iidPromise;\r\n}\r\n// This method should be used after the iid is retrieved by getIidPromise method.\r\nfunction getIid() {\r\n return iid;\r\n}\r\nfunction getAuthTokenPromise() {\r\n var authTokenPromise = SettingsService.getInstance().installationsService.getToken();\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n authTokenPromise.then(function (authTokenVal) {\r\n });\r\n return authTokenPromise;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 VisibilityState;\r\n(function (VisibilityState) {\r\n VisibilityState[VisibilityState[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\r\n VisibilityState[VisibilityState[\"VISIBLE\"] = 1] = \"VISIBLE\";\r\n VisibilityState[VisibilityState[\"HIDDEN\"] = 2] = \"HIDDEN\";\r\n})(VisibilityState || (VisibilityState = {}));\r\nvar RESERVED_ATTRIBUTE_PREFIXES = ['firebase_', 'google_', 'ga_'];\r\nvar ATTRIBUTE_FORMAT_REGEX = new RegExp('^[a-zA-Z]\\\\w*$');\r\nvar MAX_ATTRIBUTE_NAME_LENGTH = 40;\r\nvar MAX_ATTRIBUTE_VALUE_LENGTH = 100;\r\nfunction getServiceWorkerStatus() {\r\n var navigator = Api.getInstance().navigator;\r\n if ('serviceWorker' in navigator) {\r\n if (navigator.serviceWorker.controller) {\r\n return 2 /* CONTROLLED */;\r\n }\r\n else {\r\n return 3 /* UNCONTROLLED */;\r\n }\r\n }\r\n else {\r\n return 1 /* UNSUPPORTED */;\r\n }\r\n}\r\nfunction getVisibilityState() {\r\n var document = Api.getInstance().document;\r\n var visibilityState = document.visibilityState;\r\n switch (visibilityState) {\r\n case 'visible':\r\n return VisibilityState.VISIBLE;\r\n case 'hidden':\r\n return VisibilityState.HIDDEN;\r\n default:\r\n return VisibilityState.UNKNOWN;\r\n }\r\n}\r\nfunction getEffectiveConnectionType() {\r\n var navigator = Api.getInstance().navigator;\r\n var navigatorConnection = navigator.connection;\r\n var effectiveType = navigatorConnection && navigatorConnection.effectiveType;\r\n switch (effectiveType) {\r\n case 'slow-2g':\r\n return 1 /* CONNECTION_SLOW_2G */;\r\n case '2g':\r\n return 2 /* CONNECTION_2G */;\r\n case '3g':\r\n return 3 /* CONNECTION_3G */;\r\n case '4g':\r\n return 4 /* CONNECTION_4G */;\r\n default:\r\n return 0 /* UNKNOWN */;\r\n }\r\n}\r\nfunction isValidCustomAttributeName(name) {\r\n if (name.length === 0 || name.length > MAX_ATTRIBUTE_NAME_LENGTH) {\r\n return false;\r\n }\r\n var matchesReservedPrefix = RESERVED_ATTRIBUTE_PREFIXES.some(function (prefix) {\r\n return name.startsWith(prefix);\r\n });\r\n return !matchesReservedPrefix && !!name.match(ATTRIBUTE_FORMAT_REGEX);\r\n}\r\nfunction isValidCustomAttributeValue(value) {\r\n return value.length !== 0 && value.length <= MAX_ATTRIBUTE_VALUE_LENGTH;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 REMOTE_CONFIG_SDK_VERSION = '0.0.1';\r\n// These values will be used if the remote config object is successfully\r\n// retrieved, but the template does not have these fields.\r\nvar DEFAULT_CONFIGS = {\r\n loggingEnabled: true\r\n};\r\nvar FIS_AUTH_PREFIX = 'FIREBASE_INSTALLATIONS_AUTH';\r\nfunction getConfig(iid) {\r\n var config = getStoredConfig();\r\n if (config) {\r\n processConfig(config);\r\n return Promise.resolve();\r\n }\r\n return getRemoteConfig(iid)\r\n .then(processConfig)\r\n .then(function (config) { return storeConfig(config); }, \r\n /** Do nothing for error, use defaults set in settings service. */\r\n function () { });\r\n}\r\nfunction getStoredConfig() {\r\n var localStorage = Api.getInstance().localStorage;\r\n if (!localStorage) {\r\n return;\r\n }\r\n var expiryString = localStorage.getItem(CONFIG_EXPIRY_LOCAL_STORAGE_KEY);\r\n if (!expiryString || !configValid(expiryString)) {\r\n return;\r\n }\r\n var configStringified = localStorage.getItem(CONFIG_LOCAL_STORAGE_KEY);\r\n if (!configStringified) {\r\n return;\r\n }\r\n try {\r\n var configResponse = JSON.parse(configStringified);\r\n return configResponse;\r\n }\r\n catch (_a) {\r\n return;\r\n }\r\n}\r\nfunction storeConfig(config) {\r\n var localStorage = Api.getInstance().localStorage;\r\n if (!config || !localStorage) {\r\n return;\r\n }\r\n localStorage.setItem(CONFIG_LOCAL_STORAGE_KEY, JSON.stringify(config));\r\n localStorage.setItem(CONFIG_EXPIRY_LOCAL_STORAGE_KEY, String(Date.now() +\r\n SettingsService.getInstance().configTimeToLive * 60 * 60 * 1000));\r\n}\r\nvar COULD_NOT_GET_CONFIG_MSG = 'Could not fetch config, will use default configs';\r\nfunction getRemoteConfig(iid) {\r\n // Perf needs auth token only to retrieve remote config.\r\n return getAuthTokenPromise()\r\n .then(function (authToken) {\r\n var projectId = SettingsService.getInstance().getProjectId();\r\n var configEndPoint = \"https://firebaseremoteconfig.googleapis.com/v1/projects/\" + projectId + \"/namespaces/fireperf:fetch?key=\" + SettingsService.getInstance().getApiKey();\r\n var request = new Request(configEndPoint, {\r\n method: 'POST',\r\n headers: { Authorization: FIS_AUTH_PREFIX + \" \" + authToken },\r\n /* eslint-disable camelcase */\r\n body: JSON.stringify({\r\n app_instance_id: iid,\r\n app_instance_id_token: authToken,\r\n app_id: SettingsService.getInstance().getAppId(),\r\n app_version: SDK_VERSION,\r\n sdk_version: REMOTE_CONFIG_SDK_VERSION\r\n })\r\n /* eslint-enable camelcase */\r\n });\r\n return fetch(request).then(function (response) {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n // In case response is not ok. This will be caught by catch.\r\n throw ERROR_FACTORY.create(\"RC response not ok\" /* RC_NOT_OK */);\r\n });\r\n })\r\n .catch(function () {\r\n consoleLogger.info(COULD_NOT_GET_CONFIG_MSG);\r\n return undefined;\r\n });\r\n}\r\n/**\r\n * Processes config coming either from calling RC or from local storage.\r\n * This method only runs if call is successful or config in storage\r\n * is valid.\r\n */\r\nfunction processConfig(config) {\r\n if (!config) {\r\n return config;\r\n }\r\n var settingsServiceInstance = SettingsService.getInstance();\r\n var entries = config.entries || {};\r\n if (entries.fpr_enabled !== undefined) {\r\n // TODO: Change the assignment of loggingEnabled once the received type is\r\n // known.\r\n settingsServiceInstance.loggingEnabled =\r\n String(entries.fpr_enabled) === 'true';\r\n }\r\n else {\r\n // Config retrieved successfully, but there is no fpr_enabled in template.\r\n // Use secondary configs value.\r\n settingsServiceInstance.loggingEnabled = DEFAULT_CONFIGS.loggingEnabled;\r\n }\r\n if (entries.fpr_log_source) {\r\n settingsServiceInstance.logSource = Number(entries.fpr_log_source);\r\n }\r\n if (entries.fpr_log_endpoint_url) {\r\n settingsServiceInstance.logEndPointUrl = entries.fpr_log_endpoint_url;\r\n }\r\n // Key from Remote Config has to be non-empty string, otherwsie use local value.\r\n if (entries.fpr_log_transport_key) {\r\n settingsServiceInstance.transportKey = entries.fpr_log_transport_key;\r\n }\r\n if (entries.fpr_vc_network_request_sampling_rate !== undefined) {\r\n settingsServiceInstance.networkRequestsSamplingRate = Number(entries.fpr_vc_network_request_sampling_rate);\r\n }\r\n if (entries.fpr_vc_trace_sampling_rate !== undefined) {\r\n settingsServiceInstance.tracesSamplingRate = Number(entries.fpr_vc_trace_sampling_rate);\r\n }\r\n // Set the per session trace and network logging flags.\r\n settingsServiceInstance.logTraceAfterSampling = shouldLogAfterSampling(settingsServiceInstance.tracesSamplingRate);\r\n settingsServiceInstance.logNetworkAfterSampling = shouldLogAfterSampling(settingsServiceInstance.networkRequestsSamplingRate);\r\n return config;\r\n}\r\nfunction configValid(expiry) {\r\n return Number(expiry) > Date.now();\r\n}\r\nfunction shouldLogAfterSampling(samplingRate) {\r\n return Math.random() <= samplingRate;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 initializationStatus = 1 /* notInitialized */;\r\nvar initializationPromise;\r\nfunction getInitializationPromise() {\r\n initializationStatus = 2 /* initializationPending */;\r\n initializationPromise = initializationPromise || initializePerf();\r\n return initializationPromise;\r\n}\r\nfunction isPerfInitialized() {\r\n return initializationStatus === 3 /* initialized */;\r\n}\r\nfunction initializePerf() {\r\n return getDocumentReadyComplete()\r\n .then(function () { return getIidPromise(); })\r\n .then(function (iid) { return getConfig(iid); })\r\n .then(function () { return changeInitializationStatus(); }, function () { return changeInitializationStatus(); });\r\n}\r\n/**\r\n * Returns a promise which resolves whenever the document readystate is complete or\r\n * immediately if it is called after page load complete.\r\n */\r\nfunction getDocumentReadyComplete() {\r\n var document = Api.getInstance().document;\r\n return new Promise(function (resolve) {\r\n if (document && document.readyState !== 'complete') {\r\n var handler_1 = function () {\r\n if (document.readyState === 'complete') {\r\n document.removeEventListener('readystatechange', handler_1);\r\n resolve();\r\n }\r\n };\r\n document.addEventListener('readystatechange', handler_1);\r\n }\r\n else {\r\n resolve();\r\n }\r\n });\r\n}\r\nfunction changeInitializationStatus() {\r\n initializationStatus = 3 /* initialized */;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 DEFAULT_SEND_INTERVAL_MS = 10 * 1000;\r\nvar INITIAL_SEND_TIME_DELAY_MS = 5.5 * 1000;\r\n// If end point does not work, the call will be tried for these many times.\r\nvar DEFAULT_REMAINING_TRIES = 3;\r\nvar MAX_EVENT_COUNT_PER_REQUEST = 1000;\r\nvar remainingTries = DEFAULT_REMAINING_TRIES;\r\n/* eslint-enable camelcase */\r\nvar queue = [];\r\nvar isTransportSetup = false;\r\nfunction setupTransportService() {\r\n if (!isTransportSetup) {\r\n processQueue(INITIAL_SEND_TIME_DELAY_MS);\r\n isTransportSetup = true;\r\n }\r\n}\r\nfunction processQueue(timeOffset) {\r\n setTimeout(function () {\r\n // If there is no remainingTries left, stop retrying.\r\n if (remainingTries === 0) {\r\n return;\r\n }\r\n // If there are no events to process, wait for DEFAULT_SEND_INTERVAL_MS and try again.\r\n if (!queue.length) {\r\n return processQueue(DEFAULT_SEND_INTERVAL_MS);\r\n }\r\n dispatchQueueEvents();\r\n }, timeOffset);\r\n}\r\nfunction dispatchQueueEvents() {\r\n // Extract events up to the maximum cap of single logRequest from top of \"official queue\".\r\n // The staged events will be used for current logRequest attempt, remaining events will be kept\r\n // for next attempt.\r\n var staged = queue.splice(0, MAX_EVENT_COUNT_PER_REQUEST);\r\n /* eslint-disable camelcase */\r\n // We will pass the JSON serialized event to the backend.\r\n var log_event = staged.map(function (evt) { return ({\r\n source_extension_json_proto3: evt.message,\r\n event_time_ms: String(evt.eventTime)\r\n }); });\r\n var data = {\r\n request_time_ms: String(Date.now()),\r\n client_info: {\r\n client_type: 1,\r\n js_client_info: {}\r\n },\r\n log_source: SettingsService.getInstance().logSource,\r\n log_event: log_event\r\n };\r\n /* eslint-enable camelcase */\r\n sendEventsToFl(data, staged).catch(function () {\r\n // If the request fails for some reason, add the events that were attempted\r\n // back to the primary queue to retry later.\r\n queue = __spreadArray(__spreadArray([], staged), queue);\r\n remainingTries--;\r\n consoleLogger.info(\"Tries left: \" + remainingTries + \".\");\r\n processQueue(DEFAULT_SEND_INTERVAL_MS);\r\n });\r\n}\r\nfunction sendEventsToFl(data, staged) {\r\n return postToFlEndpoint(data)\r\n .then(function (res) {\r\n if (!res.ok) {\r\n consoleLogger.info('Call to Firebase backend failed.');\r\n }\r\n return res.json();\r\n })\r\n .then(function (res) {\r\n // Find the next call wait time from the response.\r\n var transportWait = Number(res.nextRequestWaitMillis);\r\n var requestOffset = DEFAULT_SEND_INTERVAL_MS;\r\n if (!isNaN(transportWait)) {\r\n requestOffset = Math.max(transportWait, requestOffset);\r\n }\r\n // Delete request if response include RESPONSE_ACTION_UNKNOWN or DELETE_REQUEST action.\r\n // Otherwise, retry request using normal scheduling if response include RETRY_REQUEST_LATER.\r\n var logResponseDetails = res.logResponseDetails;\r\n if (Array.isArray(logResponseDetails) &&\r\n logResponseDetails.length > 0 &&\r\n logResponseDetails[0].responseAction === 'RETRY_REQUEST_LATER') {\r\n queue = __spreadArray(__spreadArray([], staged), queue);\r\n consoleLogger.info(\"Retry transport request later.\");\r\n }\r\n remainingTries = DEFAULT_REMAINING_TRIES;\r\n // Schedule the next process.\r\n processQueue(requestOffset);\r\n });\r\n}\r\nfunction postToFlEndpoint(data) {\r\n var flTransportFullUrl = SettingsService.getInstance().getFlTransportFullUrl();\r\n return fetch(flTransportFullUrl, {\r\n method: 'POST',\r\n body: JSON.stringify(data)\r\n });\r\n}\r\nfunction addToQueue(evt) {\r\n if (!evt.eventTime || !evt.message) {\r\n throw ERROR_FACTORY.create(\"invalid cc log\" /* INVALID_CC_LOG */);\r\n }\r\n // Add the new event to the queue.\r\n queue = __spreadArray(__spreadArray([], queue), [evt]);\r\n}\r\n/** Log handler for cc service to send the performance logs to the server. */\r\nfunction transportHandler(\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nserializer) {\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 var message = serializer.apply(void 0, args);\r\n addToQueue({\r\n message: message,\r\n eventTime: Date.now()\r\n });\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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/* eslint-enble camelcase */\r\nvar logger;\r\n// This method is not called before initialization.\r\nfunction sendLog(resource, resourceType) {\r\n if (!logger) {\r\n logger = transportHandler(serializer);\r\n }\r\n logger(resource, resourceType);\r\n}\r\nfunction logTrace(trace) {\r\n var settingsService = SettingsService.getInstance();\r\n // Do not log if trace is auto generated and instrumentation is disabled.\r\n if (!settingsService.instrumentationEnabled && trace.isAuto) {\r\n return;\r\n }\r\n // Do not log if trace is custom and data collection is disabled.\r\n if (!settingsService.dataCollectionEnabled && !trace.isAuto) {\r\n return;\r\n }\r\n // Do not log if required apis are not available.\r\n if (!Api.getInstance().requiredApisAvailable()) {\r\n return;\r\n }\r\n // Only log the page load auto traces if page is visible.\r\n if (trace.isAuto && getVisibilityState() !== VisibilityState.VISIBLE) {\r\n return;\r\n }\r\n if (isPerfInitialized()) {\r\n sendTraceLog(trace);\r\n }\r\n else {\r\n // Custom traces can be used before the initialization but logging\r\n // should wait until after.\r\n getInitializationPromise().then(function () { return sendTraceLog(trace); }, function () { return sendTraceLog(trace); });\r\n }\r\n}\r\nfunction sendTraceLog(trace) {\r\n if (!getIid()) {\r\n return;\r\n }\r\n var settingsService = SettingsService.getInstance();\r\n if (!settingsService.loggingEnabled ||\r\n !settingsService.logTraceAfterSampling) {\r\n return;\r\n }\r\n setTimeout(function () { return sendLog(trace, 1 /* Trace */); }, 0);\r\n}\r\nfunction logNetworkRequest(networkRequest) {\r\n var settingsService = SettingsService.getInstance();\r\n // Do not log network requests if instrumentation is disabled.\r\n if (!settingsService.instrumentationEnabled) {\r\n return;\r\n }\r\n // Do not log the js sdk's call to transport service domain to avoid unnecessary cycle.\r\n // Need to blacklist both old and new endpoints to avoid migration gap.\r\n var networkRequestUrl = networkRequest.url;\r\n // Blacklist old log endpoint and new transport endpoint.\r\n // Because Performance SDK doesn't instrument requests sent from SDK itself.\r\n var logEndpointUrl = settingsService.logEndPointUrl.split('?')[0];\r\n var flEndpointUrl = settingsService.flTransportEndpointUrl.split('?')[0];\r\n if (networkRequestUrl === logEndpointUrl ||\r\n networkRequestUrl === flEndpointUrl) {\r\n return;\r\n }\r\n if (!settingsService.loggingEnabled ||\r\n !settingsService.logNetworkAfterSampling) {\r\n return;\r\n }\r\n setTimeout(function () { return sendLog(networkRequest, 0 /* NetworkRequest */); }, 0);\r\n}\r\nfunction serializer(resource, resourceType) {\r\n if (resourceType === 0 /* NetworkRequest */) {\r\n return serializeNetworkRequest(resource);\r\n }\r\n return serializeTrace(resource);\r\n}\r\nfunction serializeNetworkRequest(networkRequest) {\r\n var networkRequestMetric = {\r\n url: networkRequest.url,\r\n http_method: networkRequest.httpMethod || 0,\r\n http_response_code: 200,\r\n response_payload_bytes: networkRequest.responsePayloadBytes,\r\n client_start_time_us: networkRequest.startTimeUs,\r\n time_to_response_initiated_us: networkRequest.timeToResponseInitiatedUs,\r\n time_to_response_completed_us: networkRequest.timeToResponseCompletedUs\r\n };\r\n var perfMetric = {\r\n application_info: getApplicationInfo(),\r\n network_request_metric: networkRequestMetric\r\n };\r\n return JSON.stringify(perfMetric);\r\n}\r\nfunction serializeTrace(trace) {\r\n var traceMetric = {\r\n name: trace.name,\r\n is_auto: trace.isAuto,\r\n client_start_time_us: trace.startTimeUs,\r\n duration_us: trace.durationUs\r\n };\r\n if (Object.keys(trace.counters).length !== 0) {\r\n traceMetric.counters = trace.counters;\r\n }\r\n var customAttributes = trace.getAttributes();\r\n if (Object.keys(customAttributes).length !== 0) {\r\n traceMetric.custom_attributes = customAttributes;\r\n }\r\n var perfMetric = {\r\n application_info: getApplicationInfo(),\r\n trace_metric: traceMetric\r\n };\r\n return JSON.stringify(perfMetric);\r\n}\r\nfunction getApplicationInfo() {\r\n return {\r\n google_app_id: SettingsService.getInstance().getAppId(),\r\n app_instance_id: getIid(),\r\n web_app_info: {\r\n sdk_version: SDK_VERSION,\r\n page_url: Api.getInstance().getUrl(),\r\n service_worker_status: getServiceWorkerStatus(),\r\n visibility_state: getVisibilityState(),\r\n effective_connection_type: getEffectiveConnectionType()\r\n },\r\n application_process_state: 0\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 MAX_METRIC_NAME_LENGTH = 100;\r\nvar RESERVED_AUTO_PREFIX = '_';\r\nvar oobMetrics = [\r\n FIRST_PAINT_COUNTER_NAME,\r\n FIRST_CONTENTFUL_PAINT_COUNTER_NAME,\r\n FIRST_INPUT_DELAY_COUNTER_NAME\r\n];\r\n/**\r\n * Returns true if the metric is custom and does not start with reserved prefix, or if\r\n * the metric is one of out of the box page load trace metrics.\r\n */\r\nfunction isValidMetricName(name, traceName) {\r\n if (name.length === 0 || name.length > MAX_METRIC_NAME_LENGTH) {\r\n return false;\r\n }\r\n return ((traceName &&\r\n traceName.startsWith(OOB_TRACE_PAGE_LOAD_PREFIX) &&\r\n oobMetrics.indexOf(name) > -1) ||\r\n !name.startsWith(RESERVED_AUTO_PREFIX));\r\n}\r\n/**\r\n * Converts the provided value to an integer value to be used in case of a metric.\r\n * @param providedValue Provided number value of the metric that needs to be converted to an integer.\r\n *\r\n * @returns Converted integer number to be set for the metric.\r\n */\r\nfunction convertMetricValueToInteger(providedValue) {\r\n var valueAsInteger = Math.floor(providedValue);\r\n if (valueAsInteger < providedValue) {\r\n consoleLogger.info(\"Metric value should be an Integer, setting the value as : \" + valueAsInteger + \".\");\r\n }\r\n return valueAsInteger;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 Trace = /** @class */ (function () {\r\n /**\r\n * @param name The name of the trace.\r\n * @param isAuto If the trace is auto-instrumented.\r\n * @param traceMeasureName The name of the measure marker in user timing specification. This field\r\n * is only set when the trace is built for logging when the user directly uses the user timing\r\n * api (performance.mark and performance.measure).\r\n */\r\n function Trace(name, isAuto, traceMeasureName) {\r\n if (isAuto === void 0) { isAuto = false; }\r\n this.name = name;\r\n this.isAuto = isAuto;\r\n this.state = 1 /* UNINITIALIZED */;\r\n this.customAttributes = {};\r\n this.counters = {};\r\n this.api = Api.getInstance();\r\n this.randomId = Math.floor(Math.random() * 1000000);\r\n if (!this.isAuto) {\r\n this.traceStartMark = TRACE_START_MARK_PREFIX + \"-\" + this.randomId + \"-\" + this.name;\r\n this.traceStopMark = TRACE_STOP_MARK_PREFIX + \"-\" + this.randomId + \"-\" + this.name;\r\n this.traceMeasure =\r\n traceMeasureName ||\r\n TRACE_MEASURE_PREFIX + \"-\" + this.randomId + \"-\" + this.name;\r\n if (traceMeasureName) {\r\n // For the case of direct user timing traces, no start stop will happen. The measure object\r\n // is already available.\r\n this.calculateTraceMetrics();\r\n }\r\n }\r\n }\r\n /**\r\n * Starts a trace. The measurement of the duration starts at this point.\r\n */\r\n Trace.prototype.start = function () {\r\n if (this.state !== 1 /* UNINITIALIZED */) {\r\n throw ERROR_FACTORY.create(\"trace started\" /* TRACE_STARTED_BEFORE */, {\r\n traceName: this.name\r\n });\r\n }\r\n this.api.mark(this.traceStartMark);\r\n this.state = 2 /* RUNNING */;\r\n };\r\n /**\r\n * Stops the trace. The measurement of the duration of the trace stops at this point and trace\r\n * is logged.\r\n */\r\n Trace.prototype.stop = function () {\r\n if (this.state !== 2 /* RUNNING */) {\r\n throw ERROR_FACTORY.create(\"trace stopped\" /* TRACE_STOPPED_BEFORE */, {\r\n traceName: this.name\r\n });\r\n }\r\n this.state = 3 /* TERMINATED */;\r\n this.api.mark(this.traceStopMark);\r\n this.api.measure(this.traceMeasure, this.traceStartMark, this.traceStopMark);\r\n this.calculateTraceMetrics();\r\n logTrace(this);\r\n };\r\n /**\r\n * Records a trace with predetermined values. If this method is used a trace is created and logged\r\n * directly. No need to use start and stop methods.\r\n * @param startTime Trace start time since epoch in millisec\r\n * @param duration The duraction of the trace in millisec\r\n * @param options An object which can optionally hold maps of custom metrics and custom attributes\r\n */\r\n Trace.prototype.record = function (startTime, duration, options) {\r\n if (startTime <= 0) {\r\n throw ERROR_FACTORY.create(\"nonpositive trace startTime\" /* NONPOSITIVE_TRACE_START_TIME */, {\r\n traceName: this.name\r\n });\r\n }\r\n if (duration <= 0) {\r\n throw ERROR_FACTORY.create(\"nonpositive trace duration\" /* NONPOSITIVE_TRACE_DURATION */, {\r\n traceName: this.name\r\n });\r\n }\r\n this.durationUs = Math.floor(duration * 1000);\r\n this.startTimeUs = Math.floor(startTime * 1000);\r\n if (options && options.attributes) {\r\n this.customAttributes = __assign({}, options.attributes);\r\n }\r\n if (options && options.metrics) {\r\n for (var _i = 0, _a = Object.keys(options.metrics); _i < _a.length; _i++) {\r\n var metric = _a[_i];\r\n if (!isNaN(Number(options.metrics[metric]))) {\r\n this.counters[metric] = Number(Math.floor(options.metrics[metric]));\r\n }\r\n }\r\n }\r\n logTrace(this);\r\n };\r\n /**\r\n * Increments a custom metric by a certain number or 1 if number not specified. Will create a new\r\n * custom metric if one with the given name does not exist. The value will be floored down to an\r\n * integer.\r\n * @param counter Name of the custom metric\r\n * @param numAsInteger Increment by value\r\n */\r\n Trace.prototype.incrementMetric = function (counter, numAsInteger) {\r\n if (numAsInteger === void 0) { numAsInteger = 1; }\r\n if (this.counters[counter] === undefined) {\r\n this.putMetric(counter, numAsInteger);\r\n }\r\n else {\r\n this.putMetric(counter, this.counters[counter] + numAsInteger);\r\n }\r\n };\r\n /**\r\n * Sets a custom metric to a specified value. Will create a new custom metric if one with the\r\n * given name does not exist. The value will be floored down to an integer.\r\n * @param counter Name of the custom metric\r\n * @param numAsInteger Set custom metric to this value\r\n */\r\n Trace.prototype.putMetric = function (counter, numAsInteger) {\r\n if (isValidMetricName(counter, this.name)) {\r\n this.counters[counter] = convertMetricValueToInteger(numAsInteger);\r\n }\r\n else {\r\n throw ERROR_FACTORY.create(\"invalid custom metric name\" /* INVALID_CUSTOM_METRIC_NAME */, {\r\n customMetricName: counter\r\n });\r\n }\r\n };\r\n /**\r\n * Returns the value of the custom metric by that name. If a custom metric with that name does\r\n * not exist will return zero.\r\n * @param counter\r\n */\r\n Trace.prototype.getMetric = function (counter) {\r\n return this.counters[counter] || 0;\r\n };\r\n /**\r\n * Sets a custom attribute of a trace to a certain value.\r\n * @param attr\r\n * @param value\r\n */\r\n Trace.prototype.putAttribute = function (attr, value) {\r\n var isValidName = isValidCustomAttributeName(attr);\r\n var isValidValue = isValidCustomAttributeValue(value);\r\n if (isValidName && isValidValue) {\r\n this.customAttributes[attr] = value;\r\n return;\r\n }\r\n // Throw appropriate error when the attribute name or value is invalid.\r\n if (!isValidName) {\r\n throw ERROR_FACTORY.create(\"invalid attribute name\" /* INVALID_ATTRIBUTE_NAME */, {\r\n attributeName: attr\r\n });\r\n }\r\n if (!isValidValue) {\r\n throw ERROR_FACTORY.create(\"invalid attribute value\" /* INVALID_ATTRIBUTE_VALUE */, {\r\n attributeValue: value\r\n });\r\n }\r\n };\r\n /**\r\n * Retrieves the value a custom attribute of a trace is set to.\r\n * @param attr\r\n */\r\n Trace.prototype.getAttribute = function (attr) {\r\n return this.customAttributes[attr];\r\n };\r\n Trace.prototype.removeAttribute = function (attr) {\r\n if (this.customAttributes[attr] === undefined) {\r\n return;\r\n }\r\n delete this.customAttributes[attr];\r\n };\r\n Trace.prototype.getAttributes = function () {\r\n return __assign({}, this.customAttributes);\r\n };\r\n Trace.prototype.setStartTime = function (startTime) {\r\n this.startTimeUs = startTime;\r\n };\r\n Trace.prototype.setDuration = function (duration) {\r\n this.durationUs = duration;\r\n };\r\n /**\r\n * Calculates and assigns the duration and start time of the trace using the measure performance\r\n * entry.\r\n */\r\n Trace.prototype.calculateTraceMetrics = function () {\r\n var perfMeasureEntries = this.api.getEntriesByName(this.traceMeasure);\r\n var perfMeasureEntry = perfMeasureEntries && perfMeasureEntries[0];\r\n if (perfMeasureEntry) {\r\n this.durationUs = Math.floor(perfMeasureEntry.duration * 1000);\r\n this.startTimeUs = Math.floor((perfMeasureEntry.startTime + this.api.getTimeOrigin()) * 1000);\r\n }\r\n };\r\n /**\r\n * @param navigationTimings A single element array which contains the navigationTIming object of\r\n * the page load\r\n * @param paintTimings A array which contains paintTiming object of the page load\r\n * @param firstInputDelay First input delay in millisec\r\n */\r\n Trace.createOobTrace = function (navigationTimings, paintTimings, firstInputDelay) {\r\n var route = Api.getInstance().getUrl();\r\n if (!route) {\r\n return;\r\n }\r\n var trace = new Trace(OOB_TRACE_PAGE_LOAD_PREFIX + route, true);\r\n var timeOriginUs = Math.floor(Api.getInstance().getTimeOrigin() * 1000);\r\n trace.setStartTime(timeOriginUs);\r\n // navigationTimings includes only one element.\r\n if (navigationTimings && navigationTimings[0]) {\r\n trace.setDuration(Math.floor(navigationTimings[0].duration * 1000));\r\n trace.putMetric('domInteractive', Math.floor(navigationTimings[0].domInteractive * 1000));\r\n trace.putMetric('domContentLoadedEventEnd', Math.floor(navigationTimings[0].domContentLoadedEventEnd * 1000));\r\n trace.putMetric('loadEventEnd', Math.floor(navigationTimings[0].loadEventEnd * 1000));\r\n }\r\n var FIRST_PAINT = 'first-paint';\r\n var FIRST_CONTENTFUL_PAINT = 'first-contentful-paint';\r\n if (paintTimings) {\r\n var firstPaint = paintTimings.find(function (paintObject) { return paintObject.name === FIRST_PAINT; });\r\n if (firstPaint && firstPaint.startTime) {\r\n trace.putMetric(FIRST_PAINT_COUNTER_NAME, Math.floor(firstPaint.startTime * 1000));\r\n }\r\n var firstContentfulPaint = paintTimings.find(function (paintObject) { return paintObject.name === FIRST_CONTENTFUL_PAINT; });\r\n if (firstContentfulPaint && firstContentfulPaint.startTime) {\r\n trace.putMetric(FIRST_CONTENTFUL_PAINT_COUNTER_NAME, Math.floor(firstContentfulPaint.startTime * 1000));\r\n }\r\n if (firstInputDelay) {\r\n trace.putMetric(FIRST_INPUT_DELAY_COUNTER_NAME, Math.floor(firstInputDelay * 1000));\r\n }\r\n }\r\n logTrace(trace);\r\n };\r\n Trace.createUserTimingTrace = function (measureName) {\r\n var trace = new Trace(measureName, false, measureName);\r\n logTrace(trace);\r\n };\r\n return Trace;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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\nfunction createNetworkRequestEntry(entry) {\r\n var performanceEntry = entry;\r\n if (!performanceEntry || performanceEntry.responseStart === undefined) {\r\n return;\r\n }\r\n var timeOrigin = Api.getInstance().getTimeOrigin();\r\n var startTimeUs = Math.floor((performanceEntry.startTime + timeOrigin) * 1000);\r\n var timeToResponseInitiatedUs = performanceEntry.responseStart\r\n ? Math.floor((performanceEntry.responseStart - performanceEntry.startTime) * 1000)\r\n : undefined;\r\n var timeToResponseCompletedUs = Math.floor((performanceEntry.responseEnd - performanceEntry.startTime) * 1000);\r\n // Remove the query params from logged network request url.\r\n var url = performanceEntry.name && performanceEntry.name.split('?')[0];\r\n var networkRequest = {\r\n url: url,\r\n responsePayloadBytes: performanceEntry.transferSize,\r\n startTimeUs: startTimeUs,\r\n timeToResponseInitiatedUs: timeToResponseInitiatedUs,\r\n timeToResponseCompletedUs: timeToResponseCompletedUs\r\n };\r\n logNetworkRequest(networkRequest);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 FID_WAIT_TIME_MS = 5000;\r\nfunction setupOobResources() {\r\n // Do not initialize unless iid is available.\r\n if (!getIid()) {\r\n return;\r\n }\r\n // The load event might not have fired yet, and that means performance navigation timing\r\n // object has a duration of 0. The setup should run after all current tasks in js queue.\r\n setTimeout(function () { return setupOobTraces(); }, 0);\r\n setTimeout(function () { return setupNetworkRequests(); }, 0);\r\n setTimeout(function () { return setupUserTimingTraces(); }, 0);\r\n}\r\nfunction setupNetworkRequests() {\r\n var api = Api.getInstance();\r\n var resources = api.getEntriesByType('resource');\r\n for (var _i = 0, resources_1 = resources; _i < resources_1.length; _i++) {\r\n var resource = resources_1[_i];\r\n createNetworkRequestEntry(resource);\r\n }\r\n api.setupObserver('resource', createNetworkRequestEntry);\r\n}\r\nfunction setupOobTraces() {\r\n var api = Api.getInstance();\r\n var navigationTimings = api.getEntriesByType('navigation');\r\n var paintTimings = api.getEntriesByType('paint');\r\n // If First Input Desly polyfill is added to the page, report the fid value.\r\n // https://github.com/GoogleChromeLabs/first-input-delay\r\n if (api.onFirstInputDelay) {\r\n // If the fid call back is not called for certain time, continue without it.\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n var timeoutId_1 = setTimeout(function () {\r\n Trace.createOobTrace(navigationTimings, paintTimings);\r\n timeoutId_1 = undefined;\r\n }, FID_WAIT_TIME_MS);\r\n api.onFirstInputDelay(function (fid) {\r\n if (timeoutId_1) {\r\n clearTimeout(timeoutId_1);\r\n Trace.createOobTrace(navigationTimings, paintTimings, fid);\r\n }\r\n });\r\n }\r\n else {\r\n Trace.createOobTrace(navigationTimings, paintTimings);\r\n }\r\n}\r\nfunction setupUserTimingTraces() {\r\n var api = Api.getInstance();\r\n // Run through the measure performance entries collected up to this point.\r\n var measures = api.getEntriesByType('measure');\r\n for (var _i = 0, measures_1 = measures; _i < measures_1.length; _i++) {\r\n var measure = measures_1[_i];\r\n createUserTimingTrace(measure);\r\n }\r\n // Setup an observer to capture the measures from this point on.\r\n api.setupObserver('measure', createUserTimingTrace);\r\n}\r\nfunction createUserTimingTrace(measure) {\r\n var measureName = measure.name;\r\n // Do not create a trace, if the user timing marks and measures are created by the sdk itself.\r\n if (measureName.substring(0, TRACE_MEASURE_PREFIX.length) ===\r\n TRACE_MEASURE_PREFIX) {\r\n return;\r\n }\r\n Trace.createUserTimingTrace(measureName);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 PerformanceController = /** @class */ (function () {\r\n function PerformanceController(app) {\r\n this.app = app;\r\n if (Api.getInstance().requiredApisAvailable()) {\r\n validateIndexedDBOpenable()\r\n .then(function (isAvailable) {\r\n if (isAvailable) {\r\n setupTransportService();\r\n getInitializationPromise().then(setupOobResources, setupOobResources);\r\n }\r\n })\r\n .catch(function (error) {\r\n consoleLogger.info(\"Environment doesn't support IndexedDB: \" + error);\r\n });\r\n }\r\n }\r\n PerformanceController.prototype.trace = function (name) {\r\n return new Trace(name);\r\n };\r\n Object.defineProperty(PerformanceController.prototype, \"instrumentationEnabled\", {\r\n get: function () {\r\n return SettingsService.getInstance().instrumentationEnabled;\r\n },\r\n set: function (val) {\r\n SettingsService.getInstance().instrumentationEnabled = val;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(PerformanceController.prototype, \"dataCollectionEnabled\", {\r\n get: function () {\r\n return SettingsService.getInstance().dataCollectionEnabled;\r\n },\r\n set: function (val) {\r\n SettingsService.getInstance().dataCollectionEnabled = val;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return PerformanceController;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 DEFAULT_ENTRY_NAME = '[DEFAULT]';\r\nfunction registerPerformance(instance) {\r\n var factoryMethod = function (app, installations) {\r\n if (app.name !== DEFAULT_ENTRY_NAME) {\r\n throw ERROR_FACTORY.create(\"FB not default\" /* FB_NOT_DEFAULT */);\r\n }\r\n if (typeof window === 'undefined') {\r\n throw ERROR_FACTORY.create(\"no window\" /* NO_WINDOW */);\r\n }\r\n setupApi(window);\r\n SettingsService.getInstance().firebaseAppInstance = app;\r\n SettingsService.getInstance().installationsService = installations;\r\n return new PerformanceController(app);\r\n };\r\n // Register performance with firebase-app.\r\n instance.INTERNAL.registerComponent(new Component('performance', function (container) {\r\n /* Dependencies */\r\n // getImmediate for FirebaseApp will always succeed\r\n var app = container.getProvider('app').getImmediate();\r\n // The following call will always succeed because perf has `import '@firebase/installations'`\r\n var installations = container\r\n .getProvider('installations')\r\n .getImmediate();\r\n return factoryMethod(app, installations);\r\n }, \"PUBLIC\" /* PUBLIC */));\r\n instance.registerVersion(name, version);\r\n}\r\nregisterPerformance(firebase);\n\nexport { registerPerformance };\n//# sourceMappingURL=index.esm.js.map\n","import { __awaiter, __generator, __assign } from 'tslib';\nimport firebase from '@firebase/app';\nimport '@firebase/installations';\nimport { Logger } from '@firebase/logger';\nimport { ErrorFactory, calculateBackoffMillis, FirebaseError, validateIndexedDBOpenable, isIndexedDBAvailable, isBrowserExtension, areCookiesEnabled } from '@firebase/util';\nimport { Component } from '@firebase/component';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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// Key to attach FID to in gtag params.\r\nvar GA_FID_KEY = 'firebase_id';\r\nvar ORIGIN_KEY = 'origin';\r\nvar FETCH_TIMEOUT_MILLIS = 60 * 1000;\r\nvar DYNAMIC_CONFIG_URL = 'https://firebase.googleapis.com/v1alpha/projects/-/apps/{app-id}/webConfig';\r\nvar GTAG_URL = 'https://www.googletagmanager.com/gtag/js';\r\nvar GtagCommand;\r\n(function (GtagCommand) {\r\n GtagCommand[\"EVENT\"] = \"event\";\r\n GtagCommand[\"SET\"] = \"set\";\r\n GtagCommand[\"CONFIG\"] = \"config\";\r\n})(GtagCommand || (GtagCommand = {}));\r\n/**\r\n * Officially recommended event names for gtag.js\r\n * Any other string is also allowed.\r\n *\r\n * @public\r\n */\r\nvar EventName;\r\n(function (EventName) {\r\n EventName[\"ADD_SHIPPING_INFO\"] = \"add_shipping_info\";\r\n EventName[\"ADD_PAYMENT_INFO\"] = \"add_payment_info\";\r\n EventName[\"ADD_TO_CART\"] = \"add_to_cart\";\r\n EventName[\"ADD_TO_WISHLIST\"] = \"add_to_wishlist\";\r\n EventName[\"BEGIN_CHECKOUT\"] = \"begin_checkout\";\r\n /**\r\n * @deprecated\r\n * This event name is deprecated and is unsupported in updated\r\n * Enhanced Ecommerce reports.\r\n */\r\n EventName[\"CHECKOUT_PROGRESS\"] = \"checkout_progress\";\r\n EventName[\"EXCEPTION\"] = \"exception\";\r\n EventName[\"GENERATE_LEAD\"] = \"generate_lead\";\r\n EventName[\"LOGIN\"] = \"login\";\r\n EventName[\"PAGE_VIEW\"] = \"page_view\";\r\n EventName[\"PURCHASE\"] = \"purchase\";\r\n EventName[\"REFUND\"] = \"refund\";\r\n EventName[\"REMOVE_FROM_CART\"] = \"remove_from_cart\";\r\n EventName[\"SCREEN_VIEW\"] = \"screen_view\";\r\n EventName[\"SEARCH\"] = \"search\";\r\n EventName[\"SELECT_CONTENT\"] = \"select_content\";\r\n EventName[\"SELECT_ITEM\"] = \"select_item\";\r\n EventName[\"SELECT_PROMOTION\"] = \"select_promotion\";\r\n /** @deprecated */\r\n EventName[\"SET_CHECKOUT_OPTION\"] = \"set_checkout_option\";\r\n EventName[\"SHARE\"] = \"share\";\r\n EventName[\"SIGN_UP\"] = \"sign_up\";\r\n EventName[\"TIMING_COMPLETE\"] = \"timing_complete\";\r\n EventName[\"VIEW_CART\"] = \"view_cart\";\r\n EventName[\"VIEW_ITEM\"] = \"view_item\";\r\n EventName[\"VIEW_ITEM_LIST\"] = \"view_item_list\";\r\n EventName[\"VIEW_PROMOTION\"] = \"view_promotion\";\r\n EventName[\"VIEW_SEARCH_RESULTS\"] = \"view_search_results\";\r\n})(EventName || (EventName = {}));\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 * Logs an analytics event through the Firebase SDK.\r\n *\r\n * @param gtagFunction Wrapped gtag function that waits for fid to be set before sending an event\r\n * @param eventName Google Analytics event name, choose from standard list or use a custom string.\r\n * @param eventParams Analytics event parameters.\r\n */\r\nfunction logEvent(gtagFunction, initializationPromise, eventName, eventParams, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var measurementId, params;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(options && options.global)) return [3 /*break*/, 1];\r\n gtagFunction(GtagCommand.EVENT, eventName, eventParams);\r\n return [2 /*return*/];\r\n case 1: return [4 /*yield*/, initializationPromise];\r\n case 2:\r\n measurementId = _a.sent();\r\n params = __assign(__assign({}, eventParams), { 'send_to': measurementId });\r\n gtagFunction(GtagCommand.EVENT, eventName, params);\r\n _a.label = 3;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Set screen_name parameter for this Google Analytics ID.\r\n *\r\n * @param gtagFunction Wrapped gtag function that waits for fid to be set before sending an event\r\n * @param screenName Screen name string to set.\r\n */\r\nfunction setCurrentScreen(gtagFunction, initializationPromise, screenName, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var measurementId;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(options && options.global)) return [3 /*break*/, 1];\r\n gtagFunction(GtagCommand.SET, { 'screen_name': screenName });\r\n return [2 /*return*/, Promise.resolve()];\r\n case 1: return [4 /*yield*/, initializationPromise];\r\n case 2:\r\n measurementId = _a.sent();\r\n gtagFunction(GtagCommand.CONFIG, measurementId, {\r\n update: true,\r\n 'screen_name': screenName\r\n });\r\n _a.label = 3;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Set user_id parameter for this Google Analytics ID.\r\n *\r\n * @param gtagFunction Wrapped gtag function that waits for fid to be set before sending an event\r\n * @param id User ID string to set\r\n */\r\nfunction setUserId(gtagFunction, initializationPromise, id, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var measurementId;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(options && options.global)) return [3 /*break*/, 1];\r\n gtagFunction(GtagCommand.SET, { 'user_id': id });\r\n return [2 /*return*/, Promise.resolve()];\r\n case 1: return [4 /*yield*/, initializationPromise];\r\n case 2:\r\n measurementId = _a.sent();\r\n gtagFunction(GtagCommand.CONFIG, measurementId, {\r\n update: true,\r\n 'user_id': id\r\n });\r\n _a.label = 3;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Set all other user properties other than user_id and screen_name.\r\n *\r\n * @param gtagFunction Wrapped gtag function that waits for fid to be set before sending an event\r\n * @param properties Map of user properties to set\r\n */\r\nfunction setUserProperties(gtagFunction, initializationPromise, properties, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var flatProperties, _i, _a, key, measurementId;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!(options && options.global)) return [3 /*break*/, 1];\r\n flatProperties = {};\r\n for (_i = 0, _a = Object.keys(properties); _i < _a.length; _i++) {\r\n key = _a[_i];\r\n // use dot notation for merge behavior in gtag.js\r\n flatProperties[\"user_properties.\" + key] = properties[key];\r\n }\r\n gtagFunction(GtagCommand.SET, flatProperties);\r\n return [2 /*return*/, Promise.resolve()];\r\n case 1: return [4 /*yield*/, initializationPromise];\r\n case 2:\r\n measurementId = _b.sent();\r\n gtagFunction(GtagCommand.CONFIG, measurementId, {\r\n update: true,\r\n 'user_properties': properties\r\n });\r\n _b.label = 3;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Set whether collection is enabled for this ID.\r\n *\r\n * @param enabled If true, collection is enabled for this ID.\r\n */\r\nfunction setAnalyticsCollectionEnabled(initializationPromise, enabled) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var measurementId;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, initializationPromise];\r\n case 1:\r\n measurementId = _a.sent();\r\n window[\"ga-disable-\" + measurementId] = !enabled;\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 logger = new Logger('@firebase/analytics');\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 * Inserts gtag script tag into the page to asynchronously download gtag.\r\n * @param dataLayerName Name of datalayer (most often the default, \"_dataLayer\").\r\n */\r\nfunction insertScriptTag(dataLayerName, measurementId) {\r\n var script = document.createElement('script');\r\n script.src = GTAG_URL + \"?l=\" + dataLayerName + \"&id=\" + measurementId;\r\n script.async = true;\r\n document.head.appendChild(script);\r\n}\r\n/**\r\n * Get reference to, or create, global datalayer.\r\n * @param dataLayerName Name of datalayer (most often the default, \"_dataLayer\").\r\n */\r\nfunction getOrCreateDataLayer(dataLayerName) {\r\n // Check for existing dataLayer and create if needed.\r\n var dataLayer = [];\r\n if (Array.isArray(window[dataLayerName])) {\r\n dataLayer = window[dataLayerName];\r\n }\r\n else {\r\n window[dataLayerName] = dataLayer;\r\n }\r\n return dataLayer;\r\n}\r\n/**\r\n * Wrapped gtag logic when gtag is called with 'config' command.\r\n *\r\n * @param gtagCore Basic gtag function that just appends to dataLayer.\r\n * @param initializationPromisesMap Map of appIds to their initialization promises.\r\n * @param dynamicConfigPromisesList Array of dynamic config fetch promises.\r\n * @param measurementIdToAppId Map of GA measurementIDs to corresponding Firebase appId.\r\n * @param measurementId GA Measurement ID to set config for.\r\n * @param gtagParams Gtag config params to set.\r\n */\r\nfunction gtagOnConfig(gtagCore, initializationPromisesMap, dynamicConfigPromisesList, measurementIdToAppId, measurementId, gtagParams) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var correspondingAppId, dynamicConfigResults, foundConfig, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n correspondingAppId = measurementIdToAppId[measurementId];\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 7, , 8]);\r\n if (!correspondingAppId) return [3 /*break*/, 3];\r\n return [4 /*yield*/, initializationPromisesMap[correspondingAppId]];\r\n case 2:\r\n _a.sent();\r\n return [3 /*break*/, 6];\r\n case 3: return [4 /*yield*/, Promise.all(dynamicConfigPromisesList)];\r\n case 4:\r\n dynamicConfigResults = _a.sent();\r\n foundConfig = dynamicConfigResults.find(function (config) { return config.measurementId === measurementId; });\r\n if (!foundConfig) return [3 /*break*/, 6];\r\n return [4 /*yield*/, initializationPromisesMap[foundConfig.appId]];\r\n case 5:\r\n _a.sent();\r\n _a.label = 6;\r\n case 6: return [3 /*break*/, 8];\r\n case 7:\r\n e_1 = _a.sent();\r\n logger.error(e_1);\r\n return [3 /*break*/, 8];\r\n case 8:\r\n gtagCore(GtagCommand.CONFIG, measurementId, gtagParams);\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Wrapped gtag logic when gtag is called with 'event' command.\r\n *\r\n * @param gtagCore Basic gtag function that just appends to dataLayer.\r\n * @param initializationPromisesMap Map of appIds to their initialization promises.\r\n * @param dynamicConfigPromisesList Array of dynamic config fetch promises.\r\n * @param measurementId GA Measurement ID to log event to.\r\n * @param gtagParams Params to log with this event.\r\n */\r\nfunction gtagOnEvent(gtagCore, initializationPromisesMap, dynamicConfigPromisesList, measurementId, gtagParams) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var initializationPromisesToWaitFor, gaSendToList, dynamicConfigResults, _loop_1, _i, gaSendToList_1, sendToId, state_1, e_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 4, , 5]);\r\n initializationPromisesToWaitFor = [];\r\n if (!(gtagParams && gtagParams['send_to'])) return [3 /*break*/, 2];\r\n gaSendToList = gtagParams['send_to'];\r\n // Make it an array if is isn't, so it can be dealt with the same way.\r\n if (!Array.isArray(gaSendToList)) {\r\n gaSendToList = [gaSendToList];\r\n }\r\n return [4 /*yield*/, Promise.all(dynamicConfigPromisesList)];\r\n case 1:\r\n dynamicConfigResults = _a.sent();\r\n _loop_1 = function (sendToId) {\r\n // Any fetched dynamic measurement ID that matches this 'send_to' ID\r\n var foundConfig = dynamicConfigResults.find(function (config) { return config.measurementId === sendToId; });\r\n var initializationPromise = foundConfig && initializationPromisesMap[foundConfig.appId];\r\n if (initializationPromise) {\r\n initializationPromisesToWaitFor.push(initializationPromise);\r\n }\r\n else {\r\n // Found an item in 'send_to' that is not associated\r\n // directly with an FID, possibly a group. Empty this array,\r\n // exit the loop early, and let it get populated below.\r\n initializationPromisesToWaitFor = [];\r\n return \"break\";\r\n }\r\n };\r\n for (_i = 0, gaSendToList_1 = gaSendToList; _i < gaSendToList_1.length; _i++) {\r\n sendToId = gaSendToList_1[_i];\r\n state_1 = _loop_1(sendToId);\r\n if (state_1 === \"break\")\r\n break;\r\n }\r\n _a.label = 2;\r\n case 2:\r\n // This will be unpopulated if there was no 'send_to' field , or\r\n // if not all entries in the 'send_to' field could be mapped to\r\n // a FID. In these cases, wait on all pending initialization promises.\r\n if (initializationPromisesToWaitFor.length === 0) {\r\n initializationPromisesToWaitFor = Object.values(initializationPromisesMap);\r\n }\r\n // Run core gtag function with args after all relevant initialization\r\n // promises have been resolved.\r\n return [4 /*yield*/, Promise.all(initializationPromisesToWaitFor)];\r\n case 3:\r\n // Run core gtag function with args after all relevant initialization\r\n // promises have been resolved.\r\n _a.sent();\r\n // Workaround for http://b/141370449 - third argument cannot be undefined.\r\n gtagCore(GtagCommand.EVENT, measurementId, gtagParams || {});\r\n return [3 /*break*/, 5];\r\n case 4:\r\n e_2 = _a.sent();\r\n logger.error(e_2);\r\n return [3 /*break*/, 5];\r\n case 5: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Wraps a standard gtag function with extra code to wait for completion of\r\n * relevant initialization promises before sending requests.\r\n *\r\n * @param gtagCore Basic gtag function that just appends to dataLayer.\r\n * @param initializationPromisesMap Map of appIds to their initialization promises.\r\n * @param dynamicConfigPromisesList Array of dynamic config fetch promises.\r\n * @param measurementIdToAppId Map of GA measurementIDs to corresponding Firebase appId.\r\n */\r\nfunction wrapGtag(gtagCore, \r\n/**\r\n * Allows wrapped gtag calls to wait on whichever intialization promises are required,\r\n * depending on the contents of the gtag params' `send_to` field, if any.\r\n */\r\ninitializationPromisesMap, \r\n/**\r\n * Wrapped gtag calls sometimes require all dynamic config fetches to have returned\r\n * before determining what initialization promises (which include FIDs) to wait for.\r\n */\r\ndynamicConfigPromisesList, \r\n/**\r\n * Wrapped gtag config calls can narrow down which initialization promise (with FID)\r\n * to wait for if the measurementId is already fetched, by getting the corresponding appId,\r\n * which is the key for the initialization promises map.\r\n */\r\nmeasurementIdToAppId) {\r\n /**\r\n * Wrapper around gtag that ensures FID is sent with gtag calls.\r\n * @param command Gtag command type.\r\n * @param idOrNameOrParams Measurement ID if command is EVENT/CONFIG, params if command is SET.\r\n * @param gtagParams Params if event is EVENT/CONFIG.\r\n */\r\n function gtagWrapper(command, idOrNameOrParams, gtagParams) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var e_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 6, , 7]);\r\n if (!(command === GtagCommand.EVENT)) return [3 /*break*/, 2];\r\n // If EVENT, second arg must be measurementId.\r\n return [4 /*yield*/, gtagOnEvent(gtagCore, initializationPromisesMap, dynamicConfigPromisesList, idOrNameOrParams, gtagParams)];\r\n case 1:\r\n // If EVENT, second arg must be measurementId.\r\n _a.sent();\r\n return [3 /*break*/, 5];\r\n case 2:\r\n if (!(command === GtagCommand.CONFIG)) return [3 /*break*/, 4];\r\n // If CONFIG, second arg must be measurementId.\r\n return [4 /*yield*/, gtagOnConfig(gtagCore, initializationPromisesMap, dynamicConfigPromisesList, measurementIdToAppId, idOrNameOrParams, gtagParams)];\r\n case 3:\r\n // If CONFIG, second arg must be measurementId.\r\n _a.sent();\r\n return [3 /*break*/, 5];\r\n case 4:\r\n // If SET, second arg must be params.\r\n gtagCore(GtagCommand.SET, idOrNameOrParams);\r\n _a.label = 5;\r\n case 5: return [3 /*break*/, 7];\r\n case 6:\r\n e_3 = _a.sent();\r\n logger.error(e_3);\r\n return [3 /*break*/, 7];\r\n case 7: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n }\r\n return gtagWrapper;\r\n}\r\n/**\r\n * Creates global gtag function or wraps existing one if found.\r\n * This wrapped function attaches Firebase instance ID (FID) to gtag 'config' and\r\n * 'event' calls that belong to the GAID associated with this Firebase instance.\r\n *\r\n * @param initializationPromisesMap Map of appIds to their initialization promises.\r\n * @param dynamicConfigPromisesList Array of dynamic config fetch promises.\r\n * @param measurementIdToAppId Map of GA measurementIDs to corresponding Firebase appId.\r\n * @param dataLayerName Name of global GA datalayer array.\r\n * @param gtagFunctionName Name of global gtag function (\"gtag\" if not user-specified).\r\n */\r\nfunction wrapOrCreateGtag(initializationPromisesMap, dynamicConfigPromisesList, measurementIdToAppId, dataLayerName, gtagFunctionName) {\r\n // Create a basic core gtag function\r\n var gtagCore = 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 // Must push IArguments object, not an array.\r\n window[dataLayerName].push(arguments);\r\n };\r\n // Replace it with existing one if found\r\n if (window[gtagFunctionName] &&\r\n typeof window[gtagFunctionName] === 'function') {\r\n // @ts-ignore\r\n gtagCore = window[gtagFunctionName];\r\n }\r\n window[gtagFunctionName] = wrapGtag(gtagCore, initializationPromisesMap, dynamicConfigPromisesList, measurementIdToAppId);\r\n return {\r\n gtagCore: gtagCore,\r\n wrappedGtag: window[gtagFunctionName]\r\n };\r\n}\r\n/**\r\n * Returns first script tag in DOM matching our gtag url pattern.\r\n */\r\nfunction findGtagScriptOnPage() {\r\n var scriptTags = window.document.getElementsByTagName('script');\r\n for (var _i = 0, _a = Object.values(scriptTags); _i < _a.length; _i++) {\r\n var tag = _a[_i];\r\n if (tag.src && tag.src.includes(GTAG_URL)) {\r\n return tag;\r\n }\r\n }\r\n return null;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\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 _a;\r\nvar ERRORS = (_a = {},\r\n _a[\"already-exists\" /* ALREADY_EXISTS */] = 'A Firebase Analytics instance with the appId {$id} ' +\r\n ' already exists. ' +\r\n 'Only one Firebase Analytics instance can be created for each appId.',\r\n _a[\"already-initialized\" /* ALREADY_INITIALIZED */] = 'Firebase Analytics has already been initialized.' +\r\n 'settings() must be called before initializing any Analytics instance' +\r\n 'or it will have no effect.',\r\n _a[\"interop-component-reg-failed\" /* INTEROP_COMPONENT_REG_FAILED */] = 'Firebase Analytics Interop Component failed to instantiate: {$reason}',\r\n _a[\"invalid-analytics-context\" /* INVALID_ANALYTICS_CONTEXT */] = 'Firebase Analytics is not supported in this environment. ' +\r\n 'Wrap initialization of analytics in analytics.isSupported() ' +\r\n 'to prevent initialization in unsupported environments. Details: {$errorInfo}',\r\n _a[\"indexeddb-unavailable\" /* INDEXEDDB_UNAVAILABLE */] = 'IndexedDB unavailable or restricted in this environment. ' +\r\n 'Wrap initialization of analytics in analytics.isSupported() ' +\r\n 'to prevent initialization in unsupported environments. Details: {$errorInfo}',\r\n _a[\"fetch-throttle\" /* FETCH_THROTTLE */] = 'The config fetch request timed out while in an exponential backoff state.' +\r\n ' Unix timestamp in milliseconds when fetch request throttling ends: {$throttleEndTimeMillis}.',\r\n _a[\"config-fetch-failed\" /* CONFIG_FETCH_FAILED */] = 'Dynamic config fetch failed: [{$httpStatus}] {$responseMessage}',\r\n _a[\"no-api-key\" /* NO_API_KEY */] = 'The \"apiKey\" field is empty in the local Firebase config. Firebase Analytics requires this field to' +\r\n 'contain a valid API key.',\r\n _a[\"no-app-id\" /* NO_APP_ID */] = 'The \"appId\" field is empty in the local Firebase config. Firebase Analytics requires this field to' +\r\n 'contain a valid app ID.',\r\n _a);\r\nvar ERROR_FACTORY = new ErrorFactory('analytics', 'Analytics', ERRORS);\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\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 * Backoff factor for 503 errors, which we want to be conservative about\r\n * to avoid overloading servers. Each retry interval will be\r\n * BASE_INTERVAL_MILLIS * LONG_RETRY_FACTOR ^ retryCount, so the second one\r\n * will be ~30 seconds (with fuzzing).\r\n */\r\nvar LONG_RETRY_FACTOR = 30;\r\n/**\r\n * Base wait interval to multiplied by backoffFactor^backoffCount.\r\n */\r\nvar BASE_INTERVAL_MILLIS = 1000;\r\n/**\r\n * Stubbable retry data storage class.\r\n */\r\nvar RetryData = /** @class */ (function () {\r\n function RetryData(throttleMetadata, intervalMillis) {\r\n if (throttleMetadata === void 0) { throttleMetadata = {}; }\r\n if (intervalMillis === void 0) { intervalMillis = BASE_INTERVAL_MILLIS; }\r\n this.throttleMetadata = throttleMetadata;\r\n this.intervalMillis = intervalMillis;\r\n }\r\n RetryData.prototype.getThrottleMetadata = function (appId) {\r\n return this.throttleMetadata[appId];\r\n };\r\n RetryData.prototype.setThrottleMetadata = function (appId, metadata) {\r\n this.throttleMetadata[appId] = metadata;\r\n };\r\n RetryData.prototype.deleteThrottleMetadata = function (appId) {\r\n delete this.throttleMetadata[appId];\r\n };\r\n return RetryData;\r\n}());\r\nvar defaultRetryData = new RetryData();\r\n/**\r\n * Set GET request headers.\r\n * @param apiKey App API key.\r\n */\r\nfunction getHeaders(apiKey) {\r\n return new Headers({\r\n Accept: 'application/json',\r\n 'x-goog-api-key': apiKey\r\n });\r\n}\r\n/**\r\n * Fetches dynamic config from backend.\r\n * @param app Firebase app to fetch config for.\r\n */\r\nfunction fetchDynamicConfig(appFields) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var appId, apiKey, request, appUrl, response, errorMessage, jsonResponse;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n appId = appFields.appId, apiKey = appFields.apiKey;\r\n request = {\r\n method: 'GET',\r\n headers: getHeaders(apiKey)\r\n };\r\n appUrl = DYNAMIC_CONFIG_URL.replace('{app-id}', appId);\r\n return [4 /*yield*/, fetch(appUrl, request)];\r\n case 1:\r\n response = _b.sent();\r\n if (!(response.status !== 200 && response.status !== 304)) return [3 /*break*/, 6];\r\n errorMessage = '';\r\n _b.label = 2;\r\n case 2:\r\n _b.trys.push([2, 4, , 5]);\r\n return [4 /*yield*/, response.json()];\r\n case 3:\r\n jsonResponse = (_b.sent());\r\n if ((_a = jsonResponse.error) === null || _a === void 0 ? void 0 : _a.message) {\r\n errorMessage = jsonResponse.error.message;\r\n }\r\n return [3 /*break*/, 5];\r\n case 4:\r\n _b.sent();\r\n return [3 /*break*/, 5];\r\n case 5: throw ERROR_FACTORY.create(\"config-fetch-failed\" /* CONFIG_FETCH_FAILED */, {\r\n httpStatus: response.status,\r\n responseMessage: errorMessage\r\n });\r\n case 6: return [2 /*return*/, response.json()];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Fetches dynamic config from backend, retrying if failed.\r\n * @param app Firebase app to fetch config for.\r\n */\r\nfunction fetchDynamicConfigWithRetry(app, \r\n// retryData and timeoutMillis are parameterized to allow passing a different value for testing.\r\nretryData, timeoutMillis) {\r\n if (retryData === void 0) { retryData = defaultRetryData; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a, appId, apiKey, measurementId, throttleMetadata, signal;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n _a = app.options, appId = _a.appId, apiKey = _a.apiKey, measurementId = _a.measurementId;\r\n if (!appId) {\r\n throw ERROR_FACTORY.create(\"no-app-id\" /* NO_APP_ID */);\r\n }\r\n if (!apiKey) {\r\n if (measurementId) {\r\n return [2 /*return*/, {\r\n measurementId: measurementId,\r\n appId: appId\r\n }];\r\n }\r\n throw ERROR_FACTORY.create(\"no-api-key\" /* NO_API_KEY */);\r\n }\r\n throttleMetadata = retryData.getThrottleMetadata(appId) || {\r\n backoffCount: 0,\r\n throttleEndTimeMillis: Date.now()\r\n };\r\n signal = new AnalyticsAbortSignal();\r\n setTimeout(function () { return __awaiter(_this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n // Note a very low delay, eg < 10ms, can elapse before listeners are initialized.\r\n signal.abort();\r\n return [2 /*return*/];\r\n });\r\n }); }, timeoutMillis !== undefined ? timeoutMillis : FETCH_TIMEOUT_MILLIS);\r\n return [2 /*return*/, attemptFetchDynamicConfigWithRetry({ appId: appId, apiKey: apiKey, measurementId: measurementId }, throttleMetadata, signal, retryData)];\r\n });\r\n });\r\n}\r\n/**\r\n * Runs one retry attempt.\r\n * @param appFields Necessary app config fields.\r\n * @param throttleMetadata Ongoing metadata to determine throttling times.\r\n * @param signal Abort signal.\r\n */\r\nfunction attemptFetchDynamicConfigWithRetry(appFields, _a, signal, retryData // for testing\r\n) {\r\n var throttleEndTimeMillis = _a.throttleEndTimeMillis, backoffCount = _a.backoffCount;\r\n if (retryData === void 0) { retryData = defaultRetryData; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var appId, measurementId, e_1, response, e_2, backoffMillis, throttleMetadata;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n appId = appFields.appId, measurementId = appFields.measurementId;\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, setAbortableTimeout(signal, throttleEndTimeMillis)];\r\n case 2:\r\n _b.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_1 = _b.sent();\r\n if (measurementId) {\r\n logger.warn(\"Timed out fetching this Firebase app's measurement ID from the server.\" +\r\n (\" Falling back to the measurement ID \" + measurementId) +\r\n (\" provided in the \\\"measurementId\\\" field in the local Firebase config. [\" + e_1.message + \"]\"));\r\n return [2 /*return*/, { appId: appId, measurementId: measurementId }];\r\n }\r\n throw e_1;\r\n case 4:\r\n _b.trys.push([4, 6, , 7]);\r\n return [4 /*yield*/, fetchDynamicConfig(appFields)];\r\n case 5:\r\n response = _b.sent();\r\n // Note the SDK only clears throttle state if response is success or non-retriable.\r\n retryData.deleteThrottleMetadata(appId);\r\n return [2 /*return*/, response];\r\n case 6:\r\n e_2 = _b.sent();\r\n if (!isRetriableError(e_2)) {\r\n retryData.deleteThrottleMetadata(appId);\r\n if (measurementId) {\r\n logger.warn(\"Failed to fetch this Firebase app's measurement ID from the server.\" +\r\n (\" Falling back to the measurement ID \" + measurementId) +\r\n (\" provided in the \\\"measurementId\\\" field in the local Firebase config. [\" + e_2.message + \"]\"));\r\n return [2 /*return*/, { appId: appId, measurementId: measurementId }];\r\n }\r\n else {\r\n throw e_2;\r\n }\r\n }\r\n backoffMillis = Number(e_2.customData.httpStatus) === 503\r\n ? calculateBackoffMillis(backoffCount, retryData.intervalMillis, LONG_RETRY_FACTOR)\r\n : calculateBackoffMillis(backoffCount, retryData.intervalMillis);\r\n throttleMetadata = {\r\n throttleEndTimeMillis: Date.now() + backoffMillis,\r\n backoffCount: backoffCount + 1\r\n };\r\n // Persists state.\r\n retryData.setThrottleMetadata(appId, throttleMetadata);\r\n logger.debug(\"Calling attemptFetch again in \" + backoffMillis + \" millis\");\r\n return [2 /*return*/, attemptFetchDynamicConfigWithRetry(appFields, throttleMetadata, signal, retryData)];\r\n case 7: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Supports waiting on a backoff by:\r\n *\r\n *
    \r\n *
  • Promisifying setTimeout, so we can set a timeout in our Promise chain
  • \r\n *
  • Listening on a signal bus for abort events, just like the Fetch API
  • \r\n *
  • Failing in the same way the Fetch API fails, so timing out a live request and a throttled\r\n * request appear the same.
  • \r\n *
\r\n *\r\n *

Visible for testing.\r\n */\r\nfunction setAbortableTimeout(signal, throttleEndTimeMillis) {\r\n return new Promise(function (resolve, reject) {\r\n // Derives backoff from given end time, normalizing negative numbers to zero.\r\n var backoffMillis = Math.max(throttleEndTimeMillis - Date.now(), 0);\r\n var timeout = setTimeout(resolve, backoffMillis);\r\n // Adds listener, rather than sets onabort, because signal is a shared object.\r\n signal.addEventListener(function () {\r\n clearTimeout(timeout);\r\n // If the request completes before this timeout, the rejection has no effect.\r\n reject(ERROR_FACTORY.create(\"fetch-throttle\" /* FETCH_THROTTLE */, {\r\n throttleEndTimeMillis: throttleEndTimeMillis\r\n }));\r\n });\r\n });\r\n}\r\n/**\r\n * Returns true if the {@link Error} indicates a fetch request may succeed later.\r\n */\r\nfunction isRetriableError(e) {\r\n if (!(e instanceof FirebaseError) || !e.customData) {\r\n return false;\r\n }\r\n // Uses string index defined by ErrorData, which FirebaseError implements.\r\n var httpStatus = Number(e.customData['httpStatus']);\r\n return (httpStatus === 429 ||\r\n httpStatus === 500 ||\r\n httpStatus === 503 ||\r\n httpStatus === 504);\r\n}\r\n/**\r\n * Shims a minimal AbortSignal (copied from Remote Config).\r\n *\r\n *

AbortController's AbortSignal conveniently decouples fetch timeout logic from other aspects\r\n * of networking, such as retries. Firebase doesn't use AbortController enough to justify a\r\n * polyfill recommendation, like we do with the Fetch API, but this minimal shim can easily be\r\n * swapped out if/when we do.\r\n */\r\nvar AnalyticsAbortSignal = /** @class */ (function () {\r\n function AnalyticsAbortSignal() {\r\n this.listeners = [];\r\n }\r\n AnalyticsAbortSignal.prototype.addEventListener = function (listener) {\r\n this.listeners.push(listener);\r\n };\r\n AnalyticsAbortSignal.prototype.abort = function () {\r\n this.listeners.forEach(function (listener) { return listener(); });\r\n };\r\n return AnalyticsAbortSignal;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\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\nfunction validateIndexedDB() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!!isIndexedDBAvailable()) return [3 /*break*/, 1];\r\n logger.warn(ERROR_FACTORY.create(\"indexeddb-unavailable\" /* INDEXEDDB_UNAVAILABLE */, {\r\n errorInfo: 'IndexedDB is not available in this environment.'\r\n }).message);\r\n return [2 /*return*/, false];\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, validateIndexedDBOpenable()];\r\n case 2:\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_1 = _a.sent();\r\n logger.warn(ERROR_FACTORY.create(\"indexeddb-unavailable\" /* INDEXEDDB_UNAVAILABLE */, {\r\n errorInfo: e_1\r\n }).message);\r\n return [2 /*return*/, false];\r\n case 4: return [2 /*return*/, true];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Initialize the analytics instance in gtag.js by calling config command with fid.\r\n *\r\n * NOTE: We combine analytics initialization and setting fid together because we want fid to be\r\n * part of the `page_view` event that's sent during the initialization\r\n * @param app Firebase app\r\n * @param gtagCore The gtag function that's not wrapped.\r\n * @param dynamicConfigPromisesList Array of all dynamic config promises.\r\n * @param measurementIdToAppId Maps measurementID to appID.\r\n * @param installations FirebaseInstallations instance.\r\n *\r\n * @returns Measurement ID.\r\n */\r\nfunction initializeIds(app, dynamicConfigPromisesList, measurementIdToAppId, installations, gtagCore, dataLayerName) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var dynamicConfigPromise, fidPromise, _a, dynamicConfig, fid, configProperties;\r\n var _b;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n dynamicConfigPromise = fetchDynamicConfigWithRetry(app);\r\n // Once fetched, map measurementIds to appId, for ease of lookup in wrapped gtag function.\r\n dynamicConfigPromise\r\n .then(function (config) {\r\n measurementIdToAppId[config.measurementId] = config.appId;\r\n if (app.options.measurementId &&\r\n config.measurementId !== app.options.measurementId) {\r\n logger.warn(\"The measurement ID in the local Firebase config (\" + app.options.measurementId + \")\" +\r\n (\" does not match the measurement ID fetched from the server (\" + config.measurementId + \").\") +\r\n \" To ensure analytics events are always sent to the correct Analytics property,\" +\r\n \" update the\" +\r\n \" measurement ID field in the local config or remove it from the local config.\");\r\n }\r\n })\r\n .catch(function (e) { return logger.error(e); });\r\n // Add to list to track state of all dynamic config promises.\r\n dynamicConfigPromisesList.push(dynamicConfigPromise);\r\n fidPromise = validateIndexedDB().then(function (envIsValid) {\r\n if (envIsValid) {\r\n return installations.getId();\r\n }\r\n else {\r\n return undefined;\r\n }\r\n });\r\n return [4 /*yield*/, Promise.all([\r\n dynamicConfigPromise,\r\n fidPromise\r\n ])];\r\n case 1:\r\n _a = _c.sent(), dynamicConfig = _a[0], fid = _a[1];\r\n // Detect if user has already put the gtag