{"version":3,"file":"bundle.min.js","sources":["../../../node_modules/tslib/tslib.es6.js","../../../src/login/Helper.ts","../../../src/login/LoginController.ts","../../../src/login/HomeController.ts","../../../src/login/ChangePasswordController.ts","../../../node_modules/qrious/dist/qrious.js","../../../src/login/ChangeTotpController.ts","../../../src/login/ChangeHwTotpController.ts","../../../src/login/Fido2Controller.ts","../../../src/login/SecondFactorController.ts","../../../src/login/DeleteSecondFactorController.ts","../../../node_modules/core-js/internals/global.js","../../../node_modules/core-js/internals/fails.js","../../../node_modules/core-js/internals/descriptors.js","../../../node_modules/core-js/internals/object-property-is-enumerable.js","../../../node_modules/core-js/internals/create-property-descriptor.js","../../../node_modules/core-js/internals/is-object.js","../../../node_modules/core-js/internals/classof-raw.js","../../../node_modules/core-js/internals/indexed-object.js","../../../node_modules/core-js/internals/require-object-coercible.js","../../../node_modules/core-js/internals/to-indexed-object.js","../../../node_modules/core-js/internals/is-callable.js","../../../node_modules/core-js/internals/get-built-in.js","../../../node_modules/core-js/internals/engine-user-agent.js","../../../node_modules/core-js/internals/engine-v8-version.js","../../../node_modules/core-js/internals/a-callable.js","../../../node_modules/core-js/internals/native-symbol.js","../../../node_modules/core-js/internals/use-symbol-as-uid.js","../../../node_modules/core-js/internals/is-symbol.js","../../../node_modules/core-js/internals/try-to-string.js","../../../node_modules/core-js/internals/get-method.js","../../../node_modules/core-js/internals/ordinary-to-primitive.js","../../../node_modules/core-js/internals/set-global.js","../../../node_modules/core-js/internals/shared-store.js","../../../node_modules/core-js/internals/shared.js","../../../node_modules/core-js/internals/to-object.js","../../../node_modules/core-js/internals/has-own-property.js","../../../node_modules/core-js/internals/uid.js","../../../node_modules/core-js/internals/well-known-symbol.js","../../../node_modules/core-js/internals/to-primitive.js","../../../node_modules/core-js/internals/to-property-key.js","../../../node_modules/core-js/internals/document-create-element.js","../../../node_modules/core-js/internals/ie8-dom-define.js","../../../node_modules/core-js/internals/object-get-own-property-descriptor.js","../../../node_modules/core-js/internals/an-object.js","../../../node_modules/core-js/internals/object-define-property.js","../../../node_modules/core-js/internals/create-non-enumerable-property.js","../../../node_modules/core-js/internals/inspect-source.js","../../../node_modules/core-js/internals/internal-state.js","../../../node_modules/core-js/internals/native-weak-map.js","../../../node_modules/core-js/internals/shared-key.js","../../../node_modules/core-js/internals/hidden-keys.js","../../../node_modules/core-js/internals/function-name.js","../../../node_modules/core-js/internals/redefine.js","../../../node_modules/core-js/internals/to-integer-or-infinity.js","../../../node_modules/core-js/internals/to-absolute-index.js","../../../node_modules/core-js/internals/to-length.js","../../../node_modules/core-js/internals/length-of-array-like.js","../../../node_modules/core-js/internals/array-includes.js","../../../node_modules/core-js/internals/object-keys-internal.js","../../../node_modules/core-js/internals/enum-bug-keys.js","../../../node_modules/core-js/internals/object-get-own-property-names.js","../../../node_modules/core-js/internals/object-get-own-property-symbols.js","../../../node_modules/core-js/internals/own-keys.js","../../../node_modules/core-js/internals/copy-constructor-properties.js","../../../node_modules/core-js/internals/is-forced.js","../../../node_modules/core-js/internals/export.js","../../../node_modules/core-js/internals/native-promise-constructor.js","../../../node_modules/core-js/internals/redefine-all.js","../../../node_modules/core-js/internals/a-possible-prototype.js","../../../node_modules/core-js/internals/object-set-prototype-of.js","../../../node_modules/core-js/internals/set-to-string-tag.js","../../../node_modules/core-js/internals/set-species.js","../../../node_modules/core-js/internals/an-instance.js","../../../node_modules/core-js/internals/iterators.js","../../../node_modules/core-js/internals/is-array-iterator-method.js","../../../node_modules/core-js/internals/function-bind-context.js","../../../node_modules/core-js/internals/to-string-tag-support.js","../../../node_modules/core-js/internals/iterate.js","../../../node_modules/core-js/internals/classof.js","../../../node_modules/core-js/internals/get-iterator-method.js","../../../node_modules/core-js/internals/get-iterator.js","../../../node_modules/core-js/internals/iterator-close.js","../../../node_modules/core-js/internals/check-correctness-of-iteration.js","../../../node_modules/core-js/internals/is-constructor.js","../../../node_modules/core-js/internals/task.js","../../../node_modules/core-js/internals/a-constructor.js","../../../node_modules/core-js/internals/species-constructor.js","../../../node_modules/core-js/internals/html.js","../../../node_modules/core-js/internals/engine-is-ios.js","../../../node_modules/core-js/internals/engine-is-node.js","../../../node_modules/core-js/internals/microtask.js","../../../node_modules/core-js/internals/engine-is-ios-pebble.js","../../../node_modules/core-js/internals/engine-is-webos-webkit.js","../../../node_modules/core-js/internals/new-promise-capability.js","../../../node_modules/core-js/internals/promise-resolve.js","../../../node_modules/core-js/modules/es.promise.js","../../../node_modules/core-js/internals/host-report-errors.js","../../../node_modules/core-js/internals/engine-is-browser.js","../../../node_modules/core-js/internals/perform.js","../../../node_modules/core-js/internals/object-create.js","../../../node_modules/core-js/internals/object-keys.js","../../../node_modules/core-js/internals/object-define-properties.js","../../../node_modules/core-js/internals/add-to-unscopables.js","../../../node_modules/core-js/internals/iterators-core.js","../../../node_modules/core-js/internals/correct-prototype-getter.js","../../../node_modules/core-js/internals/object-get-prototype-of.js","../../../node_modules/core-js/internals/create-iterator-constructor.js","../../../node_modules/core-js/internals/define-iterator.js","../../../node_modules/core-js/modules/es.array.iterator.js","../../../node_modules/core-js/modules/web.url-search-params.js","../../../node_modules/core-js/internals/native-url.js","../../../node_modules/core-js/internals/to-string.js","../../../node_modules/whatwg-fetch/fetch.js","../../../src/login/app.ts","../../../src/login/pictureOfTheDay.ts"],"sourcesContent":["/*! *****************************************************************************\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\nexport function __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\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __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}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __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}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","const baseURL = \"https://login.rescuetrack.com\"\n\nenum ContentType {\n JSON = 'application/json'\n}\n\ntype HTTPError = {\n text: string\n code: number\n}\n\nexport async function postJSON(url: string, data: any, isExternalEnv: boolean): Promise {\n const response = await fetch(isExternalEnv ? baseURL + url : url, {\n method: 'POST',\n body: JSON.stringify(data),\n headers: makeJSONHTTPHeaders()\n })\n if (!response.ok) throw new Error(response.statusText)\n\n const isJSON = response.headers.get('content-type')?.includes(ContentType.JSON)\n if (isJSON === true) {\n return response.json()\n }\n}\n\nexport async function fetchJSON(url: string, isExternalEnv: boolean): Promise {\n const response = await fetch(isExternalEnv ? baseURL + url : url, {\n headers: makeJSONHTTPHeaders()\n })\n if (!response.ok || response.status === 204) throw {text: response.statusText, code: response.status} as HTTPError\n\n return response.json()\n}\n\nfunction makeJSONHTTPHeaders(): Headers {\n const headers = new Headers()\n headers.append('Content-Type', ContentType.JSON)\n headers.append('Accept', ContentType.JSON )\n return headers\n}\n\nexport function toggleClass(element: HTMLElement, className: string, force: boolean) {\n if (element == null) return\n if (force) {\n element.classList.add(className)\n } else {\n element.classList.remove(className)\n }\n}\n","import { postJSON, toggleClass } from \"./Helper\";\n\nexport interface LoginControllerConfig {\n Form: HTMLFormElement,\n ResetPasswordForm: HTMLFormElement,\n UsernameInput: HTMLInputElement,\n PasswordInput: HTMLInputElement,\n TotpInput: HTMLInputElement,\n TotpInputGroup: HTMLInputElement,\n Fido2LoginButton: HTMLButtonElement;\n LoginButton: HTMLButtonElement;\n ErrorMessageLabel: HTMLElement\n}\n\ninterface LoginRequest {\n username: string;\n credentials: UserCredential[];\n}\n\ninterface LoginResult {\n loggedIn: boolean;\n loginMessage: string;\n requiredCredentials: UserCredential[];\n redirectUri: string;\n}\n\ninterface UserCredential {\n type: string;\n value: string;\n challenge: string;\n}\n\ninterface ResetPasswordStep1Request {\n username: string;\n}\n\n\nexport class LoginController {\n private config: LoginControllerConfig;\n private isExternalEnv: boolean;\n\n constructor(config: LoginControllerConfig, isExternalEnv: boolean) {\n this.config = config;\n this.isExternalEnv = isExternalEnv;\n this.AttachEventHandlers();\n }\n\n private AttachEventHandlers = () => {\n this.config.Form?.addEventListener('submit', this.OnLoginFormSubmit);\n this.config.ResetPasswordForm?.addEventListener('submit', this.OnResetPasswordFormSubmit);\n this.config.Fido2LoginButton?.addEventListener('click', this.OnFido2LoginButtonClick);\n }\n\n private OnFido2LoginButtonClick = (e) => {\n e.preventDefault();\n\n var request = {\n username: this.config.UsernameInput.value\n };\n\n postJSON(\"/api/authentication/v1/assertionOptions\", request, this.isExternalEnv)\n .then(result => this.onAssertionOptionsSuccess(result))\n .catch(reason => console.log(reason))\n }\n\n private onAssertionOptionsSuccess(makeAssertionOptions) {\n console.log(\"Assertion Options Object\", makeAssertionOptions);\n makeAssertionOptions = makeAssertionOptions.options;\n\n // show options error to user\n if (makeAssertionOptions.status !== \"ok\") {\n console.log(\"Error creating assertion options\");\n console.log(makeAssertionOptions.errorMessage);\n console.error(makeAssertionOptions.errorMessage);\n return;\n }\n\n // todo: switch this to coercebase64\n const challenge = makeAssertionOptions.challenge.replace(/-/g, \"+\").replace(/_/g, \"/\");\n makeAssertionOptions.challenge = Uint8Array.from((atob(challenge)), c => (c).charCodeAt(0));\n\n // fix escaping. Change this to coerce\n makeAssertionOptions.allowCredentials.forEach(function (listItem) {\n var fixedId = listItem.id.replace(/\\_/g, \"/\").replace(/\\-/g, \"+\");\n listItem.id = Uint8Array.from((atob(fixedId)), c => (c).charCodeAt(0));\n });\n\n console.log(\"Assertion options\", makeAssertionOptions);\n\n // ask browser for credentials (browser will ask connected authenticators)\n let credential;\n try {\n credential = navigator.credentials.get({ publicKey: makeAssertionOptions }).then((assertedCredential) => {\n console.log(\"promise assertedCredentials\", assertedCredential);\n try {\n //await verifyAssertionWithServer(credential);\n // Move data into Arrays incase it is super long\n let authData = new Uint8Array((assertedCredential).response.authenticatorData);\n let clientDataJSON = new Uint8Array((assertedCredential).response.clientDataJSON);\n let rawId = new Uint8Array((assertedCredential).rawId);\n let sig = new Uint8Array((assertedCredential).response.signature);\n const data = {\n id: assertedCredential.id,\n rawId: this.coerceToBase64Url(rawId),\n type: assertedCredential.type,\n extensions: (assertedCredential).getClientExtensionResults(),\n response: {\n authenticatorData: this.coerceToBase64Url(authData),\n clientDataJson: this.coerceToBase64Url(clientDataJSON),\n signature: this.coerceToBase64Url(sig)\n }\n };\n\n try {\n let credentials = this.GetCredentials();\n credentials.push({\n type: \"fido2\",\n value: JSON.stringify(data),\n challenge: \"\"\n });\n\n this.PerformLoginRequest(credentials);\n\n /*var queryParams = window.location.href.slice(window.location.href.indexOf('?') + 1)\n\n jQuery.ajax({\n //\"url\": baseURL + \"api/authentication/v1/makeAssertion\",\n \"url\": baseURL + \"api/authentication/login?\" + queryParams,\n \"dataType\": \"json\",\n \"type\": \"post\",\n \"contentType\": \"application/json\",\n \"data\": JSON.stringify({ ClientResponse: data, username: \"test\" }),\n \"success\": function (response) {\n\n console.log(\"Assertion Object\", response);\n\n // show error\n if (response.status !== \"ok\") {\n console.log(\"Error doing assertion\");\n console.log(response.errorMessage);\n console.error(response.errorMessage);\n return;\n }\n console.log(\"Login successful!\");\n }\n });*/\n } catch (e) {\n console.error(\"Could not verify assertion\", e);\n }\n } catch (e) {\n console.error(\"Could not verify assertion\", e);\n }\n });\n } catch (err) {\n console.error(err.message ? err.message : err);\n }\n }\n\n private coerceToBase64Url(thing) {\n // Array or ArrayBuffer to Uint8Array\n if (Array.isArray(thing)) {\n thing = Uint8Array.from(thing);\n }\n\n if (thing instanceof ArrayBuffer) {\n thing = new Uint8Array(thing);\n }\n\n // Uint8Array to base64\n if (thing instanceof Uint8Array) {\n var str = \"\";\n var len = thing.byteLength;\n\n for (var i = 0; i < len; i++) {\n str += String.fromCharCode(thing[i]);\n }\n thing = window.btoa(str);\n }\n\n if (typeof thing !== \"string\") {\n throw new Error(\"could not coerce to string\");\n }\n\n // base64 to base64url\n // NOTE: \"=\" at the end of challenge is optional, strip it off here\n thing = thing.replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=*$/g, \"\");\n\n return thing;\n };\n\n private OnResetPasswordFormSubmit = (e) => {\n e.preventDefault();\n\n var username = this.config.UsernameInput.value\n var request: ResetPasswordStep1Request = {\n username: username\n }\n\n postJSON(\"/api/authentication/v1/resetPasswordStep1\", request, this.isExternalEnv)\n .then(() => this.OnResetPasswordSuccess())\n .catch(reason => this.OnResetPasswordFail())\n }\n\n private OnResetPasswordSuccess() {\n document.getElementById(\"changePassword-error-message\").classList.add(\"d-none\");\n document.getElementById(\"changePassword-success-message\").classList.remove(\"d-none\");\n setTimeout(function () { document.location.href = \"resetpasswordstep2.html\" }, 2000);\n }\n\n private OnResetPasswordFail() {\n document.getElementById(\"changePassword-success-message\").classList.add(\"d-none\");\n document.getElementById(\"changePassword-error-message\").classList.remove(\"d-none\");\n }\n\n private GetCredentials() {\n let credentials: UserCredential[] = [];\n\n credentials.push({\n type: \"password\",\n value: this.config.PasswordInput.value,\n challenge: \"\"\n });\n\n let otp: string = this.config.TotpInput.value;\n if (otp != \"\") {\n credentials.push({\n type: \"totp\",\n value: otp,\n challenge: \"\"\n });\n credentials.push({\n type: \"hwtotp\",\n value: otp,\n challenge: \"\"\n });\n }\n\n return credentials;\n }\n\n private PerformLoginRequest(credentials: UserCredential[] = null) {\n credentials = credentials == null ? this.GetCredentials() : credentials;\n\n let request: LoginRequest = {\n username: this.config.UsernameInput.value,\n credentials: credentials\n };\n\n var queryParams = window.location.href.slice(window.location.href.indexOf('?') + 1)\n\n postJSON(\"/api/authentication/login?\" + queryParams, request, this.isExternalEnv)\n .then(result => this.OnLoginSuccess(result))\n .catch(reason => this.OnLoginFail(reason))\n }\n\n private OnLoginFormSubmit = (e) => {\n e.preventDefault()\n\n this.PerformLoginRequest();\n }\n\n private OnLoginSuccess = (response: LoginResult) => {\n if (response.loggedIn) {\n window.location.replace(response.redirectUri);\n } else {\n toggleClass(this.config.ErrorMessageLabel, \"d-none\", response.loginMessage == \"\");\n this.config.ErrorMessageLabel.innerHTML = response.loginMessage;\n\n let totpRequired = response.requiredCredentials.filter(c => c.type == \"totp\" || c.type == \"hwtotp\").length > 0;\n\n //if (totpRequired) response.requiredCredentials.pop(); // TODO: check if the order of the credentials is always guaranteed\n\n toggleClass(this.config.TotpInputGroup, \"d-none\", !totpRequired);\n this.config.TotpInput.focus();\n\n let fido2Required = response.requiredCredentials.filter(c => c.type == \"fido2\").length > 0;\n toggleClass(this.config.Fido2LoginButton, \"d-none\", !fido2Required);\n this.config.Fido2LoginButton.disabled = !fido2Required;\n\n toggleClass(this.config.LoginButton, \"d-none\", !totpRequired && fido2Required);\n }\n }\n\n private OnLoginFail = (error: any) => {\n console.error(error);\n toggleClass(this.config.ErrorMessageLabel, \"d-none\", false);\n this.config.ErrorMessageLabel.innerText = error?.toString() ?? \"Error\";\n }\n}","import { fetchJSON } from \"./Helper\";\n\nexport interface HomeControllerConfig {\n DisplayNameLabel: HTMLElement\n PortalTitle: HTMLElement\n PortalSubTitle: HTMLElement\n PortalLegalInfo: HTMLElement\n}\n\ninterface FrontendUserInformation {\n displayName: string;\n}\n\ninterface PortalSettings {\n title: string;\n subTitle: string;\n legalInfo: string\n}\n\nexport class HomeController {\n private config: HomeControllerConfig\n\n constructor(config: HomeControllerConfig) {\n this.config = config;\n }\n\n public UpdateDisplayName = (isExternalEnv: boolean) => {\n fetchJSON(\"/api/authentication/v1/getUserInformation\", isExternalEnv)\n .then(result => {\n this.OnGetUserInformationSuccess(result)\n })\n .catch(reason => {\n this.OnGetUserInformationFail()\n })\n }\n\n public UpdatePortalSettings = (): Promise => {\n return fetchJSON(\"/api/authentication/v1/getPortalSettings\", false)\n .then(result => {\n this.OnGetPortalSettingsSuccess(result)\n })\n }\n\n private OnGetPortalSettingsSuccess = (response: PortalSettings) => {\n this.config.PortalTitle.innerText = response.title;\n this.config.PortalSubTitle.innerText = response.subTitle;\n this.config.PortalLegalInfo.innerHTML = response.legalInfo;\n }\n\n private OnGetUserInformationSuccess = (response: FrontendUserInformation) => {\n this.config.DisplayNameLabel.innerText = response.displayName;\n }\n\n private OnGetUserInformationFail = () => {\n if (window.location.href.indexOf(\"index.html\") != -1) window.location.href = \"login.html\";\n }\n}\n","import { postJSON, toggleClass } from \"./Helper\";\n\nexport interface ChangePasswordControllerConfig {\n Form: HTMLFormElement;\n ResetPasswordTokenInput: HTMLInputElement;\n CurrentPasswordInput: HTMLInputElement;\n NewPasswordInput: HTMLInputElement;\n RepeatNewPasswordInput: HTMLInputElement;\n}\n\ninterface ResetPasswordTokenExistsRequest {\n token: string;\n}\n\ninterface ResetPasswordTokenExistsResult {\n isValid: boolean;\n}\n\ninterface CheckCurrentPasswordRequest {\n password: string;\n}\n\nexport interface CheckCurrentPasswordResult {\n matches: boolean;\n}\n\nexport interface PasswordPolicyValidationRequest {\n password: string;\n}\n\ninterface PasswordPolicyValidationResult {\n isValid: boolean;\n violatedPolicyMessage: string;\n}\n\ninterface ChangePasswordRequest {\n currentPassword: string;\n newPassword: string;\n}\n\nexport interface ChangeCredentialsResult {\n success: boolean;\n errorMessage: string;\n}\n\ninterface ResetPasswordStep2Request {\n token: string;\n newPassword: string;\n}\n\nexport class ChangePasswordController {\n private config: ChangePasswordControllerConfig;\n private isExternalEnv: boolean;\n\n constructor(config: ChangePasswordControllerConfig, isExternalEnv: boolean) {\n this.isExternalEnv = isExternalEnv\n this.config = config;\n this.AttachEventHandlers();\n if (this.getUrlParameter(\"token\") !== null) {\n this.config.ResetPasswordTokenInput.value = this.getUrlParameter(\"token\").toString();\n this.OnResetPasswordTokenInputChanged();\n }\n }\n\n private AttachEventHandlers = () => {\n this.config.Form?.addEventListener('submit', this.OnChangePasswordFormSubmit);\n this.config.ResetPasswordTokenInput?.addEventListener(\"input\", this.OnResetPasswordTokenInputChanged);\n this.config.CurrentPasswordInput?.addEventListener(\"input\", this.OnChangePasswordCurrentPasswordInputChanged);\n this.config.NewPasswordInput?.addEventListener(\"input\", this.OnChangePasswordNewPasswordInputChanged);\n this.config.RepeatNewPasswordInput?.addEventListener(\"input\", this.OnChangePasswordRepeatNewPasswordInputChanged);\n }\n \n private OnChangePasswordCurrentPasswordInputChanged = () => {\n let password = this.config.CurrentPasswordInput?.value;\n this.ValidateCurrentPassword(password);\n }\n\n private OnResetPasswordTokenInputChanged = () => {\n let token = this.config.ResetPasswordTokenInput?.value\n this.ValidateCurrentToken(token);\n }\n\n private ValidateCurrentToken = (token: string) => {\n let request: ResetPasswordTokenExistsRequest = {\n token: token\n };\n\n postJSON(\"/api/authentication/v1/checkIfResetPasswordTokenExists\", request, this.isExternalEnv)\n .then(result => this.OnResetPasswordTokenValidated(result))\n .catch(reason => console.log(reason));\n }\n\n private OnResetPasswordTokenValidated = (response: ResetPasswordTokenExistsResult) => {\n toggleClass(this.config.ResetPasswordTokenInput, \"is-valid\", response.isValid);\n toggleClass(this.config.ResetPasswordTokenInput, \"is-invalid\", !response.isValid);\n if (response.isValid) this.config.NewPasswordInput.focus();\n }\n\n private ValidateCurrentPassword = (password: string) => {\n let request: PasswordPolicyValidationRequest = {\n password: password\n };\n\n postJSON(\"/api/authentication/v1/checkCurrentPassword\", request, this.isExternalEnv)\n .then(result => this.OnCurrentPasswordValidated(result))\n .catch(reason => console.log(reason));\n }\n\n private OnCurrentPasswordValidated = (response: CheckCurrentPasswordResult) => {\n toggleClass(this.config.CurrentPasswordInput, \"is-valid\", response.matches);\n toggleClass(this.config.CurrentPasswordInput, \"is-invalid\", !response.matches);\n }\n\n private OnChangePasswordRepeatNewPasswordInputChanged = () =>{\n this.ValidateIfNewPasswordsMatch();\n }\n\n private ValidateIfNewPasswordsMatch = () => {\n let newPassword = this.config.NewPasswordInput.value;\n let repeatNewPassword = this.config.RepeatNewPasswordInput.value;\n\n let passwordsMatch = newPassword == repeatNewPassword;\n toggleClass(this.config.RepeatNewPasswordInput, \"is-valid\", passwordsMatch);\n toggleClass(this.config.RepeatNewPasswordInput, \"is-invalid\", !passwordsMatch);\n }\n\n private OnChangePasswordNewPasswordInputChanged = () => {\n let password = this.config.NewPasswordInput.value;\n this.ValidateNewPassword(password);\n }\n\n private ValidateNewPassword = (password: string) => {\n let request: PasswordPolicyValidationRequest = {\n password: password\n };\n\n postJSON(\"/api/authentication/v1/checkPasswordPolicy\", request, this.isExternalEnv)\n .then(result => this.OnNewPasswordValidated(result))\n .catch(reason => console.log(reason));\n }\n\n private OnNewPasswordValidated = (result: PasswordPolicyValidationResult) => { \n toggleClass(this.config.NewPasswordInput, \"is-valid\", result.isValid);\n toggleClass(this.config.NewPasswordInput, \"is-invalid\", !result.isValid);\n let violatedPolicyMessageAvailable = result.violatedPolicyMessage != null && result.violatedPolicyMessage != \"\";\n document.getElementById(\"password-policy\").innerText = violatedPolicyMessageAvailable ? result.violatedPolicyMessage : \"Password doesn't match policy.\";\n }\n\n private getUrlParameter(parameterName: string) {\n var urlVariables = window.location.search.substring(1).split(\"&\");\n\n for (var i = 0; i < urlVariables.length; i++) {\n var sParameterName = urlVariables[i].split(\"=\");\n\n if (sParameterName[0] === parameterName) {\n return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]);\n }\n }\n return null;\n }\n\n private OnChangePasswordFormSubmit = (e: any) => {\n e.preventDefault();\n\n var changePasswordToken = this.config.ResetPasswordTokenInput?.value;\n var newPassword = this.config.NewPasswordInput?.value;\n var repeatNewPassword = this.config.RepeatNewPasswordInput?.value;\n\n if (newPassword != repeatNewPassword) {\n document.getElementById(\"changePassword-error-message\").classList.remove(\"d-none\");\n document.getElementById(\"changePassword-error-message\").innerText = \"Passwords mismatch\";\n return;\n }\n\n if (changePasswordToken == null) {\n const request: ChangePasswordRequest = {\n currentPassword: this.config.CurrentPasswordInput?.value,\n newPassword: newPassword\n };\n\n\n postJSON(\"/api/authentication/v1/changePassword\", request, this.isExternalEnv)\n .then(result => this.OnChangePasswordSuccess(result))\n .catch(reason => this.OnChangePasswordFail());\n } else {\n var resetPasswordStep2Request: ResetPasswordStep2Request = {\n token: changePasswordToken.toString(),\n newPassword: newPassword\n };\n\n postJSON(\"/api/authentication/v1/resetPasswordStep2\", resetPasswordStep2Request, this.isExternalEnv)\n .then(result => this.OnChangePasswordSuccess(result))\n .catch(reason => this.OnChangePasswordFail());\n }\n }\n\n private OnChangePasswordSuccess = (response: ChangeCredentialsResult) => {\n toggleClass(document.getElementById(\"changePassword-success-message\"), \"d-none\", !response.success);\n let errorMessageAvailable = response.errorMessage != null && response.errorMessage != \"\";\n toggleClass(document.getElementById(\"changePassword-error-message\"), \"d-none\", response.success);\n document.getElementById(\"changePassword-error-message\").innerText = errorMessageAvailable ? response.errorMessage : \"\";\n setTimeout(function () { document.location.href = \"index.html\" }, 2000);\n }\n\n private OnChangePasswordFail = () => {\n console.error(\"password change failed\");\n }\n}","/*\n * QRious v4.0.2\n * Copyright (C) 2017 Alasdair Mercer\n * Copyright (C) 2010 Tom Zerucha\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.QRious = factory());\n}(this, (function () { 'use strict';\n\n /*\n * Copyright (C) 2017 Alasdair Mercer, !ninja\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n /**\n * A bare-bones constructor for surrogate prototype swapping.\n *\n * @private\n * @constructor\n */\n var Constructor = /* istanbul ignore next */ function() {};\n /**\n * A reference to Object.prototype.hasOwnProperty.\n *\n * @private\n * @type {Function}\n */\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n /**\n * A reference to Array.prototype.slice.\n *\n * @private\n * @type {Function}\n */\n var slice = Array.prototype.slice;\n\n /**\n * Creates an object which inherits the given prototype.\n *\n * Optionally, the created object can be extended further with the specified properties.\n *\n * @param {Object} prototype - the prototype to be inherited by the created object\n * @param {Object} [properties] - the optional properties to be extended by the created object\n * @return {Object} The newly created object.\n * @private\n */\n function createObject(prototype, properties) {\n var result;\n /* istanbul ignore next */\n if (typeof Object.create === 'function') {\n result = Object.create(prototype);\n } else {\n Constructor.prototype = prototype;\n result = new Constructor();\n Constructor.prototype = null;\n }\n\n if (properties) {\n extendObject(true, result, properties);\n }\n\n return result;\n }\n\n /**\n * Extends the constructor to which this method is associated with the prototype and/or\n * statics provided.\n *\n * If name is provided, it will be used as the class name and can be accessed via a special\n * class_ property on the child constructor, otherwise the class name of the super constructor will be used\n * instead. The class name may also be used string representation for instances of the child constructor (via\n * toString), but this is not applicable to the lite version of Nevis.\n *\n * If constructor is provided, it will be used as the constructor for the child, otherwise a simple\n * constructor which only calls the super constructor will be used instead.\n *\n * The super constructor can be accessed via a special super_ property on the child constructor.\n *\n * @param {string} [name=this.class_] - the class name to be used for the child constructor\n * @param {Function} [constructor] - the constructor for the child\n * @param {Object} [prototype] - the prototype properties to be defined for the child\n * @param {Object} [statics] - the static properties to be defined for the child\n * @return {Function} The child constructor provided or the one created if none was given.\n * @public\n */\n function extend(name, constructor, prototype, statics) {\n var superConstructor = this;\n\n if (typeof name !== 'string') {\n statics = prototype;\n prototype = constructor;\n constructor = name;\n name = null;\n }\n\n if (typeof constructor !== 'function') {\n statics = prototype;\n prototype = constructor;\n constructor = function() {\n return superConstructor.apply(this, arguments);\n };\n }\n\n extendObject(false, constructor, superConstructor, statics);\n\n constructor.prototype = createObject(superConstructor.prototype, prototype);\n constructor.prototype.constructor = constructor;\n\n constructor.class_ = name || superConstructor.class_;\n constructor.super_ = superConstructor;\n\n return constructor;\n }\n\n /**\n * Extends the specified target object with the properties in each of the sources provided.\n *\n * if any source is null it will be ignored.\n *\n * @param {boolean} own - true to only copy own properties from sources onto\n * target; otherwise false\n * @param {Object} target - the target object which should be extended\n * @param {...Object} [sources] - the source objects whose properties are to be copied onto target\n * @return {void}\n * @private\n */\n function extendObject(own, target, sources) {\n sources = slice.call(arguments, 2);\n\n var property;\n var source;\n\n for (var i = 0, length = sources.length; i < length; i++) {\n source = sources[i];\n\n for (property in source) {\n if (!own || hasOwnProperty.call(source, property)) {\n target[property] = source[property];\n }\n }\n }\n }\n\n var extend_1 = extend;\n\n /**\n * The base class from which all others should extend.\n *\n * @public\n * @constructor\n */\n function Nevis() {}\n Nevis.class_ = 'Nevis';\n Nevis.super_ = Object;\n\n /**\n * Extends the constructor to which this method is associated with the prototype and/or\n * statics provided.\n *\n * If name is provided, it will be used as the class name and can be accessed via a special\n * class_ property on the child constructor, otherwise the class name of the super constructor will be used\n * instead. The class name may also be used string representation for instances of the child constructor (via\n * toString), but this is not applicable to the lite version of Nevis.\n *\n * If constructor is provided, it will be used as the constructor for the child, otherwise a simple\n * constructor which only calls the super constructor will be used instead.\n *\n * The super constructor can be accessed via a special super_ property on the child constructor.\n *\n * @param {string} [name=this.class_] - the class name to be used for the child constructor\n * @param {Function} [constructor] - the constructor for the child\n * @param {Object} [prototype] - the prototype properties to be defined for the child\n * @param {Object} [statics] - the static properties to be defined for the child\n * @return {Function} The child constructor provided or the one created if none was given.\n * @public\n * @static\n * @memberof Nevis\n */\n Nevis.extend = extend_1;\n\n var nevis = Nevis;\n\n var lite = nevis;\n\n /**\n * Responsible for rendering a QR code {@link Frame} on a specific type of element.\n *\n * A renderer may be dependant on the rendering of another element, so the ordering of their execution is important.\n *\n * The rendering of a element can be deferred by disabling the renderer initially, however, any attempt get the element\n * from the renderer will result in it being immediately enabled and the element being rendered.\n *\n * @param {QRious} qrious - the {@link QRious} instance to be used\n * @param {*} element - the element onto which the QR code is to be rendered\n * @param {boolean} [enabled] - true this {@link Renderer} is enabled; otherwise false.\n * @public\n * @class\n * @extends Nevis\n */\n var Renderer = lite.extend(function(qrious, element, enabled) {\n /**\n * The {@link QRious} instance.\n *\n * @protected\n * @type {QRious}\n * @memberof Renderer#\n */\n this.qrious = qrious;\n\n /**\n * The element onto which this {@link Renderer} is rendering the QR code.\n *\n * @protected\n * @type {*}\n * @memberof Renderer#\n */\n this.element = element;\n this.element.qrious = qrious;\n\n /**\n * Whether this {@link Renderer} is enabled.\n *\n * @protected\n * @type {boolean}\n * @memberof Renderer#\n */\n this.enabled = Boolean(enabled);\n }, {\n\n /**\n * Draws the specified QR code frame on the underlying element.\n *\n * Implementations of {@link Renderer} must override this method with their own specific logic.\n *\n * @param {Frame} frame - the {@link Frame} to be drawn\n * @return {void}\n * @protected\n * @abstract\n * @memberof Renderer#\n */\n draw: function(frame) {},\n\n /**\n * Returns the element onto which this {@link Renderer} is rendering the QR code.\n *\n * If this method is called while this {@link Renderer} is disabled, it will be immediately enabled and rendered\n * before the element is returned.\n *\n * @return {*} The element.\n * @public\n * @memberof Renderer#\n */\n getElement: function() {\n if (!this.enabled) {\n this.enabled = true;\n this.render();\n }\n\n return this.element;\n },\n\n /**\n * Calculates the size (in pixel units) to represent an individual module within the QR code based on the\n * frame provided.\n *\n * Any configured padding will be excluded from the returned size.\n *\n * The returned value will be at least one, even in cases where the size of the QR code does not fit its contents.\n * This is done so that the inevitable clipping is handled more gracefully since this way at least something is\n * displayed instead of just a blank space filled by the background color.\n *\n * @param {Frame} frame - the {@link Frame} from which the module size is to be derived\n * @return {number} The pixel size for each module in the QR code which will be no less than one.\n * @protected\n * @memberof Renderer#\n */\n getModuleSize: function(frame) {\n var qrious = this.qrious;\n var padding = qrious.padding || 0;\n var pixels = Math.floor((qrious.size - (padding * 2)) / frame.width);\n\n return Math.max(1, pixels);\n },\n\n /**\n * Calculates the offset/padding (in pixel units) to be inserted before the QR code based on the frame\n * provided.\n *\n * The returned value will be zero if there is no available offset or if the size of the QR code does not fit its\n * contents. It will never be a negative value. This is done so that the inevitable clipping appears more naturally\n * and it is not clipped from all directions.\n *\n * @param {Frame} frame - the {@link Frame} from which the offset is to be derived\n * @return {number} The pixel offset for the QR code which will be no less than zero.\n * @protected\n * @memberof Renderer#\n */\n getOffset: function(frame) {\n var qrious = this.qrious;\n var padding = qrious.padding;\n\n if (padding != null) {\n return padding;\n }\n\n var moduleSize = this.getModuleSize(frame);\n var offset = Math.floor((qrious.size - (moduleSize * frame.width)) / 2);\n\n return Math.max(0, offset);\n },\n\n /**\n * Renders a QR code on the underlying element based on the frame provided.\n *\n * @param {Frame} frame - the {@link Frame} to be rendered\n * @return {void}\n * @public\n * @memberof Renderer#\n */\n render: function(frame) {\n if (this.enabled) {\n this.resize();\n this.reset();\n this.draw(frame);\n }\n },\n\n /**\n * Resets the underlying element, effectively clearing any previously rendered QR code.\n *\n * Implementations of {@link Renderer} must override this method with their own specific logic.\n *\n * @return {void}\n * @protected\n * @abstract\n * @memberof Renderer#\n */\n reset: function() {},\n\n /**\n * Ensures that the size of the underlying element matches that defined on the associated {@link QRious} instance.\n *\n * Implementations of {@link Renderer} must override this method with their own specific logic.\n *\n * @return {void}\n * @protected\n * @abstract\n * @memberof Renderer#\n */\n resize: function() {}\n\n });\n\n var Renderer_1 = Renderer;\n\n /**\n * An implementation of {@link Renderer} for working with canvas elements.\n *\n * @public\n * @class\n * @extends Renderer\n */\n var CanvasRenderer = Renderer_1.extend({\n\n /**\n * @override\n */\n draw: function(frame) {\n var i, j;\n var qrious = this.qrious;\n var moduleSize = this.getModuleSize(frame);\n var offset = this.getOffset(frame);\n var context = this.element.getContext('2d');\n\n context.fillStyle = qrious.foreground;\n context.globalAlpha = qrious.foregroundAlpha;\n\n for (i = 0; i < frame.width; i++) {\n for (j = 0; j < frame.width; j++) {\n if (frame.buffer[(j * frame.width) + i]) {\n context.fillRect((moduleSize * i) + offset, (moduleSize * j) + offset, moduleSize, moduleSize);\n }\n }\n }\n },\n\n /**\n * @override\n */\n reset: function() {\n var qrious = this.qrious;\n var context = this.element.getContext('2d');\n var size = qrious.size;\n\n context.lineWidth = 1;\n context.clearRect(0, 0, size, size);\n context.fillStyle = qrious.background;\n context.globalAlpha = qrious.backgroundAlpha;\n context.fillRect(0, 0, size, size);\n },\n\n /**\n * @override\n */\n resize: function() {\n var element = this.element;\n\n element.width = element.height = this.qrious.size;\n }\n\n });\n\n var CanvasRenderer_1 = CanvasRenderer;\n\n /* eslint no-multi-spaces: \"off\" */\n\n\n\n /**\n * Contains alignment pattern information.\n *\n * @public\n * @class\n * @extends Nevis\n */\n var Alignment = lite.extend(null, {\n\n /**\n * The alignment pattern block.\n *\n * @public\n * @static\n * @type {number[]}\n * @memberof Alignment\n */\n BLOCK: [\n 0, 11, 15, 19, 23, 27, 31,\n 16, 18, 20, 22, 24, 26, 28, 20, 22, 24, 24, 26, 28, 28, 22, 24, 24,\n 26, 26, 28, 28, 24, 24, 26, 26, 26, 28, 28, 24, 26, 26, 26, 28, 28\n ]\n\n });\n\n var Alignment_1 = Alignment;\n\n /* eslint no-multi-spaces: \"off\" */\n\n\n\n /**\n * Contains error correction information.\n *\n * @public\n * @class\n * @extends Nevis\n */\n var ErrorCorrection = lite.extend(null, {\n\n /**\n * The error correction blocks.\n *\n * There are four elements per version. The first two indicate the number of blocks, then the data width, and finally\n * the ECC width.\n *\n * @public\n * @static\n * @type {number[]}\n * @memberof ErrorCorrection\n */\n BLOCKS: [\n 1, 0, 19, 7, 1, 0, 16, 10, 1, 0, 13, 13, 1, 0, 9, 17,\n 1, 0, 34, 10, 1, 0, 28, 16, 1, 0, 22, 22, 1, 0, 16, 28,\n 1, 0, 55, 15, 1, 0, 44, 26, 2, 0, 17, 18, 2, 0, 13, 22,\n 1, 0, 80, 20, 2, 0, 32, 18, 2, 0, 24, 26, 4, 0, 9, 16,\n 1, 0, 108, 26, 2, 0, 43, 24, 2, 2, 15, 18, 2, 2, 11, 22,\n 2, 0, 68, 18, 4, 0, 27, 16, 4, 0, 19, 24, 4, 0, 15, 28,\n 2, 0, 78, 20, 4, 0, 31, 18, 2, 4, 14, 18, 4, 1, 13, 26,\n 2, 0, 97, 24, 2, 2, 38, 22, 4, 2, 18, 22, 4, 2, 14, 26,\n 2, 0, 116, 30, 3, 2, 36, 22, 4, 4, 16, 20, 4, 4, 12, 24,\n 2, 2, 68, 18, 4, 1, 43, 26, 6, 2, 19, 24, 6, 2, 15, 28,\n 4, 0, 81, 20, 1, 4, 50, 30, 4, 4, 22, 28, 3, 8, 12, 24,\n 2, 2, 92, 24, 6, 2, 36, 22, 4, 6, 20, 26, 7, 4, 14, 28,\n 4, 0, 107, 26, 8, 1, 37, 22, 8, 4, 20, 24, 12, 4, 11, 22,\n 3, 1, 115, 30, 4, 5, 40, 24, 11, 5, 16, 20, 11, 5, 12, 24,\n 5, 1, 87, 22, 5, 5, 41, 24, 5, 7, 24, 30, 11, 7, 12, 24,\n 5, 1, 98, 24, 7, 3, 45, 28, 15, 2, 19, 24, 3, 13, 15, 30,\n 1, 5, 107, 28, 10, 1, 46, 28, 1, 15, 22, 28, 2, 17, 14, 28,\n 5, 1, 120, 30, 9, 4, 43, 26, 17, 1, 22, 28, 2, 19, 14, 28,\n 3, 4, 113, 28, 3, 11, 44, 26, 17, 4, 21, 26, 9, 16, 13, 26,\n 3, 5, 107, 28, 3, 13, 41, 26, 15, 5, 24, 30, 15, 10, 15, 28,\n 4, 4, 116, 28, 17, 0, 42, 26, 17, 6, 22, 28, 19, 6, 16, 30,\n 2, 7, 111, 28, 17, 0, 46, 28, 7, 16, 24, 30, 34, 0, 13, 24,\n 4, 5, 121, 30, 4, 14, 47, 28, 11, 14, 24, 30, 16, 14, 15, 30,\n 6, 4, 117, 30, 6, 14, 45, 28, 11, 16, 24, 30, 30, 2, 16, 30,\n 8, 4, 106, 26, 8, 13, 47, 28, 7, 22, 24, 30, 22, 13, 15, 30,\n 10, 2, 114, 28, 19, 4, 46, 28, 28, 6, 22, 28, 33, 4, 16, 30,\n 8, 4, 122, 30, 22, 3, 45, 28, 8, 26, 23, 30, 12, 28, 15, 30,\n 3, 10, 117, 30, 3, 23, 45, 28, 4, 31, 24, 30, 11, 31, 15, 30,\n 7, 7, 116, 30, 21, 7, 45, 28, 1, 37, 23, 30, 19, 26, 15, 30,\n 5, 10, 115, 30, 19, 10, 47, 28, 15, 25, 24, 30, 23, 25, 15, 30,\n 13, 3, 115, 30, 2, 29, 46, 28, 42, 1, 24, 30, 23, 28, 15, 30,\n 17, 0, 115, 30, 10, 23, 46, 28, 10, 35, 24, 30, 19, 35, 15, 30,\n 17, 1, 115, 30, 14, 21, 46, 28, 29, 19, 24, 30, 11, 46, 15, 30,\n 13, 6, 115, 30, 14, 23, 46, 28, 44, 7, 24, 30, 59, 1, 16, 30,\n 12, 7, 121, 30, 12, 26, 47, 28, 39, 14, 24, 30, 22, 41, 15, 30,\n 6, 14, 121, 30, 6, 34, 47, 28, 46, 10, 24, 30, 2, 64, 15, 30,\n 17, 4, 122, 30, 29, 14, 46, 28, 49, 10, 24, 30, 24, 46, 15, 30,\n 4, 18, 122, 30, 13, 32, 46, 28, 48, 14, 24, 30, 42, 32, 15, 30,\n 20, 4, 117, 30, 40, 7, 47, 28, 43, 22, 24, 30, 10, 67, 15, 30,\n 19, 6, 118, 30, 18, 31, 47, 28, 34, 34, 24, 30, 20, 61, 15, 30\n ],\n\n /**\n * The final format bits with mask (level << 3 | mask).\n *\n * @public\n * @static\n * @type {number[]}\n * @memberof ErrorCorrection\n */\n FINAL_FORMAT: [\n // L\n 0x77c4, 0x72f3, 0x7daa, 0x789d, 0x662f, 0x6318, 0x6c41, 0x6976,\n // M\n 0x5412, 0x5125, 0x5e7c, 0x5b4b, 0x45f9, 0x40ce, 0x4f97, 0x4aa0,\n // Q\n 0x355f, 0x3068, 0x3f31, 0x3a06, 0x24b4, 0x2183, 0x2eda, 0x2bed,\n // H\n 0x1689, 0x13be, 0x1ce7, 0x19d0, 0x0762, 0x0255, 0x0d0c, 0x083b\n ],\n\n /**\n * A map of human-readable ECC levels.\n *\n * @public\n * @static\n * @type {Object.}\n * @memberof ErrorCorrection\n */\n LEVELS: {\n L: 1,\n M: 2,\n Q: 3,\n H: 4\n }\n\n });\n\n var ErrorCorrection_1 = ErrorCorrection;\n\n /**\n * Contains Galois field information.\n *\n * @public\n * @class\n * @extends Nevis\n */\n var Galois = lite.extend(null, {\n\n /**\n * The Galois field exponent table.\n *\n * @public\n * @static\n * @type {number[]}\n * @memberof Galois\n */\n EXPONENT: [\n 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1d, 0x3a, 0x74, 0xe8, 0xcd, 0x87, 0x13, 0x26,\n 0x4c, 0x98, 0x2d, 0x5a, 0xb4, 0x75, 0xea, 0xc9, 0x8f, 0x03, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0,\n 0x9d, 0x27, 0x4e, 0x9c, 0x25, 0x4a, 0x94, 0x35, 0x6a, 0xd4, 0xb5, 0x77, 0xee, 0xc1, 0x9f, 0x23,\n 0x46, 0x8c, 0x05, 0x0a, 0x14, 0x28, 0x50, 0xa0, 0x5d, 0xba, 0x69, 0xd2, 0xb9, 0x6f, 0xde, 0xa1,\n 0x5f, 0xbe, 0x61, 0xc2, 0x99, 0x2f, 0x5e, 0xbc, 0x65, 0xca, 0x89, 0x0f, 0x1e, 0x3c, 0x78, 0xf0,\n 0xfd, 0xe7, 0xd3, 0xbb, 0x6b, 0xd6, 0xb1, 0x7f, 0xfe, 0xe1, 0xdf, 0xa3, 0x5b, 0xb6, 0x71, 0xe2,\n 0xd9, 0xaf, 0x43, 0x86, 0x11, 0x22, 0x44, 0x88, 0x0d, 0x1a, 0x34, 0x68, 0xd0, 0xbd, 0x67, 0xce,\n 0x81, 0x1f, 0x3e, 0x7c, 0xf8, 0xed, 0xc7, 0x93, 0x3b, 0x76, 0xec, 0xc5, 0x97, 0x33, 0x66, 0xcc,\n 0x85, 0x17, 0x2e, 0x5c, 0xb8, 0x6d, 0xda, 0xa9, 0x4f, 0x9e, 0x21, 0x42, 0x84, 0x15, 0x2a, 0x54,\n 0xa8, 0x4d, 0x9a, 0x29, 0x52, 0xa4, 0x55, 0xaa, 0x49, 0x92, 0x39, 0x72, 0xe4, 0xd5, 0xb7, 0x73,\n 0xe6, 0xd1, 0xbf, 0x63, 0xc6, 0x91, 0x3f, 0x7e, 0xfc, 0xe5, 0xd7, 0xb3, 0x7b, 0xf6, 0xf1, 0xff,\n 0xe3, 0xdb, 0xab, 0x4b, 0x96, 0x31, 0x62, 0xc4, 0x95, 0x37, 0x6e, 0xdc, 0xa5, 0x57, 0xae, 0x41,\n 0x82, 0x19, 0x32, 0x64, 0xc8, 0x8d, 0x07, 0x0e, 0x1c, 0x38, 0x70, 0xe0, 0xdd, 0xa7, 0x53, 0xa6,\n 0x51, 0xa2, 0x59, 0xb2, 0x79, 0xf2, 0xf9, 0xef, 0xc3, 0x9b, 0x2b, 0x56, 0xac, 0x45, 0x8a, 0x09,\n 0x12, 0x24, 0x48, 0x90, 0x3d, 0x7a, 0xf4, 0xf5, 0xf7, 0xf3, 0xfb, 0xeb, 0xcb, 0x8b, 0x0b, 0x16,\n 0x2c, 0x58, 0xb0, 0x7d, 0xfa, 0xe9, 0xcf, 0x83, 0x1b, 0x36, 0x6c, 0xd8, 0xad, 0x47, 0x8e, 0x00\n ],\n\n /**\n * The Galois field log table.\n *\n * @public\n * @static\n * @type {number[]}\n * @memberof Galois\n */\n LOG: [\n 0xff, 0x00, 0x01, 0x19, 0x02, 0x32, 0x1a, 0xc6, 0x03, 0xdf, 0x33, 0xee, 0x1b, 0x68, 0xc7, 0x4b,\n 0x04, 0x64, 0xe0, 0x0e, 0x34, 0x8d, 0xef, 0x81, 0x1c, 0xc1, 0x69, 0xf8, 0xc8, 0x08, 0x4c, 0x71,\n 0x05, 0x8a, 0x65, 0x2f, 0xe1, 0x24, 0x0f, 0x21, 0x35, 0x93, 0x8e, 0xda, 0xf0, 0x12, 0x82, 0x45,\n 0x1d, 0xb5, 0xc2, 0x7d, 0x6a, 0x27, 0xf9, 0xb9, 0xc9, 0x9a, 0x09, 0x78, 0x4d, 0xe4, 0x72, 0xa6,\n 0x06, 0xbf, 0x8b, 0x62, 0x66, 0xdd, 0x30, 0xfd, 0xe2, 0x98, 0x25, 0xb3, 0x10, 0x91, 0x22, 0x88,\n 0x36, 0xd0, 0x94, 0xce, 0x8f, 0x96, 0xdb, 0xbd, 0xf1, 0xd2, 0x13, 0x5c, 0x83, 0x38, 0x46, 0x40,\n 0x1e, 0x42, 0xb6, 0xa3, 0xc3, 0x48, 0x7e, 0x6e, 0x6b, 0x3a, 0x28, 0x54, 0xfa, 0x85, 0xba, 0x3d,\n 0xca, 0x5e, 0x9b, 0x9f, 0x0a, 0x15, 0x79, 0x2b, 0x4e, 0xd4, 0xe5, 0xac, 0x73, 0xf3, 0xa7, 0x57,\n 0x07, 0x70, 0xc0, 0xf7, 0x8c, 0x80, 0x63, 0x0d, 0x67, 0x4a, 0xde, 0xed, 0x31, 0xc5, 0xfe, 0x18,\n 0xe3, 0xa5, 0x99, 0x77, 0x26, 0xb8, 0xb4, 0x7c, 0x11, 0x44, 0x92, 0xd9, 0x23, 0x20, 0x89, 0x2e,\n 0x37, 0x3f, 0xd1, 0x5b, 0x95, 0xbc, 0xcf, 0xcd, 0x90, 0x87, 0x97, 0xb2, 0xdc, 0xfc, 0xbe, 0x61,\n 0xf2, 0x56, 0xd3, 0xab, 0x14, 0x2a, 0x5d, 0x9e, 0x84, 0x3c, 0x39, 0x53, 0x47, 0x6d, 0x41, 0xa2,\n 0x1f, 0x2d, 0x43, 0xd8, 0xb7, 0x7b, 0xa4, 0x76, 0xc4, 0x17, 0x49, 0xec, 0x7f, 0x0c, 0x6f, 0xf6,\n 0x6c, 0xa1, 0x3b, 0x52, 0x29, 0x9d, 0x55, 0xaa, 0xfb, 0x60, 0x86, 0xb1, 0xbb, 0xcc, 0x3e, 0x5a,\n 0xcb, 0x59, 0x5f, 0xb0, 0x9c, 0xa9, 0xa0, 0x51, 0x0b, 0xf5, 0x16, 0xeb, 0x7a, 0x75, 0x2c, 0xd7,\n 0x4f, 0xae, 0xd5, 0xe9, 0xe6, 0xe7, 0xad, 0xe8, 0x74, 0xd6, 0xf4, 0xea, 0xa8, 0x50, 0x58, 0xaf\n ]\n\n });\n\n var Galois_1 = Galois;\n\n /**\n * Contains version pattern information.\n *\n * @public\n * @class\n * @extends Nevis\n */\n var Version = lite.extend(null, {\n\n /**\n * The version pattern block.\n *\n * @public\n * @static\n * @type {number[]}\n * @memberof Version\n */\n BLOCK: [\n 0xc94, 0x5bc, 0xa99, 0x4d3, 0xbf6, 0x762, 0x847, 0x60d, 0x928, 0xb78, 0x45d, 0xa17, 0x532,\n 0x9a6, 0x683, 0x8c9, 0x7ec, 0xec4, 0x1e1, 0xfab, 0x08e, 0xc1a, 0x33f, 0xd75, 0x250, 0x9d5,\n 0x6f0, 0x8ba, 0x79f, 0xb0b, 0x42e, 0xa64, 0x541, 0xc69\n ]\n\n });\n\n var Version_1 = Version;\n\n /**\n * Generates information for a QR code frame based on a specific value to be encoded.\n *\n * @param {Frame~Options} options - the options to be used\n * @public\n * @class\n * @extends Nevis\n */\n var Frame = lite.extend(function(options) {\n var dataBlock, eccBlock, index, neccBlock1, neccBlock2;\n var valueLength = options.value.length;\n\n this._badness = [];\n this._level = ErrorCorrection_1.LEVELS[options.level];\n this._polynomial = [];\n this._value = options.value;\n this._version = 0;\n this._stringBuffer = [];\n\n while (this._version < 40) {\n this._version++;\n\n index = ((this._level - 1) * 4) + ((this._version - 1) * 16);\n\n neccBlock1 = ErrorCorrection_1.BLOCKS[index++];\n neccBlock2 = ErrorCorrection_1.BLOCKS[index++];\n dataBlock = ErrorCorrection_1.BLOCKS[index++];\n eccBlock = ErrorCorrection_1.BLOCKS[index];\n\n index = (dataBlock * (neccBlock1 + neccBlock2)) + neccBlock2 - 3 + (this._version <= 9);\n\n if (valueLength <= index) {\n break;\n }\n }\n\n this._dataBlock = dataBlock;\n this._eccBlock = eccBlock;\n this._neccBlock1 = neccBlock1;\n this._neccBlock2 = neccBlock2;\n\n /**\n * The data width is based on version.\n *\n * @public\n * @type {number}\n * @memberof Frame#\n */\n // FIXME: Ensure that it fits instead of being truncated.\n var width = this.width = 17 + (4 * this._version);\n\n /**\n * The image buffer.\n *\n * @public\n * @type {number[]}\n * @memberof Frame#\n */\n this.buffer = Frame._createArray(width * width);\n\n this._ecc = Frame._createArray(dataBlock + ((dataBlock + eccBlock) * (neccBlock1 + neccBlock2)) + neccBlock2);\n this._mask = Frame._createArray(((width * (width + 1)) + 1) / 2);\n\n this._insertFinders();\n this._insertAlignments();\n\n // Insert single foreground cell.\n this.buffer[8 + (width * (width - 8))] = 1;\n\n this._insertTimingGap();\n this._reverseMask();\n this._insertTimingRowAndColumn();\n this._insertVersion();\n this._syncMask();\n this._convertBitStream(valueLength);\n this._calculatePolynomial();\n this._appendEccToData();\n this._interleaveBlocks();\n this._pack();\n this._finish();\n }, {\n\n _addAlignment: function(x, y) {\n var i;\n var buffer = this.buffer;\n var width = this.width;\n\n buffer[x + (width * y)] = 1;\n\n for (i = -2; i < 2; i++) {\n buffer[x + i + (width * (y - 2))] = 1;\n buffer[x - 2 + (width * (y + i + 1))] = 1;\n buffer[x + 2 + (width * (y + i))] = 1;\n buffer[x + i + 1 + (width * (y + 2))] = 1;\n }\n\n for (i = 0; i < 2; i++) {\n this._setMask(x - 1, y + i);\n this._setMask(x + 1, y - i);\n this._setMask(x - i, y - 1);\n this._setMask(x + i, y + 1);\n }\n },\n\n _appendData: function(data, dataLength, ecc, eccLength) {\n var bit, i, j;\n var polynomial = this._polynomial;\n var stringBuffer = this._stringBuffer;\n\n for (i = 0; i < eccLength; i++) {\n stringBuffer[ecc + i] = 0;\n }\n\n for (i = 0; i < dataLength; i++) {\n bit = Galois_1.LOG[stringBuffer[data + i] ^ stringBuffer[ecc]];\n\n if (bit !== 255) {\n for (j = 1; j < eccLength; j++) {\n stringBuffer[ecc + j - 1] = stringBuffer[ecc + j] ^\n Galois_1.EXPONENT[Frame._modN(bit + polynomial[eccLength - j])];\n }\n } else {\n for (j = ecc; j < ecc + eccLength; j++) {\n stringBuffer[j] = stringBuffer[j + 1];\n }\n }\n\n stringBuffer[ecc + eccLength - 1] = bit === 255 ? 0 : Galois_1.EXPONENT[Frame._modN(bit + polynomial[0])];\n }\n },\n\n _appendEccToData: function() {\n var i;\n var data = 0;\n var dataBlock = this._dataBlock;\n var ecc = this._calculateMaxLength();\n var eccBlock = this._eccBlock;\n\n for (i = 0; i < this._neccBlock1; i++) {\n this._appendData(data, dataBlock, ecc, eccBlock);\n\n data += dataBlock;\n ecc += eccBlock;\n }\n\n for (i = 0; i < this._neccBlock2; i++) {\n this._appendData(data, dataBlock + 1, ecc, eccBlock);\n\n data += dataBlock + 1;\n ecc += eccBlock;\n }\n },\n\n _applyMask: function(mask) {\n var r3x, r3y, x, y;\n var buffer = this.buffer;\n var width = this.width;\n\n switch (mask) {\n case 0:\n for (y = 0; y < width; y++) {\n for (x = 0; x < width; x++) {\n if (!((x + y) & 1) && !this._isMasked(x, y)) {\n buffer[x + (y * width)] ^= 1;\n }\n }\n }\n\n break;\n case 1:\n for (y = 0; y < width; y++) {\n for (x = 0; x < width; x++) {\n if (!(y & 1) && !this._isMasked(x, y)) {\n buffer[x + (y * width)] ^= 1;\n }\n }\n }\n\n break;\n case 2:\n for (y = 0; y < width; y++) {\n for (r3x = 0, x = 0; x < width; x++, r3x++) {\n if (r3x === 3) {\n r3x = 0;\n }\n\n if (!r3x && !this._isMasked(x, y)) {\n buffer[x + (y * width)] ^= 1;\n }\n }\n }\n\n break;\n case 3:\n for (r3y = 0, y = 0; y < width; y++, r3y++) {\n if (r3y === 3) {\n r3y = 0;\n }\n\n for (r3x = r3y, x = 0; x < width; x++, r3x++) {\n if (r3x === 3) {\n r3x = 0;\n }\n\n if (!r3x && !this._isMasked(x, y)) {\n buffer[x + (y * width)] ^= 1;\n }\n }\n }\n\n break;\n case 4:\n for (y = 0; y < width; y++) {\n for (r3x = 0, r3y = (y >> 1) & 1, x = 0; x < width; x++, r3x++) {\n if (r3x === 3) {\n r3x = 0;\n r3y = !r3y;\n }\n\n if (!r3y && !this._isMasked(x, y)) {\n buffer[x + (y * width)] ^= 1;\n }\n }\n }\n\n break;\n case 5:\n for (r3y = 0, y = 0; y < width; y++, r3y++) {\n if (r3y === 3) {\n r3y = 0;\n }\n\n for (r3x = 0, x = 0; x < width; x++, r3x++) {\n if (r3x === 3) {\n r3x = 0;\n }\n\n if (!((x & y & 1) + !(!r3x | !r3y)) && !this._isMasked(x, y)) {\n buffer[x + (y * width)] ^= 1;\n }\n }\n }\n\n break;\n case 6:\n for (r3y = 0, y = 0; y < width; y++, r3y++) {\n if (r3y === 3) {\n r3y = 0;\n }\n\n for (r3x = 0, x = 0; x < width; x++, r3x++) {\n if (r3x === 3) {\n r3x = 0;\n }\n\n if (!((x & y & 1) + (r3x && r3x === r3y) & 1) && !this._isMasked(x, y)) {\n buffer[x + (y * width)] ^= 1;\n }\n }\n }\n\n break;\n case 7:\n for (r3y = 0, y = 0; y < width; y++, r3y++) {\n if (r3y === 3) {\n r3y = 0;\n }\n\n for (r3x = 0, x = 0; x < width; x++, r3x++) {\n if (r3x === 3) {\n r3x = 0;\n }\n\n if (!((r3x && r3x === r3y) + (x + y & 1) & 1) && !this._isMasked(x, y)) {\n buffer[x + (y * width)] ^= 1;\n }\n }\n }\n\n break;\n }\n },\n\n _calculateMaxLength: function() {\n return (this._dataBlock * (this._neccBlock1 + this._neccBlock2)) + this._neccBlock2;\n },\n\n _calculatePolynomial: function() {\n var i, j;\n var eccBlock = this._eccBlock;\n var polynomial = this._polynomial;\n\n polynomial[0] = 1;\n\n for (i = 0; i < eccBlock; i++) {\n polynomial[i + 1] = 1;\n\n for (j = i; j > 0; j--) {\n polynomial[j] = polynomial[j] ? polynomial[j - 1] ^\n Galois_1.EXPONENT[Frame._modN(Galois_1.LOG[polynomial[j]] + i)] : polynomial[j - 1];\n }\n\n polynomial[0] = Galois_1.EXPONENT[Frame._modN(Galois_1.LOG[polynomial[0]] + i)];\n }\n\n // Use logs for generator polynomial to save calculation step.\n for (i = 0; i <= eccBlock; i++) {\n polynomial[i] = Galois_1.LOG[polynomial[i]];\n }\n },\n\n _checkBadness: function() {\n var b, b1, h, x, y;\n var bad = 0;\n var badness = this._badness;\n var buffer = this.buffer;\n var width = this.width;\n\n // Blocks of same colour.\n for (y = 0; y < width - 1; y++) {\n for (x = 0; x < width - 1; x++) {\n // All foreground colour.\n if ((buffer[x + (width * y)] &&\n buffer[x + 1 + (width * y)] &&\n buffer[x + (width * (y + 1))] &&\n buffer[x + 1 + (width * (y + 1))]) ||\n // All background colour.\n !(buffer[x + (width * y)] ||\n buffer[x + 1 + (width * y)] ||\n buffer[x + (width * (y + 1))] ||\n buffer[x + 1 + (width * (y + 1))])) {\n bad += Frame.N2;\n }\n }\n }\n\n var bw = 0;\n\n // X runs.\n for (y = 0; y < width; y++) {\n h = 0;\n\n badness[0] = 0;\n\n for (b = 0, x = 0; x < width; x++) {\n b1 = buffer[x + (width * y)];\n\n if (b === b1) {\n badness[h]++;\n } else {\n badness[++h] = 1;\n }\n\n b = b1;\n bw += b ? 1 : -1;\n }\n\n bad += this._getBadness(h);\n }\n\n if (bw < 0) {\n bw = -bw;\n }\n\n var count = 0;\n var big = bw;\n big += big << 2;\n big <<= 1;\n\n while (big > width * width) {\n big -= width * width;\n count++;\n }\n\n bad += count * Frame.N4;\n\n // Y runs.\n for (x = 0; x < width; x++) {\n h = 0;\n\n badness[0] = 0;\n\n for (b = 0, y = 0; y < width; y++) {\n b1 = buffer[x + (width * y)];\n\n if (b === b1) {\n badness[h]++;\n } else {\n badness[++h] = 1;\n }\n\n b = b1;\n }\n\n bad += this._getBadness(h);\n }\n\n return bad;\n },\n\n _convertBitStream: function(length) {\n var bit, i;\n var ecc = this._ecc;\n var version = this._version;\n\n // Convert string to bit stream. 8-bit data to QR-coded 8-bit data (numeric, alphanumeric, or kanji not supported).\n for (i = 0; i < length; i++) {\n ecc[i] = this._value.charCodeAt(i);\n }\n\n var stringBuffer = this._stringBuffer = ecc.slice();\n var maxLength = this._calculateMaxLength();\n\n if (length >= maxLength - 2) {\n length = maxLength - 2;\n\n if (version > 9) {\n length--;\n }\n }\n\n // Shift and re-pack to insert length prefix.\n var index = length;\n\n if (version > 9) {\n stringBuffer[index + 2] = 0;\n stringBuffer[index + 3] = 0;\n\n while (index--) {\n bit = stringBuffer[index];\n\n stringBuffer[index + 3] |= 255 & (bit << 4);\n stringBuffer[index + 2] = bit >> 4;\n }\n\n stringBuffer[2] |= 255 & (length << 4);\n stringBuffer[1] = length >> 4;\n stringBuffer[0] = 0x40 | (length >> 12);\n } else {\n stringBuffer[index + 1] = 0;\n stringBuffer[index + 2] = 0;\n\n while (index--) {\n bit = stringBuffer[index];\n\n stringBuffer[index + 2] |= 255 & (bit << 4);\n stringBuffer[index + 1] = bit >> 4;\n }\n\n stringBuffer[1] |= 255 & (length << 4);\n stringBuffer[0] = 0x40 | (length >> 4);\n }\n\n // Fill to end with pad pattern.\n index = length + 3 - (version < 10);\n\n while (index < maxLength) {\n stringBuffer[index++] = 0xec;\n stringBuffer[index++] = 0x11;\n }\n },\n\n _getBadness: function(length) {\n var i;\n var badRuns = 0;\n var badness = this._badness;\n\n for (i = 0; i <= length; i++) {\n if (badness[i] >= 5) {\n badRuns += Frame.N1 + badness[i] - 5;\n }\n }\n\n // FBFFFBF as in finder.\n for (i = 3; i < length - 1; i += 2) {\n if (badness[i - 2] === badness[i + 2] &&\n badness[i + 2] === badness[i - 1] &&\n badness[i - 1] === badness[i + 1] &&\n badness[i - 1] * 3 === badness[i] &&\n // Background around the foreground pattern? Not part of the specs.\n (badness[i - 3] === 0 || i + 3 > length ||\n badness[i - 3] * 3 >= badness[i] * 4 ||\n badness[i + 3] * 3 >= badness[i] * 4)) {\n badRuns += Frame.N3;\n }\n }\n\n return badRuns;\n },\n\n _finish: function() {\n // Save pre-mask copy of frame.\n this._stringBuffer = this.buffer.slice();\n\n var currentMask, i;\n var bit = 0;\n var mask = 30000;\n\n /*\n * Using for instead of while since in original Arduino code if an early mask was \"good enough\" it wouldn't try for\n * a better one since they get more complex and take longer.\n */\n for (i = 0; i < 8; i++) {\n // Returns foreground-background imbalance.\n this._applyMask(i);\n\n currentMask = this._checkBadness();\n\n // Is current mask better than previous best?\n if (currentMask < mask) {\n mask = currentMask;\n bit = i;\n }\n\n // Don't increment \"i\" to a void redoing mask.\n if (bit === 7) {\n break;\n }\n\n // Reset for next pass.\n this.buffer = this._stringBuffer.slice();\n }\n\n // Redo best mask as none were \"good enough\" (i.e. last wasn't bit).\n if (bit !== i) {\n this._applyMask(bit);\n }\n\n // Add in final mask/ECC level bytes.\n mask = ErrorCorrection_1.FINAL_FORMAT[bit + (this._level - 1 << 3)];\n\n var buffer = this.buffer;\n var width = this.width;\n\n // Low byte.\n for (i = 0; i < 8; i++, mask >>= 1) {\n if (mask & 1) {\n buffer[width - 1 - i + (width * 8)] = 1;\n\n if (i < 6) {\n buffer[8 + (width * i)] = 1;\n } else {\n buffer[8 + (width * (i + 1))] = 1;\n }\n }\n }\n\n // High byte.\n for (i = 0; i < 7; i++, mask >>= 1) {\n if (mask & 1) {\n buffer[8 + (width * (width - 7 + i))] = 1;\n\n if (i) {\n buffer[6 - i + (width * 8)] = 1;\n } else {\n buffer[7 + (width * 8)] = 1;\n }\n }\n }\n },\n\n _interleaveBlocks: function() {\n var i, j;\n var dataBlock = this._dataBlock;\n var ecc = this._ecc;\n var eccBlock = this._eccBlock;\n var k = 0;\n var maxLength = this._calculateMaxLength();\n var neccBlock1 = this._neccBlock1;\n var neccBlock2 = this._neccBlock2;\n var stringBuffer = this._stringBuffer;\n\n for (i = 0; i < dataBlock; i++) {\n for (j = 0; j < neccBlock1; j++) {\n ecc[k++] = stringBuffer[i + (j * dataBlock)];\n }\n\n for (j = 0; j < neccBlock2; j++) {\n ecc[k++] = stringBuffer[(neccBlock1 * dataBlock) + i + (j * (dataBlock + 1))];\n }\n }\n\n for (j = 0; j < neccBlock2; j++) {\n ecc[k++] = stringBuffer[(neccBlock1 * dataBlock) + i + (j * (dataBlock + 1))];\n }\n\n for (i = 0; i < eccBlock; i++) {\n for (j = 0; j < neccBlock1 + neccBlock2; j++) {\n ecc[k++] = stringBuffer[maxLength + i + (j * eccBlock)];\n }\n }\n\n this._stringBuffer = ecc;\n },\n\n _insertAlignments: function() {\n var i, x, y;\n var version = this._version;\n var width = this.width;\n\n if (version > 1) {\n i = Alignment_1.BLOCK[version];\n y = width - 7;\n\n for (;;) {\n x = width - 7;\n\n while (x > i - 3) {\n this._addAlignment(x, y);\n\n if (x < i) {\n break;\n }\n\n x -= i;\n }\n\n if (y <= i + 9) {\n break;\n }\n\n y -= i;\n\n this._addAlignment(6, y);\n this._addAlignment(y, 6);\n }\n }\n },\n\n _insertFinders: function() {\n var i, j, x, y;\n var buffer = this.buffer;\n var width = this.width;\n\n for (i = 0; i < 3; i++) {\n j = 0;\n y = 0;\n\n if (i === 1) {\n j = width - 7;\n }\n if (i === 2) {\n y = width - 7;\n }\n\n buffer[y + 3 + (width * (j + 3))] = 1;\n\n for (x = 0; x < 6; x++) {\n buffer[y + x + (width * j)] = 1;\n buffer[y + (width * (j + x + 1))] = 1;\n buffer[y + 6 + (width * (j + x))] = 1;\n buffer[y + x + 1 + (width * (j + 6))] = 1;\n }\n\n for (x = 1; x < 5; x++) {\n this._setMask(y + x, j + 1);\n this._setMask(y + 1, j + x + 1);\n this._setMask(y + 5, j + x);\n this._setMask(y + x + 1, j + 5);\n }\n\n for (x = 2; x < 4; x++) {\n buffer[y + x + (width * (j + 2))] = 1;\n buffer[y + 2 + (width * (j + x + 1))] = 1;\n buffer[y + 4 + (width * (j + x))] = 1;\n buffer[y + x + 1 + (width * (j + 4))] = 1;\n }\n }\n },\n\n _insertTimingGap: function() {\n var x, y;\n var width = this.width;\n\n for (y = 0; y < 7; y++) {\n this._setMask(7, y);\n this._setMask(width - 8, y);\n this._setMask(7, y + width - 7);\n }\n\n for (x = 0; x < 8; x++) {\n this._setMask(x, 7);\n this._setMask(x + width - 8, 7);\n this._setMask(x, width - 8);\n }\n },\n\n _insertTimingRowAndColumn: function() {\n var x;\n var buffer = this.buffer;\n var width = this.width;\n\n for (x = 0; x < width - 14; x++) {\n if (x & 1) {\n this._setMask(8 + x, 6);\n this._setMask(6, 8 + x);\n } else {\n buffer[8 + x + (width * 6)] = 1;\n buffer[6 + (width * (8 + x))] = 1;\n }\n }\n },\n\n _insertVersion: function() {\n var i, j, x, y;\n var buffer = this.buffer;\n var version = this._version;\n var width = this.width;\n\n if (version > 6) {\n i = Version_1.BLOCK[version - 7];\n j = 17;\n\n for (x = 0; x < 6; x++) {\n for (y = 0; y < 3; y++, j--) {\n if (1 & (j > 11 ? version >> j - 12 : i >> j)) {\n buffer[5 - x + (width * (2 - y + width - 11))] = 1;\n buffer[2 - y + width - 11 + (width * (5 - x))] = 1;\n } else {\n this._setMask(5 - x, 2 - y + width - 11);\n this._setMask(2 - y + width - 11, 5 - x);\n }\n }\n }\n }\n },\n\n _isMasked: function(x, y) {\n var bit = Frame._getMaskBit(x, y);\n\n return this._mask[bit] === 1;\n },\n\n _pack: function() {\n var bit, i, j;\n var k = 1;\n var v = 1;\n var width = this.width;\n var x = width - 1;\n var y = width - 1;\n\n // Interleaved data and ECC codes.\n var length = ((this._dataBlock + this._eccBlock) * (this._neccBlock1 + this._neccBlock2)) + this._neccBlock2;\n\n for (i = 0; i < length; i++) {\n bit = this._stringBuffer[i];\n\n for (j = 0; j < 8; j++, bit <<= 1) {\n if (0x80 & bit) {\n this.buffer[x + (width * y)] = 1;\n }\n\n // Find next fill position.\n do {\n if (v) {\n x--;\n } else {\n x++;\n\n if (k) {\n if (y !== 0) {\n y--;\n } else {\n x -= 2;\n k = !k;\n\n if (x === 6) {\n x--;\n y = 9;\n }\n }\n } else if (y !== width - 1) {\n y++;\n } else {\n x -= 2;\n k = !k;\n\n if (x === 6) {\n x--;\n y -= 8;\n }\n }\n }\n\n v = !v;\n } while (this._isMasked(x, y));\n }\n }\n },\n\n _reverseMask: function() {\n var x, y;\n var width = this.width;\n\n for (x = 0; x < 9; x++) {\n this._setMask(x, 8);\n }\n\n for (x = 0; x < 8; x++) {\n this._setMask(x + width - 8, 8);\n this._setMask(8, x);\n }\n\n for (y = 0; y < 7; y++) {\n this._setMask(8, y + width - 7);\n }\n },\n\n _setMask: function(x, y) {\n var bit = Frame._getMaskBit(x, y);\n\n this._mask[bit] = 1;\n },\n\n _syncMask: function() {\n var x, y;\n var width = this.width;\n\n for (y = 0; y < width; y++) {\n for (x = 0; x <= y; x++) {\n if (this.buffer[x + (width * y)]) {\n this._setMask(x, y);\n }\n }\n }\n }\n\n }, {\n\n _createArray: function(length) {\n var i;\n var array = [];\n\n for (i = 0; i < length; i++) {\n array[i] = 0;\n }\n\n return array;\n },\n\n _getMaskBit: function(x, y) {\n var bit;\n\n if (x > y) {\n bit = x;\n x = y;\n y = bit;\n }\n\n bit = y;\n bit += y * y;\n bit >>= 1;\n bit += x;\n\n return bit;\n },\n\n _modN: function(x) {\n while (x >= 255) {\n x -= 255;\n x = (x >> 8) + (x & 255);\n }\n\n return x;\n },\n\n // *Badness* coefficients.\n N1: 3,\n N2: 3,\n N3: 40,\n N4: 10\n\n });\n\n var Frame_1 = Frame;\n\n /**\n * The options used by {@link Frame}.\n *\n * @typedef {Object} Frame~Options\n * @property {string} level - The ECC level to be used.\n * @property {string} value - The value to be encoded.\n */\n\n /**\n * An implementation of {@link Renderer} for working with img elements.\n *\n * This depends on {@link CanvasRenderer} being executed first as this implementation simply applies the data URL from\n * the rendered canvas element as the src for the img element being rendered.\n *\n * @public\n * @class\n * @extends Renderer\n */\n var ImageRenderer = Renderer_1.extend({\n\n /**\n * @override\n */\n draw: function() {\n this.element.src = this.qrious.toDataURL();\n },\n\n /**\n * @override\n */\n reset: function() {\n this.element.src = '';\n },\n\n /**\n * @override\n */\n resize: function() {\n var element = this.element;\n\n element.width = element.height = this.qrious.size;\n }\n\n });\n\n var ImageRenderer_1 = ImageRenderer;\n\n /**\n * Defines an available option while also configuring how values are applied to the target object.\n *\n * Optionally, a default value can be specified as well a value transformer for greater control over how the option\n * value is applied.\n *\n * If no value transformer is specified, then any specified option will be applied directly. All values are maintained\n * on the target object itself as a field using the option name prefixed with a single underscore.\n *\n * When an option is specified as modifiable, the {@link OptionManager} will be required to include a setter for the\n * property that is defined on the target object that uses the option name.\n *\n * @param {string} name - the name to be used\n * @param {boolean} [modifiable] - true if the property defined on target objects should include a setter;\n * otherwise false\n * @param {*} [defaultValue] - the default value to be used\n * @param {Option~ValueTransformer} [valueTransformer] - the value transformer to be used\n * @public\n * @class\n * @extends Nevis\n */\n var Option = lite.extend(function(name, modifiable, defaultValue, valueTransformer) {\n /**\n * The name for this {@link Option}.\n *\n * @public\n * @type {string}\n * @memberof Option#\n */\n this.name = name;\n\n /**\n * Whether a setter should be included on the property defined on target objects for this {@link Option}.\n *\n * @public\n * @type {boolean}\n * @memberof Option#\n */\n this.modifiable = Boolean(modifiable);\n\n /**\n * The default value for this {@link Option}.\n *\n * @public\n * @type {*}\n * @memberof Option#\n */\n this.defaultValue = defaultValue;\n\n this._valueTransformer = valueTransformer;\n }, {\n\n /**\n * Transforms the specified value so that it can be applied for this {@link Option}.\n *\n * If a value transformer has been specified for this {@link Option}, it will be called upon to transform\n * value. Otherwise, value will be returned directly.\n *\n * @param {*} value - the value to be transformed\n * @return {*} The transformed value or value if no value transformer is specified.\n * @public\n * @memberof Option#\n */\n transform: function(value) {\n var transformer = this._valueTransformer;\n if (typeof transformer === 'function') {\n return transformer(value, this);\n }\n\n return value;\n }\n\n });\n\n var Option_1 = Option;\n\n /**\n * Returns a transformed value for the specified value to be applied for the option provided.\n *\n * @callback Option~ValueTransformer\n * @param {*} value - the value to be transformed\n * @param {Option} option - the {@link Option} for which value is being transformed\n * @return {*} The transform value.\n */\n\n /**\n * Contains utility methods that are useful throughout the library.\n *\n * @public\n * @class\n * @extends Nevis\n */\n var Utilities = lite.extend(null, {\n\n /**\n * Returns the absolute value of a given number.\n *\n * This method is simply a convenient shorthand for Math.abs while ensuring that nulls are returned as\n * null instead of zero.\n *\n * @param {number} value - the number whose absolute value is to be returned\n * @return {number} The absolute value of value or null if value is\n * null.\n * @public\n * @static\n * @memberof Utilities\n */\n abs: function(value) {\n return value != null ? Math.abs(value) : null;\n },\n\n /**\n * Returns whether the specified object has a property with the specified name as an own\n * (not inherited) property.\n *\n * @param {Object} object - the object on which the property is to be checked\n * @param {string} name - the name of the property to be checked\n * @return {boolean} true if object has an own property with name.\n * @public\n * @static\n * @memberof Utilities\n */\n hasOwn: function(object, name) {\n return Object.prototype.hasOwnProperty.call(object, name);\n },\n\n /**\n * A non-operation method that does absolutely nothing.\n *\n * @return {void}\n * @public\n * @static\n * @memberof Utilities\n */\n noop: function() {},\n\n /**\n * Transforms the specified string to upper case while remaining null-safe.\n *\n * @param {string} string - the string to be transformed to upper case\n * @return {string} string transformed to upper case if string is not null.\n * @public\n * @static\n * @memberof Utilities\n */\n toUpperCase: function(string) {\n return string != null ? string.toUpperCase() : null;\n }\n\n });\n\n var Utilities_1 = Utilities;\n\n /**\n * Manages multiple {@link Option} instances that are intended to be used by multiple implementations.\n *\n * Although the option definitions are shared between targets, the values are maintained on the targets themselves.\n *\n * @param {Option[]} options - the options to be used\n * @public\n * @class\n * @extends Nevis\n */\n var OptionManager = lite.extend(function(options) {\n /**\n * The available options for this {@link OptionManager}.\n *\n * @public\n * @type {Object.}\n * @memberof OptionManager#\n */\n this.options = {};\n\n options.forEach(function(option) {\n this.options[option.name] = option;\n }, this);\n }, {\n\n /**\n * Returns whether an option with the specified name is available.\n *\n * @param {string} name - the name of the {@link Option} whose existence is to be checked\n * @return {boolean} true if an {@link Option} exists with name; otherwise\n * false.\n * @public\n * @memberof OptionManager#\n */\n exists: function(name) {\n return this.options[name] != null;\n },\n\n /**\n * Returns the value of the option with the specified name on the target object provided.\n *\n * @param {string} name - the name of the {@link Option} whose value on target is to be returned\n * @param {Object} target - the object from which the value of the named {@link Option} is to be returned\n * @return {*} The value of the {@link Option} with name on target.\n * @public\n * @memberof OptionManager#\n */\n get: function(name, target) {\n return OptionManager._get(this.options[name], target);\n },\n\n /**\n * Returns a copy of all of the available options on the target object provided.\n *\n * @param {Object} target - the object from which the option name/value pairs are to be returned\n * @return {Object.} A hash containing the name/value pairs of all options on target.\n * @public\n * @memberof OptionManager#\n */\n getAll: function(target) {\n var name;\n var options = this.options;\n var result = {};\n\n for (name in options) {\n if (Utilities_1.hasOwn(options, name)) {\n result[name] = OptionManager._get(options[name], target);\n }\n }\n\n return result;\n },\n\n /**\n * Initializes the available options for the target object provided and then applies the initial values\n * within the speciifed options.\n *\n * This method will throw an error if any of the names within options does not match an available option.\n *\n * This involves setting the default values and defining properties for all of the available options on\n * target before finally calling {@link OptionMananger#setAll} with options and\n * target. Any options that are configured to be modifiable will have a setter included in their defined\n * property that will allow its corresponding value to be modified.\n *\n * If a change handler is specified, it will be called whenever the value changes on target for a\n * modifiable option, but only when done so via the defined property's setter.\n *\n * @param {Object.} options - the name/value pairs of the initial options to be set\n * @param {Object} target - the object on which the options are to be initialized\n * @param {Function} [changeHandler] - the function to be called whenever the value of an modifiable option changes on\n * target\n * @return {void}\n * @throws {Error} If options contains an invalid option name.\n * @public\n * @memberof OptionManager#\n */\n init: function(options, target, changeHandler) {\n if (typeof changeHandler !== 'function') {\n changeHandler = Utilities_1.noop;\n }\n\n var name, option;\n\n for (name in this.options) {\n if (Utilities_1.hasOwn(this.options, name)) {\n option = this.options[name];\n\n OptionManager._set(option, option.defaultValue, target);\n OptionManager._createAccessor(option, target, changeHandler);\n }\n }\n\n this._setAll(options, target, true);\n },\n\n /**\n * Sets the value of the option with the specified name on the target object provided to\n * value.\n *\n * This method will throw an error if name does not match an available option or matches an option that\n * cannot be modified.\n *\n * If value is null and the {@link Option} has a default value configured, then that default\n * value will be used instead. If the {@link Option} also has a value transformer configured, it will be used to\n * transform whichever value was determined to be used.\n *\n * This method returns whether the value of the underlying field on target was changed as a result.\n *\n * @param {string} name - the name of the {@link Option} whose value is to be set\n * @param {*} value - the value to be set for the named {@link Option} on target\n * @param {Object} target - the object on which value is to be set for the named {@link Option}\n * @return {boolean} true if the underlying field on target was changed; otherwise\n * false.\n * @throws {Error} If name is invalid or is for an option that cannot be modified.\n * @public\n * @memberof OptionManager#\n */\n set: function(name, value, target) {\n return this._set(name, value, target);\n },\n\n /**\n * Sets all of the specified options on the target object provided to their corresponding\n * values.\n *\n * This method will throw an error if any of the names within options does not match an available option\n * or matches an option that cannot be modified.\n *\n * If any value within options is null and the corresponding {@link Option} has a default\n * value configured, then that default value will be used instead. If an {@link Option} also has a value transformer\n * configured, it will be used to transform whichever value was determined to be used.\n *\n * This method returns whether the value for any of the underlying fields on target were changed as a\n * result.\n *\n * @param {Object.} options - the name/value pairs of options to be set\n * @param {Object} target - the object on which the options are to be set\n * @return {boolean} true if any of the underlying fields on target were changed; otherwise\n * false.\n * @throws {Error} If options contains an invalid option name or an option that cannot be modiifed.\n * @public\n * @memberof OptionManager#\n */\n setAll: function(options, target) {\n return this._setAll(options, target);\n },\n\n _set: function(name, value, target, allowUnmodifiable) {\n var option = this.options[name];\n if (!option) {\n throw new Error('Invalid option: ' + name);\n }\n if (!option.modifiable && !allowUnmodifiable) {\n throw new Error('Option cannot be modified: ' + name);\n }\n\n return OptionManager._set(option, value, target);\n },\n\n _setAll: function(options, target, allowUnmodifiable) {\n if (!options) {\n return false;\n }\n\n var name;\n var changed = false;\n\n for (name in options) {\n if (Utilities_1.hasOwn(options, name) && this._set(name, options[name], target, allowUnmodifiable)) {\n changed = true;\n }\n }\n\n return changed;\n }\n\n }, {\n\n _createAccessor: function(option, target, changeHandler) {\n var descriptor = {\n get: function() {\n return OptionManager._get(option, target);\n }\n };\n\n if (option.modifiable) {\n descriptor.set = function(value) {\n if (OptionManager._set(option, value, target)) {\n changeHandler(value, option);\n }\n };\n }\n\n Object.defineProperty(target, option.name, descriptor);\n },\n\n _get: function(option, target) {\n return target['_' + option.name];\n },\n\n _set: function(option, value, target) {\n var fieldName = '_' + option.name;\n var oldValue = target[fieldName];\n var newValue = option.transform(value != null ? value : option.defaultValue);\n\n target[fieldName] = newValue;\n\n return newValue !== oldValue;\n }\n\n });\n\n var OptionManager_1 = OptionManager;\n\n /**\n * Called whenever the value of a modifiable {@link Option} is changed on a target object via the defined property's\n * setter.\n *\n * @callback OptionManager~ChangeHandler\n * @param {*} value - the new value for option on the target object\n * @param {Option} option - the modifable {@link Option} whose value has changed on the target object.\n * @return {void}\n */\n\n /**\n * A basic manager for {@link Service} implementations that are mapped to simple names.\n *\n * @public\n * @class\n * @extends Nevis\n */\n var ServiceManager = lite.extend(function() {\n this._services = {};\n }, {\n\n /**\n * Returns the {@link Service} being managed with the specified name.\n *\n * @param {string} name - the name of the {@link Service} to be returned\n * @return {Service} The {@link Service} is being managed with name.\n * @throws {Error} If no {@link Service} is being managed with name.\n * @public\n * @memberof ServiceManager#\n */\n getService: function(name) {\n var service = this._services[name];\n if (!service) {\n throw new Error('Service is not being managed with name: ' + name);\n }\n\n return service;\n },\n\n /**\n * Sets the {@link Service} implementation to be managed for the specified name to the\n * service provided.\n *\n * @param {string} name - the name of the {@link Service} to be managed with name\n * @param {Service} service - the {@link Service} implementation to be managed\n * @return {void}\n * @throws {Error} If a {@link Service} is already being managed with the same name.\n * @public\n * @memberof ServiceManager#\n */\n setService: function(name, service) {\n if (this._services[name]) {\n throw new Error('Service is already managed with name: ' + name);\n }\n\n if (service) {\n this._services[name] = service;\n }\n }\n\n });\n\n var ServiceManager_1 = ServiceManager;\n\n var optionManager = new OptionManager_1([\n new Option_1('background', true, 'white'),\n new Option_1('backgroundAlpha', true, 1, Utilities_1.abs),\n new Option_1('element'),\n new Option_1('foreground', true, 'black'),\n new Option_1('foregroundAlpha', true, 1, Utilities_1.abs),\n new Option_1('level', true, 'L', Utilities_1.toUpperCase),\n new Option_1('mime', true, 'image/png'),\n new Option_1('padding', true, null, Utilities_1.abs),\n new Option_1('size', true, 100, Utilities_1.abs),\n new Option_1('value', true, '')\n ]);\n var serviceManager = new ServiceManager_1();\n\n /**\n * Enables configuration of a QR code generator which uses HTML5 canvas for rendering.\n *\n * @param {QRious~Options} [options] - the options to be used\n * @throws {Error} If any options are invalid.\n * @public\n * @class\n * @extends Nevis\n */\n var QRious = lite.extend(function(options) {\n optionManager.init(options, this, this.update.bind(this));\n\n var element = optionManager.get('element', this);\n var elementService = serviceManager.getService('element');\n var canvas = element && elementService.isCanvas(element) ? element : elementService.createCanvas();\n var image = element && elementService.isImage(element) ? element : elementService.createImage();\n\n this._canvasRenderer = new CanvasRenderer_1(this, canvas, true);\n this._imageRenderer = new ImageRenderer_1(this, image, image === element);\n\n this.update();\n }, {\n\n /**\n * Returns all of the options configured for this {@link QRious}.\n *\n * Any changes made to the returned object will not be reflected in the options themselves or their corresponding\n * underlying fields.\n *\n * @return {Object.} A copy of the applied options.\n * @public\n * @memberof QRious#\n */\n get: function() {\n return optionManager.getAll(this);\n },\n\n /**\n * Sets all of the specified options and automatically updates this {@link QRious} if any of the\n * underlying fields are changed as a result.\n *\n * This is the preferred method for updating multiple options at one time to avoid unnecessary updates between\n * changes.\n *\n * @param {QRious~Options} options - the options to be set\n * @return {void}\n * @throws {Error} If any options are invalid or cannot be modified.\n * @public\n * @memberof QRious#\n */\n set: function(options) {\n if (optionManager.setAll(options, this)) {\n this.update();\n }\n },\n\n /**\n * Returns the image data URI for the generated QR code using the mime provided.\n *\n * @param {string} [mime] - the MIME type for the image\n * @return {string} The image data URI for the QR code.\n * @public\n * @memberof QRious#\n */\n toDataURL: function(mime) {\n return this.canvas.toDataURL(mime || this.mime);\n },\n\n /**\n * Updates this {@link QRious} by generating a new {@link Frame} and re-rendering the QR code.\n *\n * @return {void}\n * @protected\n * @memberof QRious#\n */\n update: function() {\n var frame = new Frame_1({\n level: this.level,\n value: this.value\n });\n\n this._canvasRenderer.render(frame);\n this._imageRenderer.render(frame);\n }\n\n }, {\n\n /**\n * Configures the service provided to be used by all {@link QRious} instances.\n *\n * @param {Service} service - the {@link Service} to be configured\n * @return {void}\n * @throws {Error} If a {@link Service} has already been configured with the same name.\n * @public\n * @static\n * @memberof QRious\n */\n use: function(service) {\n serviceManager.setService(service.getName(), service);\n }\n\n });\n\n Object.defineProperties(QRious.prototype, {\n\n canvas: {\n /**\n * Returns the canvas element being used to render the QR code for this {@link QRious}.\n *\n * @return {*} The canvas element.\n * @public\n * @memberof QRious#\n * @alias canvas\n */\n get: function() {\n return this._canvasRenderer.getElement();\n }\n },\n\n image: {\n /**\n * Returns the img element being used to render the QR code for this {@link QRious}.\n *\n * @return {*} The img element.\n * @public\n * @memberof QRious#\n * @alias image\n */\n get: function() {\n return this._imageRenderer.getElement();\n }\n }\n\n });\n\n var QRious_1$2 = QRious;\n\n /**\n * The options used by {@link QRious}.\n *\n * @typedef {Object} QRious~Options\n * @property {string} [background=\"white\"] - The background color to be applied to the QR code.\n * @property {number} [backgroundAlpha=1] - The background alpha to be applied to the QR code.\n * @property {*} [element] - The element to be used to render the QR code which may either be an canvas or\n * img. The element(s) will be created if needed.\n * @property {string} [foreground=\"black\"] - The foreground color to be applied to the QR code.\n * @property {number} [foregroundAlpha=1] - The foreground alpha to be applied to the QR code.\n * @property {string} [level=\"L\"] - The error correction level to be applied to the QR code.\n * @property {string} [mime=\"image/png\"] - The MIME type to be used to render the image for the QR code.\n * @property {number} [padding] - The padding for the QR code in pixels.\n * @property {number} [size=100] - The size of the QR code in pixels.\n * @property {string} [value=\"\"] - The value to be encoded within the QR code.\n */\n\n var index = QRious_1$2;\n\n /**\n * Defines a service contract that must be met by all implementations.\n *\n * @public\n * @class\n * @extends Nevis\n */\n var Service = lite.extend({\n\n /**\n * Returns the name of this {@link Service}.\n *\n * @return {string} The service name.\n * @public\n * @abstract\n * @memberof Service#\n */\n getName: function() {}\n\n });\n\n var Service_1 = Service;\n\n /**\n * A service for working with elements.\n *\n * @public\n * @class\n * @extends Service\n */\n var ElementService = Service_1.extend({\n\n /**\n * Creates an instance of a canvas element.\n *\n * Implementations of {@link ElementService} must override this method with their own specific logic.\n *\n * @return {*} The newly created canvas element.\n * @public\n * @abstract\n * @memberof ElementService#\n */\n createCanvas: function() {},\n\n /**\n * Creates an instance of a image element.\n *\n * Implementations of {@link ElementService} must override this method with their own specific logic.\n *\n * @return {*} The newly created image element.\n * @public\n * @abstract\n * @memberof ElementService#\n */\n createImage: function() {},\n\n /**\n * @override\n */\n getName: function() {\n return 'element';\n },\n\n /**\n * Returns whether the specified element is a canvas.\n *\n * Implementations of {@link ElementService} must override this method with their own specific logic.\n *\n * @param {*} element - the element to be checked\n * @return {boolean} true if element is a canvas; otherwise false.\n * @public\n * @abstract\n * @memberof ElementService#\n */\n isCanvas: function(element) {},\n\n /**\n * Returns whether the specified element is an image.\n *\n * Implementations of {@link ElementService} must override this method with their own specific logic.\n *\n * @param {*} element - the element to be checked\n * @return {boolean} true if element is an image; otherwise false.\n * @public\n * @abstract\n * @memberof ElementService#\n */\n isImage: function(element) {}\n\n });\n\n var ElementService_1 = ElementService;\n\n /**\n * An implementation of {@link ElementService} intended for use within a browser environment.\n *\n * @public\n * @class\n * @extends ElementService\n */\n var BrowserElementService = ElementService_1.extend({\n\n /**\n * @override\n */\n createCanvas: function() {\n return document.createElement('canvas');\n },\n\n /**\n * @override\n */\n createImage: function() {\n return document.createElement('img');\n },\n\n /**\n * @override\n */\n isCanvas: function(element) {\n return element instanceof HTMLCanvasElement;\n },\n\n /**\n * @override\n */\n isImage: function(element) {\n return element instanceof HTMLImageElement;\n }\n\n });\n\n var BrowserElementService_1 = BrowserElementService;\n\n index.use(new BrowserElementService_1());\n\n var QRious_1 = index;\n\n return QRious_1;\n\n})));\n\n//# sourceMappingURL=qrious.js.map","import {PasswordPolicyValidationRequest, CheckCurrentPasswordResult, ChangeCredentialsResult} from './ChangePasswordController'\nimport QRious from 'qrious'\nimport { postJSON, toggleClass, fetchJSON } from './Helper';\n\nexport interface ChangeTotpControllerConfig {\n Form: HTMLFormElement,\n PasswordInput: HTMLInputElement;\n CodeInput: HTMLInputElement;\n IdentifierInput: HTMLInputElement;\n QrCanvasElement: HTMLCanvasElement;\n SuccessMessageLabel: HTMLElement;\n ErrorMessageLabel: HTMLElement;\n}\n\ninterface CheckTotpSecretRequest {\n codeForNewSecret: string;\n}\n\ninterface ChangeTotpRequest {\n password: string;\n codeForNewSecret: string;\n identifier: string;\n}\n\ninterface CheckTotpSecretResult {\n codeIsCorrect: boolean;\n}\n\ninterface GetUriForAuthenticatorResult {\n uri: string;\n}\n\nexport class ChangeTotpController {\n private config: ChangeTotpControllerConfig\n private isExternalEnv: boolean;\n\n constructor(config: ChangeTotpControllerConfig, isExternalEnv: boolean) {\n this.config = config;\n this.isExternalEnv = isExternalEnv;\n this.AttachEventHandlers();\n this.UpdateQrCodeForAuthenticator();\n }\n\n private AttachEventHandlers = () => {\n this.config.Form?.addEventListener('submit', this.OnChangeTotpFormSubmit);\n this.config.PasswordInput?.addEventListener(\"input\", this.OnPasswordInputChanged);\n this.config.CodeInput?.addEventListener(\"input\", this.OnTotpCodeInputChanged)\n }\n\n private OnPasswordInputChanged = () => {\n let password = this.config.PasswordInput?.value;\n this.ValidatePassword(password);\n }\n\n private ValidatePassword = (password: string) => {\n let request: PasswordPolicyValidationRequest = {\n password: password\n };\n\n postJSON(\"/api/authentication/v1/checkCurrentPassword\", request, this.isExternalEnv)\n .then(result => this.OnCurrentPasswordValidated(result))\n .catch(reason => console.log(reason))\n }\n\n private OnCurrentPasswordValidated = (response: CheckCurrentPasswordResult) => {\n toggleClass(this.config.PasswordInput, \"is-valid\", response.matches);\n toggleClass(this.config.PasswordInput, \"is-invalid\", !response.matches);\n if (response.matches) this.config.IdentifierInput?.focus();\n }\n\n private OnTotpCodeInputChanged = () => {\n let code = this.config.CodeInput?.value;\n this.ValidateCode(code);\n }\n\n private ValidateCode = (code: string) => {\n let request: CheckTotpSecretRequest = {\n codeForNewSecret: code\n };\n\n postJSON(\"/api/authentication/v1/checkTotpSecret\", request, this.isExternalEnv)\n .then(result => this.OnTotpCodeValidated(result))\n .catch(reason => console.log(reason))\n }\n\n private OnTotpCodeValidated = (response: CheckTotpSecretResult) => {\n toggleClass(document.getElementById(\"change-totp-code\"), \"is-valid\", response.codeIsCorrect);\n toggleClass(document.getElementById(\"change-totp-code\"), \"is-invalid\", !response.codeIsCorrect);\n }\n\n private OnChangeTotpFormSubmit = (e: any) => {\n e.preventDefault();\n\n var request: ChangeTotpRequest = {\n password: this.config.PasswordInput.value,\n codeForNewSecret: this.config.CodeInput.value,\n identifier: this.config.IdentifierInput.value\n };\n\n postJSON(\"/api/authentication/v1/changeTotpSecret\", request, this.isExternalEnv)\n .then(result => this.OnChangeTotpSuccess(result))\n .catch(reason => this.OnChangeTotpFail())\n }\n\n private UpdateQrCodeForAuthenticator = () => {\n fetchJSON(\"/api/authentication/v1/getUriForAuthenticator\", this.isExternalEnv)\n .then(result => {\n this.OnQrCodeValueForAuthenticatorReceived(result)\n })\n .catch(reason => console.log(reason))\n }\n\n private OnQrCodeValueForAuthenticatorReceived = (response: GetUriForAuthenticatorResult) => {\n new QRious({\n element: this.config.QrCanvasElement,\n value: response.uri,\n size: 418,\n padding: 60\n });\n }\n\n private OnChangeTotpSuccess = (response: ChangeCredentialsResult) => {\n toggleClass(this.config.SuccessMessageLabel, \"d-none\", !response.success);\n if (response.success) {\n document.querySelectorAll(\"button,a\").forEach(element => element.setAttribute('disabled', ''));\n setTimeout(function () { location.href = \"managesecondfactor.html\"; }, 3000);\n }\n let errorMessageAvailable = response.errorMessage != null && response.errorMessage != \"\";\n toggleClass(this.config.ErrorMessageLabel, \"d-none\", response.success);\n this.config.ErrorMessageLabel.innerText = (errorMessageAvailable ? response.errorMessage : \"\");\n }\n\n private OnChangeTotpFail = () => {\n console.error(\"password change failed\");\n }\n}","import {PasswordPolicyValidationRequest, CheckCurrentPasswordResult, ChangeCredentialsResult} from \"./ChangePasswordController\"\nimport { postJSON, toggleClass } from './Helper'\n\nexport interface ChangeHwTotpControllerConfig {\n Form: HTMLFormElement,\n PasswordInput: HTMLInputElement;\n CodeInput: HTMLInputElement;\n IdentifierInput: HTMLInputElement;\n SerialInput: HTMLInputElement;\n SuccessMessageLabel: HTMLElement;\n ErrorMessageLabel: HTMLElement;\n}\n\ninterface CheckHwTotpCodeRequest {\n serial: string;\n code: string\n}\n\ninterface CheckHwTotpCodeResult {\n matches: boolean;\n}\n\ninterface CheckHwTotpSerialRequest {\n serial: string;\n}\n\ninterface CheckHwTotpSerialResult {\n exists: boolean;\n}\n\ninterface ChangeHwTotpRequest {\n password: string;\n serial: string;\n code: string;\n identifier: string;\n}\n\ninterface ChangeHwTotpResult {\n success: boolean;\n errorMessage: string;\n}\n\nexport class ChangeHwTotpController {\n private config: ChangeHwTotpControllerConfig\n private isExternalEnv: boolean\n\n constructor(config: ChangeHwTotpControllerConfig, isExternalEnv: boolean) {\n this.config = config;\n this.isExternalEnv = isExternalEnv\n this.AttachEventHandlers();\n }\n\n private AttachEventHandlers = () => {\n this.config.Form?.addEventListener('submit', this.OnChangeHwTotpFormSubmit)\n this.config.PasswordInput?.addEventListener(\"input\", this.OnPasswordInputChanged);\n this.config.SerialInput?.addEventListener(\"input\", this.OnSerialInputChanged);\n this.config.CodeInput?.addEventListener(\"input\", this.OnTotpCodeInputChanged)\n }\n\n private OnPasswordInputChanged = () => {\n let password = this.config.PasswordInput?.value\n this.ValidatePassword(password);\n }\n\n private ValidatePassword = (password: string) => {\n let request: PasswordPolicyValidationRequest = {\n password: password\n };\n\n postJSON(\"/api/authentication/v1/checkCurrentPassword\", request, this.isExternalEnv)\n .then(result => this.OnCurrentPasswordValidated(result))\n .catch(reason => console.log(reason));\n }\n\n private OnCurrentPasswordValidated = (response: CheckCurrentPasswordResult) => {\n toggleClass(this.config.PasswordInput, \"is-valid\", response.matches);\n toggleClass(this.config.PasswordInput, \"is-invalid\", !response.matches);\n if (response.matches) this.config.IdentifierInput.focus();\n }\n\n private OnSerialInputChanged = () => {\n let serial = this.config.SerialInput?.value\n this.CheckIfSerialExists(serial);\n }\n\n private CheckIfSerialExists = (serial: string) => {\n let request: CheckHwTotpSerialRequest = {\n \"serial\": serial\n };\n\n postJSON(\"/api/authentication/v1/checkHwToptSerial\", request, this.isExternalEnv)\n .then(result => this.OnSerialChecked(result))\n .catch(reason => console.log(reason));\n }\n\n private OnSerialChecked = (response: CheckHwTotpSerialResult) => {\n toggleClass(this.config.SerialInput, \"is-valid\", response.exists);\n toggleClass(this.config.SerialInput, \"is-invalid\", !response.exists);\n if (response.exists) this.config.CodeInput?.focus();\n }\n\n private OnTotpCodeInputChanged = () => {\n let serial = this.config.SerialInput?.value;\n let code = this.config.CodeInput?.value;\n this.ValidateCode(serial, code);\n }\n\n private ValidateCode = (serial: string, code: string) => {\n let request: CheckHwTotpCodeRequest = {\n serial: serial,\n code: code\n };\n\n \n postJSON(\"/api/authentication/v1/checkHwTotpCode\", request, this.isExternalEnv)\n .then(result => this.OnTotpCodeValidated(result))\n .catch(reason => console.log(reason));\n }\n\n private OnTotpCodeValidated = (response: CheckHwTotpCodeResult) => {\n toggleClass(this.config.CodeInput, \"is-valid\", response.matches);\n toggleClass(this.config.CodeInput, \"is-invalid\", !response.matches);\n }\n\n private OnChangeHwTotpFormSubmit = (e: any) => {\n e.preventDefault();\n\n var request: ChangeHwTotpRequest = {\n password: this.config.PasswordInput?.value,\n serial: this.config.SerialInput?.value,\n code: this.config.CodeInput?.value,\n identifier: this.config.IdentifierInput?.value\n };\n\n postJSON(\"/api/authentication/v1/changeHwTotp\", request, this.isExternalEnv)\n .then(result => this.OnChangeHwTotpSuccess(result))\n .catch(reason => this.OnChangeHwTotpFail(reason));\n }\n\n private OnChangeHwTotpSuccess = (response: ChangeCredentialsResult) => {\n toggleClass(this.config.SuccessMessageLabel, \"d-none\", !response.success);\n let errorMessageAvailable = response.errorMessage != null && response.errorMessage != \"\";\n toggleClass(this.config.ErrorMessageLabel, \"d-none\", response.success);\n this.config.ErrorMessageLabel.innerText = (errorMessageAvailable ? response.errorMessage : \"\");\n if (response.success) {\n document.querySelectorAll(\"button,a\").forEach(element => element.setAttribute('disabled', ''));\n setTimeout(function () { location.href = \"managesecondfactor.html\"; }, 3000);\n }\n }\n\n private OnChangeHwTotpFail = (reason: any) => {\n console.error(reason);\n }\n}","import {PasswordPolicyValidationRequest, CheckCurrentPasswordResult} from './ChangePasswordController'\nimport { postJSON, toggleClass } from './Helper';\n\nexport interface ChangeFido2ControllerConfig {\n Form: HTMLFormElement;\n PasswordInput: HTMLInputElement;\n IdentifierInput: HTMLInputElement;\n}\n\nexport class Fido2Controller {\n private config: ChangeFido2ControllerConfig\n private isExternalEnv: boolean;\n\n constructor(config: ChangeFido2ControllerConfig, isExternalEnv: boolean) {\n this.config = config;\n this.isExternalEnv = isExternalEnv;\n this.AttachEventHandlers();\n }\n\n private AttachEventHandlers = () => {\n this.config.Form?.addEventListener('submit', this.OnChangeFido2FormSubmit);\n this.config.PasswordInput?.addEventListener(\"input\", this.OnPasswordInputChanged);\n }\n\n private OnPasswordInputChanged = () => {\n let password = this.config.PasswordInput?.value;\n this.ValidatePassword(password);\n }\n\n private ValidatePassword = (password: string) => {\n let request: PasswordPolicyValidationRequest = {\n password: password\n };\n\n postJSON(\"/api/authentication/v1/checkCurrentPassword\", request, this.isExternalEnv)\n .then(result => this.OnCurrentPasswordValidated(result))\n .catch(reason => console.log(reason))\n }\n\n private OnCurrentPasswordValidated = (response: CheckCurrentPasswordResult) => {\n toggleClass(this.config.PasswordInput, \"is-valid\", response.matches);\n toggleClass(this.config.PasswordInput, \"is-invalid\", !response.matches);\n }\n\n private OnChangeFido2FormSubmit = (e: any) => {\n e.preventDefault();\n console.log(\"register fido2\");\n var request = {\n //this.config.\n };\n\n postJSON(\"/api/authentication/v1/makeCredentialOptions\", request, this.isExternalEnv)\n .then(result => this.OnMakeCredential(result))\n .catch(reason => console.log(reason))\n }\n\n private OnMakeCredential(makeCredentialOptions) {\n console.log(makeCredentialOptions);\n\n makeCredentialOptions.challenge = this.coerceToArrayBuffer(makeCredentialOptions.challenge);\n // Turn ID into a UInt8Array Buffer for some reason\n makeCredentialOptions.user.id = this.coerceToArrayBuffer(makeCredentialOptions.user.id);\n\n makeCredentialOptions.excludeCredentials = makeCredentialOptions.excludeCredentials.map((c: any) => {\n c.id = this.coerceToArrayBuffer(c.id);\n return c;\n });\n\n if (makeCredentialOptions.authenticatorSelection.authenticatorAttachment === null) makeCredentialOptions.authenticatorSelection.authenticatorAttachment = undefined;\n\n console.log(\"Credential Options Formatted\", makeCredentialOptions);\n\n console.log(\"Creating PublicKeyCredential...\");\n\n var newCredential = navigator.credentials.create({\n publicKey: makeCredentialOptions\n }).then( (x) => {\n console.log(x);\n\n let makeCredentialRequest = {\n //\"username\": request.username,\n \"identifier\": this.config.IdentifierInput?.value,\n \"id\": x.id,\n /*\"rawId\": ab2str(x.rawId),\n \"attestationObject\": ab2str(x.attestationObject),\n \"clientDataJson\": ab2str(x.clientDataJSON)*/\n \"rawId\": this.bytesToBase64(new Uint8Array((x).rawId)),\n \"attestationObject\": this.bytesToBase64(new Uint8Array((x).response.attestationObject)),\n \"clientDataJson\": this.bytesToBase64(new Uint8Array((x).response.clientDataJSON)),\n \"password\": this.config.PasswordInput?.value\n };\n console.warn(makeCredentialRequest);\n\n postJSON(\"/api/authentication/v1/makeCredential\", makeCredentialRequest, this.isExternalEnv)\n .then(result => {\n document.getElementById(\"change-fido2-success-message\").classList.remove(\"d-none\");\n document.getElementById(\"change-fido2-error-message\").classList.add(\"d-none\");\n document.querySelectorAll(\"button,a\").forEach((element: HTMLElement) => element.setAttribute('disabled', ''));\n setTimeout(() => {\n location.href = \"managesecondfactor.html\";\n }, 3000)\n })\n .catch(reason => {\n document.getElementById(\"change-fido2-error-message\").classList.remove(\"d-none\");\n document.getElementById(\"change-fido2-success-message\").classList.add(\"d-none\");\n })\n });\n }\n\n private coerceToArrayBuffer(thing: any, name = \"no name\") {\n if (typeof thing === \"string\") {\n // base64url to base64\n thing = thing.replace(/-/g, \"+\").replace(/_/g, \"/\");\n\n // base64 to Uint8Array\n var str = window.atob(thing);\n var bytes = new Uint8Array(str.length);\n for (var i = 0; i < str.length; i++) {\n bytes[i] = str.charCodeAt(i);\n }\n thing = bytes;\n }\n\n // Array to Uint8Array\n if (Array.isArray(thing)) {\n thing = new Uint8Array(thing);\n }\n\n // Uint8Array to ArrayBuffer\n if (thing instanceof Uint8Array) {\n thing = thing.buffer;\n }\n\n // error if none of the above worked\n if (!(thing instanceof ArrayBuffer)) {\n throw new TypeError(\"could not coerce '\" + name + \"' to ArrayBuffer\");\n }\n\n return thing;\n };\n\n private base64abc = (() => {\n let abc = [],\n A = \"A\".charCodeAt(0),\n a = \"a\".charCodeAt(0),\n n = \"0\".charCodeAt(0);\n for (let i = 0; i < 26; ++i) {\n abc.push(String.fromCharCode(A + i));\n }\n for (let i = 0; i < 26; ++i) {\n abc.push(String.fromCharCode(a + i));\n }\n for (let i = 0; i < 10; ++i) {\n abc.push(String.fromCharCode(n + i));\n }\n abc.push(\"+\");\n abc.push(\"/\");\n return abc;\n })();\n\n private bytesToBase64(bytes: any) {\n let result = '', i, l = bytes.length;\n for (i = 2; i < l; i += 3) {\n result += this.base64abc[bytes[i - 2] >> 2];\n result += this.base64abc[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)];\n result += this.base64abc[((bytes[i - 1] & 0x0F) << 2) | (bytes[i] >> 6)];\n result += this.base64abc[bytes[i] & 0x3F];\n }\n if (i === l + 1) { // 1 octet missing\n result += this.base64abc[bytes[i - 2] >> 2];\n result += this.base64abc[(bytes[i - 2] & 0x03) << 4];\n result += \"==\";\n }\n if (i === l) { // 2 octets missing\n result += this.base64abc[bytes[i - 2] >> 2];\n result += this.base64abc[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)];\n result += this.base64abc[(bytes[i - 1] & 0x0F) << 2];\n result += \"=\";\n }\n return result;\n }\n}","import { fetchJSON } from \"./Helper\";\n\ninterface SecondFactorCredential {\n identifier: string;\n type: string;\n}\n\nexport interface SecondFactorControllerConfig {\n TotpList: HTMLElement,\n HwTotpList: HTMLElement,\n Fido2List: HTMLElement;\n}\n\nexport class SecondFactorController {\n private config: SecondFactorControllerConfig;\n private isExternalEnv: boolean;\n\n constructor(config: SecondFactorControllerConfig, isExternalEnv: boolean) {\n this.isExternalEnv = isExternalEnv\n this.config = config;\n this.GetSecondFactors();\n }\n\n private GetSecondFactors(): void {\n fetchJSON(\"/api/authentication/v1/secondFactors\", this.isExternalEnv)\n .catch(error => {\n if (error.code === 204) return Promise.resolve([])\n else throw error\n }).then(result => {\n this.OnGetSecondFactors(result)\n }).catch(reason => {\n console.error(reason);\n })\n }\n\n private OnGetSecondFactors(data: SecondFactorCredential[]): void {\n if (data.length === 0) return;\n this.config.TotpList.innerHTML = this.FormatCredentials(data.filter(x => x.type == \"totp\"));\n this.config.HwTotpList.innerHTML = this.FormatCredentials(data.filter(x => x.type == \"hwtotp\"));\n this.config.Fido2List.innerHTML = this.FormatCredentials(data.filter(x => x.type == \"fido2\"));\n }\n\n private FormatCredentials(credentials: SecondFactorCredential[]): string {\n if (credentials.length == 0) return `
Nicht hinterlegt
`;\n return credentials.map(this.FormatCredential).join(\"\");\n }\n\n private FormatCredential(credential: SecondFactorCredential): string {\n return `
  • \n ${credential.identifier}\n X\n
  • `;\n }\n}","import {PasswordPolicyValidationRequest, CheckCurrentPasswordResult} from './ChangePasswordController'\nimport { postJSON, toggleClass } from './Helper';\n\nexport interface DeleteSecondFactorControllerConfig {\n Form: HTMLFormElement,\n IdentifierInput: HTMLInputElement;\n PasswordInput: HTMLInputElement;\n}\n\ninterface DeleteSecondFactorRequest {\n identifier: string;\n password: string;\n}\n\ninterface DeleteSecondFactorResult {\n success: boolean;\n}\n\nexport class DeleteSecondFactorController {\n private config: DeleteSecondFactorControllerConfig;\n private isExternalEnv: boolean;\n\n constructor(config: DeleteSecondFactorControllerConfig, isExternalEnv: boolean) {\n this.config = config;\n this.isExternalEnv = isExternalEnv\n this.AttachEventHandlers();\n let parameters = this.GetUrlParameters();\n if (parameters[\"identifier\"] != null) this.config.IdentifierInput.value = parameters[\"identifier\"];\n setTimeout(() => { \n this.config.PasswordInput?.focus();\n }, 50);\n }\n\n private GetUrlParameters(): { [key: string]: string } {\n const params: {[key: string]: string} = {};\n const queryString = window.location.search.substring(1);\n const queries = queryString.split(\"&\");\n\n queries.forEach((indexQuery: string) => {\n const indexPair = indexQuery.split(\"=\");\n\n const queryKey = decodeURIComponent(indexPair[0]);\n const queryValue = decodeURIComponent(indexPair.length > 1 ? indexPair[1] : \"\");\n\n params[queryKey] = queryValue;\n });\n\n return params;\n }\n\n private AttachEventHandlers = () => {\n this.config.Form?.addEventListener('submit', this.OnFormSubmit);\n this.config.PasswordInput?.addEventListener(\"input\", this.OnPasswordInputChanged);\n }\n\n private OnFormSubmit = (e: any) => {\n e.preventDefault();\n\n let request: DeleteSecondFactorRequest = {\n identifier: this.config.IdentifierInput?.value,\n password: this.config.PasswordInput?.value\n };\n\n postJSON(\"/api/authentication/v1/deleteSecondFactor\", request, this.isExternalEnv)\n .then(result => {\n if (result.success) {\n document.getElementById(\"delete-secondfactor-success-message\").classList.remove(\"d-none\");\n document.getElementById(\"delete-secondfactor-error-message\").classList.add(\"d-none\");\n document.querySelectorAll(\"button,a\").forEach(element => element.setAttribute('disabled', ''));\n setTimeout(function () { document.location.href = \"managesecondfactor.html\" }, 3000);\n } else {\n document.getElementById(\"delete-secondfactor-error-message\").classList.remove(\"d-none\");\n document.getElementById(\"delete-secondfactor-success-message\").classList.add(\"d-none\");\n }\n })\n .catch(reason => this.OnDeleteSecondFactorFail())\n }\n\n private OnDeleteSecondFactorFail = () => {\n console.error(\"delete of secondfactor failed\");\n }\n\n private OnPasswordInputChanged = () => {\n let password = this.config.PasswordInput?.value;\n this.ValidateCurrentPassword(password);\n }\n\n private ValidateCurrentPassword = (password: string) => {\n let request: PasswordPolicyValidationRequest = {\n password: password\n };\n\n postJSON(\"/api/authentication/v1/checkCurrentPassword\", request, this.isExternalEnv)\n .then(result => {\n this.OnCurrentPasswordValidated(result)\n })\n .catch(reason => console.log(reason))\n }\n\n private OnCurrentPasswordValidated = (response: CheckCurrentPasswordResult) => {\n toggleClass(this.config.PasswordInput, \"is-valid\", response.matches);\n toggleClass(this.config.PasswordInput, \"is-invalid\", !response.matches);\n }\n}","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it === 'object' ? it !== null : isCallable(it);\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n return typeof argument === 'function';\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] < 4 ? 1 : match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n","var isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw TypeError(tryToString(argument) + ' is not a function');\n};\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var isCallable = require('../internals/is-callable');\nvar getBuiltIn = require('../internals/get-built-in');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && Object(it) instanceof $Symbol;\n};\n","module.exports = function (argument) {\n try {\n return String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","var aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return func == null ? undefined : aCallable(func);\n};\n","var isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = fn.call(input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = fn.call(input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var global = require('../internals/global');\n\nmodule.exports = function (key, value) {\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.18.3',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var toObject = require('../internals/to-object');\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty.call(toObject(it), key);\n};\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n }\n } return WellKnownSymbolsStore[name];\n};\n","var isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = exoticToPrim.call(input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : String(key);\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- requied for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var isObject = require('../internals/is-object');\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw TypeError(String(argument) + ' is not an object');\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n if (wmhas.call(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","module.exports = {};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var name = options && options.name !== undefined ? options.name : key;\n var state;\n if (isCallable(value)) {\n if (String(name).slice(0, 7) === 'Symbol(') {\n name = '[' + String(name).replace(/^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n createNonEnumerableProperty(value, 'name', name);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof name == 'string' ? name : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n});\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- safe\n return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (argument) {\n if (typeof argument === 'object' || isCallable(argument)) return argument;\n throw TypeError(\"Can't set \" + String(argument) + ' as a prototype');\n};\n","/* eslint-disable no-proto -- safe */\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !hasOwn(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","module.exports = function (it, Constructor, name) {\n if (it instanceof Constructor) return it;\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n};\n","module.exports = {};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var aCallable = require('../internals/a-callable');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aCallable(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar bind = require('../internals/function-bind-context');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that, 1 + AS_ENTRIES + INTERRUPTED);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'normal', condition);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (!iterFn) throw TypeError(String(iterable) + ' is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","var classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n","var aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(iteratorMethod.call(argument));\n throw TypeError(String(argument) + ' is not iterable');\n};\n","var anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = innerResult.call(iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = constructorRegExp.exec;\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(function () { /* empty */ });\n\nvar isConstructorModern = function (argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(Object, empty, argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function (argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n // we can't check .prototype since constructors produced by .bind haven't it\n } return INCORRECT_TO_STRING || !!exec.call(constructorRegExp, inspectSource(argument));\n};\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar fails = require('../internals/fails');\nvar bind = require('../internals/function-bind-context');\nvar html = require('../internals/html');\nvar createElement = require('../internals/document-create-element');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar location, defer, channel, port;\n\ntry {\n // Deno throws a ReferenceError on `location` access without `--location` flag\n location = global.location;\n} catch (error) { /* empty */ }\n\nvar run = function (id) {\n // eslint-disable-next-line no-prototype-builtins -- safe\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(String(id), location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(fn) {\n var args = [];\n var argumentsLength = arguments.length;\n var i = 1;\n while (argumentsLength > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func -- spec requirement\n (isCallable(fn) ? fn : Function(fn)).apply(undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n isCallable(global.postMessage) &&\n !global.importScripts &&\n location && location.protocol !== 'file:' &&\n !fails(post)\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n if (isConstructor(argument)) return argument;\n throw TypeError(tryToString(argument) + ' is not a constructor');\n};\n","var anObject = require('../internals/an-object');\nvar aConstructor = require('../internals/a-constructor');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aConstructor(S);\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_IOS_PEBBLE = require('../internals/engine-is-ios-pebble');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n // workaround of WebKit ~ iOS Safari 10.1 bug\n promise.constructor = Promise;\n then = promise.then;\n notify = function () {\n then.call(promise, flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n","var userAgent = require('../internals/engine-user-agent');\nvar global = require('../internals/global');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && global.Pebble !== undefined;\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n","'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aCallable(resolve);\n this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar aCallable = require('../internals/a-callable');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_NODE = require('../internals/engine-is-node');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar NativePromisePrototype = NativePromise && NativePromise.prototype;\nvar PromiseConstructor = NativePromise;\nvar PromiseConstructorPrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar NATIVE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar SUBCLASSING = false;\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(PromiseConstructor);\n var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(PromiseConstructor);\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n // We need Promise#finally in the pure version for preventing prototype pollution\n if (IS_PURE && !PromiseConstructorPrototype['finally']) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = new PromiseConstructor(function (resolve) { resolve(1); });\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n if (!SUBCLASSING) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return !GLOBAL_CORE_JS_PROMISE && IS_BROWSER && !NATIVE_REJECTION_EVENT;\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n var chain = state.reactions;\n microtask(function () {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var index = 0;\n // variable length - can't use forEach\n while (chain.length > index) {\n var reaction = chain[index++];\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n }\n state.reactions = [];\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n task.call(global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n task.call(global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n then.call(value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromiseConstructor, PROMISE);\n aCallable(executor);\n Internal.call(this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n PromiseConstructorPrototype = PromiseConstructor.prototype;\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: [],\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromiseConstructorPrototype, {\n // `Promise.prototype.then` method\n // https://tc39.es/ecma262/#sec-promise.prototype.then\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n reaction.fail = isCallable(onRejected) && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n state.parent = true;\n state.reactions.push(reaction);\n if (state.state != PENDING) notify(state, false);\n return reaction.promise;\n },\n // `Promise.prototype.catch` method\n // https://tc39.es/ecma262/#sec-promise.prototype.catch\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && isCallable(NativePromise) && NativePromisePrototype !== Object.prototype) {\n nativeThen = NativePromisePrototype.then;\n\n if (!SUBCLASSING) {\n // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n redefine(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n nativeThen.call(that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n\n // makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\n redefine(NativePromisePrototype, 'catch', PromiseConstructorPrototype['catch'], { unsafe: true });\n }\n\n // make `.constructor === Promise` work for native promise-based APIs\n try {\n delete NativePromisePrototype.constructor;\n } catch (error) { /* empty */ }\n\n // make `instanceof Promise` work for native promise-based APIs\n if (setPrototypeOf) {\n setPrototypeOf(NativePromisePrototype, PromiseConstructorPrototype);\n }\n }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n // `Promise.reject` method\n // https://tc39.es/ecma262/#sec-promise.reject\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n capability.reject.call(undefined, r);\n return capability.promise;\n }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n // `Promise.resolve` method\n // https://tc39.es/ecma262/#sec-promise.resolve\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n // `Promise.all` method\n // https://tc39.es/ecma262/#sec-promise.all\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n $promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n },\n // `Promise.race` method\n // https://tc39.es/ecma262/#sec-promise.race\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n iterate(iterable, function (promise) {\n $promiseResolve.call(C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length === 1 ? console.error(a) : console.error(a, b);\n }\n};\n","module.exports = typeof window == 'object';\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n redefine(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","var hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof Object ? ObjectPrototype : null;\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n redefine(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n } else {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n }\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n redefine(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n }\n Iterators[NAME] = defaultIterator;\n\n return methods;\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.array.iterator');\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar InternalStateModule = require('../internals/internal-state');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar bind = require('../internals/function-bind-context');\nvar classof = require('../internals/classof');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar $toString = require('../internals/to-string');\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar nativeFetch = getBuiltIn('fetch');\nvar NativeRequest = getBuiltIn('Request');\nvar RequestPrototype = NativeRequest && NativeRequest.prototype;\nvar Headers = getBuiltIn('Headers');\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n try {\n return decodeURIComponent(sequence);\n } catch (error) {\n return sequence;\n }\n};\n\nvar deserialize = function (it) {\n var result = it.replace(plus, ' ');\n var bytes = 4;\n try {\n return decodeURIComponent(result);\n } catch (error) {\n while (bytes) {\n result = result.replace(percentSequence(bytes--), percentDecode);\n }\n return result;\n }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replace = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\n\nvar replacer = function (match) {\n return replace[match];\n};\n\nvar serialize = function (it) {\n return encodeURIComponent(it).replace(find, replacer);\n};\n\nvar parseSearchParams = function (result, query) {\n if (query) {\n var attributes = query.split('&');\n var index = 0;\n var attribute, entry;\n while (index < attributes.length) {\n attribute = attributes[index++];\n if (attribute.length) {\n entry = attribute.split('=');\n result.push({\n key: deserialize(entry.shift()),\n value: deserialize(entry.join('='))\n });\n }\n }\n }\n};\n\nvar updateSearchParams = function (query) {\n this.entries.length = 0;\n parseSearchParams(this.entries, query);\n};\n\nvar validateArgumentsLength = function (passed, required) {\n if (passed < required) throw TypeError('Not enough arguments');\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n setInternalState(this, {\n type: URL_SEARCH_PARAMS_ITERATOR,\n iterator: getIterator(getInternalParamsState(params).entries),\n kind: kind\n });\n}, 'Iterator', function next() {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var step = state.iterator.next();\n var entry = step.value;\n if (!step.done) {\n step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n } return step;\n});\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n var that = this;\n var entries = [];\n var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key;\n\n setInternalState(that, {\n type: URL_SEARCH_PARAMS,\n entries: entries,\n updateURL: function () { /* empty */ },\n updateSearchParams: updateSearchParams\n });\n\n if (init !== undefined) {\n if (isObject(init)) {\n iteratorMethod = getIteratorMethod(init);\n if (iteratorMethod) {\n iterator = getIterator(init, iteratorMethod);\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n entryIterator = getIterator(anObject(step.value));\n entryNext = entryIterator.next;\n if (\n (first = entryNext.call(entryIterator)).done ||\n (second = entryNext.call(entryIterator)).done ||\n !entryNext.call(entryIterator).done\n ) throw TypeError('Expected sequence with length 2');\n entries.push({ key: $toString(first.value), value: $toString(second.value) });\n }\n } else for (key in init) if (hasOwn(init, key)) entries.push({ key: key, value: $toString(init[key]) });\n } else {\n parseSearchParams(\n entries,\n typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : $toString(init)\n );\n }\n }\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\nredefineAll(URLSearchParamsPrototype, {\n // `URLSearchParams.prototype.append` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n append: function append(name, value) {\n validateArgumentsLength(arguments.length, 2);\n var state = getInternalParamsState(this);\n state.entries.push({ key: $toString(name), value: $toString(value) });\n state.updateURL();\n },\n // `URLSearchParams.prototype.delete` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n 'delete': function (name) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var key = $toString(name);\n var index = 0;\n while (index < entries.length) {\n if (entries[index].key === key) entries.splice(index, 1);\n else index++;\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.get` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n get: function get(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = $toString(name);\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) return entries[index].value;\n }\n return null;\n },\n // `URLSearchParams.prototype.getAll` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n getAll: function getAll(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = $toString(name);\n var result = [];\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) result.push(entries[index].value);\n }\n return result;\n },\n // `URLSearchParams.prototype.has` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n has: function has(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = $toString(name);\n var index = 0;\n while (index < entries.length) {\n if (entries[index++].key === key) return true;\n }\n return false;\n },\n // `URLSearchParams.prototype.set` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n set: function set(name, value) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var found = false;\n var key = $toString(name);\n var val = $toString(value);\n var index = 0;\n var entry;\n for (; index < entries.length; index++) {\n entry = entries[index];\n if (entry.key === key) {\n if (found) entries.splice(index--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found) entries.push({ key: key, value: val });\n state.updateURL();\n },\n // `URLSearchParams.prototype.sort` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n sort: function sort() {\n var state = getInternalParamsState(this);\n var entries = state.entries;\n // Array#sort is not stable in some engines\n var slice = entries.slice();\n var entry, entriesIndex, sliceIndex;\n entries.length = 0;\n for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) {\n entry = slice[sliceIndex];\n for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) {\n if (entries[entriesIndex].key > entry.key) {\n entries.splice(entriesIndex, 0, entry);\n break;\n }\n }\n if (entriesIndex === sliceIndex) entries.push(entry);\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.forEach` method\n forEach: function forEach(callback /* , thisArg */) {\n var entries = getInternalParamsState(this).entries;\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined, 3);\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n boundFunction(entry.value, entry.key, this);\n }\n },\n // `URLSearchParams.prototype.keys` method\n keys: function keys() {\n return new URLSearchParamsIterator(this, 'keys');\n },\n // `URLSearchParams.prototype.values` method\n values: function values() {\n return new URLSearchParamsIterator(this, 'values');\n },\n // `URLSearchParams.prototype.entries` method\n entries: function entries() {\n return new URLSearchParamsIterator(this, 'entries');\n }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\nredefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries, { name: 'entries' });\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\nredefine(URLSearchParamsPrototype, 'toString', function toString() {\n var entries = getInternalParamsState(this).entries;\n var result = [];\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n result.push(serialize(entry.key) + '=' + serialize(entry.value));\n } return result.join('&');\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, forced: !USE_NATIVE_URL }, {\n URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` and `Request` for correct work with polyfilled `URLSearchParams`\nif (!USE_NATIVE_URL && isCallable(Headers)) {\n var wrapRequestOptions = function (init) {\n if (isObject(init)) {\n var body = init.body;\n var headers;\n if (classof(body) === URL_SEARCH_PARAMS) {\n headers = init.headers ? new Headers(init.headers) : new Headers();\n if (!headers.has('content-type')) {\n headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n return create(init, {\n body: createPropertyDescriptor(0, String(body)),\n headers: createPropertyDescriptor(0, headers)\n });\n }\n } return init;\n };\n\n if (isCallable(nativeFetch)) {\n $({ global: true, enumerable: true, forced: true }, {\n fetch: function fetch(input /* , init */) {\n return nativeFetch(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n }\n });\n }\n\n if (isCallable(NativeRequest)) {\n var RequestConstructor = function Request(input /* , init */) {\n anInstance(this, RequestConstructor, 'Request');\n return new NativeRequest(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n };\n\n RequestPrototype.constructor = RequestConstructor;\n RequestConstructor.prototype = RequestPrototype;\n\n $({ global: true, forced: true }, {\n Request: RequestConstructor\n });\n }\n}\n\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n var url = new URL('b?a=1&b=2&c=3', 'http://a');\n var searchParams = url.searchParams;\n var result = '';\n url.pathname = 'c%20d';\n searchParams.forEach(function (value, key) {\n searchParams['delete']('b');\n result += key + value;\n });\n return (IS_PURE && !url.toJSON)\n || !searchParams.sort\n || url.href !== 'http://a/c%20d?a=1&c=3'\n || searchParams.get('c') !== '3'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !searchParams[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('http://тест').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('http://a#б').hash !== '#%D0%B1'\n // fails in Chrome 66-\n || result !== 'a1c3'\n // throws in Safari\n || new URL('http://x', undefined).host !== 'x';\n});\n","var classof = require('../internals/classof');\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return String(argument);\n};\n","var global =\n (typeof globalThis !== 'undefined' && globalThis) ||\n (typeof self !== 'undefined' && self) ||\n (typeof global !== 'undefined' && global)\n\nvar support = {\n searchParams: 'URLSearchParams' in global,\n iterable: 'Symbol' in global && 'iterator' in Symbol,\n blob:\n 'FileReader' in global &&\n 'Blob' in global &&\n (function() {\n try {\n new Blob()\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in global,\n arrayBuffer: 'ArrayBuffer' in global\n}\n\nfunction isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n}\n\nif (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name: \"' + name + '\"')\n }\n return name.toLowerCase()\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n}\n\n// Build a destructive iterator for the value list\nfunction iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n}\n\nexport function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n}\n\nHeaders.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue + ', ' + value : value\n}\n\nHeaders.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n}\n\nHeaders.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n}\n\nHeaders.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n}\n\nHeaders.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n}\n\nHeaders.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n}\n\nHeaders.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push(name)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.values = function() {\n var items = []\n this.forEach(function(value) {\n items.push(value)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push([name, value])\n })\n return iteratorFor(items)\n}\n\nif (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n}\n\nfunction consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n}\n\nfunction fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n}\n\nfunction readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n}\n\nfunction readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n}\n\nfunction readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n}\n\nfunction bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n}\n\nfunction Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n /*\n fetch-mock wraps the Response object in an ES6 Proxy to\n provide useful test harness features such as flush. However, on\n ES5 browsers without fetch or Proxy support pollyfills must be used;\n the proxy-pollyfill is unable to proxy an attribute unless it exists\n on the object before the Proxy is created. This change ensures\n Response.bodyUsed exists on the instance, while maintaining the\n semantic of setting Request.bodyUsed in the constructor before\n _initBody is called.\n */\n this.bodyUsed = this.bodyUsed\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n this._bodyText = body = Object.prototype.toString.call(body)\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n var isConsumed = consumed(this)\n if (isConsumed) {\n return isConsumed\n }\n if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n return Promise.resolve(\n this._bodyArrayBuffer.buffer.slice(\n this._bodyArrayBuffer.byteOffset,\n this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n )\n )\n } else {\n return Promise.resolve(this._bodyArrayBuffer)\n }\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n}\n\n// HTTP methods whose capitalization should be normalized\nvar methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\nfunction normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return methods.indexOf(upcased) > -1 ? upcased : method\n}\n\nexport function Request(input, options) {\n if (!(this instanceof Request)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n this.signal = input.signal\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.signal = options.signal || this.signal\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n\n if (this.method === 'GET' || this.method === 'HEAD') {\n if (options.cache === 'no-store' || options.cache === 'no-cache') {\n // Search for a '_' parameter in the query string\n var reParamSearch = /([?&])_=[^&]*/\n if (reParamSearch.test(this.url)) {\n // If it already exists then set the value with the current time\n this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime())\n } else {\n // Otherwise add a new '_' parameter to the end with the current time\n var reQueryString = /\\?/\n this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime()\n }\n }\n }\n}\n\nRequest.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n}\n\nfunction decode(body) {\n var form = new FormData()\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n}\n\nfunction parseHeaders(rawHeaders) {\n var headers = new Headers()\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ')\n // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n // https://github.com/github/fetch/issues/748\n // https://github.com/zloirock/core-js/issues/751\n preProcessedHeaders\n .split('\\r')\n .map(function(header) {\n return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n })\n .forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n}\n\nBody.call(Request.prototype)\n\nexport function Response(bodyInit, options) {\n if (!(this instanceof Response)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = options.status === undefined ? 200 : options.status\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = options.statusText === undefined ? '' : '' + options.statusText\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n}\n\nBody.call(Response.prototype)\n\nResponse.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n}\n\nResponse.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n}\n\nvar redirectStatuses = [301, 302, 303, 307, 308]\n\nResponse.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n}\n\nexport var DOMException = global.DOMException\ntry {\n new DOMException()\n} catch (err) {\n DOMException = function(message, name) {\n this.message = message\n this.name = name\n var error = Error(message)\n this.stack = error.stack\n }\n DOMException.prototype = Object.create(Error.prototype)\n DOMException.prototype.constructor = DOMException\n}\n\nexport function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n\n if (request.signal && request.signal.aborted) {\n return reject(new DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest()\n\n function abortXhr() {\n xhr.abort()\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n setTimeout(function() {\n resolve(new Response(body, options))\n }, 0)\n }\n\n xhr.onerror = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'))\n }, 0)\n }\n\n xhr.ontimeout = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'))\n }, 0)\n }\n\n xhr.onabort = function() {\n setTimeout(function() {\n reject(new DOMException('Aborted', 'AbortError'))\n }, 0)\n }\n\n function fixUrl(url) {\n try {\n return url === '' && global.location.href ? global.location.href : url\n } catch (e) {\n return url\n }\n }\n\n xhr.open(request.method, fixUrl(request.url), true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false\n }\n\n if ('responseType' in xhr) {\n if (support.blob) {\n xhr.responseType = 'blob'\n } else if (\n support.arrayBuffer &&\n request.headers.get('Content-Type') &&\n request.headers.get('Content-Type').indexOf('application/octet-stream') !== -1\n ) {\n xhr.responseType = 'arraybuffer'\n }\n }\n\n if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers)) {\n Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n xhr.setRequestHeader(name, normalizeValue(init.headers[name]))\n })\n } else {\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n }\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr)\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr)\n }\n }\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n}\n\nfetch.polyfill = true\n\nif (!global.fetch) {\n global.fetch = fetch\n global.Headers = Headers\n global.Request = Request\n global.Response = Response\n}\n","import {LoginControllerConfig, LoginController} from \"./LoginController\"\nimport {HomeControllerConfig, HomeController} from \"./HomeController\"\nimport {ChangePasswordControllerConfig, ChangePasswordController } from \"./ChangePasswordController\"\nimport {ChangeTotpControllerConfig, ChangeTotpController} from \"./ChangeTotpController\"\nimport {ChangeHwTotpControllerConfig, ChangeHwTotpController} from \"./ChangeHwTotpController\"\nimport {ChangeFido2ControllerConfig, Fido2Controller} from \"./Fido2Controller\"\nimport {SecondFactorControllerConfig, SecondFactorController} from \"./SecondFactorController\"\nimport {DeleteSecondFactorControllerConfig, DeleteSecondFactorController} from \"./DeleteSecondFactorController\"\nimport { getPictureOfTheDay } from \"./pictureOfTheDay\"\n\nimport 'bootstrap/dist/css/bootstrap.min.css'\n\nimport 'core-js/modules/es.promise.js'\nimport 'core-js/modules/web.url-search-params.js'\nimport 'whatwg-fetch'\n\ndocument.addEventListener('DOMContentLoaded', OnDocumentReady)\n\nasync function OnDocumentReady() {\n let loginControllerConfig: LoginControllerConfig = {\n ErrorMessageLabel: document.getElementById(\"login-error-message\"),\n Form: document.getElementById(\"login-form\") as HTMLFormElement,\n ResetPasswordForm: document.getElementById(\"reset-password-form\") as HTMLFormElement,\n UsernameInput: document.getElementById(\"login-username\") as HTMLInputElement,\n PasswordInput: document.getElementById(\"login-password\") as HTMLInputElement,\n TotpInput: document.getElementById(\"login-totp\") as HTMLInputElement,\n TotpInputGroup: document.getElementById(\"login-totp-group\") as HTMLInputElement,\n Fido2LoginButton: document.getElementById(\"login-fido2\") as HTMLInputElement,\n LoginButton: document.getElementById(\"login-button\") as HTMLInputElement\n }\n \n let homeControllerConfig: HomeControllerConfig = {\n DisplayNameLabel: document.getElementById(\"current-displayname\"),\n PortalTitle: document.querySelector(\"#portal-title h1\"),\n PortalSubTitle: document.querySelector(\"#portal-title h2\"),\n PortalLegalInfo: document.querySelector(\"#portal-legalInfo\")\n }\n \n let changePasswordControllerConfig: ChangePasswordControllerConfig = {\n Form: document.getElementById(\"changePassword-form\") as HTMLFormElement,\n ResetPasswordTokenInput: document.getElementById(\"changePassword-token\") as HTMLInputElement,\n CurrentPasswordInput: document.getElementById(\"changePassword-current-password\") as HTMLInputElement,\n NewPasswordInput: document.getElementById(\"changePassword-new-password\") as HTMLInputElement,\n RepeatNewPasswordInput: document.getElementById(\"changePassword-repeat-new-password\") as HTMLInputElement\n }\n \n let changeTotpControllerConfig: ChangeTotpControllerConfig = {\n Form: document.getElementById(\"change-totp-form\") as HTMLFormElement,\n PasswordInput: document.getElementById(\"change-totp-password\") as HTMLInputElement,\n CodeInput: document.getElementById(\"change-totp-code\") as HTMLInputElement,\n IdentifierInput: document.getElementById(\"change-totp-identifier\") as HTMLInputElement,\n QrCanvasElement: document.getElementById(\"qr\"),\n SuccessMessageLabel: document.getElementById(\"change-totp-success-message\"),\n ErrorMessageLabel: document.getElementById(\"change-totp-error-message\")\n }\n \n let changeHwTotpControllerConfig: ChangeHwTotpControllerConfig = {\n CodeInput: document.getElementById(\"change-hwtotp-code\") as HTMLInputElement,\n IdentifierInput: document.getElementById(\"change-hwtotp-identifier\") as HTMLInputElement,\n Form: document.getElementById(\"change-hwtotp-form\") as HTMLFormElement,\n PasswordInput: document.getElementById(\"change-hwtotp-password\") as HTMLInputElement,\n SerialInput: document.getElementById(\"change-hwtotp-serial\") as HTMLInputElement,\n SuccessMessageLabel: document.getElementById(\"change-totp-success-message\"),\n ErrorMessageLabel: document.getElementById(\"change-totp-error-message\")\n }\n \n let changeFido2ControllerConfig: ChangeFido2ControllerConfig = {\n Form: document.getElementById(\"change-fido2-form\") as HTMLFormElement,\n PasswordInput: document.getElementById(\"change-fido2-password\") as HTMLInputElement,\n IdentifierInput: document.getElementById(\"change-fido2-identifier\") as HTMLInputElement\n }\n \n let secondFactorControllerConfig: SecondFactorControllerConfig = {\n TotpList: document.getElementById(\"totp-list\"),\n HwTotpList: document.getElementById(\"hwtotp-list\"),\n Fido2List: document.getElementById(\"fido2-list\")\n }\n \n let deleteSecondFactorControllerConfig: DeleteSecondFactorControllerConfig = {\n Form: document.getElementById(\"delete-secondfactor-form\") as HTMLFormElement,\n IdentifierInput: document.getElementById(\"delete-secondfactor-identifier\") as HTMLInputElement,\n PasswordInput: document.getElementById(\"delete-secondfactor-password\") as HTMLInputElement\n }\n\n let isExternalEnv = false;\n const homeController = new HomeController(homeControllerConfig);\n try {\n await homeController.UpdatePortalSettings();\n } catch (error) {\n if(error.code === 404) isExternalEnv = true;\n }\n \n homeController.UpdateDisplayName(isExternalEnv);\n\n new LoginController(loginControllerConfig, isExternalEnv);\n new ChangePasswordController(changePasswordControllerConfig, isExternalEnv);\n new ChangeTotpController(changeTotpControllerConfig, isExternalEnv);\n new ChangeHwTotpController(changeHwTotpControllerConfig, isExternalEnv);\n new Fido2Controller(changeFido2ControllerConfig, isExternalEnv);\n new SecondFactorController(secondFactorControllerConfig, isExternalEnv);\n new DeleteSecondFactorController(deleteSecondFactorControllerConfig, isExternalEnv);\n\n FocusFirstInput();\n HandleUrlParameters(loginControllerConfig);\n getPictureOfTheDay(isExternalEnv);\n}\n\nfunction FocusFirstInput() {\n (document.querySelector(\"form .form-group:first-child input\") as HTMLInputElement).focus();\n}\n\nfunction HandleUrlParameters(loginControllerConfig: LoginControllerConfig) {\n let queryParameters = new URLSearchParams(window.location.search);\n if (queryParameters.has('login_hint')) {\n loginControllerConfig.UsernameInput.value = queryParameters.get(\"login_hint\");\n loginControllerConfig.PasswordInput.focus();\n }\n}","import { fetchJSON } from \"./Helper\"\n\nexport function getPictureOfTheDay(isExternalEnv: boolean) {\n fetchJSON(\"https://apps.rescuetrack.com/api/apps/pictureOfTheDay\", false)\n .then(result => document.querySelector(\"body\").style.backgroundImage = `url(${result.url})`)\n .catch(reason => console.log(reason))\n}\n"],"names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","_","label","sent","trys","ops","g","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","pop","length","push","ContentType","baseURL","postJSON","url","data","isExternalEnv","fetch","method","JSON","stringify","headers","makeJSONHTTPHeaders","response","_b","ok","Error","statusText","get","includes","json","fetchJSON","_a","status","text","code","Headers","append","toggleClass","element","className","force","classList","add","remove","LoginController","makeAssertionOptions","console","log","options","errorMessage","error","challenge","replace","Uint8Array","from","atob","c","charCodeAt","allowCredentials","forEach","listItem","fixedId","id","navigator","credentials","publicKey","assertedCredential","authData","authenticatorData","clientDataJSON","rawId","sig","signature","_this","coerceToBase64Url","type","extensions","getClientExtensionResults","clientDataJson","GetCredentials","PerformLoginRequest","err","message","thing","Array","isArray","ArrayBuffer","str","len","byteLength","i","String","fromCharCode","window","btoa","document","getElementById","setTimeout","location","href","config","PasswordInput","otp","TotpInput","request","username","UsernameInput","slice","indexOf","OnLoginSuccess","catch","reason","OnLoginFail","Form","addEventListener","OnLoginFormSubmit","ResetPasswordForm","OnResetPasswordFormSubmit","Fido2LoginButton","OnFido2LoginButtonClick","preventDefault","onAssertionOptionsSuccess","OnResetPasswordSuccess","OnResetPasswordFail","totpRequired","loggedIn","redirectUri","ErrorMessageLabel","loginMessage","innerHTML","requiredCredentials","filter","TotpInputGroup","focus","fido2Required","disabled","LoginButton","innerText","toString","AttachEventHandlers","OnGetUserInformationSuccess","OnGetUserInformationFail","OnGetPortalSettingsSuccess","PortalTitle","title","PortalSubTitle","subTitle","PortalLegalInfo","legalInfo","DisplayNameLabel","displayName","ChangePasswordController","parameterName","urlVariables","search","substring","split","sParameterName","undefined","decodeURIComponent","OnChangePasswordFormSubmit","ResetPasswordTokenInput","OnResetPasswordTokenInputChanged","CurrentPasswordInput","OnChangePasswordCurrentPasswordInputChanged","NewPasswordInput","OnChangePasswordNewPasswordInputChanged","RepeatNewPasswordInput","OnChangePasswordRepeatNewPasswordInputChanged","password","ValidateCurrentPassword","token","ValidateCurrentToken","OnResetPasswordTokenValidated","isValid","OnCurrentPasswordValidated","matches","ValidateIfNewPasswordsMatch","passwordsMatch","ValidateNewPassword","OnNewPasswordValidated","violatedPolicyMessageAvailable","violatedPolicyMessage","changePasswordToken","newPassword","currentPassword","OnChangePasswordSuccess","OnChangePasswordFail","success","errorMessageAvailable","getUrlParameter","Constructor","hasOwnProperty","Object","prototype","createObject","properties","create","extendObject","extend","name","constructor","statics","superConstructor","arguments","class_","super_","own","target","sources","property","source","extend_1","Nevis","nevis","lite","Renderer","Renderer_1","qrious","enabled","Boolean","draw","frame","getElement","render","getModuleSize","padding","pixels","Math","floor","size","width","max","getOffset","moduleSize","offset","resize","reset","CanvasRenderer","CanvasRenderer_1","j","context","getContext","fillStyle","foreground","globalAlpha","foregroundAlpha","buffer","fillRect","lineWidth","clearRect","background","backgroundAlpha","height","Alignment","Alignment_1","BLOCK","ErrorCorrection","ErrorCorrection_1","BLOCKS","FINAL_FORMAT","LEVELS","L","M","Q","H","Galois","Galois_1","EXPONENT","LOG","Version","Version_1","Frame","dataBlock","eccBlock","index","neccBlock1","neccBlock2","valueLength","_badness","_level","level","_polynomial","_value","_version","_stringBuffer","_dataBlock","_eccBlock","_neccBlock1","_neccBlock2","_createArray","_ecc","_mask","_insertFinders","_insertAlignments","_insertTimingGap","_reverseMask","_insertTimingRowAndColumn","_insertVersion","_syncMask","_convertBitStream","_calculatePolynomial","_appendEccToData","_interleaveBlocks","_pack","_finish","_addAlignment","x","_setMask","_appendData","dataLength","ecc","eccLength","bit","polynomial","stringBuffer","_modN","_calculateMaxLength","_applyMask","mask","r3x","r3y","_isMasked","_checkBadness","b","b1","h","bad","badness","N2","bw","_getBadness","count","big","N4","version","maxLength","badRuns","N1","N3","currentMask","k","_getMaskBit","array","Frame_1","ImageRenderer","ImageRenderer_1","src","toDataURL","Option","Option_1","modifiable","defaultValue","valueTransformer","_valueTransformer","transform","transformer","Utilities","Utilities_1","abs","hasOwn","object","noop","toUpperCase","string","OptionManager","option","exists","_get","getAll","init","changeHandler","_set","_createAccessor","_setAll","set","setAll","allowUnmodifiable","changed","descriptor","defineProperty","fieldName","oldValue","newValue","OptionManager_1","ServiceManager","ServiceManager_1","_services","getService","service","setService","optionManager","serviceManager","QRious","update","bind","elementService","canvas","isCanvas","createCanvas","image","isImage","createImage","_canvasRenderer","_imageRenderer","mime","use","getName","defineProperties","QRious_1$2","Service","Service_1","ElementService","ElementService_1","BrowserElementService","BrowserElementService_1","createElement","HTMLCanvasElement","HTMLImageElement","QRious_1","factory","OnChangeTotpFormSubmit","OnPasswordInputChanged","CodeInput","OnTotpCodeInputChanged","ValidatePassword","IdentifierInput","ValidateCode","codeForNewSecret","OnTotpCodeValidated","codeIsCorrect","identifier","OnChangeTotpSuccess","OnChangeTotpFail","OnQrCodeValueForAuthenticatorReceived","QrCanvasElement","uri","SuccessMessageLabel","querySelectorAll","setAttribute","UpdateQrCodeForAuthenticator","OnChangeHwTotpFormSubmit","SerialInput","OnSerialInputChanged","serial","CheckIfSerialExists","OnSerialChecked","OnChangeHwTotpSuccess","OnChangeHwTotpFail","Fido2Controller","makeCredentialOptions","coerceToArrayBuffer","user","excludeCredentials","map","authenticatorSelection","authenticatorAttachment","makeCredentialRequest","bytesToBase64","attestationObject","warn","bytes","l","base64abc","OnChangeFido2FormSubmit","OnMakeCredential","abc","A","a","SecondFactorController","OnGetSecondFactors","TotpList","FormatCredentials","HwTotpList","Fido2List","FormatCredential","join","credential","encodeURIComponent","GetSecondFactors","DeleteSecondFactorController","params","indexQuery","indexPair","queryKey","queryValue","OnFormSubmit","OnDeleteSecondFactorFail","parameters","GetUrlParameters","check","it","global","globalThis","self","Function","fails","exec","descriptors","require$$0","$propertyIsEnumerable","propertyIsEnumerable","getOwnPropertyDescriptor","NASHORN_BUG","1","V","enumerable","createPropertyDescriptor","bitmap","configurable","writable","isObject","isCallable","classofRaw","classof","require$$1","requireObjectCoercible","IndexedObject","toIndexedObject","argument","getBuiltIn","namespace","engineUserAgent","userAgent","process","Deno","versions","v8","match","aCallable","tryToString","engineV8Version","V8_VERSION","nativeSymbol","getOwnPropertySymbols","symbol","sham","useSymbolAsUid","isSymbol","require$$2","$Symbol","getMethod","func","setGlobal","key","SHARED","sharedStore","store","sharedModule","mode","copyright","toObject","hasOwnProperty_1","postfix","random","uid","shared","require$$3","NATIVE_SYMBOL","require$$4","USE_SYMBOL_AS_UID","require$$5","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","wellKnownSymbol","ordinaryToPrimitive","input","pref","fn","val","valueOf","TO_PRIMITIVE","toPrimitive","exoticToPrim","toPropertyKey","EXISTS","documentCreateElement","ie8DomDefine","propertyIsEnumerableModule","IE8_DOM_DEFINE","require$$6","$getOwnPropertyDescriptor","O","anObject","$defineProperty","Attributes","definePropertyModule","createNonEnumerableProperty","functionToString","inspectSource","wmget","wmhas","wmset","has","STATE","WeakMap","nativeWeakMap","test","keys","sharedKey","hiddenKeys","require$$7","OBJECT_ALREADY_INITIALIZED","state","metadata","facade","internalState","enforce","getterFor","TYPE","DESCRIPTORS","FunctionPrototype","getDescriptor","functionName","PROPER","CONFIGURABLE","CONFIGURABLE_FUNCTION_NAME","getInternalState","enforceInternalState","TEMPLATE","redefineModule","unsafe","simple","noTargetGet","ceil","toIntegerOrInfinity","number","min","toLength","lengthOfArrayLike","obj","toAbsoluteIndex","integer","createMethod","IS_INCLUDES","$this","el","fromIndex","arrayIncludes","objectKeysInternal","names","enumBugKeys","internalObjectKeys","concat","getOwnPropertyNames","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","ownKeys","getOwnPropertyDescriptorModule","replacement","isForced","feature","detection","normalize","POLYFILL","NATIVE","toLowerCase","isForced_1","redefine","copyConstructorProperties","_export","sourceProperty","TARGET","GLOBAL","STATIC","stat","targetProperty","forced","nativePromiseConstructor","redefineAll","aPossiblePrototype","objectSetPrototypeOf","setPrototypeOf","setter","CORRECT_SETTER","proto","__proto__","TO_STRING_TAG","setToStringTag","TAG","SPECIES","anInstance","iterators","Iterators","ITERATOR","ArrayPrototype","functionBindContext","that","Result","stopped","TO_STRING_TAG_SUPPORT","CORRECT_ARGUMENTS","tag","tryGet","callee","getIteratorMethod","getIterator","usingIterator","iteratorMethod","isArrayIteratorMethod","iteratorClose","kind","innerResult","innerError","SAFE_CLOSING","called","iteratorWithReturn","isConstructorModern","construct","empty","defer","constructorRegExp","INCORRECT_TO_STRING","isConstructor","aConstructor","html","engineIsIos","engineIsNode","IS_IOS","IS_NODE","setImmediate","clear","clearImmediate","MessageChannel","Dispatch","counter","queue","ONREADYSTATECHANGE","runner","run","listener","event","post","postMessage","protocol","host","args","argumentsLength","nextTick","now","port","channel","port2","port1","onmessage","importScripts","appendChild","removeChild","flush","head","last","notify","toggle","node","promise","task","engineIsIosPebble","Pebble","engineIsWebosWebkit","macrotask","IS_IOS_PEBBLE","IS_WEBOS_WEBKIT","MutationObserver","WebKitMutationObserver","queueMicrotaskDescriptor","queueMicrotask","parent","domain","exit","enter","createTextNode","observe","characterData","PromiseCapability","C","$$resolve","$$reject","microtask","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","newPromiseCapability","engineIsBrowser","$","NativePromise","require$$8","setSpecies","CONSTRUCTOR_NAME","require$$10","require$$11","require$$12","require$$13","require$$14","iterate","iterable","unboundFunction","stop","condition","callFn","AS_ENTRIES","INTERRUPTED","IS_ITERATOR","iterFn","checkCorrectnessOfIteration","SKIP_CLOSING","ITERATION_SUPPORT","speciesConstructor","defaultConstructor","S","require$$18","require$$19","promiseResolve","promiseCapability","hostReportErrors","newPromiseCapabilityModule","require$$22","perform","InternalStateModule","require$$24","require$$25","IS_BROWSER","require$$27","require$$28","require$$29","require$$26","PROMISE","setInternalState","getInternalPromiseState","NativePromisePrototype","PromiseConstructor","PromiseConstructorPrototype","newGenericPromiseCapability","DISPATCH_EVENT","createEvent","dispatchEvent","NATIVE_REJECTION_EVENT","PromiseRejectionEvent","UNHANDLED_REJECTION","REJECTION_HANDLED","FULFILLED","REJECTED","HANDLED","UNHANDLED","SUBCLASSING","FORCED","PROMISE_CONSTRUCTOR_SOURCE","GLOBAL_CORE_JS_PROMISE","FakePromise","INCORRECT_ITERATION","all","isThenable","isReject","chain","notified","reactions","exited","reaction","handler","fail","rejection","emit","onHandleUnhandled","IS_UNHANDLED","isUnhandled","initEvent","unwrap","internalReject","internalResolve","wrapper","executor","onFulfilled","onRejected","wrap","r","capability","$promiseResolve","values","remaining","alreadyCalled","race","EmptyConstructor","NullProtoObjectViaActiveX","activeXDocument","write","scriptTag","close","temp","parentWindow","objectKeys","objectDefineProperties","Properties","PROTOTYPE","SCRIPT","IE_PROTO","content","NullProtoObject","ActiveXObject","iframe","JS","style","display","iframeDocument","contentWindow","open","F","objectCreate","UNSCOPABLES","IteratorPrototype","correctPrototypeGetter","getPrototypeOf","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","objectGetPrototypeOf","BUGGY_SAFARI_ITERATORS","arrayIterator","PrototypeOfArrayIteratorPrototype","returnThis","iteratorsCore","createIteratorConstructor","IteratorConstructor","NAME","require$$9","PROPER_FUNCTION_NAME","VALUES","ENTRIES","addToUnscopables","defineIterator","Iterable","DEFAULT","IS_SET","getIterationMethod","KIND","defaultIterator","IterablePrototype","CurrentIteratorPrototype","methods","KEY","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","entries","ARRAY_ITERATOR","iterated","Arguments","percentDecode","sequence","replacer","serialize","find","updateSearchParams","query","parseSearchParams","validateArgumentsLength","passed","required","URLSearchParamsConstructor","URL_SEARCH_PARAMS","entryIterator","entryNext","first","second","updateURL","$toString","charAt","wrapRequestOptions","RequestConstructor","nativeUrl","URL","searchParams","pathname","sort","URLSearchParams","hash","USE_NATIVE_URL","require$$16","require$$17","require$$20","nativeFetch","NativeRequest","RequestPrototype","URL_SEARCH_PARAMS_ITERATOR","getInternalParamsState","getInternalIteratorState","plus","sequences","deserialize","RegExp","!","'","(",")","~","%20","entry","attributes","attribute","shift","URLSearchParamsIterator","URLSearchParamsPrototype","delete","splice","found","entriesIndex","sliceIndex","callback","boundFunction","Request","viewClasses","isArrayBufferView","support","Blob","normalizeName","normalizeValue","iteratorFor","items","header","consumed","bodyUsed","fileReaderReady","reader","onload","onerror","readBlobAsArrayBuffer","blob","FileReader","readAsArrayBuffer","bufferClone","buf","view","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","FormData","_bodyFormData","DataView","_bodyArrayBuffer","arrayBuffer","isConsumed","isView","byteOffset","readAsText","chars","readArrayBufferAsText","formData","decode","parse","signal","upcased","referrer","cache","reParamSearch","Date","getTime","form","trim","Response","bodyInit","clone","redirectStatuses","redirect","RangeError","DOMException","stack","aborted","xhr","XMLHttpRequest","abortXhr","abort","rawHeaders","getAllResponseHeaders","substr","line","parts","responseURL","responseText","ontimeout","onabort","fixUrl","withCredentials","responseType","setRequestHeader","onreadystatechange","readyState","removeEventListener","send","polyfill","loginControllerConfig","homeControllerConfig","querySelector","changePasswordControllerConfig","changeTotpControllerConfig","changeHwTotpControllerConfig","changeFido2ControllerConfig","secondFactorControllerConfig","deleteSecondFactorControllerConfig","homeController","HomeController","UpdatePortalSettings","UpdateDisplayName","ChangeTotpController","ChangeHwTotpController","queryParameters","backgroundImage"],"mappings":"yBAqEO,SAASA,EAAUC,EAASC,EAAYC,EAAGC,GAE9C,OAAO,IAAWD,EAANA,GAAUE,SAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUC,GAAS,IAAMC,EAAKN,EAAUO,KAAKF,IAAW,MAAOG,GAAKL,EAAOK,IACpF,SAASC,EAASJ,GAAS,IAAMC,EAAKN,EAAiB,MAAEK,IAAW,MAAOG,GAAKL,EAAOK,IACvF,SAASF,EAAKI,GAJlB,IAAeL,EAIaK,EAAOC,KAAOT,EAAQQ,EAAOL,SAJ1CA,EAIyDK,EAAOL,iBAJ/BN,EAAIM,EAAQ,IAAIN,EAAE,SAAUG,GAAWA,EAAQG,MAITO,KAAKR,EAAWK,GAClGH,GAAMN,EAAYA,EAAUa,MAAMhB,EAASC,GAAc,KAAKS,UAI/D,SAASO,EAAYjB,EAASkB,GACjC,IAAsGC,EAAGC,EAAGC,EAAxGC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPH,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOI,KAAM,GAAIC,IAAK,IACzFC,EAAI,CAAEjB,KAAMkB,EAAK,GAAIC,MAASD,EAAK,GAAIE,OAAUF,EAAK,IAA7D,MAAqF,mBAAXG,SAA0BJ,EAAEI,OAAOC,UAAY,WAAa,OAAOC,OAAUN,EACvJ,SAASC,EAAKM,GAAK,OAAO,SAAUC,GAAK,OACzC,SAAcC,GACV,GAAIjB,EAAG,MAAM,IAAIkB,UAAU,mCAC3B,KAAOf,GAAG,IACN,GAAIH,EAAI,EAAGC,IAAMC,EAAY,EAARe,EAAG,GAAShB,EAAU,OAAIgB,EAAG,GAAKhB,EAAS,SAAOC,EAAID,EAAU,SAAMC,EAAEiB,KAAKlB,GAAI,GAAKA,EAAEV,SAAWW,EAAIA,EAAEiB,KAAKlB,EAAGgB,EAAG,KAAKtB,KAAM,OAAOO,EAE3J,OADID,EAAI,GAAMgB,EAAHf,EAAQ,CAAS,EAARe,EAAG,GAAQf,EAAEb,OACzB4B,GAAG,IACP,KAAK,EAAG,KAAK,EAAGf,EAAIe,EAAI,MACxB,KAAK,EAAc,OAAXd,EAAEC,QAAgB,CAAEf,MAAO4B,EAAG,GAAItB,MAAM,GAChD,KAAK,EAAGQ,EAAEC,QAASH,EAAIgB,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKd,EAAEI,IAAIa,MAAOjB,EAAEG,KAAKc,MAAO,SACxC,QACI,KAAkBlB,EAAe,GAA3BA,EAAIC,EAAEG,MAAYe,QAAcnB,EAAEA,EAAEmB,OAAS,MAAkB,IAAVJ,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEd,EAAI,EAAG,SACjG,GAAc,IAAVc,EAAG,MAAcf,GAAMe,EAAG,GAAKf,EAAE,IAAMe,EAAG,GAAKf,EAAE,IAAM,CAAEC,EAAEC,MAAQa,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYd,EAAEC,MAAQF,EAAE,GAAI,CAAEC,EAAEC,MAAQF,EAAE,GAAIA,EAAIe,EAAI,MAC7D,GAAIf,GAAKC,EAAEC,MAAQF,EAAE,GAAI,CAAEC,EAAEC,MAAQF,EAAE,GAAIC,EAAEI,IAAIe,KAAKL,GAAK,MACvDf,EAAE,IAAIC,EAAEI,IAAIa,MAChBjB,EAAEG,KAAKc,MAAO,SAEtBH,EAAKlB,EAAKoB,KAAKtC,EAASsB,GAC1B,MAAOX,GAAKyB,EAAK,CAAC,EAAGzB,GAAIS,EAAI,UAAeD,EAAIE,EAAI,EACtD,GAAY,EAARe,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE5B,MAAO4B,EAAG,GAAKA,EAAG,QAAK,EAAQtB,MAAM,GArB9BL,CAAK,CAACyB,EAAGC,MClF7D,IAEKO,EAFCC,EAAU,yCAWMC,EAAkBC,EAAaC,EAAWC,uGAC3C,SAAMC,MAAMD,EAAgBJ,EAAUE,EAAMA,EAAK,CAC9DI,OAAQ,OACR/B,KAAMgC,KAAKC,UAAUL,GACrBM,QAASC,cAEb,KALMC,EAAWC,UAKHC,GAAI,MAAM,IAAIC,MAAMH,EAASI,YAG3C,OAAe,eADAJ,EAASF,QAAQO,IAAI,sCAAiBC,SAASlB,EAAYQ,UAE/DI,EAASO,0BAIFC,EAAUjB,EAAaE,iGACxB,SAAMC,MAAMD,EAAgBJ,EAAUE,EAAMA,EAAK,CAC9DO,QAASC,cAEb,KAHMC,EAAWS,UAGHP,IAA0B,MAApBF,EAASU,OAAgB,KAAM,CAACC,KAAMX,EAASI,WAAYQ,KAAMZ,EAASU,QAE9F,SAAOV,EAASO,aAGpB,SAASR,IACL,IAAMD,EAAU,IAAIe,QAGpB,OAFAf,EAAQgB,OAAO,eAAgB1B,EAAYQ,MAC3CE,EAAQgB,OAAO,SAAU1B,EAAYQ,MAC9BE,WAGKiB,EAAYC,EAAsBC,EAAmBC,GAClD,MAAXF,IACAE,EACAF,EAAQG,UAAUC,IAAIH,GAEtBD,EAAQG,UAAUE,OAAOJ,KA5C5B7B,EAAAA,+BCmCL,OA4BYkC,sCAAR,SAAkCC,GAAlC,WAKI,GAJAC,QAAQC,IAAI,2BAA4BF,GAIJ,QAHpCA,EAAuBA,EAAqBG,SAGnBhB,OAIrB,OAHAc,QAAQC,IAAI,oCACZD,QAAQC,IAAIF,EAAqBI,mBACjCH,QAAQI,MAAML,EAAqBI,cAKvC,IAAME,EAAYN,EAAqBM,UAAUC,QAAQ,KAAM,KAAKA,QAAQ,KAAM,KAClFP,EAAqBM,UAAYE,WAAWC,KAAWC,KAAKJ,GAAa,SAAAK,GAAK,OAAMA,EAAGC,WAAW,KAGlGZ,EAAqBa,iBAAiBC,QAAQ,SAAUC,GACpD,IAAIC,EAAUD,EAASE,GAAGV,QAAQ,MAAO,KAAKA,QAAQ,MAAO,KAC7DQ,EAASE,GAAKT,WAAWC,KAAWC,KAAKM,GAAW,SAAAL,GAAK,OAAMA,EAAGC,WAAW,OAGjFX,QAAQC,IAAI,oBAAqBF,GAIjC,IACiBkB,UAAUC,YAAYrC,IAAI,CAAEsC,UAAWpB,IAAwB9D,KAAK,SAACmF,GAC9EpB,QAAQC,IAAI,8BAA+BmB,GAC3C,IAGI,IAAIC,EAAW,IAAId,WAAiBa,EAAoB5C,SAAS8C,mBAC7DC,EAAiB,IAAIhB,WAAiBa,EAAoB5C,SAAS+C,gBACnEC,EAAQ,IAAIjB,WAAiBa,EAAoBI,OACjDC,EAAM,IAAIlB,WAAiBa,EAAoB5C,SAASkD,WACtD1D,EAAO,CACTgD,GAAII,EAAmBJ,GACvBQ,MAAOG,EAAKC,kBAAkBJ,GAC9BK,KAAMT,EAAmBS,KACzBC,WAAkBV,EAAoBW,4BACtCvD,SAAU,CACN8C,kBAAmBK,EAAKC,kBAAkBP,GAC1CW,eAAgBL,EAAKC,kBAAkBL,GACvCG,UAAWC,EAAKC,kBAAkBH,KAI1C,IACI,IAAIP,EAAcS,EAAKM,iBACvBf,EAAYvD,KAAK,CACbkE,KAAM,QACNnG,MAAO0C,KAAKC,UAAUL,GACtBqC,UAAW,KAGfsB,EAAKO,oBAAoBhB,GAyB3B,MAAOrF,GACLmE,QAAQI,MAAM,6BAA8BvE,IAElD,MAAOA,GACLmE,QAAQI,MAAM,6BAA8BvE,MAGtD,MAAOsG,GACLnC,QAAQI,MAAM+B,EAAIC,SAAwBD,KAI1CrC,8BAAR,SAA0BuC,GAWtB,IAJIA,GAJAA,EADAC,MAAMC,QAAQF,GACN9B,WAAWC,KAAK6B,GAGxBA,aAAiBG,YACT,IAAIjC,WAAW8B,GAIvBA,aAAiB9B,WAAY,CAI7B,IAHA,IAAIkC,EAAM,GACNC,EAAML,EAAMM,WAEPC,EAAI,EAAGA,EAAIF,EAAKE,IACrBH,GAAOI,OAAOC,aAAaT,EAAMO,IAErCP,EAAQU,OAAOC,KAAKP,GAGxB,GAAqB,iBAAVJ,EACP,MAAM,IAAI1D,MAAM,8BAOpB,OAFA0D,EAAQA,EAAM/B,QAAQ,MAAO,KAAKA,QAAQ,MAAO,KAAKA,QAAQ,OAAQ,KAkBlER,mCAAR,WACImD,SAASC,eAAe,gCAAgCvD,UAAUC,IAAI,UACtEqD,SAASC,eAAe,kCAAkCvD,UAAUE,OAAO,UAC3EsD,WAAW,WAAcF,SAASG,SAASC,KAAO,2BAA6B,MAG3EvD,gCAAR,WACImD,SAASC,eAAe,kCAAkCvD,UAAUC,IAAI,UACxEqD,SAASC,eAAe,gCAAgCvD,UAAUE,OAAO,WAGrEC,2BAAR,WACI,IAAIoB,EAAgC,GAEpCA,EAAYvD,KAAK,CACbkE,KAAM,WACNnG,MAAOyB,KAAKmG,OAAOC,cAAc7H,MACjC2E,UAAW,KAGf,IAAImD,EAAcrG,KAAKmG,OAAOG,UAAU/H,MAcxC,MAbW,IAAP8H,IACAtC,EAAYvD,KAAK,CACbkE,KAAM,OACNnG,MAAO8H,EACPnD,UAAW,KAEfa,EAAYvD,KAAK,CACbkE,KAAM,SACNnG,MAAO8H,EACPnD,UAAW,MAIZa,GAGHpB,gCAAR,SAA4BoB,GAA5B,WACIA,EAA6B,OADLA,kBACVA,GAAsB/D,KAAK8E,iBAAmBf,EAExDwC,EAAwB,CACxBC,SAAUxG,KAAKmG,OAAOM,cAAclI,MACpCwF,YAAaA,GAKjBpD,EAAS,6BAFSiF,OAAOK,SAASC,KAAKQ,MAAMd,OAAOK,SAASC,KAAKS,QAAQ,KAAO,GAE5BJ,EAASvG,KAAKc,eAC9DhC,KAAK,SAAAF,GAAU,OAAA4F,EAAKoC,eAAehI,KACnCiI,MAAM,SAAAC,GAAU,OAAAtC,EAAKuC,YAAYD,SAnN1C,WAAYX,EAA+BrF,GAA3C,WAMQd,yBAAsB,2BAC1BwE,EAAK2B,OAAOa,qBAAMC,iBAAiB,SAAUzC,EAAK0C,6BAClD1C,EAAK2B,OAAOgB,kCAAmBF,iBAAiB,SAAUzC,EAAK4C,qCAC/D5C,EAAK2B,OAAOkB,iCAAkBJ,iBAAiB,QAASzC,EAAK8C,0BAGzDtH,6BAA0B,SAACtB,GAC/BA,EAAE6I,iBAMF5G,EAAS,0CAJK,CACV6F,SAAUhC,EAAK2B,OAAOM,cAAclI,OAGqBiG,EAAK1D,eAC7DhC,KAAK,SAAAF,GAAU,OAAA4F,EAAKgD,0BAA0B5I,KAC9CiI,MAAM,SAAAC,GAAU,OAAAjE,QAAQC,IAAIgE,MAgI7B9G,+BAA4B,SAACtB,GACjCA,EAAE6I,iBAOF5G,EAAe,4CAJ0B,CACrC6F,SAFWhC,EAAK2B,OAAOM,cAAclI,OAK4BiG,EAAK1D,eACrEhC,KAAK,WAAM,OAAA0F,EAAKiD,2BAChBZ,MAAM,SAAAC,GAAU,OAAAtC,EAAKkD,yBAuDtB1H,uBAAoB,SAACtB,GACzBA,EAAE6I,iBAEF/C,EAAKO,uBAGD/E,oBAAiB,SAACqB,GACtB,IAMQsG,EANJtG,EAASuG,SACThC,OAAOK,SAAS9C,QAAQ9B,EAASwG,cAEjCzF,EAAYoC,EAAK2B,OAAO2B,kBAAmB,SAAmC,IAAzBzG,EAAS0G,cAC9DvD,EAAK2B,OAAO2B,kBAAkBE,UAAY3G,EAAS0G,aAE/CJ,EAAyG,EAA1FtG,EAAS4G,oBAAoBC,OAAO,SAAA3E,GAAK,MAAU,QAAVA,EAAEmB,MAA4B,UAAVnB,EAAEmB,OAAkBnE,OAIpG6B,EAAYoC,EAAK2B,OAAOgC,eAAgB,UAAWR,GACnDnD,EAAK2B,OAAOG,UAAU8B,QAElBC,EAAqF,EAArEhH,EAAS4G,oBAAoBC,OAAO,SAAA3E,GAAK,MAAU,SAAVA,EAAEmB,OAAiBnE,OAChF6B,EAAYoC,EAAK2B,OAAOkB,iBAAkB,UAAWgB,GACrD7D,EAAK2B,OAAOkB,iBAAiBiB,UAAYD,EAEzCjG,EAAYoC,EAAK2B,OAAOoC,YAAa,UAAWZ,GAAgBU,KAIhErI,iBAAc,SAACiD,GACnBJ,QAAQI,MAAMA,GACdb,EAAYoC,EAAK2B,OAAO2B,kBAAmB,UAAU,GACrDtD,EAAK2B,OAAO2B,kBAAkBU,oBAAYvF,MAAAA,SAAAA,EAAOwF,0BAAc,SApP/DzI,KAAKmG,OAASA,EACdnG,KAAKc,cAAgBA,EACrBd,KAAK0I,sBCzBb,MAGI,SAAYvC,GAAZ,WAIOnG,uBAAoB,SAACc,GACxBe,EAAU,4CAA6Cf,GAClDhC,KAAK,SAAAF,GACF4F,EAAKmE,4BAA4B/J,KAEpCiI,MAAM,SAAAC,GACHtC,EAAKoE,8BAIV5I,0BAAuB,WAC1B,OAAO6B,EAAU,4CAA4C,GACxD/C,KAAK,SAAAF,GACF4F,EAAKqE,2BAA2BjK,MAIpCoB,gCAA6B,SAACqB,GAClCmD,EAAK2B,OAAO2C,YAAYN,UAAYnH,EAAS0H,MAC7CvE,EAAK2B,OAAO6C,eAAeR,UAAYnH,EAAS4H,SAChDzE,EAAK2B,OAAO+C,gBAAgBlB,UAAY3G,EAAS8H,WAG7CnJ,iCAA8B,SAACqB,GACnCmD,EAAK2B,OAAOiD,iBAAiBZ,UAAYnH,EAASgI,aAG9CrJ,8BAA2B,YACoB,GAA/C4F,OAAOK,SAASC,KAAKS,QAAQ,gBAAqBf,OAAOK,SAASC,KAAO,eA/B7ElG,KAAKmG,OAASA,MC6HVmD,4BAAR,SAAwBC,GAGpB,IAFA,IAAIC,EAAe5D,OAAOK,SAASwD,OAAOC,UAAU,GAAGC,MAAM,KAEpDlE,EAAI,EAAGA,EAAI+D,EAAajJ,OAAQkF,IAAK,CAC1C,IAAImE,EAAiBJ,EAAa/D,GAAGkE,MAAM,KAE3C,GAAIC,EAAe,KAAOL,EACtB,YAA6BM,IAAtBD,EAAe,IAA0BE,mBAAmBF,EAAe,IAG1F,OAAO,SAxGX,WAAYzD,EAAwCrF,GAApD,WAUQd,yBAAsB,2BAC1BwE,EAAK2B,OAAOa,qBAAMC,iBAAiB,SAAUzC,EAAKuF,sCAClDvF,EAAK2B,OAAO6D,wCAAyB/C,iBAAiB,QAASzC,EAAKyF,4CACpEzF,EAAK2B,OAAO+D,qCAAsBjD,iBAAiB,QAASzC,EAAK2F,uDACjE3F,EAAK2B,OAAOiE,iCAAkBnD,iBAAiB,QAASzC,EAAK6F,mDAC7D7F,EAAK2B,OAAOmE,uCAAwBrD,iBAAiB,QAASzC,EAAK+F,gDAG/DvK,iDAA8C,eAC9CwK,YAAWhG,EAAK2B,OAAO+D,2CAAsB3L,MACjDiG,EAAKiG,wBAAwBD,IAGzBxK,sCAAmC,eACnC0K,YAAQlG,EAAK2B,OAAO6D,8CAAyBzL,MACjDiG,EAAKmG,qBAAqBD,IAGtB1K,0BAAuB,SAAC0K,GAK5B/J,EAAS,yDAJsC,CAC3C+J,MAAOA,GAGiElG,EAAK1D,eAC5EhC,KAAK,SAAAF,GAAU,OAAA4F,EAAKoG,8BAA8BhM,KAClDiI,MAAM,SAAAC,GAAU,OAAAjE,QAAQC,IAAIgE,MAG7B9G,mCAAgC,SAACqB,GACrCe,EAAYoC,EAAK2B,OAAO6D,wBAAyB,WAAY3I,EAASwJ,SACtEzI,EAAYoC,EAAK2B,OAAO6D,wBAAyB,cAAe3I,EAASwJ,SACrExJ,EAASwJ,SAASrG,EAAK2B,OAAOiE,iBAAiBhC,SAG/CpI,6BAA0B,SAACwK,GAK/B7J,EAAS,8CAJsC,CAC3C6J,SAAUA,GAGmDhG,EAAK1D,eACjEhC,KAAK,SAAAF,GAAU,OAAA4F,EAAKsG,2BAA2BlM,KAC/CiI,MAAM,SAAAC,GAAU,OAAAjE,QAAQC,IAAIgE,MAG7B9G,gCAA6B,SAACqB,GAClCe,EAAYoC,EAAK2B,OAAO+D,qBAAsB,WAAY7I,EAAS0J,SACnE3I,EAAYoC,EAAK2B,OAAO+D,qBAAsB,cAAe7I,EAAS0J,UAGlE/K,mDAAgD,WACpDwE,EAAKwG,+BAGDhL,iCAA8B,WAClC,IAGIiL,EAHczG,EAAK2B,OAAOiE,iBAAiB7L,OACvBiG,EAAK2B,OAAOmE,uBAAuB/L,MAG3D6D,EAAYoC,EAAK2B,OAAOmE,uBAAwB,WAAYW,GAC5D7I,EAAYoC,EAAK2B,OAAOmE,uBAAwB,cAAeW,IAG3DjL,6CAA0C,WAC9C,IAAIwK,EAAWhG,EAAK2B,OAAOiE,iBAAiB7L,MAC5CiG,EAAK0G,oBAAoBV,IAGrBxK,yBAAsB,SAACwK,GAK3B7J,EAAS,6CAJsC,CAC3C6J,SAAUA,GAGkDhG,EAAK1D,eAChEhC,KAAK,SAAAF,GAAU,OAAA4F,EAAK2G,uBAAuBvM,KAC3CiI,MAAM,SAAAC,GAAU,OAAAjE,QAAQC,IAAIgE,MAG7B9G,4BAAyB,SAACpB,GAC9BwD,EAAYoC,EAAK2B,OAAOiE,iBAAkB,WAAYxL,EAAOiM,SAC7DzI,EAAYoC,EAAK2B,OAAOiE,iBAAkB,cAAexL,EAAOiM,SAChE,IAAIO,EAAiE,MAAhCxM,EAAOyM,uBAAiE,IAAhCzM,EAAOyM,sBACpFvF,SAASC,eAAe,mBAAmByC,UAAY4C,EAAiCxM,EAAOyM,sBAAwB,kCAgBnHrL,gCAA6B,SAACtB,GAClCA,EAAE6I,iBAEF,IAAI+D,YAAsB9G,EAAK2B,OAAO6D,8CAAyBzL,MAC3DgN,YAAc/G,EAAK2B,OAAOiE,uCAAkB7L,MAGhD,GAAIgN,cAFoB/G,EAAK2B,OAAOmE,6CAAwB/L,OAKxD,OAFAuH,SAASC,eAAe,gCAAgCvD,UAAUE,OAAO,eACzEoD,SAASC,eAAe,gCAAgCyC,UAAY,sBAI7C,MAAvB8C,EAOA3K,EAAS,wCAN8B,CACnC6K,0BAAiBhH,EAAK2B,OAAO+D,2CAAsB3L,MACnDgN,YAAaA,GAI0C/G,EAAK1D,eAC3DhC,KAAK,SAAAF,GAAU,OAAA4F,EAAKiH,wBAAwB7M,KAC5CiI,MAAM,SAAAC,GAAU,OAAAtC,EAAKkH,yBAO1B/K,EAAS,4CALkD,CACvD+J,MAAOY,EAAoB7C,WAC3B8C,YAAaA,GAGgE/G,EAAK1D,eACjFhC,KAAK,SAAAF,GAAU,OAAA4F,EAAKiH,wBAAwB7M,KAC5CiI,MAAM,SAAAC,GAAU,OAAAtC,EAAKkH,0BAI1B1L,6BAA0B,SAACqB,GAC/Be,EAAY0D,SAASC,eAAe,kCAAmC,UAAW1E,EAASsK,SAC3F,IAAIC,EAAiD,MAAzBvK,EAAS2B,cAAiD,IAAzB3B,EAAS2B,aACtEZ,EAAY0D,SAASC,eAAe,gCAAiC,SAAU1E,EAASsK,SACxF7F,SAASC,eAAe,gCAAgCyC,UAAYoD,EAAwBvK,EAAS2B,aAAe,GACpHgD,WAAW,WAAcF,SAASG,SAASC,KAAO,cAAgB,MAG9DlG,0BAAuB,WAC3B6C,QAAQI,MAAM,2BAtJdjD,KAAKc,cAAgBA,EACrBd,KAAKmG,OAASA,EACdnG,KAAK0I,sBACiC,OAAlC1I,KAAK6L,gBAAgB,WACrB7L,KAAKmG,OAAO6D,wBAAwBzL,MAAQyB,KAAK6L,gBAAgB,SAASpD,WAC1EzI,KAAKiK,+NCRf,IAAI6B,EAAyC,aAOzCC,EAAiBC,OAAOC,UAAUF,eAOlCrF,EAAQvB,MAAM8G,UAAUvF,MAY5B,SAASwF,EAAaD,EAAWE,GAC/B,IAAIvN,EAEJ,UAAWoN,OAAOI,SAAW,WAC3BxN,EAASoN,OAAOI,OAAOH,OAClB,CACLH,EAAYG,UAAYA,EACxBrN,EAAS,IAAIkN,EACbA,EAAYG,UAAY,KAG1B,GAAIE,EACFE,EAAa,KAAMzN,EAAQuN,GAG7B,OAAOvN,EAwBT,SAAS0N,EAAOC,EAAMC,EAAaP,EAAWQ,GAC5C,IAAIC,EAAmB1M,KAEvB,UAAWuM,IAAS,SAAU,CAC5BE,EAAUR,EACVA,EAAYO,EACZA,EAAcD,EACdA,EAAO,KAGT,UAAWC,IAAgB,WAAY,CACrCC,EAAUR,EACVA,EAAYO,EACZA,EAAc,WACZ,OAAOE,EAAiB3N,MAAMiB,KAAM2M,YAIxCN,EAAa,MAAOG,EAAaE,EAAkBD,GAEnDD,EAAYP,UAAYC,EAAaQ,EAAiBT,UAAWA,GACjEO,EAAYP,UAAUO,YAAcA,EAEpCA,EAAYI,OAASL,GAAQG,EAAiBE,OAC9CJ,EAAYK,OAASH,EAErB,OAAOF,EAeT,SAASH,EAAaS,EAAKC,EAAQC,GACjCA,EAAUtG,EAAMrG,KAAKsM,UAAW,GAEhC,IAAIM,EACJ,IAAIC,EAEJ,IAAK,IAAIzH,EAAI,EAAGlF,EAASyM,EAAQzM,OAAQkF,EAAIlF,EAAQkF,IAAK,CACxDyH,EAASF,EAAQvH,GAEjB,IAAKwH,KAAYC,EACf,IAAKJ,GAAOf,EAAe1L,KAAK6M,EAAQD,GACtCF,EAAOE,GAAYC,EAAOD,IAMlC,IAAIE,EAAWb,EAQf,SAASc,KACTA,EAAMR,OAAS,QACfQ,EAAMP,OAASb,OAyBfoB,EAAMd,OAASa,EAEf,IAAIE,EAEAC,EAFQF,EAmBRG,EA0JAC,EA1JWF,EAAKhB,OAAO,SAASmB,EAAQpL,EAASqL,GAQnD1N,KAAKyN,OAASA,EASdzN,KAAKqC,QAAUA,EACfrC,KAAKqC,QAAQoL,OAASA,EAStBzN,KAAK0N,QAAUC,QAAQD,IACtB,CAaDE,KAAM,SAASC,KAYfC,WAAY,WACV,IAAK9N,KAAK0N,QAAS,CACjB1N,KAAK0N,QAAU,KACf1N,KAAK+N,SAGP,OAAO/N,KAAKqC,SAkBd2L,cAAe,SAASH,GACtB,IAAIJ,EAASzN,KAAKyN,OAClB,IAAIQ,EAAUR,EAAOQ,SAAW,EAChC,IAAIC,EAASC,KAAKC,OAAOX,EAAOY,KAAQJ,EAAU,GAAMJ,EAAMS,OAE9D,OAAOH,KAAKI,IAAI,EAAGL,IAgBrBM,UAAW,SAASX,GAClB,IAAIJ,EAASzN,KAAKyN,OAClB,IAAIQ,EAAUR,EAAOQ,QAErB,GAAIA,GAAW,KACb,OAAOA,EAGT,IAAIQ,EAAazO,KAAKgO,cAAcH,GACpC,IAAIa,EAASP,KAAKC,OAAOX,EAAOY,KAAQI,EAAaZ,EAAMS,OAAU,GAErE,OAAOH,KAAKI,IAAI,EAAGG,IAWrBX,OAAQ,SAASF,GACf,GAAI7N,KAAK0N,QAAS,CAChB1N,KAAK2O,SACL3O,KAAK4O,QACL5O,KAAK4N,KAAKC,KAcde,MAAO,aAYPD,OAAQ,eAaNE,EAkDAC,EAlDiBtB,EAAWlB,OAAO,CAKrCsB,KAAM,SAASC,GACb,IAAIpI,EAAGsJ,EACP,IAAItB,EAASzN,KAAKyN,OAClB,IAAIgB,EAAazO,KAAKgO,cAAcH,GACpC,IAAIa,EAAS1O,KAAKwO,UAAUX,GAC5B,IAAImB,EAAUhP,KAAKqC,QAAQ4M,WAAW,MAEtCD,EAAQE,UAAYzB,EAAO0B,WAC3BH,EAAQI,YAAc3B,EAAO4B,gBAE7B,IAAK5J,EAAI,EAAGA,EAAIoI,EAAMS,MAAO7I,IAC3B,IAAKsJ,EAAI,EAAGA,EAAIlB,EAAMS,MAAOS,IAC3B,GAAIlB,EAAMyB,OAAQP,EAAIlB,EAAMS,MAAS7I,GACnCuJ,EAAQO,SAAUd,EAAahJ,EAAKiJ,EAASD,EAAaM,EAAKL,EAAQD,EAAYA,IAS3FG,MAAO,WACL,IAAInB,EAASzN,KAAKyN,OAClB,IAAIuB,EAAUhP,KAAKqC,QAAQ4M,WAAW,MACtC,IAAIZ,EAAOZ,EAAOY,KAElBW,EAAQQ,UAAY,EACpBR,EAAQS,UAAU,EAAG,EAAGpB,EAAMA,GAC9BW,EAAQE,UAAYzB,EAAOiC,WAC3BV,EAAQI,YAAc3B,EAAOkC,gBAC7BX,EAAQO,SAAS,EAAG,EAAGlB,EAAMA,IAM/BM,OAAQ,WACN,IAAItM,EAAUrC,KAAKqC,QAEnBA,EAAQiM,MAAQjM,EAAQuN,OAAS5P,KAAKyN,OAAOY,QAkB7CwB,EAkBAC,EAlBYxC,EAAKhB,OAAO,KAAM,CAUhCyD,MAAO,CACL,EAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxB,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAChE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,MAkBhEC,EA4FAC,EA5FkB3C,EAAKhB,OAAO,KAAM,CAatC4D,OAAQ,CACN,EAAI,EAAI,GAAK,EAAO,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,EAAK,GACzE,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,GAAK,GACzE,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,GAAK,GACzE,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,EAAK,GACzE,EAAI,EAAI,IAAK,GAAO,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,GAAK,GACzE,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,GAAK,GACzE,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,GAAK,GACzE,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,GAAK,GACzE,EAAI,EAAI,IAAK,GAAO,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,GAAK,GACzE,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,GAAK,GACzE,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,GAAK,GACzE,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,GAAK,GACzE,EAAI,EAAI,IAAK,GAAO,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,GAAK,GAAO,GAAI,EAAI,GAAK,GACzE,EAAI,EAAI,IAAK,GAAO,EAAI,EAAI,GAAK,GAAO,GAAI,EAAI,GAAK,GAAO,GAAI,EAAI,GAAK,GACzE,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,GAAK,GAAO,GAAI,EAAI,GAAK,GACzE,EAAI,EAAI,GAAK,GAAO,EAAI,EAAI,GAAK,GAAO,GAAI,EAAI,GAAK,GAAO,EAAI,GAAI,GAAK,GACzE,EAAI,EAAI,IAAK,GAAO,GAAI,EAAI,GAAK,GAAO,EAAI,GAAI,GAAK,GAAO,EAAI,GAAI,GAAK,GACzE,EAAI,EAAI,IAAK,GAAO,EAAI,EAAI,GAAK,GAAO,GAAI,EAAI,GAAK,GAAO,EAAI,GAAI,GAAK,GACzE,EAAI,EAAI,IAAK,GAAO,EAAI,GAAI,GAAK,GAAO,GAAI,EAAI,GAAK,GAAO,EAAI,GAAI,GAAK,GACzE,EAAI,EAAI,IAAK,GAAO,EAAI,GAAI,GAAK,GAAO,GAAI,EAAI,GAAK,GAAO,GAAI,GAAI,GAAK,GACzE,EAAI,EAAI,IAAK,GAAO,GAAI,EAAI,GAAK,GAAO,GAAI,EAAI,GAAK,GAAO,GAAI,EAAI,GAAK,GACzE,EAAI,EAAI,IAAK,GAAO,GAAI,EAAI,GAAK,GAAO,EAAI,GAAI,GAAK,GAAO,GAAI,EAAI,GAAK,GACzE,EAAI,EAAI,IAAK,GAAO,EAAI,GAAI,GAAK,GAAO,GAAI,GAAI,GAAK,GAAO,GAAI,GAAI,GAAK,GACzE,EAAI,EAAI,IAAK,GAAO,EAAI,GAAI,GAAK,GAAO,GAAI,GAAI,GAAK,GAAO,GAAI,EAAI,GAAK,GACzE,EAAI,EAAI,IAAK,GAAO,EAAI,GAAI,GAAK,GAAO,EAAI,GAAI,GAAK,GAAO,GAAI,GAAI,GAAK,GACzE,GAAI,EAAI,IAAK,GAAO,GAAI,EAAI,GAAK,GAAO,GAAI,EAAI,GAAK,GAAO,GAAI,EAAI,GAAK,GACzE,EAAI,EAAI,IAAK,GAAO,GAAI,EAAI,GAAK,GAAO,EAAI,GAAI,GAAK,GAAO,GAAI,GAAI,GAAK,GACzE,EAAI,GAAI,IAAK,GAAO,EAAI,GAAI,GAAK,GAAO,EAAI,GAAI,GAAK,GAAO,GAAI,GAAI,GAAK,GACzE,EAAI,EAAI,IAAK,GAAO,GAAI,EAAI,GAAK,GAAO,EAAI,GAAI,GAAK,GAAO,GAAI,GAAI,GAAK,GACzE,EAAI,GAAI,IAAK,GAAO,GAAI,GAAI,GAAK,GAAO,GAAI,GAAI,GAAK,GAAO,GAAI,GAAI,GAAK,GACzE,GAAI,EAAI,IAAK,GAAO,EAAI,GAAI,GAAK,GAAO,GAAI,EAAI,GAAK,GAAO,GAAI,GAAI,GAAK,GACzE,GAAI,EAAI,IAAK,GAAO,GAAI,GAAI,GAAK,GAAO,GAAI,GAAI,GAAK,GAAO,GAAI,GAAI,GAAK,GACzE,GAAI,EAAI,IAAK,GAAO,GAAI,GAAI,GAAK,GAAO,GAAI,GAAI,GAAK,GAAO,GAAI,GAAI,GAAK,GACzE,GAAI,EAAI,IAAK,GAAO,GAAI,GAAI,GAAK,GAAO,GAAI,EAAI,GAAK,GAAO,GAAI,EAAI,GAAK,GACzE,GAAI,EAAI,IAAK,GAAO,GAAI,GAAI,GAAK,GAAO,GAAI,GAAI,GAAK,GAAO,GAAI,GAAI,GAAK,GACzE,EAAI,GAAI,IAAK,GAAO,EAAI,GAAI,GAAK,GAAO,GAAI,GAAI,GAAK,GAAO,EAAI,GAAI,GAAK,GACzE,GAAI,EAAI,IAAK,GAAO,GAAI,GAAI,GAAK,GAAO,GAAI,GAAI,GAAK,GAAO,GAAI,GAAI,GAAK,GACzE,EAAI,GAAI,IAAK,GAAO,GAAI,GAAI,GAAK,GAAO,GAAI,GAAI,GAAK,GAAO,GAAI,GAAI,GAAK,GACzE,GAAI,EAAI,IAAK,GAAO,GAAI,EAAI,GAAK,GAAO,GAAI,GAAI,GAAK,GAAO,GAAI,GAAI,GAAK,GACzE,GAAI,EAAI,IAAK,GAAO,GAAI,GAAI,GAAK,GAAO,GAAI,GAAI,GAAK,GAAO,GAAI,GAAI,GAAK,IAW3EC,aAAc,CAEZ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAExD,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAExD,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,KAAQ,MAAQ,MAExD,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,IAAQ,KAAQ,MAW1DC,OAAQ,CACNC,EAAG,EACHC,EAAG,EACHC,EAAG,EACHC,EAAG,KAcHC,EA0DAC,EA1DSpD,EAAKhB,OAAO,KAAM,CAU7BqE,SAAU,CACR,EAAM,EAAM,EAAM,EAAM,GAAM,GAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAC1F,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,EAAM,GAAM,GAAM,GAAM,GAAM,IAC1F,IAAM,GAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAC1F,GAAM,IAAM,EAAM,GAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAC1F,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAC1F,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAC1F,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAC1F,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAC1F,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,GAAM,GAC1F,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAC1F,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAC1F,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAC1F,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,EAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAC1F,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,EAC1F,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAC1F,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAW5FC,IAAK,CACH,IAAM,EAAM,EAAM,GAAM,EAAM,GAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAC1F,EAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,EAAM,GAAM,IAC1F,EAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAC1F,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,GAAM,IAAM,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"}