@frontegg/angular 2.3.1 → 2.4.1-alpha.1307920880

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../projects/frontegg-app/src/lib/constants.ts","../../../../projects/frontegg-app/src/lib/frontegg-app.service.ts","../../../../node_modules/tslib/tslib.es6.js","../../../../projects/frontegg-app/src/lib/frontegg-app-auth.service.ts","../../../../projects/frontegg-app/src/lib/frontegg-app.component.ts","../../../../projects/frontegg-app/src/lib/frontegg-router.component.ts","../../../../projects/frontegg-app/src/lib/frontegg-app-guards.guard.ts","../../../../projects/frontegg-app/src/lib/frontegg-app.module.ts"],"names":["FE_PROVIDER_CONFIG","FronteggAppService","config","router","ngZone","_this","this","fronteggAppStateSubject$","BehaviorSubject","fronteggAppAuthStateSubject$","fronteggAppAuditsStateSubject$","isLoadingSubject$","isAuthRouteSubject$","fronteggAppState$","asObservable","fronteggAppAuthState$","fronteggAppAuditsState$","isLoading$","isAuthRoute$","Error","onRedirectTo","path","opts","baseName","window","location","origin","startsWith","substring","length","refresh","href","run","replace","navigate","replaceUrl","ContextHolder","setOnRedirectTo","fronteggApp","initialize","Object","assign","store","subscribe","fronteggStore","getState","getValue","auth","isLoading","next","audits","events","r","route","url","authRoutes","getAuthRoutes","prevIsAuthRoute","Boolean","includes","document","addEventListener","pathname","navigateByUrl","prototype","_a","routes","keys","filter","key","map","getAuthPageRoutes","showAdminPortal","hideAdminPortal","Injectable","args","providedIn","Inject","Router","NgZone","create","__values","o","s","Symbol","iterator","m","i","call","value","done","TypeError","FronteggAppAuthService","fronteggAppService","acceptInvitationStateSubject$","accountSettingsStateSubject$","activateStateSubject$","apiTokensStateSubject$","forgotPasswordStateSubject$","loginStateSubject$","mfaStateSubject$","profileStateSubject$","rolesStateSubject$","routesSubject$","securityPolicyStateSubject$","signUpStateSubject$","socialLoginStateSubject$","ssoStateSubject$","teamStateSubject$","tenantsStateSubject$","userSubject$","isAuthenticatedSubject$","isSSOAuthSubject$","ssoACSSubject$","acceptInvitationState$","accountSettingsState$","activateState$","apiTokensState$","forgotPasswordState$","loginState$","mfaState$","profileState$","rolesState$","routesState$","securityPolicyState$","signUpState$","socialLoginState$","ssoState$","teamState$","tenantsState$","userState$","isAuthenticated$","isSSOAuth$","ssoACS$","setState","state","dispatchAction","resetState","setUser","user","setLoginState","resetLoginState","requestAuthorize","firstTime","preLogin","payload","postLogin","login","loginWithMfa","recoverMfa","logout","callback","silentLogout","checkIfAllowToRememberMfaDevice","setSocialLoginsState","resetSocialLoginsState","loadSocialLoginsConfiguration","loginViaSocialLogin","setSocialLoginError","setActivateState","resetActivateState","setActivateStrategyState","activateAccount","resendActivationEmail","getActivateAccountStrategy","setAcceptInvitationState","resetAcceptInvitationState","acceptInvitation","setForgotPasswordState","resetForgotPasswordState","forgotPassword","resetPassword","loadPasswordConfig","setSignUpState","resetSignUpState","signUpUser","resetSignUpStateSoft","setProfileState","resetProfileState","loadProfile","saveProfile","changePassword","setSSOState","resetSSOState","loadSSOConfigurations","loadSSOAuthorizationRoles","saveSSOConfigurations","saveSSOConfigurationsFile","saveSSOConfigurationsFileWithCallback","validateSSODomain","updateSSOAuthorizationRoles","deleteSamlGroup","createSamlGroup","oidcPostlogin","setMfaState","resetMfaState","enrollMfa","verifyMfa","verifyMfaAfterForce","disableMfa","setTeamLoader","setTeamError","setTeamState","resetTeamState","loadUsers","loadRoles","addUser","updateUser","deleteUser","resendActivationLink","resendInvitationLink","openAddUserDialog","closeAddUserDialog","openDeleteUserDialog","closeDeleteUserDialog","setApiTokensLoader","setApiTokensError","setApiTokensState","resetApiTokensState","loadApiTokens","initApiTokensData","addTenantApiToken","addUserApiToken","deleteUserApiToken","deleteTenantApiToken","setSecurityPolicyState","setSecurityPolicyGlobalState","setSecurityPolicyPublicState","setSecurityPolicyMfaState","setSecurityPolicyLockoutState","setSecurityPolicyCaptchaState","setSecurityPolicyPasswordHistoryState","resetSecurityPolicyState","setSecurityPolicyPasswordState","loadSecurityPolicy","loadPublicSecurityPolicy","loadVendorPasswordConfig","loadSecurityPolicyMfa","saveSecurityPolicyMfa","loadSecurityPolicyLockout","saveSecurityPolicyLockout","loadSecurityPolicyCaptcha","loadSecurityPolicyPasswordHistory","saveSecurityPolicyPasswordHistory","setAccountSettingsState","resetAccountSettingsState","loadAccountSettings","saveAccountSettings","setTenantsState","resetTenantsState","switchTenant","loadTenants","setRolesState","resetRolesState","loadRolesAndPermissions","addRole","updateRole","deleteRole","attachPermissionsToRole","attachPermissionToRoles","authSubStates","field","subject","authState","authSubStates_1","authSubStates_1_1","authSubState","FastDeepEqual","isAuthenticated","type","dispatch","authStoreName","FronteggAppComponent","cdr","name","loading","isAuthRoute","ngOnDestroy","ngOnInit","detectChanges","Component","selector","template","ChangeDetectorRef","FronteggRouterComponent","event","NavigationStart","test","decodeURIComponent","FronteggAuthGuard","fronteggAppAuthService","zone","canActivate","Promise","resolve","pipe","take","routes_1","loginUrl","encodeURIComponent","FronteggAppModule","forRoot","ngModule","providers","provide","useValue","NgModule","declarations","imports","CommonModule","RouterModule","exports"],"mappings":"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","sourcesContent":["export const FronteggStoreEvent = 'FronteggStoreEvent';\nexport const FE_PROVIDER_CONFIG = 'FE_PROVIDER_CONFIG';\n","import { Inject, Injectable, NgZone } from '@angular/core';\nimport { Router, RouterEvent } from '@angular/router';\nimport { initialize } from '@frontegg/admin-portal';\nimport { FronteggAppInstance, FronteggAppOptions } from '@frontegg/types';\nimport { BehaviorSubject } from 'rxjs';\nimport { FE_PROVIDER_CONFIG } from './constants';\nimport { AuditsState, AuthPageRoutes, AuthState, RootState } from '@frontegg/redux-store';\nimport { ContextHolder, RedirectOptions } from '@frontegg/rest-api';\n\n\ninterface FronteggState {\n root: RootState;\n auth: AuthState;\n audits: AuditsState;\n}\n\nexport { AuthState };\n\ntype FronteggApp = FronteggAppInstance & {\n showAdminPortal(): void;\n hideAdminPortal(): void;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FronteggAppService {\n fronteggApp: FronteggApp;\n private fronteggAppStateSubject$ = new BehaviorSubject<FronteggState | null>(null);\n private fronteggAppAuthStateSubject$ = new BehaviorSubject<FronteggState['auth'] | null>(null);\n private fronteggAppAuditsStateSubject$ = new BehaviorSubject<FronteggState['audits'] | null>(null);\n\n private isLoadingSubject$ = new BehaviorSubject<boolean>(true);\n public readonly isAuthRouteSubject$ = new BehaviorSubject<boolean>(false);\n\n readonly fronteggAppState$ = this.fronteggAppStateSubject$.asObservable();\n readonly fronteggAppAuthState$ = this.fronteggAppAuthStateSubject$.asObservable();\n readonly fronteggAppAuditsState$ = this.fronteggAppAuditsStateSubject$.asObservable();\n\n readonly isLoading$ = this.isLoadingSubject$.asObservable();\n readonly isAuthRoute$ = this.isAuthRouteSubject$.asObservable();\n\n constructor(@Inject(FE_PROVIDER_CONFIG) private config: FronteggAppOptions, private router: Router, private ngZone: NgZone) {\n if (!this.config) {\n throw Error('Need to pass config: FronteggConfigOptions in FronteggAppModule.forRoot(config)');\n }\n\n const onRedirectTo = (path: string, opts?: RedirectOptions) => {\n const baseName = window.location.origin;\n\n if (path.startsWith(baseName) && baseName !== '/') {\n path = path.substring(baseName.length - 1);\n }\n\n if (opts?.refresh) {\n window.location.href = path;\n } else {\n this.ngZone.run(() => {\n if (opts?.replace) {\n this.router.navigate([path], { replaceUrl: true });\n } else {\n this.router.navigate([path]);\n }\n });\n }\n };\n ContextHolder.setOnRedirectTo(onRedirectTo);\n this.fronteggApp = initialize({\n onRedirectTo,\n ...this.config,\n });\n\n // Subscribe on fronteggApp store to change state subjects\n this.fronteggApp.store.subscribe(() => {\n const fronteggStore = this.fronteggApp.store.getState();\n if (this.isLoadingSubject$.getValue() !== fronteggStore?.auth.isLoading) {\n this.isLoadingSubject$.next(fronteggStore?.auth.isLoading);\n }\n\n this.fronteggAppStateSubject$.next(fronteggStore);\n this.fronteggAppAuthStateSubject$.next(fronteggStore?.auth);\n this.fronteggAppAuditsStateSubject$.next(fronteggStore?.audits);\n });\n\n // To check auth route\n this.router.events.subscribe((r) => {\n const route = r as RouterEvent;\n if (!!route.url) {\n const authRoutes = this.getAuthRoutes();\n const prevIsAuthRoute = Boolean(this.isAuthRouteSubject$.getValue());\n if (authRoutes.includes(route.url) && !prevIsAuthRoute) {\n this.isAuthRouteSubject$.next(true);\n } else if (!authRoutes.includes(route.url) && prevIsAuthRoute) {\n this.isAuthRouteSubject$.next(false);\n }\n } else {\n this.isAuthRouteSubject$.next(false);\n }\n });\n\n\n document.addEventListener('frontegg_onRedirectTo_fired', () => {\n if (window.location.pathname !== this.router.url) {\n this.router.navigateByUrl(window.location.pathname);\n }\n });\n\n if (this.getAuthRoutes().includes(this.router.url)) {\n this.isAuthRouteSubject$.next(true);\n } else {\n this.isAuthRouteSubject$.next(false);\n }\n }\n\n // helper method\n public getAuthRoutes(): string[] {\n const authRoutes = this.fronteggApp.store.getState().auth.routes ?? {};\n return Object.keys(authRoutes)\n .filter((key: string) => key !== 'authenticatedUrl')\n .map((key: string) => (authRoutes[key as keyof AuthPageRoutes]) as string);\n }\n\n public getAuthPageRoutes(): AuthPageRoutes {\n return this.fronteggApp.store.getState().auth.routes;\n }\n\n // Open admin portal\n showAdminPortal(): void {\n this.fronteggApp.showAdminPortal();\n }\n\n // Open admin portal\n hideAdminPortal(): void {\n this.fronteggApp?.hideAdminPortal();\n }\n}\n\n\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\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, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { FronteggAppService } from './frontegg-app.service';\nimport FastDeepEqual from 'fast-deep-equal';\nimport {\n RolesState,\n TenantsState,\n AccountSettingsState,\n SaveSecurityPolicyPasswordHistoryPayload,\n SaveSecurityPolicyLockoutPayload,\n SaveSecurityPolicyMfaPayload,\n PasswordPolicyState,\n PasswordHistoryPolicyState,\n MfaPolicyState,\n CaptchaPolicyState,\n LockoutPolicyState,\n PublicPolicyState,\n GlobalPolicyState,\n SecurityPolicyState,\n AddUserApiTokenPayload,\n AddTenantApiTokenPayload,\n ApiTokenType,\n ApiTokensState,\n ApiStateIndicator,\n ISetDeleteUserDialog,\n ISetAddUserDialog,\n LoadRolesAndPermissionsPayload,\n TeamState,\n TeamStateIndicator,\n MFAState,\n SaveSSOConfigurationPayload,\n SSOState,\n ProfileState,\n SaveSSOConfigurationFilePayload,\n UpdateSSOAuthorizationRolesPayload,\n DeleteSamlGroupPayload,\n CreateSamlGroupPayload,\n SaveProfilePayload,\n SignUpState,\n ForgotPasswordState,\n AcceptInvitationState,\n AuthState,\n User,\n authStoreName,\n LoginState,\n ActivateAccountStrategyState,\n} from '@frontegg/redux-store';\nimport {\n ILogin,\n ILoginWithMfa,\n IPostLogin,\n IPreLogin,\n IRecoverMFAToken,\n IActivateAccount,\n ILoginViaSocialLogin,\n ISetSocialLoginError,\n IResendActivationEmail,\n IGetActivateAccountStrategy,\n IGetActivateAccountStrategyResponse,\n IAcceptInvitation,\n IForgotPassword,\n IResetPassword,\n IGetUserPasswordConfig,\n ISignUpUser,\n IChangePassword,\n IOidcPostLogin,\n IVerifyMfa,\n IDisableMfa,\n ILoadUsers,\n ITeamUser,\n IAddUser,\n IUpdateUser,\n IDeleteUser,\n IResendActivationLink,\n ISettingsResponse,\n ISwitchTenant,\n ITenantsResponse,\n IAddRole,\n IRole,\n IUpdateRole,\n IDeleteRole,\n IAttachPermissionsToRole,\n IResendInvitationLink,\n IRolePermission,\n} from '@frontegg/rest-api';\nimport { ActivateAccountState, SocialLoginState } from '@frontegg/redux-store/auth';\n\ninterface AuthSubStates {\n field: Partial<keyof AuthState>;\n subject: BehaviorSubject<any>;\n}\n\nexport type WithCallback<T = {}, R = boolean> = T & {\n callback?: (data: R | null, error?: string) => void;\n};\n\nexport type WithSilentLoad<T> = T & {\n silentLoading?: boolean;\n};\n\n// noinspection JSUnusedGlobalSymbols\n@Injectable({\n providedIn: 'root',\n})\nexport class FronteggAppAuthService {\n private acceptInvitationStateSubject$ = new BehaviorSubject<AuthState['acceptInvitationState'] | null>(null);\n private accountSettingsStateSubject$ = new BehaviorSubject<AuthState['accountSettingsState'] | null>(null);\n private activateStateSubject$ = new BehaviorSubject<AuthState['activateState'] | null>(null);\n private apiTokensStateSubject$ = new BehaviorSubject<AuthState['apiTokensState'] | null>(null);\n private forgotPasswordStateSubject$ = new BehaviorSubject<AuthState['forgotPasswordState'] | null>(null);\n private loginStateSubject$ = new BehaviorSubject<AuthState['loginState'] | null>(null);\n private mfaStateSubject$ = new BehaviorSubject<AuthState['mfaState'] | null>(null);\n private profileStateSubject$ = new BehaviorSubject<AuthState['profileState'] | null>(null);\n private rolesStateSubject$ = new BehaviorSubject<AuthState['rolesState'] | null>(null);\n private routesSubject$ = new BehaviorSubject<AuthState['routes'] | null>(null);\n private securityPolicyStateSubject$ = new BehaviorSubject<AuthState['securityPolicyState'] | null>(null);\n private signUpStateSubject$ = new BehaviorSubject<AuthState['signUpState'] | null>(null);\n private socialLoginStateSubject$ = new BehaviorSubject<AuthState['socialLoginState'] | null>(null);\n private ssoStateSubject$ = new BehaviorSubject<AuthState['ssoState'] | null>(null);\n private teamStateSubject$ = new BehaviorSubject<AuthState['teamState'] | null>(null);\n private tenantsStateSubject$ = new BehaviorSubject<AuthState['tenantsState'] | null>(null);\n private userSubject$ = new BehaviorSubject<AuthState['user'] | null>(null);\n private isAuthenticatedSubject$ = new BehaviorSubject<AuthState['isAuthenticated']>(false);\n private isLoadingSubject$ = new BehaviorSubject<AuthState['isLoading']>(true);\n private isSSOAuthSubject$ = new BehaviorSubject<AuthState['isSSOAuth']>(false);\n private ssoACSSubject$ = new BehaviorSubject<AuthState['ssoACS']>('');\n\n readonly acceptInvitationState$ = this.acceptInvitationStateSubject$.asObservable();\n readonly accountSettingsState$ = this.accountSettingsStateSubject$.asObservable();\n readonly activateState$ = this.activateStateSubject$.asObservable();\n readonly apiTokensState$ = this.apiTokensStateSubject$.asObservable();\n readonly forgotPasswordState$ = this.forgotPasswordStateSubject$.asObservable();\n readonly loginState$ = this.loginStateSubject$.asObservable();\n readonly mfaState$ = this.mfaStateSubject$.asObservable();\n readonly profileState$ = this.profileStateSubject$.asObservable();\n readonly rolesState$ = this.rolesStateSubject$.asObservable();\n readonly routesState$ = this.routesSubject$.asObservable();\n readonly securityPolicyState$ = this.securityPolicyStateSubject$.asObservable();\n readonly signUpState$ = this.signUpStateSubject$.asObservable();\n readonly socialLoginState$ = this.socialLoginStateSubject$.asObservable();\n readonly ssoState$ = this.ssoStateSubject$.asObservable();\n readonly teamState$ = this.teamStateSubject$.asObservable();\n readonly tenantsState$ = this.tenantsStateSubject$.asObservable();\n readonly userState$ = this.userSubject$.asObservable();\n readonly isAuthenticated$ = this.isAuthenticatedSubject$.asObservable();\n readonly isLoading$ = this.isLoadingSubject$.asObservable();\n readonly isSSOAuth$ = this.isSSOAuthSubject$.asObservable();\n readonly ssoACS$ = this.ssoACSSubject$.asObservable();\n\n constructor(private fronteggAppService: FronteggAppService) {\n const authSubStates: AuthSubStates[] = [\n { field: 'acceptInvitationState', subject: this.acceptInvitationStateSubject$ },\n { field: 'accountSettingsState', subject: this.accountSettingsStateSubject$ },\n { field: 'activateState', subject: this.activateStateSubject$ },\n { field: 'apiTokensState', subject: this.apiTokensStateSubject$ },\n { field: 'forgotPasswordState', subject: this.forgotPasswordStateSubject$ },\n { field: 'loginState', subject: this.loginStateSubject$ },\n { field: 'mfaState', subject: this.mfaStateSubject$ },\n { field: 'profileState', subject: this.profileStateSubject$ },\n { field: 'rolesState', subject: this.rolesStateSubject$ },\n { field: 'routes', subject: this.routesSubject$ },\n { field: 'securityPolicyState', subject: this.securityPolicyStateSubject$ },\n { field: 'signUpState', subject: this.signUpStateSubject$ },\n { field: 'socialLoginState', subject: this.socialLoginStateSubject$ },\n { field: 'ssoState', subject: this.ssoStateSubject$ },\n { field: 'teamState', subject: this.teamStateSubject$ },\n { field: 'user', subject: this.userSubject$ },\n { field: 'isSSOAuth', subject: this.isSSOAuthSubject$ },\n { field: 'ssoACS', subject: this.ssoACSSubject$ },\n ];\n\n // Memoized Auth State\n this.fronteggAppService.fronteggAppAuthState$.subscribe((authState) => {\n if (authState != null) {\n for (const authSubState of authSubStates) {\n if (!FastDeepEqual(authSubState.subject.getValue(), authState[authSubState.field])) {\n authSubState.subject.next(authState[authSubState.field]);\n }\n }\n this.isAuthenticatedSubject$.next(authState.isAuthenticated);\n this.isLoadingSubject$.next(authState.isLoading);\n }\n });\n }\n\n private dispatchAction(type: string, payload?: any): void {\n const store: any = this.fronteggAppService.fronteggApp.store;\n store.dispatch({ type: `${authStoreName}/${type}`, payload });\n }\n\n // Root Actions\n setState = (state: Partial<AuthState>) => this.dispatchAction('setState', state);\n resetState = () => this.dispatchAction('resetState');\n setUser = (user: User) => this.dispatchAction('setUser', user);\n\n // Login Actions\n setLoginState = (state: Partial<LoginState>) => this.dispatchAction('setLoginState', state);\n resetLoginState = () => this.dispatchAction('resetLoginState');\n requestAuthorize = (firstTime?: boolean) => this.dispatchAction('requestAuthorize', firstTime);\n preLogin = (payload: IPreLogin) => this.dispatchAction('preLogin', payload);\n postLogin = (payload: IPostLogin) => this.dispatchAction('postLogin', payload);\n login = (payload: ILogin) => this.dispatchAction('login', payload);\n loginWithMfa = (payload: WithCallback<ILoginWithMfa>) => this.dispatchAction('loginWithMfa', payload);\n recoverMfa = (payload: IRecoverMFAToken) => this.dispatchAction('recoverMfa', payload);\n logout = (callback?: () => void) => this.dispatchAction('logout', callback);\n silentLogout = (callback?: () => void) => this.dispatchAction('silentLogout', callback);\n checkIfAllowToRememberMfaDevice = (payload: { mfaToken: string }) =>\n this.dispatchAction('checkIfAllowToRememberMfaDevice', payload);\n\n // Social Logins Actions\n setSocialLoginsState = (state: Partial<SocialLoginState>) => this.dispatchAction('setSocialLoginsState', state);\n resetSocialLoginsState = () => this.dispatchAction('resetSocialLoginsState');\n loadSocialLoginsConfiguration = () => this.dispatchAction('loadSocialLoginsConfiguration');\n loginViaSocialLogin = (payload: ILoginViaSocialLogin) => this.dispatchAction('loginViaSocialLogin', payload);\n setSocialLoginError = (payload: ISetSocialLoginError) => this.dispatchAction('setSocialLoginError', payload);\n\n // Activate Account Actions\n setActivateState = (state: Partial<ActivateAccountState>) => this.dispatchAction('setActivateState', state);\n resetActivateState = () => this.dispatchAction('resetActivateState');\n setActivateStrategyState = (state: Partial<ActivateAccountStrategyState>) =>\n this.dispatchAction('setActivateStrategyState', state);\n activateAccount = (payload: IActivateAccount) => this.dispatchAction('activateAccount', payload);\n resendActivationEmail = (payload: IResendActivationEmail) => this.dispatchAction('resendActivationEmail', payload);\n getActivateAccountStrategy = (\n payload: WithCallback<IGetActivateAccountStrategy, IGetActivateAccountStrategyResponse>,\n ) => this.dispatchAction('getActivateAccountStrategy', payload);\n\n // Accept Invitation Actions\n setAcceptInvitationState = (state: Partial<AcceptInvitationState>) =>\n this.dispatchAction('setAcceptInvitationState', state);\n resetAcceptInvitationState = () => this.dispatchAction('resetAcceptInvitationState');\n acceptInvitation = (payload: IAcceptInvitation) => this.dispatchAction('acceptInvitation', payload);\n\n // Forgot Password Actions\n setForgotPasswordState = (state: Partial<ForgotPasswordState>) =>\n this.dispatchAction('setForgotPasswordState', state);\n resetForgotPasswordState = () => this.dispatchAction('resetForgotPasswordState');\n forgotPassword = (payload: IForgotPassword) => this.dispatchAction('forgotPassword', payload);\n resetPassword = (payload: IResetPassword) => this.dispatchAction('resetPassword', payload);\n loadPasswordConfig = (payload?: IGetUserPasswordConfig) => this.dispatchAction('loadPasswordConfig', payload);\n\n // Sign Up Actions\n setSignUpState = (state: Partial<SignUpState>) => this.dispatchAction('setSignUpState', state);\n resetSignUpState = () => this.dispatchAction('resetSignUpState');\n signUpUser = (payload: ISignUpUser) => this.dispatchAction('signUpUser', payload);\n resetSignUpStateSoft = () => this.dispatchAction('resetSignUpStateSoft');\n\n // Profile Actions\n setProfileState = (state: Partial<ProfileState>) => this.dispatchAction('setProfileState', state);\n resetProfileState = () => this.dispatchAction('resetProfileState');\n loadProfile = () => this.dispatchAction('loadProfile');\n saveProfile = (payload: SaveProfilePayload) => this.dispatchAction('saveProfile', payload);\n changePassword = (payload: WithCallback<IChangePassword>) => this.dispatchAction('changePassword', payload);\n\n // SSO actions\n setSSOState = (state: Partial<SSOState>) => this.dispatchAction('setSSOState', state);\n resetSSOState = () => this.dispatchAction('resetSSOState');\n loadSSOConfigurations = () => this.dispatchAction('loadSSOConfigurations');\n loadSSOAuthorizationRoles = () => this.dispatchAction('loadSSOAuthorizationRoles');\n saveSSOConfigurations = (payload: SaveSSOConfigurationPayload) =>\n this.dispatchAction('saveSSOConfigurations', payload);\n saveSSOConfigurationsFile = (payload: File[]) => this.dispatchAction('saveSSOConfigurationsFile', payload);\n saveSSOConfigurationsFileWithCallback = (payload: SaveSSOConfigurationFilePayload) =>\n this.dispatchAction('saveSSOConfigurationsFileWithCallback', payload);\n validateSSODomain = (payload?: WithCallback) => this.dispatchAction('validateSSODomain', payload);\n updateSSOAuthorizationRoles = (payload: UpdateSSOAuthorizationRolesPayload) =>\n this.dispatchAction('updateSSOAuthorizationRoles', payload);\n deleteSamlGroup = (payload: DeleteSamlGroupPayload) => this.dispatchAction('deleteSamlGroup', payload);\n createSamlGroup = (payload: CreateSamlGroupPayload) => this.dispatchAction('createSamlGroup', payload);\n oidcPostlogin = (payload: IOidcPostLogin) => this.dispatchAction('oidcPostlogin', payload);\n\n // Mfa actions\n setMfaState = (state: Partial<MFAState>) => this.dispatchAction('setMfaState', state);\n resetMfaState = () => this.dispatchAction('resetMfaState');\n enrollMfa = () => this.dispatchAction('enrollMfa');\n verifyMfa = (payload: WithCallback<IVerifyMfa, string | undefined>) => this.dispatchAction('verifyMfa', payload);\n verifyMfaAfterForce = (payload: WithCallback<ILoginWithMfa, string | undefined>) =>\n this.dispatchAction('verifyMfaAfterForce', payload);\n disableMfa = (payload: WithCallback<IDisableMfa>) => this.dispatchAction('disableMfa', payload);\n\n // Team actions\n setTeamLoader = (payload: TeamStateIndicator) => this.dispatchAction('setTeamLoader', payload);\n setTeamError = (payload: TeamStateIndicator) => this.dispatchAction('setTeamError', payload);\n setTeamState = (payload: Partial<TeamState>) => this.dispatchAction('setTeamState', payload);\n resetTeamState = () => this.dispatchAction('resetTeamState');\n loadUsers = (payload: WithCallback<WithSilentLoad<ILoadUsers>, ITeamUser[]>) =>\n this.dispatchAction('loadUsers', payload);\n loadRoles = (payload?: LoadRolesAndPermissionsPayload) => this.dispatchAction('loadRoles', payload);\n addUser = (payload: WithCallback<IAddUser, ITeamUser>) => this.dispatchAction('addUser', payload);\n updateUser = (payload: WithCallback<IUpdateUser, ITeamUser>) => this.dispatchAction('updateUser', payload);\n deleteUser = (payload: WithCallback<IDeleteUser>) => this.dispatchAction('deleteUser', payload);\n resendActivationLink = (payload: WithCallback<IResendActivationLink>) =>\n this.dispatchAction('resendActivationLink', payload);\n resendInvitationLink = (payload: WithCallback<IResendInvitationLink>) =>\n this.dispatchAction('resendInvitationLink', payload);\n openAddUserDialog = (payload?: ISetAddUserDialog) => this.dispatchAction('openAddUserDialog', payload);\n closeAddUserDialog = (payload?: any) => this.dispatchAction('closeAddUserDialog', payload);\n openDeleteUserDialog = (payload?: ISetDeleteUserDialog) => this.dispatchAction('openDeleteUserDialog', payload);\n closeDeleteUserDialog = (payload?: any) => this.dispatchAction('closeDeleteUserDialog', payload);\n\n // API Token Actions\n setApiTokensLoader = (payload: ApiStateIndicator) => this.dispatchAction('setApiTokensLoader', payload);\n setApiTokensError = (payload: ApiStateIndicator) => this.dispatchAction('setApiTokensError', payload);\n setApiTokensState = (state: Partial<ApiTokensState>) => this.dispatchAction('setApiTokensState', state);\n resetApiTokensState = () => this.dispatchAction('resetApiTokensState');\n loadApiTokens = (payload?: WithSilentLoad<WithCallback>) => this.dispatchAction('loadApiTokens', payload);\n initApiTokensData = (payload: ApiTokenType) => this.dispatchAction('initApiTokensData', payload);\n addTenantApiToken = (payload: AddTenantApiTokenPayload) => this.dispatchAction('addTenantApiToken', payload);\n addUserApiToken = (payload: AddUserApiTokenPayload) => this.dispatchAction('addUserApiToken', payload);\n deleteUserApiToken = (payload: string) => this.dispatchAction('deleteUserApiToken', payload);\n deleteTenantApiToken = (payload: string) => this.dispatchAction('deleteTenantApiToken', payload);\n\n // Security Policy Actions\n setSecurityPolicyState = (state: Partial<SecurityPolicyState>) =>\n this.dispatchAction('setSecurityPolicyState', state);\n setSecurityPolicyGlobalState = (state: Partial<GlobalPolicyState>) =>\n this.dispatchAction('setSecurityPolicyGlobalState', state);\n setSecurityPolicyPublicState = (state: Partial<PublicPolicyState>) =>\n this.dispatchAction('setSecurityPolicyPublicState', state);\n setSecurityPolicyMfaState = (state: Partial<MfaPolicyState>) =>\n this.dispatchAction('setSecurityPolicyMfaState', state);\n setSecurityPolicyLockoutState = (state: Partial<LockoutPolicyState>) =>\n this.dispatchAction('setSecurityPolicyLockoutState', state);\n setSecurityPolicyCaptchaState = (state: Partial<CaptchaPolicyState>) =>\n this.dispatchAction('setSecurityPolicyCaptchaState', state);\n setSecurityPolicyPasswordHistoryState = (state: Partial<PasswordHistoryPolicyState>) =>\n this.dispatchAction('setSecurityPolicyPasswordHistoryState', state);\n resetSecurityPolicyState = () => this.dispatchAction('resetSecurityPolicyState');\n setSecurityPolicyPasswordState = (state: Partial<PasswordPolicyState>) =>\n this.dispatchAction('setSecurityPolicyPasswordState', state);\n loadSecurityPolicy = () => this.dispatchAction('loadSecurityPolicy');\n loadPublicSecurityPolicy = () => this.dispatchAction('loadPublicSecurityPolicy');\n loadVendorPasswordConfig = () => this.dispatchAction('loadVendorPasswordConfig');\n loadSecurityPolicyMfa = () => this.dispatchAction('loadSecurityPolicyMfa');\n saveSecurityPolicyMfa = (payload: SaveSecurityPolicyMfaPayload) =>\n this.dispatchAction('saveSecurityPolicyMfa', payload);\n loadSecurityPolicyLockout = () => this.dispatchAction('loadSecurityPolicyLockout');\n saveSecurityPolicyLockout = (payload: SaveSecurityPolicyLockoutPayload) =>\n this.dispatchAction('saveSecurityPolicyLockout', payload);\n loadSecurityPolicyCaptcha = () => this.dispatchAction('loadSecurityPolicyCaptcha');\n loadSecurityPolicyPasswordHistory = () => this.dispatchAction('loadSecurityPolicyPasswordHistory');\n saveSecurityPolicyPasswordHistory = (payload: SaveSecurityPolicyPasswordHistoryPayload) =>\n this.dispatchAction('saveSecurityPolicyPasswordHistory', payload);\n\n // Account Settings Actions\n setAccountSettingsState = (state: Partial<AccountSettingsState>) =>\n this.dispatchAction('setAccountSettingsState', state);\n resetAccountSettingsState = () => this.dispatchAction('resetAccountSettingsState');\n loadAccountSettings = (payload?: WithCallback<WithSilentLoad<{}>>) =>\n this.dispatchAction('loadAccountSettings', payload);\n saveAccountSettings = (payload: WithCallback<ISettingsResponse, ISettingsResponse>) =>\n this.dispatchAction('saveAccountSettings', payload);\n\n // Tenants Actions\n setTenantsState = (state: Partial<TenantsState>) => this.dispatchAction('setTenantsState', state);\n resetTenantsState = () => this.dispatchAction('resetTenantsState');\n switchTenant = (payload: WithCallback<ISwitchTenant>) => this.dispatchAction('switchTenant', payload);\n loadTenants = (payload?: WithCallback<{}, ITenantsResponse[]>) => this.dispatchAction('loadTenants', payload);\n\n // Roles Actions\n setRolesState = (state: RolesState) => this.dispatchAction('setRolesState', state);\n resetRolesState = () => this.dispatchAction('resetRolesState');\n loadRolesAndPermissions = (payload?: WithSilentLoad<{}>) => this.dispatchAction('loadRolesAndPermissions', payload);\n addRole = (payload: WithCallback<IAddRole, IRole>) => this.dispatchAction('addRole', payload);\n updateRole = (payload: WithCallback<IUpdateRole, IRole>) => this.dispatchAction('updateRole', payload);\n deleteRole = (payload: WithCallback<IDeleteRole>) => this.dispatchAction('deleteRole', payload);\n attachPermissionsToRole = (payload: WithCallback<IAttachPermissionsToRole, IRole>) =>\n this.dispatchAction('attachPermissionsToRole', payload);\n attachPermissionToRoles = (\n payload: WithCallback<{\n permissionId: string;\n roleIds: string[];\n },\n IRolePermission>,\n ) => this.dispatchAction('attachPermissionToRoles', payload);\n}\n","import { Component, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';\nimport { FronteggAppService } from './frontegg-app.service';\n\n@Component({\n selector: 'frontegg-app',\n template: `<div *ngIf=\"!loading && !isAuthRoute\">\n <ng-content></ng-content>\n </div>`,\n})\nexport class FronteggAppComponent implements OnInit, OnDestroy {\n name: string;\n loading: boolean;\n isAuthRoute: boolean;\n\n constructor(private fronteggAppService: FronteggAppService, private cdr: ChangeDetectorRef) {\n this.name = 'FronteggApp';\n this.loading = false;\n this.isAuthRoute = false;\n }\n\n ngOnDestroy(): void {\n this.fronteggAppService.fronteggApp.showAdminPortal()\n }\n\n ngOnInit(): void {\n this.fronteggAppService.isLoading$.subscribe((loading) => {\n this.loading = loading\n this.cdr.detectChanges();\n })\n this.fronteggAppService.isAuthRoute$.subscribe((isAuthRoute) => {\n this.isAuthRoute = isAuthRoute\n this.cdr.detectChanges();\n })\n }\n\n}\n","import { ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { FronteggAppService } from './frontegg-app.service';\nimport { NavigationStart, Router } from '@angular/router';\n\n@Component({\n selector: 'frontegg-router',\n template: `\n <div *ngIf='!loading && !isAuthRoute'>\n <router-outlet></router-outlet>\n </div>`,\n})\nexport class FronteggRouterComponent implements OnInit {\n name: string;\n loading: boolean;\n isAuthRoute: boolean;\n\n constructor(private fronteggAppService: FronteggAppService, private router: Router, private cdr: ChangeDetectorRef) {\n this.name = 'FronteggRouter';\n this.loading = false;\n this.isAuthRoute = false;\n\n this.router.events.subscribe((event) => {\n if (event instanceof NavigationStart) {\n if (!!event.url && (/%[0-9A-F]{2}/i).test(event.url)) {\n this.router.navigateByUrl(decodeURIComponent(event.url));\n }\n }\n });\n }\n\n\n ngOnInit(): void {\n this.fronteggAppService.isLoading$.subscribe((loading) => {\n this.loading = loading;\n this.cdr?.detectChanges();\n });\n this.fronteggAppService.isAuthRoute$.subscribe((isAuthRoute) => {\n this.isAuthRoute = isAuthRoute;\n this.cdr?.detectChanges();\n });\n }\n}\n","import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';\nimport { Injectable, NgZone } from '@angular/core';\nimport { take } from 'rxjs/operators';\nimport { FronteggAppService } from './frontegg-app.service';\nimport { FronteggAppAuthService } from './frontegg-app-auth.service';\n\n@Injectable()\nexport class FronteggAuthGuard implements CanActivate {\n constructor(\n private fronteggAppService: FronteggAppService,\n private fronteggAppAuthService: FronteggAppAuthService,\n private router: Router,\n private zone: NgZone) {\n }\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {\n return new Promise((resolve) => {\n this.fronteggAppAuthService.isLoading$\n .subscribe((isLoading) => {\n if (isLoading) {\n return;\n }\n\n this.fronteggAppAuthService.isAuthenticated$.pipe(take(1))\n .subscribe((isAuthenticated) => {\n if (isAuthenticated != null) {\n resolve(isAuthenticated);\n if (!isAuthenticated) {\n const routes = this.fronteggAppService.getAuthPageRoutes();\n this.zone.run(() => {\n const loginUrl = routes.loginUrl || '/';\n this.router.navigateByUrl(`${loginUrl}?redirectUrl=${encodeURIComponent(state.url)}`);\n });\n }\n }\n });\n });\n });\n }\n}\n","import { FronteggAuthGuard } from './frontegg-app-guards.guard';\nimport { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FronteggAppComponent } from './frontegg-app.component';\nimport { FE_PROVIDER_CONFIG } from \"./constants\";\nimport { FronteggAppOptions } from '@frontegg/types';\nimport { FronteggAppService } from './frontegg-app.service';\nimport { FronteggAppAuthService } from './frontegg-app-auth.service';\nimport { RouterModule } from '@angular/router';\nimport { FronteggRouterComponent } from './frontegg-router.component';\n\n@NgModule({\n declarations: [FronteggAppComponent, FronteggRouterComponent],\n imports: [CommonModule, RouterModule],\n exports: [FronteggAppComponent, FronteggRouterComponent]\n})\nexport class FronteggAppModule {\n public constructor() { }\n static forRoot(config: FronteggAppOptions): ModuleWithProviders<FronteggAppModule> {\n\n return {\n ngModule: FronteggAppModule,\n providers: [\n FronteggAppService,\n FronteggAuthGuard,\n FronteggAppAuthService,\n {\n provide: FE_PROVIDER_CONFIG,\n useValue: config\n }\n ],\n };\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../../projects/frontegg-app/src/lib/constants.ts","../../../../projects/frontegg-app/src/lib/frontegg-app.service.ts","../../../../node_modules/tslib/tslib.es6.js","../../../../projects/frontegg-app/src/lib/frontegg-app-auth.service.ts","../../../../projects/frontegg-app/src/lib/frontegg-app.component.ts","../../../../projects/frontegg-app/src/lib/frontegg-router.component.ts","../../../../projects/frontegg-app/src/lib/frontegg-app-guards.guard.ts","../../../../projects/frontegg-app/src/lib/frontegg-app.module.ts"],"names":["FE_PROVIDER_CONFIG","FronteggAppService","config","router","ngZone","_this","this","fronteggAppStateSubject$","BehaviorSubject","fronteggAppAuthStateSubject$","fronteggAppAuditsStateSubject$","isLoadingSubject$","isAuthRouteSubject$","fronteggAppState$","asObservable","fronteggAppAuthState$","fronteggAppAuditsState$","isLoading$","isAuthRoute$","Error","onRedirectTo","path","opts","baseName","window","location","origin","startsWith","substring","length","refresh","href","run","replace","navigate","replaceUrl","ContextHolder","setOnRedirectTo","fronteggApp","initialize","Object","assign","store","subscribe","fronteggStore","getState","getValue","auth","isLoading","next","audits","events","r","route","url","authRoutes","getAuthRoutes","prevIsAuthRoute","Boolean","includes","document","addEventListener","pathname","navigateByUrl","prototype","_a","routes","keys","filter","key","map","getAuthPageRoutes","showAdminPortal","hideAdminPortal","Injectable","args","providedIn","Inject","Router","NgZone","create","__values","o","s","Symbol","iterator","m","i","call","value","done","TypeError","FronteggAppAuthService","fronteggAppService","acceptInvitationStateSubject$","accountSettingsStateSubject$","activateStateSubject$","apiTokensStateSubject$","forgotPasswordStateSubject$","loginStateSubject$","mfaStateSubject$","profileStateSubject$","rolesStateSubject$","routesSubject$","securityPolicyStateSubject$","signUpStateSubject$","socialLoginStateSubject$","ssoStateSubject$","teamStateSubject$","tenantsStateSubject$","userSubject$","isAuthenticatedSubject$","isSSOAuthSubject$","ssoACSSubject$","acceptInvitationState$","accountSettingsState$","activateState$","apiTokensState$","forgotPasswordState$","loginState$","mfaState$","profileState$","rolesState$","routesState$","securityPolicyState$","signUpState$","socialLoginState$","ssoState$","teamState$","tenantsState$","userState$","isAuthenticated$","isSSOAuth$","ssoACS$","setState","state","dispatchAction","resetState","setUser","user","setLoginState","resetLoginState","requestAuthorize","firstTime","preLogin","payload","postLogin","login","loginWithMfa","recoverMfa","logout","callback","silentLogout","checkIfAllowToRememberMfaDevice","setSocialLoginsState","resetSocialLoginsState","loadSocialLoginsConfiguration","loginViaSocialLogin","setSocialLoginError","setActivateState","resetActivateState","setActivateStrategyState","activateAccount","resendActivationEmail","getActivateAccountStrategy","setAcceptInvitationState","resetAcceptInvitationState","acceptInvitation","setForgotPasswordState","resetForgotPasswordState","forgotPassword","resetPassword","loadPasswordConfig","setSignUpState","resetSignUpState","signUpUser","resetSignUpStateSoft","setProfileState","resetProfileState","loadProfile","saveProfile","changePassword","setSSOState","resetSSOState","loadSSOConfigurations","loadSSOAuthorizationRoles","saveSSOConfigurations","saveSSOConfigurationsFile","saveSSOConfigurationsFileWithCallback","validateSSODomain","updateSSOAuthorizationRoles","deleteSamlGroup","createSamlGroup","oidcPostlogin","setMfaState","resetMfaState","enrollMfa","verifyMfa","verifyMfaAfterForce","disableMfa","setTeamLoader","setTeamError","setTeamState","resetTeamState","loadUsers","loadRoles","addUser","updateUser","deleteUser","resendActivationLink","resendInvitationLink","openAddUserDialog","closeAddUserDialog","openDeleteUserDialog","closeDeleteUserDialog","setApiTokensLoader","setApiTokensError","setApiTokensState","resetApiTokensState","loadApiTokens","initApiTokensData","addTenantApiToken","addUserApiToken","deleteUserApiToken","deleteTenantApiToken","setSecurityPolicyState","setSecurityPolicyGlobalState","setSecurityPolicyPublicState","setSecurityPolicyMfaState","setSecurityPolicyLockoutState","setSecurityPolicyCaptchaState","setSecurityPolicyPasswordHistoryState","resetSecurityPolicyState","setSecurityPolicyPasswordState","loadSecurityPolicy","loadPublicSecurityPolicy","loadVendorPasswordConfig","loadSecurityPolicyMfa","saveSecurityPolicyMfa","loadSecurityPolicyLockout","saveSecurityPolicyLockout","loadSecurityPolicyCaptcha","loadSecurityPolicyPasswordHistory","saveSecurityPolicyPasswordHistory","setAccountSettingsState","resetAccountSettingsState","loadAccountSettings","saveAccountSettings","setTenantsState","resetTenantsState","switchTenant","loadTenants","setRolesState","resetRolesState","loadRolesAndPermissions","addRole","updateRole","deleteRole","attachPermissionsToRole","attachPermissionToRoles","authSubStates","field","subject","authState","authSubStates_1","authSubStates_1_1","authSubState","FastDeepEqual","isAuthenticated","type","dispatch","authStoreName","FronteggAppComponent","cdr","name","loading","isAuthRoute","ngOnDestroy","ngOnInit","detectChanges","Component","selector","template","ChangeDetectorRef","FronteggRouterComponent","event","NavigationStart","test","decodeURIComponent","FronteggAuthGuard","fronteggAppAuthService","zone","canActivate","Promise","resolve","pipe","take","routes_1","loginUrl","encodeURIComponent","FronteggAppModule","forRoot","ngModule","providers","provide","useValue","NgModule","declarations","imports","CommonModule","RouterModule","exports"],"mappings":"0tCACaA,EAAqB,kCCyChC,SAAAC,EAAgDC,EAAoCC,EAAwBC,GAA5G,IAAAC,EAAAC,KACE,GAD8CA,KAAAJ,OAAAA,EAAoCI,KAAAH,OAAAA,EAAwBG,KAAAF,OAAAA,EAdpGE,KAAAC,yBAA2B,IAAIC,EAAAA,gBAAsC,MACrEF,KAAAG,6BAA+B,IAAID,EAAAA,gBAA8C,MACjFF,KAAAI,+BAAiC,IAAIF,EAAAA,gBAAgD,MAErFF,KAAAK,kBAAoB,IAAIH,EAAAA,iBAAyB,GACzCF,KAAAM,oBAAsB,IAAIJ,EAAAA,iBAAyB,GAE1DF,KAAAO,kBAAoBP,KAAKC,yBAAyBO,eAClDR,KAAAS,sBAAwBT,KAAKG,6BAA6BK,eAC1DR,KAAAU,wBAA0BV,KAAKI,+BAA+BI,eAE9DR,KAAAW,WAAaX,KAAKK,kBAAkBG,eACpCR,KAAAY,aAAeZ,KAAKM,oBAAoBE,gBAG1CR,KAAKJ,OACR,MAAMiB,MAAM,mFAGd,IAAMC,EAAe,SAACC,EAAcC,GAClC,IAAMC,EAAWC,OAAOC,SAASC,OAE7BL,EAAKM,WAAWJ,IAA0B,MAAbA,IAC/BF,EAAOA,EAAKO,UAAUL,EAASM,OAAS,KAGtCP,MAAAA,OAAI,EAAJA,EAAMQ,SACRN,OAAOC,SAASM,KAAOV,EAEvBhB,EAAKD,OAAO4B,KAAI,YACVV,MAAAA,OAAI,EAAJA,EAAMW,SACR5B,EAAKF,OAAO+B,SAAS,CAACb,GAAO,CAAEc,YAAY,IAE3C9B,EAAKF,OAAO+B,SAAS,CAACb,QAK9Be,EAAAA,cAAcC,gBAAgBjB,GAC9Bd,KAAKgC,YAAcC,EAAAA,WAAUC,OAAAC,OAAA,CAC3BrB,aAAYA,GACTd,KAAKJ,SAIVI,KAAKgC,YAAYI,MAAMC,WAAU,WAC/B,IAAMC,EAAgBvC,EAAKiC,YAAYI,MAAMG,WACzCxC,EAAKM,kBAAkBmC,cAAeF,MAAAA,OAAa,EAAbA,EAAeG,KAAKC,YAC5D3C,EAAKM,kBAAkBsC,KAAKL,MAAAA,OAAa,EAAbA,EAAeG,KAAKC,WAGlD3C,EAAKE,yBAAyB0C,KAAKL,GACnCvC,EAAKI,6BAA6BwC,KAAKL,MAAAA,OAAa,EAAbA,EAAeG,MACtD1C,EAAKK,+BAA+BuC,KAAKL,MAAAA,OAAa,EAAbA,EAAeM,WAI1D5C,KAAKH,OAAOgD,OAAOR,WAAU,SAACS,GAC5B,IAAMC,EAAQD,EACd,GAAMC,EAAMC,IAAK,CACf,IAAMC,EAAalD,EAAKmD,gBAClBC,EAAkBC,QAAQrD,EAAKO,oBAAoBkC,YACrDS,EAAWI,SAASN,EAAMC,OAASG,EACrCpD,EAAKO,oBAAoBqC,MAAK,IACpBM,EAAWI,SAASN,EAAMC,MAAQG,GAC5CpD,EAAKO,oBAAoBqC,MAAK,QAGhC5C,EAAKO,oBAAoBqC,MAAK,MAKlCW,SAASC,iBAAiB,+BAA+B,WACnDrC,OAAOC,SAASqC,WAAazD,EAAKF,OAAOmD,KAC3CjD,EAAKF,OAAO4D,cAAcvC,OAAOC,SAASqC,aAI1CxD,KAAKkD,gBAAgBG,SAASrD,KAAKH,OAAOmD,KAC5ChD,KAAKM,oBAAoBqC,MAAK,GAE9B3C,KAAKM,oBAAoBqC,MAAK,UAK3BhD,EAAA+D,UAAAR,cAAA,iBACCD,EAA0D,QAA7CU,EAAA3D,KAAKgC,YAAYI,MAAMG,WAAWE,KAAKmB,cAAM,IAAAD,EAAAA,EAAI,GACpE,OAAOzB,OAAO2B,KAAKZ,GAChBa,QAAO,SAACC,GAAgB,MAAQ,qBAARA,KACxBC,KAAI,SAACD,GAAgB,OAACd,EAAWc,OAG/BpE,EAAA+D,UAAAO,kBAAA,WACL,OAAOjE,KAAKgC,YAAYI,MAAMG,WAAWE,KAAKmB,QAIhDjE,EAAA+D,UAAAQ,gBAAA,WACElE,KAAKgC,YAAYkC,mBAInBvE,EAAA+D,UAAAS,gBAAA,iBACkB,QAAhBR,EAAA3D,KAAKgC,mBAAW,IAAA2B,GAAAA,EAAEQ,mNA9GrBC,EAAAA,WAAUC,KAAA,CAAC,CACVC,WAAY,6EAkBCC,EAAAA,OAAMF,KAAA,CAAC3E,YAzCb8E,EAAAA,cADoBC,EAAAA,UC2GAvC,OAAOwC,gBAYpBC,EAASC,GACrB,IAAIC,EAAsB,mBAAXC,QAAyBA,OAAOC,SAAUC,EAAIH,GAAKD,EAAEC,GAAII,EAAI,EAC5E,GAAID,EAAG,OAAOA,EAAEE,KAAKN,GACrB,GAAIA,GAAyB,iBAAbA,EAAErD,OAAqB,MAAO,CAC1CoB,KAAM,WAEF,OADIiC,GAAKK,GAAKL,EAAErD,SAAQqD,OAAI,GACrB,CAAEO,MAAOP,GAAKA,EAAEK,KAAMG,MAAOR,KAG5C,MAAM,IAAIS,UAAUR,EAAI,0BAA4B,mCA6E/B3C,OAAOwC,wBCvD9B,SAAAY,EAAoBC,GAApB,IAAAxF,EAAAC,KAAoBA,KAAAuF,mBAAAA,EA5CZvF,KAAAwF,8BAAgC,IAAItF,EAAAA,gBAA2D,MAC/FF,KAAAyF,6BAA+B,IAAIvF,EAAAA,gBAA0D,MAC7FF,KAAA0F,sBAAwB,IAAIxF,EAAAA,gBAAmD,MAC/EF,KAAA2F,uBAAyB,IAAIzF,EAAAA,gBAAoD,MACjFF,KAAA4F,4BAA8B,IAAI1F,EAAAA,gBAAyD,MAC3FF,KAAA6F,mBAAqB,IAAI3F,EAAAA,gBAAgD,MACzEF,KAAA8F,iBAAmB,IAAI5F,EAAAA,gBAA8C,MACrEF,KAAA+F,qBAAuB,IAAI7F,EAAAA,gBAAkD,MAC7EF,KAAAgG,mBAAqB,IAAI9F,EAAAA,gBAAgD,MACzEF,KAAAiG,eAAiB,IAAI/F,EAAAA,gBAA4C,MACjEF,KAAAkG,4BAA8B,IAAIhG,EAAAA,gBAAyD,MAC3FF,KAAAmG,oBAAsB,IAAIjG,EAAAA,gBAAiD,MAC3EF,KAAAoG,yBAA2B,IAAIlG,EAAAA,gBAAsD,MACrFF,KAAAqG,iBAAmB,IAAInG,EAAAA,gBAA8C,MACrEF,KAAAsG,kBAAoB,IAAIpG,EAAAA,gBAA+C,MACvEF,KAAAuG,qBAAuB,IAAIrG,EAAAA,gBAAkD,MAC7EF,KAAAwG,aAAe,IAAItG,EAAAA,gBAA0C,MAC7DF,KAAAyG,wBAA0B,IAAIvG,EAAAA,iBAA8C,GAC5EF,KAAAK,kBAAoB,IAAIH,EAAAA,iBAAwC,GAChEF,KAAA0G,kBAAoB,IAAIxG,EAAAA,iBAAwC,GAChEF,KAAA2G,eAAiB,IAAIzG,EAAAA,gBAAqC,IAEzDF,KAAA4G,uBAAyB5G,KAAKwF,8BAA8BhF,eAC5DR,KAAA6G,sBAAwB7G,KAAKyF,6BAA6BjF,eAC1DR,KAAA8G,eAAiB9G,KAAK0F,sBAAsBlF,eAC5CR,KAAA+G,gBAAkB/G,KAAK2F,uBAAuBnF,eAC9CR,KAAAgH,qBAAuBhH,KAAK4F,4BAA4BpF,eACxDR,KAAAiH,YAAcjH,KAAK6F,mBAAmBrF,eACtCR,KAAAkH,UAAYlH,KAAK8F,iBAAiBtF,eAClCR,KAAAmH,cAAgBnH,KAAK+F,qBAAqBvF,eAC1CR,KAAAoH,YAAcpH,KAAKgG,mBAAmBxF,eACtCR,KAAAqH,aAAerH,KAAKiG,eAAezF,eACnCR,KAAAsH,qBAAuBtH,KAAKkG,4BAA4B1F,eACxDR,KAAAuH,aAAevH,KAAKmG,oBAAoB3F,eACxCR,KAAAwH,kBAAoBxH,KAAKoG,yBAAyB5F,eAClDR,KAAAyH,UAAYzH,KAAKqG,iBAAiB7F,eAClCR,KAAA0H,WAAa1H,KAAKsG,kBAAkB9F,eACpCR,KAAA2H,cAAgB3H,KAAKuG,qBAAqB/F,eAC1CR,KAAA4H,WAAa5H,KAAKwG,aAAahG,eAC/BR,KAAA6H,iBAAmB7H,KAAKyG,wBAAwBjG,eAChDR,KAAAW,WAAaX,KAAKK,kBAAkBG,eACpCR,KAAA8H,WAAa9H,KAAK0G,kBAAkBlG,eACpCR,KAAA+H,QAAU/H,KAAK2G,eAAenG,eA6CvCR,KAAAgI,SAAW,SAACC,GAA8B,OAAAlI,EAAKmI,eAAe,WAAYD,IAC1EjI,KAAAmI,WAAa,WAAM,OAAApI,EAAKmI,eAAe,eACvClI,KAAAoI,QAAU,SAACC,GAAe,OAAAtI,EAAKmI,eAAe,UAAWG,IAGzDrI,KAAAsI,cAAgB,SAACL,GAA+B,OAAAlI,EAAKmI,eAAe,gBAAiBD,IACrFjI,KAAAuI,gBAAkB,WAAM,OAAAxI,EAAKmI,eAAe,oBAC5ClI,KAAAwI,iBAAmB,SAACC,GAAwB,OAAA1I,EAAKmI,eAAe,mBAAoBO,IACpFzI,KAAA0I,SAAW,SAACC,GAAuB,OAAA5I,EAAKmI,eAAe,WAAYS,IACnE3I,KAAA4I,UAAY,SAACD,GAAwB,OAAA5I,EAAKmI,eAAe,YAAaS,IACtE3I,KAAA6I,MAAQ,SAACF,GAAoB,OAAA5I,EAAKmI,eAAe,QAASS,IAC1D3I,KAAA8I,aAAe,SAACH,GAAyC,OAAA5I,EAAKmI,eAAe,eAAgBS,IAC7F3I,KAAA+I,WAAa,SAACJ,GAA8B,OAAA5I,EAAKmI,eAAe,aAAcS,IAC9E3I,KAAAgJ,OAAS,SAACC,GAA0B,OAAAlJ,EAAKmI,eAAe,SAAUe,IAClEjJ,KAAAkJ,aAAe,SAACD,GAA0B,OAAAlJ,EAAKmI,eAAe,eAAgBe,IAC9EjJ,KAAAmJ,gCAAkC,SAACR,GACjC,OAAA5I,EAAKmI,eAAe,kCAAmCS,IAGzD3I,KAAAoJ,qBAAuB,SAACnB,GAAqC,OAAAlI,EAAKmI,eAAe,uBAAwBD,IACzGjI,KAAAqJ,uBAAyB,WAAM,OAAAtJ,EAAKmI,eAAe,2BACnDlI,KAAAsJ,8BAAgC,WAAM,OAAAvJ,EAAKmI,eAAe,kCAC1DlI,KAAAuJ,oBAAsB,SAACZ,GAAkC,OAAA5I,EAAKmI,eAAe,sBAAuBS,IACpG3I,KAAAwJ,oBAAsB,SAACb,GAAkC,OAAA5I,EAAKmI,eAAe,sBAAuBS,IAGpG3I,KAAAyJ,iBAAmB,SAACxB,GAAyC,OAAAlI,EAAKmI,eAAe,mBAAoBD,IACrGjI,KAAA0J,mBAAqB,WAAM,OAAA3J,EAAKmI,eAAe,uBAC/ClI,KAAA2J,yBAA2B,SAAC1B,GAC1B,OAAAlI,EAAKmI,eAAe,2BAA4BD,IAClDjI,KAAA4J,gBAAkB,SAACjB,GAA8B,OAAA5I,EAAKmI,eAAe,kBAAmBS,IACxF3I,KAAA6J,sBAAwB,SAAClB,GAAoC,OAAA5I,EAAKmI,eAAe,wBAAyBS,IAC1G3I,KAAA8J,2BAA6B,SAC3BnB,GACG,OAAA5I,EAAKmI,eAAe,6BAA8BS,IAGvD3I,KAAA+J,yBAA2B,SAAC9B,GAC1B,OAAAlI,EAAKmI,eAAe,2BAA4BD,IAClDjI,KAAAgK,2BAA6B,WAAM,OAAAjK,EAAKmI,eAAe,+BACvDlI,KAAAiK,iBAAmB,SAACtB,GAA+B,OAAA5I,EAAKmI,eAAe,mBAAoBS,IAG3F3I,KAAAkK,uBAAyB,SAACjC,GACxB,OAAAlI,EAAKmI,eAAe,yBAA0BD,IAChDjI,KAAAmK,yBAA2B,WAAM,OAAApK,EAAKmI,eAAe,6BACrDlI,KAAAoK,eAAiB,SAACzB,GAA6B,OAAA5I,EAAKmI,eAAe,iBAAkBS,IACrF3I,KAAAqK,cAAgB,SAAC1B,GAA4B,OAAA5I,EAAKmI,eAAe,gBAAiBS,IAClF3I,KAAAsK,mBAAqB,SAAC3B,GAAqC,OAAA5I,EAAKmI,eAAe,qBAAsBS,IAGrG3I,KAAAuK,eAAiB,SAACtC,GAAgC,OAAAlI,EAAKmI,eAAe,iBAAkBD,IACxFjI,KAAAwK,iBAAmB,WAAM,OAAAzK,EAAKmI,eAAe,qBAC7ClI,KAAAyK,WAAa,SAAC9B,GAAyB,OAAA5I,EAAKmI,eAAe,aAAcS,IACzE3I,KAAA0K,qBAAuB,WAAM,OAAA3K,EAAKmI,eAAe,yBAGjDlI,KAAA2K,gBAAkB,SAAC1C,GAAiC,OAAAlI,EAAKmI,eAAe,kBAAmBD,IAC3FjI,KAAA4K,kBAAoB,WAAM,OAAA7K,EAAKmI,eAAe,sBAC9ClI,KAAA6K,YAAc,WAAM,OAAA9K,EAAKmI,eAAe,gBACxClI,KAAA8K,YAAc,SAACnC,GAAgC,OAAA5I,EAAKmI,eAAe,cAAeS,IAClF3I,KAAA+K,eAAiB,SAACpC,GAA2C,OAAA5I,EAAKmI,eAAe,iBAAkBS,IAGnG3I,KAAAgL,YAAc,SAAC/C,GAA6B,OAAAlI,EAAKmI,eAAe,cAAeD,IAC/EjI,KAAAiL,cAAgB,WAAM,OAAAlL,EAAKmI,eAAe,kBAC1ClI,KAAAkL,sBAAwB,WAAM,OAAAnL,EAAKmI,eAAe,0BAClDlI,KAAAmL,0BAA4B,WAAM,OAAApL,EAAKmI,eAAe,8BACtDlI,KAAAoL,sBAAwB,SAACzC,GACvB,OAAA5I,EAAKmI,eAAe,wBAAyBS,IAC/C3I,KAAAqL,0BAA4B,SAAC1C,GAAoB,OAAA5I,EAAKmI,eAAe,4BAA6BS,IAClG3I,KAAAsL,sCAAwC,SAAC3C,GACvC,OAAA5I,EAAKmI,eAAe,wCAAyCS,IAC/D3I,KAAAuL,kBAAoB,SAAC5C,GAA2B,OAAA5I,EAAKmI,eAAe,oBAAqBS,IACzF3I,KAAAwL,4BAA8B,SAAC7C,GAC7B,OAAA5I,EAAKmI,eAAe,8BAA+BS,IACrD3I,KAAAyL,gBAAkB,SAAC9C,GAAoC,OAAA5I,EAAKmI,eAAe,kBAAmBS,IAC9F3I,KAAA0L,gBAAkB,SAAC/C,GAAoC,OAAA5I,EAAKmI,eAAe,kBAAmBS,IAC9F3I,KAAA2L,cAAgB,SAAChD,GAA4B,OAAA5I,EAAKmI,eAAe,gBAAiBS,IAGlF3I,KAAA4L,YAAc,SAAC3D,GAA6B,OAAAlI,EAAKmI,eAAe,cAAeD,IAC/EjI,KAAA6L,cAAgB,WAAM,OAAA9L,EAAKmI,eAAe,kBAC1ClI,KAAA8L,UAAY,WAAM,OAAA/L,EAAKmI,eAAe,cACtClI,KAAA+L,UAAY,SAACpD,GAA0D,OAAA5I,EAAKmI,eAAe,YAAaS,IACxG3I,KAAAgM,oBAAsB,SAACrD,GACrB,OAAA5I,EAAKmI,eAAe,sBAAuBS,IAC7C3I,KAAAiM,WAAa,SAACtD,GAAuC,OAAA5I,EAAKmI,eAAe,aAAcS,IAGvF3I,KAAAkM,cAAgB,SAACvD,GAAgC,OAAA5I,EAAKmI,eAAe,gBAAiBS,IACtF3I,KAAAmM,aAAe,SAACxD,GAAgC,OAAA5I,EAAKmI,eAAe,eAAgBS,IACpF3I,KAAAoM,aAAe,SAACzD,GAAgC,OAAA5I,EAAKmI,eAAe,eAAgBS,IACpF3I,KAAAqM,eAAiB,WAAM,OAAAtM,EAAKmI,eAAe,mBAC3ClI,KAAAsM,UAAY,SAAC3D,GACX,OAAA5I,EAAKmI,eAAe,YAAaS,IACnC3I,KAAAuM,UAAY,SAAC5D,GAA6C,OAAA5I,EAAKmI,eAAe,YAAaS,IAC3F3I,KAAAwM,QAAU,SAAC7D,GAA+C,OAAA5I,EAAKmI,eAAe,UAAWS,IACzF3I,KAAAyM,WAAa,SAAC9D,GAAkD,OAAA5I,EAAKmI,eAAe,aAAcS,IAClG3I,KAAA0M,WAAa,SAAC/D,GAAuC,OAAA5I,EAAKmI,eAAe,aAAcS,IACvF3I,KAAA2M,qBAAuB,SAAChE,GACtB,OAAA5I,EAAKmI,eAAe,uBAAwBS,IAC9C3I,KAAA4M,qBAAuB,SAACjE,GACtB,OAAA5I,EAAKmI,eAAe,uBAAwBS,IAC9C3I,KAAA6M,kBAAoB,SAAClE,GAAgC,OAAA5I,EAAKmI,eAAe,oBAAqBS,IAC9F3I,KAAA8M,mBAAqB,SAACnE,GAAkB,OAAA5I,EAAKmI,eAAe,qBAAsBS,IAClF3I,KAAA+M,qBAAuB,SAACpE,GAAmC,OAAA5I,EAAKmI,eAAe,uBAAwBS,IACvG3I,KAAAgN,sBAAwB,SAACrE,GAAkB,OAAA5I,EAAKmI,eAAe,wBAAyBS,IAGxF3I,KAAAiN,mBAAqB,SAACtE,GAA+B,OAAA5I,EAAKmI,eAAe,qBAAsBS,IAC/F3I,KAAAkN,kBAAoB,SAACvE,GAA+B,OAAA5I,EAAKmI,eAAe,oBAAqBS,IAC7F3I,KAAAmN,kBAAoB,SAAClF,GAAmC,OAAAlI,EAAKmI,eAAe,oBAAqBD,IACjGjI,KAAAoN,oBAAsB,WAAM,OAAArN,EAAKmI,eAAe,wBAChDlI,KAAAqN,cAAgB,SAAC1E,GAA2C,OAAA5I,EAAKmI,eAAe,gBAAiBS,IACjG3I,KAAAsN,kBAAoB,SAAC3E,GAA0B,OAAA5I,EAAKmI,eAAe,oBAAqBS,IACxF3I,KAAAuN,kBAAoB,SAAC5E,GAAsC,OAAA5I,EAAKmI,eAAe,oBAAqBS,IACpG3I,KAAAwN,gBAAkB,SAAC7E,GAAoC,OAAA5I,EAAKmI,eAAe,kBAAmBS,IAC9F3I,KAAAyN,mBAAqB,SAAC9E,GAAoB,OAAA5I,EAAKmI,eAAe,qBAAsBS,IACpF3I,KAAA0N,qBAAuB,SAAC/E,GAAoB,OAAA5I,EAAKmI,eAAe,uBAAwBS,IAGxF3I,KAAA2N,uBAAyB,SAAC1F,GACxB,OAAAlI,EAAKmI,eAAe,yBAA0BD,IAChDjI,KAAA4N,6BAA+B,SAAC3F,GAC9B,OAAAlI,EAAKmI,eAAe,+BAAgCD,IACtDjI,KAAA6N,6BAA+B,SAAC5F,GAC9B,OAAAlI,EAAKmI,eAAe,+BAAgCD,IACtDjI,KAAA8N,0BAA4B,SAAC7F,GAC3B,OAAAlI,EAAKmI,eAAe,4BAA6BD,IACnDjI,KAAA+N,8BAAgC,SAAC9F,GAC/B,OAAAlI,EAAKmI,eAAe,gCAAiCD,IACvDjI,KAAAgO,8BAAgC,SAAC/F,GAC/B,OAAAlI,EAAKmI,eAAe,gCAAiCD,IACvDjI,KAAAiO,sCAAwC,SAAChG,GACvC,OAAAlI,EAAKmI,eAAe,wCAAyCD,IAC/DjI,KAAAkO,yBAA2B,WAAM,OAAAnO,EAAKmI,eAAe,6BACrDlI,KAAAmO,+BAAiC,SAAClG,GAChC,OAAAlI,EAAKmI,eAAe,iCAAkCD,IACxDjI,KAAAoO,mBAAqB,WAAM,OAAArO,EAAKmI,eAAe,uBAC/ClI,KAAAqO,yBAA2B,WAAM,OAAAtO,EAAKmI,eAAe,6BACrDlI,KAAAsO,yBAA2B,WAAM,OAAAvO,EAAKmI,eAAe,6BACrDlI,KAAAuO,sBAAwB,WAAM,OAAAxO,EAAKmI,eAAe,0BAClDlI,KAAAwO,sBAAwB,SAAC7F,GACvB,OAAA5I,EAAKmI,eAAe,wBAAyBS,IAC/C3I,KAAAyO,0BAA4B,WAAM,OAAA1O,EAAKmI,eAAe,8BACtDlI,KAAA0O,0BAA4B,SAAC/F,GAC3B,OAAA5I,EAAKmI,eAAe,4BAA6BS,IACnD3I,KAAA2O,0BAA4B,WAAM,OAAA5O,EAAKmI,eAAe,8BACtDlI,KAAA4O,kCAAoC,WAAM,OAAA7O,EAAKmI,eAAe,sCAC9DlI,KAAA6O,kCAAoC,SAAClG,GACnC,OAAA5I,EAAKmI,eAAe,oCAAqCS,IAG3D3I,KAAA8O,wBAA0B,SAAC7G,GACzB,OAAAlI,EAAKmI,eAAe,0BAA2BD,IACjDjI,KAAA+O,0BAA4B,WAAM,OAAAhP,EAAKmI,eAAe,8BACtDlI,KAAAgP,oBAAsB,SAACrG,GACrB,OAAA5I,EAAKmI,eAAe,sBAAuBS,IAC7C3I,KAAAiP,oBAAsB,SAACtG,GACrB,OAAA5I,EAAKmI,eAAe,sBAAuBS,IAG7C3I,KAAAkP,gBAAkB,SAACjH,GAAiC,OAAAlI,EAAKmI,eAAe,kBAAmBD,IAC3FjI,KAAAmP,kBAAoB,WAAM,OAAApP,EAAKmI,eAAe,sBAC9ClI,KAAAoP,aAAe,SAACzG,GAAyC,OAAA5I,EAAKmI,eAAe,eAAgBS,IAC7F3I,KAAAqP,YAAc,SAAC1G,GAAmD,OAAA5I,EAAKmI,eAAe,cAAeS,IAGrG3I,KAAAsP,cAAgB,SAACrH,GAAsB,OAAAlI,EAAKmI,eAAe,gBAAiBD,IAC5EjI,KAAAuP,gBAAkB,WAAM,OAAAxP,EAAKmI,eAAe,oBAC5ClI,KAAAwP,wBAA0B,SAAC7G,GAAiC,OAAA5I,EAAKmI,eAAe,0BAA2BS,IAC3G3I,KAAAyP,QAAU,SAAC9G,GAA2C,OAAA5I,EAAKmI,eAAe,UAAWS,IACrF3I,KAAA0P,WAAa,SAAC/G,GAA8C,OAAA5I,EAAKmI,eAAe,aAAcS,IAC9F3I,KAAA2P,WAAa,SAAChH,GAAuC,OAAA5I,EAAKmI,eAAe,aAAcS,IACvF3I,KAAA4P,wBAA0B,SAACjH,GACzB,OAAA5I,EAAKmI,eAAe,0BAA2BS,IACjD3I,KAAA6P,wBAA0B,SACxBlH,GAKG,OAAA5I,EAAKmI,eAAe,0BAA2BS,IAjOlD,IAAMmH,EAAiC,CACrC,CAAEC,MAAO,wBAAyBC,QAAShQ,KAAKwF,+BAChD,CAAEuK,MAAO,uBAAwBC,QAAShQ,KAAKyF,8BAC/C,CAAEsK,MAAO,gBAAiBC,QAAShQ,KAAK0F,uBACxC,CAAEqK,MAAO,iBAAkBC,QAAShQ,KAAK2F,wBACzC,CAAEoK,MAAO,sBAAuBC,QAAShQ,KAAK4F,6BAC9C,CAAEmK,MAAO,eAAgBC,QAAShQ,KAAKuG,sBACvC,CAAEwJ,MAAO,aAAcC,QAAShQ,KAAK6F,oBACrC,CAAEkK,MAAO,WAAYC,QAAShQ,KAAK8F,kBACnC,CAAEiK,MAAO,eAAgBC,QAAShQ,KAAK+F,sBACvC,CAAEgK,MAAO,aAAcC,QAAShQ,KAAKgG,oBACrC,CAAE+J,MAAO,SAAUC,QAAShQ,KAAKiG,gBACjC,CAAE8J,MAAO,sBAAuBC,QAAShQ,KAAKkG,6BAC9C,CAAE6J,MAAO,cAAeC,QAAShQ,KAAKmG,qBACtC,CAAE4J,MAAO,mBAAoBC,QAAShQ,KAAKoG,0BAC3C,CAAE2J,MAAO,WAAYC,QAAShQ,KAAKqG,kBACnC,CAAE0J,MAAO,YAAaC,QAAShQ,KAAKsG,mBACpC,CAAEyJ,MAAO,OAAQC,QAAShQ,KAAKwG,cAC/B,CAAEuJ,MAAO,YAAaC,QAAShQ,KAAK0G,mBACpC,CAAEqJ,MAAO,SAAUC,QAAShQ,KAAK2G,iBAInC3G,KAAKuF,mBAAmB9E,sBAAsB4B,WAAU,SAAC4N,WACvD,GAAiB,MAAbA,EAAmB,KACrB,IAA2B,IAAAC,EAAAvL,EAAAmL,GAAaK,EAAAD,EAAAvN,QAAAwN,EAAA/K,KAAA+K,EAAAD,EAAAvN,OAAE,CAArC,IAAMyN,EAAYD,EAAAhL,MAChBkL,EAAAA,QAAcD,EAAaJ,QAAQxN,WAAYyN,EAAUG,EAAaL,SACzEK,EAAaJ,QAAQrN,KAAKsN,EAAUG,EAAaL,0GAGrDhQ,EAAK0G,wBAAwB9D,KAAKsN,EAAUK,iBAC5CvQ,EAAKM,kBAAkBsC,KAAKsN,EAAUvN,sBAKpC4C,EAAA5B,UAAAwE,eAAA,SAAeqI,EAAc5H,GAChB3I,KAAKuF,mBAAmBvD,YAAYI,MACjDoO,SAAS,CAAED,KAASE,EAAAA,cAAa,IAAIF,EAAQ5H,QAAOA,wIAvF7DvE,EAAAA,WAAUC,KAAA,CAAC,CACVC,WAAY,oDApGL3E,sBCWP,SAAA+Q,EAAoBnL,EAAgDoL,GAAhD3Q,KAAAuF,mBAAAA,EAAgDvF,KAAA2Q,IAAAA,EAClE3Q,KAAK4Q,KAAO,cACZ5Q,KAAK6Q,SAAU,EACf7Q,KAAK8Q,aAAc,SAGrBJ,EAAAhN,UAAAqN,YAAA,WACE/Q,KAAKuF,mBAAmBvD,YAAYkC,mBAGtCwM,EAAAhN,UAAAsN,SAAA,WAAA,IAAAjR,EAAAC,KACEA,KAAKuF,mBAAmB5E,WAAW0B,WAAU,SAACwO,GAC5C9Q,EAAK8Q,QAAUA,EACf9Q,EAAK4Q,IAAIM,mBAEXjR,KAAKuF,mBAAmB3E,aAAayB,WAAU,SAACyO,GAC9C/Q,EAAK+Q,YAAcA,EACnB/Q,EAAK4Q,IAAIM,6CA5BdC,EAAAA,UAAS7M,KAAA,CAAC,CACT8M,SAAU,eACVC,SAAU,+HAJHzR,SAD8B0R,EAAAA,sCCgBrC,SAAAC,EAAoB/L,EAAgD1F,EAAwB8Q,GAA5F,IAAA5Q,EAAAC,KAAoBA,KAAAuF,mBAAAA,EAAgDvF,KAAAH,OAAAA,EAAwBG,KAAA2Q,IAAAA,EAC1F3Q,KAAK4Q,KAAO,iBACZ5Q,KAAK6Q,SAAU,EACf7Q,KAAK8Q,aAAc,EAEnB9Q,KAAKH,OAAOgD,OAAOR,WAAU,SAACkP,GACxBA,aAAiBC,EAAAA,iBACbD,EAAMvO,KAAO,gBAAkByO,KAAKF,EAAMvO,MAC7CjD,EAAKF,OAAO4D,cAAciO,mBAAmBH,EAAMvO,gBAO5DsO,EAAA5N,UAAAsN,SAAA,WAAA,IAAAjR,EAAAC,KACEA,KAAKuF,mBAAmB5E,WAAW0B,WAAU,SAACwO,SAC5C9Q,EAAK8Q,QAAUA,EACP,QAARlN,EAAA5D,EAAK4Q,WAAG,IAAAhN,GAAAA,EAAEsN,mBAEZjR,KAAKuF,mBAAmB3E,aAAayB,WAAU,SAACyO,SAC9C/Q,EAAK+Q,YAAcA,EACX,QAARnN,EAAA5D,EAAK4Q,WAAG,IAAAhN,GAAAA,EAAEsN,6CAlCfC,EAAAA,UAAS7M,KAAA,CAAC,CACT8M,SAAU,kBACVC,SAAU,+IALHzR,SACiB6E,EAAAA,cAFjB6M,EAAAA,sCCQP,SAAAM,EACUpM,EACAqM,EACA/R,EACAgS,GAHA7R,KAAAuF,mBAAAA,EACAvF,KAAA4R,uBAAAA,EACA5R,KAAAH,OAAAA,EACAG,KAAA6R,KAAAA,SAGVF,EAAAjO,UAAAoO,YAAA,SAAY/O,EAA+BkF,GAA3C,IAAAlI,EAAAC,KACE,OAAO,IAAI+R,SAAQ,SAACC,GAClBjS,EAAK6R,uBAAuBjR,WACzB0B,WAAU,SAACK,GACNA,GAIJ3C,EAAK6R,uBAAuB/J,iBAAiBoK,KAAKC,EAAAA,KAAK,IACpD7P,WAAU,SAACiO,GACV,GAAuB,MAAnBA,IACF0B,EAAQ1B,IACHA,GAAiB,CACpB,IAAM6B,EAASpS,EAAKwF,mBAAmBtB,oBACvClE,EAAK8R,KAAKnQ,KAAI,WACZ,IAAM0Q,EAAWD,EAAOC,UAAY,IACpCrS,EAAKF,OAAO4D,cAAiB2O,EAAQ,gBAAgBC,mBAAmBpK,EAAMjF,6CAzBjGoB,EAAAA,sDAHQzE,SACA2F,SAJqCd,EAAAA,cACzBC,EAAAA,2BCgBnB,SAAA6N,YACOA,EAAAC,QAAP,SAAe3S,GAEb,MAAO,CACL4S,SAAUF,EACVG,UAAW,CACT9S,EACAgS,EACArM,EACA,CACEoN,QAAShT,EACTiT,SAAU/S,+BAjBnBgT,EAAAA,SAAQvO,KAAA,CAAC,CACRwO,aAAc,CAACnC,EAAsBY,GACrCwB,QAAS,CAACC,EAAAA,aAAcC,EAAAA,cACxBC,QAAS,CAACvC,EAAsBY","sourcesContent":["export const FronteggStoreEvent = 'FronteggStoreEvent';\nexport const FE_PROVIDER_CONFIG = 'FE_PROVIDER_CONFIG';\n","import { Inject, Injectable, NgZone } from '@angular/core';\nimport { Router, RouterEvent } from '@angular/router';\nimport { initialize } from '@frontegg/admin-portal';\nimport { FronteggAppInstance, FronteggAppOptions } from '@frontegg/types';\nimport { BehaviorSubject } from 'rxjs';\nimport { FE_PROVIDER_CONFIG } from './constants';\nimport { AuditsState, AuthPageRoutes, AuthState, RootState } from '@frontegg/redux-store';\nimport { ContextHolder, RedirectOptions } from '@frontegg/rest-api';\n\n\ninterface FronteggState {\n root: RootState;\n auth: AuthState;\n audits: AuditsState;\n}\n\nexport { AuthState };\n\ntype FronteggApp = FronteggAppInstance & {\n showAdminPortal(): void;\n hideAdminPortal(): void;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FronteggAppService {\n fronteggApp: FronteggApp;\n private fronteggAppStateSubject$ = new BehaviorSubject<FronteggState | null>(null);\n private fronteggAppAuthStateSubject$ = new BehaviorSubject<FronteggState['auth'] | null>(null);\n private fronteggAppAuditsStateSubject$ = new BehaviorSubject<FronteggState['audits'] | null>(null);\n\n private isLoadingSubject$ = new BehaviorSubject<boolean>(true);\n public readonly isAuthRouteSubject$ = new BehaviorSubject<boolean>(false);\n\n readonly fronteggAppState$ = this.fronteggAppStateSubject$.asObservable();\n readonly fronteggAppAuthState$ = this.fronteggAppAuthStateSubject$.asObservable();\n readonly fronteggAppAuditsState$ = this.fronteggAppAuditsStateSubject$.asObservable();\n\n readonly isLoading$ = this.isLoadingSubject$.asObservable();\n readonly isAuthRoute$ = this.isAuthRouteSubject$.asObservable();\n\n constructor(@Inject(FE_PROVIDER_CONFIG) private config: FronteggAppOptions, private router: Router, private ngZone: NgZone) {\n if (!this.config) {\n throw Error('Need to pass config: FronteggConfigOptions in FronteggAppModule.forRoot(config)');\n }\n\n const onRedirectTo = (path: string, opts?: RedirectOptions) => {\n const baseName = window.location.origin;\n\n if (path.startsWith(baseName) && baseName !== '/') {\n path = path.substring(baseName.length - 1);\n }\n\n if (opts?.refresh) {\n window.location.href = path;\n } else {\n this.ngZone.run(() => {\n if (opts?.replace) {\n this.router.navigate([path], { replaceUrl: true });\n } else {\n this.router.navigate([path]);\n }\n });\n }\n };\n ContextHolder.setOnRedirectTo(onRedirectTo);\n this.fronteggApp = initialize({\n onRedirectTo,\n ...this.config,\n });\n\n // Subscribe on fronteggApp store to change state subjects\n this.fronteggApp.store.subscribe(() => {\n const fronteggStore = this.fronteggApp.store.getState();\n if (this.isLoadingSubject$.getValue() !== fronteggStore?.auth.isLoading) {\n this.isLoadingSubject$.next(fronteggStore?.auth.isLoading);\n }\n\n this.fronteggAppStateSubject$.next(fronteggStore);\n this.fronteggAppAuthStateSubject$.next(fronteggStore?.auth);\n this.fronteggAppAuditsStateSubject$.next(fronteggStore?.audits);\n });\n\n // To check auth route\n this.router.events.subscribe((r) => {\n const route = r as RouterEvent;\n if (!!route.url) {\n const authRoutes = this.getAuthRoutes();\n const prevIsAuthRoute = Boolean(this.isAuthRouteSubject$.getValue());\n if (authRoutes.includes(route.url) && !prevIsAuthRoute) {\n this.isAuthRouteSubject$.next(true);\n } else if (!authRoutes.includes(route.url) && prevIsAuthRoute) {\n this.isAuthRouteSubject$.next(false);\n }\n } else {\n this.isAuthRouteSubject$.next(false);\n }\n });\n\n\n document.addEventListener('frontegg_onRedirectTo_fired', () => {\n if (window.location.pathname !== this.router.url) {\n this.router.navigateByUrl(window.location.pathname);\n }\n });\n\n if (this.getAuthRoutes().includes(this.router.url)) {\n this.isAuthRouteSubject$.next(true);\n } else {\n this.isAuthRouteSubject$.next(false);\n }\n }\n\n // helper method\n public getAuthRoutes(): string[] {\n const authRoutes = this.fronteggApp.store.getState().auth.routes ?? {};\n return Object.keys(authRoutes)\n .filter((key: string) => key !== 'authenticatedUrl')\n .map((key: string) => (authRoutes[key as keyof AuthPageRoutes]) as string);\n }\n\n public getAuthPageRoutes(): AuthPageRoutes {\n return this.fronteggApp.store.getState().auth.routes;\n }\n\n // Open admin portal\n showAdminPortal(): void {\n this.fronteggApp.showAdminPortal();\n }\n\n // Open admin portal\n hideAdminPortal(): void {\n this.fronteggApp?.hideAdminPortal();\n }\n}\n\n\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\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, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { FronteggAppService } from './frontegg-app.service';\nimport FastDeepEqual from 'fast-deep-equal';\nimport {\n RolesState,\n TenantsState,\n AccountSettingsState,\n SaveSecurityPolicyPasswordHistoryPayload,\n SaveSecurityPolicyLockoutPayload,\n SaveSecurityPolicyMfaPayload,\n PasswordPolicyState,\n PasswordHistoryPolicyState,\n MfaPolicyState,\n CaptchaPolicyState,\n LockoutPolicyState,\n PublicPolicyState,\n GlobalPolicyState,\n SecurityPolicyState,\n AddUserApiTokenPayload,\n AddTenantApiTokenPayload,\n ApiTokenType,\n ApiTokensState,\n ApiStateIndicator,\n ISetDeleteUserDialog,\n ISetAddUserDialog,\n LoadRolesAndPermissionsPayload,\n TeamState,\n TeamStateIndicator,\n MFAState,\n SaveSSOConfigurationPayload,\n SSOState,\n ProfileState,\n SaveSSOConfigurationFilePayload,\n UpdateSSOAuthorizationRolesPayload,\n DeleteSamlGroupPayload,\n CreateSamlGroupPayload,\n SaveProfilePayload,\n SignUpState,\n ForgotPasswordState,\n AcceptInvitationState,\n AuthState,\n User,\n authStoreName,\n LoginState,\n ActivateAccountStrategyState,\n} from '@frontegg/redux-store';\nimport {\n ILogin,\n ILoginWithMfa,\n IPostLogin,\n IPreLogin,\n IRecoverMFAToken,\n IActivateAccount,\n ILoginViaSocialLogin,\n ISetSocialLoginError,\n IResendActivationEmail,\n IGetActivateAccountStrategy,\n IGetActivateAccountStrategyResponse,\n IAcceptInvitation,\n IForgotPassword,\n IResetPassword,\n IGetUserPasswordConfig,\n ISignUpUser,\n IChangePassword,\n IOidcPostLogin,\n IVerifyMfa,\n IDisableMfa,\n ILoadUsers,\n ITeamUser,\n IAddUser,\n IUpdateUser,\n IDeleteUser,\n IResendActivationLink,\n ISettingsResponse,\n ISwitchTenant,\n ITenantsResponse,\n IAddRole,\n IRole,\n IUpdateRole,\n IDeleteRole,\n IAttachPermissionsToRole,\n IResendInvitationLink,\n IRolePermission,\n} from '@frontegg/rest-api';\nimport { ActivateAccountState, SocialLoginState } from '@frontegg/redux-store/auth';\n\ninterface AuthSubStates {\n field: Partial<keyof AuthState>;\n subject: BehaviorSubject<any>;\n}\n\nexport type WithCallback<T = {}, R = boolean> = T & {\n callback?: (data: R | null, error?: string) => void;\n};\n\nexport type WithSilentLoad<T> = T & {\n silentLoading?: boolean;\n};\n\n// noinspection JSUnusedGlobalSymbols\n@Injectable({\n providedIn: 'root',\n})\nexport class FronteggAppAuthService {\n private acceptInvitationStateSubject$ = new BehaviorSubject<AuthState['acceptInvitationState'] | null>(null);\n private accountSettingsStateSubject$ = new BehaviorSubject<AuthState['accountSettingsState'] | null>(null);\n private activateStateSubject$ = new BehaviorSubject<AuthState['activateState'] | null>(null);\n private apiTokensStateSubject$ = new BehaviorSubject<AuthState['apiTokensState'] | null>(null);\n private forgotPasswordStateSubject$ = new BehaviorSubject<AuthState['forgotPasswordState'] | null>(null);\n private loginStateSubject$ = new BehaviorSubject<AuthState['loginState'] | null>(null);\n private mfaStateSubject$ = new BehaviorSubject<AuthState['mfaState'] | null>(null);\n private profileStateSubject$ = new BehaviorSubject<AuthState['profileState'] | null>(null);\n private rolesStateSubject$ = new BehaviorSubject<AuthState['rolesState'] | null>(null);\n private routesSubject$ = new BehaviorSubject<AuthState['routes'] | null>(null);\n private securityPolicyStateSubject$ = new BehaviorSubject<AuthState['securityPolicyState'] | null>(null);\n private signUpStateSubject$ = new BehaviorSubject<AuthState['signUpState'] | null>(null);\n private socialLoginStateSubject$ = new BehaviorSubject<AuthState['socialLoginState'] | null>(null);\n private ssoStateSubject$ = new BehaviorSubject<AuthState['ssoState'] | null>(null);\n private teamStateSubject$ = new BehaviorSubject<AuthState['teamState'] | null>(null);\n private tenantsStateSubject$ = new BehaviorSubject<AuthState['tenantsState'] | null>(null);\n private userSubject$ = new BehaviorSubject<AuthState['user'] | null>(null);\n private isAuthenticatedSubject$ = new BehaviorSubject<AuthState['isAuthenticated']>(false);\n private isLoadingSubject$ = new BehaviorSubject<AuthState['isLoading']>(true);\n private isSSOAuthSubject$ = new BehaviorSubject<AuthState['isSSOAuth']>(false);\n private ssoACSSubject$ = new BehaviorSubject<AuthState['ssoACS']>('');\n\n readonly acceptInvitationState$ = this.acceptInvitationStateSubject$.asObservable();\n readonly accountSettingsState$ = this.accountSettingsStateSubject$.asObservable();\n readonly activateState$ = this.activateStateSubject$.asObservable();\n readonly apiTokensState$ = this.apiTokensStateSubject$.asObservable();\n readonly forgotPasswordState$ = this.forgotPasswordStateSubject$.asObservable();\n readonly loginState$ = this.loginStateSubject$.asObservable();\n readonly mfaState$ = this.mfaStateSubject$.asObservable();\n readonly profileState$ = this.profileStateSubject$.asObservable();\n readonly rolesState$ = this.rolesStateSubject$.asObservable();\n readonly routesState$ = this.routesSubject$.asObservable();\n readonly securityPolicyState$ = this.securityPolicyStateSubject$.asObservable();\n readonly signUpState$ = this.signUpStateSubject$.asObservable();\n readonly socialLoginState$ = this.socialLoginStateSubject$.asObservable();\n readonly ssoState$ = this.ssoStateSubject$.asObservable();\n readonly teamState$ = this.teamStateSubject$.asObservable();\n readonly tenantsState$ = this.tenantsStateSubject$.asObservable();\n readonly userState$ = this.userSubject$.asObservable();\n readonly isAuthenticated$ = this.isAuthenticatedSubject$.asObservable();\n readonly isLoading$ = this.isLoadingSubject$.asObservable();\n readonly isSSOAuth$ = this.isSSOAuthSubject$.asObservable();\n readonly ssoACS$ = this.ssoACSSubject$.asObservable();\n\n constructor(private fronteggAppService: FronteggAppService) {\n const authSubStates: AuthSubStates[] = [\n { field: 'acceptInvitationState', subject: this.acceptInvitationStateSubject$ },\n { field: 'accountSettingsState', subject: this.accountSettingsStateSubject$ },\n { field: 'activateState', subject: this.activateStateSubject$ },\n { field: 'apiTokensState', subject: this.apiTokensStateSubject$ },\n { field: 'forgotPasswordState', subject: this.forgotPasswordStateSubject$ },\n { field: 'tenantsState', subject: this.tenantsStateSubject$ },\n { field: 'loginState', subject: this.loginStateSubject$ },\n { field: 'mfaState', subject: this.mfaStateSubject$ },\n { field: 'profileState', subject: this.profileStateSubject$ },\n { field: 'rolesState', subject: this.rolesStateSubject$ },\n { field: 'routes', subject: this.routesSubject$ },\n { field: 'securityPolicyState', subject: this.securityPolicyStateSubject$ },\n { field: 'signUpState', subject: this.signUpStateSubject$ },\n { field: 'socialLoginState', subject: this.socialLoginStateSubject$ },\n { field: 'ssoState', subject: this.ssoStateSubject$ },\n { field: 'teamState', subject: this.teamStateSubject$ },\n { field: 'user', subject: this.userSubject$ },\n { field: 'isSSOAuth', subject: this.isSSOAuthSubject$ },\n { field: 'ssoACS', subject: this.ssoACSSubject$ },\n ];\n\n // Memoized Auth State\n this.fronteggAppService.fronteggAppAuthState$.subscribe((authState) => {\n if (authState != null) {\n for (const authSubState of authSubStates) {\n if (!FastDeepEqual(authSubState.subject.getValue(), authState[authSubState.field])) {\n authSubState.subject.next(authState[authSubState.field]);\n }\n }\n this.isAuthenticatedSubject$.next(authState.isAuthenticated);\n this.isLoadingSubject$.next(authState.isLoading);\n }\n });\n }\n\n private dispatchAction(type: string, payload?: any): void {\n const store: any = this.fronteggAppService.fronteggApp.store;\n store.dispatch({ type: `${authStoreName}/${type}`, payload });\n }\n\n // Root Actions\n setState = (state: Partial<AuthState>) => this.dispatchAction('setState', state);\n resetState = () => this.dispatchAction('resetState');\n setUser = (user: User) => this.dispatchAction('setUser', user);\n\n // Login Actions\n setLoginState = (state: Partial<LoginState>) => this.dispatchAction('setLoginState', state);\n resetLoginState = () => this.dispatchAction('resetLoginState');\n requestAuthorize = (firstTime?: boolean) => this.dispatchAction('requestAuthorize', firstTime);\n preLogin = (payload: IPreLogin) => this.dispatchAction('preLogin', payload);\n postLogin = (payload: IPostLogin) => this.dispatchAction('postLogin', payload);\n login = (payload: ILogin) => this.dispatchAction('login', payload);\n loginWithMfa = (payload: WithCallback<ILoginWithMfa>) => this.dispatchAction('loginWithMfa', payload);\n recoverMfa = (payload: IRecoverMFAToken) => this.dispatchAction('recoverMfa', payload);\n logout = (callback?: () => void) => this.dispatchAction('logout', callback);\n silentLogout = (callback?: () => void) => this.dispatchAction('silentLogout', callback);\n checkIfAllowToRememberMfaDevice = (payload: { mfaToken: string }) =>\n this.dispatchAction('checkIfAllowToRememberMfaDevice', payload);\n\n // Social Logins Actions\n setSocialLoginsState = (state: Partial<SocialLoginState>) => this.dispatchAction('setSocialLoginsState', state);\n resetSocialLoginsState = () => this.dispatchAction('resetSocialLoginsState');\n loadSocialLoginsConfiguration = () => this.dispatchAction('loadSocialLoginsConfiguration');\n loginViaSocialLogin = (payload: ILoginViaSocialLogin) => this.dispatchAction('loginViaSocialLogin', payload);\n setSocialLoginError = (payload: ISetSocialLoginError) => this.dispatchAction('setSocialLoginError', payload);\n\n // Activate Account Actions\n setActivateState = (state: Partial<ActivateAccountState>) => this.dispatchAction('setActivateState', state);\n resetActivateState = () => this.dispatchAction('resetActivateState');\n setActivateStrategyState = (state: Partial<ActivateAccountStrategyState>) =>\n this.dispatchAction('setActivateStrategyState', state);\n activateAccount = (payload: IActivateAccount) => this.dispatchAction('activateAccount', payload);\n resendActivationEmail = (payload: IResendActivationEmail) => this.dispatchAction('resendActivationEmail', payload);\n getActivateAccountStrategy = (\n payload: WithCallback<IGetActivateAccountStrategy, IGetActivateAccountStrategyResponse>,\n ) => this.dispatchAction('getActivateAccountStrategy', payload);\n\n // Accept Invitation Actions\n setAcceptInvitationState = (state: Partial<AcceptInvitationState>) =>\n this.dispatchAction('setAcceptInvitationState', state);\n resetAcceptInvitationState = () => this.dispatchAction('resetAcceptInvitationState');\n acceptInvitation = (payload: IAcceptInvitation) => this.dispatchAction('acceptInvitation', payload);\n\n // Forgot Password Actions\n setForgotPasswordState = (state: Partial<ForgotPasswordState>) =>\n this.dispatchAction('setForgotPasswordState', state);\n resetForgotPasswordState = () => this.dispatchAction('resetForgotPasswordState');\n forgotPassword = (payload: IForgotPassword) => this.dispatchAction('forgotPassword', payload);\n resetPassword = (payload: IResetPassword) => this.dispatchAction('resetPassword', payload);\n loadPasswordConfig = (payload?: IGetUserPasswordConfig) => this.dispatchAction('loadPasswordConfig', payload);\n\n // Sign Up Actions\n setSignUpState = (state: Partial<SignUpState>) => this.dispatchAction('setSignUpState', state);\n resetSignUpState = () => this.dispatchAction('resetSignUpState');\n signUpUser = (payload: ISignUpUser) => this.dispatchAction('signUpUser', payload);\n resetSignUpStateSoft = () => this.dispatchAction('resetSignUpStateSoft');\n\n // Profile Actions\n setProfileState = (state: Partial<ProfileState>) => this.dispatchAction('setProfileState', state);\n resetProfileState = () => this.dispatchAction('resetProfileState');\n loadProfile = () => this.dispatchAction('loadProfile');\n saveProfile = (payload: SaveProfilePayload) => this.dispatchAction('saveProfile', payload);\n changePassword = (payload: WithCallback<IChangePassword>) => this.dispatchAction('changePassword', payload);\n\n // SSO actions\n setSSOState = (state: Partial<SSOState>) => this.dispatchAction('setSSOState', state);\n resetSSOState = () => this.dispatchAction('resetSSOState');\n loadSSOConfigurations = () => this.dispatchAction('loadSSOConfigurations');\n loadSSOAuthorizationRoles = () => this.dispatchAction('loadSSOAuthorizationRoles');\n saveSSOConfigurations = (payload: SaveSSOConfigurationPayload) =>\n this.dispatchAction('saveSSOConfigurations', payload);\n saveSSOConfigurationsFile = (payload: File[]) => this.dispatchAction('saveSSOConfigurationsFile', payload);\n saveSSOConfigurationsFileWithCallback = (payload: SaveSSOConfigurationFilePayload) =>\n this.dispatchAction('saveSSOConfigurationsFileWithCallback', payload);\n validateSSODomain = (payload?: WithCallback) => this.dispatchAction('validateSSODomain', payload);\n updateSSOAuthorizationRoles = (payload: UpdateSSOAuthorizationRolesPayload) =>\n this.dispatchAction('updateSSOAuthorizationRoles', payload);\n deleteSamlGroup = (payload: DeleteSamlGroupPayload) => this.dispatchAction('deleteSamlGroup', payload);\n createSamlGroup = (payload: CreateSamlGroupPayload) => this.dispatchAction('createSamlGroup', payload);\n oidcPostlogin = (payload: IOidcPostLogin) => this.dispatchAction('oidcPostlogin', payload);\n\n // Mfa actions\n setMfaState = (state: Partial<MFAState>) => this.dispatchAction('setMfaState', state);\n resetMfaState = () => this.dispatchAction('resetMfaState');\n enrollMfa = () => this.dispatchAction('enrollMfa');\n verifyMfa = (payload: WithCallback<IVerifyMfa, string | undefined>) => this.dispatchAction('verifyMfa', payload);\n verifyMfaAfterForce = (payload: WithCallback<ILoginWithMfa, string | undefined>) =>\n this.dispatchAction('verifyMfaAfterForce', payload);\n disableMfa = (payload: WithCallback<IDisableMfa>) => this.dispatchAction('disableMfa', payload);\n\n // Team actions\n setTeamLoader = (payload: TeamStateIndicator) => this.dispatchAction('setTeamLoader', payload);\n setTeamError = (payload: TeamStateIndicator) => this.dispatchAction('setTeamError', payload);\n setTeamState = (payload: Partial<TeamState>) => this.dispatchAction('setTeamState', payload);\n resetTeamState = () => this.dispatchAction('resetTeamState');\n loadUsers = (payload: WithCallback<WithSilentLoad<ILoadUsers>, ITeamUser[]>) =>\n this.dispatchAction('loadUsers', payload);\n loadRoles = (payload?: LoadRolesAndPermissionsPayload) => this.dispatchAction('loadRoles', payload);\n addUser = (payload: WithCallback<IAddUser, ITeamUser>) => this.dispatchAction('addUser', payload);\n updateUser = (payload: WithCallback<IUpdateUser, ITeamUser>) => this.dispatchAction('updateUser', payload);\n deleteUser = (payload: WithCallback<IDeleteUser>) => this.dispatchAction('deleteUser', payload);\n resendActivationLink = (payload: WithCallback<IResendActivationLink>) =>\n this.dispatchAction('resendActivationLink', payload);\n resendInvitationLink = (payload: WithCallback<IResendInvitationLink>) =>\n this.dispatchAction('resendInvitationLink', payload);\n openAddUserDialog = (payload?: ISetAddUserDialog) => this.dispatchAction('openAddUserDialog', payload);\n closeAddUserDialog = (payload?: any) => this.dispatchAction('closeAddUserDialog', payload);\n openDeleteUserDialog = (payload?: ISetDeleteUserDialog) => this.dispatchAction('openDeleteUserDialog', payload);\n closeDeleteUserDialog = (payload?: any) => this.dispatchAction('closeDeleteUserDialog', payload);\n\n // API Token Actions\n setApiTokensLoader = (payload: ApiStateIndicator) => this.dispatchAction('setApiTokensLoader', payload);\n setApiTokensError = (payload: ApiStateIndicator) => this.dispatchAction('setApiTokensError', payload);\n setApiTokensState = (state: Partial<ApiTokensState>) => this.dispatchAction('setApiTokensState', state);\n resetApiTokensState = () => this.dispatchAction('resetApiTokensState');\n loadApiTokens = (payload?: WithSilentLoad<WithCallback>) => this.dispatchAction('loadApiTokens', payload);\n initApiTokensData = (payload: ApiTokenType) => this.dispatchAction('initApiTokensData', payload);\n addTenantApiToken = (payload: AddTenantApiTokenPayload) => this.dispatchAction('addTenantApiToken', payload);\n addUserApiToken = (payload: AddUserApiTokenPayload) => this.dispatchAction('addUserApiToken', payload);\n deleteUserApiToken = (payload: string) => this.dispatchAction('deleteUserApiToken', payload);\n deleteTenantApiToken = (payload: string) => this.dispatchAction('deleteTenantApiToken', payload);\n\n // Security Policy Actions\n setSecurityPolicyState = (state: Partial<SecurityPolicyState>) =>\n this.dispatchAction('setSecurityPolicyState', state);\n setSecurityPolicyGlobalState = (state: Partial<GlobalPolicyState>) =>\n this.dispatchAction('setSecurityPolicyGlobalState', state);\n setSecurityPolicyPublicState = (state: Partial<PublicPolicyState>) =>\n this.dispatchAction('setSecurityPolicyPublicState', state);\n setSecurityPolicyMfaState = (state: Partial<MfaPolicyState>) =>\n this.dispatchAction('setSecurityPolicyMfaState', state);\n setSecurityPolicyLockoutState = (state: Partial<LockoutPolicyState>) =>\n this.dispatchAction('setSecurityPolicyLockoutState', state);\n setSecurityPolicyCaptchaState = (state: Partial<CaptchaPolicyState>) =>\n this.dispatchAction('setSecurityPolicyCaptchaState', state);\n setSecurityPolicyPasswordHistoryState = (state: Partial<PasswordHistoryPolicyState>) =>\n this.dispatchAction('setSecurityPolicyPasswordHistoryState', state);\n resetSecurityPolicyState = () => this.dispatchAction('resetSecurityPolicyState');\n setSecurityPolicyPasswordState = (state: Partial<PasswordPolicyState>) =>\n this.dispatchAction('setSecurityPolicyPasswordState', state);\n loadSecurityPolicy = () => this.dispatchAction('loadSecurityPolicy');\n loadPublicSecurityPolicy = () => this.dispatchAction('loadPublicSecurityPolicy');\n loadVendorPasswordConfig = () => this.dispatchAction('loadVendorPasswordConfig');\n loadSecurityPolicyMfa = () => this.dispatchAction('loadSecurityPolicyMfa');\n saveSecurityPolicyMfa = (payload: SaveSecurityPolicyMfaPayload) =>\n this.dispatchAction('saveSecurityPolicyMfa', payload);\n loadSecurityPolicyLockout = () => this.dispatchAction('loadSecurityPolicyLockout');\n saveSecurityPolicyLockout = (payload: SaveSecurityPolicyLockoutPayload) =>\n this.dispatchAction('saveSecurityPolicyLockout', payload);\n loadSecurityPolicyCaptcha = () => this.dispatchAction('loadSecurityPolicyCaptcha');\n loadSecurityPolicyPasswordHistory = () => this.dispatchAction('loadSecurityPolicyPasswordHistory');\n saveSecurityPolicyPasswordHistory = (payload: SaveSecurityPolicyPasswordHistoryPayload) =>\n this.dispatchAction('saveSecurityPolicyPasswordHistory', payload);\n\n // Account Settings Actions\n setAccountSettingsState = (state: Partial<AccountSettingsState>) =>\n this.dispatchAction('setAccountSettingsState', state);\n resetAccountSettingsState = () => this.dispatchAction('resetAccountSettingsState');\n loadAccountSettings = (payload?: WithCallback<WithSilentLoad<{}>>) =>\n this.dispatchAction('loadAccountSettings', payload);\n saveAccountSettings = (payload: WithCallback<ISettingsResponse, ISettingsResponse>) =>\n this.dispatchAction('saveAccountSettings', payload);\n\n // Tenants Actions\n setTenantsState = (state: Partial<TenantsState>) => this.dispatchAction('setTenantsState', state);\n resetTenantsState = () => this.dispatchAction('resetTenantsState');\n switchTenant = (payload: WithCallback<ISwitchTenant>) => this.dispatchAction('switchTenant', payload);\n loadTenants = (payload?: WithCallback<{}, ITenantsResponse[]>) => this.dispatchAction('loadTenants', payload);\n\n // Roles Actions\n setRolesState = (state: RolesState) => this.dispatchAction('setRolesState', state);\n resetRolesState = () => this.dispatchAction('resetRolesState');\n loadRolesAndPermissions = (payload?: WithSilentLoad<{}>) => this.dispatchAction('loadRolesAndPermissions', payload);\n addRole = (payload: WithCallback<IAddRole, IRole>) => this.dispatchAction('addRole', payload);\n updateRole = (payload: WithCallback<IUpdateRole, IRole>) => this.dispatchAction('updateRole', payload);\n deleteRole = (payload: WithCallback<IDeleteRole>) => this.dispatchAction('deleteRole', payload);\n attachPermissionsToRole = (payload: WithCallback<IAttachPermissionsToRole, IRole>) =>\n this.dispatchAction('attachPermissionsToRole', payload);\n attachPermissionToRoles = (\n payload: WithCallback<{\n permissionId: string;\n roleIds: string[];\n },\n IRolePermission>,\n ) => this.dispatchAction('attachPermissionToRoles', payload);\n}\n","import { Component, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';\nimport { FronteggAppService } from './frontegg-app.service';\n\n@Component({\n selector: 'frontegg-app',\n template: `<div *ngIf=\"!loading && !isAuthRoute\">\n <ng-content></ng-content>\n </div>`,\n})\nexport class FronteggAppComponent implements OnInit, OnDestroy {\n name: string;\n loading: boolean;\n isAuthRoute: boolean;\n\n constructor(private fronteggAppService: FronteggAppService, private cdr: ChangeDetectorRef) {\n this.name = 'FronteggApp';\n this.loading = false;\n this.isAuthRoute = false;\n }\n\n ngOnDestroy(): void {\n this.fronteggAppService.fronteggApp.showAdminPortal()\n }\n\n ngOnInit(): void {\n this.fronteggAppService.isLoading$.subscribe((loading) => {\n this.loading = loading\n this.cdr.detectChanges();\n })\n this.fronteggAppService.isAuthRoute$.subscribe((isAuthRoute) => {\n this.isAuthRoute = isAuthRoute\n this.cdr.detectChanges();\n })\n }\n\n}\n","import { ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { FronteggAppService } from './frontegg-app.service';\nimport { NavigationStart, Router } from '@angular/router';\n\n@Component({\n selector: 'frontegg-router',\n template: `\n <div *ngIf='!loading && !isAuthRoute'>\n <router-outlet></router-outlet>\n </div>`,\n})\nexport class FronteggRouterComponent implements OnInit {\n name: string;\n loading: boolean;\n isAuthRoute: boolean;\n\n constructor(private fronteggAppService: FronteggAppService, private router: Router, private cdr: ChangeDetectorRef) {\n this.name = 'FronteggRouter';\n this.loading = false;\n this.isAuthRoute = false;\n\n this.router.events.subscribe((event) => {\n if (event instanceof NavigationStart) {\n if (!!event.url && (/%[0-9A-F]{2}/i).test(event.url)) {\n this.router.navigateByUrl(decodeURIComponent(event.url));\n }\n }\n });\n }\n\n\n ngOnInit(): void {\n this.fronteggAppService.isLoading$.subscribe((loading) => {\n this.loading = loading;\n this.cdr?.detectChanges();\n });\n this.fronteggAppService.isAuthRoute$.subscribe((isAuthRoute) => {\n this.isAuthRoute = isAuthRoute;\n this.cdr?.detectChanges();\n });\n }\n}\n","import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';\nimport { Injectable, NgZone } from '@angular/core';\nimport { take } from 'rxjs/operators';\nimport { FronteggAppService } from './frontegg-app.service';\nimport { FronteggAppAuthService } from './frontegg-app-auth.service';\n\n@Injectable()\nexport class FronteggAuthGuard implements CanActivate {\n constructor(\n private fronteggAppService: FronteggAppService,\n private fronteggAppAuthService: FronteggAppAuthService,\n private router: Router,\n private zone: NgZone) {\n }\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {\n return new Promise((resolve) => {\n this.fronteggAppAuthService.isLoading$\n .subscribe((isLoading) => {\n if (isLoading) {\n return;\n }\n\n this.fronteggAppAuthService.isAuthenticated$.pipe(take(1))\n .subscribe((isAuthenticated) => {\n if (isAuthenticated != null) {\n resolve(isAuthenticated);\n if (!isAuthenticated) {\n const routes = this.fronteggAppService.getAuthPageRoutes();\n this.zone.run(() => {\n const loginUrl = routes.loginUrl || '/';\n this.router.navigateByUrl(`${loginUrl}?redirectUrl=${encodeURIComponent(state.url)}`);\n });\n }\n }\n });\n });\n });\n }\n}\n","import { FronteggAuthGuard } from './frontegg-app-guards.guard';\nimport { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FronteggAppComponent } from './frontegg-app.component';\nimport { FE_PROVIDER_CONFIG } from \"./constants\";\nimport { FronteggAppOptions } from '@frontegg/types';\nimport { FronteggAppService } from './frontegg-app.service';\nimport { FronteggAppAuthService } from './frontegg-app-auth.service';\nimport { RouterModule } from '@angular/router';\nimport { FronteggRouterComponent } from './frontegg-router.component';\n\n@NgModule({\n declarations: [FronteggAppComponent, FronteggRouterComponent],\n imports: [CommonModule, RouterModule],\n exports: [FronteggAppComponent, FronteggRouterComponent]\n})\nexport class FronteggAppModule {\n public constructor() { }\n static forRoot(config: FronteggAppOptions): ModuleWithProviders<FronteggAppModule> {\n\n return {\n ngModule: FronteggAppModule,\n providers: [\n FronteggAppService,\n FronteggAuthGuard,\n FronteggAppAuthService,\n {\n provide: FE_PROVIDER_CONFIG,\n useValue: config\n }\n ],\n };\n }\n}\n"]}
@@ -193,6 +193,7 @@ export class FronteggAppAuthService {
193
193
  { field: 'activateState', subject: this.activateStateSubject$ },
194
194
  { field: 'apiTokensState', subject: this.apiTokensStateSubject$ },
195
195
  { field: 'forgotPasswordState', subject: this.forgotPasswordStateSubject$ },
196
+ { field: 'tenantsState', subject: this.tenantsStateSubject$ },
196
197
  { field: 'loginState', subject: this.loginStateSubject$ },
197
198
  { field: 'mfaState', subject: this.mfaStateSubject$ },
198
199
  { field: 'profileState', subject: this.profileStateSubject$ },
@@ -234,4 +235,4 @@ FronteggAppAuthService.decorators = [
234
235
  FronteggAppAuthService.ctorParameters = () => [
235
236
  { type: FronteggAppService }
236
237
  ];
237
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbnRlZ2ctYXBwLWF1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Zyb250ZWdnLWFwcC9zcmMvbGliL2Zyb250ZWdnLWFwcC1hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXZDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sYUFBYSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUF1Q0wsYUFBYSxHQUdkLE1BQU0sdUJBQXVCLENBQUM7OztBQXNEL0IscUNBQXFDO0FBSXJDLE1BQU0sT0FBTyxzQkFBc0I7SUE2Q2pDLFlBQW9CLGtCQUFzQztRQUF0Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBNUNsRCxrQ0FBNkIsR0FBRyxJQUFJLGVBQWUsQ0FBNEMsSUFBSSxDQUFDLENBQUM7UUFDckcsaUNBQTRCLEdBQUcsSUFBSSxlQUFlLENBQTJDLElBQUksQ0FBQyxDQUFDO1FBQ25HLDBCQUFxQixHQUFHLElBQUksZUFBZSxDQUFvQyxJQUFJLENBQUMsQ0FBQztRQUNyRiwyQkFBc0IsR0FBRyxJQUFJLGVBQWUsQ0FBcUMsSUFBSSxDQUFDLENBQUM7UUFDdkYsZ0NBQTJCLEdBQUcsSUFBSSxlQUFlLENBQTBDLElBQUksQ0FBQyxDQUFDO1FBQ2pHLHVCQUFrQixHQUFHLElBQUksZUFBZSxDQUFpQyxJQUFJLENBQUMsQ0FBQztRQUMvRSxxQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBK0IsSUFBSSxDQUFDLENBQUM7UUFDM0UseUJBQW9CLEdBQUcsSUFBSSxlQUFlLENBQW1DLElBQUksQ0FBQyxDQUFDO1FBQ25GLHVCQUFrQixHQUFHLElBQUksZUFBZSxDQUFpQyxJ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UyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO3dCQUNsRixZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7cUJBQzFEO2lCQUNGO2dCQUNELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUM3RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUNsRDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGNBQWMsQ0FBQyxJQUFZLEVBQUUsT0FBYTtRQUNoRCxNQUFNLEtBQUssR0FBUSxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztRQUM3RCxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsYUFBYSxJQUFJLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQzs7OztZQXZGRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQXJHUSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEZyb250ZWdnQXBwU2VydmljZSB9IGZyb20gJy4vZnJvbnRlZ2ctYXBwLnNlcnZpY2UnO1xuaW1wb3J0IEZhc3REZWVwRXF1YWwgZnJvbSAnZmFzdC1kZWVwLWVxdWFsJztcbmltcG9ydCB7XG4gIFJvbGVzU3RhdGUsXG4gIFRlbmFudHNTdGF0ZSxcbiAgQWNjb3VudFNldHRpbmdzU3RhdGUsXG4gIFNhdmVTZWN1cml0eVBvbGljeVBhc3N3b3JkSGlzdG9yeVBheWxvYWQsXG4gIFNhdmVTZWN1cml0eVBvbGljeUxvY2tvdXRQYXlsb2FkLFxuICBTYXZlU2VjdXJpdHlQb2xpY3lNZmFQYXlsb2FkLFxuICBQYXNzd29yZFBvbGljeVN0YXRlLFxuICBQYXNzd29yZEhpc3RvcnlQb2xpY3lTdGF0ZSxcbiAgTWZhUG9saWN5U3RhdGUsXG4gIENhcHRjaGFQb2xpY3lTdGF0ZSxcbiAgTG9ja291dFBvbGljeVN0YXRlLFxuICBQdWJsaWNQb2xpY3lTdGF0ZSxcbiAgR2xvYmFsUG9saWN5U3RhdGUsXG4gIFNlY3VyaXR5UG9saWN5U3RhdGUsXG4gIEFkZFVzZXJBcGlUb2tlblBheWxvYWQsXG4gIEFkZFRlbmFudEFwaVRva2VuUGF5bG9hZCxcbiAgQXBpVG9rZW5UeXBlLFxuICBBcGlUb2tlbnNTdGF0ZSxcbiAgQXBpU3RhdGVJbmRpY2F0b3IsXG4gIElTZXREZWxldGVVc2VyRGlhbG9nLFxuICBJU2V0QWRkVXNlckRpYWxvZyxcbiAgTG9hZFJvbGVzQW5kUGVybWlzc2lvbnNQYXlsb2FkLFxuICBUZWFtU3RhdGUsXG4gIFRlYW1TdGF0ZUluZGljYXRvcixcbiAgTUZBU3RhdGUsXG4gIFNhdmVTU09Db25maWd1cmF0aW9uUGF5bG9hZCxcbiAgU1NPU3RhdGUsXG4gIFByb2ZpbGVTdGF0ZSxcbiAgU2F2ZVNTT0NvbmZpZ3VyYXRpb25GaWxlUGF5bG9hZCxcbiAgVXBkYXRlU1NPQXV0aG9yaXphdGlvblJvbGVzUGF5bG9hZCxcbiAgRGVsZXRlU2FtbEdyb3VwUGF5bG9hZCxcbiAgQ3JlYXRlU2FtbEdyb3VwUGF5bG9hZCxcbiAgU2F2ZVByb2ZpbGVQYXlsb2FkLFxuICBTaWduVXBTdGF0ZSxcbiAgRm9yZ290UGFzc3dvcmRTdGF0ZSxcbiAgQWNjZXB0SW52aXRhdGlvblN0YXRlLFxuICBBdXRoU3RhdGUsXG4gIFVzZXIsXG4gIGF1dGhTdG9yZU5hbWUsXG4gIExvZ2luU3RhdGUsXG4gIEFjdGl2YXRlQWNjb3VudFN0cmF0ZWd5U3RhdGUsXG59IGZyb20gJ0Bmcm9udGVnZy9yZWR1eC1zdG9yZSc7XG5pbXBvcnQge1xuICBJTG9naW4sXG4gIElMb2dpbldpdGhNZmEsXG4gIElQb3N0TG9naW4sXG4gIElQcmVMb2dpbixcbiAgSVJlY292ZXJNRkFUb2tlbixcbiAgSUFjdGl2YXRlQWNjb3VudCxcbiAgSUxvZ2luVmlhU29jaWFsTG9naW4sXG4gIElTZXRTb2NpYWxMb2dpbkVycm9yLFxuICBJUmVzZW5kQWN0aXZhdGlvbkVtYWlsLFxuICBJR2V0QWN0aXZhdGVBY2NvdW50U3RyYXRlZ3ksXG4gIElHZXRBY3RpdmF0ZUFjY291bnRTdHJhdGVneVJlc3BvbnNlLFxuICBJQWNjZXB0SW52aXRhdGlvbixcbiAgSUZvcmdvdFBhc3N3b3JkLFxuICBJUmVzZXRQYXNzd29yZCxcbiAgSUdldFVzZXJQYXNzd29yZENvbmZpZyxcbiAgSVNpZ25VcFVzZXIsXG4gIElDaGFuZ2VQYXNzd29yZCxcbiAgSU9pZGNQb3N0TG9naW4sXG4gIElWZXJpZnlNZmEsXG4gIElEaXNhYmxlTWZhLFxuICBJTG9hZFVzZXJzLFxuICBJVGVhbVVzZXIsXG4gIElBZGRVc2VyLFxuICBJVXBkYXRlVXNlcixcbiAgSURlbGV0ZVVzZXIsXG4gIElSZXNlbmRBY3RpdmF0aW9uTGluayxcbiAgSVNldHRpbmdzUmVzcG9uc2UsXG4gIElTd2l0Y2hUZW5hbnQsXG4gIElUZW5hbnRzUmVzcG9uc2UsXG4gIElBZGRSb2xlLFxuICBJUm9sZSxcbiAgSVVwZGF0ZVJvbGUsXG4gIElEZWxldGVSb2xlLFxuICBJQXR0YWNoUGVybWlzc2lvbnNUb1JvbGUsXG4gIElSZXNlbmRJbnZpdGF0aW9uTGluayxcbiAgSVJvbGVQZXJtaXNzaW9uLFxufSBmcm9tICdAZnJvbnRlZ2cvcmVzdC1hcGknO1xuaW1wb3J0IHsgQWN0aXZhdGVBY2NvdW50U3RhdGUsIFNvY2lhbExvZ2luU3RhdGUgfSBmcm9tICdAZnJvbnRlZ2cvcmVkdXgtc3RvcmUvYXV0aCc7XG5cbmludGVyZmFjZSBBdXRoU3ViU3RhdGVzIHtcbiAgZmllbGQ6IFBhcnRpYWw8a2V5b2YgQXV0aFN0YXRlPjtcbiAgc3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGFueT47XG59XG5cbmV4cG9ydCB0eXBlIFdpdGhDYWxsYmFjazxUID0ge30sIFIgPSBib29sZWFuPiA9IFQgJiB7XG4gIGNhbGxiYWNrPzogKGRhdGE6IFIgfCBudWxsLCBlcnJvcj86IHN0cmluZykgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIFdpdGhTaWxlbnRMb2FkPFQ+ID0gVCAmIHtcbiAgc2lsZW50TG9hZGluZz86IGJvb2xlYW47XG59O1xuXG4vLyBub2luc3BlY3Rpb24gSlNVbnVzZWRHbG9iYWxTeW1ib2xzXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRnJvbnRlZ2dBcHBBdXRoU2VydmljZSB7XG4gIHByaXZhdGUgYWNjZXB0SW52aXRhdGlvblN0YXRlU3ViamVjdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF1dGhTdGF0ZVsnYWNjZXB0SW52aXRhdGlvblN0YXRlJ10gfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSBhY2NvdW50U2V0dGluZ3NTdGF0ZVN1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBdXRoU3RhdGVbJ2FjY291bnRTZXR0aW5nc1N0YXRlJ10gfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSBhY3RpdmF0ZVN0YXRlU3ViamVjdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF1dGhTdGF0ZVsnYWN0aXZhdGVTdGF0ZSddIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgYXBpVG9rZW5zU3RhdGVTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlWydhcGlUb2tlbnNTdGF0ZSddIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgZm9yZ290UGFzc3dvcmRTdGF0ZVN1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBdXRoU3RhdGVbJ2ZvcmdvdFBhc3N3b3JkU3RhdGUnXSB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIGxvZ2luU3RhdGVTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlWydsb2dpblN0YXRlJ10gfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSBtZmFTdGF0ZVN1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBdXRoU3RhdGVbJ21mYVN0YXRlJ10gfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSBwcm9maWxlU3RhdGVTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlWydwcm9maWxlU3RhdGUnXSB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJvbGVzU3RhdGVTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlWydyb2xlc1N0YXRlJ10gfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByb3V0ZXNTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlWydyb3V0ZXMnXSB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHNlY3VyaXR5UG9saWN5U3RhdGVTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlWydzZWN1cml0eVBvbGljeVN0YXRlJ10gfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSBzaWduVXBTdGF0ZVN1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBdXRoU3RhdGVbJ3NpZ25VcFN0YXRlJ10gfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSBzb2NpYWxMb2dpblN0YXRlU3ViamVjdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF1dGhTdGF0ZVsnc29jaWFsTG9naW5TdGF0ZSddIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgc3NvU3RhdGVTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlWydzc29TdGF0ZSddIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgdGVhbVN0YXRlU3ViamVjdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF1dGhTdGF0ZVsndGVhbVN0YXRlJ10gfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSB0ZW5hbnRzU3RhdGVTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlWyd0ZW5hbnRzU3RhdGUnXSB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHVzZXJTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlWyd1c2VyJ10gfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSBpc0F1dGhlbnRpY2F0ZWRTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlWydpc0F1dGhlbnRpY2F0ZWQnXT4oZmFsc2UpO1xuICBwcml2YXRlIGlzTG9hZGluZ1N1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBdXRoU3RhdGVbJ2lzTG9hZGluZyddPih0cnVlKTtcbiAgcHJpdmF0ZSBpc1NTT0F1dGhTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlWydpc1NTT0F1dGgnXT4oZmFsc2UpO1xuICBwcml2YXRlIHNzb0FDU1N1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBdXRoU3RhdGVbJ3Nzb0FDUyddPignJyk7XG5cbiAgcmVhZG9ubHkgYWNjZXB0SW52aXRhdGlvblN0YXRlJCA9IHRoaXMuYWNjZXB0SW52aXRhdGlvblN0YXRlU3ViamVjdCQuYXNPYnNlcnZhYmxlKCk7XG4gIHJlYWRvbmx5IGFjY291bnRTZXR0aW5nc1N0YXRlJCA9IHRoaXMuYWNjb3VudFNldHRpbmdzU3RhdGVTdWJqZWN0JC5hc09ic2VydmFibGUoKTtcbiAgcmVhZG9ubHkgYWN0aXZhdGVTdGF0ZSQgPSB0aGlzLmFjdGl2YXRlU3RhdGVTdWJqZWN0JC5hc09ic2VydmFibGUoKTtcbiAgcmVhZG9ubHkgYXBpVG9rZW5zU3RhdGUkID0gdGhpcy5hcGlUb2tlbnNTdGF0ZVN1YmplY3QkLmFzT2JzZXJ2YWJsZSgpO1xuICByZWFkb25seSBmb3Jnb3RQYXNzd29yZFN0YXRlJCA9IHRoaXMuZm9yZ290UGFzc3dvcmRTdGF0ZVN1YmplY3QkLmFzT2JzZXJ2YWJsZSgpO1xuICByZWFkb25seSBsb2dpblN0YXRlJCA9IHRoaXMubG9naW5TdGF0ZVN1YmplY3QkLmFzT2JzZXJ2YWJsZSgpO1xuICByZWFkb25seSBtZmFTdGF0ZSQgPSB0aGlzLm1mYVN0YXRlU3ViamVjdCQuYXNPYnNlcnZhYmxlKCk7XG4gIHJlYWRvbmx5IHByb2ZpbGVTdGF0ZSQgPSB0aGlzLnByb2ZpbGVTdGF0ZVN1YmplY3QkLmFzT2JzZXJ2YWJsZSgpO1xuICByZWFkb25seSByb2xlc1N0YXRlJCA9IHRoaXMucm9sZXNTdGF0ZVN1YmplY3QkLmFzT2JzZXJ2YWJsZSgpO1xuICByZWFkb25seSByb3V0ZXNTdGF0ZSQgPSB0aGlzLnJvdXRlc1N1YmplY3QkLmFzT2JzZXJ2YWJsZSgpO1xuICByZWFkb25seSBzZWN1cml0eVBvbGljeVN0YXRlJCA9IHRoaXMuc2VjdXJpdHlQb2xpY3lTdGF0ZVN1YmplY3QkLmFzT2JzZXJ2YWJsZSgpO1xuICByZWFkb25seSBzaWduVXBTdGF0ZSQgPSB0aGlzLnNpZ25VcFN0YXRlU3ViamVjdCQuYXNPYnNlcnZhYmxlKCk7XG4gIHJlYWRvbmx5IHNvY2lhbExvZ2luU3RhdGUkID0gdGhpcy5zb2NpYWxMb2dpblN0YXRlU3ViamVjdCQuYXNPYnNlcnZhYmxlKCk7XG4gIHJlYWRvbmx5IHNzb1N0YXRlJCA9IHRoaXMuc3NvU3RhdGVTdWJqZWN0JC5hc09ic2VydmFibGUoKTtcbiAgcmVhZG9ubHkgdGVhbVN0YXRlJCA9IHRoaXMudGVhbVN0YXRlU3ViamVjdCQuYXNPYnNlcnZhYmxlKCk7XG4gIHJlYWRvbmx5IHRlbmFudHNTdGF0ZSQgPSB0aGlzLnRlbmFudHNTdGF0ZVN1YmplY3QkLmFzT2JzZXJ2YWJsZSgpO1xuICByZWFkb25seSB1c2VyU3RhdGUkID0gdGhpcy51c2VyU3ViamVjdCQuYXNPYnNlcnZhYmxlKCk7XG4gIHJlYWRvbmx5IGlzQXV0aGVudGljYXRlZCQgPSB0aGlzLmlzQXV0aGVudGljYXRlZFN1YmplY3QkLmFzT2JzZXJ2YWJsZSgpO1xuICByZWFkb25seSBpc0xvYWRpbmckID0gdGhpcy5pc0xvYWRpbmdTdWJqZWN0JC5hc09ic2VydmFibGUoKTtcbiAgcmVhZG9ubHkgaXNTU09BdXRoJCA9IHRoaXMuaXNTU09BdXRoU3ViamVjdCQuYXNPYnNlcnZhYmxlKCk7XG4gIHJlYWRvbmx5IHNzb0FDUyQgPSB0aGlzLnNzb0FDU1N1YmplY3QkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZnJvbnRlZ2dBcHBTZXJ2aWNlOiBGcm9udGVnZ0FwcFNlcnZpY2UpIHtcbiAgICBjb25zdCBhdXRoU3ViU3RhdGVzOiBBdXRoU3ViU3RhdGVzW10gPSBbXG4gICAgICB7IGZpZWxkOiAnYWNjZXB0SW52aXRhdGlvblN0YXRlJywgc3ViamVjdDogdGhpcy5hY2NlcHRJbnZpdGF0aW9uU3RhdGVTdWJqZWN0JCB9LFxuICAgICAgeyBmaWVsZDogJ2FjY291bnRTZXR0aW5nc1N0YXRlJywgc3ViamVjdDogdGhpcy5hY2NvdW50U2V0dGluZ3NTdGF0ZVN1YmplY3QkIH0sXG4gICAgICB7IGZpZWxkOiAnYWN0aXZhdGVTdGF0ZScsIHN1YmplY3Q6IHRoaXMuYWN0aXZhdGVTdGF0ZVN1YmplY3QkIH0sXG4gICAgICB7IGZpZWxkOiAnYXBpVG9rZW5zU3RhdGUnLCBzdWJqZWN0OiB0aGlzLmFwaVRva2Vuc1N0YXRlU3ViamVjdCQgfSxcbiAgICAgIHsgZmllbGQ6ICdmb3Jnb3RQYXNzd29yZFN0YXRlJywgc3ViamVjdDogdGhpcy5mb3Jnb3RQYXNzd29yZFN0YXRlU3ViamVjdCQgfSxcbiAgICAgIHsgZmllbGQ6ICdsb2dpblN0YXRlJywgc3ViamVjdDogdGhpcy5sb2dpblN0YXRlU3ViamVjdCQgfSxcbiAgICAgIHsgZmllbGQ6ICdtZmFTdGF0ZScsIHN1YmplY3Q6IHRoaXMubWZhU3RhdGVTdWJqZWN0JCB9LFxuICAgICAgeyBmaWVsZDogJ3Byb2ZpbGVTdGF0ZScsIHN1YmplY3Q6IHRoaXMucHJvZmlsZVN0YXRlU3ViamVjdCQgfSxcbiAgICAgIHsgZmllbGQ6ICdyb2xlc1N0YXRlJywgc3ViamVjdDogdGhpcy5yb2xlc1N0YXRlU3ViamVjdCQgfSxcbiAgICAgIHsgZmllbGQ6ICdyb3V0ZXMnLCBzdWJqZWN0OiB0aGlzLnJvdXRlc1N1YmplY3QkIH0sXG4gICAgICB7IGZpZWxkOiAnc2VjdXJpdHlQb2xpY3lTdGF0ZScsIHN1YmplY3Q6IHRoaXMuc2VjdXJpdHlQb2xpY3lTdGF0ZVN1YmplY3QkIH0sXG4gICAgICB7IGZpZWxkOiAnc2lnblVwU3RhdGUnLCBzdWJqZWN0OiB0aGlzLnNpZ25VcFN0YXRlU3ViamVjdCQgfSxcbiAgICAgIHsgZmllbGQ6ICdzb2NpYWxMb2dpblN0YXRlJywgc3ViamVjdDogdGhpcy5zb2NpYWxMb2dpblN0YXRlU3ViamVjdCQgfSxcbiAgICAgIHsgZmllbGQ6ICdzc29TdGF0ZScsIHN1YmplY3Q6IHRoaXMuc3NvU3RhdGVTdWJqZWN0JCB9LFxuICAgICAgeyBmaWVsZDogJ3RlYW1TdGF0ZScsIHN1YmplY3Q6IHRoaXMudGVhbVN0YXRlU3ViamVjdCQgfSxcbiAgICAgIHsgZmllbGQ6ICd1c2VyJywgc3ViamVjdDogdGhpcy51c2VyU3ViamVjdCQgfSxcbiAgICAgIHsgZmllbGQ6ICdpc1NTT0F1dGgnLCBzdWJqZWN0OiB0aGlzLmlzU1NPQXV0aFN1YmplY3QkIH0sXG4gICAgICB7IGZpZWxkOiAnc3NvQUNTJywgc3ViamVjdDogdGhpcy5zc29BQ1NTdWJqZWN0JCB9LFxuICAgIF07XG5cbiAgICAvLyBNZW1vaXplZCBBdXRoIFN0YXRlXG4gICAgdGhpcy5mcm9udGVnZ0FwcFNlcnZpY2UuZnJvbnRlZ2dBcHBBdXRoU3RhdGUkLnN1YnNjcmliZSgoYXV0aFN0YXRlKSA9PiB7XG4gICAgICBpZiAoYXV0aFN0YXRlICE9IG51bGwpIHtcbiAgICAgICAgZm9yIChjb25zdCBhdXRoU3ViU3RhdGUgb2YgYXV0aFN1YlN0YXRlcykge1xuICAgICAgICAgIGlmICghRmFzdERlZXBFcXVhbChhdXRoU3ViU3RhdGUuc3ViamVjdC5nZXRWYWx1ZSgpLCBhdXRoU3RhdGVbYXV0aFN1YlN0YXRlLmZpZWxkXSkpIHtcbiAgICAgICAgICAgIGF1dGhTdWJTdGF0ZS5zdWJqZWN0Lm5leHQoYXV0aFN0YXRlW2F1dGhTdWJTdGF0ZS5maWVsZF0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzQXV0aGVudGljYXRlZFN1YmplY3QkLm5leHQoYXV0aFN0YXRlLmlzQXV0aGVudGljYXRlZCk7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nU3ViamVjdCQubmV4dChhdXRoU3RhdGUuaXNMb2FkaW5nKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZGlzcGF0Y2hBY3Rpb24odHlwZTogc3RyaW5nLCBwYXlsb2FkPzogYW55KTogdm9pZCB7XG4gICAgY29uc3Qgc3RvcmU6IGFueSA9IHRoaXMuZnJvbnRlZ2dBcHBTZXJ2aWNlLmZyb250ZWdnQXBwLnN0b3JlO1xuICAgIHN0b3JlLmRpc3BhdGNoKHsgdHlwZTogYCR7YXV0aFN0b3JlTmFtZX0vJHt0eXBlfWAsIHBheWxvYWQgfSk7XG4gIH1cblxuICAvLyBSb290IEFjdGlvbnNcbiAgc2V0U3RhdGUgPSAoc3RhdGU6IFBhcnRpYWw8QXV0aFN0YXRlPikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0U3RhdGUnLCBzdGF0ZSk7XG4gIHJlc2V0U3RhdGUgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXNldFN0YXRlJyk7XG4gIHNldFVzZXIgPSAodXNlcjogVXNlcikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0VXNlcicsIHVzZXIpO1xuXG4gIC8vIExvZ2luIEFjdGlvbnNcbiAgc2V0TG9naW5TdGF0ZSA9IChzdGF0ZTogUGFydGlhbDxMb2dpblN0YXRlPikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0TG9naW5TdGF0ZScsIHN0YXRlKTtcbiAgcmVzZXRMb2dpblN0YXRlID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbigncmVzZXRMb2dpblN0YXRlJyk7XG4gIHJlcXVlc3RBdXRob3JpemUgPSAoZmlyc3RUaW1lPzogYm9vbGVhbikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbigncmVxdWVzdEF1dGhvcml6ZScsIGZpcnN0VGltZSk7XG4gIHByZUxvZ2luID0gKHBheWxvYWQ6IElQcmVMb2dpbikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbigncHJlTG9naW4nLCBwYXlsb2FkKTtcbiAgcG9zdExvZ2luID0gKHBheWxvYWQ6IElQb3N0TG9naW4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3Bvc3RMb2dpbicsIHBheWxvYWQpO1xuICBsb2dpbiA9IChwYXlsb2FkOiBJTG9naW4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2xvZ2luJywgcGF5bG9hZCk7XG4gIGxvZ2luV2l0aE1mYSA9IChwYXlsb2FkOiBXaXRoQ2FsbGJhY2s8SUxvZ2luV2l0aE1mYT4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2xvZ2luV2l0aE1mYScsIHBheWxvYWQpO1xuICByZWNvdmVyTWZhID0gKHBheWxvYWQ6IElSZWNvdmVyTUZBVG9rZW4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3JlY292ZXJNZmEnLCBwYXlsb2FkKTtcbiAgbG9nb3V0ID0gKGNhbGxiYWNrPzogKCkgPT4gdm9pZCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignbG9nb3V0JywgY2FsbGJhY2spO1xuICBzaWxlbnRMb2dvdXQgPSAoY2FsbGJhY2s/OiAoKSA9PiB2b2lkKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzaWxlbnRMb2dvdXQnLCBjYWxsYmFjayk7XG4gIGNoZWNrSWZBbGxvd1RvUmVtZW1iZXJNZmFEZXZpY2UgPSAocGF5bG9hZDogeyBtZmFUb2tlbjogc3RyaW5nIH0pID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbignY2hlY2tJZkFsbG93VG9SZW1lbWJlck1mYURldmljZScsIHBheWxvYWQpO1xuXG4gIC8vIFNvY2lhbCBMb2dpbnMgQWN0aW9uc1xuICBzZXRTb2NpYWxMb2dpbnNTdGF0ZSA9IChzdGF0ZTogUGFydGlhbDxTb2NpYWxMb2dpblN0YXRlPikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0U29jaWFsTG9naW5zU3RhdGUnLCBzdGF0ZSk7XG4gIHJlc2V0U29jaWFsTG9naW5zU3RhdGUgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXNldFNvY2lhbExvZ2luc1N0YXRlJyk7XG4gIGxvYWRTb2NpYWxMb2dpbnNDb25maWd1cmF0aW9uID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignbG9hZFNvY2lhbExvZ2luc0NvbmZpZ3VyYXRpb24nKTtcbiAgbG9naW5WaWFTb2NpYWxMb2dpbiA9IChwYXlsb2FkOiBJTG9naW5WaWFTb2NpYWxMb2dpbikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignbG9naW5WaWFTb2NpYWxMb2dpbicsIHBheWxvYWQpO1xuICBzZXRTb2NpYWxMb2dpbkVycm9yID0gKHBheWxvYWQ6IElTZXRTb2NpYWxMb2dpbkVycm9yKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzZXRTb2NpYWxMb2dpbkVycm9yJywgcGF5bG9hZCk7XG5cbiAgLy8gQWN0aXZhdGUgQWNjb3VudCBBY3Rpb25zXG4gIHNldEFjdGl2YXRlU3RhdGUgPSAoc3RhdGU6IFBhcnRpYWw8QWN0aXZhdGVBY2NvdW50U3RhdGU+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzZXRBY3RpdmF0ZVN0YXRlJywgc3RhdGUpO1xuICByZXNldEFjdGl2YXRlU3RhdGUgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXNldEFjdGl2YXRlU3RhdGUnKTtcbiAgc2V0QWN0aXZhdGVTdHJhdGVneVN0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPEFjdGl2YXRlQWNjb3VudFN0cmF0ZWd5U3RhdGU+KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldEFjdGl2YXRlU3RyYXRlZ3lTdGF0ZScsIHN0YXRlKTtcbiAgYWN0aXZhdGVBY2NvdW50ID0gKHBheWxvYWQ6IElBY3RpdmF0ZUFjY291bnQpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2FjdGl2YXRlQWNjb3VudCcsIHBheWxvYWQpO1xuICByZXNlbmRBY3RpdmF0aW9uRW1haWwgPSAocGF5bG9hZDogSVJlc2VuZEFjdGl2YXRpb25FbWFpbCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbigncmVzZW5kQWN0aXZhdGlvbkVtYWlsJywgcGF5bG9hZCk7XG4gIGdldEFjdGl2YXRlQWNjb3VudFN0cmF0ZWd5ID0gKFxuICAgIHBheWxvYWQ6IFdpdGhDYWxsYmFjazxJR2V0QWN0aXZhdGVBY2NvdW50U3RyYXRlZ3ksIElHZXRBY3RpdmF0ZUFjY291bnRTdHJhdGVneVJlc3BvbnNlPixcbiAgKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdnZXRBY3RpdmF0ZUFjY291bnRTdHJhdGVneScsIHBheWxvYWQpO1xuXG4gIC8vIEFjY2VwdCBJbnZpdGF0aW9uIEFjdGlvbnNcbiAgc2V0QWNjZXB0SW52aXRhdGlvblN0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPEFjY2VwdEludml0YXRpb25TdGF0ZT4pID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0QWNjZXB0SW52aXRhdGlvblN0YXRlJywgc3RhdGUpO1xuICByZXNldEFjY2VwdEludml0YXRpb25TdGF0ZSA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3Jlc2V0QWNjZXB0SW52aXRhdGlvblN0YXRlJyk7XG4gIGFjY2VwdEludml0YXRpb24gPSAocGF5bG9hZDogSUFjY2VwdEludml0YXRpb24pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2FjY2VwdEludml0YXRpb24nLCBwYXlsb2FkKTtcblxuICAvLyBGb3Jnb3QgUGFzc3dvcmQgQWN0aW9uc1xuICBzZXRGb3Jnb3RQYXNzd29yZFN0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPEZvcmdvdFBhc3N3b3JkU3RhdGU+KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldEZvcmdvdFBhc3N3b3JkU3RhdGUnLCBzdGF0ZSk7XG4gIHJlc2V0Rm9yZ290UGFzc3dvcmRTdGF0ZSA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3Jlc2V0Rm9yZ290UGFzc3dvcmRTdGF0ZScpO1xuICBmb3Jnb3RQYXNzd29yZCA9IChwYXlsb2FkOiBJRm9yZ290UGFzc3dvcmQpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2ZvcmdvdFBhc3N3b3JkJywgcGF5bG9hZCk7XG4gIHJlc2V0UGFzc3dvcmQgPSAocGF5bG9hZDogSVJlc2V0UGFzc3dvcmQpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3Jlc2V0UGFzc3dvcmQnLCBwYXlsb2FkKTtcbiAgbG9hZFBhc3N3b3JkQ29uZmlnID0gKHBheWxvYWQ/OiBJR2V0VXNlclBhc3N3b3JkQ29uZmlnKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdsb2FkUGFzc3dvcmRDb25maWcnLCBwYXlsb2FkKTtcblxuICAvLyBTaWduIFVwIEFjdGlvbnNcbiAgc2V0U2lnblVwU3RhdGUgPSAoc3RhdGU6IFBhcnRpYWw8U2lnblVwU3RhdGU+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzZXRTaWduVXBTdGF0ZScsIHN0YXRlKTtcbiAgcmVzZXRTaWduVXBTdGF0ZSA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3Jlc2V0U2lnblVwU3RhdGUnKTtcbiAgc2lnblVwVXNlciA9IChwYXlsb2FkOiBJU2lnblVwVXNlcikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignc2lnblVwVXNlcicsIHBheWxvYWQpO1xuICByZXNldFNpZ25VcFN0YXRlU29mdCA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3Jlc2V0U2lnblVwU3RhdGVTb2Z0Jyk7XG5cbiAgLy8gUHJvZmlsZSBBY3Rpb25zXG4gIHNldFByb2ZpbGVTdGF0ZSA9IChzdGF0ZTogUGFydGlhbDxQcm9maWxlU3RhdGU+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzZXRQcm9maWxlU3RhdGUnLCBzdGF0ZSk7XG4gIHJlc2V0UHJvZmlsZVN0YXRlID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbigncmVzZXRQcm9maWxlU3RhdGUnKTtcbiAgbG9hZFByb2ZpbGUgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdsb2FkUHJvZmlsZScpO1xuICBzYXZlUHJvZmlsZSA9IChwYXlsb2FkOiBTYXZlUHJvZmlsZVBheWxvYWQpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NhdmVQcm9maWxlJywgcGF5bG9hZCk7XG4gIGNoYW5nZVBhc3N3b3JkID0gKHBheWxvYWQ6IFdpdGhDYWxsYmFjazxJQ2hhbmdlUGFzc3dvcmQ+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdjaGFuZ2VQYXNzd29yZCcsIHBheWxvYWQpO1xuXG4gIC8vIFNTTyBhY3Rpb25zXG4gIHNldFNTT1N0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPFNTT1N0YXRlPikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0U1NPU3RhdGUnLCBzdGF0ZSk7XG4gIHJlc2V0U1NPU3RhdGUgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXNldFNTT1N0YXRlJyk7XG4gIGxvYWRTU09Db25maWd1cmF0aW9ucyA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2xvYWRTU09Db25maWd1cmF0aW9ucycpO1xuICBsb2FkU1NPQXV0aG9yaXphdGlvblJvbGVzID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignbG9hZFNTT0F1dGhvcml6YXRpb25Sb2xlcycpO1xuICBzYXZlU1NPQ29uZmlndXJhdGlvbnMgPSAocGF5bG9hZDogU2F2ZVNTT0NvbmZpZ3VyYXRpb25QYXlsb2FkKSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NhdmVTU09Db25maWd1cmF0aW9ucycsIHBheWxvYWQpO1xuICBzYXZlU1NPQ29uZmlndXJhdGlvbnNGaWxlID0gKHBheWxvYWQ6IEZpbGVbXSkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignc2F2ZVNTT0NvbmZpZ3VyYXRpb25zRmlsZScsIHBheWxvYWQpO1xuICBzYXZlU1NPQ29uZmlndXJhdGlvbnNGaWxlV2l0aENhbGxiYWNrID0gKHBheWxvYWQ6IFNhdmVTU09Db25maWd1cmF0aW9uRmlsZVBheWxvYWQpID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc2F2ZVNTT0NvbmZpZ3VyYXRpb25zRmlsZVdpdGhDYWxsYmFjaycsIHBheWxvYWQpO1xuICB2YWxpZGF0ZVNTT0RvbWFpbiA9IChwYXlsb2FkPzogV2l0aENhbGxiYWNrKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCd2YWxpZGF0ZVNTT0RvbWFpbicsIHBheWxvYWQpO1xuICB1cGRhdGVTU09BdXRob3JpemF0aW9uUm9sZXMgPSAocGF5bG9hZDogVXBkYXRlU1NPQXV0aG9yaXphdGlvblJvbGVzUGF5bG9hZCkgPT5cbiAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCd1cGRhdGVTU09BdXRob3JpemF0aW9uUm9sZXMnLCBwYXlsb2FkKTtcbiAgZGVsZXRlU2FtbEdyb3VwID0gKHBheWxvYWQ6IERlbGV0ZVNhbWxHcm91cFBheWxvYWQpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2RlbGV0ZVNhbWxHcm91cCcsIHBheWxvYWQpO1xuICBjcmVhdGVTYW1sR3JvdXAgPSAocGF5bG9hZDogQ3JlYXRlU2FtbEdyb3VwUGF5bG9hZCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignY3JlYXRlU2FtbEdyb3VwJywgcGF5bG9hZCk7XG4gIG9pZGNQb3N0bG9naW4gPSAocGF5bG9hZDogSU9pZGNQb3N0TG9naW4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ29pZGNQb3N0bG9naW4nLCBwYXlsb2FkKTtcblxuICAvLyBNZmEgYWN0aW9uc1xuICBzZXRNZmFTdGF0ZSA9IChzdGF0ZTogUGFydGlhbDxNRkFTdGF0ZT4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldE1mYVN0YXRlJywgc3RhdGUpO1xuICByZXNldE1mYVN0YXRlID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbigncmVzZXRNZmFTdGF0ZScpO1xuICBlbnJvbGxNZmEgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdlbnJvbGxNZmEnKTtcbiAgdmVyaWZ5TWZhID0gKHBheWxvYWQ6IFdpdGhDYWxsYmFjazxJVmVyaWZ5TWZhLCBzdHJpbmcgfCB1bmRlZmluZWQ+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCd2ZXJpZnlNZmEnLCBwYXlsb2FkKTtcbiAgdmVyaWZ5TWZhQWZ0ZXJGb3JjZSA9IChwYXlsb2FkOiBXaXRoQ2FsbGJhY2s8SUxvZ2luV2l0aE1mYSwgc3RyaW5nIHwgdW5kZWZpbmVkPikgPT5cbiAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCd2ZXJpZnlNZmFBZnRlckZvcmNlJywgcGF5bG9hZCk7XG4gIGRpc2FibGVNZmEgPSAocGF5bG9hZDogV2l0aENhbGxiYWNrPElEaXNhYmxlTWZhPikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignZGlzYWJsZU1mYScsIHBheWxvYWQpO1xuXG4gIC8vIFRlYW0gYWN0aW9uc1xuICBzZXRUZWFtTG9hZGVyID0gKHBheWxvYWQ6IFRlYW1TdGF0ZUluZGljYXRvcikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0VGVhbUxvYWRlcicsIHBheWxvYWQpO1xuICBzZXRUZWFtRXJyb3IgPSAocGF5bG9hZDogVGVhbVN0YXRlSW5kaWNhdG9yKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzZXRUZWFtRXJyb3InLCBwYXlsb2FkKTtcbiAgc2V0VGVhbVN0YXRlID0gKHBheWxvYWQ6IFBhcnRpYWw8VGVhbVN0YXRlPikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0VGVhbVN0YXRlJywgcGF5bG9hZCk7XG4gIHJlc2V0VGVhbVN0YXRlID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbigncmVzZXRUZWFtU3RhdGUnKTtcbiAgbG9hZFVzZXJzID0gKHBheWxvYWQ6IFdpdGhDYWxsYmFjazxXaXRoU2lsZW50TG9hZDxJTG9hZFVzZXJzPiwgSVRlYW1Vc2VyW10+KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2xvYWRVc2VycycsIHBheWxvYWQpO1xuICBsb2FkUm9sZXMgPSAocGF5bG9hZD86IExvYWRSb2xlc0FuZFBlcm1pc3Npb25zUGF5bG9hZCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignbG9hZFJvbGVzJywgcGF5bG9hZCk7XG4gIGFkZFVzZXIgPSAocGF5bG9hZDogV2l0aENhbGxiYWNrPElBZGRVc2VyLCBJVGVhbVVzZXI+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdhZGRVc2VyJywgcGF5bG9hZCk7XG4gIHVwZGF0ZVVzZXIgPSAocGF5bG9hZDogV2l0aENhbGxiYWNrPElVcGRhdGVVc2VyLCBJVGVhbVVzZXI+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCd1cGRhdGVVc2VyJywgcGF5bG9hZCk7XG4gIGRlbGV0ZVVzZXIgPSAocGF5bG9hZDogV2l0aENhbGxiYWNrPElEZWxldGVVc2VyPikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignZGVsZXRlVXNlcicsIHBheWxvYWQpO1xuICByZXNlbmRBY3RpdmF0aW9uTGluayA9IChwYXlsb2FkOiBXaXRoQ2FsbGJhY2s8SVJlc2VuZEFjdGl2YXRpb25MaW5rPikgPT5cbiAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXNlbmRBY3RpdmF0aW9uTGluaycsIHBheWxvYWQpO1xuICByZXNlbmRJbnZpdGF0aW9uTGluayA9IChwYXlsb2FkOiBXaXRoQ2FsbGJhY2s8SVJlc2VuZEludml0YXRpb25MaW5rPikgPT5cbiAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXNlbmRJbnZpdGF0aW9uTGluaycsIHBheWxvYWQpO1xuICBvcGVuQWRkVXNlckRpYWxvZyA9IChwYXlsb2FkPzogSVNldEFkZFVzZXJEaWFsb2cpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ29wZW5BZGRVc2VyRGlhbG9nJywgcGF5bG9hZCk7XG4gIGNsb3NlQWRkVXNlckRpYWxvZyA9IChwYXlsb2FkPzogYW55KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdjbG9zZUFkZFVzZXJEaWFsb2cnLCBwYXlsb2FkKTtcbiAgb3BlbkRlbGV0ZVVzZXJEaWFsb2cgPSAocGF5bG9hZD86IElTZXREZWxldGVVc2VyRGlhbG9nKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdvcGVuRGVsZXRlVXNlckRpYWxvZycsIHBheWxvYWQpO1xuICBjbG9zZURlbGV0ZVVzZXJEaWFsb2cgPSAocGF5bG9hZD86IGFueSkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignY2xvc2VEZWxldGVVc2VyRGlhbG9nJywgcGF5bG9hZCk7XG5cbiAgLy8gQVBJIFRva2VuIEFjdGlvbnNcbiAgc2V0QXBpVG9rZW5zTG9hZGVyID0gKHBheWxvYWQ6IEFwaVN0YXRlSW5kaWNhdG9yKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzZXRBcGlUb2tlbnNMb2FkZXInLCBwYXlsb2FkKTtcbiAgc2V0QXBpVG9rZW5zRXJyb3IgPSAocGF5bG9hZDogQXBpU3RhdGVJbmRpY2F0b3IpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldEFwaVRva2Vuc0Vycm9yJywgcGF5bG9hZCk7XG4gIHNldEFwaVRva2Vuc1N0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPEFwaVRva2Vuc1N0YXRlPikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0QXBpVG9rZW5zU3RhdGUnLCBzdGF0ZSk7XG4gIHJlc2V0QXBpVG9rZW5zU3RhdGUgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXNldEFwaVRva2Vuc1N0YXRlJyk7XG4gIGxvYWRBcGlUb2tlbnMgPSAocGF5bG9hZD86IFdpdGhTaWxlbnRMb2FkPFdpdGhDYWxsYmFjaz4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2xvYWRBcGlUb2tlbnMnLCBwYXlsb2FkKTtcbiAgaW5pdEFwaVRva2Vuc0RhdGEgPSAocGF5bG9hZDogQXBpVG9rZW5UeXBlKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdpbml0QXBpVG9rZW5zRGF0YScsIHBheWxvYWQpO1xuICBhZGRUZW5hbnRBcGlUb2tlbiA9IChwYXlsb2FkOiBBZGRUZW5hbnRBcGlUb2tlblBheWxvYWQpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2FkZFRlbmFudEFwaVRva2VuJywgcGF5bG9hZCk7XG4gIGFkZFVzZXJBcGlUb2tlbiA9IChwYXlsb2FkOiBBZGRVc2VyQXBpVG9rZW5QYXlsb2FkKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdhZGRVc2VyQXBpVG9rZW4nLCBwYXlsb2FkKTtcbiAgZGVsZXRlVXNlckFwaVRva2VuID0gKHBheWxvYWQ6IHN0cmluZykgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignZGVsZXRlVXNlckFwaVRva2VuJywgcGF5bG9hZCk7XG4gIGRlbGV0ZVRlbmFudEFwaVRva2VuID0gKHBheWxvYWQ6IHN0cmluZykgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignZGVsZXRlVGVuYW50QXBpVG9rZW4nLCBwYXlsb2FkKTtcblxuICAvLyBTZWN1cml0eSBQb2xpY3kgQWN0aW9uc1xuICBzZXRTZWN1cml0eVBvbGljeVN0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPFNlY3VyaXR5UG9saWN5U3RhdGU+KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldFNlY3VyaXR5UG9saWN5U3RhdGUnLCBzdGF0ZSk7XG4gIHNldFNlY3VyaXR5UG9saWN5R2xvYmFsU3RhdGUgPSAoc3RhdGU6IFBhcnRpYWw8R2xvYmFsUG9saWN5U3RhdGU+KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldFNlY3VyaXR5UG9saWN5R2xvYmFsU3RhdGUnLCBzdGF0ZSk7XG4gIHNldFNlY3VyaXR5UG9saWN5UHVibGljU3RhdGUgPSAoc3RhdGU6IFBhcnRpYWw8UHVibGljUG9saWN5U3RhdGU+KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldFNlY3VyaXR5UG9saWN5UHVibGljU3RhdGUnLCBzdGF0ZSk7XG4gIHNldFNlY3VyaXR5UG9saWN5TWZhU3RhdGUgPSAoc3RhdGU6IFBhcnRpYWw8TWZhUG9saWN5U3RhdGU+KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldFNlY3VyaXR5UG9saWN5TWZhU3RhdGUnLCBzdGF0ZSk7XG4gIHNldFNlY3VyaXR5UG9saWN5TG9ja291dFN0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPExvY2tvdXRQb2xpY3lTdGF0ZT4pID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0U2VjdXJpdHlQb2xpY3lMb2Nrb3V0U3RhdGUnLCBzdGF0ZSk7XG4gIHNldFNlY3VyaXR5UG9saWN5Q2FwdGNoYVN0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPENhcHRjaGFQb2xpY3lTdGF0ZT4pID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0U2VjdXJpdHlQb2xpY3lDYXB0Y2hhU3RhdGUnLCBzdGF0ZSk7XG4gIHNldFNlY3VyaXR5UG9saWN5UGFzc3dvcmRIaXN0b3J5U3RhdGUgPSAoc3RhdGU6IFBhcnRpYWw8UGFzc3dvcmRIaXN0b3J5UG9saWN5U3RhdGU+KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldFNlY3VyaXR5UG9saWN5UGFzc3dvcmRIaXN0b3J5U3RhdGUnLCBzdGF0ZSk7XG4gIHJlc2V0U2VjdXJpdHlQb2xpY3lTdGF0ZSA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3Jlc2V0U2VjdXJpdHlQb2xpY3lTdGF0ZScpO1xuICBzZXRTZWN1cml0eVBvbGljeVBhc3N3b3JkU3RhdGUgPSAoc3RhdGU6IFBhcnRpYWw8UGFzc3dvcmRQb2xpY3lTdGF0ZT4pID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0U2VjdXJpdHlQb2xpY3lQYXNzd29yZFN0YXRlJywgc3RhdGUpO1xuICBsb2FkU2VjdXJpdHlQb2xpY3kgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdsb2FkU2VjdXJpdHlQb2xpY3knKTtcbiAgbG9hZFB1YmxpY1NlY3VyaXR5UG9saWN5ID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignbG9hZFB1YmxpY1NlY3VyaXR5UG9saWN5Jyk7XG4gIGxvYWRWZW5kb3JQYXNzd29yZENvbmZpZyA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2xvYWRWZW5kb3JQYXNzd29yZENvbmZpZycpO1xuICBsb2FkU2VjdXJpdHlQb2xpY3lNZmEgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdsb2FkU2VjdXJpdHlQb2xpY3lNZmEnKTtcbiAgc2F2ZVNlY3VyaXR5UG9saWN5TWZhID0gKHBheWxvYWQ6IFNhdmVTZWN1cml0eVBvbGljeU1mYVBheWxvYWQpID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc2F2ZVNlY3VyaXR5UG9saWN5TWZhJywgcGF5bG9hZCk7XG4gIGxvYWRTZWN1cml0eVBvbGljeUxvY2tvdXQgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdsb2FkU2VjdXJpdHlQb2xpY3lMb2Nrb3V0Jyk7XG4gIHNhdmVTZWN1cml0eVBvbGljeUxvY2tvdXQgPSAocGF5bG9hZDogU2F2ZVNlY3VyaXR5UG9saWN5TG9ja291dFBheWxvYWQpID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc2F2ZVNlY3VyaXR5UG9saWN5TG9ja291dCcsIHBheWxvYWQpO1xuICBsb2FkU2VjdXJpdHlQb2xpY3lDYXB0Y2hhID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignbG9hZFNlY3VyaXR5UG9saWN5Q2FwdGNoYScpO1xuICBsb2FkU2VjdXJpdHlQb2xpY3lQYXNzd29yZEhpc3RvcnkgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdsb2FkU2VjdXJpdHlQb2xpY3lQYXNzd29yZEhpc3RvcnknKTtcbiAgc2F2ZVNlY3VyaXR5UG9saWN5UGFzc3dvcmRIaXN0b3J5ID0gKHBheWxvYWQ6IFNhdmVTZWN1cml0eVBvbGljeVBhc3N3b3JkSGlzdG9yeVBheWxvYWQpID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc2F2ZVNlY3VyaXR5UG9saWN5UGFzc3dvcmRIaXN0b3J5JywgcGF5bG9hZCk7XG5cbiAgLy8gQWNjb3VudCBTZXR0aW5ncyBBY3Rpb25zXG4gIHNldEFjY291bnRTZXR0aW5nc1N0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPEFjY291bnRTZXR0aW5nc1N0YXRlPikgPT5cbiAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzZXRBY2NvdW50U2V0dGluZ3NTdGF0ZScsIHN0YXRlKTtcbiAgcmVzZXRBY2NvdW50U2V0dGluZ3NTdGF0ZSA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3Jlc2V0QWNjb3VudFNldHRpbmdzU3RhdGUnKTtcbiAgbG9hZEFjY291bnRTZXR0aW5ncyA9IChwYXlsb2FkPzogV2l0aENhbGxiYWNrPFdpdGhTaWxlbnRMb2FkPHt9Pj4pID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbignbG9hZEFjY291bnRTZXR0aW5ncycsIHBheWxvYWQpO1xuICBzYXZlQWNjb3VudFNldHRpbmdzID0gKHBheWxvYWQ6IFdpdGhDYWxsYmFjazxJU2V0dGluZ3NSZXNwb25zZSwgSVNldHRpbmdzUmVzcG9uc2U+KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NhdmVBY2NvdW50U2V0dGluZ3MnLCBwYXlsb2FkKTtcblxuICAvLyBUZW5hbnRzIEFjdGlvbnNcbiAgc2V0VGVuYW50c1N0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPFRlbmFudHNTdGF0ZT4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldFRlbmFudHNTdGF0ZScsIHN0YXRlKTtcbiAgcmVzZXRUZW5hbnRzU3RhdGUgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXNldFRlbmFudHNTdGF0ZScpO1xuICBzd2l0Y2hUZW5hbnQgPSAocGF5bG9hZDogV2l0aENhbGxiYWNrPElTd2l0Y2hUZW5hbnQ+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzd2l0Y2hUZW5hbnQnLCBwYXlsb2FkKTtcbiAgbG9hZFRlbmFudHMgPSAocGF5bG9hZD86IFdpdGhDYWxsYmFjazx7fSwgSVRlbmFudHNSZXNwb25zZVtdPikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignbG9hZFRlbmFudHMnLCBwYXlsb2FkKTtcblxuICAvLyBSb2xlcyBBY3Rpb25zXG4gIHNldFJvbGVzU3RhdGUgPSAoc3RhdGU6IFJvbGVzU3RhdGUpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldFJvbGVzU3RhdGUnLCBzdGF0ZSk7XG4gIHJlc2V0Um9sZXNTdGF0ZSA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3Jlc2V0Um9sZXNTdGF0ZScpO1xuICBsb2FkUm9sZXNBbmRQZXJtaXNzaW9ucyA9IChwYXlsb2FkPzogV2l0aFNpbGVudExvYWQ8e30+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdsb2FkUm9sZXNBbmRQZXJtaXNzaW9ucycsIHBheWxvYWQpO1xuICBhZGRSb2xlID0gKHBheWxvYWQ6IFdpdGhDYWxsYmFjazxJQWRkUm9sZSwgSVJvbGU+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdhZGRSb2xlJywgcGF5bG9hZCk7XG4gIHVwZGF0ZVJvbGUgPSAocGF5bG9hZDogV2l0aENhbGxiYWNrPElVcGRhdGVSb2xlLCBJUm9sZT4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3VwZGF0ZVJvbGUnLCBwYXlsb2FkKTtcbiAgZGVsZXRlUm9sZSA9IChwYXlsb2FkOiBXaXRoQ2FsbGJhY2s8SURlbGV0ZVJvbGU+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdkZWxldGVSb2xlJywgcGF5bG9hZCk7XG4gIGF0dGFjaFBlcm1pc3Npb25zVG9Sb2xlID0gKHBheWxvYWQ6IFdpdGhDYWxsYmFjazxJQXR0YWNoUGVybWlzc2lvbnNUb1JvbGUsIElSb2xlPikgPT5cbiAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdhdHRhY2hQZXJtaXNzaW9uc1RvUm9sZScsIHBheWxvYWQpO1xuICBhdHRhY2hQZXJtaXNzaW9uVG9Sb2xlcyA9IChcbiAgICBwYXlsb2FkOiBXaXRoQ2FsbGJhY2s8e1xuICAgICAgcGVybWlzc2lvbklkOiBzdHJpbmc7XG4gICAgICByb2xlSWRzOiBzdHJpbmdbXTtcbiAgICB9LFxuICAgICAgSVJvbGVQZXJtaXNzaW9uPixcbiAgKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdhdHRhY2hQZXJtaXNzaW9uVG9Sb2xlcycsIHBheWxvYWQpO1xufVxuIl19
238
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbnRlZ2ctYXBwLWF1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Zyb250ZWdnLWFwcC9zcmMvbGliL2Zyb250ZWdnLWFwcC1hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXZDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sYUFBYSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUF1Q0wsYUFBYSxHQUdkLE1BQU0sdUJBQXVCLENBQUM7OztBQXNEL0IscUNBQXFDO0FBSXJDLE1BQU0sT0FBTyxzQkFBc0I7SUE2Q2pDLFlBQW9CLGtCQUFzQztRQUF0Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBNUNsRCxrQ0FBNkIsR0FBRyxJQUFJLGVBQWUsQ0FBNEMsSUFBSSxDQUFDLENBQUM7UUFDckcsaUNBQTRCLEdBQUcsSUFBSSxlQUFlLENBQTJDLElBQUksQ0FBQyxDQUFDO1FBQ25HLDBCQUFxQixHQUFHLElBQUksZUFBZSxDQUFvQyxJQUFJLENBQUMsQ0FBQztRQUNyRiwyQkFBc0IsR0FBRyxJQUFJLGVBQWUsQ0FBcUMsSUFBSSxDQUFDLENBQUM7UUFDdkYsZ0NBQTJCLEdBQUcsSUFBSSxlQUFlLENBQTBDLElBQUksQ0FBQyxDQUFDO1FBQ2pHLHVCQUFrQixHQUFHLElBQUksZUFBZSxDQUFpQyxJQUFJLENBQUMsQ0FBQztRQUMvRSxxQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBK0IsSUFBSSxDQUFDLENBQUM7UUFDM0UseUJBQW9CLEdBQUcsSUFBSSxlQUFlLENBQW1DLElBQUksQ0FBQyxDQUFDO1FBQ25GLHVCQUFrQixHQUFHLElBQUksZUFBZSxDQUFpQyxJ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QUN4QyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsU0FBUyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO3dCQUNsRixZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7cUJBQzFEO2lCQUNGO2dCQUNELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUM3RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUNsRDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGNBQWMsQ0FBQyxJQUFZLEVBQUUsT0FBYTtRQUNoRCxNQUFNLEtBQUssR0FBUSxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztRQUM3RCxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsYUFBYSxJQUFJLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQzs7OztZQXhGRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQXJHUSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEZyb250ZWdnQXBwU2VydmljZSB9IGZyb20gJy4vZnJvbnRlZ2ctYXBwLnNlcnZpY2UnO1xuaW1wb3J0IEZhc3REZWVwRXF1YWwgZnJvbSAnZmFzdC1kZWVwLWVxdWFsJztcbmltcG9ydCB7XG4gIFJvbGVzU3RhdGUsXG4gIFRlbmFudHNTdGF0ZSxcbiAgQWNjb3VudFNldHRpbmdzU3RhdGUsXG4gIFNhdmVTZWN1cml0eVBvbGljeVBhc3N3b3JkSGlzdG9yeVBheWxvYWQsXG4gIFNhdmVTZWN1cml0eVBvbGljeUxvY2tvdXRQYXlsb2FkLFxuICBTYXZlU2VjdXJpdHlQb2xpY3lNZmFQYXlsb2FkLFxuICBQYXNzd29yZFBvbGljeVN0YXRlLFxuICBQYXNzd29yZEhpc3RvcnlQb2xpY3lTdGF0ZSxcbiAgTWZhUG9saWN5U3RhdGUsXG4gIENhcHRjaGFQb2xpY3lTdGF0ZSxcbiAgTG9ja291dFBvbGljeVN0YXRlLFxuICBQdWJsaWNQb2xpY3lTdGF0ZSxcbiAgR2xvYmFsUG9saWN5U3RhdGUsXG4gIFNlY3VyaXR5UG9saWN5U3RhdGUsXG4gIEFkZFVzZXJBcGlUb2tlblBheWxvYWQsXG4gIEFkZFRlbmFudEFwaVRva2VuUGF5bG9hZCxcbiAgQXBpVG9rZW5UeXBlLFxuICBBcGlUb2tlbnNTdGF0ZSxcbiAgQXBpU3RhdGVJbmRpY2F0b3IsXG4gIElTZXREZWxldGVVc2VyRGlhbG9nLFxuICBJU2V0QWRkVXNlckRpYWxvZyxcbiAgTG9hZFJvbGVzQW5kUGVybWlzc2lvbnNQYXlsb2FkLFxuICBUZWFtU3RhdGUsXG4gIFRlYW1TdGF0ZUluZGljYXRvcixcbiAgTUZBU3RhdGUsXG4gIFNhdmVTU09Db25maWd1cmF0aW9uUGF5bG9hZCxcbiAgU1NPU3RhdGUsXG4gIFByb2ZpbGVTdGF0ZSxcbiAgU2F2ZVNTT0NvbmZpZ3VyYXRpb25GaWxlUGF5bG9hZCxcbiAgVXBkYXRlU1NPQXV0aG9yaXphdGlvblJvbGVzUGF5bG9hZCxcbiAgRGVsZXRlU2FtbEdyb3VwUGF5bG9hZCxcbiAgQ3JlYXRlU2FtbEdyb3VwUGF5bG9hZCxcbiAgU2F2ZVByb2ZpbGVQYXlsb2FkLFxuICBTaWduVXBTdGF0ZSxcbiAgRm9yZ290UGFzc3dvcmRTdGF0ZSxcbiAgQWNjZXB0SW52aXRhdGlvblN0YXRlLFxuICBBdXRoU3RhdGUsXG4gIFVzZXIsXG4gIGF1dGhTdG9yZU5hbWUsXG4gIExvZ2luU3RhdGUsXG4gIEFjdGl2YXRlQWNjb3VudFN0cmF0ZWd5U3RhdGUsXG59IGZyb20gJ0Bmcm9udGVnZy9yZWR1eC1zdG9yZSc7XG5pbXBvcnQge1xuICBJTG9naW4sXG4gIElMb2dpbldpdGhNZmEsXG4gIElQb3N0TG9naW4sXG4gIElQcmVMb2dpbixcbiAgSVJlY292ZXJNRkFUb2tlbixcbiAgSUFjdGl2YXRlQWNjb3VudCxcbiAgSUxvZ2luVmlhU29jaWFsTG9naW4sXG4gIElTZXRTb2NpYWxMb2dpbkVycm9yLFxuICBJUmVzZW5kQWN0aXZhdGlvbkVtYWlsLFxuICBJR2V0QWN0aXZhdGVBY2NvdW50U3RyYXRlZ3ksXG4gIElHZXRBY3RpdmF0ZUFjY291bnRTdHJhdGVneVJlc3BvbnNlLFxuICBJQWNjZXB0SW52aXRhdGlvbixcbiAgSUZvcmdvdFBhc3N3b3JkLFxuICBJUmVzZXRQYXNzd29yZCxcbiAgSUdldFVzZXJQYXNzd29yZENvbmZpZyxcbiAgSVNpZ25VcFVzZXIsXG4gIElDaGFuZ2VQYXNzd29yZCxcbiAgSU9pZGNQb3N0TG9naW4sXG4gIElWZXJpZnlNZmEsXG4gIElEaXNhYmxlTWZhLFxuICBJTG9hZFVzZXJzLFxuICBJVGVhbVVzZXIsXG4gIElBZGRVc2VyLFxuICBJVXBkYXRlVXNlcixcbiAgSURlbGV0ZVVzZXIsXG4gIElSZXNlbmRBY3RpdmF0aW9uTGluayxcbiAgSVNldHRpbmdzUmVzcG9uc2UsXG4gIElTd2l0Y2hUZW5hbnQsXG4gIElUZW5hbnRzUmVzcG9uc2UsXG4gIElBZGRSb2xlLFxuICBJUm9sZSxcbiAgSVVwZGF0ZVJvbGUsXG4gIElEZWxldGVSb2xlLFxuICBJQXR0YWNoUGVybWlzc2lvbnNUb1JvbGUsXG4gIElSZXNlbmRJbnZpdGF0aW9uTGluayxcbiAgSVJvbGVQZXJtaXNzaW9uLFxufSBmcm9tICdAZnJvbnRlZ2cvcmVzdC1hcGknO1xuaW1wb3J0IHsgQWN0aXZhdGVBY2NvdW50U3RhdGUsIFNvY2lhbExvZ2luU3RhdGUgfSBmcm9tICdAZnJvbnRlZ2cvcmVkdXgtc3RvcmUvYXV0aCc7XG5cbmludGVyZmFjZSBBdXRoU3ViU3RhdGVzIHtcbiAgZmllbGQ6IFBhcnRpYWw8a2V5b2YgQXV0aFN0YXRlPjtcbiAgc3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGFueT47XG59XG5cbmV4cG9ydCB0eXBlIFdpdGhDYWxsYmFjazxUID0ge30sIFIgPSBib29sZWFuPiA9IFQgJiB7XG4gIGNhbGxiYWNrPzogKGRhdGE6IFIgfCBudWxsLCBlcnJvcj86IHN0cmluZykgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIFdpdGhTaWxlbnRMb2FkPFQ+ID0gVCAmIHtcbiAgc2lsZW50TG9hZGluZz86IGJvb2xlYW47XG59O1xuXG4vLyBub2luc3BlY3Rpb24gSlNVbnVzZWRHbG9iYWxTeW1ib2xzXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRnJvbnRlZ2dBcHBBdXRoU2VydmljZSB7XG4gIHByaXZhdGUgYWNjZXB0SW52aXRhdGlvblN0YXRlU3ViamVjdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF1dGhTdGF0ZVsnYWNjZXB0SW52aXRhdGlvblN0YXRlJ10gfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSBhY2NvdW50U2V0dGluZ3NTdGF0ZVN1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBdXRoU3RhdGVbJ2FjY291bnRTZXR0aW5nc1N0YXRlJ10gfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSBhY3RpdmF0ZVN0YXRlU3ViamVjdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF1dGhTdGF0ZVsnYWN0aXZhdGVTdGF0ZSddIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgYXBpVG9rZW5zU3RhdGVTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlWydhcGlUb2tlbnNTdGF0ZSddIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgZm9yZ290UGFzc3dvcmRTdGF0ZVN1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBdXRoU3RhdGVbJ2ZvcmdvdFBhc3N3b3JkU3RhdGUnXSB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIGxvZ2luU3RhdGVTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlWydsb2dpblN0YXRlJ10gfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSBtZmFTdGF0ZVN1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBdXRoU3RhdGVbJ21mYVN0YXRlJ10gfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSBwcm9maWxlU3RhdGVTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlWydwcm9maWxlU3RhdGUnXSB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJvbGVzU3RhdGVTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlWydyb2xlc1N0YXRlJ10gfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByb3V0ZXNTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlWydyb3V0ZXMnXSB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHNlY3VyaXR5UG9saWN5U3RhdGVTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlWydzZWN1cml0eVBvbGljeVN0YXRlJ10gfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSBzaWduVXBTdGF0ZVN1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBdXRoU3RhdGVbJ3NpZ25VcFN0YXRlJ10gfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSBzb2NpYWxMb2dpblN0YXRlU3ViamVjdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF1dGhTdGF0ZVsnc29jaWFsTG9naW5TdGF0ZSddIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgc3NvU3RhdGVTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlWydzc29TdGF0ZSddIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgdGVhbVN0YXRlU3ViamVjdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF1dGhTdGF0ZVsndGVhbVN0YXRlJ10gfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSB0ZW5hbnRzU3RhdGVTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlWyd0ZW5hbnRzU3RhdGUnXSB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHVzZXJTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlWyd1c2VyJ10gfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSBpc0F1dGhlbnRpY2F0ZWRTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlWydpc0F1dGhlbnRpY2F0ZWQnXT4oZmFsc2UpO1xuICBwcml2YXRlIGlzTG9hZGluZ1N1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBdXRoU3RhdGVbJ2lzTG9hZGluZyddPih0cnVlKTtcbiAgcHJpdmF0ZSBpc1NTT0F1dGhTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlWydpc1NTT0F1dGgnXT4oZmFsc2UpO1xuICBwcml2YXRlIHNzb0FDU1N1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBdXRoU3RhdGVbJ3Nzb0FDUyddPignJyk7XG5cbiAgcmVhZG9ubHkgYWNjZXB0SW52aXRhdGlvblN0YXRlJCA9IHRoaXMuYWNjZXB0SW52aXRhdGlvblN0YXRlU3ViamVjdCQuYXNPYnNlcnZhYmxlKCk7XG4gIHJlYWRvbmx5IGFjY291bnRTZXR0aW5nc1N0YXRlJCA9IHRoaXMuYWNjb3VudFNldHRpbmdzU3RhdGVTdWJqZWN0JC5hc09ic2VydmFibGUoKTtcbiAgcmVhZG9ubHkgYWN0aXZhdGVTdGF0ZSQgPSB0aGlzLmFjdGl2YXRlU3RhdGVTdWJqZWN0JC5hc09ic2VydmFibGUoKTtcbiAgcmVhZG9ubHkgYXBpVG9rZW5zU3RhdGUkID0gdGhpcy5hcGlUb2tlbnNTdGF0ZVN1YmplY3QkLmFzT2JzZXJ2YWJsZSgpO1xuICByZWFkb25seSBmb3Jnb3RQYXNzd29yZFN0YXRlJCA9IHRoaXMuZm9yZ290UGFzc3dvcmRTdGF0ZVN1YmplY3QkLmFzT2JzZXJ2YWJsZSgpO1xuICByZWFkb25seSBsb2dpblN0YXRlJCA9IHRoaXMubG9naW5TdGF0ZVN1YmplY3QkLmFzT2JzZXJ2YWJsZSgpO1xuICByZWFkb25seSBtZmFTdGF0ZSQgPSB0aGlzLm1mYVN0YXRlU3ViamVjdCQuYXNPYnNlcnZhYmxlKCk7XG4gIHJlYWRvbmx5IHByb2ZpbGVTdGF0ZSQgPSB0aGlzLnByb2ZpbGVTdGF0ZVN1YmplY3QkLmFzT2JzZXJ2YWJsZSgpO1xuICByZWFkb25seSByb2xlc1N0YXRlJCA9IHRoaXMucm9sZXNTdGF0ZVN1YmplY3QkLmFzT2JzZXJ2YWJsZSgpO1xuICByZWFkb25seSByb3V0ZXNTdGF0ZSQgPSB0aGlzLnJvdXRlc1N1YmplY3QkLmFzT2JzZXJ2YWJsZSgpO1xuICByZWFkb25seSBzZWN1cml0eVBvbGljeVN0YXRlJCA9IHRoaXMuc2VjdXJpdHlQb2xpY3lTdGF0ZVN1YmplY3QkLmFzT2JzZXJ2YWJsZSgpO1xuICByZWFkb25seSBzaWduVXBTdGF0ZSQgPSB0aGlzLnNpZ25VcFN0YXRlU3ViamVjdCQuYXNPYnNlcnZhYmxlKCk7XG4gIHJlYWRvbmx5IHNvY2lhbExvZ2luU3RhdGUkID0gdGhpcy5zb2NpYWxMb2dpblN0YXRlU3ViamVjdCQuYXNPYnNlcnZhYmxlKCk7XG4gIHJlYWRvbmx5IHNzb1N0YXRlJCA9IHRoaXMuc3NvU3RhdGVTdWJqZWN0JC5hc09ic2VydmFibGUoKTtcbiAgcmVhZG9ubHkgdGVhbVN0YXRlJCA9IHRoaXMudGVhbVN0YXRlU3ViamVjdCQuYXNPYnNlcnZhYmxlKCk7XG4gIHJlYWRvbmx5IHRlbmFudHNTdGF0ZSQgPSB0aGlzLnRlbmFudHNTdGF0ZVN1YmplY3QkLmFzT2JzZXJ2YWJsZSgpO1xuICByZWFkb25seSB1c2VyU3RhdGUkID0gdGhpcy51c2VyU3ViamVjdCQuYXNPYnNlcnZhYmxlKCk7XG4gIHJlYWRvbmx5IGlzQXV0aGVudGljYXRlZCQgPSB0aGlzLmlzQXV0aGVudGljYXRlZFN1YmplY3QkLmFzT2JzZXJ2YWJsZSgpO1xuICByZWFkb25seSBpc0xvYWRpbmckID0gdGhpcy5pc0xvYWRpbmdTdWJqZWN0JC5hc09ic2VydmFibGUoKTtcbiAgcmVhZG9ubHkgaXNTU09BdXRoJCA9IHRoaXMuaXNTU09BdXRoU3ViamVjdCQuYXNPYnNlcnZhYmxlKCk7XG4gIHJlYWRvbmx5IHNzb0FDUyQgPSB0aGlzLnNzb0FDU1N1YmplY3QkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZnJvbnRlZ2dBcHBTZXJ2aWNlOiBGcm9udGVnZ0FwcFNlcnZpY2UpIHtcbiAgICBjb25zdCBhdXRoU3ViU3RhdGVzOiBBdXRoU3ViU3RhdGVzW10gPSBbXG4gICAgICB7IGZpZWxkOiAnYWNjZXB0SW52aXRhdGlvblN0YXRlJywgc3ViamVjdDogdGhpcy5hY2NlcHRJbnZpdGF0aW9uU3RhdGVTdWJqZWN0JCB9LFxuICAgICAgeyBmaWVsZDogJ2FjY291bnRTZXR0aW5nc1N0YXRlJywgc3ViamVjdDogdGhpcy5hY2NvdW50U2V0dGluZ3NTdGF0ZVN1YmplY3QkIH0sXG4gICAgICB7IGZpZWxkOiAnYWN0aXZhdGVTdGF0ZScsIHN1YmplY3Q6IHRoaXMuYWN0aXZhdGVTdGF0ZVN1YmplY3QkIH0sXG4gICAgICB7IGZpZWxkOiAnYXBpVG9rZW5zU3RhdGUnLCBzdWJqZWN0OiB0aGlzLmFwaVRva2Vuc1N0YXRlU3ViamVjdCQgfSxcbiAgICAgIHsgZmllbGQ6ICdmb3Jnb3RQYXNzd29yZFN0YXRlJywgc3ViamVjdDogdGhpcy5mb3Jnb3RQYXNzd29yZFN0YXRlU3ViamVjdCQgfSxcbiAgICAgIHsgZmllbGQ6ICd0ZW5hbnRzU3RhdGUnLCBzdWJqZWN0OiB0aGlzLnRlbmFudHNTdGF0ZVN1YmplY3QkIH0sXG4gICAgICB7IGZpZWxkOiAnbG9naW5TdGF0ZScsIHN1YmplY3Q6IHRoaXMubG9naW5TdGF0ZVN1YmplY3QkIH0sXG4gICAgICB7IGZpZWxkOiAnbWZhU3RhdGUnLCBzdWJqZWN0OiB0aGlzLm1mYVN0YXRlU3ViamVjdCQgfSxcbiAgICAgIHsgZmllbGQ6ICdwcm9maWxlU3RhdGUnLCBzdWJqZWN0OiB0aGlzLnByb2ZpbGVTdGF0ZVN1YmplY3QkIH0sXG4gICAgICB7IGZpZWxkOiAncm9sZXNTdGF0ZScsIHN1YmplY3Q6IHRoaXMucm9sZXNTdGF0ZVN1YmplY3QkIH0sXG4gICAgICB7IGZpZWxkOiAncm91dGVzJywgc3ViamVjdDogdGhpcy5yb3V0ZXNTdWJqZWN0JCB9LFxuICAgICAgeyBmaWVsZDogJ3NlY3VyaXR5UG9saWN5U3RhdGUnLCBzdWJqZWN0OiB0aGlzLnNlY3VyaXR5UG9saWN5U3RhdGVTdWJqZWN0JCB9LFxuICAgICAgeyBmaWVsZDogJ3NpZ25VcFN0YXRlJywgc3ViamVjdDogdGhpcy5zaWduVXBTdGF0ZVN1YmplY3QkIH0sXG4gICAgICB7IGZpZWxkOiAnc29jaWFsTG9naW5TdGF0ZScsIHN1YmplY3Q6IHRoaXMuc29jaWFsTG9naW5TdGF0ZVN1YmplY3QkIH0sXG4gICAgICB7IGZpZWxkOiAnc3NvU3RhdGUnLCBzdWJqZWN0OiB0aGlzLnNzb1N0YXRlU3ViamVjdCQgfSxcbiAgICAgIHsgZmllbGQ6ICd0ZWFtU3RhdGUnLCBzdWJqZWN0OiB0aGlzLnRlYW1TdGF0ZVN1YmplY3QkIH0sXG4gICAgICB7IGZpZWxkOiAndXNlcicsIHN1YmplY3Q6IHRoaXMudXNlclN1YmplY3QkIH0sXG4gICAgICB7IGZpZWxkOiAnaXNTU09BdXRoJywgc3ViamVjdDogdGhpcy5pc1NTT0F1dGhTdWJqZWN0JCB9LFxuICAgICAgeyBmaWVsZDogJ3Nzb0FDUycsIHN1YmplY3Q6IHRoaXMuc3NvQUNTU3ViamVjdCQgfSxcbiAgICBdO1xuXG4gICAgLy8gTWVtb2l6ZWQgQXV0aCBTdGF0ZVxuICAgIHRoaXMuZnJvbnRlZ2dBcHBTZXJ2aWNlLmZyb250ZWdnQXBwQXV0aFN0YXRlJC5zdWJzY3JpYmUoKGF1dGhTdGF0ZSkgPT4ge1xuICAgICAgaWYgKGF1dGhTdGF0ZSAhPSBudWxsKSB7XG4gICAgICAgIGZvciAoY29uc3QgYXV0aFN1YlN0YXRlIG9mIGF1dGhTdWJTdGF0ZXMpIHtcbiAgICAgICAgICBpZiAoIUZhc3REZWVwRXF1YWwoYXV0aFN1YlN0YXRlLnN1YmplY3QuZ2V0VmFsdWUoKSwgYXV0aFN0YXRlW2F1dGhTdWJTdGF0ZS5maWVsZF0pKSB7XG4gICAgICAgICAgICBhdXRoU3ViU3RhdGUuc3ViamVjdC5uZXh0KGF1dGhTdGF0ZVthdXRoU3ViU3RhdGUuZmllbGRdKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc0F1dGhlbnRpY2F0ZWRTdWJqZWN0JC5uZXh0KGF1dGhTdGF0ZS5pc0F1dGhlbnRpY2F0ZWQpO1xuICAgICAgICB0aGlzLmlzTG9hZGluZ1N1YmplY3QkLm5leHQoYXV0aFN0YXRlLmlzTG9hZGluZyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGRpc3BhdGNoQWN0aW9uKHR5cGU6IHN0cmluZywgcGF5bG9hZD86IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHN0b3JlOiBhbnkgPSB0aGlzLmZyb250ZWdnQXBwU2VydmljZS5mcm9udGVnZ0FwcC5zdG9yZTtcbiAgICBzdG9yZS5kaXNwYXRjaCh7IHR5cGU6IGAke2F1dGhTdG9yZU5hbWV9LyR7dHlwZX1gLCBwYXlsb2FkIH0pO1xuICB9XG5cbiAgLy8gUm9vdCBBY3Rpb25zXG4gIHNldFN0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPEF1dGhTdGF0ZT4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldFN0YXRlJywgc3RhdGUpO1xuICByZXNldFN0YXRlID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbigncmVzZXRTdGF0ZScpO1xuICBzZXRVc2VyID0gKHVzZXI6IFVzZXIpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldFVzZXInLCB1c2VyKTtcblxuICAvLyBMb2dpbiBBY3Rpb25zXG4gIHNldExvZ2luU3RhdGUgPSAoc3RhdGU6IFBhcnRpYWw8TG9naW5TdGF0ZT4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldExvZ2luU3RhdGUnLCBzdGF0ZSk7XG4gIHJlc2V0TG9naW5TdGF0ZSA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3Jlc2V0TG9naW5TdGF0ZScpO1xuICByZXF1ZXN0QXV0aG9yaXplID0gKGZpcnN0VGltZT86IGJvb2xlYW4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3JlcXVlc3RBdXRob3JpemUnLCBmaXJzdFRpbWUpO1xuICBwcmVMb2dpbiA9IChwYXlsb2FkOiBJUHJlTG9naW4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3ByZUxvZ2luJywgcGF5bG9hZCk7XG4gIHBvc3RMb2dpbiA9IChwYXlsb2FkOiBJUG9zdExvZ2luKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdwb3N0TG9naW4nLCBwYXlsb2FkKTtcbiAgbG9naW4gPSAocGF5bG9hZDogSUxvZ2luKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdsb2dpbicsIHBheWxvYWQpO1xuICBsb2dpbldpdGhNZmEgPSAocGF5bG9hZDogV2l0aENhbGxiYWNrPElMb2dpbldpdGhNZmE+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdsb2dpbldpdGhNZmEnLCBwYXlsb2FkKTtcbiAgcmVjb3Zlck1mYSA9IChwYXlsb2FkOiBJUmVjb3Zlck1GQVRva2VuKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZWNvdmVyTWZhJywgcGF5bG9hZCk7XG4gIGxvZ291dCA9IChjYWxsYmFjaz86ICgpID0+IHZvaWQpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2xvZ291dCcsIGNhbGxiYWNrKTtcbiAgc2lsZW50TG9nb3V0ID0gKGNhbGxiYWNrPzogKCkgPT4gdm9pZCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignc2lsZW50TG9nb3V0JywgY2FsbGJhY2spO1xuICBjaGVja0lmQWxsb3dUb1JlbWVtYmVyTWZhRGV2aWNlID0gKHBheWxvYWQ6IHsgbWZhVG9rZW46IHN0cmluZyB9KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2NoZWNrSWZBbGxvd1RvUmVtZW1iZXJNZmFEZXZpY2UnLCBwYXlsb2FkKTtcblxuICAvLyBTb2NpYWwgTG9naW5zIEFjdGlvbnNcbiAgc2V0U29jaWFsTG9naW5zU3RhdGUgPSAoc3RhdGU6IFBhcnRpYWw8U29jaWFsTG9naW5TdGF0ZT4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldFNvY2lhbExvZ2luc1N0YXRlJywgc3RhdGUpO1xuICByZXNldFNvY2lhbExvZ2luc1N0YXRlID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbigncmVzZXRTb2NpYWxMb2dpbnNTdGF0ZScpO1xuICBsb2FkU29jaWFsTG9naW5zQ29uZmlndXJhdGlvbiA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2xvYWRTb2NpYWxMb2dpbnNDb25maWd1cmF0aW9uJyk7XG4gIGxvZ2luVmlhU29jaWFsTG9naW4gPSAocGF5bG9hZDogSUxvZ2luVmlhU29jaWFsTG9naW4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2xvZ2luVmlhU29jaWFsTG9naW4nLCBwYXlsb2FkKTtcbiAgc2V0U29jaWFsTG9naW5FcnJvciA9IChwYXlsb2FkOiBJU2V0U29jaWFsTG9naW5FcnJvcikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0U29jaWFsTG9naW5FcnJvcicsIHBheWxvYWQpO1xuXG4gIC8vIEFjdGl2YXRlIEFjY291bnQgQWN0aW9uc1xuICBzZXRBY3RpdmF0ZVN0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPEFjdGl2YXRlQWNjb3VudFN0YXRlPikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0QWN0aXZhdGVTdGF0ZScsIHN0YXRlKTtcbiAgcmVzZXRBY3RpdmF0ZVN0YXRlID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbigncmVzZXRBY3RpdmF0ZVN0YXRlJyk7XG4gIHNldEFjdGl2YXRlU3RyYXRlZ3lTdGF0ZSA9IChzdGF0ZTogUGFydGlhbDxBY3RpdmF0ZUFjY291bnRTdHJhdGVneVN0YXRlPikgPT5cbiAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzZXRBY3RpdmF0ZVN0cmF0ZWd5U3RhdGUnLCBzdGF0ZSk7XG4gIGFjdGl2YXRlQWNjb3VudCA9IChwYXlsb2FkOiBJQWN0aXZhdGVBY2NvdW50KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdhY3RpdmF0ZUFjY291bnQnLCBwYXlsb2FkKTtcbiAgcmVzZW5kQWN0aXZhdGlvbkVtYWlsID0gKHBheWxvYWQ6IElSZXNlbmRBY3RpdmF0aW9uRW1haWwpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3Jlc2VuZEFjdGl2YXRpb25FbWFpbCcsIHBheWxvYWQpO1xuICBnZXRBY3RpdmF0ZUFjY291bnRTdHJhdGVneSA9IChcbiAgICBwYXlsb2FkOiBXaXRoQ2FsbGJhY2s8SUdldEFjdGl2YXRlQWNjb3VudFN0cmF0ZWd5LCBJR2V0QWN0aXZhdGVBY2NvdW50U3RyYXRlZ3lSZXNwb25zZT4sXG4gICkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignZ2V0QWN0aXZhdGVBY2NvdW50U3RyYXRlZ3knLCBwYXlsb2FkKTtcblxuICAvLyBBY2NlcHQgSW52aXRhdGlvbiBBY3Rpb25zXG4gIHNldEFjY2VwdEludml0YXRpb25TdGF0ZSA9IChzdGF0ZTogUGFydGlhbDxBY2NlcHRJbnZpdGF0aW9uU3RhdGU+KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldEFjY2VwdEludml0YXRpb25TdGF0ZScsIHN0YXRlKTtcbiAgcmVzZXRBY2NlcHRJbnZpdGF0aW9uU3RhdGUgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXNldEFjY2VwdEludml0YXRpb25TdGF0ZScpO1xuICBhY2NlcHRJbnZpdGF0aW9uID0gKHBheWxvYWQ6IElBY2NlcHRJbnZpdGF0aW9uKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdhY2NlcHRJbnZpdGF0aW9uJywgcGF5bG9hZCk7XG5cbiAgLy8gRm9yZ290IFBhc3N3b3JkIEFjdGlvbnNcbiAgc2V0Rm9yZ290UGFzc3dvcmRTdGF0ZSA9IChzdGF0ZTogUGFydGlhbDxGb3Jnb3RQYXNzd29yZFN0YXRlPikgPT5cbiAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzZXRGb3Jnb3RQYXNzd29yZFN0YXRlJywgc3RhdGUpO1xuICByZXNldEZvcmdvdFBhc3N3b3JkU3RhdGUgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXNldEZvcmdvdFBhc3N3b3JkU3RhdGUnKTtcbiAgZm9yZ290UGFzc3dvcmQgPSAocGF5bG9hZDogSUZvcmdvdFBhc3N3b3JkKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdmb3Jnb3RQYXNzd29yZCcsIHBheWxvYWQpO1xuICByZXNldFBhc3N3b3JkID0gKHBheWxvYWQ6IElSZXNldFBhc3N3b3JkKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXNldFBhc3N3b3JkJywgcGF5bG9hZCk7XG4gIGxvYWRQYXNzd29yZENvbmZpZyA9IChwYXlsb2FkPzogSUdldFVzZXJQYXNzd29yZENvbmZpZykgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignbG9hZFBhc3N3b3JkQ29uZmlnJywgcGF5bG9hZCk7XG5cbiAgLy8gU2lnbiBVcCBBY3Rpb25zXG4gIHNldFNpZ25VcFN0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPFNpZ25VcFN0YXRlPikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0U2lnblVwU3RhdGUnLCBzdGF0ZSk7XG4gIHJlc2V0U2lnblVwU3RhdGUgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXNldFNpZ25VcFN0YXRlJyk7XG4gIHNpZ25VcFVzZXIgPSAocGF5bG9hZDogSVNpZ25VcFVzZXIpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NpZ25VcFVzZXInLCBwYXlsb2FkKTtcbiAgcmVzZXRTaWduVXBTdGF0ZVNvZnQgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXNldFNpZ25VcFN0YXRlU29mdCcpO1xuXG4gIC8vIFByb2ZpbGUgQWN0aW9uc1xuICBzZXRQcm9maWxlU3RhdGUgPSAoc3RhdGU6IFBhcnRpYWw8UHJvZmlsZVN0YXRlPikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0UHJvZmlsZVN0YXRlJywgc3RhdGUpO1xuICByZXNldFByb2ZpbGVTdGF0ZSA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3Jlc2V0UHJvZmlsZVN0YXRlJyk7XG4gIGxvYWRQcm9maWxlID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignbG9hZFByb2ZpbGUnKTtcbiAgc2F2ZVByb2ZpbGUgPSAocGF5bG9hZDogU2F2ZVByb2ZpbGVQYXlsb2FkKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzYXZlUHJvZmlsZScsIHBheWxvYWQpO1xuICBjaGFuZ2VQYXNzd29yZCA9IChwYXlsb2FkOiBXaXRoQ2FsbGJhY2s8SUNoYW5nZVBhc3N3b3JkPikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignY2hhbmdlUGFzc3dvcmQnLCBwYXlsb2FkKTtcblxuICAvLyBTU08gYWN0aW9uc1xuICBzZXRTU09TdGF0ZSA9IChzdGF0ZTogUGFydGlhbDxTU09TdGF0ZT4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldFNTT1N0YXRlJywgc3RhdGUpO1xuICByZXNldFNTT1N0YXRlID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbigncmVzZXRTU09TdGF0ZScpO1xuICBsb2FkU1NPQ29uZmlndXJhdGlvbnMgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdsb2FkU1NPQ29uZmlndXJhdGlvbnMnKTtcbiAgbG9hZFNTT0F1dGhvcml6YXRpb25Sb2xlcyA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2xvYWRTU09BdXRob3JpemF0aW9uUm9sZXMnKTtcbiAgc2F2ZVNTT0NvbmZpZ3VyYXRpb25zID0gKHBheWxvYWQ6IFNhdmVTU09Db25maWd1cmF0aW9uUGF5bG9hZCkgPT5cbiAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzYXZlU1NPQ29uZmlndXJhdGlvbnMnLCBwYXlsb2FkKTtcbiAgc2F2ZVNTT0NvbmZpZ3VyYXRpb25zRmlsZSA9IChwYXlsb2FkOiBGaWxlW10pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NhdmVTU09Db25maWd1cmF0aW9uc0ZpbGUnLCBwYXlsb2FkKTtcbiAgc2F2ZVNTT0NvbmZpZ3VyYXRpb25zRmlsZVdpdGhDYWxsYmFjayA9IChwYXlsb2FkOiBTYXZlU1NPQ29uZmlndXJhdGlvbkZpbGVQYXlsb2FkKSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NhdmVTU09Db25maWd1cmF0aW9uc0ZpbGVXaXRoQ2FsbGJhY2snLCBwYXlsb2FkKTtcbiAgdmFsaWRhdGVTU09Eb21haW4gPSAocGF5bG9hZD86IFdpdGhDYWxsYmFjaykgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbigndmFsaWRhdGVTU09Eb21haW4nLCBwYXlsb2FkKTtcbiAgdXBkYXRlU1NPQXV0aG9yaXphdGlvblJvbGVzID0gKHBheWxvYWQ6IFVwZGF0ZVNTT0F1dGhvcml6YXRpb25Sb2xlc1BheWxvYWQpID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbigndXBkYXRlU1NPQXV0aG9yaXphdGlvblJvbGVzJywgcGF5bG9hZCk7XG4gIGRlbGV0ZVNhbWxHcm91cCA9IChwYXlsb2FkOiBEZWxldGVTYW1sR3JvdXBQYXlsb2FkKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdkZWxldGVTYW1sR3JvdXAnLCBwYXlsb2FkKTtcbiAgY3JlYXRlU2FtbEdyb3VwID0gKHBheWxvYWQ6IENyZWF0ZVNhbWxHcm91cFBheWxvYWQpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2NyZWF0ZVNhbWxHcm91cCcsIHBheWxvYWQpO1xuICBvaWRjUG9zdGxvZ2luID0gKHBheWxvYWQ6IElPaWRjUG9zdExvZ2luKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdvaWRjUG9zdGxvZ2luJywgcGF5bG9hZCk7XG5cbiAgLy8gTWZhIGFjdGlvbnNcbiAgc2V0TWZhU3RhdGUgPSAoc3RhdGU6IFBhcnRpYWw8TUZBU3RhdGU+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzZXRNZmFTdGF0ZScsIHN0YXRlKTtcbiAgcmVzZXRNZmFTdGF0ZSA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3Jlc2V0TWZhU3RhdGUnKTtcbiAgZW5yb2xsTWZhID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignZW5yb2xsTWZhJyk7XG4gIHZlcmlmeU1mYSA9IChwYXlsb2FkOiBXaXRoQ2FsbGJhY2s8SVZlcmlmeU1mYSwgc3RyaW5nIHwgdW5kZWZpbmVkPikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbigndmVyaWZ5TWZhJywgcGF5bG9hZCk7XG4gIHZlcmlmeU1mYUFmdGVyRm9yY2UgPSAocGF5bG9hZDogV2l0aENhbGxiYWNrPElMb2dpbldpdGhNZmEsIHN0cmluZyB8IHVuZGVmaW5lZD4pID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbigndmVyaWZ5TWZhQWZ0ZXJGb3JjZScsIHBheWxvYWQpO1xuICBkaXNhYmxlTWZhID0gKHBheWxvYWQ6IFdpdGhDYWxsYmFjazxJRGlzYWJsZU1mYT4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2Rpc2FibGVNZmEnLCBwYXlsb2FkKTtcblxuICAvLyBUZWFtIGFjdGlvbnNcbiAgc2V0VGVhbUxvYWRlciA9IChwYXlsb2FkOiBUZWFtU3RhdGVJbmRpY2F0b3IpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldFRlYW1Mb2FkZXInLCBwYXlsb2FkKTtcbiAgc2V0VGVhbUVycm9yID0gKHBheWxvYWQ6IFRlYW1TdGF0ZUluZGljYXRvcikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0VGVhbUVycm9yJywgcGF5bG9hZCk7XG4gIHNldFRlYW1TdGF0ZSA9IChwYXlsb2FkOiBQYXJ0aWFsPFRlYW1TdGF0ZT4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldFRlYW1TdGF0ZScsIHBheWxvYWQpO1xuICByZXNldFRlYW1TdGF0ZSA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3Jlc2V0VGVhbVN0YXRlJyk7XG4gIGxvYWRVc2VycyA9IChwYXlsb2FkOiBXaXRoQ2FsbGJhY2s8V2l0aFNpbGVudExvYWQ8SUxvYWRVc2Vycz4sIElUZWFtVXNlcltdPikgPT5cbiAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdsb2FkVXNlcnMnLCBwYXlsb2FkKTtcbiAgbG9hZFJvbGVzID0gKHBheWxvYWQ/OiBMb2FkUm9sZXNBbmRQZXJtaXNzaW9uc1BheWxvYWQpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2xvYWRSb2xlcycsIHBheWxvYWQpO1xuICBhZGRVc2VyID0gKHBheWxvYWQ6IFdpdGhDYWxsYmFjazxJQWRkVXNlciwgSVRlYW1Vc2VyPikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignYWRkVXNlcicsIHBheWxvYWQpO1xuICB1cGRhdGVVc2VyID0gKHBheWxvYWQ6IFdpdGhDYWxsYmFjazxJVXBkYXRlVXNlciwgSVRlYW1Vc2VyPikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbigndXBkYXRlVXNlcicsIHBheWxvYWQpO1xuICBkZWxldGVVc2VyID0gKHBheWxvYWQ6IFdpdGhDYWxsYmFjazxJRGVsZXRlVXNlcj4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2RlbGV0ZVVzZXInLCBwYXlsb2FkKTtcbiAgcmVzZW5kQWN0aXZhdGlvbkxpbmsgPSAocGF5bG9hZDogV2l0aENhbGxiYWNrPElSZXNlbmRBY3RpdmF0aW9uTGluaz4pID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbigncmVzZW5kQWN0aXZhdGlvbkxpbmsnLCBwYXlsb2FkKTtcbiAgcmVzZW5kSW52aXRhdGlvbkxpbmsgPSAocGF5bG9hZDogV2l0aENhbGxiYWNrPElSZXNlbmRJbnZpdGF0aW9uTGluaz4pID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbigncmVzZW5kSW52aXRhdGlvbkxpbmsnLCBwYXlsb2FkKTtcbiAgb3BlbkFkZFVzZXJEaWFsb2cgPSAocGF5bG9hZD86IElTZXRBZGRVc2VyRGlhbG9nKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdvcGVuQWRkVXNlckRpYWxvZycsIHBheWxvYWQpO1xuICBjbG9zZUFkZFVzZXJEaWFsb2cgPSAocGF5bG9hZD86IGFueSkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignY2xvc2VBZGRVc2VyRGlhbG9nJywgcGF5bG9hZCk7XG4gIG9wZW5EZWxldGVVc2VyRGlhbG9nID0gKHBheWxvYWQ/OiBJU2V0RGVsZXRlVXNlckRpYWxvZykgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignb3BlbkRlbGV0ZVVzZXJEaWFsb2cnLCBwYXlsb2FkKTtcbiAgY2xvc2VEZWxldGVVc2VyRGlhbG9nID0gKHBheWxvYWQ/OiBhbnkpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2Nsb3NlRGVsZXRlVXNlckRpYWxvZycsIHBheWxvYWQpO1xuXG4gIC8vIEFQSSBUb2tlbiBBY3Rpb25zXG4gIHNldEFwaVRva2Vuc0xvYWRlciA9IChwYXlsb2FkOiBBcGlTdGF0ZUluZGljYXRvcikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0QXBpVG9rZW5zTG9hZGVyJywgcGF5bG9hZCk7XG4gIHNldEFwaVRva2Vuc0Vycm9yID0gKHBheWxvYWQ6IEFwaVN0YXRlSW5kaWNhdG9yKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzZXRBcGlUb2tlbnNFcnJvcicsIHBheWxvYWQpO1xuICBzZXRBcGlUb2tlbnNTdGF0ZSA9IChzdGF0ZTogUGFydGlhbDxBcGlUb2tlbnNTdGF0ZT4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldEFwaVRva2Vuc1N0YXRlJywgc3RhdGUpO1xuICByZXNldEFwaVRva2Vuc1N0YXRlID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbigncmVzZXRBcGlUb2tlbnNTdGF0ZScpO1xuICBsb2FkQXBpVG9rZW5zID0gKHBheWxvYWQ/OiBXaXRoU2lsZW50TG9hZDxXaXRoQ2FsbGJhY2s+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdsb2FkQXBpVG9rZW5zJywgcGF5bG9hZCk7XG4gIGluaXRBcGlUb2tlbnNEYXRhID0gKHBheWxvYWQ6IEFwaVRva2VuVHlwZSkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignaW5pdEFwaVRva2Vuc0RhdGEnLCBwYXlsb2FkKTtcbiAgYWRkVGVuYW50QXBpVG9rZW4gPSAocGF5bG9hZDogQWRkVGVuYW50QXBpVG9rZW5QYXlsb2FkKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdhZGRUZW5hbnRBcGlUb2tlbicsIHBheWxvYWQpO1xuICBhZGRVc2VyQXBpVG9rZW4gPSAocGF5bG9hZDogQWRkVXNlckFwaVRva2VuUGF5bG9hZCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignYWRkVXNlckFwaVRva2VuJywgcGF5bG9hZCk7XG4gIGRlbGV0ZVVzZXJBcGlUb2tlbiA9IChwYXlsb2FkOiBzdHJpbmcpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2RlbGV0ZVVzZXJBcGlUb2tlbicsIHBheWxvYWQpO1xuICBkZWxldGVUZW5hbnRBcGlUb2tlbiA9IChwYXlsb2FkOiBzdHJpbmcpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2RlbGV0ZVRlbmFudEFwaVRva2VuJywgcGF5bG9hZCk7XG5cbiAgLy8gU2VjdXJpdHkgUG9saWN5IEFjdGlvbnNcbiAgc2V0U2VjdXJpdHlQb2xpY3lTdGF0ZSA9IChzdGF0ZTogUGFydGlhbDxTZWN1cml0eVBvbGljeVN0YXRlPikgPT5cbiAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzZXRTZWN1cml0eVBvbGljeVN0YXRlJywgc3RhdGUpO1xuICBzZXRTZWN1cml0eVBvbGljeUdsb2JhbFN0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPEdsb2JhbFBvbGljeVN0YXRlPikgPT5cbiAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzZXRTZWN1cml0eVBvbGljeUdsb2JhbFN0YXRlJywgc3RhdGUpO1xuICBzZXRTZWN1cml0eVBvbGljeVB1YmxpY1N0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPFB1YmxpY1BvbGljeVN0YXRlPikgPT5cbiAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzZXRTZWN1cml0eVBvbGljeVB1YmxpY1N0YXRlJywgc3RhdGUpO1xuICBzZXRTZWN1cml0eVBvbGljeU1mYVN0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPE1mYVBvbGljeVN0YXRlPikgPT5cbiAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzZXRTZWN1cml0eVBvbGljeU1mYVN0YXRlJywgc3RhdGUpO1xuICBzZXRTZWN1cml0eVBvbGljeUxvY2tvdXRTdGF0ZSA9IChzdGF0ZTogUGFydGlhbDxMb2Nrb3V0UG9saWN5U3RhdGU+KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldFNlY3VyaXR5UG9saWN5TG9ja291dFN0YXRlJywgc3RhdGUpO1xuICBzZXRTZWN1cml0eVBvbGljeUNhcHRjaGFTdGF0ZSA9IChzdGF0ZTogUGFydGlhbDxDYXB0Y2hhUG9saWN5U3RhdGU+KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldFNlY3VyaXR5UG9saWN5Q2FwdGNoYVN0YXRlJywgc3RhdGUpO1xuICBzZXRTZWN1cml0eVBvbGljeVBhc3N3b3JkSGlzdG9yeVN0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPFBhc3N3b3JkSGlzdG9yeVBvbGljeVN0YXRlPikgPT5cbiAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzZXRTZWN1cml0eVBvbGljeVBhc3N3b3JkSGlzdG9yeVN0YXRlJywgc3RhdGUpO1xuICByZXNldFNlY3VyaXR5UG9saWN5U3RhdGUgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXNldFNlY3VyaXR5UG9saWN5U3RhdGUnKTtcbiAgc2V0U2VjdXJpdHlQb2xpY3lQYXNzd29yZFN0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPFBhc3N3b3JkUG9saWN5U3RhdGU+KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldFNlY3VyaXR5UG9saWN5UGFzc3dvcmRTdGF0ZScsIHN0YXRlKTtcbiAgbG9hZFNlY3VyaXR5UG9saWN5ID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignbG9hZFNlY3VyaXR5UG9saWN5Jyk7XG4gIGxvYWRQdWJsaWNTZWN1cml0eVBvbGljeSA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2xvYWRQdWJsaWNTZWN1cml0eVBvbGljeScpO1xuICBsb2FkVmVuZG9yUGFzc3dvcmRDb25maWcgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdsb2FkVmVuZG9yUGFzc3dvcmRDb25maWcnKTtcbiAgbG9hZFNlY3VyaXR5UG9saWN5TWZhID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignbG9hZFNlY3VyaXR5UG9saWN5TWZhJyk7XG4gIHNhdmVTZWN1cml0eVBvbGljeU1mYSA9IChwYXlsb2FkOiBTYXZlU2VjdXJpdHlQb2xpY3lNZmFQYXlsb2FkKSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NhdmVTZWN1cml0eVBvbGljeU1mYScsIHBheWxvYWQpO1xuICBsb2FkU2VjdXJpdHlQb2xpY3lMb2Nrb3V0ID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignbG9hZFNlY3VyaXR5UG9saWN5TG9ja291dCcpO1xuICBzYXZlU2VjdXJpdHlQb2xpY3lMb2Nrb3V0ID0gKHBheWxvYWQ6IFNhdmVTZWN1cml0eVBvbGljeUxvY2tvdXRQYXlsb2FkKSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NhdmVTZWN1cml0eVBvbGljeUxvY2tvdXQnLCBwYXlsb2FkKTtcbiAgbG9hZFNlY3VyaXR5UG9saWN5Q2FwdGNoYSA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2xvYWRTZWN1cml0eVBvbGljeUNhcHRjaGEnKTtcbiAgbG9hZFNlY3VyaXR5UG9saWN5UGFzc3dvcmRIaXN0b3J5ID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignbG9hZFNlY3VyaXR5UG9saWN5UGFzc3dvcmRIaXN0b3J5Jyk7XG4gIHNhdmVTZWN1cml0eVBvbGljeVBhc3N3b3JkSGlzdG9yeSA9IChwYXlsb2FkOiBTYXZlU2VjdXJpdHlQb2xpY3lQYXNzd29yZEhpc3RvcnlQYXlsb2FkKSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NhdmVTZWN1cml0eVBvbGljeVBhc3N3b3JkSGlzdG9yeScsIHBheWxvYWQpO1xuXG4gIC8vIEFjY291bnQgU2V0dGluZ3MgQWN0aW9uc1xuICBzZXRBY2NvdW50U2V0dGluZ3NTdGF0ZSA9IChzdGF0ZTogUGFydGlhbDxBY2NvdW50U2V0dGluZ3NTdGF0ZT4pID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0QWNjb3VudFNldHRpbmdzU3RhdGUnLCBzdGF0ZSk7XG4gIHJlc2V0QWNjb3VudFNldHRpbmdzU3RhdGUgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXNldEFjY291bnRTZXR0aW5nc1N0YXRlJyk7XG4gIGxvYWRBY2NvdW50U2V0dGluZ3MgPSAocGF5bG9hZD86IFdpdGhDYWxsYmFjazxXaXRoU2lsZW50TG9hZDx7fT4+KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2xvYWRBY2NvdW50U2V0dGluZ3MnLCBwYXlsb2FkKTtcbiAgc2F2ZUFjY291bnRTZXR0aW5ncyA9IChwYXlsb2FkOiBXaXRoQ2FsbGJhY2s8SVNldHRpbmdzUmVzcG9uc2UsIElTZXR0aW5nc1Jlc3BvbnNlPikgPT5cbiAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzYXZlQWNjb3VudFNldHRpbmdzJywgcGF5bG9hZCk7XG5cbiAgLy8gVGVuYW50cyBBY3Rpb25zXG4gIHNldFRlbmFudHNTdGF0ZSA9IChzdGF0ZTogUGFydGlhbDxUZW5hbnRzU3RhdGU+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzZXRUZW5hbnRzU3RhdGUnLCBzdGF0ZSk7XG4gIHJlc2V0VGVuYW50c1N0YXRlID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbigncmVzZXRUZW5hbnRzU3RhdGUnKTtcbiAgc3dpdGNoVGVuYW50ID0gKHBheWxvYWQ6IFdpdGhDYWxsYmFjazxJU3dpdGNoVGVuYW50PikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignc3dpdGNoVGVuYW50JywgcGF5bG9hZCk7XG4gIGxvYWRUZW5hbnRzID0gKHBheWxvYWQ/OiBXaXRoQ2FsbGJhY2s8e30sIElUZW5hbnRzUmVzcG9uc2VbXT4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2xvYWRUZW5hbnRzJywgcGF5bG9hZCk7XG5cbiAgLy8gUm9sZXMgQWN0aW9uc1xuICBzZXRSb2xlc1N0YXRlID0gKHN0YXRlOiBSb2xlc1N0YXRlKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzZXRSb2xlc1N0YXRlJywgc3RhdGUpO1xuICByZXNldFJvbGVzU3RhdGUgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXNldFJvbGVzU3RhdGUnKTtcbiAgbG9hZFJvbGVzQW5kUGVybWlzc2lvbnMgPSAocGF5bG9hZD86IFdpdGhTaWxlbnRMb2FkPHt9PikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignbG9hZFJvbGVzQW5kUGVybWlzc2lvbnMnLCBwYXlsb2FkKTtcbiAgYWRkUm9sZSA9IChwYXlsb2FkOiBXaXRoQ2FsbGJhY2s8SUFkZFJvbGUsIElSb2xlPikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignYWRkUm9sZScsIHBheWxvYWQpO1xuICB1cGRhdGVSb2xlID0gKHBheWxvYWQ6IFdpdGhDYWxsYmFjazxJVXBkYXRlUm9sZSwgSVJvbGU+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCd1cGRhdGVSb2xlJywgcGF5bG9hZCk7XG4gIGRlbGV0ZVJvbGUgPSAocGF5bG9hZDogV2l0aENhbGxiYWNrPElEZWxldGVSb2xlPikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignZGVsZXRlUm9sZScsIHBheWxvYWQpO1xuICBhdHRhY2hQZXJtaXNzaW9uc1RvUm9sZSA9IChwYXlsb2FkOiBXaXRoQ2FsbGJhY2s8SUF0dGFjaFBlcm1pc3Npb25zVG9Sb2xlLCBJUm9sZT4pID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbignYXR0YWNoUGVybWlzc2lvbnNUb1JvbGUnLCBwYXlsb2FkKTtcbiAgYXR0YWNoUGVybWlzc2lvblRvUm9sZXMgPSAoXG4gICAgcGF5bG9hZDogV2l0aENhbGxiYWNrPHtcbiAgICAgIHBlcm1pc3Npb25JZDogc3RyaW5nO1xuICAgICAgcm9sZUlkczogc3RyaW5nW107XG4gICAgfSxcbiAgICAgIElSb2xlUGVybWlzc2lvbj4sXG4gICkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignYXR0YWNoUGVybWlzc2lvblRvUm9sZXMnLCBwYXlsb2FkKTtcbn1cbiJdfQ==
@@ -312,6 +312,7 @@ class FronteggAppAuthService {
312
312
  { field: 'activateState', subject: this.activateStateSubject$ },
313
313
  { field: 'apiTokensState', subject: this.apiTokensStateSubject$ },
314
314
  { field: 'forgotPasswordState', subject: this.forgotPasswordStateSubject$ },
315
+ { field: 'tenantsState', subject: this.tenantsStateSubject$ },
315
316
  { field: 'loginState', subject: this.loginStateSubject$ },
316
317
  { field: 'mfaState', subject: this.mfaStateSubject$ },
317
318
  { field: 'profileState', subject: this.profileStateSubject$ },