Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

ngx-auth

Package Overview
Dependencies
Maintainers
1
Versions
18
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ngx-auth - npm Package Compare versions

Comparing version 5.3.0 to 5.4.0

2

auth.service.d.ts

@@ -30,3 +30,3 @@ import { HttpRequest, HttpErrorResponse } from '@angular/common/http';

*/
abstract refreshShouldHappen(response: HttpErrorResponse): boolean;
abstract refreshShouldHappen(response: HttpErrorResponse, request?: HttpRequest<any>): boolean;
/**

@@ -33,0 +33,0 @@ * Verify that outgoing request is refresh-token,

(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/router'), require('rxjs/operators'), require('@angular/common/http'), require('rxjs')) :
typeof define === 'function' && define.amd ? define('ngx-auth', ['exports', '@angular/core', '@angular/router', 'rxjs/operators', '@angular/common/http', 'rxjs'], factory) :
(factory((global['ngx-auth'] = {}),global.ng.core,global.ng.router,global.rxjs.operators,global.ng.common.http,global.rxjs));
}(this, (function (exports,core,router,operators,http,rxjs) { 'use strict';
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/router'), require('rxjs/operators'), require('@angular/common/http'), require('rxjs')) :
typeof define === 'function' && define.amd ? define('ngx-auth', ['exports', '@angular/core', '@angular/common', '@angular/router', 'rxjs/operators', '@angular/common/http', 'rxjs'], factory) :
(factory((global['ngx-auth'] = {}),global.ng.core,global.ng.common,global.ng.router,global.rxjs.operators,global.ng.common.http,global.rxjs));
}(this, (function (exports,core,common,router,operators,http,rxjs) { 'use strict';

@@ -46,7 +46,9 @@ /**

* @export
* \@dynamic
*/
var PublicGuard = /** @class */ (function () {
function PublicGuard(authService, protectedFallbackPageUri, router$$1) {
function PublicGuard(authService, protectedFallbackPageUri, document, router$$1) {
this.authService = authService;
this.protectedFallbackPageUri = protectedFallbackPageUri;
this.document = document;
this.router = router$$1;

@@ -129,3 +131,3 @@ }

if (url.startsWith('http')) {
window.location.href = url;
this.document.location.href = url;
}

@@ -144,2 +146,3 @@ else {

{ type: String, decorators: [{ type: core.Inject, args: [PROTECTED_FALLBACK_PAGE_URI,] }] },
{ type: Document, decorators: [{ type: core.Inject, args: [common.DOCUMENT,] }] },
{ type: router.Router }

@@ -162,7 +165,9 @@ ];

* @export
* \@dynamic
*/
var ProtectedGuard = /** @class */ (function () {
function ProtectedGuard(authService, publicFallbackPageUri, router$$1) {
function ProtectedGuard(authService, publicFallbackPageUri, document, router$$1) {
this.authService = authService;
this.publicFallbackPageUri = publicFallbackPageUri;
this.document = document;
this.router = router$$1;

@@ -248,3 +253,3 @@ }

if (url.startsWith('http')) {
window.location.href = url;
this.document.location.href = url;
}

@@ -263,2 +268,3 @@ else {

{ type: String, decorators: [{ type: core.Inject, args: [PUBLIC_FALLBACK_PAGE_URI,] }] },
{ type: Document, decorators: [{ type: core.Inject, args: [common.DOCUMENT,] }] },
{ type: router.Router }

@@ -271,14 +277,14 @@ ];

/*! *****************************************************************************
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0
Copyright (c) Microsoft Corporation.
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */

@@ -416,3 +422,3 @@ function __read(o, n) {

/** @type {?} */
var refreshShouldHappen = authService.refreshShouldHappen(res);
var refreshShouldHappen = authService.refreshShouldHappen(res, req);
if (refreshShouldHappen && !this.refreshInProgress) {

@@ -625,2 +631,2 @@ this.refreshInProgress = true;

//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWF1dGgudW1kLmpzLm1hcCIsInNvdXJjZXMiOlsibmc6Ly9uZ3gtYXV0aC9hdXRoLnNlcnZpY2UudHMiLCJuZzovL25neC1hdXRoL3Rva2Vucy50cyIsIm5nOi8vbmd4LWF1dGgvcHVibGljLmd1YXJkLnRzIiwibmc6Ly9uZ3gtYXV0aC9wcm90ZWN0ZWQuZ3VhcmQudHMiLCJub2RlX21vZHVsZXMvdHNsaWIvdHNsaWIuZXM2LmpzIiwibmc6Ly9uZ3gtYXV0aC9hdXRoLmludGVyY2VwdG9yLnRzIiwibmc6Ly9uZ3gtYXV0aC9hdXRoLm1vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwUmVxdWVzdCwgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogRXNzZW50aWFsIHNlcnZpY2UgZm9yIGF1dGhlbnRpY2F0aW9uXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBdXRoU2VydmljZSB7XG5cbiAgLyoqXG4gICAqIENoZWNrLCBpZiB1c2VyIGFscmVhZHkgYXV0aG9yaXplZC5cbiAgICogU2hvdWxkIHJldHVybiBPYnNlcnZhYmxlIHdpdGggdHJ1ZSBvciBmYWxzZSB2YWx1ZXNcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBpc0F1dGhvcml6ZWQoKTogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICAvKipcbiAgICogR2V0IGFjY2VzcyB0b2tlblxuICAgKiBTaG91bGQgcmV0dXJuIGFjY2VzcyB0b2tlbiBpbiBPYnNlcnZhYmxlIGZyb20gZS5nLlxuICAgKiBsb2NhbFN0b3JhZ2VcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXRBY2Nlc3NUb2tlbigpOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uLCB0aGF0IHNob3VsZCBwZXJmb3JtIHJlZnJlc2ggdG9rZW5cbiAgICogU2hvdWxkIGJlIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZWQgc28gaW50ZXJjZXB0b3JcbiAgICogY2FuIGV4ZWN1dGUgcGVuZGluZyByZXF1ZXN0cyBvciByZXRyeSBvcmlnaW5hbCBvbmVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWZyZXNoVG9rZW4oKTogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gIC8qKlxuICAgKiBGdW5jdGlvbiwgY2hlY2tzIHJlc3BvbnNlIG9mIGZhaWxlZCByZXF1ZXN0IHRvIGRldGVybWluZSxcbiAgICogd2hldGhlciB0b2tlbiBiZSByZWZyZXNoZWQgb3Igbm90LlxuICAgKlxuICAgKiBFc3NlbnRpYWxseSBjaGVja3Mgc3RhdHVzXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVmcmVzaFNob3VsZEhhcHBlbihyZXNwb25zZTogSHR0cEVycm9yUmVzcG9uc2UpOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBWZXJpZnkgdGhhdCBvdXRnb2luZyByZXF1ZXN0IGlzIHJlZnJlc2gtdG9rZW4sXG4gICAqIHNvIGludGVyY2VwdG9yIHdvbid0IGludGVyY2VwdCB0aGlzIHJlcXVlc3RcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCB2ZXJpZnlSZWZyZXNoVG9rZW4/KHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4pOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgcmVxdWVzdCBtdXN0IGJlIHNraXBwZWQgYnkgaW50ZXJjZXB0b3IuXG4gICAqIFVzZWZ1bCBmb3IgcmVxdWVzdHMgc3VjaCBhcyByZXF1ZXN0IHRva2VuIHdoaWNoIGRvZXNuJ3QgcmVxdWlyZSB0b2tlbiBpbiBoZWFkZXJzXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3Qgc2tpcFJlcXVlc3Q/KHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4pOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBZGQgdG9rZW4gdG8gaGVhZGVycywgZGVwZW5kZW50IG9uIHNlcnZlclxuICAgKiBzZXQtdXAsIGJ5IGRlZmF1bHQgYWRkcyBhIGJlYXJlciB0b2tlbi5cbiAgICogQ2FsbGVkIGJ5IGludGVyY2VwdG9yLlxuICAgKiBUbyBjaGFuZ2UgYmVoYXZpb3IsIG92ZXJyaWRlIHRoaXMgbWV0aG9kLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldEhlYWRlcnM/KHRva2VuOiBzdHJpbmcpOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB9O1xuXG4gIC8qKlxuICAgKiBTYXZlcyBsYXN0IGludGVycnVwdGVkIHVybCBpbnNpZGUgb2YgdGhlIHNlcnZpY2UgZm9yIGZ1cnRoZXIgcmV1c2FnZSxcbiAgICogZS5nLiByZXN0b3JpbmcgaW50ZXJydXB0ZWQgcGFnZSBhZnRlciBsb2dnaW5nIGluXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3Qgc2V0SW50ZXJydXB0ZWRVcmw/KHVybDogc3RyaW5nKTogdm9pZDtcblxuICAvKipcbiAgICogVmVyaWZ5IHRoYXQgb3V0Z29pbmcgcmVxdWVzdCBpcyByZWZyZXNoLXRva2VuLFxuICAgKiBzbyBpbnRlcmNlcHRvciB3b24ndCBpbnRlcmNlcHQgdGhpcyByZXF1ZXN0XG4gICAqIEBkZXByZWNhdGVkIER1ZSB0byBpbGxvZ2ljYWwgbWVhbmluZy9mdW5jdGlvbmFsaXR5IHRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWRcbiAgICogQHNlZSB2ZXJpZnlSZWZyZXNoVG9rZW5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCB2ZXJpZnlUb2tlblJlcXVlc3Q/KHVybDogc3RyaW5nKTogYm9vbGVhbjtcbn1cbiIsImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBBVVRIX1NFUlZJQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ0FVVEhfU0VSVklDRScpO1xuZXhwb3J0IGNvbnN0IFBVQkxJQ19GQUxMQkFDS19QQUdFX1VSSSA9IG5ldyBJbmplY3Rpb25Ub2tlbignUFVCTElDX0ZBTExCQUNLX1BBR0VfVVJJJyk7XG5leHBvcnQgY29uc3QgUFJPVEVDVEVEX0ZBTExCQUNLX1BBR0VfVVJJID0gbmV3IEluamVjdGlvblRva2VuKCdQUk9URUNURURfRkFMTEJBQ0tfUEFHRV9VUkknKTtcbiIsImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ2FuQWN0aXZhdGUsXG4gIENhbkFjdGl2YXRlQ2hpbGQsXG4gIFJvdXRlcixcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgUm91dGVyU3RhdGVTbmFwc2hvdFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEFVVEhfU0VSVklDRSwgUFJPVEVDVEVEX0ZBTExCQUNLX1BBR0VfVVJJIH0gZnJvbSAnLi90b2tlbnMnO1xuXG4vKipcbiAqIEd1YXJkLCBjaGVja3MgYWNjZXNzIHRva2VuIGF2YWlsYWJpbGl0eSBhbmQgYWxsb3dzIG9yIGRpc2FsbG93cyBhY2Nlc3MgdG8gcGFnZSxcbiAqIGFuZCByZWRpcmVjdHMgb3V0XG4gKlxuICogdXNhZ2U6IHsgcGF0aDogJ3Rlc3QnLCBjb21wb25lbnQ6IFRlc3RDb21wb25lbnQsIGNhbkFjdGl2YXRlOiBbIFB1YmxpY0d1YXJkIF0gfVxuICpcbiAqIEBleHBvcnRcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFB1YmxpY0d1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUsIENhbkFjdGl2YXRlQ2hpbGQge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoQVVUSF9TRVJWSUNFKSBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICBASW5qZWN0KFBST1RFQ1RFRF9GQUxMQkFDS19QQUdFX1VSSSkgcHJpdmF0ZSBwcm90ZWN0ZWRGYWxsYmFja1BhZ2VVcmk6IHN0cmluZyxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXG4gICkge31cblxuICAvKipcbiAgICogQ2FuQWN0aXZhdGUgaGFuZGxlclxuICAgKi9cbiAgcHVibGljIGNhbkFjdGl2YXRlKFxuICAgIF9yb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5pc0F1dGhvcml6ZWQoKVxuICAgICAgLnBpcGUobWFwKChpc0F1dGhvcml6ZWQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKGlzQXV0aG9yaXplZCAmJiAhdGhpcy5pc1Byb3RlY3RlZFBhZ2Uoc3RhdGUpKSB7XG4gICAgICAgICAgdGhpcy5uYXZpZ2F0ZSh0aGlzLnByb3RlY3RlZEZhbGxiYWNrUGFnZVVyaSk7XG5cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYW5BY3RpdmF0ZUNoaWxkIGhhbmRsZXJcbiAgICovXG4gIHB1YmxpYyBjYW5BY3RpdmF0ZUNoaWxkKFxuICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICAgIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XG4gICk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmNhbkFjdGl2YXRlKHJvdXRlLCBzdGF0ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2ssIGlmIGN1cnJlbnQgcGFnZSBpcyBwcm90ZWN0ZWQgZmFsbGJhY2sgcGFnZVxuICAgKi9cbiAgcHJpdmF0ZSBpc1Byb3RlY3RlZFBhZ2Uoc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3RhdGUudXJsID09PSB0aGlzLnByb3RlY3RlZEZhbGxiYWNrUGFnZVVyaTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZSBhd2F5IGZyb20gdGhlIGFwcCAvIHBhdGhcbiAgICovXG4gIHByaXZhdGUgbmF2aWdhdGUodXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodXJsLnN0YXJ0c1dpdGgoJ2h0dHAnKSkge1xuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodXJsKTtcbiAgICB9XG4gIH1cblxufVxuIiwiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBSb3V0ZXIsXG4gIENhbkFjdGl2YXRlLFxuICBDYW5BY3RpdmF0ZUNoaWxkLFxuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBSb3V0ZXJTdGF0ZVNuYXBzaG90XG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVVUSF9TRVJWSUNFLCBQVUJMSUNfRkFMTEJBQ0tfUEFHRV9VUkkgfSBmcm9tICcuL3Rva2Vucyc7XG5cbi8qKlxuICogR3VhcmQsIGNoZWNrcyBhY2Nlc3MgdG9rZW4gYXZhaWxhYmlsaXR5IGFuZCBhbGxvd3Mgb3IgZGlzYWxsb3dzIGFjY2VzcyB0byBwYWdlLFxuICogYW5kIHJlZGlyZWN0cyBvdXRcbiAqXG4gKiB1c2FnZTogeyBwYXRoOiAndGVzdCcsIGNvbXBvbmVudDogVGVzdENvbXBvbmVudCwgY2FuQWN0aXZhdGU6IFsgQXV0aEd1YXJkIF0gfVxuICpcbiAqIEBleHBvcnRcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFByb3RlY3RlZEd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUsIENhbkFjdGl2YXRlQ2hpbGQge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoQVVUSF9TRVJWSUNFKXByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIEBJbmplY3QoUFVCTElDX0ZBTExCQUNLX1BBR0VfVVJJKSBwcml2YXRlIHB1YmxpY0ZhbGxiYWNrUGFnZVVyaTogc3RyaW5nLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBDYW5BY3RpdmF0ZSBoYW5kbGVyXG4gICAqL1xuICBwdWJsaWMgY2FuQWN0aXZhdGUoXG4gICAgX3JvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICAgIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XG4gICk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmF1dGhTZXJ2aWNlLmlzQXV0aG9yaXplZCgpXG4gICAgICAucGlwZShtYXAoKGlzQXV0aG9yaXplZDogYm9vbGVhbikgPT4ge1xuICAgICAgICBpZiAoIWlzQXV0aG9yaXplZCAmJiAhdGhpcy5pc1B1YmxpY1BhZ2Uoc3RhdGUpKSB7XG4gICAgICAgICAgaWYgKHRoaXMuYXV0aFNlcnZpY2Uuc2V0SW50ZXJydXB0ZWRVcmwpIHtcbiAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2Uuc2V0SW50ZXJydXB0ZWRVcmwoc3RhdGUudXJsKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLm5hdmlnYXRlKHRoaXMucHVibGljRmFsbGJhY2tQYWdlVXJpKTtcblxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbkFjdGl2YXRlQ2hpbGQgaGFuZGxlclxuICAgKi9cbiAgcHVibGljIGNhbkFjdGl2YXRlQ2hpbGQoXG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3RcbiAgKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FuQWN0aXZhdGUocm91dGUsIHN0YXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjaywgaWYgY3VycmVudCBwYWdlIGlzIHB1YmxpYyBmYWxsYmFjayBwYWdlXG4gICAqL1xuICBwcml2YXRlIGlzUHVibGljUGFnZShzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzdGF0ZS51cmwgPT09IHRoaXMucHVibGljRmFsbGJhY2tQYWdlVXJpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlIGF3YXkgZnJvbSB0aGUgYXBwIC8gcGF0aFxuICAgKi9cbiAgcHJpdmF0ZSBuYXZpZ2F0ZSh1cmw6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh1cmwuc3RhcnRzV2l0aCgnaHR0cCcpKSB7XG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmwpO1xuICAgIH1cbiAgfVxuXG59XG4iLCIvKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZVxyXG50aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZVxyXG5MaWNlbnNlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG5cclxuVEhJUyBDT0RFIElTIFBST1ZJREVEIE9OIEFOICpBUyBJUyogQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWVxyXG5LSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OIEFOWSBJTVBMSUVEXHJcbldBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBUSVRMRSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsXHJcbk1FUkNIQU5UQUJMSVRZIE9SIE5PTi1JTkZSSU5HRU1FTlQuXHJcblxyXG5TZWUgdGhlIEFwYWNoZSBWZXJzaW9uIDIuMCBMaWNlbnNlIGZvciBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcclxuYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSAqL1xyXG5cclxudmFyIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcclxuICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXh0ZW5kcyhkLCBiKSB7XHJcbiAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XHJcbiAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcclxuICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgIHMgPSBhcmd1bWVudHNbaV07XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcclxuICAgIH1cclxuICAgIHJldHVybiB0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcclxuICAgIHZhciB0ID0ge307XHJcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcclxuICAgICAgICB0W3BdID0gc1twXTtcclxuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMClcclxuICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XHJcbiAgICByZXR1cm4gdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcclxuICAgIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCwgciA9IGMgPCAzID8gdGFyZ2V0IDogZGVzYyA9PT0gbnVsbCA/IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSA6IGRlc2MsIGQ7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xyXG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcclxuICAgIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3BhcmFtKHBhcmFtSW5kZXgsIGRlY29yYXRvcikge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIGtleSkgeyBkZWNvcmF0b3IodGFyZ2V0LCBrZXksIHBhcmFtSW5kZXgpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZShyZXN1bHQudmFsdWUpOyB9KS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2dlbmVyYXRvcih0aGlzQXJnLCBib2R5KSB7XHJcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xyXG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcclxuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XHJcbiAgICAgICAgd2hpbGUgKF8pIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IHlbb3BbMF0gJiAyID8gXCJyZXR1cm5cIiA6IG9wWzBdID8gXCJ0aHJvd1wiIDogXCJuZXh0XCJdKSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcclxuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFswLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgZXhwb3J0cykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAoIWV4cG9ydHMuaGFzT3duUHJvcGVydHkocCkpIGV4cG9ydHNbcF0gPSBtW3BdO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHtcclxuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcclxuICAgIGlmICghbSkgcmV0dXJuIG87XHJcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xyXG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XHJcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyAgfVxyXG4gICAgZnVuY3Rpb24gZnVsZmlsbCh2YWx1ZSkgeyByZXN1bWUoXCJuZXh0XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gcmVqZWN0KHZhbHVlKSB7IHJlc3VtZShcInRocm93XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKGYsIHYpIHsgaWYgKGYodiksIHEuc2hpZnQoKSwgcS5sZW5ndGgpIHJlc3VtZShxWzBdWzBdLCBxWzBdWzFdKTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0RlbGVnYXRvcihvKSB7XHJcbiAgICB2YXIgaSwgcDtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiwgZnVuY3Rpb24gKGUpIHsgdGhyb3cgZTsgfSksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaWYgKG9bbl0pIGlbbl0gPSBmdW5jdGlvbiAodikgeyByZXR1cm4gKHAgPSAhcCkgPyB7IHZhbHVlOiBfX2F3YWl0KG9bbl0odikpLCBkb25lOiBuID09PSBcInJldHVyblwiIH0gOiBmID8gZih2KSA6IHY7IH07IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNWYWx1ZXMobykge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl07XHJcbiAgICByZXR1cm4gbSA/IG0uY2FsbChvKSA6IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fbWFrZVRlbXBsYXRlT2JqZWN0KGNvb2tlZCwgcmF3KSB7XHJcbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxyXG4gICAgcmV0dXJuIGNvb2tlZDtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XHJcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xyXG4gICAgdmFyIHJlc3VsdCA9IHt9O1xyXG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZCwgaykpIHJlc3VsdFtrXSA9IG1vZFtrXTtcclxuICAgIHJlc3VsdC5kZWZhdWx0ID0gbW9kO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0RGVmYXVsdChtb2QpIHtcclxuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgZGVmYXVsdDogbW9kIH07XHJcbn1cclxuIiwiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEh0dHBDbGllbnQsXG4gIEh0dHBFdmVudCxcbiAgSHR0cEludGVyY2VwdG9yLFxuICBIdHRwSGFuZGxlcixcbiAgSHR0cFJlcXVlc3QsXG4gIEh0dHBFcnJvclJlc3BvbnNlXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgZmlyc3QsIHN3aXRjaE1hcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBBVVRIX1NFUlZJQ0UgfSBmcm9tICcuL3Rva2Vucyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBdXRoSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuXG4gIC8qKlxuICAgKiBJcyByZWZyZXNoIHRva2VuIGlzIGJlaW5nIGV4ZWN1dGVkXG4gICAqL1xuICBwcml2YXRlIHJlZnJlc2hJblByb2dyZXNzID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIE5vdGlmeSBhbGwgb3V0c3RhbmRpbmcgcmVxdWVzdHMgdGhyb3VnaCB0aGlzIHN1YmplY3RcbiAgICovXG4gIHByaXZhdGUgcmVmcmVzaFN1YmplY3Q6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuXG4gIC8qKlxuICAgKiBJbnRlcmNlcHQgYW4gb3V0Z29pbmcgYEh0dHBSZXF1ZXN0YFxuICAgKi9cbiAgcHVibGljIGludGVyY2VwdChcbiAgICByZXE6IEh0dHBSZXF1ZXN0PGFueT4sXG4gICAgZGVsZWdhdGU6IEh0dHBIYW5kbGVyXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICBpZiAodGhpcy5za2lwUmVxdWVzdChyZXEpKSB7XG4gICAgICByZXR1cm4gZGVsZWdhdGUuaGFuZGxlKHJlcSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucHJvY2Vzc0ludGVyY2VwdChyZXEsIGRlbGVnYXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzIGFsbCB0aGUgcmVxdWVzdHMgdmlhIGN1c3RvbSBpbnRlcmNlcHRvcnMuXG4gICAqL1xuICBwcml2YXRlIHByb2Nlc3NJbnRlcmNlcHQoXG4gICAgb3JpZ2luYWw6IEh0dHBSZXF1ZXN0PGFueT4sXG4gICAgZGVsZWdhdGU6IEh0dHBIYW5kbGVyXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICBjb25zdCBjbG9uZTogSHR0cFJlcXVlc3Q8YW55PiA9IG9yaWdpbmFsLmNsb25lKCk7XG5cbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KGNsb25lKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgocmVxOiBIdHRwUmVxdWVzdDxhbnk+KSA9PiBkZWxlZ2F0ZS5oYW5kbGUocmVxKSksXG4gICAgICAgIGNhdGNoRXJyb3IoKHJlczogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMucmVzcG9uc2VFcnJvcihjbG9uZSwgcmVzKSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmVxdWVzdCBpbnRlcmNlcHRvci4gRGVsYXlzIHJlcXVlc3QgaWYgcmVmcmVzaCBpcyBpbiBwcm9ncmVzc1xuICAgKiBvdGhlcndpc2UgYWRkcyB0b2tlbiB0byB0aGUgaGVhZGVyc1xuICAgKi9cbiAgcHJpdmF0ZSByZXF1ZXN0KHJlcTogSHR0cFJlcXVlc3Q8YW55Pik6IE9ic2VydmFibGU8SHR0cFJlcXVlc3Q8YW55Pj4ge1xuICAgIGlmICh0aGlzLnJlZnJlc2hJblByb2dyZXNzKSB7XG4gICAgICByZXR1cm4gdGhpcy5kZWxheVJlcXVlc3QocmVxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hZGRUb2tlbihyZXEpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZhaWxlZCByZXF1ZXN0IGludGVyY2VwdG9yLCBjaGVjayBpZiBpdCBoYXMgdG8gYmUgcHJvY2Vzc2VkIHdpdGggcmVmcmVzaFxuICAgKi9cbiAgcHJpdmF0ZSByZXNwb25zZUVycm9yKFxuICAgIHJlcTogSHR0cFJlcXVlc3Q8YW55PixcbiAgICByZXM6IEh0dHBFcnJvclJlc3BvbnNlXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICBjb25zdCBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UgPVxuICAgICAgdGhpcy5pbmplY3Rvci5nZXQ8QXV0aFNlcnZpY2U+KEFVVEhfU0VSVklDRSk7XG4gICAgY29uc3QgcmVmcmVzaFNob3VsZEhhcHBlbjogYm9vbGVhbiA9XG4gICAgICBhdXRoU2VydmljZS5yZWZyZXNoU2hvdWxkSGFwcGVuKHJlcyk7XG5cbiAgICBpZiAocmVmcmVzaFNob3VsZEhhcHBlbiAmJiAhdGhpcy5yZWZyZXNoSW5Qcm9ncmVzcykge1xuICAgICAgdGhpcy5yZWZyZXNoSW5Qcm9ncmVzcyA9IHRydWU7XG5cbiAgICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC5yZWZyZXNoVG9rZW4oKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaFN1YmplY3QubmV4dCh0cnVlKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaFN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGlmIChyZWZyZXNoU2hvdWxkSGFwcGVuICYmIHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybiB0aGlzLnJldHJ5UmVxdWVzdChyZXEsIHJlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRocm93RXJyb3IocmVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYWNjZXNzIHRva2VuIHRvIGhlYWRlcnMgb3IgdGhlIHJlcXVlc3RcbiAgICovXG4gIHByaXZhdGUgYWRkVG9rZW4ocmVxOiBIdHRwUmVxdWVzdDxhbnk+KTogT2JzZXJ2YWJsZTxIdHRwUmVxdWVzdDxhbnk+PiB7XG4gICAgY29uc3QgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlID1cbiAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0PEF1dGhTZXJ2aWNlPihBVVRIX1NFUlZJQ0UpO1xuXG4gICAgcmV0dXJuIGF1dGhTZXJ2aWNlLmdldEFjY2Vzc1Rva2VuKClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHRva2VuOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICAgIGxldCBzZXRIZWFkZXJzOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB9O1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGF1dGhTZXJ2aWNlLmdldEhlYWRlcnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgc2V0SGVhZGVycyA9IGF1dGhTZXJ2aWNlLmdldEhlYWRlcnModG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc2V0SGVhZGVycyA9IHsgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJlcS5jbG9uZSh7IHNldEhlYWRlcnMgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHJlcTtcbiAgICAgICAgfSksXG4gICAgICAgIGZpcnN0KClcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRGVsYXkgcmVxdWVzdCwgYnkgc3Vic2NyaWJpbmcgb24gcmVmcmVzaCBldmVudCwgb25jZSBpdCBmaW5pc2hlZCwgcHJvY2VzcyBpdFxuICAgKiBvdGhlcndpc2UgdGhyb3cgZXJyb3JcbiAgICovXG4gIHByaXZhdGUgZGVsYXlSZXF1ZXN0KHJlcTogSHR0cFJlcXVlc3Q8YW55Pik6IE9ic2VydmFibGU8SHR0cFJlcXVlc3Q8YW55Pj4ge1xuICAgIHJldHVybiB0aGlzLnJlZnJlc2hTdWJqZWN0LnBpcGUoXG4gICAgICBmaXJzdCgpLFxuICAgICAgc3dpdGNoTWFwKChzdGF0dXM6IGJvb2xlYW4pID0+XG4gICAgICAgIHN0YXR1cyA/IHRoaXMuYWRkVG9rZW4ocmVxKSA6IHRocm93RXJyb3IocmVxKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cnkgcmVxdWVzdCwgYnkgc3Vic2NyaWJpbmcgb24gcmVmcmVzaCBldmVudCwgb25jZSBpdCBmaW5pc2hlZCwgcHJvY2VzcyBpdFxuICAgKiBvdGhlcndpc2UgdGhyb3cgZXJyb3JcbiAgICovXG4gIHByaXZhdGUgcmV0cnlSZXF1ZXN0KFxuICAgIHJlcTogSHR0cFJlcXVlc3Q8YW55PixcbiAgICByZXM6IEh0dHBFcnJvclJlc3BvbnNlXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICBjb25zdCBodHRwOiBIdHRwQ2xpZW50ID1cbiAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0PEh0dHBDbGllbnQ+KEh0dHBDbGllbnQpO1xuXG4gICAgcmV0dXJuIHRoaXMucmVmcmVzaFN1YmplY3QucGlwZShcbiAgICAgIGZpcnN0KCksXG4gICAgICBzd2l0Y2hNYXAoKHN0YXR1czogYm9vbGVhbikgPT5cbiAgICAgICAgc3RhdHVzID8gaHR0cC5yZXF1ZXN0KHJlcSkgOiB0aHJvd0Vycm9yKHJlcyB8fCByZXEpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgcmVxdWVzdCBtdXN0IGJlIHNraXBwZWQgYnkgaW50ZXJjZXB0b3IuXG4gICAqL1xuICBwcml2YXRlIHNraXBSZXF1ZXN0KHJlcTogSHR0cFJlcXVlc3Q8YW55Pikge1xuICAgIGNvbnN0IHNraXBSZXF1ZXN0ID0gdGhpcy5leGVjKCdza2lwUmVxdWVzdCcsIHJlcSk7XG4gICAgY29uc3QgdmVyaWZ5UmVmcmVzaFRva2VuID0gdGhpcy5leGVjKCd2ZXJpZnlSZWZyZXNoVG9rZW4nLCByZXEpO1xuXG4gICAgLy8gZGVwcmVjYXRlZCwgd2lsbCBiZSByZW1vdmVkIHNvb25cbiAgICBjb25zdCB2ZXJpZnlUb2tlblJlcXVlc3QgPSB0aGlzLmV4ZWMoJ3ZlcmlmeVRva2VuUmVxdWVzdCcsIHJlcS51cmwpO1xuXG4gICAgcmV0dXJuIHNraXBSZXF1ZXN0IHx8IHZlcmlmeVJlZnJlc2hUb2tlbiB8fCB2ZXJpZnlUb2tlblJlcXVlc3Q7XG4gIH1cblxuICAvKipcbiAgICogRXhlYyBvcHRpb25hbCBtZXRob2QsIHdpbGwgYmUgcmVtb3ZlZCBpbiB1cGNvbWluZyB1cGRhdGVzLlxuICAgKiBUZW1wIG1ldGhvZCB1bnRpbCBgdmVyaWZ5VG9rZW5SZXF1ZXN0YCB3aWxsIGJlIGNvbXBsZXRlbHkgcmVwbGFjZWQgd2l0aCBza2lwUmVxdWVzdFxuICAgKi9cbiAgcHJpdmF0ZSBleGVjKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGNvbnN0IGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSA9XG4gICAgICB0aGlzLmluamVjdG9yLmdldDxBdXRoU2VydmljZT4oQVVUSF9TRVJWSUNFKTtcblxuICAgIGlmICh0eXBlb2YgYXV0aFNlcnZpY2VbbWV0aG9kXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIGF1dGhTZXJ2aWNlW21ldGhvZF0oLi4uYXJncyk7XG4gICAgfVxuICB9XG5cbn1cbiIsImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIVFRQX0lOVEVSQ0VQVE9SUyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuaW1wb3J0IHsgUHVibGljR3VhcmQgfSBmcm9tICcuL3B1YmxpYy5ndWFyZCc7XG5pbXBvcnQgeyBQcm90ZWN0ZWRHdWFyZCB9IGZyb20gJy4vcHJvdGVjdGVkLmd1YXJkJztcbmltcG9ydCB7IEF1dGhJbnRlcmNlcHRvciB9IGZyb20gJy4vYXV0aC5pbnRlcmNlcHRvcic7XG5cbkBOZ01vZHVsZSh7XG4gIHByb3ZpZGVyczogW1xuICAgIFB1YmxpY0d1YXJkLFxuICAgIFByb3RlY3RlZEd1YXJkLFxuICAgIEF1dGhJbnRlcmNlcHRvcixcbiAgICB7XG4gICAgICBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUyxcbiAgICAgIHVzZUNsYXNzOiBBdXRoSW50ZXJjZXB0b3IsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQXV0aE1vZHVsZSB7XG59XG4iXSwibmFtZXMiOlsiSW5qZWN0aW9uVG9rZW4iLCJyb3V0ZXIiLCJtYXAiLCJJbmplY3RhYmxlIiwiSW5qZWN0IiwiUm91dGVyIiwiU3ViamVjdCIsInN3aXRjaE1hcCIsImNhdGNoRXJyb3IiLCJ0aHJvd0Vycm9yIiwiZmlyc3QiLCJodHRwIiwiSHR0cENsaWVudCIsIkluamVjdG9yIiwiTmdNb2R1bGUiLCJIVFRQX0lOVEVSQ0VQVE9SUyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFNQTs7OztRQUFBO1NBK0RDO1FBQUQsa0JBQUM7SUFBRCxDQUFDOzs7Ozs7QUNyRUQ7QUFFQSxRQUFhLFlBQVksR0FBRyxJQUFJQSxtQkFBYyxDQUFDLGNBQWMsQ0FBQzs7QUFDOUQsUUFBYSx3QkFBd0IsR0FBRyxJQUFJQSxtQkFBYyxDQUFDLDBCQUEwQixDQUFDOztBQUN0RixRQUFhLDJCQUEyQixHQUFHLElBQUlBLG1CQUFjLENBQUMsNkJBQTZCLENBQUM7Ozs7OztBQ0o1Rjs7Ozs7Ozs7QUFzQkE7UUFHRSxxQkFDZ0MsV0FBd0IsRUFDVCx3QkFBZ0MsRUFDckVDLFNBQWM7WUFGUSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtZQUNULDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBUTtZQUNyRSxXQUFNLEdBQU5BLFNBQU0sQ0FBUTtTQUNwQjs7Ozs7Ozs7OztRQUtHLGlDQUFXOzs7Ozs7WUFBbEIsVUFDRSxNQUE4QixFQUM5QixLQUEwQjtnQkFGNUIsaUJBY0M7Z0JBVkMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRTtxQkFDbkMsSUFBSSxDQUFDQyxhQUFHLENBQUMsVUFBQyxZQUFxQjtvQkFDOUIsSUFBSSxZQUFZLElBQUksQ0FBQyxLQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxFQUFFO3dCQUNoRCxLQUFJLENBQUMsUUFBUSxDQUFDLEtBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO3dCQUU3QyxPQUFPLEtBQUssQ0FBQztxQkFDZDtvQkFFRCxPQUFPLElBQUksQ0FBQztpQkFDYixDQUFDLENBQUMsQ0FBQzthQUNQOzs7Ozs7Ozs7O1FBS00sc0NBQWdCOzs7Ozs7WUFBdkIsVUFDRSxLQUE2QixFQUM3QixLQUEwQjtnQkFFMUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQzthQUN2Qzs7Ozs7Ozs7O1FBS08scUNBQWU7Ozs7O1lBQXZCLFVBQXdCLEtBQTBCO2dCQUNoRCxPQUFPLEtBQUssQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLHdCQUF3QixDQUFDO2FBQ3BEOzs7Ozs7Ozs7UUFLTyw4QkFBUTs7Ozs7WUFBaEIsVUFBaUIsR0FBVztnQkFDMUIsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFO29CQUMxQixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7aUJBQzVCO3FCQUFNO29CQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUNoQzthQUNGOztvQkF0REZDLGVBQVU7Ozs7O3dCQVhGLFdBQVcsdUJBZWZDLFdBQU0sU0FBQyxZQUFZO3FEQUNuQkEsV0FBTSxTQUFDLDJCQUEyQjt3QkF2QnJDQyxhQUFNOzs7UUEwRVIsa0JBQUM7S0F4REQ7Ozs7OztBQ3RCQTs7Ozs7Ozs7QUFzQkE7UUFHRSx3QkFDK0IsV0FBd0IsRUFDWCxxQkFBNkIsRUFDL0RKLFNBQWM7WUFGTyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtZQUNYLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBUTtZQUMvRCxXQUFNLEdBQU5BLFNBQU0sQ0FBUTtTQUNwQjs7Ozs7Ozs7OztRQUtHLG9DQUFXOzs7Ozs7WUFBbEIsVUFDRSxNQUE4QixFQUM5QixLQUEwQjtnQkFGNUIsaUJBa0JDO2dCQWRDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUU7cUJBQ25DLElBQUksQ0FBQ0MsYUFBRyxDQUFDLFVBQUMsWUFBcUI7b0JBQzlCLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxLQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFO3dCQUM5QyxJQUFJLEtBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUU7NEJBQ3RDLEtBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3lCQUMvQzt3QkFFRCxLQUFJLENBQUMsUUFBUSxDQUFDLEtBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO3dCQUUxQyxPQUFPLEtBQUssQ0FBQztxQkFDZDtvQkFFRCxPQUFPLElBQUksQ0FBQztpQkFDYixDQUFDLENBQUMsQ0FBQzthQUNQOzs7Ozs7Ozs7O1FBS00seUNBQWdCOzs7Ozs7WUFBdkIsVUFDRSxLQUE2QixFQUM3QixLQUEwQjtnQkFFMUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQzthQUN2Qzs7Ozs7Ozs7O1FBS08scUNBQVk7Ozs7O1lBQXBCLFVBQXFCLEtBQTBCO2dCQUM3QyxPQUFPLEtBQUssQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLHFCQUFxQixDQUFDO2FBQ2pEOzs7Ozs7Ozs7UUFLTyxpQ0FBUTs7Ozs7WUFBaEIsVUFBaUIsR0FBVztnQkFDMUIsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFO29CQUMxQixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7aUJBQzVCO3FCQUFNO29CQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUNoQzthQUNGOztvQkExREZDLGVBQVU7Ozs7O3dCQVhGLFdBQVcsdUJBZWZDLFdBQU0sU0FBQyxZQUFZO3FEQUNuQkEsV0FBTSxTQUFDLHdCQUF3Qjt3QkF6QmxDQyxhQUFNOzs7UUFnRlIscUJBQUM7S0E1REQ7O0lDdEJBOzs7Ozs7Ozs7Ozs7OztBQWNBLGFBaUdnQixNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLEdBQUcsT0FBTyxNQUFNLEtBQUssVUFBVSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLENBQUM7WUFBRSxPQUFPLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQyxJQUFJO1lBQ0EsT0FBTyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSTtnQkFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM5RTtRQUNELE9BQU8sS0FBSyxFQUFFO1lBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO1NBQUU7Z0JBQy9CO1lBQ0osSUFBSTtnQkFDQSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3BEO29CQUNPO2dCQUFFLElBQUksQ0FBQztvQkFBRSxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUM7YUFBRTtTQUNwQztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztBQUVELGFBQWdCLFFBQVE7UUFDcEIsS0FBSyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7WUFDOUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekMsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDOzs7Ozs7O1FDeEdDLHlCQUFvQixRQUFrQjtZQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVOzs7O1lBUDlCLHNCQUFpQixHQUFHLEtBQUssQ0FBQzs7OztZQUsxQixtQkFBYyxHQUFxQixJQUFJQyxZQUFPLEVBQVcsQ0FBQztTQUV4Qjs7Ozs7Ozs7OztRQUtuQyxtQ0FBUzs7Ozs7O1lBQWhCLFVBQ0UsR0FBcUIsRUFDckIsUUFBcUI7Z0JBRXJCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDekIsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUM3QjtnQkFFRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDN0M7Ozs7Ozs7Ozs7UUFLTywwQ0FBZ0I7Ozs7OztZQUF4QixVQUNFLFFBQTBCLEVBQzFCLFFBQXFCO2dCQUZ2QixpQkFXQzs7b0JBUE8sS0FBSyxHQUFxQixRQUFRLENBQUMsS0FBSyxFQUFFO2dCQUVoRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO3FCQUN2QixJQUFJLENBQ0hDLG1CQUFTLENBQUMsVUFBQyxHQUFxQixJQUFLLE9BQUEsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBQSxDQUFDLEVBQzFEQyxvQkFBVSxDQUFDLFVBQUMsR0FBc0IsSUFBSyxPQUFBLEtBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFBLENBQUMsQ0FDdkUsQ0FBQzthQUNMOzs7Ozs7Ozs7OztRQU1PLGlDQUFPOzs7Ozs7WUFBZixVQUFnQixHQUFxQjtnQkFDbkMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7b0JBQzFCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDL0I7Z0JBRUQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzNCOzs7Ozs7Ozs7O1FBS08sdUNBQWE7Ozs7OztZQUFyQixVQUNFLEdBQXFCLEVBQ3JCLEdBQXNCO2dCQUZ4QixpQkErQkM7O29CQTNCTyxXQUFXLEdBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQWMsWUFBWSxDQUFDOztvQkFDeEMsbUJBQW1CLEdBQ3ZCLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUM7Z0JBRXRDLElBQUksbUJBQW1CLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUU7b0JBQ2xELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7b0JBRTlCLFdBQVc7eUJBQ1IsWUFBWSxFQUFFO3lCQUNkLFNBQVMsQ0FDUjt3QkFDRSxLQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO3dCQUMvQixLQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDaEMsRUFDRDt3QkFDRSxLQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO3dCQUMvQixLQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztxQkFDakMsQ0FDRixDQUFDO2lCQUNMO2dCQUVELElBQUksbUJBQW1CLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO29CQUNqRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2lCQUNwQztnQkFFRCxPQUFPQyxlQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDeEI7Ozs7Ozs7OztRQUtPLGtDQUFROzs7OztZQUFoQixVQUFpQixHQUFxQjs7b0JBQzlCLFdBQVcsR0FDZixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBYyxZQUFZLENBQUM7Z0JBRTlDLE9BQU8sV0FBVyxDQUFDLGNBQWMsRUFBRTtxQkFDaEMsSUFBSSxDQUNIUCxhQUFHLENBQUMsVUFBQyxLQUFhO29CQUNoQixJQUFJLEtBQUssRUFBRTs7NEJBQ0wsVUFBVSxTQUF1Qzt3QkFFckQsSUFBSSxPQUFPLFdBQVcsQ0FBQyxVQUFVLEtBQUssVUFBVSxFQUFFOzRCQUNoRCxVQUFVLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQzt5QkFDNUM7NkJBQU07NEJBQ0wsVUFBVSxHQUFHLEVBQUUsYUFBYSxFQUFFLFlBQVUsS0FBTyxFQUFFLENBQUM7eUJBQ25EO3dCQUVELE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLFVBQVUsWUFBQSxFQUFFLENBQUMsQ0FBQztxQkFDbEM7b0JBRUQsT0FBTyxHQUFHLENBQUM7aUJBQ1osQ0FBQyxFQUNGUSxlQUFLLEVBQUUsQ0FDUixDQUFDO2FBQ0w7Ozs7Ozs7Ozs7O1FBTU8sc0NBQVk7Ozs7OztZQUFwQixVQUFxQixHQUFxQjtnQkFBMUMsaUJBT0M7Z0JBTkMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDN0JBLGVBQUssRUFBRSxFQUNQSCxtQkFBUyxDQUFDLFVBQUMsTUFBZTtvQkFDeEIsT0FBQSxNQUFNLEdBQUcsS0FBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBR0UsZUFBVSxDQUFDLEdBQUcsQ0FBQztpQkFBQSxDQUM5QyxDQUNGLENBQUM7YUFDSDs7Ozs7Ozs7Ozs7O1FBTU8sc0NBQVk7Ozs7Ozs7WUFBcEIsVUFDRSxHQUFxQixFQUNyQixHQUFzQjs7b0JBRWhCRSxPQUFJLEdBQ1IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQWFDLGVBQVUsQ0FBQztnQkFFM0MsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDN0JGLGVBQUssRUFBRSxFQUNQSCxtQkFBUyxDQUFDLFVBQUMsTUFBZTtvQkFDeEIsT0FBQSxNQUFNLEdBQUdJLE9BQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUdGLGVBQVUsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDO2lCQUFBLENBQ3BELENBQ0YsQ0FBQzthQUNIOzs7Ozs7Ozs7UUFLTyxxQ0FBVzs7Ozs7WUFBbkIsVUFBb0IsR0FBcUI7O29CQUNqQyxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDOztvQkFDM0Msa0JBQWtCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLENBQUM7OztvQkFHekQsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDO2dCQUVuRSxPQUFPLFdBQVcsSUFBSSxrQkFBa0IsSUFBSSxrQkFBa0IsQ0FBQzthQUNoRTs7Ozs7Ozs7Ozs7O1FBTU8sOEJBQUk7Ozs7Ozs7WUFBWixVQUFhLE1BQWM7Z0JBQUUsY0FBYztxQkFBZCxVQUFjLEVBQWQscUJBQWMsRUFBZCxJQUFjO29CQUFkLDZCQUFjOzs7b0JBQ25DLFdBQVcsR0FDZixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBYyxZQUFZLENBQUM7Z0JBRTlDLElBQUksT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssVUFBVSxFQUFFO29CQUM3QyxPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBbkIsV0FBVyxXQUFZLElBQUksR0FBRTtpQkFDckM7YUFDRjs7b0JBakxGTixlQUFVOzs7Ozt3QkFmVVUsYUFBUTs7O1FBa003QixzQkFBQztLQW5MRDs7Ozs7O0FDZkE7UUFPQTtTQWFDOztvQkFiQUMsYUFBUSxTQUFDO3dCQUNSLFNBQVMsRUFBRTs0QkFDVCxXQUFXOzRCQUNYLGNBQWM7NEJBQ2QsZUFBZTs0QkFDZjtnQ0FDRSxPQUFPLEVBQUVDLHNCQUFpQjtnQ0FDMUIsUUFBUSxFQUFFLGVBQWU7Z0NBQ3pCLEtBQUssRUFBRSxJQUFJOzZCQUNaO3lCQUNGO3FCQUNGOztRQUVELGlCQUFDO0tBYkQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWF1dGgudW1kLmpzLm1hcCIsInNvdXJjZXMiOlsibmc6Ly9uZ3gtYXV0aC9hdXRoLnNlcnZpY2UudHMiLCJuZzovL25neC1hdXRoL3Rva2Vucy50cyIsIm5nOi8vbmd4LWF1dGgvcHVibGljLmd1YXJkLnRzIiwibmc6Ly9uZ3gtYXV0aC9wcm90ZWN0ZWQuZ3VhcmQudHMiLCJub2RlX21vZHVsZXMvdHNsaWIvdHNsaWIuZXM2LmpzIiwibmc6Ly9uZ3gtYXV0aC9hdXRoLmludGVyY2VwdG9yLnRzIiwibmc6Ly9uZ3gtYXV0aC9hdXRoLm1vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwUmVxdWVzdCwgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogRXNzZW50aWFsIHNlcnZpY2UgZm9yIGF1dGhlbnRpY2F0aW9uXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBdXRoU2VydmljZSB7XG5cbiAgLyoqXG4gICAqIENoZWNrLCBpZiB1c2VyIGFscmVhZHkgYXV0aG9yaXplZC5cbiAgICogU2hvdWxkIHJldHVybiBPYnNlcnZhYmxlIHdpdGggdHJ1ZSBvciBmYWxzZSB2YWx1ZXNcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBpc0F1dGhvcml6ZWQoKTogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICAvKipcbiAgICogR2V0IGFjY2VzcyB0b2tlblxuICAgKiBTaG91bGQgcmV0dXJuIGFjY2VzcyB0b2tlbiBpbiBPYnNlcnZhYmxlIGZyb20gZS5nLlxuICAgKiBsb2NhbFN0b3JhZ2VcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXRBY2Nlc3NUb2tlbigpOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uLCB0aGF0IHNob3VsZCBwZXJmb3JtIHJlZnJlc2ggdG9rZW5cbiAgICogU2hvdWxkIGJlIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZWQgc28gaW50ZXJjZXB0b3JcbiAgICogY2FuIGV4ZWN1dGUgcGVuZGluZyByZXF1ZXN0cyBvciByZXRyeSBvcmlnaW5hbCBvbmVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWZyZXNoVG9rZW4oKTogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gIC8qKlxuICAgKiBGdW5jdGlvbiwgY2hlY2tzIHJlc3BvbnNlIG9mIGZhaWxlZCByZXF1ZXN0IHRvIGRldGVybWluZSxcbiAgICogd2hldGhlciB0b2tlbiBiZSByZWZyZXNoZWQgb3Igbm90LlxuICAgKlxuICAgKiBFc3NlbnRpYWxseSBjaGVja3Mgc3RhdHVzXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVmcmVzaFNob3VsZEhhcHBlbihyZXNwb25zZTogSHR0cEVycm9yUmVzcG9uc2UsIHJlcXVlc3Q/OiBIdHRwUmVxdWVzdDxhbnk+KTogYm9vbGVhbjtcblxuICAvKipcbiAgICogVmVyaWZ5IHRoYXQgb3V0Z29pbmcgcmVxdWVzdCBpcyByZWZyZXNoLXRva2VuLFxuICAgKiBzbyBpbnRlcmNlcHRvciB3b24ndCBpbnRlcmNlcHQgdGhpcyByZXF1ZXN0XG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgdmVyaWZ5UmVmcmVzaFRva2VuPyhyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+KTogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHJlcXVlc3QgbXVzdCBiZSBza2lwcGVkIGJ5IGludGVyY2VwdG9yLlxuICAgKiBVc2VmdWwgZm9yIHJlcXVlc3RzIHN1Y2ggYXMgcmVxdWVzdCB0b2tlbiB3aGljaCBkb2Vzbid0IHJlcXVpcmUgdG9rZW4gaW4gaGVhZGVyc1xuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHNraXBSZXF1ZXN0PyhyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+KTogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWRkIHRva2VuIHRvIGhlYWRlcnMsIGRlcGVuZGVudCBvbiBzZXJ2ZXJcbiAgICogc2V0LXVwLCBieSBkZWZhdWx0IGFkZHMgYSBiZWFyZXIgdG9rZW4uXG4gICAqIENhbGxlZCBieSBpbnRlcmNlcHRvci5cbiAgICogVG8gY2hhbmdlIGJlaGF2aW9yLCBvdmVycmlkZSB0aGlzIG1ldGhvZC5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXRIZWFkZXJzPyh0b2tlbjogc3RyaW5nKTogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfTtcblxuICAvKipcbiAgICogU2F2ZXMgbGFzdCBpbnRlcnJ1cHRlZCB1cmwgaW5zaWRlIG9mIHRoZSBzZXJ2aWNlIGZvciBmdXJ0aGVyIHJldXNhZ2UsXG4gICAqIGUuZy4gcmVzdG9yaW5nIGludGVycnVwdGVkIHBhZ2UgYWZ0ZXIgbG9nZ2luZyBpblxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHNldEludGVycnVwdGVkVXJsPyh1cmw6IHN0cmluZyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFZlcmlmeSB0aGF0IG91dGdvaW5nIHJlcXVlc3QgaXMgcmVmcmVzaC10b2tlbixcbiAgICogc28gaW50ZXJjZXB0b3Igd29uJ3QgaW50ZXJjZXB0IHRoaXMgcmVxdWVzdFxuICAgKiBAZGVwcmVjYXRlZCBEdWUgdG8gaWxsb2dpY2FsIG1lYW5pbmcvZnVuY3Rpb25hbGl0eSB0aGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkXG4gICAqIEBzZWUgdmVyaWZ5UmVmcmVzaFRva2VuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgdmVyaWZ5VG9rZW5SZXF1ZXN0Pyh1cmw6IHN0cmluZyk6IGJvb2xlYW47XG59XG4iLCJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgQVVUSF9TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuKCdBVVRIX1NFUlZJQ0UnKTtcbmV4cG9ydCBjb25zdCBQVUJMSUNfRkFMTEJBQ0tfUEFHRV9VUkkgPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ1BVQkxJQ19GQUxMQkFDS19QQUdFX1VSSScpO1xuZXhwb3J0IGNvbnN0IFBST1RFQ1RFRF9GQUxMQkFDS19QQUdFX1VSSSA9IG5ldyBJbmplY3Rpb25Ub2tlbignUFJPVEVDVEVEX0ZBTExCQUNLX1BBR0VfVVJJJyk7XG4iLCJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENhbkFjdGl2YXRlLFxuICBDYW5BY3RpdmF0ZUNoaWxkLFxuICBSb3V0ZXIsXG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gIFJvdXRlclN0YXRlU25hcHNob3Rcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBBVVRIX1NFUlZJQ0UsIFBST1RFQ1RFRF9GQUxMQkFDS19QQUdFX1VSSSB9IGZyb20gJy4vdG9rZW5zJztcblxuLyoqXG4gKiBHdWFyZCwgY2hlY2tzIGFjY2VzcyB0b2tlbiBhdmFpbGFiaWxpdHkgYW5kIGFsbG93cyBvciBkaXNhbGxvd3MgYWNjZXNzIHRvIHBhZ2UsXG4gKiBhbmQgcmVkaXJlY3RzIG91dFxuICpcbiAqIHVzYWdlOiB7IHBhdGg6ICd0ZXN0JywgY29tcG9uZW50OiBUZXN0Q29tcG9uZW50LCBjYW5BY3RpdmF0ZTogWyBQdWJsaWNHdWFyZCBdIH1cbiAqXG4gKiBAZXhwb3J0XG4gKiBAZHluYW1pY1xuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUHVibGljR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSwgQ2FuQWN0aXZhdGVDaGlsZCB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChBVVRIX1NFUlZJQ0UpIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIEBJbmplY3QoUFJPVEVDVEVEX0ZBTExCQUNLX1BBR0VfVVJJKSBwcml2YXRlIHByb3RlY3RlZEZhbGxiYWNrUGFnZVVyaTogc3RyaW5nLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBDYW5BY3RpdmF0ZSBoYW5kbGVyXG4gICAqL1xuICBwdWJsaWMgY2FuQWN0aXZhdGUoXG4gICAgX3JvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICAgIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XG4gICk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmF1dGhTZXJ2aWNlLmlzQXV0aG9yaXplZCgpXG4gICAgICAucGlwZShtYXAoKGlzQXV0aG9yaXplZDogYm9vbGVhbikgPT4ge1xuICAgICAgICBpZiAoaXNBdXRob3JpemVkICYmICF0aGlzLmlzUHJvdGVjdGVkUGFnZShzdGF0ZSkpIHtcbiAgICAgICAgICB0aGlzLm5hdmlnYXRlKHRoaXMucHJvdGVjdGVkRmFsbGJhY2tQYWdlVXJpKTtcblxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbkFjdGl2YXRlQ2hpbGQgaGFuZGxlclxuICAgKi9cbiAgcHVibGljIGNhbkFjdGl2YXRlQ2hpbGQoXG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3RcbiAgKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FuQWN0aXZhdGUocm91dGUsIHN0YXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjaywgaWYgY3VycmVudCBwYWdlIGlzIHByb3RlY3RlZCBmYWxsYmFjayBwYWdlXG4gICAqL1xuICBwcml2YXRlIGlzUHJvdGVjdGVkUGFnZShzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzdGF0ZS51cmwgPT09IHRoaXMucHJvdGVjdGVkRmFsbGJhY2tQYWdlVXJpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlIGF3YXkgZnJvbSB0aGUgYXBwIC8gcGF0aFxuICAgKi9cbiAgcHJpdmF0ZSBuYXZpZ2F0ZSh1cmw6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh1cmwuc3RhcnRzV2l0aCgnaHR0cCcpKSB7XG4gICAgICB0aGlzLmRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSB1cmw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodXJsKTtcbiAgICB9XG4gIH1cblxufVxuIiwiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBSb3V0ZXIsXG4gIENhbkFjdGl2YXRlLFxuICBDYW5BY3RpdmF0ZUNoaWxkLFxuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBSb3V0ZXJTdGF0ZVNuYXBzaG90XG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVVUSF9TRVJWSUNFLCBQVUJMSUNfRkFMTEJBQ0tfUEFHRV9VUkkgfSBmcm9tICcuL3Rva2Vucyc7XG5cbi8qKlxuICogR3VhcmQsIGNoZWNrcyBhY2Nlc3MgdG9rZW4gYXZhaWxhYmlsaXR5IGFuZCBhbGxvd3Mgb3IgZGlzYWxsb3dzIGFjY2VzcyB0byBwYWdlLFxuICogYW5kIHJlZGlyZWN0cyBvdXRcbiAqXG4gKiB1c2FnZTogeyBwYXRoOiAndGVzdCcsIGNvbXBvbmVudDogVGVzdENvbXBvbmVudCwgY2FuQWN0aXZhdGU6IFsgQXV0aEd1YXJkIF0gfVxuICpcbiAqIEBleHBvcnRcbiAqIEBkeW5hbWljXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQcm90ZWN0ZWRHdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlLCBDYW5BY3RpdmF0ZUNoaWxkIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEFVVEhfU0VSVklDRSlwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICBASW5qZWN0KFBVQkxJQ19GQUxMQkFDS19QQUdFX1VSSSkgcHJpdmF0ZSBwdWJsaWNGYWxsYmFja1BhZ2VVcmk6IHN0cmluZyxcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXG4gICkge31cblxuICAvKipcbiAgICogQ2FuQWN0aXZhdGUgaGFuZGxlclxuICAgKi9cbiAgcHVibGljIGNhbkFjdGl2YXRlKFxuICAgIF9yb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5pc0F1dGhvcml6ZWQoKVxuICAgICAgLnBpcGUobWFwKChpc0F1dGhvcml6ZWQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKCFpc0F1dGhvcml6ZWQgJiYgIXRoaXMuaXNQdWJsaWNQYWdlKHN0YXRlKSkge1xuICAgICAgICAgIGlmICh0aGlzLmF1dGhTZXJ2aWNlLnNldEludGVycnVwdGVkVXJsKSB7XG4gICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLnNldEludGVycnVwdGVkVXJsKHN0YXRlLnVybCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5uYXZpZ2F0ZSh0aGlzLnB1YmxpY0ZhbGxiYWNrUGFnZVVyaSk7XG5cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYW5BY3RpdmF0ZUNoaWxkIGhhbmRsZXJcbiAgICovXG4gIHB1YmxpYyBjYW5BY3RpdmF0ZUNoaWxkKFxuICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICAgIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XG4gICk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmNhbkFjdGl2YXRlKHJvdXRlLCBzdGF0ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2ssIGlmIGN1cnJlbnQgcGFnZSBpcyBwdWJsaWMgZmFsbGJhY2sgcGFnZVxuICAgKi9cbiAgcHJpdmF0ZSBpc1B1YmxpY1BhZ2Uoc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3RhdGUudXJsID09PSB0aGlzLnB1YmxpY0ZhbGxiYWNrUGFnZVVyaTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZSBhd2F5IGZyb20gdGhlIGFwcCAvIHBhdGhcbiAgICovXG4gIHByaXZhdGUgbmF2aWdhdGUodXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodXJsLnN0YXJ0c1dpdGgoJ2h0dHAnKSkge1xuICAgICAgdGhpcy5kb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gdXJsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybCk7XG4gICAgfVxuICB9XG5cbn1cbiIsIi8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cclxuXHJcblBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxyXG5wdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXHJcblxyXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXHJcblJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxyXG5BTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXHJcbklORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTVxyXG5MT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxyXG5PVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXHJcblBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXHJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcbi8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlICovXHJcblxyXG52YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uKGQsIGIpIHtcclxuICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcclxuICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XHJcbiAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4dGVuZHMoZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XHJcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH1cclxuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcclxuICAgIHZhciB0ID0ge307XHJcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcclxuICAgICAgICB0W3BdID0gc1twXTtcclxuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcclxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgICAgIH1cclxuICAgIHJldHVybiB0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xyXG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XHJcbiAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xyXG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fbWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpIHtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XHJcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cclxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkge1xyXG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcclxuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XHJcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xyXG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2NyZWF0ZUJpbmRpbmcobywgbSwgaywgazIpIHtcclxuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XHJcbiAgICBvW2syXSA9IG1ba107XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgZXhwb3J0cykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIWV4cG9ydHMuaGFzT3duUHJvcGVydHkocCkpIGV4cG9ydHNbcF0gPSBtW3BdO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xyXG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcclxuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3JlYWQobywgbikge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xyXG4gICAgaWYgKCFtKSByZXR1cm4gbztcclxuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWQoKSB7XHJcbiAgICBmb3IgKHZhciBhciA9IFtdLCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKylcclxuICAgICAgICBhciA9IGFyLmNvbmNhdChfX3JlYWQoYXJndW1lbnRzW2ldKSk7XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5cygpIHtcclxuICAgIGZvciAodmFyIHMgPSAwLCBpID0gMCwgaWwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgaWw7IGkrKykgcyArPSBhcmd1bWVudHNbaV0ubGVuZ3RoO1xyXG4gICAgZm9yICh2YXIgciA9IEFycmF5KHMpLCBrID0gMCwgaSA9IDA7IGkgPCBpbDsgaSsrKVxyXG4gICAgICAgIGZvciAodmFyIGEgPSBhcmd1bWVudHNbaV0sIGogPSAwLCBqbCA9IGEubGVuZ3RoOyBqIDwgamw7IGorKywgaysrKVxyXG4gICAgICAgICAgICByW2tdID0gYVtqXTtcclxuICAgIHJldHVybiByO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXQodikge1xyXG4gICAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBfX2F3YWl0ID8gKHRoaXMudiA9IHYsIHRoaXMpIDogbmV3IF9fYXdhaXQodik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jR2VuZXJhdG9yKHRoaXNBcmcsIF9hcmd1bWVudHMsIGdlbmVyYXRvcikge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBnID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pLCBpLCBxID0gW107XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaWYgKGdbbl0pIGlbbl0gPSBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKGEsIGIpIHsgcS5wdXNoKFtuLCB2LCBhLCBiXSkgPiAxIHx8IHJlc3VtZShuLCB2KTsgfSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHJlc3VtZShuLCB2KSB7IHRyeSB7IHN0ZXAoZ1tuXSh2KSk7IH0gY2F0Y2ggKGUpIHsgc2V0dGxlKHFbMF1bM10sIGUpOyB9IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAocikgeyByLnZhbHVlIGluc3RhbmNlb2YgX19hd2FpdCA/IFByb21pc2UucmVzb2x2ZShyLnZhbHVlLnYpLnRoZW4oZnVsZmlsbCwgcmVqZWN0KSA6IHNldHRsZShxWzBdWzJdLCByKTsgfVxyXG4gICAgZnVuY3Rpb24gZnVsZmlsbCh2YWx1ZSkgeyByZXN1bWUoXCJuZXh0XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gcmVqZWN0KHZhbHVlKSB7IHJlc3VtZShcInRocm93XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKGYsIHYpIHsgaWYgKGYodiksIHEuc2hpZnQoKSwgcS5sZW5ndGgpIHJlc3VtZShxWzBdWzBdLCBxWzBdWzFdKTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0RlbGVnYXRvcihvKSB7XHJcbiAgICB2YXIgaSwgcDtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiwgZnVuY3Rpb24gKGUpIHsgdGhyb3cgZTsgfSksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaVtuXSA9IG9bbl0gPyBmdW5jdGlvbiAodikgeyByZXR1cm4gKHAgPSAhcCkgPyB7IHZhbHVlOiBfX2F3YWl0KG9bbl0odikpLCBkb25lOiBuID09PSBcInJldHVyblwiIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xyXG4gICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcclxuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XHJcbiAgICByZXR1cm4gY29va2VkO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0U3Rhcihtb2QpIHtcclxuICAgIGlmIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpIHJldHVybiBtb2Q7XHJcbiAgICB2YXIgcmVzdWx0ID0ge307XHJcbiAgICBpZiAobW9kICE9IG51bGwpIGZvciAodmFyIGsgaW4gbW9kKSBpZiAoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwobW9kLCBrKSkgcmVzdWx0W2tdID0gbW9kW2tdO1xyXG4gICAgcmVzdWx0LmRlZmF1bHQgPSBtb2Q7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnREZWZhdWx0KG1vZCkge1xyXG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBkZWZhdWx0OiBtb2QgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRHZXQocmVjZWl2ZXIsIHByaXZhdGVNYXApIHtcclxuICAgIGlmICghcHJpdmF0ZU1hcC5oYXMocmVjZWl2ZXIpKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcImF0dGVtcHRlZCB0byBnZXQgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2VcIik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcHJpdmF0ZU1hcC5nZXQocmVjZWl2ZXIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZFNldChyZWNlaXZlciwgcHJpdmF0ZU1hcCwgdmFsdWUpIHtcclxuICAgIGlmICghcHJpdmF0ZU1hcC5oYXMocmVjZWl2ZXIpKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcImF0dGVtcHRlZCB0byBzZXQgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2VcIik7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlTWFwLnNldChyZWNlaXZlciwgdmFsdWUpO1xyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG59XHJcbiIsImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBIdHRwQ2xpZW50LFxuICBIdHRwRXZlbnQsXG4gIEh0dHBJbnRlcmNlcHRvcixcbiAgSHR0cEhhbmRsZXIsXG4gIEh0dHBSZXF1ZXN0LFxuICBIdHRwRXJyb3JSZXNwb25zZVxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIGZpcnN0LCBzd2l0Y2hNYXAsIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVVUSF9TRVJWSUNFIH0gZnJvbSAnLi90b2tlbnMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXV0aEludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcblxuICAvKipcbiAgICogSXMgcmVmcmVzaCB0b2tlbiBpcyBiZWluZyBleGVjdXRlZFxuICAgKi9cbiAgcHJpdmF0ZSByZWZyZXNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBOb3RpZnkgYWxsIG91dHN0YW5kaW5nIHJlcXVlc3RzIHRocm91Z2ggdGhpcyBzdWJqZWN0XG4gICAqL1xuICBwcml2YXRlIHJlZnJlc2hTdWJqZWN0OiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge31cblxuICAvKipcbiAgICogSW50ZXJjZXB0IGFuIG91dGdvaW5nIGBIdHRwUmVxdWVzdGBcbiAgICovXG4gIHB1YmxpYyBpbnRlcmNlcHQoXG4gICAgcmVxOiBIdHRwUmVxdWVzdDxhbnk+LFxuICAgIGRlbGVnYXRlOiBIdHRwSGFuZGxlclxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgaWYgKHRoaXMuc2tpcFJlcXVlc3QocmVxKSkge1xuICAgICAgcmV0dXJuIGRlbGVnYXRlLmhhbmRsZShyZXEpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnByb2Nlc3NJbnRlcmNlcHQocmVxLCBkZWxlZ2F0ZSk7XG4gIH1cblxuICAvKipcbiAgICogUHJvY2VzcyBhbGwgdGhlIHJlcXVlc3RzIHZpYSBjdXN0b20gaW50ZXJjZXB0b3JzLlxuICAgKi9cbiAgcHJpdmF0ZSBwcm9jZXNzSW50ZXJjZXB0KFxuICAgIG9yaWdpbmFsOiBIdHRwUmVxdWVzdDxhbnk+LFxuICAgIGRlbGVnYXRlOiBIdHRwSGFuZGxlclxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgY29uc3QgY2xvbmU6IEh0dHBSZXF1ZXN0PGFueT4gPSBvcmlnaW5hbC5jbG9uZSgpO1xuXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdChjbG9uZSlcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHJlcTogSHR0cFJlcXVlc3Q8YW55PikgPT4gZGVsZWdhdGUuaGFuZGxlKHJlcSkpLFxuICAgICAgICBjYXRjaEVycm9yKChyZXM6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLnJlc3BvbnNlRXJyb3IoY2xvbmUsIHJlcykpXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcXVlc3QgaW50ZXJjZXB0b3IuIERlbGF5cyByZXF1ZXN0IGlmIHJlZnJlc2ggaXMgaW4gcHJvZ3Jlc3NcbiAgICogb3RoZXJ3aXNlIGFkZHMgdG9rZW4gdG8gdGhlIGhlYWRlcnNcbiAgICovXG4gIHByaXZhdGUgcmVxdWVzdChyZXE6IEh0dHBSZXF1ZXN0PGFueT4pOiBPYnNlcnZhYmxlPEh0dHBSZXF1ZXN0PGFueT4+IHtcbiAgICBpZiAodGhpcy5yZWZyZXNoSW5Qcm9ncmVzcykge1xuICAgICAgcmV0dXJuIHRoaXMuZGVsYXlSZXF1ZXN0KHJlcSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYWRkVG9rZW4ocmVxKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGYWlsZWQgcmVxdWVzdCBpbnRlcmNlcHRvciwgY2hlY2sgaWYgaXQgaGFzIHRvIGJlIHByb2Nlc3NlZCB3aXRoIHJlZnJlc2hcbiAgICovXG4gIHByaXZhdGUgcmVzcG9uc2VFcnJvcihcbiAgICByZXE6IEh0dHBSZXF1ZXN0PGFueT4sXG4gICAgcmVzOiBIdHRwRXJyb3JSZXNwb25zZVxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgY29uc3QgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlID1cbiAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0PEF1dGhTZXJ2aWNlPihBVVRIX1NFUlZJQ0UpO1xuICAgIGNvbnN0IHJlZnJlc2hTaG91bGRIYXBwZW46IGJvb2xlYW4gPVxuICAgICAgYXV0aFNlcnZpY2UucmVmcmVzaFNob3VsZEhhcHBlbihyZXMsIHJlcSk7XG5cbiAgICBpZiAocmVmcmVzaFNob3VsZEhhcHBlbiAmJiAhdGhpcy5yZWZyZXNoSW5Qcm9ncmVzcykge1xuICAgICAgdGhpcy5yZWZyZXNoSW5Qcm9ncmVzcyA9IHRydWU7XG5cbiAgICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC5yZWZyZXNoVG9rZW4oKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaFN1YmplY3QubmV4dCh0cnVlKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaFN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGlmIChyZWZyZXNoU2hvdWxkSGFwcGVuICYmIHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybiB0aGlzLnJldHJ5UmVxdWVzdChyZXEsIHJlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRocm93RXJyb3IocmVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYWNjZXNzIHRva2VuIHRvIGhlYWRlcnMgb3IgdGhlIHJlcXVlc3RcbiAgICovXG4gIHByaXZhdGUgYWRkVG9rZW4ocmVxOiBIdHRwUmVxdWVzdDxhbnk+KTogT2JzZXJ2YWJsZTxIdHRwUmVxdWVzdDxhbnk+PiB7XG4gICAgY29uc3QgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlID1cbiAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0PEF1dGhTZXJ2aWNlPihBVVRIX1NFUlZJQ0UpO1xuXG4gICAgcmV0dXJuIGF1dGhTZXJ2aWNlLmdldEFjY2Vzc1Rva2VuKClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHRva2VuOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICAgIGxldCBzZXRIZWFkZXJzOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB9O1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGF1dGhTZXJ2aWNlLmdldEhlYWRlcnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgc2V0SGVhZGVycyA9IGF1dGhTZXJ2aWNlLmdldEhlYWRlcnModG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc2V0SGVhZGVycyA9IHsgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJlcS5jbG9uZSh7IHNldEhlYWRlcnMgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHJlcTtcbiAgICAgICAgfSksXG4gICAgICAgIGZpcnN0KClcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRGVsYXkgcmVxdWVzdCwgYnkgc3Vic2NyaWJpbmcgb24gcmVmcmVzaCBldmVudCwgb25jZSBpdCBmaW5pc2hlZCwgcHJvY2VzcyBpdFxuICAgKiBvdGhlcndpc2UgdGhyb3cgZXJyb3JcbiAgICovXG4gIHByaXZhdGUgZGVsYXlSZXF1ZXN0KHJlcTogSHR0cFJlcXVlc3Q8YW55Pik6IE9ic2VydmFibGU8SHR0cFJlcXVlc3Q8YW55Pj4ge1xuICAgIHJldHVybiB0aGlzLnJlZnJlc2hTdWJqZWN0LnBpcGUoXG4gICAgICBmaXJzdCgpLFxuICAgICAgc3dpdGNoTWFwKChzdGF0dXM6IGJvb2xlYW4pID0+XG4gICAgICAgIHN0YXR1cyA/IHRoaXMuYWRkVG9rZW4ocmVxKSA6IHRocm93RXJyb3IocmVxKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cnkgcmVxdWVzdCwgYnkgc3Vic2NyaWJpbmcgb24gcmVmcmVzaCBldmVudCwgb25jZSBpdCBmaW5pc2hlZCwgcHJvY2VzcyBpdFxuICAgKiBvdGhlcndpc2UgdGhyb3cgZXJyb3JcbiAgICovXG4gIHByaXZhdGUgcmV0cnlSZXF1ZXN0KFxuICAgIHJlcTogSHR0cFJlcXVlc3Q8YW55PixcbiAgICByZXM6IEh0dHBFcnJvclJlc3BvbnNlXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICBjb25zdCBodHRwOiBIdHRwQ2xpZW50ID1cbiAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0PEh0dHBDbGllbnQ+KEh0dHBDbGllbnQpO1xuXG4gICAgcmV0dXJuIHRoaXMucmVmcmVzaFN1YmplY3QucGlwZShcbiAgICAgIGZpcnN0KCksXG4gICAgICBzd2l0Y2hNYXAoKHN0YXR1czogYm9vbGVhbikgPT5cbiAgICAgICAgc3RhdHVzID8gaHR0cC5yZXF1ZXN0KHJlcSkgOiB0aHJvd0Vycm9yKHJlcyB8fCByZXEpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgcmVxdWVzdCBtdXN0IGJlIHNraXBwZWQgYnkgaW50ZXJjZXB0b3IuXG4gICAqL1xuICBwcml2YXRlIHNraXBSZXF1ZXN0KHJlcTogSHR0cFJlcXVlc3Q8YW55Pikge1xuICAgIGNvbnN0IHNraXBSZXF1ZXN0ID0gdGhpcy5leGVjKCdza2lwUmVxdWVzdCcsIHJlcSk7XG4gICAgY29uc3QgdmVyaWZ5UmVmcmVzaFRva2VuID0gdGhpcy5leGVjKCd2ZXJpZnlSZWZyZXNoVG9rZW4nLCByZXEpO1xuXG4gICAgLy8gZGVwcmVjYXRlZCwgd2lsbCBiZSByZW1vdmVkIHNvb25cbiAgICBjb25zdCB2ZXJpZnlUb2tlblJlcXVlc3QgPSB0aGlzLmV4ZWMoJ3ZlcmlmeVRva2VuUmVxdWVzdCcsIHJlcS51cmwpO1xuXG4gICAgcmV0dXJuIHNraXBSZXF1ZXN0IHx8IHZlcmlmeVJlZnJlc2hUb2tlbiB8fCB2ZXJpZnlUb2tlblJlcXVlc3Q7XG4gIH1cblxuICAvKipcbiAgICogRXhlYyBvcHRpb25hbCBtZXRob2QsIHdpbGwgYmUgcmVtb3ZlZCBpbiB1cGNvbWluZyB1cGRhdGVzLlxuICAgKiBUZW1wIG1ldGhvZCB1bnRpbCBgdmVyaWZ5VG9rZW5SZXF1ZXN0YCB3aWxsIGJlIGNvbXBsZXRlbHkgcmVwbGFjZWQgd2l0aCBza2lwUmVxdWVzdFxuICAgKi9cbiAgcHJpdmF0ZSBleGVjKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGNvbnN0IGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSA9XG4gICAgICB0aGlzLmluamVjdG9yLmdldDxBdXRoU2VydmljZT4oQVVUSF9TRVJWSUNFKTtcblxuICAgIGlmICh0eXBlb2YgYXV0aFNlcnZpY2VbbWV0aG9kXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIGF1dGhTZXJ2aWNlW21ldGhvZF0oLi4uYXJncyk7XG4gICAgfVxuICB9XG5cbn1cbiIsImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIVFRQX0lOVEVSQ0VQVE9SUyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuaW1wb3J0IHsgUHVibGljR3VhcmQgfSBmcm9tICcuL3B1YmxpYy5ndWFyZCc7XG5pbXBvcnQgeyBQcm90ZWN0ZWRHdWFyZCB9IGZyb20gJy4vcHJvdGVjdGVkLmd1YXJkJztcbmltcG9ydCB7IEF1dGhJbnRlcmNlcHRvciB9IGZyb20gJy4vYXV0aC5pbnRlcmNlcHRvcic7XG5cbkBOZ01vZHVsZSh7XG4gIHByb3ZpZGVyczogW1xuICAgIFB1YmxpY0d1YXJkLFxuICAgIFByb3RlY3RlZEd1YXJkLFxuICAgIEF1dGhJbnRlcmNlcHRvcixcbiAgICB7XG4gICAgICBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUyxcbiAgICAgIHVzZUNsYXNzOiBBdXRoSW50ZXJjZXB0b3IsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQXV0aE1vZHVsZSB7XG59XG4iXSwibmFtZXMiOlsiSW5qZWN0aW9uVG9rZW4iLCJyb3V0ZXIiLCJtYXAiLCJJbmplY3RhYmxlIiwiSW5qZWN0IiwiRE9DVU1FTlQiLCJSb3V0ZXIiLCJTdWJqZWN0Iiwic3dpdGNoTWFwIiwiY2F0Y2hFcnJvciIsInRocm93RXJyb3IiLCJmaXJzdCIsImh0dHAiLCJIdHRwQ2xpZW50IiwiSW5qZWN0b3IiLCJOZ01vZHVsZSIsIkhUVFBfSU5URVJDRVBUT1JTIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQU1BOzs7O1FBQUE7U0ErREM7UUFBRCxrQkFBQztJQUFELENBQUM7Ozs7OztBQ3JFRDtBQUVBLFFBQWEsWUFBWSxHQUFHLElBQUlBLG1CQUFjLENBQUMsY0FBYyxDQUFDOztBQUM5RCxRQUFhLHdCQUF3QixHQUFHLElBQUlBLG1CQUFjLENBQUMsMEJBQTBCLENBQUM7O0FBQ3RGLFFBQWEsMkJBQTJCLEdBQUcsSUFBSUEsbUJBQWMsQ0FBQyw2QkFBNkIsQ0FBQzs7Ozs7O0FDSjVGOzs7Ozs7Ozs7QUF3QkE7UUFHRSxxQkFDZ0Ms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

@@ -1,2 +0,2 @@

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/router"),require("rxjs/operators"),require("@angular/common/http"),require("rxjs")):"function"==typeof define&&define.amd?define("ngx-auth",["exports","@angular/core","@angular/router","rxjs/operators","@angular/common/http","rxjs"],t):t(e["ngx-auth"]={},e.ng.core,e.ng.router,e.rxjs.operators,e.ng.common.http,e.rxjs)}(this,function(e,t,r,o,i,u){"use strict";var n=function y(){},s=new t.InjectionToken("AUTH_SERVICE"),c=new t.InjectionToken("PUBLIC_FALLBACK_PAGE_URI"),a=new t.InjectionToken("PROTECTED_FALLBACK_PAGE_URI"),p=function(){function e(e,t,r){this.authService=e,this.protectedFallbackPageUri=t,this.router=r}return e.prototype.canActivate=function(e,t){var r=this;return this.authService.isAuthorized().pipe(o.map(function(e){return!(e&&!r.isProtectedPage(t))||(r.navigate(r.protectedFallbackPageUri),!1)}))},e.prototype.canActivateChild=function(e,t){return this.canActivate(e,t)},e.prototype.isProtectedPage=function(e){return e.url===this.protectedFallbackPageUri},e.prototype.navigate=function(e){e.startsWith("http")?window.location.href=e:this.router.navigateByUrl(e)},e.decorators=[{type:t.Injectable}],e.ctorParameters=function(){return[{type:n,decorators:[{type:t.Inject,args:[s]}]},{type:String,decorators:[{type:t.Inject,args:[a]}]},{type:r.Router}]},e}(),h=function(){function e(e,t,r){this.authService=e,this.publicFallbackPageUri=t,this.router=r}return e.prototype.canActivate=function(e,t){var r=this;return this.authService.isAuthorized().pipe(o.map(function(e){return!(!e&&!r.isPublicPage(t))||(r.authService.setInterruptedUrl&&r.authService.setInterruptedUrl(t.url),r.navigate(r.publicFallbackPageUri),!1)}))},e.prototype.canActivateChild=function(e,t){return this.canActivate(e,t)},e.prototype.isPublicPage=function(e){return e.url===this.publicFallbackPageUri},e.prototype.navigate=function(e){e.startsWith("http")?window.location.href=e:this.router.navigateByUrl(e)},e.decorators=[{type:t.Injectable}],e.ctorParameters=function(){return[{type:n,decorators:[{type:t.Inject,args:[s]}]},{type:String,decorators:[{type:t.Inject,args:[c]}]},{type:r.Router}]},e}();function f(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,i=r.call(e),u=[];try{for(;(void 0===t||0<t--)&&!(n=i.next()).done;)u.push(n.value)}catch(s){o={error:s}}finally{try{n&&!n.done&&(r=i["return"])&&r.call(i)}finally{if(o)throw o.error}}return u}var l=function(){function e(e){this.injector=e,this.refreshInProgress=!1,this.refreshSubject=new u.Subject}return e.prototype.intercept=function(e,t){return this.skipRequest(e)?t.handle(e):this.processIntercept(e,t)},e.prototype.processIntercept=function(e,t){var r=this,n=e.clone();return this.request(n).pipe(o.switchMap(function(e){return t.handle(e)}),o.catchError(function(e){return r.responseError(n,e)}))},e.prototype.request=function(e){return this.refreshInProgress?this.delayRequest(e):this.addToken(e)},e.prototype.responseError=function(e,t){var r=this,n=this.injector.get(s),o=n.refreshShouldHappen(t);return o&&!this.refreshInProgress&&(this.refreshInProgress=!0,n.refreshToken().subscribe(function(){r.refreshInProgress=!1,r.refreshSubject.next(!0)},function(){r.refreshInProgress=!1,r.refreshSubject.next(!1)})),o&&this.refreshInProgress?this.retryRequest(e,t):u.throwError(t)},e.prototype.addToken=function(r){var n=this.injector.get(s);return n.getAccessToken().pipe(o.map(function(e){if(e){var t=void 0;return t="function"==typeof n.getHeaders?n.getHeaders(e):{Authorization:"Bearer "+e},r.clone({setHeaders:t})}return r}),o.first())},e.prototype.delayRequest=function(t){var r=this;return this.refreshSubject.pipe(o.first(),o.switchMap(function(e){return e?r.addToken(t):u.throwError(t)}))},e.prototype.retryRequest=function(t,r){var n=this.injector.get(i.HttpClient);return this.refreshSubject.pipe(o.first(),o.switchMap(function(e){return e?n.request(t):u.throwError(r||t)}))},e.prototype.skipRequest=function(e){var t=this.exec("skipRequest",e),r=this.exec("verifyRefreshToken",e),n=this.exec("verifyTokenRequest",e.url);return t||r||n},e.prototype.exec=function(e){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];var n=this.injector.get(s);if("function"==typeof n[e])return n[e].apply(n,function o(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(f(arguments[t]));return e}(t))},e.decorators=[{type:t.Injectable}],e.ctorParameters=function(){return[{type:t.Injector}]},e}(),d=function(){function e(){}return e.decorators=[{type:t.NgModule,args:[{providers:[p,h,l,{provide:i.HTTP_INTERCEPTORS,useClass:l,multi:!0}]}]}],e}();e.AuthService=n,e.PublicGuard=p,e.ProtectedGuard=h,e.AUTH_SERVICE=s,e.PUBLIC_FALLBACK_PAGE_URI=c,e.PROTECTED_FALLBACK_PAGE_URI=a,e.AuthModule=d,e.ɵa=l,Object.defineProperty(e,"__esModule",{value:!0})});
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/common"),require("@angular/router"),require("rxjs/operators"),require("@angular/common/http"),require("rxjs")):"function"==typeof define&&define.amd?define("ngx-auth",["exports","@angular/core","@angular/common","@angular/router","rxjs/operators","@angular/common/http","rxjs"],t):t(e["ngx-auth"]={},e.ng.core,e.ng.common,e.ng.router,e.rxjs.operators,e.ng.common.http,e.rxjs)}(this,function(e,t,r,n,o,i,s){"use strict";var c=function(){},u=new t.InjectionToken("AUTH_SERVICE"),a=new t.InjectionToken("PUBLIC_FALLBACK_PAGE_URI"),p=new t.InjectionToken("PROTECTED_FALLBACK_PAGE_URI"),h=(f.prototype.canActivate=function(e,t){var r=this;return this.authService.isAuthorized().pipe(o.map(function(e){return!(e&&!r.isProtectedPage(t))||(r.navigate(r.protectedFallbackPageUri),!1)}))},f.prototype.canActivateChild=function(e,t){return this.canActivate(e,t)},f.prototype.isProtectedPage=function(e){return e.url===this.protectedFallbackPageUri},f.prototype.navigate=function(e){e.startsWith("http")?this.document.location.href=e:this.router.navigateByUrl(e)},f.decorators=[{type:t.Injectable}],f.ctorParameters=function(){return[{type:c,decorators:[{type:t.Inject,args:[u]}]},{type:String,decorators:[{type:t.Inject,args:[p]}]},{type:Document,decorators:[{type:t.Inject,args:[r.DOCUMENT]}]},{type:n.Router}]},f);function f(e,t,r,n){this.authService=e,this.protectedFallbackPageUri=t,this.document=r,this.router=n}var l=(d.prototype.canActivate=function(e,t){var r=this;return this.authService.isAuthorized().pipe(o.map(function(e){return!(!e&&!r.isPublicPage(t))||(r.authService.setInterruptedUrl&&r.authService.setInterruptedUrl(t.url),r.navigate(r.publicFallbackPageUri),!1)}))},d.prototype.canActivateChild=function(e,t){return this.canActivate(e,t)},d.prototype.isPublicPage=function(e){return e.url===this.publicFallbackPageUri},d.prototype.navigate=function(e){e.startsWith("http")?this.document.location.href=e:this.router.navigateByUrl(e)},d.decorators=[{type:t.Injectable}],d.ctorParameters=function(){return[{type:c,decorators:[{type:t.Inject,args:[u]}]},{type:String,decorators:[{type:t.Inject,args:[a]}]},{type:Document,decorators:[{type:t.Inject,args:[r.DOCUMENT]}]},{type:n.Router}]},d);function d(e,t,r,n){this.authService=e,this.publicFallbackPageUri=t,this.document=r,this.router=n}function y(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,i=r.call(e),s=[];try{for(;(void 0===t||0<t--)&&!(n=i.next()).done;)s.push(n.value)}catch(c){o={error:c}}finally{try{n&&!n.done&&(r=i["return"])&&r.call(i)}finally{if(o)throw o.error}}return s}var g=(v.prototype.intercept=function(e,t){return this.skipRequest(e)?t.handle(e):this.processIntercept(e,t)},v.prototype.processIntercept=function(e,t){var r=this,n=e.clone();return this.request(n).pipe(o.switchMap(function(e){return t.handle(e)}),o.catchError(function(e){return r.responseError(n,e)}))},v.prototype.request=function(e){return this.refreshInProgress?this.delayRequest(e):this.addToken(e)},v.prototype.responseError=function(e,t){var r=this,n=this.injector.get(u),o=n.refreshShouldHappen(t,e);return o&&!this.refreshInProgress&&(this.refreshInProgress=!0,n.refreshToken().subscribe(function(){r.refreshInProgress=!1,r.refreshSubject.next(!0)},function(){r.refreshInProgress=!1,r.refreshSubject.next(!1)})),o&&this.refreshInProgress?this.retryRequest(e,t):s.throwError(t)},v.prototype.addToken=function(r){var n=this.injector.get(u);return n.getAccessToken().pipe(o.map(function(e){if(e){var t=void 0,t="function"==typeof n.getHeaders?n.getHeaders(e):{Authorization:"Bearer "+e};return r.clone({setHeaders:t})}return r}),o.first())},v.prototype.delayRequest=function(t){var r=this;return this.refreshSubject.pipe(o.first(),o.switchMap(function(e){return e?r.addToken(t):s.throwError(t)}))},v.prototype.retryRequest=function(t,r){var n=this.injector.get(i.HttpClient);return this.refreshSubject.pipe(o.first(),o.switchMap(function(e){return e?n.request(t):s.throwError(r||t)}))},v.prototype.skipRequest=function(e){var t=this.exec("skipRequest",e),r=this.exec("verifyRefreshToken",e),e=this.exec("verifyTokenRequest",e.url);return t||r||e},v.prototype.exec=function(e){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];var n=this.injector.get(u);if("function"==typeof n[e])return n[e].apply(n,function(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(y(arguments[t]));return e}(t))},v.decorators=[{type:t.Injectable}],v.ctorParameters=function(){return[{type:t.Injector}]},v);function v(e){this.injector=e,this.refreshInProgress=!1,this.refreshSubject=new s.Subject}var P=(I.decorators=[{type:t.NgModule,args:[{providers:[h,l,g,{provide:i.HTTP_INTERCEPTORS,useClass:g,multi:!0}]}]}],I);function I(){}e.AuthService=c,e.PublicGuard=h,e.ProtectedGuard=l,e.AUTH_SERVICE=u,e.PUBLIC_FALLBACK_PAGE_URI=a,e.PROTECTED_FALLBACK_PAGE_URI=p,e.AuthModule=P,e.ɵa=g,Object.defineProperty(e,"__esModule",{value:!0})});
//# sourceMappingURL=ngx-auth.umd.min.js.map

@@ -71,3 +71,3 @@ /**

/** @type {?} */
const refreshShouldHappen = authService.refreshShouldHappen(res);
const refreshShouldHappen = authService.refreshShouldHappen(res, req);
if (refreshShouldHappen && !this.refreshInProgress) {

@@ -186,2 +186,2 @@ this.refreshInProgress = true;

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1hdXRoLyIsInNvdXJjZXMiOlsiYXV0aC5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUNMLFVBQVUsRUFNWCxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUduRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBR3hDLE1BQU0sT0FBTyxlQUFlOzs7O0lBWTFCLFlBQW9CLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7Ozs7UUFQOUIsc0JBQWlCLEdBQUcsS0FBSyxDQUFDOzs7O1FBSzFCLG1CQUFjLEdBQXFCLElBQUksT0FBTyxFQUFXLENBQUM7SUFFekIsQ0FBQzs7Ozs7OztJQUtuQyxTQUFTLENBQ2QsR0FBcUIsRUFDckIsUUFBcUI7UUFFckIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3pCLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM3QjtRQUVELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM5QyxDQUFDOzs7Ozs7O0lBS08sZ0JBQWdCLENBQ3RCLFFBQTBCLEVBQzFCLFFBQXFCOztjQUVmLEtBQUssR0FBcUIsUUFBUSxDQUFDLEtBQUssRUFBRTtRQUVoRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO2FBQ3ZCLElBQUksQ0FDSCxTQUFTLENBQUMsQ0FBQyxH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Q0FBQyxRQUFRLENBQUMsR0FBRyxDQUFhLFVBQVUsQ0FBQztRQUUzQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUM3QixLQUFLLEVBQUUsRUFDUCxTQUFTLENBQUMsQ0FBQyxNQUFlLEVBQUUsRUFBRSxDQUM1QixNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQ3BELENBQ0YsQ0FBQztJQUNKLENBQUM7Ozs7OztJQUtPLFdBQVcsQ0FBQyxHQUFxQjs7Y0FDakMsV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQzs7Y0FDM0Msa0JBQWtCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLENBQUM7OztjQUd6RCxrQkFBa0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUM7UUFFbkUsT0FBTyxXQUFXLElBQUksa0JBQWtCLElBQUksa0JBQWtCLENBQUM7SUFDakUsQ0FBQzs7Ozs7Ozs7SUFNTyxJQUFJLENBQUMsTUFBYyxFQUFFLEdBQUcsSUFBVzs7Y0FDbkMsV0FBVyxHQUNmLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFjLFlBQVksQ0FBQztRQUU5QyxJQUFJLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLFVBQVUsRUFBRTtZQUM3QyxPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQzs7O1lBakxGLFVBQVU7Ozs7WUFmVSxRQUFROzs7Ozs7O0lBcUIzQiw0Q0FBa0M7Ozs7O0lBS2xDLHlDQUFrRTs7SUFFdEQsbUNBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEh0dHBDbGllbnQsXG4gIEh0dHBFdmVudCxcbiAgSHR0cEludGVyY2VwdG9yLFxuICBIdHRwSGFuZGxlcixcbiAgSHR0cFJlcXVlc3QsXG4gIEh0dHBFcnJvclJlc3BvbnNlXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgZmlyc3QsIHN3aXRjaE1hcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBBVVRIX1NFUlZJQ0UgfSBmcm9tICcuL3Rva2Vucyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBdXRoSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuXG4gIC8qKlxuICAgKiBJcyByZWZyZXNoIHRva2VuIGlzIGJlaW5nIGV4ZWN1dGVkXG4gICAqL1xuICBwcml2YXRlIHJlZnJlc2hJblByb2dyZXNzID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIE5vdGlmeSBhbGwgb3V0c3RhbmRpbmcgcmVxdWVzdHMgdGhyb3VnaCB0aGlzIHN1YmplY3RcbiAgICovXG4gIHByaXZhdGUgcmVmcmVzaFN1YmplY3Q6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuXG4gIC8qKlxuICAgKiBJbnRlcmNlcHQgYW4gb3V0Z29pbmcgYEh0dHBSZXF1ZXN0YFxuICAgKi9cbiAgcHVibGljIGludGVyY2VwdChcbiAgICByZXE6IEh0dHBSZXF1ZXN0PGFueT4sXG4gICAgZGVsZWdhdGU6IEh0dHBIYW5kbGVyXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICBpZiAodGhpcy5za2lwUmVxdWVzdChyZXEpKSB7XG4gICAgICByZXR1cm4gZGVsZWdhdGUuaGFuZGxlKHJlcSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucHJvY2Vzc0ludGVyY2VwdChyZXEsIGRlbGVnYXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzIGFsbCB0aGUgcmVxdWVzdHMgdmlhIGN1c3RvbSBpbnRlcmNlcHRvcnMuXG4gICAqL1xuICBwcml2YXRlIHByb2Nlc3NJbnRlcmNlcHQoXG4gICAgb3JpZ2luYWw6IEh0dHBSZXF1ZXN0PGFueT4sXG4gICAgZGVsZWdhdGU6IEh0dHBIYW5kbGVyXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICBjb25zdCBjbG9uZTogSHR0cFJlcXVlc3Q8YW55PiA9IG9yaWdpbmFsLmNsb25lKCk7XG5cbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KGNsb25lKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgocmVxOiBIdHRwUmVxdWVzdDxhbnk+KSA9PiBkZWxlZ2F0ZS5oYW5kbGUocmVxKSksXG4gICAgICAgIGNhdGNoRXJyb3IoKHJlczogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMucmVzcG9uc2VFcnJvcihjbG9uZSwgcmVzKSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmVxdWVzdCBpbnRlcmNlcHRvci4gRGVsYXlzIHJlcXVlc3QgaWYgcmVmcmVzaCBpcyBpbiBwcm9ncmVzc1xuICAgKiBvdGhlcndpc2UgYWRkcyB0b2tlbiB0byB0aGUgaGVhZGVyc1xuICAgKi9cbiAgcHJpdmF0ZSByZXF1ZXN0KHJlcTogSHR0cFJlcXVlc3Q8YW55Pik6IE9ic2VydmFibGU8SHR0cFJlcXVlc3Q8YW55Pj4ge1xuICAgIGlmICh0aGlzLnJlZnJlc2hJblByb2dyZXNzKSB7XG4gICAgICByZXR1cm4gdGhpcy5kZWxheVJlcXVlc3QocmVxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hZGRUb2tlbihyZXEpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZhaWxlZCByZXF1ZXN0IGludGVyY2VwdG9yLCBjaGVjayBpZiBpdCBoYXMgdG8gYmUgcHJvY2Vzc2VkIHdpdGggcmVmcmVzaFxuICAgKi9cbiAgcHJpdmF0ZSByZXNwb25zZUVycm9yKFxuICAgIHJlcTogSHR0cFJlcXVlc3Q8YW55PixcbiAgICByZXM6IEh0dHBFcnJvclJlc3BvbnNlXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICBjb25zdCBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UgPVxuICAgICAgdGhpcy5pbmplY3Rvci5nZXQ8QXV0aFNlcnZpY2U+KEFVVEhfU0VSVklDRSk7XG4gICAgY29uc3QgcmVmcmVzaFNob3VsZEhhcHBlbjogYm9vbGVhbiA9XG4gICAgICBhdXRoU2VydmljZS5yZWZyZXNoU2hvdWxkSGFwcGVuKHJlcyk7XG5cbiAgICBpZiAocmVmcmVzaFNob3VsZEhhcHBlbiAmJiAhdGhpcy5yZWZyZXNoSW5Qcm9ncmVzcykge1xuICAgICAgdGhpcy5yZWZyZXNoSW5Qcm9ncmVzcyA9IHRydWU7XG5cbiAgICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC5yZWZyZXNoVG9rZW4oKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaFN1YmplY3QubmV4dCh0cnVlKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaFN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGlmIChyZWZyZXNoU2hvdWxkSGFwcGVuICYmIHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybiB0aGlzLnJldHJ5UmVxdWVzdChyZXEsIHJlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRocm93RXJyb3IocmVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYWNjZXNzIHRva2VuIHRvIGhlYWRlcnMgb3IgdGhlIHJlcXVlc3RcbiAgICovXG4gIHByaXZhdGUgYWRkVG9rZW4ocmVxOiBIdHRwUmVxdWVzdDxhbnk+KTogT2JzZXJ2YWJsZTxIdHRwUmVxdWVzdDxhbnk+PiB7XG4gICAgY29uc3QgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlID1cbiAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0PEF1dGhTZXJ2aWNlPihBVVRIX1NFUlZJQ0UpO1xuXG4gICAgcmV0dXJuIGF1dGhTZXJ2aWNlLmdldEFjY2Vzc1Rva2VuKClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHRva2VuOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICAgIGxldCBzZXRIZWFkZXJzOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB9O1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGF1dGhTZXJ2aWNlLmdldEhlYWRlcnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgc2V0SGVhZGVycyA9IGF1dGhTZXJ2aWNlLmdldEhlYWRlcnModG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc2V0SGVhZGVycyA9IHsgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJlcS5jbG9uZSh7IHNldEhlYWRlcnMgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHJlcTtcbiAgICAgICAgfSksXG4gICAgICAgIGZpcnN0KClcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRGVsYXkgcmVxdWVzdCwgYnkgc3Vic2NyaWJpbmcgb24gcmVmcmVzaCBldmVudCwgb25jZSBpdCBmaW5pc2hlZCwgcHJvY2VzcyBpdFxuICAgKiBvdGhlcndpc2UgdGhyb3cgZXJyb3JcbiAgICovXG4gIHByaXZhdGUgZGVsYXlSZXF1ZXN0KHJlcTogSHR0cFJlcXVlc3Q8YW55Pik6IE9ic2VydmFibGU8SHR0cFJlcXVlc3Q8YW55Pj4ge1xuICAgIHJldHVybiB0aGlzLnJlZnJlc2hTdWJqZWN0LnBpcGUoXG4gICAgICBmaXJzdCgpLFxuICAgICAgc3dpdGNoTWFwKChzdGF0dXM6IGJvb2xlYW4pID0+XG4gICAgICAgIHN0YXR1cyA/IHRoaXMuYWRkVG9rZW4ocmVxKSA6IHRocm93RXJyb3IocmVxKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cnkgcmVxdWVzdCwgYnkgc3Vic2NyaWJpbmcgb24gcmVmcmVzaCBldmVudCwgb25jZSBpdCBmaW5pc2hlZCwgcHJvY2VzcyBpdFxuICAgKiBvdGhlcndpc2UgdGhyb3cgZXJyb3JcbiAgICovXG4gIHByaXZhdGUgcmV0cnlSZXF1ZXN0KFxuICAgIHJlcTogSHR0cFJlcXVlc3Q8YW55PixcbiAgICByZXM6IEh0dHBFcnJvclJlc3BvbnNlXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICBjb25zdCBodHRwOiBIdHRwQ2xpZW50ID1cbiAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0PEh0dHBDbGllbnQ+KEh0dHBDbGllbnQpO1xuXG4gICAgcmV0dXJuIHRoaXMucmVmcmVzaFN1YmplY3QucGlwZShcbiAgICAgIGZpcnN0KCksXG4gICAgICBzd2l0Y2hNYXAoKHN0YXR1czogYm9vbGVhbikgPT5cbiAgICAgICAgc3RhdHVzID8gaHR0cC5yZXF1ZXN0KHJlcSkgOiB0aHJvd0Vycm9yKHJlcyB8fCByZXEpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgcmVxdWVzdCBtdXN0IGJlIHNraXBwZWQgYnkgaW50ZXJjZXB0b3IuXG4gICAqL1xuICBwcml2YXRlIHNraXBSZXF1ZXN0KHJlcTogSHR0cFJlcXVlc3Q8YW55Pikge1xuICAgIGNvbnN0IHNraXBSZXF1ZXN0ID0gdGhpcy5leGVjKCdza2lwUmVxdWVzdCcsIHJlcSk7XG4gICAgY29uc3QgdmVyaWZ5UmVmcmVzaFRva2VuID0gdGhpcy5leGVjKCd2ZXJpZnlSZWZyZXNoVG9rZW4nLCByZXEpO1xuXG4gICAgLy8gZGVwcmVjYXRlZCwgd2lsbCBiZSByZW1vdmVkIHNvb25cbiAgICBjb25zdCB2ZXJpZnlUb2tlblJlcXVlc3QgPSB0aGlzLmV4ZWMoJ3ZlcmlmeVRva2VuUmVxdWVzdCcsIHJlcS51cmwpO1xuXG4gICAgcmV0dXJuIHNraXBSZXF1ZXN0IHx8IHZlcmlmeVJlZnJlc2hUb2tlbiB8fCB2ZXJpZnlUb2tlblJlcXVlc3Q7XG4gIH1cblxuICAvKipcbiAgICogRXhlYyBvcHRpb25hbCBtZXRob2QsIHdpbGwgYmUgcmVtb3ZlZCBpbiB1cGNvbWluZyB1cGRhdGVzLlxuICAgKiBUZW1wIG1ldGhvZCB1bnRpbCBgdmVyaWZ5VG9rZW5SZXF1ZXN0YCB3aWxsIGJlIGNvbXBsZXRlbHkgcmVwbGFjZWQgd2l0aCBza2lwUmVxdWVzdFxuICAgKi9cbiAgcHJpdmF0ZSBleGVjKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGNvbnN0IGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSA9XG4gICAgICB0aGlzLmluamVjdG9yLmdldDxBdXRoU2VydmljZT4oQVVUSF9TRVJWSUNFKTtcblxuICAgIGlmICh0eXBlb2YgYXV0aFNlcnZpY2VbbWV0aG9kXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIGF1dGhTZXJ2aWNlW21ldGhvZF0oLi4uYXJncyk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1hdXRoLyIsInNvdXJjZXMiOlsiYXV0aC5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUNMLFVBQVUsRUFNWCxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUduRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBR3hDLE1BQU0sT0FBTyxlQUFlOzs7O0lBWTFCLFlBQW9CLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7Ozs7UUFQOUIsc0JBQWlCLEdBQUcsS0FBSyxDQUFDOzs7O1FBSzFCLG1CQUFjLEdBQXFCLElBQUksT0FBTyxFQUFXLENBQUM7SUFFekIsQ0FBQzs7Ozs7OztJQUtuQyxTQUFTLENBQ2QsR0FBcUIsRUFDckIsUUFBcUI7UUFFckIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3pCLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM3QjtRQUVELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM5QyxDQUFDOzs7Ozs7O0lBS08sZ0JBQWdCLENBQ3RCLFFBQTBCLEVBQzFCLFFBQXFCOztjQUVmLEtBQUssR0FBcUIsUUFBUSxDQUFDLEtBQUssRUFBRTtRQUVoRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO2FBQ3ZCLElBQUksQ0FDSCxTQUFTLENBQUMsQ0FBQyxH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R0FDUixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBYSxVQUFVLENBQUM7UUFFM0MsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDN0IsS0FBSyxFQUFFLEVBQ1AsU0FBUyxDQUFDLENBQUMsTUFBZSxFQUFFLEVBQUUsQ0FDNUIsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUNwRCxDQUNGLENBQUM7SUFDSixDQUFDOzs7Ozs7SUFLTyxXQUFXLENBQUMsR0FBcUI7O2NBQ2pDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUM7O2NBQzNDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxDQUFDOzs7Y0FHekQsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDO1FBRW5FLE9BQU8sV0FBVyxJQUFJLGtCQUFrQixJQUFJLGtCQUFrQixDQUFDO0lBQ2pFLENBQUM7Ozs7Ozs7O0lBTU8sSUFBSSxDQUFDLE1BQWMsRUFBRSxHQUFHLElBQVc7O2NBQ25DLFdBQVcsR0FDZixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBYyxZQUFZLENBQUM7UUFFOUMsSUFBSSxPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxVQUFVLEVBQUU7WUFDN0MsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztTQUNyQztJQUNILENBQUM7OztZQWpMRixVQUFVOzs7O1lBZlUsUUFBUTs7Ozs7OztJQXFCM0IsNENBQWtDOzs7OztJQUtsQyx5Q0FBa0U7O0lBRXRELG1DQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBIdHRwQ2xpZW50LFxuICBIdHRwRXZlbnQsXG4gIEh0dHBJbnRlcmNlcHRvcixcbiAgSHR0cEhhbmRsZXIsXG4gIEh0dHBSZXF1ZXN0LFxuICBIdHRwRXJyb3JSZXNwb25zZVxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIGZpcnN0LCBzd2l0Y2hNYXAsIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVVUSF9TRVJWSUNFIH0gZnJvbSAnLi90b2tlbnMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXV0aEludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcblxuICAvKipcbiAgICogSXMgcmVmcmVzaCB0b2tlbiBpcyBiZWluZyBleGVjdXRlZFxuICAgKi9cbiAgcHJpdmF0ZSByZWZyZXNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBOb3RpZnkgYWxsIG91dHN0YW5kaW5nIHJlcXVlc3RzIHRocm91Z2ggdGhpcyBzdWJqZWN0XG4gICAqL1xuICBwcml2YXRlIHJlZnJlc2hTdWJqZWN0OiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge31cblxuICAvKipcbiAgICogSW50ZXJjZXB0IGFuIG91dGdvaW5nIGBIdHRwUmVxdWVzdGBcbiAgICovXG4gIHB1YmxpYyBpbnRlcmNlcHQoXG4gICAgcmVxOiBIdHRwUmVxdWVzdDxhbnk+LFxuICAgIGRlbGVnYXRlOiBIdHRwSGFuZGxlclxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgaWYgKHRoaXMuc2tpcFJlcXVlc3QocmVxKSkge1xuICAgICAgcmV0dXJuIGRlbGVnYXRlLmhhbmRsZShyZXEpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnByb2Nlc3NJbnRlcmNlcHQocmVxLCBkZWxlZ2F0ZSk7XG4gIH1cblxuICAvKipcbiAgICogUHJvY2VzcyBhbGwgdGhlIHJlcXVlc3RzIHZpYSBjdXN0b20gaW50ZXJjZXB0b3JzLlxuICAgKi9cbiAgcHJpdmF0ZSBwcm9jZXNzSW50ZXJjZXB0KFxuICAgIG9yaWdpbmFsOiBIdHRwUmVxdWVzdDxhbnk+LFxuICAgIGRlbGVnYXRlOiBIdHRwSGFuZGxlclxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgY29uc3QgY2xvbmU6IEh0dHBSZXF1ZXN0PGFueT4gPSBvcmlnaW5hbC5jbG9uZSgpO1xuXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdChjbG9uZSlcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHJlcTogSHR0cFJlcXVlc3Q8YW55PikgPT4gZGVsZWdhdGUuaGFuZGxlKHJlcSkpLFxuICAgICAgICBjYXRjaEVycm9yKChyZXM6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLnJlc3BvbnNlRXJyb3IoY2xvbmUsIHJlcykpXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcXVlc3QgaW50ZXJjZXB0b3IuIERlbGF5cyByZXF1ZXN0IGlmIHJlZnJlc2ggaXMgaW4gcHJvZ3Jlc3NcbiAgICogb3RoZXJ3aXNlIGFkZHMgdG9rZW4gdG8gdGhlIGhlYWRlcnNcbiAgICovXG4gIHByaXZhdGUgcmVxdWVzdChyZXE6IEh0dHBSZXF1ZXN0PGFueT4pOiBPYnNlcnZhYmxlPEh0dHBSZXF1ZXN0PGFueT4+IHtcbiAgICBpZiAodGhpcy5yZWZyZXNoSW5Qcm9ncmVzcykge1xuICAgICAgcmV0dXJuIHRoaXMuZGVsYXlSZXF1ZXN0KHJlcSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYWRkVG9rZW4ocmVxKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGYWlsZWQgcmVxdWVzdCBpbnRlcmNlcHRvciwgY2hlY2sgaWYgaXQgaGFzIHRvIGJlIHByb2Nlc3NlZCB3aXRoIHJlZnJlc2hcbiAgICovXG4gIHByaXZhdGUgcmVzcG9uc2VFcnJvcihcbiAgICByZXE6IEh0dHBSZXF1ZXN0PGFueT4sXG4gICAgcmVzOiBIdHRwRXJyb3JSZXNwb25zZVxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgY29uc3QgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlID1cbiAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0PEF1dGhTZXJ2aWNlPihBVVRIX1NFUlZJQ0UpO1xuICAgIGNvbnN0IHJlZnJlc2hTaG91bGRIYXBwZW46IGJvb2xlYW4gPVxuICAgICAgYXV0aFNlcnZpY2UucmVmcmVzaFNob3VsZEhhcHBlbihyZXMsIHJlcSk7XG5cbiAgICBpZiAocmVmcmVzaFNob3VsZEhhcHBlbiAmJiAhdGhpcy5yZWZyZXNoSW5Qcm9ncmVzcykge1xuICAgICAgdGhpcy5yZWZyZXNoSW5Qcm9ncmVzcyA9IHRydWU7XG5cbiAgICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC5yZWZyZXNoVG9rZW4oKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaFN1YmplY3QubmV4dCh0cnVlKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaFN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGlmIChyZWZyZXNoU2hvdWxkSGFwcGVuICYmIHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybiB0aGlzLnJldHJ5UmVxdWVzdChyZXEsIHJlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRocm93RXJyb3IocmVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYWNjZXNzIHRva2VuIHRvIGhlYWRlcnMgb3IgdGhlIHJlcXVlc3RcbiAgICovXG4gIHByaXZhdGUgYWRkVG9rZW4ocmVxOiBIdHRwUmVxdWVzdDxhbnk+KTogT2JzZXJ2YWJsZTxIdHRwUmVxdWVzdDxhbnk+PiB7XG4gICAgY29uc3QgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlID1cbiAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0PEF1dGhTZXJ2aWNlPihBVVRIX1NFUlZJQ0UpO1xuXG4gICAgcmV0dXJuIGF1dGhTZXJ2aWNlLmdldEFjY2Vzc1Rva2VuKClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHRva2VuOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICAgIGxldCBzZXRIZWFkZXJzOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB9O1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGF1dGhTZXJ2aWNlLmdldEhlYWRlcnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgc2V0SGVhZGVycyA9IGF1dGhTZXJ2aWNlLmdldEhlYWRlcnModG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc2V0SGVhZGVycyA9IHsgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJlcS5jbG9uZSh7IHNldEhlYWRlcnMgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHJlcTtcbiAgICAgICAgfSksXG4gICAgICAgIGZpcnN0KClcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRGVsYXkgcmVxdWVzdCwgYnkgc3Vic2NyaWJpbmcgb24gcmVmcmVzaCBldmVudCwgb25jZSBpdCBmaW5pc2hlZCwgcHJvY2VzcyBpdFxuICAgKiBvdGhlcndpc2UgdGhyb3cgZXJyb3JcbiAgICovXG4gIHByaXZhdGUgZGVsYXlSZXF1ZXN0KHJlcTogSHR0cFJlcXVlc3Q8YW55Pik6IE9ic2VydmFibGU8SHR0cFJlcXVlc3Q8YW55Pj4ge1xuICAgIHJldHVybiB0aGlzLnJlZnJlc2hTdWJqZWN0LnBpcGUoXG4gICAgICBmaXJzdCgpLFxuICAgICAgc3dpdGNoTWFwKChzdGF0dXM6IGJvb2xlYW4pID0+XG4gICAgICAgIHN0YXR1cyA/IHRoaXMuYWRkVG9rZW4ocmVxKSA6IHRocm93RXJyb3IocmVxKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cnkgcmVxdWVzdCwgYnkgc3Vic2NyaWJpbmcgb24gcmVmcmVzaCBldmVudCwgb25jZSBpdCBmaW5pc2hlZCwgcHJvY2VzcyBpdFxuICAgKiBvdGhlcndpc2UgdGhyb3cgZXJyb3JcbiAgICovXG4gIHByaXZhdGUgcmV0cnlSZXF1ZXN0KFxuICAgIHJlcTogSHR0cFJlcXVlc3Q8YW55PixcbiAgICByZXM6IEh0dHBFcnJvclJlc3BvbnNlXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICBjb25zdCBodHRwOiBIdHRwQ2xpZW50ID1cbiAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0PEh0dHBDbGllbnQ+KEh0dHBDbGllbnQpO1xuXG4gICAgcmV0dXJuIHRoaXMucmVmcmVzaFN1YmplY3QucGlwZShcbiAgICAgIGZpcnN0KCksXG4gICAgICBzd2l0Y2hNYXAoKHN0YXR1czogYm9vbGVhbikgPT5cbiAgICAgICAgc3RhdHVzID8gaHR0cC5yZXF1ZXN0KHJlcSkgOiB0aHJvd0Vycm9yKHJlcyB8fCByZXEpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgcmVxdWVzdCBtdXN0IGJlIHNraXBwZWQgYnkgaW50ZXJjZXB0b3IuXG4gICAqL1xuICBwcml2YXRlIHNraXBSZXF1ZXN0KHJlcTogSHR0cFJlcXVlc3Q8YW55Pikge1xuICAgIGNvbnN0IHNraXBSZXF1ZXN0ID0gdGhpcy5leGVjKCdza2lwUmVxdWVzdCcsIHJlcSk7XG4gICAgY29uc3QgdmVyaWZ5UmVmcmVzaFRva2VuID0gdGhpcy5leGVjKCd2ZXJpZnlSZWZyZXNoVG9rZW4nLCByZXEpO1xuXG4gICAgLy8gZGVwcmVjYXRlZCwgd2lsbCBiZSByZW1vdmVkIHNvb25cbiAgICBjb25zdCB2ZXJpZnlUb2tlblJlcXVlc3QgPSB0aGlzLmV4ZWMoJ3ZlcmlmeVRva2VuUmVxdWVzdCcsIHJlcS51cmwpO1xuXG4gICAgcmV0dXJuIHNraXBSZXF1ZXN0IHx8IHZlcmlmeVJlZnJlc2hUb2tlbiB8fCB2ZXJpZnlUb2tlblJlcXVlc3Q7XG4gIH1cblxuICAvKipcbiAgICogRXhlYyBvcHRpb25hbCBtZXRob2QsIHdpbGwgYmUgcmVtb3ZlZCBpbiB1cGNvbWluZyB1cGRhdGVzLlxuICAgKiBUZW1wIG1ldGhvZCB1bnRpbCBgdmVyaWZ5VG9rZW5SZXF1ZXN0YCB3aWxsIGJlIGNvbXBsZXRlbHkgcmVwbGFjZWQgd2l0aCBza2lwUmVxdWVzdFxuICAgKi9cbiAgcHJpdmF0ZSBleGVjKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGNvbnN0IGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSA9XG4gICAgICB0aGlzLmluamVjdG9yLmdldDxBdXRoU2VydmljZT4oQVVUSF9TRVJWSUNFKTtcblxuICAgIGlmICh0eXBlb2YgYXV0aFNlcnZpY2VbbWV0aG9kXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIGF1dGhTZXJ2aWNlW21ldGhvZF0oLi4uYXJncyk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==

@@ -42,5 +42,6 @@ /**

* @param {?} response
* @param {?=} request
* @return {?}
*/
AuthService.prototype.refreshShouldHappen = function (response) { };
AuthService.prototype.refreshShouldHappen = function (response, request) { };
/**

@@ -91,2 +92,2 @@ * Verify that outgoing request is refresh-token,

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWF1dGgvIiwic291cmNlcyI6WyJhdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFNQSxNQUFNLE9BQWdCLFdBQVc7Q0ErRGhDOzs7Ozs7OztJQXpEQyxxREFBb0Q7Ozs7Ozs7O0lBT3BELHVEQUFxRDs7Ozs7Ozs7SUFPckQscURBQWdEOzs7Ozs7Ozs7O0lBUWhELG9FQUEwRTs7Ozs7Ozs7SUFNMUUsa0VBQXdFOzs7Ozs7OztJQU14RSwyREFBaUU7Ozs7Ozs7Ozs7SUFRakUsd0RBQWtGOzs7Ozs7OztJQU1sRiw2REFBc0Q7Ozs7Ozs7Ozs7SUFRdEQsOERBQTBEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cFJlcXVlc3QsIEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIEVzc2VudGlhbCBzZXJ2aWNlIGZvciBhdXRoZW50aWNhdGlvblxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXV0aFNlcnZpY2Uge1xuXG4gIC8qKlxuICAgKiBDaGVjaywgaWYgdXNlciBhbHJlYWR5IGF1dGhvcml6ZWQuXG4gICAqIFNob3VsZCByZXR1cm4gT2JzZXJ2YWJsZSB3aXRoIHRydWUgb3IgZmFsc2UgdmFsdWVzXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgaXNBdXRob3JpemVkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgLyoqXG4gICAqIEdldCBhY2Nlc3MgdG9rZW5cbiAgICogU2hvdWxkIHJldHVybiBhY2Nlc3MgdG9rZW4gaW4gT2JzZXJ2YWJsZSBmcm9tIGUuZy5cbiAgICogbG9jYWxTdG9yYWdlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0QWNjZXNzVG9rZW4oKTogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBGdW5jdGlvbiwgdGhhdCBzaG91bGQgcGVyZm9ybSByZWZyZXNoIHRva2VuXG4gICAqIFNob3VsZCBiZSBzdWNjZXNzZnVsbHkgY29tcGxldGVkIHNvIGludGVyY2VwdG9yXG4gICAqIGNhbiBleGVjdXRlIHBlbmRpbmcgcmVxdWVzdHMgb3IgcmV0cnkgb3JpZ2luYWwgb25lXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVmcmVzaFRva2VuKCk6IE9ic2VydmFibGU8YW55PjtcblxuICAvKipcbiAgICogRnVuY3Rpb24sIGNoZWNrcyByZXNwb25zZSBvZiBmYWlsZWQgcmVxdWVzdCB0byBkZXRlcm1pbmUsXG4gICAqIHdoZXRoZXIgdG9rZW4gYmUgcmVmcmVzaGVkIG9yIG5vdC5cbiAgICpcbiAgICogRXNzZW50aWFsbHkgY2hlY2tzIHN0YXR1c1xuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlZnJlc2hTaG91bGRIYXBwZW4ocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlKTogYm9vbGVhbjtcblxuICAvKipcbiAgICogVmVyaWZ5IHRoYXQgb3V0Z29pbmcgcmVxdWVzdCBpcyByZWZyZXNoLXRva2VuLFxuICAgKiBzbyBpbnRlcmNlcHRvciB3b24ndCBpbnRlcmNlcHQgdGhpcyByZXF1ZXN0XG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgdmVyaWZ5UmVmcmVzaFRva2VuPyhyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+KTogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHJlcXVlc3QgbXVzdCBiZSBza2lwcGVkIGJ5IGludGVyY2VwdG9yLlxuICAgKiBVc2VmdWwgZm9yIHJlcXVlc3RzIHN1Y2ggYXMgcmVxdWVzdCB0b2tlbiB3aGljaCBkb2Vzbid0IHJlcXVpcmUgdG9rZW4gaW4gaGVhZGVyc1xuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHNraXBSZXF1ZXN0PyhyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+KTogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWRkIHRva2VuIHRvIGhlYWRlcnMsIGRlcGVuZGVudCBvbiBzZXJ2ZXJcbiAgICogc2V0LXVwLCBieSBkZWZhdWx0IGFkZHMgYSBiZWFyZXIgdG9rZW4uXG4gICAqIENhbGxlZCBieSBpbnRlcmNlcHRvci5cbiAgICogVG8gY2hhbmdlIGJlaGF2aW9yLCBvdmVycmlkZSB0aGlzIG1ldGhvZC5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXRIZWFkZXJzPyh0b2tlbjogc3RyaW5nKTogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfTtcblxuICAvKipcbiAgICogU2F2ZXMgbGFzdCBpbnRlcnJ1cHRlZCB1cmwgaW5zaWRlIG9mIHRoZSBzZXJ2aWNlIGZvciBmdXJ0aGVyIHJldXNhZ2UsXG4gICAqIGUuZy4gcmVzdG9yaW5nIGludGVycnVwdGVkIHBhZ2UgYWZ0ZXIgbG9nZ2luZyBpblxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHNldEludGVycnVwdGVkVXJsPyh1cmw6IHN0cmluZyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFZlcmlmeSB0aGF0IG91dGdvaW5nIHJlcXVlc3QgaXMgcmVmcmVzaC10b2tlbixcbiAgICogc28gaW50ZXJjZXB0b3Igd29uJ3QgaW50ZXJjZXB0IHRoaXMgcmVxdWVzdFxuICAgKiBAZGVwcmVjYXRlZCBEdWUgdG8gaWxsb2dpY2FsIG1lYW5pbmcvZnVuY3Rpb25hbGl0eSB0aGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkXG4gICAqIEBzZWUgdmVyaWZ5UmVmcmVzaFRva2VuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgdmVyaWZ5VG9rZW5SZXF1ZXN0Pyh1cmw6IHN0cmluZyk6IGJvb2xlYW47XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWF1dGgvIiwic291cmNlcyI6WyJhdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFNQSxNQUFNLE9BQWdCLFdBQVc7Q0ErRGhDOzs7Ozs7OztJQXpEQyxxREFBb0Q7Ozs7Ozs7O0lBT3BELHVEQUFxRDs7Ozs7Ozs7SUFPckQscURBQWdEOzs7Ozs7Ozs7OztJQVFoRCw2RUFBc0c7Ozs7Ozs7O0lBTXRHLGtFQUF3RTs7Ozs7Ozs7SUFNeEUsMkRBQWlFOzs7Ozs7Ozs7O0lBUWpFLHdEQUFrRjs7Ozs7Ozs7SUFNbEYsNkRBQXNEOzs7Ozs7Ozs7O0lBUXRELDhEQUEwRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBSZXF1ZXN0LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBFc3NlbnRpYWwgc2VydmljZSBmb3IgYXV0aGVudGljYXRpb25cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEF1dGhTZXJ2aWNlIHtcblxuICAvKipcbiAgICogQ2hlY2ssIGlmIHVzZXIgYWxyZWFkeSBhdXRob3JpemVkLlxuICAgKiBTaG91bGQgcmV0dXJuIE9ic2VydmFibGUgd2l0aCB0cnVlIG9yIGZhbHNlIHZhbHVlc1xuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGlzQXV0aG9yaXplZCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIC8qKlxuICAgKiBHZXQgYWNjZXNzIHRva2VuXG4gICAqIFNob3VsZCByZXR1cm4gYWNjZXNzIHRva2VuIGluIE9ic2VydmFibGUgZnJvbSBlLmcuXG4gICAqIGxvY2FsU3RvcmFnZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldEFjY2Vzc1Rva2VuKCk6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICAvKipcbiAgICogRnVuY3Rpb24sIHRoYXQgc2hvdWxkIHBlcmZvcm0gcmVmcmVzaCB0b2tlblxuICAgKiBTaG91bGQgYmUgc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZCBzbyBpbnRlcmNlcHRvclxuICAgKiBjYW4gZXhlY3V0ZSBwZW5kaW5nIHJlcXVlc3RzIG9yIHJldHJ5IG9yaWdpbmFsIG9uZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlZnJlc2hUb2tlbigpOiBPYnNlcnZhYmxlPGFueT47XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uLCBjaGVja3MgcmVzcG9uc2Ugb2YgZmFpbGVkIHJlcXVlc3QgdG8gZGV0ZXJtaW5lLFxuICAgKiB3aGV0aGVyIHRva2VuIGJlIHJlZnJlc2hlZCBvciBub3QuXG4gICAqXG4gICAqIEVzc2VudGlhbGx5IGNoZWNrcyBzdGF0dXNcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWZyZXNoU2hvdWxkSGFwcGVuKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSwgcmVxdWVzdD86IEh0dHBSZXF1ZXN0PGFueT4pOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBWZXJpZnkgdGhhdCBvdXRnb2luZyByZXF1ZXN0IGlzIHJlZnJlc2gtdG9rZW4sXG4gICAqIHNvIGludGVyY2VwdG9yIHdvbid0IGludGVyY2VwdCB0aGlzIHJlcXVlc3RcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCB2ZXJpZnlSZWZyZXNoVG9rZW4/KHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4pOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgcmVxdWVzdCBtdXN0IGJlIHNraXBwZWQgYnkgaW50ZXJjZXB0b3IuXG4gICAqIFVzZWZ1bCBmb3IgcmVxdWVzdHMgc3VjaCBhcyByZXF1ZXN0IHRva2VuIHdoaWNoIGRvZXNuJ3QgcmVxdWlyZSB0b2tlbiBpbiBoZWFkZXJzXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3Qgc2tpcFJlcXVlc3Q/KHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4pOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBZGQgdG9rZW4gdG8gaGVhZGVycywgZGVwZW5kZW50IG9uIHNlcnZlclxuICAgKiBzZXQtdXAsIGJ5IGRlZmF1bHQgYWRkcyBhIGJlYXJlciB0b2tlbi5cbiAgICogQ2FsbGVkIGJ5IGludGVyY2VwdG9yLlxuICAgKiBUbyBjaGFuZ2UgYmVoYXZpb3IsIG92ZXJyaWRlIHRoaXMgbWV0aG9kLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldEhlYWRlcnM/KHRva2VuOiBzdHJpbmcpOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB9O1xuXG4gIC8qKlxuICAgKiBTYXZlcyBsYXN0IGludGVycnVwdGVkIHVybCBpbnNpZGUgb2YgdGhlIHNlcnZpY2UgZm9yIGZ1cnRoZXIgcmV1c2FnZSxcbiAgICogZS5nLiByZXN0b3JpbmcgaW50ZXJydXB0ZWQgcGFnZSBhZnRlciBsb2dnaW5nIGluXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3Qgc2V0SW50ZXJydXB0ZWRVcmw/KHVybDogc3RyaW5nKTogdm9pZDtcblxuICAvKipcbiAgICogVmVyaWZ5IHRoYXQgb3V0Z29pbmcgcmVxdWVzdCBpcyByZWZyZXNoLXRva2VuLFxuICAgKiBzbyBpbnRlcmNlcHRvciB3b24ndCBpbnRlcmNlcHQgdGhpcyByZXF1ZXN0XG4gICAqIEBkZXByZWNhdGVkIER1ZSB0byBpbGxvZ2ljYWwgbWVhbmluZy9mdW5jdGlvbmFsaXR5IHRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWRcbiAgICogQHNlZSB2ZXJpZnlSZWZyZXNoVG9rZW5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCB2ZXJpZnlUb2tlblJlcXVlc3Q/KHVybDogc3RyaW5nKTogYm9vbGVhbjtcbn1cbiJdfQ==

@@ -5,2 +5,3 @@ /**

*/
import { DOCUMENT } from '@angular/common';
import { Injectable, Inject } from '@angular/core';

@@ -18,2 +19,3 @@ import { Router } from '@angular/router';

* @export
* \@dynamic
*/

@@ -24,7 +26,9 @@ export class ProtectedGuard {

* @param {?} publicFallbackPageUri
* @param {?} document
* @param {?} router
*/
constructor(authService, publicFallbackPageUri, router) {
constructor(authService, publicFallbackPageUri, document, router) {
this.authService = authService;
this.publicFallbackPageUri = publicFallbackPageUri;
this.document = document;
this.router = router;

@@ -75,3 +79,3 @@ }

if (url.startsWith('http')) {
window.location.href = url;
this.document.location.href = url;
}

@@ -90,2 +94,3 @@ else {

{ type: String, decorators: [{ type: Inject, args: [PUBLIC_FALLBACK_PAGE_URI,] }] },
{ type: Document, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
{ type: Router }

@@ -99,4 +104,6 @@ ];

/** @type {?} */
ProtectedGuard.prototype.document;
/** @type {?} */
ProtectedGuard.prototype.router;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdGVjdGVkLmd1YXJkLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWF1dGgvIiwic291cmNlcyI6WyJwcm90ZWN0ZWQuZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFDTCxNQUFNLEVBS1AsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7Ozs7OztBQVdsRSxNQUFNLE9BQU8sY0FBYzs7Ozs7O0lBRXpCLFlBQytCLFdBQXdCLEVBQ1gscUJBQTZCLEVBQy9ELE1BQWM7UUFGTyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNYLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBUTtRQUMvRCxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQ3JCLENBQUM7Ozs7Ozs7SUFLRyxXQUFXLENBQ2hCLE1BQThCLEVBQzlCLEtBQTBCO1FBRTFCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUU7YUFDbkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQXFCLEVBQUUsRUFBRTtZQUNsQyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDOUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixFQUFFO29CQUN0QyxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDL0M7Z0JBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztnQkFFMUMsT0FBTyxLQUFLLENBQUM7YUFDZDtZQUVELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7Ozs7Ozs7SUFLTSxnQkFBZ0IsQ0FDckIsS0FBNkIsRUFDN0IsS0FBMEI7UUFFMUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDOzs7Ozs7SUFLTyxZQUFZLENBQUMsS0FBMEI7UUFDN0MsT0FBTyxLQUFLLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUNsRCxDQUFDOzs7Ozs7SUFLTyxRQUFRLENBQUMsR0FBVztRQUMxQixJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDMUIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1NBQzVCO2FBQU07WUFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNoQztJQUNILENBQUM7OztZQTFERixVQUFVOzs7O1lBWEYsV0FBVyx1QkFlZixNQUFNLFNBQUMsWUFBWTt5Q0FDbkIsTUFBTSxTQUFDLHdCQUF3QjtZQXpCbEMsTUFBTTs7OztJQXdCSixxQ0FBcUQ7O0lBQ3JELCtDQUF1RTs7SUFDdkUsZ0NBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBSb3V0ZXIsXG4gIENhbkFjdGl2YXRlLFxuICBDYW5BY3RpdmF0ZUNoaWxkLFxuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBSb3V0ZXJTdGF0ZVNuYXBzaG90XG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVVUSF9TRVJWSUNFLCBQVUJMSUNfRkFMTEJBQ0tfUEFHRV9VUkkgfSBmcm9tICcuL3Rva2Vucyc7XG5cbi8qKlxuICogR3VhcmQsIGNoZWNrcyBhY2Nlc3MgdG9rZW4gYXZhaWxhYmlsaXR5IGFuZCBhbGxvd3Mgb3IgZGlzYWxsb3dzIGFjY2VzcyB0byBwYWdlLFxuICogYW5kIHJlZGlyZWN0cyBvdXRcbiAqXG4gKiB1c2FnZTogeyBwYXRoOiAndGVzdCcsIGNvbXBvbmVudDogVGVzdENvbXBvbmVudCwgY2FuQWN0aXZhdGU6IFsgQXV0aEd1YXJkIF0gfVxuICpcbiAqIEBleHBvcnRcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFByb3RlY3RlZEd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUsIENhbkFjdGl2YXRlQ2hpbGQge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoQVVUSF9TRVJWSUNFKXByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIEBJbmplY3QoUFVCTElDX0ZBTExCQUNLX1BBR0VfVVJJKSBwcml2YXRlIHB1YmxpY0ZhbGxiYWNrUGFnZVVyaTogc3RyaW5nLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBDYW5BY3RpdmF0ZSBoYW5kbGVyXG4gICAqL1xuICBwdWJsaWMgY2FuQWN0aXZhdGUoXG4gICAgX3JvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICAgIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XG4gICk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmF1dGhTZXJ2aWNlLmlzQXV0aG9yaXplZCgpXG4gICAgICAucGlwZShtYXAoKGlzQXV0aG9yaXplZDogYm9vbGVhbikgPT4ge1xuICAgICAgICBpZiAoIWlzQXV0aG9yaXplZCAmJiAhdGhpcy5pc1B1YmxpY1BhZ2Uoc3RhdGUpKSB7XG4gICAgICAgICAgaWYgKHRoaXMuYXV0aFNlcnZpY2Uuc2V0SW50ZXJydXB0ZWRVcmwpIHtcbiAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2Uuc2V0SW50ZXJydXB0ZWRVcmwoc3RhdGUudXJsKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLm5hdmlnYXRlKHRoaXMucHVibGljRmFsbGJhY2tQYWdlVXJpKTtcblxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbkFjdGl2YXRlQ2hpbGQgaGFuZGxlclxuICAgKi9cbiAgcHVibGljIGNhbkFjdGl2YXRlQ2hpbGQoXG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3RcbiAgKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FuQWN0aXZhdGUocm91dGUsIHN0YXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjaywgaWYgY3VycmVudCBwYWdlIGlzIHB1YmxpYyBmYWxsYmFjayBwYWdlXG4gICAqL1xuICBwcml2YXRlIGlzUHVibGljUGFnZShzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzdGF0ZS51cmwgPT09IHRoaXMucHVibGljRmFsbGJhY2tQYWdlVXJpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlIGF3YXkgZnJvbSB0aGUgYXBwIC8gcGF0aFxuICAgKi9cbiAgcHJpdmF0ZSBuYXZpZ2F0ZSh1cmw6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh1cmwuc3RhcnRzV2l0aCgnaHR0cCcpKSB7XG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmwpO1xuICAgIH1cbiAgfVxuXG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdGVjdGVkLmd1YXJkLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWF1dGgvIiwic291cmNlcyI6WyJwcm90ZWN0ZWQuZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsTUFBTSxFQUtQLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLHdCQUF3QixFQUFFLE1BQU0sVUFBVSxDQUFDOzs7Ozs7Ozs7O0FBWWxFLE1BQU0sT0FBTyxjQUFjOzs7Ozs7O0lBRXpCLFlBQytCLFdBQXdCLEVBQ1gscUJBQTZCLEVBQ3BDLFFBQWtCLEVBQzdDLE1BQWM7UUFITyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNYLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBUTtRQUNwQyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQzdDLFdBQU0sR0FBTixNQUFNLENBQVE7SUFDckIsQ0FBQzs7Ozs7OztJQUtHLFdBQVcsQ0FDaEIsTUFBOEIsRUFDOUIsS0FBMEI7UUFFMUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRTthQUNuQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBcUIsRUFBRSxFQUFFO1lBQ2xDLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUM5QyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUU7b0JBQ3RDLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUMvQztnQkFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO2dCQUUxQyxPQUFPLEtBQUssQ0FBQzthQUNkO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQzs7Ozs7OztJQUtNLGdCQUFnQixDQUNyQixLQUE2QixFQUM3QixLQUEwQjtRQUUxQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLENBQUM7Ozs7OztJQUtPLFlBQVksQ0FBQyxLQUEwQjtRQUM3QyxPQUFPLEtBQUssQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLHFCQUFxQixDQUFDO0lBQ2xELENBQUM7Ozs7OztJQUtPLFFBQVEsQ0FBQyxHQUFXO1FBQzFCLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1NBQ25DO2FBQU07WUFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNoQztJQUNILENBQUM7OztZQTNERixVQUFVOzs7O1lBWkYsV0FBVyx1QkFnQmYsTUFBTSxTQUFDLFlBQVk7eUNBQ25CLE1BQU0sU0FBQyx3QkFBd0I7WUFDYSxRQUFRLHVCQUFwRCxNQUFNLFNBQUMsUUFBUTtZQTNCbEIsTUFBTTs7OztJQXlCSixxQ0FBcUQ7O0lBQ3JELCtDQUF1RTs7SUFDdkUsa0NBQXFEOztJQUNyRCxnQ0FBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFJvdXRlcixcbiAgQ2FuQWN0aXZhdGUsXG4gIENhbkFjdGl2YXRlQ2hpbGQsXG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gIFJvdXRlclN0YXRlU25hcHNob3Rcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBBVVRIX1NFUlZJQ0UsIFBVQkxJQ19GQUxMQkFDS19QQUdFX1VSSSB9IGZyb20gJy4vdG9rZW5zJztcblxuLyoqXG4gKiBHdWFyZCwgY2hlY2tzIGFjY2VzcyB0b2tlbiBhdmFpbGFiaWxpdHkgYW5kIGFsbG93cyBvciBkaXNhbGxvd3MgYWNjZXNzIHRvIHBhZ2UsXG4gKiBhbmQgcmVkaXJlY3RzIG91dFxuICpcbiAqIHVzYWdlOiB7IHBhdGg6ICd0ZXN0JywgY29tcG9uZW50OiBUZXN0Q29tcG9uZW50LCBjYW5BY3RpdmF0ZTogWyBBdXRoR3VhcmQgXSB9XG4gKlxuICogQGV4cG9ydFxuICogQGR5bmFtaWNcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFByb3RlY3RlZEd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUsIENhbkFjdGl2YXRlQ2hpbGQge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoQVVUSF9TRVJWSUNFKXByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIEBJbmplY3QoUFVCTElDX0ZBTExCQUNLX1BBR0VfVVJJKSBwcml2YXRlIHB1YmxpY0ZhbGxiYWNrUGFnZVVyaTogc3RyaW5nLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBDYW5BY3RpdmF0ZSBoYW5kbGVyXG4gICAqL1xuICBwdWJsaWMgY2FuQWN0aXZhdGUoXG4gICAgX3JvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICAgIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XG4gICk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmF1dGhTZXJ2aWNlLmlzQXV0aG9yaXplZCgpXG4gICAgICAucGlwZShtYXAoKGlzQXV0aG9yaXplZDogYm9vbGVhbikgPT4ge1xuICAgICAgICBpZiAoIWlzQXV0aG9yaXplZCAmJiAhdGhpcy5pc1B1YmxpY1BhZ2Uoc3RhdGUpKSB7XG4gICAgICAgICAgaWYgKHRoaXMuYXV0aFNlcnZpY2Uuc2V0SW50ZXJydXB0ZWRVcmwpIHtcbiAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2Uuc2V0SW50ZXJydXB0ZWRVcmwoc3RhdGUudXJsKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLm5hdmlnYXRlKHRoaXMucHVibGljRmFsbGJhY2tQYWdlVXJpKTtcblxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbkFjdGl2YXRlQ2hpbGQgaGFuZGxlclxuICAgKi9cbiAgcHVibGljIGNhbkFjdGl2YXRlQ2hpbGQoXG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3RcbiAgKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FuQWN0aXZhdGUocm91dGUsIHN0YXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjaywgaWYgY3VycmVudCBwYWdlIGlzIHB1YmxpYyBmYWxsYmFjayBwYWdlXG4gICAqL1xuICBwcml2YXRlIGlzUHVibGljUGFnZShzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzdGF0ZS51cmwgPT09IHRoaXMucHVibGljRmFsbGJhY2tQYWdlVXJpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlIGF3YXkgZnJvbSB0aGUgYXBwIC8gcGF0aFxuICAgKi9cbiAgcHJpdmF0ZSBuYXZpZ2F0ZSh1cmw6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh1cmwuc3RhcnRzV2l0aCgnaHR0cCcpKSB7XG4gICAgICB0aGlzLmRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSB1cmw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodXJsKTtcbiAgICB9XG4gIH1cblxufVxuIl19

@@ -5,2 +5,3 @@ /**

*/
import { DOCUMENT } from '@angular/common';
import { Injectable, Inject } from '@angular/core';

@@ -18,2 +19,3 @@ import { Router } from '@angular/router';

* @export
* \@dynamic
*/

@@ -24,7 +26,9 @@ export class PublicGuard {

* @param {?} protectedFallbackPageUri
* @param {?} document
* @param {?} router
*/
constructor(authService, protectedFallbackPageUri, router) {
constructor(authService, protectedFallbackPageUri, document, router) {
this.authService = authService;
this.protectedFallbackPageUri = protectedFallbackPageUri;
this.document = document;
this.router = router;

@@ -72,3 +76,3 @@ }

if (url.startsWith('http')) {
window.location.href = url;
this.document.location.href = url;
}

@@ -87,2 +91,3 @@ else {

{ type: String, decorators: [{ type: Inject, args: [PROTECTED_FALLBACK_PAGE_URI,] }] },
{ type: Document, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
{ type: Router }

@@ -96,4 +101,6 @@ ];

/** @type {?} */
PublicGuard.prototype.document;
/** @type {?} */
PublicGuard.prototype.router;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLmd1YXJkLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWF1dGgvIiwic291cmNlcyI6WyJwdWJsaWMuZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFHTCxNQUFNLEVBR1AsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7Ozs7OztBQVdyRSxNQUFNLE9BQU8sV0FBVzs7Ozs7O0lBRXRCLFlBQ2dDLFdBQXdCLEVBQ1Qsd0JBQWdDLEVBQ3JFLE1BQWM7UUFGUSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNULDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBUTtRQUNyRSxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQ3JCLENBQUM7Ozs7Ozs7SUFLRyxXQUFXLENBQ2hCLE1BQThCLEVBQzlCLEtBQTBCO1FBRTFCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUU7YUFDbkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQXFCLEVBQUUsRUFBRTtZQUNsQyxJQUFJLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ2hELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7Z0JBRTdDLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7WUFFRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDOzs7Ozs7O0lBS00sZ0JBQWdCLENBQ3JCLEtBQTZCLEVBQzdCLEtBQTBCO1FBRTFCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQzs7Ozs7O0lBS08sZUFBZSxDQUFDLEtBQTBCO1FBQ2hELE9BQU8sS0FBSyxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsd0JBQXdCLENBQUM7SUFDckQsQ0FBQzs7Ozs7O0lBS08sUUFBUSxDQUFDLEdBQVc7UUFDMUIsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzFCLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztTQUM1QjthQUFNO1lBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDaEM7SUFDSCxDQUFDOzs7WUF0REYsVUFBVTs7OztZQVhGLFdBQVcsdUJBZWYsTUFBTSxTQUFDLFlBQVk7eUNBQ25CLE1BQU0sU0FBQywyQkFBMkI7WUF2QnJDLE1BQU07Ozs7SUFzQkosa0NBQXNEOztJQUN0RCwrQ0FBNkU7O0lBQzdFLDZCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ2FuQWN0aXZhdGUsXG4gIENhbkFjdGl2YXRlQ2hpbGQsXG4gIFJvdXRlcixcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgUm91dGVyU3RhdGVTbmFwc2hvdFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEFVVEhfU0VSVklDRSwgUFJPVEVDVEVEX0ZBTExCQUNLX1BBR0VfVVJJIH0gZnJvbSAnLi90b2tlbnMnO1xuXG4vKipcbiAqIEd1YXJkLCBjaGVja3MgYWNjZXNzIHRva2VuIGF2YWlsYWJpbGl0eSBhbmQgYWxsb3dzIG9yIGRpc2FsbG93cyBhY2Nlc3MgdG8gcGFnZSxcbiAqIGFuZCByZWRpcmVjdHMgb3V0XG4gKlxuICogdXNhZ2U6IHsgcGF0aDogJ3Rlc3QnLCBjb21wb25lbnQ6IFRlc3RDb21wb25lbnQsIGNhbkFjdGl2YXRlOiBbIFB1YmxpY0d1YXJkIF0gfVxuICpcbiAqIEBleHBvcnRcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFB1YmxpY0d1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUsIENhbkFjdGl2YXRlQ2hpbGQge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoQVVUSF9TRVJWSUNFKSBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICBASW5qZWN0KFBST1RFQ1RFRF9GQUxMQkFDS19QQUdFX1VSSSkgcHJpdmF0ZSBwcm90ZWN0ZWRGYWxsYmFja1BhZ2VVcmk6IHN0cmluZyxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXG4gICkge31cblxuICAvKipcbiAgICogQ2FuQWN0aXZhdGUgaGFuZGxlclxuICAgKi9cbiAgcHVibGljIGNhbkFjdGl2YXRlKFxuICAgIF9yb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5pc0F1dGhvcml6ZWQoKVxuICAgICAgLnBpcGUobWFwKChpc0F1dGhvcml6ZWQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKGlzQXV0aG9yaXplZCAmJiAhdGhpcy5pc1Byb3RlY3RlZFBhZ2Uoc3RhdGUpKSB7XG4gICAgICAgICAgdGhpcy5uYXZpZ2F0ZSh0aGlzLnByb3RlY3RlZEZhbGxiYWNrUGFnZVVyaSk7XG5cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYW5BY3RpdmF0ZUNoaWxkIGhhbmRsZXJcbiAgICovXG4gIHB1YmxpYyBjYW5BY3RpdmF0ZUNoaWxkKFxuICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICAgIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XG4gICk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmNhbkFjdGl2YXRlKHJvdXRlLCBzdGF0ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2ssIGlmIGN1cnJlbnQgcGFnZSBpcyBwcm90ZWN0ZWQgZmFsbGJhY2sgcGFnZVxuICAgKi9cbiAgcHJpdmF0ZSBpc1Byb3RlY3RlZFBhZ2Uoc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3RhdGUudXJsID09PSB0aGlzLnByb3RlY3RlZEZhbGxiYWNrUGFnZVVyaTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZSBhd2F5IGZyb20gdGhlIGFwcCAvIHBhdGhcbiAgICovXG4gIHByaXZhdGUgbmF2aWdhdGUodXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodXJsLnN0YXJ0c1dpdGgoJ2h0dHAnKSkge1xuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodXJsKTtcbiAgICB9XG4gIH1cblxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLmd1YXJkLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWF1dGgvIiwic291cmNlcyI6WyJwdWJsaWMuZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBR0wsTUFBTSxFQUdQLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLDJCQUEyQixFQUFFLE1BQU0sVUFBVSxDQUFDOzs7Ozs7Ozs7O0FBWXJFLE1BQU0sT0FBTyxXQUFXOzs7Ozs7O0lBRXRCLFlBQ2dDLFdBQXdCLEVBQ1Qsd0JBQWdDLEVBQzFDLFFBQWtCLEVBQzdDLE1BQWM7UUFIUSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNULDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBUTtRQUMxQyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQzdDLFdBQU0sR0FBTixNQUFNLENBQVE7SUFDckIsQ0FBQzs7Ozs7OztJQUtHLFdBQVcsQ0FDaEIsTUFBOEIsRUFDOUIsS0FBMEI7UUFFMUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRTthQUNuQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBcUIsRUFBRSxFQUFFO1lBQ2xDLElBQUksWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDaEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztnQkFFN0MsT0FBTyxLQUFLLENBQUM7YUFDZDtZQUVELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7Ozs7Ozs7SUFLTSxnQkFBZ0IsQ0FDckIsS0FBNkIsRUFDN0IsS0FBMEI7UUFFMUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDOzs7Ozs7SUFLTyxlQUFlLENBQUMsS0FBMEI7UUFDaEQsT0FBTyxLQUFLLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztJQUNyRCxDQUFDOzs7Ozs7SUFLTyxRQUFRLENBQUMsR0FBVztRQUMxQixJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztTQUNuQzthQUFNO1lBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDaEM7SUFDSCxDQUFDOzs7WUF2REYsVUFBVTs7OztZQVpGLFdBQVcsdUJBZ0JmLE1BQU0sU0FBQyxZQUFZO3lDQUNuQixNQUFNLFNBQUMsMkJBQTJCO1lBQ1UsUUFBUSx1QkFBcEQsTUFBTSxTQUFDLFFBQVE7WUF6QmxCLE1BQU07Ozs7SUF1Qkosa0NBQXNEOztJQUN0RCwrQ0FBNkU7O0lBQzdFLCtCQUFxRDs7SUFDckQsNkJBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDYW5BY3RpdmF0ZSxcbiAgQ2FuQWN0aXZhdGVDaGlsZCxcbiAgUm91dGVyLFxuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBSb3V0ZXJTdGF0ZVNuYXBzaG90XG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVVUSF9TRVJWSUNFLCBQUk9URUNURURfRkFMTEJBQ0tfUEFHRV9VUkkgfSBmcm9tICcuL3Rva2Vucyc7XG5cbi8qKlxuICogR3VhcmQsIGNoZWNrcyBhY2Nlc3MgdG9rZW4gYXZhaWxhYmlsaXR5IGFuZCBhbGxvd3Mgb3IgZGlzYWxsb3dzIGFjY2VzcyB0byBwYWdlLFxuICogYW5kIHJlZGlyZWN0cyBvdXRcbiAqXG4gKiB1c2FnZTogeyBwYXRoOiAndGVzdCcsIGNvbXBvbmVudDogVGVzdENvbXBvbmVudCwgY2FuQWN0aXZhdGU6IFsgUHVibGljR3VhcmQgXSB9XG4gKlxuICogQGV4cG9ydFxuICogQGR5bmFtaWNcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFB1YmxpY0d1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUsIENhbkFjdGl2YXRlQ2hpbGQge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoQVVUSF9TRVJWSUNFKSBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICBASW5qZWN0KFBST1RFQ1RFRF9GQUxMQkFDS19QQUdFX1VSSSkgcHJpdmF0ZSBwcm90ZWN0ZWRGYWxsYmFja1BhZ2VVcmk6IHN0cmluZyxcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXG4gICkge31cblxuICAvKipcbiAgICogQ2FuQWN0aXZhdGUgaGFuZGxlclxuICAgKi9cbiAgcHVibGljIGNhbkFjdGl2YXRlKFxuICAgIF9yb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5pc0F1dGhvcml6ZWQoKVxuICAgICAgLnBpcGUobWFwKChpc0F1dGhvcml6ZWQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKGlzQXV0aG9yaXplZCAmJiAhdGhpcy5pc1Byb3RlY3RlZFBhZ2Uoc3RhdGUpKSB7XG4gICAgICAgICAgdGhpcy5uYXZpZ2F0ZSh0aGlzLnByb3RlY3RlZEZhbGxiYWNrUGFnZVVyaSk7XG5cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYW5BY3RpdmF0ZUNoaWxkIGhhbmRsZXJcbiAgICovXG4gIHB1YmxpYyBjYW5BY3RpdmF0ZUNoaWxkKFxuICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICAgIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XG4gICk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmNhbkFjdGl2YXRlKHJvdXRlLCBzdGF0ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2ssIGlmIGN1cnJlbnQgcGFnZSBpcyBwcm90ZWN0ZWQgZmFsbGJhY2sgcGFnZVxuICAgKi9cbiAgcHJpdmF0ZSBpc1Byb3RlY3RlZFBhZ2Uoc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3RhdGUudXJsID09PSB0aGlzLnByb3RlY3RlZEZhbGxiYWNrUGFnZVVyaTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZSBhd2F5IGZyb20gdGhlIGFwcCAvIHBhdGhcbiAgICovXG4gIHByaXZhdGUgbmF2aWdhdGUodXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodXJsLnN0YXJ0c1dpdGgoJ2h0dHAnKSkge1xuICAgICAgdGhpcy5kb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gdXJsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybCk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==

@@ -108,3 +108,3 @@ /**

/** @type {?} */
var refreshShouldHappen = authService.refreshShouldHappen(res);
var refreshShouldHappen = authService.refreshShouldHappen(res, req);
if (refreshShouldHappen && !this.refreshInProgress) {

@@ -282,2 +282,2 @@ this.refreshInProgress = true;

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1hdXRoLyIsInNvdXJjZXMiOlsiYXV0aC5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFDTCxVQUFVLEVBTVgsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV4QztJQWFFLHlCQUFvQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVOzs7O1FBUDlCLHNCQUFpQixHQUFHLEtBQUssQ0FBQzs7OztRQUsxQixtQkFBYyxHQUFxQixJQUFJLE9BQU8sRUFBVyxDQUFDO0lBRXpCLENBQUM7SUFFMUM7O09BRUc7Ozs7Ozs7SUFDSSxtQ0FBUzs7Ozs7O0lBQWhCLFVBQ0UsR0FBcUIsRUFDckIsUUFBcUI7UUFFckIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3pCLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM3QjtRQUVELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7O09BRUc7Ozs7Ozs7SUFDSywwQ0FBZ0I7Ozs7OztJQUF4QixVQUNFLFFBQTBCLEVBQzFCLFFBQXFCO1FBRnZCLGlCQVdDOztZQVBPLEtBQUssR0FBcUIsUUFBUSxDQUFDLEtBQUssRUFBRTtRQUVoRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FB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T0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssVUFBVSxFQUFFO1lBQzdDLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFuQixXQUFXLG1CQUFZLElBQUksR0FBRTtTQUNyQztJQUNILENBQUM7O2dCQWpMRixVQUFVOzs7O2dCQWZVLFFBQVE7O0lBa003QixzQkFBQztDQUFBLEFBbkxELElBbUxDO1NBbExZLGVBQWU7Ozs7OztJQUsxQiw0Q0FBa0M7Ozs7O0lBS2xDLHlDQUFrRTs7SUFFdEQsbUNBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEh0dHBDbGllbnQsXG4gIEh0dHBFdmVudCxcbiAgSHR0cEludGVyY2VwdG9yLFxuICBIdHRwSGFuZGxlcixcbiAgSHR0cFJlcXVlc3QsXG4gIEh0dHBFcnJvclJlc3BvbnNlXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgZmlyc3QsIHN3aXRjaE1hcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBBVVRIX1NFUlZJQ0UgfSBmcm9tICcuL3Rva2Vucyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBdXRoSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuXG4gIC8qKlxuICAgKiBJcyByZWZyZXNoIHRva2VuIGlzIGJlaW5nIGV4ZWN1dGVkXG4gICAqL1xuICBwcml2YXRlIHJlZnJlc2hJblByb2dyZXNzID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIE5vdGlmeSBhbGwgb3V0c3RhbmRpbmcgcmVxdWVzdHMgdGhyb3VnaCB0aGlzIHN1YmplY3RcbiAgICovXG4gIHByaXZhdGUgcmVmcmVzaFN1YmplY3Q6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuXG4gIC8qKlxuICAgKiBJbnRlcmNlcHQgYW4gb3V0Z29pbmcgYEh0dHBSZXF1ZXN0YFxuICAgKi9cbiAgcHVibGljIGludGVyY2VwdChcbiAgICByZXE6IEh0dHBSZXF1ZXN0PGFueT4sXG4gICAgZGVsZWdhdGU6IEh0dHBIYW5kbGVyXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICBpZiAodGhpcy5za2lwUmVxdWVzdChyZXEpKSB7XG4gICAgICByZXR1cm4gZGVsZWdhdGUuaGFuZGxlKHJlcSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucHJvY2Vzc0ludGVyY2VwdChyZXEsIGRlbGVnYXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzIGFsbCB0aGUgcmVxdWVzdHMgdmlhIGN1c3RvbSBpbnRlcmNlcHRvcnMuXG4gICAqL1xuICBwcml2YXRlIHByb2Nlc3NJbnRlcmNlcHQoXG4gICAgb3JpZ2luYWw6IEh0dHBSZXF1ZXN0PGFueT4sXG4gICAgZGVsZWdhdGU6IEh0dHBIYW5kbGVyXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICBjb25zdCBjbG9uZTogSHR0cFJlcXVlc3Q8YW55PiA9IG9yaWdpbmFsLmNsb25lKCk7XG5cbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KGNsb25lKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgocmVxOiBIdHRwUmVxdWVzdDxhbnk+KSA9PiBkZWxlZ2F0ZS5oYW5kbGUocmVxKSksXG4gICAgICAgIGNhdGNoRXJyb3IoKHJlczogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMucmVzcG9uc2VFcnJvcihjbG9uZSwgcmVzKSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmVxdWVzdCBpbnRlcmNlcHRvci4gRGVsYXlzIHJlcXVlc3QgaWYgcmVmcmVzaCBpcyBpbiBwcm9ncmVzc1xuICAgKiBvdGhlcndpc2UgYWRkcyB0b2tlbiB0byB0aGUgaGVhZGVyc1xuICAgKi9cbiAgcHJpdmF0ZSByZXF1ZXN0KHJlcTogSHR0cFJlcXVlc3Q8YW55Pik6IE9ic2VydmFibGU8SHR0cFJlcXVlc3Q8YW55Pj4ge1xuICAgIGlmICh0aGlzLnJlZnJlc2hJblByb2dyZXNzKSB7XG4gICAgICByZXR1cm4gdGhpcy5kZWxheVJlcXVlc3QocmVxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hZGRUb2tlbihyZXEpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZhaWxlZCByZXF1ZXN0IGludGVyY2VwdG9yLCBjaGVjayBpZiBpdCBoYXMgdG8gYmUgcHJvY2Vzc2VkIHdpdGggcmVmcmVzaFxuICAgKi9cbiAgcHJpdmF0ZSByZXNwb25zZUVycm9yKFxuICAgIHJlcTogSHR0cFJlcXVlc3Q8YW55PixcbiAgICByZXM6IEh0dHBFcnJvclJlc3BvbnNlXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICBjb25zdCBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UgPVxuICAgICAgdGhpcy5pbmplY3Rvci5nZXQ8QXV0aFNlcnZpY2U+KEFVVEhfU0VSVklDRSk7XG4gICAgY29uc3QgcmVmcmVzaFNob3VsZEhhcHBlbjogYm9vbGVhbiA9XG4gICAgICBhdXRoU2VydmljZS5yZWZyZXNoU2hvdWxkSGFwcGVuKHJlcyk7XG5cbiAgICBpZiAocmVmcmVzaFNob3VsZEhhcHBlbiAmJiAhdGhpcy5yZWZyZXNoSW5Qcm9ncmVzcykge1xuICAgICAgdGhpcy5yZWZyZXNoSW5Qcm9ncmVzcyA9IHRydWU7XG5cbiAgICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC5yZWZyZXNoVG9rZW4oKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaFN1YmplY3QubmV4dCh0cnVlKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaFN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGlmIChyZWZyZXNoU2hvdWxkSGFwcGVuICYmIHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybiB0aGlzLnJldHJ5UmVxdWVzdChyZXEsIHJlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRocm93RXJyb3IocmVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYWNjZXNzIHRva2VuIHRvIGhlYWRlcnMgb3IgdGhlIHJlcXVlc3RcbiAgICovXG4gIHByaXZhdGUgYWRkVG9rZW4ocmVxOiBIdHRwUmVxdWVzdDxhbnk+KTogT2JzZXJ2YWJsZTxIdHRwUmVxdWVzdDxhbnk+PiB7XG4gICAgY29uc3QgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlID1cbiAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0PEF1dGhTZXJ2aWNlPihBVVRIX1NFUlZJQ0UpO1xuXG4gICAgcmV0dXJuIGF1dGhTZXJ2aWNlLmdldEFjY2Vzc1Rva2VuKClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHRva2VuOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICAgIGxldCBzZXRIZWFkZXJzOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB9O1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGF1dGhTZXJ2aWNlLmdldEhlYWRlcnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgc2V0SGVhZGVycyA9IGF1dGhTZXJ2aWNlLmdldEhlYWRlcnModG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc2V0SGVhZGVycyA9IHsgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJlcS5jbG9uZSh7IHNldEhlYWRlcnMgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHJlcTtcbiAgICAgICAgfSksXG4gICAgICAgIGZpcnN0KClcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRGVsYXkgcmVxdWVzdCwgYnkgc3Vic2NyaWJpbmcgb24gcmVmcmVzaCBldmVudCwgb25jZSBpdCBmaW5pc2hlZCwgcHJvY2VzcyBpdFxuICAgKiBvdGhlcndpc2UgdGhyb3cgZXJyb3JcbiAgICovXG4gIHByaXZhdGUgZGVsYXlSZXF1ZXN0KHJlcTogSHR0cFJlcXVlc3Q8YW55Pik6IE9ic2VydmFibGU8SHR0cFJlcXVlc3Q8YW55Pj4ge1xuICAgIHJldHVybiB0aGlzLnJlZnJlc2hTdWJqZWN0LnBpcGUoXG4gICAgICBmaXJzdCgpLFxuICAgICAgc3dpdGNoTWFwKChzdGF0dXM6IGJvb2xlYW4pID0+XG4gICAgICAgIHN0YXR1cyA/IHRoaXMuYWRkVG9rZW4ocmVxKSA6IHRocm93RXJyb3IocmVxKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cnkgcmVxdWVzdCwgYnkgc3Vic2NyaWJpbmcgb24gcmVmcmVzaCBldmVudCwgb25jZSBpdCBmaW5pc2hlZCwgcHJvY2VzcyBpdFxuICAgKiBvdGhlcndpc2UgdGhyb3cgZXJyb3JcbiAgICovXG4gIHByaXZhdGUgcmV0cnlSZXF1ZXN0KFxuICAgIHJlcTogSHR0cFJlcXVlc3Q8YW55PixcbiAgICByZXM6IEh0dHBFcnJvclJlc3BvbnNlXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICBjb25zdCBodHRwOiBIdHRwQ2xpZW50ID1cbiAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0PEh0dHBDbGllbnQ+KEh0dHBDbGllbnQpO1xuXG4gICAgcmV0dXJuIHRoaXMucmVmcmVzaFN1YmplY3QucGlwZShcbiAgICAgIGZpcnN0KCksXG4gICAgICBzd2l0Y2hNYXAoKHN0YXR1czogYm9vbGVhbikgPT5cbiAgICAgICAgc3RhdHVzID8gaHR0cC5yZXF1ZXN0KHJlcSkgOiB0aHJvd0Vycm9yKHJlcyB8fCByZXEpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgcmVxdWVzdCBtdXN0IGJlIHNraXBwZWQgYnkgaW50ZXJjZXB0b3IuXG4gICAqL1xuICBwcml2YXRlIHNraXBSZXF1ZXN0KHJlcTogSHR0cFJlcXVlc3Q8YW55Pikge1xuICAgIGNvbnN0IHNraXBSZXF1ZXN0ID0gdGhpcy5leGVjKCdza2lwUmVxdWVzdCcsIHJlcSk7XG4gICAgY29uc3QgdmVyaWZ5UmVmcmVzaFRva2VuID0gdGhpcy5leGVjKCd2ZXJpZnlSZWZyZXNoVG9rZW4nLCByZXEpO1xuXG4gICAgLy8gZGVwcmVjYXRlZCwgd2lsbCBiZSByZW1vdmVkIHNvb25cbiAgICBjb25zdCB2ZXJpZnlUb2tlblJlcXVlc3QgPSB0aGlzLmV4ZWMoJ3ZlcmlmeVRva2VuUmVxdWVzdCcsIHJlcS51cmwpO1xuXG4gICAgcmV0dXJuIHNraXBSZXF1ZXN0IHx8IHZlcmlmeVJlZnJlc2hUb2tlbiB8fCB2ZXJpZnlUb2tlblJlcXVlc3Q7XG4gIH1cblxuICAvKipcbiAgICogRXhlYyBvcHRpb25hbCBtZXRob2QsIHdpbGwgYmUgcmVtb3ZlZCBpbiB1cGNvbWluZyB1cGRhdGVzLlxuICAgKiBUZW1wIG1ldGhvZCB1bnRpbCBgdmVyaWZ5VG9rZW5SZXF1ZXN0YCB3aWxsIGJlIGNvbXBsZXRlbHkgcmVwbGFjZWQgd2l0aCBza2lwUmVxdWVzdFxuICAgKi9cbiAgcHJpdmF0ZSBleGVjKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGNvbnN0IGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSA9XG4gICAgICB0aGlzLmluamVjdG9yLmdldDxBdXRoU2VydmljZT4oQVVUSF9TRVJWSUNFKTtcblxuICAgIGlmICh0eXBlb2YgYXV0aFNlcnZpY2VbbWV0aG9kXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIGF1dGhTZXJ2aWNlW21ldGhvZF0oLi4uYXJncyk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1hdXRoLyIsInNvdXJjZXMiOlsiYXV0aC5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFDTCxVQUFVLEVBTVgsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV4QztJQWFFLHlCQUFvQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVOzs7O1FBUDlCLHNCQUFpQixHQUFHLEtBQUssQ0FBQzs7OztRQUsxQixtQkFBYyxHQUFxQixJQUFJLE9BQU8sRUFBVyxDQUFDO0lBRXpCLENBQUM7SUFFMUM7O09BRUc7Ozs7Ozs7SUFDSSxtQ0FBUzs7Ozs7O0lBQWhCLFVBQ0UsR0FBcUIsRUFDckIsUUFBcUI7UUFFckIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3pCLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM3QjtRQUVELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7O09BRUc7Ozs7Ozs7SUFDSywwQ0FBZ0I7Ozs7OztJQUF4QixVQUNFLFFBQTBCLEVBQzFCLFFBQXFCO1FBRnZCLGlCQVdDOztZQVBPLEtBQUssR0FBcUIsUUFBUSxDQUFDLEtBQUssRUFBRTtRQUVoRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FB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QUU5QyxJQUFJLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLFVBQVUsRUFBRTtZQUM3QyxPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBbkIsV0FBVyxtQkFBWSxJQUFJLEdBQUU7U0FDckM7SUFDSCxDQUFDOztnQkFqTEYsVUFBVTs7OztnQkFmVSxRQUFROztJQWtNN0Isc0JBQUM7Q0FBQSxBQW5MRCxJQW1MQztTQWxMWSxlQUFlOzs7Ozs7SUFLMUIsNENBQWtDOzs7OztJQUtsQyx5Q0FBa0U7O0lBRXRELG1DQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBIdHRwQ2xpZW50LFxuICBIdHRwRXZlbnQsXG4gIEh0dHBJbnRlcmNlcHRvcixcbiAgSHR0cEhhbmRsZXIsXG4gIEh0dHBSZXF1ZXN0LFxuICBIdHRwRXJyb3JSZXNwb25zZVxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIGZpcnN0LCBzd2l0Y2hNYXAsIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVVUSF9TRVJWSUNFIH0gZnJvbSAnLi90b2tlbnMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXV0aEludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcblxuICAvKipcbiAgICogSXMgcmVmcmVzaCB0b2tlbiBpcyBiZWluZyBleGVjdXRlZFxuICAgKi9cbiAgcHJpdmF0ZSByZWZyZXNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBOb3RpZnkgYWxsIG91dHN0YW5kaW5nIHJlcXVlc3RzIHRocm91Z2ggdGhpcyBzdWJqZWN0XG4gICAqL1xuICBwcml2YXRlIHJlZnJlc2hTdWJqZWN0OiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge31cblxuICAvKipcbiAgICogSW50ZXJjZXB0IGFuIG91dGdvaW5nIGBIdHRwUmVxdWVzdGBcbiAgICovXG4gIHB1YmxpYyBpbnRlcmNlcHQoXG4gICAgcmVxOiBIdHRwUmVxdWVzdDxhbnk+LFxuICAgIGRlbGVnYXRlOiBIdHRwSGFuZGxlclxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgaWYgKHRoaXMuc2tpcFJlcXVlc3QocmVxKSkge1xuICAgICAgcmV0dXJuIGRlbGVnYXRlLmhhbmRsZShyZXEpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnByb2Nlc3NJbnRlcmNlcHQocmVxLCBkZWxlZ2F0ZSk7XG4gIH1cblxuICAvKipcbiAgICogUHJvY2VzcyBhbGwgdGhlIHJlcXVlc3RzIHZpYSBjdXN0b20gaW50ZXJjZXB0b3JzLlxuICAgKi9cbiAgcHJpdmF0ZSBwcm9jZXNzSW50ZXJjZXB0KFxuICAgIG9yaWdpbmFsOiBIdHRwUmVxdWVzdDxhbnk+LFxuICAgIGRlbGVnYXRlOiBIdHRwSGFuZGxlclxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgY29uc3QgY2xvbmU6IEh0dHBSZXF1ZXN0PGFueT4gPSBvcmlnaW5hbC5jbG9uZSgpO1xuXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdChjbG9uZSlcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHJlcTogSHR0cFJlcXVlc3Q8YW55PikgPT4gZGVsZWdhdGUuaGFuZGxlKHJlcSkpLFxuICAgICAgICBjYXRjaEVycm9yKChyZXM6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLnJlc3BvbnNlRXJyb3IoY2xvbmUsIHJlcykpXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcXVlc3QgaW50ZXJjZXB0b3IuIERlbGF5cyByZXF1ZXN0IGlmIHJlZnJlc2ggaXMgaW4gcHJvZ3Jlc3NcbiAgICogb3RoZXJ3aXNlIGFkZHMgdG9rZW4gdG8gdGhlIGhlYWRlcnNcbiAgICovXG4gIHByaXZhdGUgcmVxdWVzdChyZXE6IEh0dHBSZXF1ZXN0PGFueT4pOiBPYnNlcnZhYmxlPEh0dHBSZXF1ZXN0PGFueT4+IHtcbiAgICBpZiAodGhpcy5yZWZyZXNoSW5Qcm9ncmVzcykge1xuICAgICAgcmV0dXJuIHRoaXMuZGVsYXlSZXF1ZXN0KHJlcSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYWRkVG9rZW4ocmVxKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGYWlsZWQgcmVxdWVzdCBpbnRlcmNlcHRvciwgY2hlY2sgaWYgaXQgaGFzIHRvIGJlIHByb2Nlc3NlZCB3aXRoIHJlZnJlc2hcbiAgICovXG4gIHByaXZhdGUgcmVzcG9uc2VFcnJvcihcbiAgICByZXE6IEh0dHBSZXF1ZXN0PGFueT4sXG4gICAgcmVzOiBIdHRwRXJyb3JSZXNwb25zZVxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgY29uc3QgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlID1cbiAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0PEF1dGhTZXJ2aWNlPihBVVRIX1NFUlZJQ0UpO1xuICAgIGNvbnN0IHJlZnJlc2hTaG91bGRIYXBwZW46IGJvb2xlYW4gPVxuICAgICAgYXV0aFNlcnZpY2UucmVmcmVzaFNob3VsZEhhcHBlbihyZXMsIHJlcSk7XG5cbiAgICBpZiAocmVmcmVzaFNob3VsZEhhcHBlbiAmJiAhdGhpcy5yZWZyZXNoSW5Qcm9ncmVzcykge1xuICAgICAgdGhpcy5yZWZyZXNoSW5Qcm9ncmVzcyA9IHRydWU7XG5cbiAgICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC5yZWZyZXNoVG9rZW4oKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaFN1YmplY3QubmV4dCh0cnVlKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaFN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGlmIChyZWZyZXNoU2hvdWxkSGFwcGVuICYmIHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybiB0aGlzLnJldHJ5UmVxdWVzdChyZXEsIHJlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRocm93RXJyb3IocmVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYWNjZXNzIHRva2VuIHRvIGhlYWRlcnMgb3IgdGhlIHJlcXVlc3RcbiAgICovXG4gIHByaXZhdGUgYWRkVG9rZW4ocmVxOiBIdHRwUmVxdWVzdDxhbnk+KTogT2JzZXJ2YWJsZTxIdHRwUmVxdWVzdDxhbnk+PiB7XG4gICAgY29uc3QgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlID1cbiAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0PEF1dGhTZXJ2aWNlPihBVVRIX1NFUlZJQ0UpO1xuXG4gICAgcmV0dXJuIGF1dGhTZXJ2aWNlLmdldEFjY2Vzc1Rva2VuKClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHRva2VuOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICAgIGxldCBzZXRIZWFkZXJzOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB9O1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGF1dGhTZXJ2aWNlLmdldEhlYWRlcnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgc2V0SGVhZGVycyA9IGF1dGhTZXJ2aWNlLmdldEhlYWRlcnModG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc2V0SGVhZGVycyA9IHsgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJlcS5jbG9uZSh7IHNldEhlYWRlcnMgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHJlcTtcbiAgICAgICAgfSksXG4gICAgICAgIGZpcnN0KClcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRGVsYXkgcmVxdWVzdCwgYnkgc3Vic2NyaWJpbmcgb24gcmVmcmVzaCBldmVudCwgb25jZSBpdCBmaW5pc2hlZCwgcHJvY2VzcyBpdFxuICAgKiBvdGhlcndpc2UgdGhyb3cgZXJyb3JcbiAgICovXG4gIHByaXZhdGUgZGVsYXlSZXF1ZXN0KHJlcTogSHR0cFJlcXVlc3Q8YW55Pik6IE9ic2VydmFibGU8SHR0cFJlcXVlc3Q8YW55Pj4ge1xuICAgIHJldHVybiB0aGlzLnJlZnJlc2hTdWJqZWN0LnBpcGUoXG4gICAgICBmaXJzdCgpLFxuICAgICAgc3dpdGNoTWFwKChzdGF0dXM6IGJvb2xlYW4pID0+XG4gICAgICAgIHN0YXR1cyA/IHRoaXMuYWRkVG9rZW4ocmVxKSA6IHRocm93RXJyb3IocmVxKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cnkgcmVxdWVzdCwgYnkgc3Vic2NyaWJpbmcgb24gcmVmcmVzaCBldmVudCwgb25jZSBpdCBmaW5pc2hlZCwgcHJvY2VzcyBpdFxuICAgKiBvdGhlcndpc2UgdGhyb3cgZXJyb3JcbiAgICovXG4gIHByaXZhdGUgcmV0cnlSZXF1ZXN0KFxuICAgIHJlcTogSHR0cFJlcXVlc3Q8YW55PixcbiAgICByZXM6IEh0dHBFcnJvclJlc3BvbnNlXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICBjb25zdCBodHRwOiBIdHRwQ2xpZW50ID1cbiAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0PEh0dHBDbGllbnQ+KEh0dHBDbGllbnQpO1xuXG4gICAgcmV0dXJuIHRoaXMucmVmcmVzaFN1YmplY3QucGlwZShcbiAgICAgIGZpcnN0KCksXG4gICAgICBzd2l0Y2hNYXAoKHN0YXR1czogYm9vbGVhbikgPT5cbiAgICAgICAgc3RhdHVzID8gaHR0cC5yZXF1ZXN0KHJlcSkgOiB0aHJvd0Vycm9yKHJlcyB8fCByZXEpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgcmVxdWVzdCBtdXN0IGJlIHNraXBwZWQgYnkgaW50ZXJjZXB0b3IuXG4gICAqL1xuICBwcml2YXRlIHNraXBSZXF1ZXN0KHJlcTogSHR0cFJlcXVlc3Q8YW55Pikge1xuICAgIGNvbnN0IHNraXBSZXF1ZXN0ID0gdGhpcy5leGVjKCdza2lwUmVxdWVzdCcsIHJlcSk7XG4gICAgY29uc3QgdmVyaWZ5UmVmcmVzaFRva2VuID0gdGhpcy5leGVjKCd2ZXJpZnlSZWZyZXNoVG9rZW4nLCByZXEpO1xuXG4gICAgLy8gZGVwcmVjYXRlZCwgd2lsbCBiZSByZW1vdmVkIHNvb25cbiAgICBjb25zdCB2ZXJpZnlUb2tlblJlcXVlc3QgPSB0aGlzLmV4ZWMoJ3ZlcmlmeVRva2VuUmVxdWVzdCcsIHJlcS51cmwpO1xuXG4gICAgcmV0dXJuIHNraXBSZXF1ZXN0IHx8IHZlcmlmeVJlZnJlc2hUb2tlbiB8fCB2ZXJpZnlUb2tlblJlcXVlc3Q7XG4gIH1cblxuICAvKipcbiAgICogRXhlYyBvcHRpb25hbCBtZXRob2QsIHdpbGwgYmUgcmVtb3ZlZCBpbiB1cGNvbWluZyB1cGRhdGVzLlxuICAgKiBUZW1wIG1ldGhvZCB1bnRpbCBgdmVyaWZ5VG9rZW5SZXF1ZXN0YCB3aWxsIGJlIGNvbXBsZXRlbHkgcmVwbGFjZWQgd2l0aCBza2lwUmVxdWVzdFxuICAgKi9cbiAgcHJpdmF0ZSBleGVjKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGNvbnN0IGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSA9XG4gICAgICB0aGlzLmluamVjdG9yLmdldDxBdXRoU2VydmljZT4oQVVUSF9TRVJWSUNFKTtcblxuICAgIGlmICh0eXBlb2YgYXV0aFNlcnZpY2VbbWV0aG9kXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIGF1dGhTZXJ2aWNlW21ldGhvZF0oLi4uYXJncyk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==

@@ -54,5 +54,6 @@ /**

* @param {?} response
* @param {?=} request
* @return {?}
*/
AuthService.prototype.refreshShouldHappen = function (response) { };
AuthService.prototype.refreshShouldHappen = function (response, request) { };
/**

@@ -103,2 +104,2 @@ * Verify that outgoing request is refresh-token,

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWF1dGgvIiwic291cmNlcyI6WyJhdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFNQTs7Ozs7SUFBQTtJQStEQSxDQUFDO0lBQUQsa0JBQUM7QUFBRCxDQUFDLEFBL0RELElBK0RDOzs7Ozs7Ozs7Ozs7O0lBekRDLHFEQUFvRDs7Ozs7Ozs7SUFPcEQsdURBQXFEOzs7Ozs7OztJQU9yRCxxREFBZ0Q7Ozs7Ozs7Ozs7SUFRaEQsb0VBQTBFOzs7Ozs7OztJQU0xRSxrRUFBd0U7Ozs7Ozs7O0lBTXhFLDJEQUFpRTs7Ozs7Ozs7OztJQVFqRSx3REFBa0Y7Ozs7Ozs7O0lBTWxGLDZEQUFzRDs7Ozs7Ozs7OztJQVF0RCw4REFBMEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwUmVxdWVzdCwgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogRXNzZW50aWFsIHNlcnZpY2UgZm9yIGF1dGhlbnRpY2F0aW9uXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBdXRoU2VydmljZSB7XG5cbiAgLyoqXG4gICAqIENoZWNrLCBpZiB1c2VyIGFscmVhZHkgYXV0aG9yaXplZC5cbiAgICogU2hvdWxkIHJldHVybiBPYnNlcnZhYmxlIHdpdGggdHJ1ZSBvciBmYWxzZSB2YWx1ZXNcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBpc0F1dGhvcml6ZWQoKTogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICAvKipcbiAgICogR2V0IGFjY2VzcyB0b2tlblxuICAgKiBTaG91bGQgcmV0dXJuIGFjY2VzcyB0b2tlbiBpbiBPYnNlcnZhYmxlIGZyb20gZS5nLlxuICAgKiBsb2NhbFN0b3JhZ2VcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXRBY2Nlc3NUb2tlbigpOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uLCB0aGF0IHNob3VsZCBwZXJmb3JtIHJlZnJlc2ggdG9rZW5cbiAgICogU2hvdWxkIGJlIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZWQgc28gaW50ZXJjZXB0b3JcbiAgICogY2FuIGV4ZWN1dGUgcGVuZGluZyByZXF1ZXN0cyBvciByZXRyeSBvcmlnaW5hbCBvbmVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWZyZXNoVG9rZW4oKTogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gIC8qKlxuICAgKiBGdW5jdGlvbiwgY2hlY2tzIHJlc3BvbnNlIG9mIGZhaWxlZCByZXF1ZXN0IHRvIGRldGVybWluZSxcbiAgICogd2hldGhlciB0b2tlbiBiZSByZWZyZXNoZWQgb3Igbm90LlxuICAgKlxuICAgKiBFc3NlbnRpYWxseSBjaGVja3Mgc3RhdHVzXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVmcmVzaFNob3VsZEhhcHBlbihyZXNwb25zZTogSHR0cEVycm9yUmVzcG9uc2UpOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBWZXJpZnkgdGhhdCBvdXRnb2luZyByZXF1ZXN0IGlzIHJlZnJlc2gtdG9rZW4sXG4gICAqIHNvIGludGVyY2VwdG9yIHdvbid0IGludGVyY2VwdCB0aGlzIHJlcXVlc3RcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCB2ZXJpZnlSZWZyZXNoVG9rZW4/KHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4pOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgcmVxdWVzdCBtdXN0IGJlIHNraXBwZWQgYnkgaW50ZXJjZXB0b3IuXG4gICAqIFVzZWZ1bCBmb3IgcmVxdWVzdHMgc3VjaCBhcyByZXF1ZXN0IHRva2VuIHdoaWNoIGRvZXNuJ3QgcmVxdWlyZSB0b2tlbiBpbiBoZWFkZXJzXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3Qgc2tpcFJlcXVlc3Q/KHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4pOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBZGQgdG9rZW4gdG8gaGVhZGVycywgZGVwZW5kZW50IG9uIHNlcnZlclxuICAgKiBzZXQtdXAsIGJ5IGRlZmF1bHQgYWRkcyBhIGJlYXJlciB0b2tlbi5cbiAgICogQ2FsbGVkIGJ5IGludGVyY2VwdG9yLlxuICAgKiBUbyBjaGFuZ2UgYmVoYXZpb3IsIG92ZXJyaWRlIHRoaXMgbWV0aG9kLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldEhlYWRlcnM/KHRva2VuOiBzdHJpbmcpOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB9O1xuXG4gIC8qKlxuICAgKiBTYXZlcyBsYXN0IGludGVycnVwdGVkIHVybCBpbnNpZGUgb2YgdGhlIHNlcnZpY2UgZm9yIGZ1cnRoZXIgcmV1c2FnZSxcbiAgICogZS5nLiByZXN0b3JpbmcgaW50ZXJydXB0ZWQgcGFnZSBhZnRlciBsb2dnaW5nIGluXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3Qgc2V0SW50ZXJydXB0ZWRVcmw/KHVybDogc3RyaW5nKTogdm9pZDtcblxuICAvKipcbiAgICogVmVyaWZ5IHRoYXQgb3V0Z29pbmcgcmVxdWVzdCBpcyByZWZyZXNoLXRva2VuLFxuICAgKiBzbyBpbnRlcmNlcHRvciB3b24ndCBpbnRlcmNlcHQgdGhpcyByZXF1ZXN0XG4gICAqIEBkZXByZWNhdGVkIER1ZSB0byBpbGxvZ2ljYWwgbWVhbmluZy9mdW5jdGlvbmFsaXR5IHRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWRcbiAgICogQHNlZSB2ZXJpZnlSZWZyZXNoVG9rZW5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCB2ZXJpZnlUb2tlblJlcXVlc3Q/KHVybDogc3RyaW5nKTogYm9vbGVhbjtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWF1dGgvIiwic291cmNlcyI6WyJhdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFNQTs7Ozs7SUFBQTtJQStEQSxDQUFDO0lBQUQsa0JBQUM7QUFBRCxDQUFDLEFBL0RELElBK0RDOzs7Ozs7Ozs7Ozs7O0lBekRDLHFEQUFvRDs7Ozs7Ozs7SUFPcEQsdURBQXFEOzs7Ozs7OztJQU9yRCxxREFBZ0Q7Ozs7Ozs7Ozs7O0lBUWhELDZFQUFzRzs7Ozs7Ozs7SUFNdEcsa0VBQXdFOzs7Ozs7OztJQU14RSwyREFBaUU7Ozs7Ozs7Ozs7SUFRakUsd0RBQWtGOzs7Ozs7OztJQU1sRiw2REFBc0Q7Ozs7Ozs7Ozs7SUFRdEQsOERBQTBEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cFJlcXVlc3QsIEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIEVzc2VudGlhbCBzZXJ2aWNlIGZvciBhdXRoZW50aWNhdGlvblxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXV0aFNlcnZpY2Uge1xuXG4gIC8qKlxuICAgKiBDaGVjaywgaWYgdXNlciBhbHJlYWR5IGF1dGhvcml6ZWQuXG4gICAqIFNob3VsZCByZXR1cm4gT2JzZXJ2YWJsZSB3aXRoIHRydWUgb3IgZmFsc2UgdmFsdWVzXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgaXNBdXRob3JpemVkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgLyoqXG4gICAqIEdldCBhY2Nlc3MgdG9rZW5cbiAgICogU2hvdWxkIHJldHVybiBhY2Nlc3MgdG9rZW4gaW4gT2JzZXJ2YWJsZSBmcm9tIGUuZy5cbiAgICogbG9jYWxTdG9yYWdlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0QWNjZXNzVG9rZW4oKTogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBGdW5jdGlvbiwgdGhhdCBzaG91bGQgcGVyZm9ybSByZWZyZXNoIHRva2VuXG4gICAqIFNob3VsZCBiZSBzdWNjZXNzZnVsbHkgY29tcGxldGVkIHNvIGludGVyY2VwdG9yXG4gICAqIGNhbiBleGVjdXRlIHBlbmRpbmcgcmVxdWVzdHMgb3IgcmV0cnkgb3JpZ2luYWwgb25lXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVmcmVzaFRva2VuKCk6IE9ic2VydmFibGU8YW55PjtcblxuICAvKipcbiAgICogRnVuY3Rpb24sIGNoZWNrcyByZXNwb25zZSBvZiBmYWlsZWQgcmVxdWVzdCB0byBkZXRlcm1pbmUsXG4gICAqIHdoZXRoZXIgdG9rZW4gYmUgcmVmcmVzaGVkIG9yIG5vdC5cbiAgICpcbiAgICogRXNzZW50aWFsbHkgY2hlY2tzIHN0YXR1c1xuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlZnJlc2hTaG91bGRIYXBwZW4ocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlLCByZXF1ZXN0PzogSHR0cFJlcXVlc3Q8YW55Pik6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFZlcmlmeSB0aGF0IG91dGdvaW5nIHJlcXVlc3QgaXMgcmVmcmVzaC10b2tlbixcbiAgICogc28gaW50ZXJjZXB0b3Igd29uJ3QgaW50ZXJjZXB0IHRoaXMgcmVxdWVzdFxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHZlcmlmeVJlZnJlc2hUb2tlbj8ocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55Pik6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiByZXF1ZXN0IG11c3QgYmUgc2tpcHBlZCBieSBpbnRlcmNlcHRvci5cbiAgICogVXNlZnVsIGZvciByZXF1ZXN0cyBzdWNoIGFzIHJlcXVlc3QgdG9rZW4gd2hpY2ggZG9lc24ndCByZXF1aXJlIHRva2VuIGluIGhlYWRlcnNcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBza2lwUmVxdWVzdD8ocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55Pik6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFkZCB0b2tlbiB0byBoZWFkZXJzLCBkZXBlbmRlbnQgb24gc2VydmVyXG4gICAqIHNldC11cCwgYnkgZGVmYXVsdCBhZGRzIGEgYmVhcmVyIHRva2VuLlxuICAgKiBDYWxsZWQgYnkgaW50ZXJjZXB0b3IuXG4gICAqIFRvIGNoYW5nZSBiZWhhdmlvciwgb3ZlcnJpZGUgdGhpcyBtZXRob2QuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0SGVhZGVycz8odG9rZW46IHN0cmluZyk6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdIH07XG5cbiAgLyoqXG4gICAqIFNhdmVzIGxhc3QgaW50ZXJydXB0ZWQgdXJsIGluc2lkZSBvZiB0aGUgc2VydmljZSBmb3IgZnVydGhlciByZXVzYWdlLFxuICAgKiBlLmcuIHJlc3RvcmluZyBpbnRlcnJ1cHRlZCBwYWdlIGFmdGVyIGxvZ2dpbmcgaW5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBzZXRJbnRlcnJ1cHRlZFVybD8odXJsOiBzdHJpbmcpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBWZXJpZnkgdGhhdCBvdXRnb2luZyByZXF1ZXN0IGlzIHJlZnJlc2gtdG9rZW4sXG4gICAqIHNvIGludGVyY2VwdG9yIHdvbid0IGludGVyY2VwdCB0aGlzIHJlcXVlc3RcbiAgICogQGRlcHJlY2F0ZWQgRHVlIHRvIGlsbG9naWNhbCBtZWFuaW5nL2Z1bmN0aW9uYWxpdHkgdGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZFxuICAgKiBAc2VlIHZlcmlmeVJlZnJlc2hUb2tlblxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHZlcmlmeVRva2VuUmVxdWVzdD8odXJsOiBzdHJpbmcpOiBib29sZWFuO1xufVxuIl19

@@ -5,2 +5,3 @@ /**

*/
import { DOCUMENT } from '@angular/common';
import { Injectable, Inject } from '@angular/core';

@@ -18,7 +19,9 @@ import { Router } from '@angular/router';

* @export
* \@dynamic
*/
var ProtectedGuard = /** @class */ (function () {
function ProtectedGuard(authService, publicFallbackPageUri, router) {
function ProtectedGuard(authService, publicFallbackPageUri, document, router) {
this.authService = authService;
this.publicFallbackPageUri = publicFallbackPageUri;
this.document = document;
this.router = router;

@@ -104,3 +107,3 @@ }

if (url.startsWith('http')) {
window.location.href = url;
this.document.location.href = url;
}

@@ -118,2 +121,3 @@ else {

{ type: String, decorators: [{ type: Inject, args: [PUBLIC_FALLBACK_PAGE_URI,] }] },
{ type: Document, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
{ type: Router }

@@ -130,4 +134,6 @@ ]; };

/** @type {?} */
ProtectedGuard.prototype.document;
/** @type {?} */
ProtectedGuard.prototype.router;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdGVjdGVkLmd1YXJkLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWF1dGgvIiwic291cmNlcyI6WyJwcm90ZWN0ZWQuZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFDTCxNQUFNLEVBS1AsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7Ozs7OztBQVVsRTtJQUdFLHdCQUMrQixXQUF3QixFQUNYLHFCQUE2QixFQUMvRCxNQUFjO1FBRk8sZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDWCwwQkFBcUIsR0FBckIscUJBQXFCLENBQVE7UUFDL0QsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUNyQixDQUFDO0lBRUo7O09BRUc7Ozs7Ozs7SUFDSSxvQ0FBVzs7Ozs7O0lBQWxCLFVBQ0UsTUFBOEIsRUFDOUIsS0FBMEI7UUFGNUIsaUJBa0JDO1FBZEMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRTthQUNuQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQUMsWUFBcUI7WUFDOUIsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLEtBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQzlDLElBQUksS0FBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRTtvQkFDdEMsS0FBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQy9DO2dCQUVELEtBQUksQ0FBQyxRQUFRLENBQUMsS0FBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7Z0JBRTFDLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7WUFFRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRUQ7O09BRUc7Ozs7Ozs7SUFDSSx5Q0FBZ0I7Ozs7OztJQUF2QixVQUNFLEtBQTZCLEVBQzdCLEtBQTBCO1FBRTFCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOztPQUVHOzs7Ozs7SUFDSyxxQ0FBWTs7Ozs7SUFBcEIsVUFBcUIsS0FBMEI7UUFDN0MsT0FBTyxLQUFLLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7O09BRUc7Ozs7OztJQUNLLGlDQUFROzs7OztJQUFoQixVQUFpQixHQUFXO1FBQzFCLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMxQixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7U0FDNUI7YUFBTTtZQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQzs7Z0JBMURGLFVBQVU7Ozs7Z0JBWEYsV0FBVyx1QkFlZixNQUFNLFNBQUMsWUFBWTs2Q0FDbkIsTUFBTSxTQUFDLHdCQUF3QjtnQkF6QmxDLE1BQU07O0lBZ0ZSLHFCQUFDO0NBQUEsQUE1REQsSUE0REM7U0EzRFksY0FBYzs7O0lBR3ZCLHFDQUFxRDs7SUFDckQsK0NBQXVFOztJQUN2RSxnQ0FBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFJvdXRlcixcbiAgQ2FuQWN0aXZhdGUsXG4gIENhbkFjdGl2YXRlQ2hpbGQsXG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gIFJvdXRlclN0YXRlU25hcHNob3Rcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBBVVRIX1NFUlZJQ0UsIFBVQkxJQ19GQUxMQkFDS19QQUdFX1VSSSB9IGZyb20gJy4vdG9rZW5zJztcblxuLyoqXG4gKiBHdWFyZCwgY2hlY2tzIGFjY2VzcyB0b2tlbiBhdmFpbGFiaWxpdHkgYW5kIGFsbG93cyBvciBkaXNhbGxvd3MgYWNjZXNzIHRvIHBhZ2UsXG4gKiBhbmQgcmVkaXJlY3RzIG91dFxuICpcbiAqIHVzYWdlOiB7IHBhdGg6ICd0ZXN0JywgY29tcG9uZW50OiBUZXN0Q29tcG9uZW50LCBjYW5BY3RpdmF0ZTogWyBBdXRoR3VhcmQgXSB9XG4gKlxuICogQGV4cG9ydFxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUHJvdGVjdGVkR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSwgQ2FuQWN0aXZhdGVDaGlsZCB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChBVVRIX1NFUlZJQ0UpcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgQEluamVjdChQVUJMSUNfRkFMTEJBQ0tfUEFHRV9VUkkpIHByaXZhdGUgcHVibGljRmFsbGJhY2tQYWdlVXJpOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHt9XG5cbiAgLyoqXG4gICAqIENhbkFjdGl2YXRlIGhhbmRsZXJcbiAgICovXG4gIHB1YmxpYyBjYW5BY3RpdmF0ZShcbiAgICBfcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3RcbiAgKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aFNlcnZpY2UuaXNBdXRob3JpemVkKClcbiAgICAgIC5waXBlKG1hcCgoaXNBdXRob3JpemVkOiBib29sZWFuKSA9PiB7XG4gICAgICAgIGlmICghaXNBdXRob3JpemVkICYmICF0aGlzLmlzUHVibGljUGFnZShzdGF0ZSkpIHtcbiAgICAgICAgICBpZiAodGhpcy5hdXRoU2VydmljZS5zZXRJbnRlcnJ1cHRlZFVybCkge1xuICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5zZXRJbnRlcnJ1cHRlZFVybChzdGF0ZS51cmwpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMubmF2aWdhdGUodGhpcy5wdWJsaWNGYWxsYmFja1BhZ2VVcmkpO1xuXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FuQWN0aXZhdGVDaGlsZCBoYW5kbGVyXG4gICAqL1xuICBwdWJsaWMgY2FuQWN0aXZhdGVDaGlsZChcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5jYW5BY3RpdmF0ZShyb3V0ZSwgc3RhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrLCBpZiBjdXJyZW50IHBhZ2UgaXMgcHVibGljIGZhbGxiYWNrIHBhZ2VcbiAgICovXG4gIHByaXZhdGUgaXNQdWJsaWNQYWdlKHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN0YXRlLnVybCA9PT0gdGhpcy5wdWJsaWNGYWxsYmFja1BhZ2VVcmk7XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGUgYXdheSBmcm9tIHRoZSBhcHAgLyBwYXRoXG4gICAqL1xuICBwcml2YXRlIG5hdmlnYXRlKHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHVybC5zdGFydHNXaXRoKCdodHRwJykpIHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybCk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdGVjdGVkLmd1YXJkLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWF1dGgvIiwic291cmNlcyI6WyJwcm90ZWN0ZWQuZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsTUFBTSxFQUtQLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLHdCQUF3QixFQUFFLE1BQU0sVUFBVSxDQUFDOzs7Ozs7Ozs7O0FBV2xFO0lBR0Usd0JBQytCLFdBQXdCLEVBQ1gscUJBQTZCLEVBQ3BDLFFBQWtCLEVBQzdDLE1BQWM7UUFITyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNYLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBUTtRQUNwQyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQzdDLFdBQU0sR0FBTixNQUFNLENBQVE7SUFDckIsQ0FBQztJQUVKOztPQUVHOzs7Ozs7O0lBQ0ksb0NBQVc7Ozs7OztJQUFsQixVQUNFLE1BQThCLEVBQzlCLEtBQTBCO1FBRjVCLGlCQWtCQztRQWRDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUU7YUFDbkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFDLFlBQXFCO1lBQzlCLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxLQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUM5QyxJQUFJLEtBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUU7b0JBQ3RDLEtBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUMvQztnQkFFRCxLQUFJLENBQUMsUUFBUSxDQUFDLEtBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO2dCQUUxQyxPQUFPLEtBQUssQ0FBQzthQUNkO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVEOztPQUVHOzs7Ozs7O0lBQ0kseUNBQWdCOzs7Ozs7SUFBdkIsVUFDRSxLQUE2QixFQUM3QixLQUEwQjtRQUUxQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7T0FFRzs7Ozs7O0lBQ0sscUNBQVk7Ozs7O0lBQXBCLFVBQXFCLEtBQTBCO1FBQzdDLE9BQU8sS0FBSyxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMscUJBQXFCLENBQUM7SUFDbEQsQ0FBQztJQUVEOztPQUVHOzs7Ozs7SUFDSyxpQ0FBUTs7Ozs7SUFBaEIsVUFBaUIsR0FBVztRQUMxQixJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztTQUNuQzthQUFNO1lBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDaEM7SUFDSCxDQUFDOztnQkEzREYsVUFBVTs7OztnQkFaRixXQUFXLHVCQWdCZixNQUFNLFNBQUMsWUFBWTs2Q0FDbkIsTUFBTSxTQUFDLHdCQUF3QjtnQkFDYSxRQUFRLHVCQUFwRCxNQUFNLFNBQUMsUUFBUTtnQkEzQmxCLE1BQU07O0lBa0ZSLHFCQUFDO0NBQUEsQUE3REQsSUE2REM7U0E1RFksY0FBYzs7O0lBR3ZCLHFDQUFxRDs7SUFDckQsK0NBQXVFOztJQUN2RSxrQ0FBcUQ7O0lBQ3JELGdDQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgUm91dGVyLFxuICBDYW5BY3RpdmF0ZSxcbiAgQ2FuQWN0aXZhdGVDaGlsZCxcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgUm91dGVyU3RhdGVTbmFwc2hvdFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEFVVEhfU0VSVklDRSwgUFVCTElDX0ZBTExCQUNLX1BBR0VfVVJJIH0gZnJvbSAnLi90b2tlbnMnO1xuXG4vKipcbiAqIEd1YXJkLCBjaGVja3MgYWNjZXNzIHRva2VuIGF2YWlsYWJpbGl0eSBhbmQgYWxsb3dzIG9yIGRpc2FsbG93cyBhY2Nlc3MgdG8gcGFnZSxcbiAqIGFuZCByZWRpcmVjdHMgb3V0XG4gKlxuICogdXNhZ2U6IHsgcGF0aDogJ3Rlc3QnLCBjb21wb25lbnQ6IFRlc3RDb21wb25lbnQsIGNhbkFjdGl2YXRlOiBbIEF1dGhHdWFyZCBdIH1cbiAqXG4gKiBAZXhwb3J0XG4gKiBAZHluYW1pY1xuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUHJvdGVjdGVkR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSwgQ2FuQWN0aXZhdGVDaGlsZCB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChBVVRIX1NFUlZJQ0UpcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgQEluamVjdChQVUJMSUNfRkFMTEJBQ0tfUEFHRV9VUkkpIHByaXZhdGUgcHVibGljRmFsbGJhY2tQYWdlVXJpOiBzdHJpbmcsXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHt9XG5cbiAgLyoqXG4gICAqIENhbkFjdGl2YXRlIGhhbmRsZXJcbiAgICovXG4gIHB1YmxpYyBjYW5BY3RpdmF0ZShcbiAgICBfcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3RcbiAgKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aFNlcnZpY2UuaXNBdXRob3JpemVkKClcbiAgICAgIC5waXBlKG1hcCgoaXNBdXRob3JpemVkOiBib29sZWFuKSA9PiB7XG4gICAgICAgIGlmICghaXNBdXRob3JpemVkICYmICF0aGlzLmlzUHVibGljUGFnZShzdGF0ZSkpIHtcbiAgICAgICAgICBpZiAodGhpcy5hdXRoU2VydmljZS5zZXRJbnRlcnJ1cHRlZFVybCkge1xuICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5zZXRJbnRlcnJ1cHRlZFVybChzdGF0ZS51cmwpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMubmF2aWdhdGUodGhpcy5wdWJsaWNGYWxsYmFja1BhZ2VVcmkpO1xuXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FuQWN0aXZhdGVDaGlsZCBoYW5kbGVyXG4gICAqL1xuICBwdWJsaWMgY2FuQWN0aXZhdGVDaGlsZChcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5jYW5BY3RpdmF0ZShyb3V0ZSwgc3RhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrLCBpZiBjdXJyZW50IHBhZ2UgaXMgcHVibGljIGZhbGxiYWNrIHBhZ2VcbiAgICovXG4gIHByaXZhdGUgaXNQdWJsaWNQYWdlKHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN0YXRlLnVybCA9PT0gdGhpcy5wdWJsaWNGYWxsYmFja1BhZ2VVcmk7XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGUgYXdheSBmcm9tIHRoZSBhcHAgLyBwYXRoXG4gICAqL1xuICBwcml2YXRlIG5hdmlnYXRlKHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHVybC5zdGFydHNXaXRoKCdodHRwJykpIHtcbiAgICAgIHRoaXMuZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9IHVybDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmwpO1xuICAgIH1cbiAgfVxuXG59XG4iXX0=

@@ -5,2 +5,3 @@ /**

*/
import { DOCUMENT } from '@angular/common';
import { Injectable, Inject } from '@angular/core';

@@ -18,7 +19,9 @@ import { Router } from '@angular/router';

* @export
* \@dynamic
*/
var PublicGuard = /** @class */ (function () {
function PublicGuard(authService, protectedFallbackPageUri, router) {
function PublicGuard(authService, protectedFallbackPageUri, document, router) {
this.authService = authService;
this.protectedFallbackPageUri = protectedFallbackPageUri;
this.document = document;
this.router = router;

@@ -101,3 +104,3 @@ }

if (url.startsWith('http')) {
window.location.href = url;
this.document.location.href = url;
}

@@ -115,2 +118,3 @@ else {

{ type: String, decorators: [{ type: Inject, args: [PROTECTED_FALLBACK_PAGE_URI,] }] },
{ type: Document, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
{ type: Router }

@@ -127,4 +131,6 @@ ]; };

/** @type {?} */
PublicGuard.prototype.document;
/** @type {?} */
PublicGuard.prototype.router;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLmd1YXJkLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWF1dGgvIiwic291cmNlcyI6WyJwdWJsaWMuZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFHTCxNQUFNLEVBR1AsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7Ozs7OztBQVVyRTtJQUdFLHFCQUNnQyxXQUF3QixFQUNULHdCQUFnQyxFQUNyRSxNQUFjO1FBRlEsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDVCw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQVE7UUFDckUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUNyQixDQUFDO0lBRUo7O09BRUc7Ozs7Ozs7SUFDSSxpQ0FBVzs7Ozs7O0lBQWxCLFVBQ0UsTUFBOEIsRUFDOUIsS0FBMEI7UUFGNUIsaUJBY0M7UUFWQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFO2FBQ25DLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBQyxZQUFxQjtZQUM5QixJQUFJLFlBQVksSUFBSSxDQUFDLEtBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ2hELEtBQUksQ0FBQyxRQUFRLENBQUMsS0FBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7Z0JBRTdDLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7WUFFRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRUQ7O09BRUc7Ozs7Ozs7SUFDSSxzQ0FBZ0I7Ozs7OztJQUF2QixVQUNFLEtBQTZCLEVBQzdCLEtBQTBCO1FBRTFCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOztPQUVHOzs7Ozs7SUFDSyxxQ0FBZTs7Ozs7SUFBdkIsVUFBd0IsS0FBMEI7UUFDaEQsT0FBTyxLQUFLLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7O09BRUc7Ozs7OztJQUNLLDhCQUFROzs7OztJQUFoQixVQUFpQixHQUFXO1FBQzFCLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMxQixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7U0FDNUI7YUFBTTtZQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQzs7Z0JBdERGLFVBQVU7Ozs7Z0JBWEYsV0FBVyx1QkFlZixNQUFNLFNBQUMsWUFBWTs2Q0FDbkIsTUFBTSxTQUFDLDJCQUEyQjtnQkF2QnJDLE1BQU07O0lBMEVSLGtCQUFDO0NBQUEsQUF4REQsSUF3REM7U0F2RFksV0FBVzs7O0lBR3BCLGtDQUFzRDs7SUFDdEQsK0NBQTZFOztJQUM3RSw2QkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENhbkFjdGl2YXRlLFxuICBDYW5BY3RpdmF0ZUNoaWxkLFxuICBSb3V0ZXIsXG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gIFJvdXRlclN0YXRlU25hcHNob3Rcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBBVVRIX1NFUlZJQ0UsIFBST1RFQ1RFRF9GQUxMQkFDS19QQUdFX1VSSSB9IGZyb20gJy4vdG9rZW5zJztcblxuLyoqXG4gKiBHdWFyZCwgY2hlY2tzIGFjY2VzcyB0b2tlbiBhdmFpbGFiaWxpdHkgYW5kIGFsbG93cyBvciBkaXNhbGxvd3MgYWNjZXNzIHRvIHBhZ2UsXG4gKiBhbmQgcmVkaXJlY3RzIG91dFxuICpcbiAqIHVzYWdlOiB7IHBhdGg6ICd0ZXN0JywgY29tcG9uZW50OiBUZXN0Q29tcG9uZW50LCBjYW5BY3RpdmF0ZTogWyBQdWJsaWNHdWFyZCBdIH1cbiAqXG4gKiBAZXhwb3J0XG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQdWJsaWNHdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlLCBDYW5BY3RpdmF0ZUNoaWxkIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEFVVEhfU0VSVklDRSkgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgQEluamVjdChQUk9URUNURURfRkFMTEJBQ0tfUEFHRV9VUkkpIHByaXZhdGUgcHJvdGVjdGVkRmFsbGJhY2tQYWdlVXJpOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHt9XG5cbiAgLyoqXG4gICAqIENhbkFjdGl2YXRlIGhhbmRsZXJcbiAgICovXG4gIHB1YmxpYyBjYW5BY3RpdmF0ZShcbiAgICBfcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3RcbiAgKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aFNlcnZpY2UuaXNBdXRob3JpemVkKClcbiAgICAgIC5waXBlKG1hcCgoaXNBdXRob3JpemVkOiBib29sZWFuKSA9PiB7XG4gICAgICAgIGlmIChpc0F1dGhvcml6ZWQgJiYgIXRoaXMuaXNQcm90ZWN0ZWRQYWdlKHN0YXRlKSkge1xuICAgICAgICAgIHRoaXMubmF2aWdhdGUodGhpcy5wcm90ZWN0ZWRGYWxsYmFja1BhZ2VVcmkpO1xuXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FuQWN0aXZhdGVDaGlsZCBoYW5kbGVyXG4gICAqL1xuICBwdWJsaWMgY2FuQWN0aXZhdGVDaGlsZChcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5jYW5BY3RpdmF0ZShyb3V0ZSwgc3RhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrLCBpZiBjdXJyZW50IHBhZ2UgaXMgcHJvdGVjdGVkIGZhbGxiYWNrIHBhZ2VcbiAgICovXG4gIHByaXZhdGUgaXNQcm90ZWN0ZWRQYWdlKHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN0YXRlLnVybCA9PT0gdGhpcy5wcm90ZWN0ZWRGYWxsYmFja1BhZ2VVcmk7XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGUgYXdheSBmcm9tIHRoZSBhcHAgLyBwYXRoXG4gICAqL1xuICBwcml2YXRlIG5hdmlnYXRlKHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHVybC5zdGFydHNXaXRoKCdodHRwJykpIHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybCk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLmd1YXJkLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWF1dGgvIiwic291cmNlcyI6WyJwdWJsaWMuZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBR0wsTUFBTSxFQUdQLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLDJCQUEyQixFQUFFLE1BQU0sVUFBVSxDQUFDOzs7Ozs7Ozs7O0FBV3JFO0lBR0UscUJBQ2dDLFdBQXdCLEVBQ1Qsd0JBQWdDLEVBQzFDLFFBQWtCLEVBQzdDLE1BQWM7UUFIUSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNULDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBUTtRQUMxQyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQzdDLFdBQU0sR0FBTixNQUFNLENBQVE7SUFDckIsQ0FBQztJQUVKOztPQUVHOzs7Ozs7O0lBQ0ksaUNBQVc7Ozs7OztJQUFsQixVQUNFLE1BQThCLEVBQzlCLEtBQTBCO1FBRjVCLGlCQWNDO1FBVkMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRTthQUNuQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQUMsWUFBcUI7WUFDOUIsSUFBSSxZQUFZLElBQUksQ0FBQyxLQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNoRCxLQUFJLENBQUMsUUFBUSxDQUFDLEtBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO2dCQUU3QyxPQUFPLEtBQUssQ0FBQzthQUNkO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVEOztPQUVHOzs7Ozs7O0lBQ0ksc0NBQWdCOzs7Ozs7SUFBdkIsVUFDRSxLQUE2QixFQUM3QixLQUEwQjtRQUUxQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7T0FFRzs7Ozs7O0lBQ0sscUNBQWU7Ozs7O0lBQXZCLFVBQXdCLEtBQTBCO1FBQ2hELE9BQU8sS0FBSyxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsd0JBQXdCLENBQUM7SUFDckQsQ0FBQztJQUVEOztPQUVHOzs7Ozs7SUFDSyw4QkFBUTs7Ozs7SUFBaEIsVUFBaUIsR0FBVztRQUMxQixJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztTQUNuQzthQUFNO1lBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDaEM7SUFDSCxDQUFDOztnQkF2REYsVUFBVTs7OztnQkFaRixXQUFXLHVCQWdCZixNQUFNLFNBQUMsWUFBWTs2Q0FDbkIsTUFBTSxTQUFDLDJCQUEyQjtnQkFDVSxRQUFRLHVCQUFwRCxNQUFNLFNBQUMsUUFBUTtnQkF6QmxCLE1BQU07O0lBNEVSLGtCQUFDO0NBQUEsQUF6REQsSUF5REM7U0F4RFksV0FBVzs7O0lBR3BCLGtDQUFzRDs7SUFDdEQsK0NBQTZFOztJQUM3RSwrQkFBcUQ7O0lBQ3JELDZCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ2FuQWN0aXZhdGUsXG4gIENhbkFjdGl2YXRlQ2hpbGQsXG4gIFJvdXRlcixcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgUm91dGVyU3RhdGVTbmFwc2hvdFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEFVVEhfU0VSVklDRSwgUFJPVEVDVEVEX0ZBTExCQUNLX1BBR0VfVVJJIH0gZnJvbSAnLi90b2tlbnMnO1xuXG4vKipcbiAqIEd1YXJkLCBjaGVja3MgYWNjZXNzIHRva2VuIGF2YWlsYWJpbGl0eSBhbmQgYWxsb3dzIG9yIGRpc2FsbG93cyBhY2Nlc3MgdG8gcGFnZSxcbiAqIGFuZCByZWRpcmVjdHMgb3V0XG4gKlxuICogdXNhZ2U6IHsgcGF0aDogJ3Rlc3QnLCBjb21wb25lbnQ6IFRlc3RDb21wb25lbnQsIGNhbkFjdGl2YXRlOiBbIFB1YmxpY0d1YXJkIF0gfVxuICpcbiAqIEBleHBvcnRcbiAqIEBkeW5hbWljXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQdWJsaWNHdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlLCBDYW5BY3RpdmF0ZUNoaWxkIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEFVVEhfU0VSVklDRSkgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgQEluamVjdChQUk9URUNURURfRkFMTEJBQ0tfUEFHRV9VUkkpIHByaXZhdGUgcHJvdGVjdGVkRmFsbGJhY2tQYWdlVXJpOiBzdHJpbmcsXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHt9XG5cbiAgLyoqXG4gICAqIENhbkFjdGl2YXRlIGhhbmRsZXJcbiAgICovXG4gIHB1YmxpYyBjYW5BY3RpdmF0ZShcbiAgICBfcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3RcbiAgKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aFNlcnZpY2UuaXNBdXRob3JpemVkKClcbiAgICAgIC5waXBlKG1hcCgoaXNBdXRob3JpemVkOiBib29sZWFuKSA9PiB7XG4gICAgICAgIGlmIChpc0F1dGhvcml6ZWQgJiYgIXRoaXMuaXNQcm90ZWN0ZWRQYWdlKHN0YXRlKSkge1xuICAgICAgICAgIHRoaXMubmF2aWdhdGUodGhpcy5wcm90ZWN0ZWRGYWxsYmFja1BhZ2VVcmkpO1xuXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FuQWN0aXZhdGVDaGlsZCBoYW5kbGVyXG4gICAqL1xuICBwdWJsaWMgY2FuQWN0aXZhdGVDaGlsZChcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5jYW5BY3RpdmF0ZShyb3V0ZSwgc3RhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrLCBpZiBjdXJyZW50IHBhZ2UgaXMgcHJvdGVjdGVkIGZhbGxiYWNrIHBhZ2VcbiAgICovXG4gIHByaXZhdGUgaXNQcm90ZWN0ZWRQYWdlKHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN0YXRlLnVybCA9PT0gdGhpcy5wcm90ZWN0ZWRGYWxsYmFja1BhZ2VVcmk7XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGUgYXdheSBmcm9tIHRoZSBhcHAgLyBwYXRoXG4gICAqL1xuICBwcml2YXRlIG5hdmlnYXRlKHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHVybC5zdGFydHNXaXRoKCdodHRwJykpIHtcbiAgICAgIHRoaXMuZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9IHVybDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmwpO1xuICAgIH1cbiAgfVxuXG59XG4iXX0=
import { InjectionToken, Injectable, Inject, Injector, NgModule } from '@angular/core';
import { DOCUMENT } from '@angular/common';
import { Router } from '@angular/router';

@@ -40,2 +41,3 @@ import { map, first, switchMap, catchError } from 'rxjs/operators';

* @export
* \@dynamic
*/

@@ -46,7 +48,9 @@ class PublicGuard {

* @param {?} protectedFallbackPageUri
* @param {?} document
* @param {?} router
*/
constructor(authService, protectedFallbackPageUri, router) {
constructor(authService, protectedFallbackPageUri, document, router) {
this.authService = authService;
this.protectedFallbackPageUri = protectedFallbackPageUri;
this.document = document;
this.router = router;

@@ -94,3 +98,3 @@ }

if (url.startsWith('http')) {
window.location.href = url;
this.document.location.href = url;
}

@@ -109,2 +113,3 @@ else {

{ type: String, decorators: [{ type: Inject, args: [PROTECTED_FALLBACK_PAGE_URI,] }] },
{ type: Document, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
{ type: Router }

@@ -124,2 +129,3 @@ ];

* @export
* \@dynamic
*/

@@ -130,7 +136,9 @@ class ProtectedGuard {

* @param {?} publicFallbackPageUri
* @param {?} document
* @param {?} router
*/
constructor(authService, publicFallbackPageUri, router) {
constructor(authService, publicFallbackPageUri, document, router) {
this.authService = authService;
this.publicFallbackPageUri = publicFallbackPageUri;
this.document = document;
this.router = router;

@@ -181,3 +189,3 @@ }

if (url.startsWith('http')) {
window.location.href = url;
this.document.location.href = url;
}

@@ -196,2 +204,3 @@ else {

{ type: String, decorators: [{ type: Inject, args: [PUBLIC_FALLBACK_PAGE_URI,] }] },
{ type: Document, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
{ type: Router }

@@ -265,3 +274,3 @@ ];

/** @type {?} */
const refreshShouldHappen = authService.refreshShouldHappen(res);
const refreshShouldHappen = authService.refreshShouldHappen(res, req);
if (refreshShouldHappen && !this.refreshInProgress) {

@@ -400,2 +409,2 @@ this.refreshInProgress = true;

//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWF1dGguanMubWFwIiwic291cmNlcyI6WyJuZzovL25neC1hdXRoL2F1dGguc2VydmljZS50cyIsIm5nOi8vbmd4LWF1dGgvdG9rZW5zLnRzIiwibmc6Ly9uZ3gtYXV0aC9wdWJsaWMuZ3VhcmQudHMiLCJuZzovL25neC1hdXRoL3Byb3RlY3RlZC5ndWFyZC50cyIsIm5nOi8vbmd4LWF1dGgvYXV0aC5pbnRlcmNlcHRvci50cyIsIm5nOi8vbmd4LWF1dGgvYXV0aC5tb2R1bGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cFJlcXVlc3QsIEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIEVzc2VudGlhbCBzZXJ2aWNlIGZvciBhdXRoZW50aWNhdGlvblxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXV0aFNlcnZpY2Uge1xuXG4gIC8qKlxuICAgKiBDaGVjaywgaWYgdXNlciBhbHJlYWR5IGF1dGhvcml6ZWQuXG4gICAqIFNob3VsZCByZXR1cm4gT2JzZXJ2YWJsZSB3aXRoIHRydWUgb3IgZmFsc2UgdmFsdWVzXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgaXNBdXRob3JpemVkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgLyoqXG4gICAqIEdldCBhY2Nlc3MgdG9rZW5cbiAgICogU2hvdWxkIHJldHVybiBhY2Nlc3MgdG9rZW4gaW4gT2JzZXJ2YWJsZSBmcm9tIGUuZy5cbiAgICogbG9jYWxTdG9yYWdlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0QWNjZXNzVG9rZW4oKTogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBGdW5jdGlvbiwgdGhhdCBzaG91bGQgcGVyZm9ybSByZWZyZXNoIHRva2VuXG4gICAqIFNob3VsZCBiZSBzdWNjZXNzZnVsbHkgY29tcGxldGVkIHNvIGludGVyY2VwdG9yXG4gICAqIGNhbiBleGVjdXRlIHBlbmRpbmcgcmVxdWVzdHMgb3IgcmV0cnkgb3JpZ2luYWwgb25lXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVmcmVzaFRva2VuKCk6IE9ic2VydmFibGU8YW55PjtcblxuICAvKipcbiAgICogRnVuY3Rpb24sIGNoZWNrcyByZXNwb25zZSBvZiBmYWlsZWQgcmVxdWVzdCB0byBkZXRlcm1pbmUsXG4gICAqIHdoZXRoZXIgdG9rZW4gYmUgcmVmcmVzaGVkIG9yIG5vdC5cbiAgICpcbiAgICogRXNzZW50aWFsbHkgY2hlY2tzIHN0YXR1c1xuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlZnJlc2hTaG91bGRIYXBwZW4ocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlKTogYm9vbGVhbjtcblxuICAvKipcbiAgICogVmVyaWZ5IHRoYXQgb3V0Z29pbmcgcmVxdWVzdCBpcyByZWZyZXNoLXRva2VuLFxuICAgKiBzbyBpbnRlcmNlcHRvciB3b24ndCBpbnRlcmNlcHQgdGhpcyByZXF1ZXN0XG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgdmVyaWZ5UmVmcmVzaFRva2VuPyhyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+KTogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHJlcXVlc3QgbXVzdCBiZSBza2lwcGVkIGJ5IGludGVyY2VwdG9yLlxuICAgKiBVc2VmdWwgZm9yIHJlcXVlc3RzIHN1Y2ggYXMgcmVxdWVzdCB0b2tlbiB3aGljaCBkb2Vzbid0IHJlcXVpcmUgdG9rZW4gaW4gaGVhZGVyc1xuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHNraXBSZXF1ZXN0PyhyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+KTogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWRkIHRva2VuIHRvIGhlYWRlcnMsIGRlcGVuZGVudCBvbiBzZXJ2ZXJcbiAgICogc2V0LXVwLCBieSBkZWZhdWx0IGFkZHMgYSBiZWFyZXIgdG9rZW4uXG4gICAqIENhbGxlZCBieSBpbnRlcmNlcHRvci5cbiAgICogVG8gY2hhbmdlIGJlaGF2aW9yLCBvdmVycmlkZSB0aGlzIG1ldGhvZC5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXRIZWFkZXJzPyh0b2tlbjogc3RyaW5nKTogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfTtcblxuICAvKipcbiAgICogU2F2ZXMgbGFzdCBpbnRlcnJ1cHRlZCB1cmwgaW5zaWRlIG9mIHRoZSBzZXJ2aWNlIGZvciBmdXJ0aGVyIHJldXNhZ2UsXG4gICAqIGUuZy4gcmVzdG9yaW5nIGludGVycnVwdGVkIHBhZ2UgYWZ0ZXIgbG9nZ2luZyBpblxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHNldEludGVycnVwdGVkVXJsPyh1cmw6IHN0cmluZyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFZlcmlmeSB0aGF0IG91dGdvaW5nIHJlcXVlc3QgaXMgcmVmcmVzaC10b2tlbixcbiAgICogc28gaW50ZXJjZXB0b3Igd29uJ3QgaW50ZXJjZXB0IHRoaXMgcmVxdWVzdFxuICAgKiBAZGVwcmVjYXRlZCBEdWUgdG8gaWxsb2dpY2FsIG1lYW5pbmcvZnVuY3Rpb25hbGl0eSB0aGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkXG4gICAqIEBzZWUgdmVyaWZ5UmVmcmVzaFRva2VuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgdmVyaWZ5VG9rZW5SZXF1ZXN0Pyh1cmw6IHN0cmluZyk6IGJvb2xlYW47XG59XG4iLCJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgQVVUSF9TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuKCdBVVRIX1NFUlZJQ0UnKTtcbmV4cG9ydCBjb25zdCBQVUJMSUNfRkFMTEJBQ0tfUEFHRV9VUkkgPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ1BVQkxJQ19GQUxMQkFDS19QQUdFX1VSSScpO1xuZXhwb3J0IGNvbnN0IFBST1RFQ1RFRF9GQUxMQkFDS19QQUdFX1VSSSA9IG5ldyBJbmplY3Rpb25Ub2tlbignUFJPVEVDVEVEX0ZBTExCQUNLX1BBR0VfVVJJJyk7XG4iLCJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENhbkFjdGl2YXRlLFxuICBDYW5BY3RpdmF0ZUNoaWxkLFxuICBSb3V0ZXIsXG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gIFJvdXRlclN0YXRlU25hcHNob3Rcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBBVVRIX1NFUlZJQ0UsIFBST1RFQ1RFRF9GQUxMQkFDS19QQUdFX1VSSSB9IGZyb20gJy4vdG9rZW5zJztcblxuLyoqXG4gKiBHdWFyZCwgY2hlY2tzIGFjY2VzcyB0b2tlbiBhdmFpbGFiaWxpdHkgYW5kIGFsbG93cyBvciBkaXNhbGxvd3MgYWNjZXNzIHRvIHBhZ2UsXG4gKiBhbmQgcmVkaXJlY3RzIG91dFxuICpcbiAqIHVzYWdlOiB7IHBhdGg6ICd0ZXN0JywgY29tcG9uZW50OiBUZXN0Q29tcG9uZW50LCBjYW5BY3RpdmF0ZTogWyBQdWJsaWNHdWFyZCBdIH1cbiAqXG4gKiBAZXhwb3J0XG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQdWJsaWNHdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlLCBDYW5BY3RpdmF0ZUNoaWxkIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEFVVEhfU0VSVklDRSkgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgQEluamVjdChQUk9URUNURURfRkFMTEJBQ0tfUEFHRV9VUkkpIHByaXZhdGUgcHJvdGVjdGVkRmFsbGJhY2tQYWdlVXJpOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHt9XG5cbiAgLyoqXG4gICAqIENhbkFjdGl2YXRlIGhhbmRsZXJcbiAgICovXG4gIHB1YmxpYyBjYW5BY3RpdmF0ZShcbiAgICBfcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3RcbiAgKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aFNlcnZpY2UuaXNBdXRob3JpemVkKClcbiAgICAgIC5waXBlKG1hcCgoaXNBdXRob3JpemVkOiBib29sZWFuKSA9PiB7XG4gICAgICAgIGlmIChpc0F1dGhvcml6ZWQgJiYgIXRoaXMuaXNQcm90ZWN0ZWRQYWdlKHN0YXRlKSkge1xuICAgICAgICAgIHRoaXMubmF2aWdhdGUodGhpcy5wcm90ZWN0ZWRGYWxsYmFja1BhZ2VVcmkpO1xuXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FuQWN0aXZhdGVDaGlsZCBoYW5kbGVyXG4gICAqL1xuICBwdWJsaWMgY2FuQWN0aXZhdGVDaGlsZChcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5jYW5BY3RpdmF0ZShyb3V0ZSwgc3RhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrLCBpZiBjdXJyZW50IHBhZ2UgaXMgcHJvdGVjdGVkIGZhbGxiYWNrIHBhZ2VcbiAgICovXG4gIHByaXZhdGUgaXNQcm90ZWN0ZWRQYWdlKHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN0YXRlLnVybCA9PT0gdGhpcy5wcm90ZWN0ZWRGYWxsYmFja1BhZ2VVcmk7XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGUgYXdheSBmcm9tIHRoZSBhcHAgLyBwYXRoXG4gICAqL1xuICBwcml2YXRlIG5hdmlnYXRlKHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHVybC5zdGFydHNXaXRoKCdodHRwJykpIHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybCk7XG4gICAgfVxuICB9XG5cbn1cbiIsImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgUm91dGVyLFxuICBDYW5BY3RpdmF0ZSxcbiAgQ2FuQWN0aXZhdGVDaGlsZCxcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgUm91dGVyU3RhdGVTbmFwc2hvdFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEFVVEhfU0VSVklDRSwgUFVCTElDX0ZBTExCQUNLX1BBR0VfVVJJIH0gZnJvbSAnLi90b2tlbnMnO1xuXG4vKipcbiAqIEd1YXJkLCBjaGVja3MgYWNjZXNzIHRva2VuIGF2YWlsYWJpbGl0eSBhbmQgYWxsb3dzIG9yIGRpc2FsbG93cyBhY2Nlc3MgdG8gcGFnZSxcbiAqIGFuZCByZWRpcmVjdHMgb3V0XG4gKlxuICogdXNhZ2U6IHsgcGF0aDogJ3Rlc3QnLCBjb21wb25lbnQ6IFRlc3RDb21wb25lbnQsIGNhbkFjdGl2YXRlOiBbIEF1dGhHdWFyZCBdIH1cbiAqXG4gKiBAZXhwb3J0XG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQcm90ZWN0ZWRHdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlLCBDYW5BY3RpdmF0ZUNoaWxkIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEFVVEhfU0VSVklDRSlwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICBASW5qZWN0KFBVQkxJQ19GQUxMQkFDS19QQUdFX1VSSSkgcHJpdmF0ZSBwdWJsaWNGYWxsYmFja1BhZ2VVcmk6IHN0cmluZyxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXG4gICkge31cblxuICAvKipcbiAgICogQ2FuQWN0aXZhdGUgaGFuZGxlclxuICAgKi9cbiAgcHVibGljIGNhbkFjdGl2YXRlKFxuICAgIF9yb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5pc0F1dGhvcml6ZWQoKVxuICAgICAgLnBpcGUobWFwKChpc0F1dGhvcml6ZWQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKCFpc0F1dGhvcml6ZWQgJiYgIXRoaXMuaXNQdWJsaWNQYWdlKHN0YXRlKSkge1xuICAgICAgICAgIGlmICh0aGlzLmF1dGhTZXJ2aWNlLnNldEludGVycnVwdGVkVXJsKSB7XG4gICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLnNldEludGVycnVwdGVkVXJsKHN0YXRlLnVybCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5uYXZpZ2F0ZSh0aGlzLnB1YmxpY0ZhbGxiYWNrUGFnZVVyaSk7XG5cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYW5BY3RpdmF0ZUNoaWxkIGhhbmRsZXJcbiAgICovXG4gIHB1YmxpYyBjYW5BY3RpdmF0ZUNoaWxkKFxuICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICAgIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XG4gICk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmNhbkFjdGl2YXRlKHJvdXRlLCBzdGF0ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2ssIGlmIGN1cnJlbnQgcGFnZSBpcyBwdWJsaWMgZmFsbGJhY2sgcGFnZVxuICAgKi9cbiAgcHJpdmF0ZSBpc1B1YmxpY1BhZ2Uoc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3RhdGUudXJsID09PSB0aGlzLnB1YmxpY0ZhbGxiYWNrUGFnZVVyaTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZSBhd2F5IGZyb20gdGhlIGFwcCAvIHBhdGhcbiAgICovXG4gIHByaXZhdGUgbmF2aWdhdGUodXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodXJsLnN0YXJ0c1dpdGgoJ2h0dHAnKSkge1xuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodXJsKTtcbiAgICB9XG4gIH1cblxufVxuIiwiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEh0dHBDbGllbnQsXG4gIEh0dHBFdmVudCxcbiAgSHR0cEludGVyY2VwdG9yLFxuICBIdHRwSGFuZGxlcixcbiAgSHR0cFJlcXVlc3QsXG4gIEh0dHBFcnJvclJlc3BvbnNlXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgZmlyc3QsIHN3aXRjaE1hcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBBVVRIX1NFUlZJQ0UgfSBmcm9tICcuL3Rva2Vucyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBdXRoSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuXG4gIC8qKlxuICAgKiBJcyByZWZyZXNoIHRva2VuIGlzIGJlaW5nIGV4ZWN1dGVkXG4gICAqL1xuICBwcml2YXRlIHJlZnJlc2hJblByb2dyZXNzID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIE5vdGlmeSBhbGwgb3V0c3RhbmRpbmcgcmVxdWVzdHMgdGhyb3VnaCB0aGlzIHN1YmplY3RcbiAgICovXG4gIHByaXZhdGUgcmVmcmVzaFN1YmplY3Q6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuXG4gIC8qKlxuICAgKiBJbnRlcmNlcHQgYW4gb3V0Z29pbmcgYEh0dHBSZXF1ZXN0YFxuICAgKi9cbiAgcHVibGljIGludGVyY2VwdChcbiAgICByZXE6IEh0dHBSZXF1ZXN0PGFueT4sXG4gICAgZGVsZWdhdGU6IEh0dHBIYW5kbGVyXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICBpZiAodGhpcy5za2lwUmVxdWVzdChyZXEpKSB7XG4gICAgICByZXR1cm4gZGVsZWdhdGUuaGFuZGxlKHJlcSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucHJvY2Vzc0ludGVyY2VwdChyZXEsIGRlbGVnYXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzIGFsbCB0aGUgcmVxdWVzdHMgdmlhIGN1c3RvbSBpbnRlcmNlcHRvcnMuXG4gICAqL1xuICBwcml2YXRlIHByb2Nlc3NJbnRlcmNlcHQoXG4gICAgb3JpZ2luYWw6IEh0dHBSZXF1ZXN0PGFueT4sXG4gICAgZGVsZWdhdGU6IEh0dHBIYW5kbGVyXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICBjb25zdCBjbG9uZTogSHR0cFJlcXVlc3Q8YW55PiA9IG9yaWdpbmFsLmNsb25lKCk7XG5cbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KGNsb25lKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgocmVxOiBIdHRwUmVxdWVzdDxhbnk+KSA9PiBkZWxlZ2F0ZS5oYW5kbGUocmVxKSksXG4gICAgICAgIGNhdGNoRXJyb3IoKHJlczogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMucmVzcG9uc2VFcnJvcihjbG9uZSwgcmVzKSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmVxdWVzdCBpbnRlcmNlcHRvci4gRGVsYXlzIHJlcXVlc3QgaWYgcmVmcmVzaCBpcyBpbiBwcm9ncmVzc1xuICAgKiBvdGhlcndpc2UgYWRkcyB0b2tlbiB0byB0aGUgaGVhZGVyc1xuICAgKi9cbiAgcHJpdmF0ZSByZXF1ZXN0KHJlcTogSHR0cFJlcXVlc3Q8YW55Pik6IE9ic2VydmFibGU8SHR0cFJlcXVlc3Q8YW55Pj4ge1xuICAgIGlmICh0aGlzLnJlZnJlc2hJblByb2dyZXNzKSB7XG4gICAgICByZXR1cm4gdGhpcy5kZWxheVJlcXVlc3QocmVxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hZGRUb2tlbihyZXEpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZhaWxlZCByZXF1ZXN0IGludGVyY2VwdG9yLCBjaGVjayBpZiBpdCBoYXMgdG8gYmUgcHJvY2Vzc2VkIHdpdGggcmVmcmVzaFxuICAgKi9cbiAgcHJpdmF0ZSByZXNwb25zZUVycm9yKFxuICAgIHJlcTogSHR0cFJlcXVlc3Q8YW55PixcbiAgICByZXM6IEh0dHBFcnJvclJlc3BvbnNlXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICBjb25zdCBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UgPVxuICAgICAgdGhpcy5pbmplY3Rvci5nZXQ8QXV0aFNlcnZpY2U+KEFVVEhfU0VSVklDRSk7XG4gICAgY29uc3QgcmVmcmVzaFNob3VsZEhhcHBlbjogYm9vbGVhbiA9XG4gICAgICBhdXRoU2VydmljZS5yZWZyZXNoU2hvdWxkSGFwcGVuKHJlcyk7XG5cbiAgICBpZiAocmVmcmVzaFNob3VsZEhhcHBlbiAmJiAhdGhpcy5yZWZyZXNoSW5Qcm9ncmVzcykge1xuICAgICAgdGhpcy5yZWZyZXNoSW5Qcm9ncmVzcyA9IHRydWU7XG5cbiAgICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC5yZWZyZXNoVG9rZW4oKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaFN1YmplY3QubmV4dCh0cnVlKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaFN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGlmIChyZWZyZXNoU2hvdWxkSGFwcGVuICYmIHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybiB0aGlzLnJldHJ5UmVxdWVzdChyZXEsIHJlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRocm93RXJyb3IocmVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYWNjZXNzIHRva2VuIHRvIGhlYWRlcnMgb3IgdGhlIHJlcXVlc3RcbiAgICovXG4gIHByaXZhdGUgYWRkVG9rZW4ocmVxOiBIdHRwUmVxdWVzdDxhbnk+KTogT2JzZXJ2YWJsZTxIdHRwUmVxdWVzdDxhbnk+PiB7XG4gICAgY29uc3QgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlID1cbiAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0PEF1dGhTZXJ2aWNlPihBVVRIX1NFUlZJQ0UpO1xuXG4gICAgcmV0dXJuIGF1dGhTZXJ2aWNlLmdldEFjY2Vzc1Rva2VuKClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHRva2VuOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICAgIGxldCBzZXRIZWFkZXJzOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB9O1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGF1dGhTZXJ2aWNlLmdldEhlYWRlcnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgc2V0SGVhZGVycyA9IGF1dGhTZXJ2aWNlLmdldEhlYWRlcnModG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc2V0SGVhZGVycyA9IHsgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJlcS5jbG9uZSh7IHNldEhlYWRlcnMgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHJlcTtcbiAgICAgICAgfSksXG4gICAgICAgIGZpcnN0KClcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRGVsYXkgcmVxdWVzdCwgYnkgc3Vic2NyaWJpbmcgb24gcmVmcmVzaCBldmVudCwgb25jZSBpdCBmaW5pc2hlZCwgcHJvY2VzcyBpdFxuICAgKiBvdGhlcndpc2UgdGhyb3cgZXJyb3JcbiAgICovXG4gIHByaXZhdGUgZGVsYXlSZXF1ZXN0KHJlcTogSHR0cFJlcXVlc3Q8YW55Pik6IE9ic2VydmFibGU8SHR0cFJlcXVlc3Q8YW55Pj4ge1xuICAgIHJldHVybiB0aGlzLnJlZnJlc2hTdWJqZWN0LnBpcGUoXG4gICAgICBmaXJzdCgpLFxuICAgICAgc3dpdGNoTWFwKChzdGF0dXM6IGJvb2xlYW4pID0+XG4gICAgICAgIHN0YXR1cyA/IHRoaXMuYWRkVG9rZW4ocmVxKSA6IHRocm93RXJyb3IocmVxKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cnkgcmVxdWVzdCwgYnkgc3Vic2NyaWJpbmcgb24gcmVmcmVzaCBldmVudCwgb25jZSBpdCBmaW5pc2hlZCwgcHJvY2VzcyBpdFxuICAgKiBvdGhlcndpc2UgdGhyb3cgZXJyb3JcbiAgICovXG4gIHByaXZhdGUgcmV0cnlSZXF1ZXN0KFxuICAgIHJlcTogSHR0cFJlcXVlc3Q8YW55PixcbiAgICByZXM6IEh0dHBFcnJvclJlc3BvbnNlXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICBjb25zdCBodHRwOiBIdHRwQ2xpZW50ID1cbiAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0PEh0dHBDbGllbnQ+KEh0dHBDbGllbnQpO1xuXG4gICAgcmV0dXJuIHRoaXMucmVmcmVzaFN1YmplY3QucGlwZShcbiAgICAgIGZpcnN0KCksXG4gICAgICBzd2l0Y2hNYXAoKHN0YXR1czogYm9vbGVhbikgPT5cbiAgICAgICAgc3RhdHVzID8gaHR0cC5yZXF1ZXN0KHJlcSkgOiB0aHJvd0Vycm9yKHJlcyB8fCByZXEpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgcmVxdWVzdCBtdXN0IGJlIHNraXBwZWQgYnkgaW50ZXJjZXB0b3IuXG4gICAqL1xuICBwcml2YXRlIHNraXBSZXF1ZXN0KHJlcTogSHR0cFJlcXVlc3Q8YW55Pikge1xuICAgIGNvbnN0IHNraXBSZXF1ZXN0ID0gdGhpcy5leGVjKCdza2lwUmVxdWVzdCcsIHJlcSk7XG4gICAgY29uc3QgdmVyaWZ5UmVmcmVzaFRva2VuID0gdGhpcy5leGVjKCd2ZXJpZnlSZWZyZXNoVG9rZW4nLCByZXEpO1xuXG4gICAgLy8gZGVwcmVjYXRlZCwgd2lsbCBiZSByZW1vdmVkIHNvb25cbiAgICBjb25zdCB2ZXJpZnlUb2tlblJlcXVlc3QgPSB0aGlzLmV4ZWMoJ3ZlcmlmeVRva2VuUmVxdWVzdCcsIHJlcS51cmwpO1xuXG4gICAgcmV0dXJuIHNraXBSZXF1ZXN0IHx8IHZlcmlmeVJlZnJlc2hUb2tlbiB8fCB2ZXJpZnlUb2tlblJlcXVlc3Q7XG4gIH1cblxuICAvKipcbiAgICogRXhlYyBvcHRpb25hbCBtZXRob2QsIHdpbGwgYmUgcmVtb3ZlZCBpbiB1cGNvbWluZyB1cGRhdGVzLlxuICAgKiBUZW1wIG1ldGhvZCB1bnRpbCBgdmVyaWZ5VG9rZW5SZXF1ZXN0YCB3aWxsIGJlIGNvbXBsZXRlbHkgcmVwbGFjZWQgd2l0aCBza2lwUmVxdWVzdFxuICAgKi9cbiAgcHJpdmF0ZSBleGVjKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGNvbnN0IGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSA9XG4gICAgICB0aGlzLmluamVjdG9yLmdldDxBdXRoU2VydmljZT4oQVVUSF9TRVJWSUNFKTtcblxuICAgIGlmICh0eXBlb2YgYXV0aFNlcnZpY2VbbWV0aG9kXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIGF1dGhTZXJ2aWNlW21ldGhvZF0oLi4uYXJncyk7XG4gICAgfVxuICB9XG5cbn1cbiIsImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIVFRQX0lOVEVSQ0VQVE9SUyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuaW1wb3J0IHsgUHVibGljR3VhcmQgfSBmcm9tICcuL3B1YmxpYy5ndWFyZCc7XG5pbXBvcnQgeyBQcm90ZWN0ZWRHdWFyZCB9IGZyb20gJy4vcHJvdGVjdGVkLmd1YXJkJztcbmltcG9ydCB7IEF1dGhJbnRlcmNlcHRvciB9IGZyb20gJy4vYXV0aC5pbnRlcmNlcHRvcic7XG5cbkBOZ01vZHVsZSh7XG4gIHByb3ZpZGVyczogW1xuICAgIFB1YmxpY0d1YXJkLFxuICAgIFByb3RlY3RlZEd1YXJkLFxuICAgIEF1dGhJbnRlcmNlcHRvcixcbiAgICB7XG4gICAgICBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUyxcbiAgICAgIHVzZUNsYXNzOiBBdXRoSW50ZXJjZXB0b3IsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQXV0aE1vZHVsZSB7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFNQSxNQUFzQixXQUFXO0NBK0RoQzs7Ozs7O0FDckVEO0FBRUEsTUFBYSxZQUFZLEdBQUcsSUFBSSxjQUFjLENBQUMsY0FBYyxDQUFDOztBQUM5RCxNQUFhLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUFDLDBCQUEwQixDQUFDOztBQUN0RixNQUFhLDJCQUEyQixHQUFHLElBQUksY0FBYyxDQUFDLDZCQUE2QixDQUFDOzs7Ozs7QUNKNUY7Ozs7Ozs7O0FBdUJBLE1BQWEsV0FBVzs7Ozs7O0lBRXRCLFlBQ2dDLFdBQXdCLEVBQ1Qsd0JBQWdDLEVBQ3JFLE1BQWM7UUFGUSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNULDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBUTtRQUNyRSxXQUFNLEdBQU4sTUFBTSxDQUFRO0tBQ3BCOzs7Ozs7O0lBS0csV0FBVyxDQUNoQixNQUE4QixFQUM5QixLQUEwQjtRQUUxQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFO2FBQ25DLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFxQjtZQUM5QixJQUFJLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ2hELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7Z0JBRTdDLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7WUFFRCxPQUFPLElBQUksQ0FBQztTQUNiLENBQUMsQ0FBQyxDQUFDO0tBQ1A7Ozs7Ozs7SUFLTSxnQkFBZ0IsQ0FDckIsS0FBNkIsRUFDN0IsS0FBMEI7UUFFMUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxLQUFLLENB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
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWF1dGguanMubWFwIiwic291cmNlcyI6WyJuZzovL25neC1hdXRoL2F1dGguc2VydmljZS50cyIsIm5nOi8vbmd4LWF1dGgvdG9rZW5zLnRzIiwibmc6Ly9uZ3gtYXV0aC9wdWJsaWMuZ3VhcmQudHMiLCJuZzovL25neC1hdXRoL3Byb3RlY3RlZC5ndWFyZC50cyIsIm5nOi8vbmd4LWF1dGgvYXV0aC5pbnRlcmNlcHRvci50cyIsIm5nOi8vbmd4LWF1dGgvYXV0aC5tb2R1bGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cFJlcXVlc3QsIEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIEVzc2VudGlhbCBzZXJ2aWNlIGZvciBhdXRoZW50aWNhdGlvblxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXV0aFNlcnZpY2Uge1xuXG4gIC8qKlxuICAgKiBDaGVjaywgaWYgdXNlciBhbHJlYWR5IGF1dGhvcml6ZWQuXG4gICAqIFNob3VsZCByZXR1cm4gT2JzZXJ2YWJsZSB3aXRoIHRydWUgb3IgZmFsc2UgdmFsdWVzXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgaXNBdXRob3JpemVkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgLyoqXG4gICAqIEdldCBhY2Nlc3MgdG9rZW5cbiAgICogU2hvdWxkIHJldHVybiBhY2Nlc3MgdG9rZW4gaW4gT2JzZXJ2YWJsZSBmcm9tIGUuZy5cbiAgICogbG9jYWxTdG9yYWdlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0QWNjZXNzVG9rZW4oKTogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBGdW5jdGlvbiwgdGhhdCBzaG91bGQgcGVyZm9ybSByZWZyZXNoIHRva2VuXG4gICAqIFNob3VsZCBiZSBzdWNjZXNzZnVsbHkgY29tcGxldGVkIHNvIGludGVyY2VwdG9yXG4gICAqIGNhbiBleGVjdXRlIHBlbmRpbmcgcmVxdWVzdHMgb3IgcmV0cnkgb3JpZ2luYWwgb25lXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVmcmVzaFRva2VuKCk6IE9ic2VydmFibGU8YW55PjtcblxuICAvKipcbiAgICogRnVuY3Rpb24sIGNoZWNrcyByZXNwb25zZSBvZiBmYWlsZWQgcmVxdWVzdCB0byBkZXRlcm1pbmUsXG4gICAqIHdoZXRoZXIgdG9rZW4gYmUgcmVmcmVzaGVkIG9yIG5vdC5cbiAgICpcbiAgICogRXNzZW50aWFsbHkgY2hlY2tzIHN0YXR1c1xuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlZnJlc2hTaG91bGRIYXBwZW4ocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlLCByZXF1ZXN0PzogSHR0cFJlcXVlc3Q8YW55Pik6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFZlcmlmeSB0aGF0IG91dGdvaW5nIHJlcXVlc3QgaXMgcmVmcmVzaC10b2tlbixcbiAgICogc28gaW50ZXJjZXB0b3Igd29uJ3QgaW50ZXJjZXB0IHRoaXMgcmVxdWVzdFxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHZlcmlmeVJlZnJlc2hUb2tlbj8ocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55Pik6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiByZXF1ZXN0IG11c3QgYmUgc2tpcHBlZCBieSBpbnRlcmNlcHRvci5cbiAgICogVXNlZnVsIGZvciByZXF1ZXN0cyBzdWNoIGFzIHJlcXVlc3QgdG9rZW4gd2hpY2ggZG9lc24ndCByZXF1aXJlIHRva2VuIGluIGhlYWRlcnNcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBza2lwUmVxdWVzdD8ocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55Pik6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFkZCB0b2tlbiB0byBoZWFkZXJzLCBkZXBlbmRlbnQgb24gc2VydmVyXG4gICAqIHNldC11cCwgYnkgZGVmYXVsdCBhZGRzIGEgYmVhcmVyIHRva2VuLlxuICAgKiBDYWxsZWQgYnkgaW50ZXJjZXB0b3IuXG4gICAqIFRvIGNoYW5nZSBiZWhhdmlvciwgb3ZlcnJpZGUgdGhpcyBtZXRob2QuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0SGVhZGVycz8odG9rZW46IHN0cmluZyk6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdIH07XG5cbiAgLyoqXG4gICAqIFNhdmVzIGxhc3QgaW50ZXJydXB0ZWQgdXJsIGluc2lkZSBvZiB0aGUgc2VydmljZSBmb3IgZnVydGhlciByZXVzYWdlLFxuICAgKiBlLmcuIHJlc3RvcmluZyBpbnRlcnJ1cHRlZCBwYWdlIGFmdGVyIGxvZ2dpbmcgaW5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBzZXRJbnRlcnJ1cHRlZFVybD8odXJsOiBzdHJpbmcpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBWZXJpZnkgdGhhdCBvdXRnb2luZyByZXF1ZXN0IGlzIHJlZnJlc2gtdG9rZW4sXG4gICAqIHNvIGludGVyY2VwdG9yIHdvbid0IGludGVyY2VwdCB0aGlzIHJlcXVlc3RcbiAgICogQGRlcHJlY2F0ZWQgRHVlIHRvIGlsbG9naWNhbCBtZWFuaW5nL2Z1bmN0aW9uYWxpdHkgdGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZFxuICAgKiBAc2VlIHZlcmlmeVJlZnJlc2hUb2tlblxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHZlcmlmeVRva2VuUmVxdWVzdD8odXJsOiBzdHJpbmcpOiBib29sZWFuO1xufVxuIiwiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNvbnN0IEFVVEhfU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbignQVVUSF9TRVJWSUNFJyk7XG5leHBvcnQgY29uc3QgUFVCTElDX0ZBTExCQUNLX1BBR0VfVVJJID0gbmV3IEluamVjdGlvblRva2VuKCdQVUJMSUNfRkFMTEJBQ0tfUEFHRV9VUkknKTtcbmV4cG9ydCBjb25zdCBQUk9URUNURURfRkFMTEJBQ0tfUEFHRV9VUkkgPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ1BST1RFQ1RFRF9GQUxMQkFDS19QQUdFX1VSSScpO1xuIiwiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDYW5BY3RpdmF0ZSxcbiAgQ2FuQWN0aXZhdGVDaGlsZCxcbiAgUm91dGVyLFxuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBSb3V0ZXJTdGF0ZVNuYXBzaG90XG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVVUSF9TRVJWSUNFLCBQUk9URUNURURfRkFMTEJBQ0tfUEFHRV9VUkkgfSBmcm9tICcuL3Rva2Vucyc7XG5cbi8qKlxuICogR3VhcmQsIGNoZWNrcyBhY2Nlc3MgdG9rZW4gYXZhaWxhYmlsaXR5IGFuZCBhbGxvd3Mgb3IgZGlzYWxsb3dzIGFjY2VzcyB0byBwYWdlLFxuICogYW5kIHJlZGlyZWN0cyBvdXRcbiAqXG4gKiB1c2FnZTogeyBwYXRoOiAndGVzdCcsIGNvbXBvbmVudDogVGVzdENvbXBvbmVudCwgY2FuQWN0aXZhdGU6IFsgUHVibGljR3VhcmQgXSB9XG4gKlxuICogQGV4cG9ydFxuICogQGR5bmFtaWNcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFB1YmxpY0d1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUsIENhbkFjdGl2YXRlQ2hpbGQge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoQVVUSF9TRVJWSUNFKSBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICBASW5qZWN0KFBST1RFQ1RFRF9GQUxMQkFDS19QQUdFX1VSSSkgcHJpdmF0ZSBwcm90ZWN0ZWRGYWxsYmFja1BhZ2VVcmk6IHN0cmluZyxcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXG4gICkge31cblxuICAvKipcbiAgICogQ2FuQWN0aXZhdGUgaGFuZGxlclxuICAgKi9cbiAgcHVibGljIGNhbkFjdGl2YXRlKFxuICAgIF9yb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5pc0F1dGhvcml6ZWQoKVxuICAgICAgLnBpcGUobWFwKChpc0F1dGhvcml6ZWQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKGlzQXV0aG9yaXplZCAmJiAhdGhpcy5pc1Byb3RlY3RlZFBhZ2Uoc3RhdGUpKSB7XG4gICAgICAgICAgdGhpcy5uYXZpZ2F0ZSh0aGlzLnByb3RlY3RlZEZhbGxiYWNrUGFnZVVyaSk7XG5cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYW5BY3RpdmF0ZUNoaWxkIGhhbmRsZXJcbiAgICovXG4gIHB1YmxpYyBjYW5BY3RpdmF0ZUNoaWxkKFxuICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICAgIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XG4gICk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmNhbkFjdGl2YXRlKHJvdXRlLCBzdGF0ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2ssIGlmIGN1cnJlbnQgcGFnZSBpcyBwcm90ZWN0ZWQgZmFsbGJhY2sgcGFnZVxuICAgKi9cbiAgcHJpdmF0ZSBpc1Byb3RlY3RlZFBhZ2Uoc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3RhdGUudXJsID09PSB0aGlzLnByb3RlY3RlZEZhbGxiYWNrUGFnZVVyaTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZSBhd2F5IGZyb20gdGhlIGFwcCAvIHBhdGhcbiAgICovXG4gIHByaXZhdGUgbmF2aWdhdGUodXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodXJsLnN0YXJ0c1dpdGgoJ2h0dHAnKSkge1xuICAgICAgdGhpcy5kb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gdXJsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybCk7XG4gICAgfVxuICB9XG5cbn1cbiIsImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgUm91dGVyLFxuICBDYW5BY3RpdmF0ZSxcbiAgQ2FuQWN0aXZhdGVDaGlsZCxcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgUm91dGVyU3RhdGVTbmFwc2hvdFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEFVVEhfU0VSVklDRSwgUFVCTElDX0ZBTExCQUNLX1BBR0VfVVJJIH0gZnJvbSAnLi90b2tlbnMnO1xuXG4vKipcbiAqIEd1YXJkLCBjaGVja3MgYWNjZXNzIHRva2VuIGF2YWlsYWJpbGl0eSBhbmQgYWxsb3dzIG9yIGRpc2FsbG93cyBhY2Nlc3MgdG8gcGFnZSxcbiAqIGFuZCByZWRpcmVjdHMgb3V0XG4gKlxuICogdXNhZ2U6IHsgcGF0aDogJ3Rlc3QnLCBjb21wb25lbnQ6IFRlc3RDb21wb25lbnQsIGNhbkFjdGl2YXRlOiBbIEF1dGhHdWFyZCBdIH1cbiAqXG4gKiBAZXhwb3J0XG4gKiBAZHluYW1pY1xuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUHJvdGVjdGVkR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSwgQ2FuQWN0aXZhdGVDaGlsZCB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChBVVRIX1NFUlZJQ0UpcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgQEluamVjdChQVUJMSUNfRkFMTEJBQ0tfUEFHRV9VUkkpIHByaXZhdGUgcHVibGljRmFsbGJhY2tQYWdlVXJpOiBzdHJpbmcsXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHt9XG5cbiAgLyoqXG4gICAqIENhbkFjdGl2YXRlIGhhbmRsZXJcbiAgICovXG4gIHB1YmxpYyBjYW5BY3RpdmF0ZShcbiAgICBfcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3RcbiAgKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aFNlcnZpY2UuaXNBdXRob3JpemVkKClcbiAgICAgIC5waXBlKG1hcCgoaXNBdXRob3JpemVkOiBib29sZWFuKSA9PiB7XG4gICAgICAgIGlmICghaXNBdXRob3JpemVkICYmICF0aGlzLmlzUHVibGljUGFnZShzdGF0ZSkpIHtcbiAgICAgICAgICBpZiAodGhpcy5hdXRoU2VydmljZS5zZXRJbnRlcnJ1cHRlZFVybCkge1xuICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5zZXRJbnRlcnJ1cHRlZFVybChzdGF0ZS51cmwpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMubmF2aWdhdGUodGhpcy5wdWJsaWNGYWxsYmFja1BhZ2VVcmkpO1xuXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FuQWN0aXZhdGVDaGlsZCBoYW5kbGVyXG4gICAqL1xuICBwdWJsaWMgY2FuQWN0aXZhdGVDaGlsZChcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5jYW5BY3RpdmF0ZShyb3V0ZSwgc3RhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrLCBpZiBjdXJyZW50IHBhZ2UgaXMgcHVibGljIGZhbGxiYWNrIHBhZ2VcbiAgICovXG4gIHByaXZhdGUgaXNQdWJsaWNQYWdlKHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN0YXRlLnVybCA9PT0gdGhpcy5wdWJsaWNGYWxsYmFja1BhZ2VVcmk7XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGUgYXdheSBmcm9tIHRoZSBhcHAgLyBwYXRoXG4gICAqL1xuICBwcml2YXRlIG5hdmlnYXRlKHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHVybC5zdGFydHNXaXRoKCdodHRwJykpIHtcbiAgICAgIHRoaXMuZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9IHVybDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmwpO1xuICAgIH1cbiAgfVxuXG59XG4iLCJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgSHR0cENsaWVudCxcbiAgSHR0cEV2ZW50LFxuICBIdHRwSW50ZXJjZXB0b3IsXG4gIEh0dHBIYW5kbGVyLFxuICBIdHRwUmVxdWVzdCxcbiAgSHR0cEVycm9yUmVzcG9uc2Vcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBmaXJzdCwgc3dpdGNoTWFwLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEFVVEhfU0VSVklDRSB9IGZyb20gJy4vdG9rZW5zJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEF1dGhJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG5cbiAgLyoqXG4gICAqIElzIHJlZnJlc2ggdG9rZW4gaXMgYmVpbmcgZXhlY3V0ZWRcbiAgICovXG4gIHByaXZhdGUgcmVmcmVzaEluUHJvZ3Jlc3MgPSBmYWxzZTtcblxuICAvKipcbiAgICogTm90aWZ5IGFsbCBvdXRzdGFuZGluZyByZXF1ZXN0cyB0aHJvdWdoIHRoaXMgc3ViamVjdFxuICAgKi9cbiAgcHJpdmF0ZSByZWZyZXNoU3ViamVjdDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHt9XG5cbiAgLyoqXG4gICAqIEludGVyY2VwdCBhbiBvdXRnb2luZyBgSHR0cFJlcXVlc3RgXG4gICAqL1xuICBwdWJsaWMgaW50ZXJjZXB0KFxuICAgIHJlcTogSHR0cFJlcXVlc3Q8YW55PixcbiAgICBkZWxlZ2F0ZTogSHR0cEhhbmRsZXJcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgIGlmICh0aGlzLnNraXBSZXF1ZXN0KHJlcSkpIHtcbiAgICAgIHJldHVybiBkZWxlZ2F0ZS5oYW5kbGUocmVxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wcm9jZXNzSW50ZXJjZXB0KHJlcSwgZGVsZWdhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3MgYWxsIHRoZSByZXF1ZXN0cyB2aWEgY3VzdG9tIGludGVyY2VwdG9ycy5cbiAgICovXG4gIHByaXZhdGUgcHJvY2Vzc0ludGVyY2VwdChcbiAgICBvcmlnaW5hbDogSHR0cFJlcXVlc3Q8YW55PixcbiAgICBkZWxlZ2F0ZTogSHR0cEhhbmRsZXJcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgIGNvbnN0IGNsb25lOiBIdHRwUmVxdWVzdDxhbnk+ID0gb3JpZ2luYWwuY2xvbmUoKTtcblxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QoY2xvbmUpXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChyZXE6IEh0dHBSZXF1ZXN0PGFueT4pID0+IGRlbGVnYXRlLmhhbmRsZShyZXEpKSxcbiAgICAgICAgY2F0Y2hFcnJvcigocmVzOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5yZXNwb25zZUVycm9yKGNsb25lLCByZXMpKVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXF1ZXN0IGludGVyY2VwdG9yLiBEZWxheXMgcmVxdWVzdCBpZiByZWZyZXNoIGlzIGluIHByb2dyZXNzXG4gICAqIG90aGVyd2lzZSBhZGRzIHRva2VuIHRvIHRoZSBoZWFkZXJzXG4gICAqL1xuICBwcml2YXRlIHJlcXVlc3QocmVxOiBIdHRwUmVxdWVzdDxhbnk+KTogT2JzZXJ2YWJsZTxIdHRwUmVxdWVzdDxhbnk+PiB7XG4gICAgaWYgKHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybiB0aGlzLmRlbGF5UmVxdWVzdChyZXEpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFkZFRva2VuKHJlcSk7XG4gIH1cblxuICAvKipcbiAgICogRmFpbGVkIHJlcXVlc3QgaW50ZXJjZXB0b3IsIGNoZWNrIGlmIGl0IGhhcyB0byBiZSBwcm9jZXNzZWQgd2l0aCByZWZyZXNoXG4gICAqL1xuICBwcml2YXRlIHJlc3BvbnNlRXJyb3IoXG4gICAgcmVxOiBIdHRwUmVxdWVzdDxhbnk+LFxuICAgIHJlczogSHR0cEVycm9yUmVzcG9uc2VcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgIGNvbnN0IGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSA9XG4gICAgICB0aGlzLmluamVjdG9yLmdldDxBdXRoU2VydmljZT4oQVVUSF9TRVJWSUNFKTtcbiAgICBjb25zdCByZWZyZXNoU2hvdWxkSGFwcGVuOiBib29sZWFuID1cbiAgICAgIGF1dGhTZXJ2aWNlLnJlZnJlc2hTaG91bGRIYXBwZW4ocmVzLCByZXEpO1xuXG4gICAgaWYgKHJlZnJlc2hTaG91bGRIYXBwZW4gJiYgIXRoaXMucmVmcmVzaEluUHJvZ3Jlc3MpIHtcbiAgICAgIHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MgPSB0cnVlO1xuXG4gICAgICBhdXRoU2VydmljZVxuICAgICAgICAucmVmcmVzaFRva2VuKClcbiAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAocmVmcmVzaFNob3VsZEhhcHBlbiAmJiB0aGlzLnJlZnJlc2hJblByb2dyZXNzKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXRyeVJlcXVlc3QocmVxLCByZXMpO1xuICAgIH1cblxuICAgIHJldHVybiB0aHJvd0Vycm9yKHJlcyk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFjY2VzcyB0b2tlbiB0byBoZWFkZXJzIG9yIHRoZSByZXF1ZXN0XG4gICAqL1xuICBwcml2YXRlIGFkZFRva2VuKHJlcTogSHR0cFJlcXVlc3Q8YW55Pik6IE9ic2VydmFibGU8SHR0cFJlcXVlc3Q8YW55Pj4ge1xuICAgIGNvbnN0IGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSA9XG4gICAgICB0aGlzLmluamVjdG9yLmdldDxBdXRoU2VydmljZT4oQVVUSF9TRVJWSUNFKTtcblxuICAgIHJldHVybiBhdXRoU2VydmljZS5nZXRBY2Nlc3NUb2tlbigpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCh0b2tlbjogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgICAgICBsZXQgc2V0SGVhZGVyczogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfTtcblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBhdXRoU2VydmljZS5nZXRIZWFkZXJzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgIHNldEhlYWRlcnMgPSBhdXRoU2VydmljZS5nZXRIZWFkZXJzKHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNldEhlYWRlcnMgPSB7IEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0b2tlbn1gIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXEuY2xvbmUoeyBzZXRIZWFkZXJzIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiByZXE7XG4gICAgICAgIH0pLFxuICAgICAgICBmaXJzdCgpXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGF5IHJlcXVlc3QsIGJ5IHN1YnNjcmliaW5nIG9uIHJlZnJlc2ggZXZlbnQsIG9uY2UgaXQgZmluaXNoZWQsIHByb2Nlc3MgaXRcbiAgICogb3RoZXJ3aXNlIHRocm93IGVycm9yXG4gICAqL1xuICBwcml2YXRlIGRlbGF5UmVxdWVzdChyZXE6IEh0dHBSZXF1ZXN0PGFueT4pOiBPYnNlcnZhYmxlPEh0dHBSZXF1ZXN0PGFueT4+IHtcbiAgICByZXR1cm4gdGhpcy5yZWZyZXNoU3ViamVjdC5waXBlKFxuICAgICAgZmlyc3QoKSxcbiAgICAgIHN3aXRjaE1hcCgoc3RhdHVzOiBib29sZWFuKSA9PlxuICAgICAgICBzdGF0dXMgPyB0aGlzLmFkZFRva2VuKHJlcSkgOiB0aHJvd0Vycm9yKHJlcSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJ5IHJlcXVlc3QsIGJ5IHN1YnNjcmliaW5nIG9uIHJlZnJlc2ggZXZlbnQsIG9uY2UgaXQgZmluaXNoZWQsIHByb2Nlc3MgaXRcbiAgICogb3RoZXJ3aXNlIHRocm93IGVycm9yXG4gICAqL1xuICBwcml2YXRlIHJldHJ5UmVxdWVzdChcbiAgICByZXE6IEh0dHBSZXF1ZXN0PGFueT4sXG4gICAgcmVzOiBIdHRwRXJyb3JSZXNwb25zZVxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgY29uc3QgaHR0cDogSHR0cENsaWVudCA9XG4gICAgICB0aGlzLmluamVjdG9yLmdldDxIdHRwQ2xpZW50PihIdHRwQ2xpZW50KTtcblxuICAgIHJldHVybiB0aGlzLnJlZnJlc2hTdWJqZWN0LnBpcGUoXG4gICAgICBmaXJzdCgpLFxuICAgICAgc3dpdGNoTWFwKChzdGF0dXM6IGJvb2xlYW4pID0+XG4gICAgICAgIHN0YXR1cyA/IGh0dHAucmVxdWVzdChyZXEpIDogdGhyb3dFcnJvcihyZXMgfHwgcmVxKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHJlcXVlc3QgbXVzdCBiZSBza2lwcGVkIGJ5IGludGVyY2VwdG9yLlxuICAgKi9cbiAgcHJpdmF0ZSBza2lwUmVxdWVzdChyZXE6IEh0dHBSZXF1ZXN0PGFueT4pIHtcbiAgICBjb25zdCBza2lwUmVxdWVzdCA9IHRoaXMuZXhlYygnc2tpcFJlcXVlc3QnLCByZXEpO1xuICAgIGNvbnN0IHZlcmlmeVJlZnJlc2hUb2tlbiA9IHRoaXMuZXhlYygndmVyaWZ5UmVmcmVzaFRva2VuJywgcmVxKTtcblxuICAgIC8vIGRlcHJlY2F0ZWQsIHdpbGwgYmUgcmVtb3ZlZCBzb29uXG4gICAgY29uc3QgdmVyaWZ5VG9rZW5SZXF1ZXN0ID0gdGhpcy5leGVjKCd2ZXJpZnlUb2tlblJlcXVlc3QnLCByZXEudXJsKTtcblxuICAgIHJldHVybiBza2lwUmVxdWVzdCB8fCB2ZXJpZnlSZWZyZXNoVG9rZW4gfHwgdmVyaWZ5VG9rZW5SZXF1ZXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWMgb3B0aW9uYWwgbWV0aG9kLCB3aWxsIGJlIHJlbW92ZWQgaW4gdXBjb21pbmcgdXBkYXRlcy5cbiAgICogVGVtcCBtZXRob2QgdW50aWwgYHZlcmlmeVRva2VuUmVxdWVzdGAgd2lsbCBiZSBjb21wbGV0ZWx5IHJlcGxhY2VkIHdpdGggc2tpcFJlcXVlc3RcbiAgICovXG4gIHByaXZhdGUgZXhlYyhtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICBjb25zdCBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UgPVxuICAgICAgdGhpcy5pbmplY3Rvci5nZXQ8QXV0aFNlcnZpY2U+KEFVVEhfU0VSVklDRSk7XG5cbiAgICBpZiAodHlwZW9mIGF1dGhTZXJ2aWNlW21ldGhvZF0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBhdXRoU2VydmljZVttZXRob2RdKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxuXG59XG4iLCJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSFRUUF9JTlRFUkNFUFRPUlMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmltcG9ydCB7IFB1YmxpY0d1YXJkIH0gZnJvbSAnLi9wdWJsaWMuZ3VhcmQnO1xuaW1wb3J0IHsgUHJvdGVjdGVkR3VhcmQgfSBmcm9tICcuL3Byb3RlY3RlZC5ndWFyZCc7XG5pbXBvcnQgeyBBdXRoSW50ZXJjZXB0b3IgfSBmcm9tICcuL2F1dGguaW50ZXJjZXB0b3InO1xuXG5ATmdNb2R1bGUoe1xuICBwcm92aWRlcnM6IFtcbiAgICBQdWJsaWNHdWFyZCxcbiAgICBQcm90ZWN0ZWRHdWFyZCxcbiAgICBBdXRoSW50ZXJjZXB0b3IsXG4gICAge1xuICAgICAgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsXG4gICAgICB1c2VDbGFzczogQXV0aEludGVyY2VwdG9yLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhNb2R1bGUge1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQU1BLE1BQXNCLFdBQVc7Q0ErRGhDOzs7Ozs7QUNyRUQ7QUFFQSxNQUFhLFlBQVksR0FBRyxJQUFJLGNBQWMsQ0FBQyxjQUFjLENBQUM7O0FBQzlELE1BQWEsd0JBQXdCLEdBQUcsSUFBSSxjQUFjLENBQUMsMEJBQTBCLENBQUM7O0FBQ3RGLE1BQWEsMkJBQTJCLEdBQUcsSUFBSSxjQUFjLENBQUMsNkJBQTZCLENBQUM7Ozs7OztBQ0o1Rjs7Ozs7Ozs7O0FBeUJBLE1BQWEsV0FBVzs7Ozs7OztJQUV0QixZQUNnQyxXQUF3QixFQUNULHdCQUFnQyxFQUMxQyxRQUFrQixFQUM3QyxNQUFjO1FBSFEsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDVCw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQVE7UUFDMUMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUM3QyxXQUFNLEdBQU4sTUFBTSxDQUFRO0tBQ3BCOzs7Ozs7O0lBS0csV0FBVyxDQUNoQixNQUE4QixFQUM5QixLQUEwQjtRQUUxQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMs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
import { InjectionToken, Injectable, Inject, Injector, NgModule } from '@angular/core';
import { DOCUMENT } from '@angular/common';
import { Router } from '@angular/router';

@@ -48,7 +49,9 @@ import { map, first, switchMap, catchError } from 'rxjs/operators';

* @export
* \@dynamic
*/
var PublicGuard = /** @class */ (function () {
function PublicGuard(authService, protectedFallbackPageUri, router) {
function PublicGuard(authService, protectedFallbackPageUri, document, router) {
this.authService = authService;
this.protectedFallbackPageUri = protectedFallbackPageUri;
this.document = document;
this.router = router;

@@ -131,3 +134,3 @@ }

if (url.startsWith('http')) {
window.location.href = url;
this.document.location.href = url;
}

@@ -145,2 +148,3 @@ else {

{ type: String, decorators: [{ type: Inject, args: [PROTECTED_FALLBACK_PAGE_URI,] }] },
{ type: Document, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
{ type: Router }

@@ -162,7 +166,9 @@ ]; };

* @export
* \@dynamic
*/
var ProtectedGuard = /** @class */ (function () {
function ProtectedGuard(authService, publicFallbackPageUri, router) {
function ProtectedGuard(authService, publicFallbackPageUri, document, router) {
this.authService = authService;
this.publicFallbackPageUri = publicFallbackPageUri;
this.document = document;
this.router = router;

@@ -248,3 +254,3 @@ }

if (url.startsWith('http')) {
window.location.href = url;
this.document.location.href = url;
}

@@ -262,2 +268,3 @@ else {

{ type: String, decorators: [{ type: Inject, args: [PUBLIC_FALLBACK_PAGE_URI,] }] },
{ type: Document, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
{ type: Router }

@@ -369,3 +376,3 @@ ]; };

/** @type {?} */
var refreshShouldHappen = authService.refreshShouldHappen(res);
var refreshShouldHappen = authService.refreshShouldHappen(res, req);
if (refreshShouldHappen && !this.refreshInProgress) {

@@ -565,2 +572,2 @@ this.refreshInProgress = true;

//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWF1dGguanMubWFwIiwic291cmNlcyI6WyJuZzovL25neC1hdXRoL2F1dGguc2VydmljZS50cyIsIm5nOi8vbmd4LWF1dGgvdG9rZW5zLnRzIiwibmc6Ly9uZ3gtYXV0aC9wdWJsaWMuZ3VhcmQudHMiLCJuZzovL25neC1hdXRoL3Byb3RlY3RlZC5ndWFyZC50cyIsIm5nOi8vbmd4LWF1dGgvYXV0aC5pbnRlcmNlcHRvci50cyIsIm5nOi8vbmd4LWF1dGgvYXV0aC5tb2R1bGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cFJlcXVlc3QsIEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIEVzc2VudGlhbCBzZXJ2aWNlIGZvciBhdXRoZW50aWNhdGlvblxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXV0aFNlcnZpY2Uge1xuXG4gIC8qKlxuICAgKiBDaGVjaywgaWYgdXNlciBhbHJlYWR5IGF1dGhvcml6ZWQuXG4gICAqIFNob3VsZCByZXR1cm4gT2JzZXJ2YWJsZSB3aXRoIHRydWUgb3IgZmFsc2UgdmFsdWVzXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgaXNBdXRob3JpemVkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgLyoqXG4gICAqIEdldCBhY2Nlc3MgdG9rZW5cbiAgICogU2hvdWxkIHJldHVybiBhY2Nlc3MgdG9rZW4gaW4gT2JzZXJ2YWJsZSBmcm9tIGUuZy5cbiAgICogbG9jYWxTdG9yYWdlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0QWNjZXNzVG9rZW4oKTogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBGdW5jdGlvbiwgdGhhdCBzaG91bGQgcGVyZm9ybSByZWZyZXNoIHRva2VuXG4gICAqIFNob3VsZCBiZSBzdWNjZXNzZnVsbHkgY29tcGxldGVkIHNvIGludGVyY2VwdG9yXG4gICAqIGNhbiBleGVjdXRlIHBlbmRpbmcgcmVxdWVzdHMgb3IgcmV0cnkgb3JpZ2luYWwgb25lXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVmcmVzaFRva2VuKCk6IE9ic2VydmFibGU8YW55PjtcblxuICAvKipcbiAgICogRnVuY3Rpb24sIGNoZWNrcyByZXNwb25zZSBvZiBmYWlsZWQgcmVxdWVzdCB0byBkZXRlcm1pbmUsXG4gICAqIHdoZXRoZXIgdG9rZW4gYmUgcmVmcmVzaGVkIG9yIG5vdC5cbiAgICpcbiAgICogRXNzZW50aWFsbHkgY2hlY2tzIHN0YXR1c1xuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlZnJlc2hTaG91bGRIYXBwZW4ocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlKTogYm9vbGVhbjtcblxuICAvKipcbiAgICogVmVyaWZ5IHRoYXQgb3V0Z29pbmcgcmVxdWVzdCBpcyByZWZyZXNoLXRva2VuLFxuICAgKiBzbyBpbnRlcmNlcHRvciB3b24ndCBpbnRlcmNlcHQgdGhpcyByZXF1ZXN0XG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgdmVyaWZ5UmVmcmVzaFRva2VuPyhyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+KTogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHJlcXVlc3QgbXVzdCBiZSBza2lwcGVkIGJ5IGludGVyY2VwdG9yLlxuICAgKiBVc2VmdWwgZm9yIHJlcXVlc3RzIHN1Y2ggYXMgcmVxdWVzdCB0b2tlbiB3aGljaCBkb2Vzbid0IHJlcXVpcmUgdG9rZW4gaW4gaGVhZGVyc1xuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHNraXBSZXF1ZXN0PyhyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+KTogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWRkIHRva2VuIHRvIGhlYWRlcnMsIGRlcGVuZGVudCBvbiBzZXJ2ZXJcbiAgICogc2V0LXVwLCBieSBkZWZhdWx0IGFkZHMgYSBiZWFyZXIgdG9rZW4uXG4gICAqIENhbGxlZCBieSBpbnRlcmNlcHRvci5cbiAgICogVG8gY2hhbmdlIGJlaGF2aW9yLCBvdmVycmlkZSB0aGlzIG1ldGhvZC5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXRIZWFkZXJzPyh0b2tlbjogc3RyaW5nKTogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfTtcblxuICAvKipcbiAgICogU2F2ZXMgbGFzdCBpbnRlcnJ1cHRlZCB1cmwgaW5zaWRlIG9mIHRoZSBzZXJ2aWNlIGZvciBmdXJ0aGVyIHJldXNhZ2UsXG4gICAqIGUuZy4gcmVzdG9yaW5nIGludGVycnVwdGVkIHBhZ2UgYWZ0ZXIgbG9nZ2luZyBpblxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHNldEludGVycnVwdGVkVXJsPyh1cmw6IHN0cmluZyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFZlcmlmeSB0aGF0IG91dGdvaW5nIHJlcXVlc3QgaXMgcmVmcmVzaC10b2tlbixcbiAgICogc28gaW50ZXJjZXB0b3Igd29uJ3QgaW50ZXJjZXB0IHRoaXMgcmVxdWVzdFxuICAgKiBAZGVwcmVjYXRlZCBEdWUgdG8gaWxsb2dpY2FsIG1lYW5pbmcvZnVuY3Rpb25hbGl0eSB0aGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkXG4gICAqIEBzZWUgdmVyaWZ5UmVmcmVzaFRva2VuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgdmVyaWZ5VG9rZW5SZXF1ZXN0Pyh1cmw6IHN0cmluZyk6IGJvb2xlYW47XG59XG4iLCJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgQVVUSF9TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuKCdBVVRIX1NFUlZJQ0UnKTtcbmV4cG9ydCBjb25zdCBQVUJMSUNfRkFMTEJBQ0tfUEFHRV9VUkkgPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ1BVQkxJQ19GQUxMQkFDS19QQUdFX1VSSScpO1xuZXhwb3J0IGNvbnN0IFBST1RFQ1RFRF9GQUxMQkFDS19QQUdFX1VSSSA9IG5ldyBJbmplY3Rpb25Ub2tlbignUFJPVEVDVEVEX0ZBTExCQUNLX1BBR0VfVVJJJyk7XG4iLCJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENhbkFjdGl2YXRlLFxuICBDYW5BY3RpdmF0ZUNoaWxkLFxuICBSb3V0ZXIsXG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gIFJvdXRlclN0YXRlU25hcHNob3Rcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBBVVRIX1NFUlZJQ0UsIFBST1RFQ1RFRF9GQUxMQkFDS19QQUdFX1VSSSB9IGZyb20gJy4vdG9rZW5zJztcblxuLyoqXG4gKiBHdWFyZCwgY2hlY2tzIGFjY2VzcyB0b2tlbiBhdmFpbGFiaWxpdHkgYW5kIGFsbG93cyBvciBkaXNhbGxvd3MgYWNjZXNzIHRvIHBhZ2UsXG4gKiBhbmQgcmVkaXJlY3RzIG91dFxuICpcbiAqIHVzYWdlOiB7IHBhdGg6ICd0ZXN0JywgY29tcG9uZW50OiBUZXN0Q29tcG9uZW50LCBjYW5BY3RpdmF0ZTogWyBQdWJsaWNHdWFyZCBdIH1cbiAqXG4gKiBAZXhwb3J0XG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQdWJsaWNHdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlLCBDYW5BY3RpdmF0ZUNoaWxkIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEFVVEhfU0VSVklDRSkgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgQEluamVjdChQUk9URUNURURfRkFMTEJBQ0tfUEFHRV9VUkkpIHByaXZhdGUgcHJvdGVjdGVkRmFsbGJhY2tQYWdlVXJpOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHt9XG5cbiAgLyoqXG4gICAqIENhbkFjdGl2YXRlIGhhbmRsZXJcbiAgICovXG4gIHB1YmxpYyBjYW5BY3RpdmF0ZShcbiAgICBfcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3RcbiAgKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aFNlcnZpY2UuaXNBdXRob3JpemVkKClcbiAgICAgIC5waXBlKG1hcCgoaXNBdXRob3JpemVkOiBib29sZWFuKSA9PiB7XG4gICAgICAgIGlmIChpc0F1dGhvcml6ZWQgJiYgIXRoaXMuaXNQcm90ZWN0ZWRQYWdlKHN0YXRlKSkge1xuICAgICAgICAgIHRoaXMubmF2aWdhdGUodGhpcy5wcm90ZWN0ZWRGYWxsYmFja1BhZ2VVcmkpO1xuXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FuQWN0aXZhdGVDaGlsZCBoYW5kbGVyXG4gICAqL1xuICBwdWJsaWMgY2FuQWN0aXZhdGVDaGlsZChcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5jYW5BY3RpdmF0ZShyb3V0ZSwgc3RhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrLCBpZiBjdXJyZW50IHBhZ2UgaXMgcHJvdGVjdGVkIGZhbGxiYWNrIHBhZ2VcbiAgICovXG4gIHByaXZhdGUgaXNQcm90ZWN0ZWRQYWdlKHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN0YXRlLnVybCA9PT0gdGhpcy5wcm90ZWN0ZWRGYWxsYmFja1BhZ2VVcmk7XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGUgYXdheSBmcm9tIHRoZSBhcHAgLyBwYXRoXG4gICAqL1xuICBwcml2YXRlIG5hdmlnYXRlKHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHVybC5zdGFydHNXaXRoKCdodHRwJykpIHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybCk7XG4gICAgfVxuICB9XG5cbn1cbiIsImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgUm91dGVyLFxuICBDYW5BY3RpdmF0ZSxcbiAgQ2FuQWN0aXZhdGVDaGlsZCxcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgUm91dGVyU3RhdGVTbmFwc2hvdFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEFVVEhfU0VSVklDRSwgUFVCTElDX0ZBTExCQUNLX1BBR0VfVVJJIH0gZnJvbSAnLi90b2tlbnMnO1xuXG4vKipcbiAqIEd1YXJkLCBjaGVja3MgYWNjZXNzIHRva2VuIGF2YWlsYWJpbGl0eSBhbmQgYWxsb3dzIG9yIGRpc2FsbG93cyBhY2Nlc3MgdG8gcGFnZSxcbiAqIGFuZCByZWRpcmVjdHMgb3V0XG4gKlxuICogdXNhZ2U6IHsgcGF0aDogJ3Rlc3QnLCBjb21wb25lbnQ6IFRlc3RDb21wb25lbnQsIGNhbkFjdGl2YXRlOiBbIEF1dGhHdWFyZCBdIH1cbiAqXG4gKiBAZXhwb3J0XG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQcm90ZWN0ZWRHdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlLCBDYW5BY3RpdmF0ZUNoaWxkIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEFVVEhfU0VSVklDRSlwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICBASW5qZWN0KFBVQkxJQ19GQUxMQkFDS19QQUdFX1VSSSkgcHJpdmF0ZSBwdWJsaWNGYWxsYmFja1BhZ2VVcmk6IHN0cmluZyxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXG4gICkge31cblxuICAvKipcbiAgICogQ2FuQWN0aXZhdGUgaGFuZGxlclxuICAgKi9cbiAgcHVibGljIGNhbkFjdGl2YXRlKFxuICAgIF9yb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5pc0F1dGhvcml6ZWQoKVxuICAgICAgLnBpcGUobWFwKChpc0F1dGhvcml6ZWQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKCFpc0F1dGhvcml6ZWQgJiYgIXRoaXMuaXNQdWJsaWNQYWdlKHN0YXRlKSkge1xuICAgICAgICAgIGlmICh0aGlzLmF1dGhTZXJ2aWNlLnNldEludGVycnVwdGVkVXJsKSB7XG4gICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLnNldEludGVycnVwdGVkVXJsKHN0YXRlLnVybCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5uYXZpZ2F0ZSh0aGlzLnB1YmxpY0ZhbGxiYWNrUGFnZVVyaSk7XG5cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYW5BY3RpdmF0ZUNoaWxkIGhhbmRsZXJcbiAgICovXG4gIHB1YmxpYyBjYW5BY3RpdmF0ZUNoaWxkKFxuICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICAgIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XG4gICk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmNhbkFjdGl2YXRlKHJvdXRlLCBzdGF0ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2ssIGlmIGN1cnJlbnQgcGFnZSBpcyBwdWJsaWMgZmFsbGJhY2sgcGFnZVxuICAgKi9cbiAgcHJpdmF0ZSBpc1B1YmxpY1BhZ2Uoc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3RhdGUudXJsID09PSB0aGlzLnB1YmxpY0ZhbGxiYWNrUGFnZVVyaTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZSBhd2F5IGZyb20gdGhlIGFwcCAvIHBhdGhcbiAgICovXG4gIHByaXZhdGUgbmF2aWdhdGUodXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodXJsLnN0YXJ0c1dpdGgoJ2h0dHAnKSkge1xuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodXJsKTtcbiAgICB9XG4gIH1cblxufVxuIiwiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEh0dHBDbGllbnQsXG4gIEh0dHBFdmVudCxcbiAgSHR0cEludGVyY2VwdG9yLFxuICBIdHRwSGFuZGxlcixcbiAgSHR0cFJlcXVlc3QsXG4gIEh0dHBFcnJvclJlc3BvbnNlXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgZmlyc3QsIHN3aXRjaE1hcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBBVVRIX1NFUlZJQ0UgfSBmcm9tICcuL3Rva2Vucyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBdXRoSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuXG4gIC8qKlxuICAgKiBJcyByZWZyZXNoIHRva2VuIGlzIGJlaW5nIGV4ZWN1dGVkXG4gICAqL1xuICBwcml2YXRlIHJlZnJlc2hJblByb2dyZXNzID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIE5vdGlmeSBhbGwgb3V0c3RhbmRpbmcgcmVxdWVzdHMgdGhyb3VnaCB0aGlzIHN1YmplY3RcbiAgICovXG4gIHByaXZhdGUgcmVmcmVzaFN1YmplY3Q6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuXG4gIC8qKlxuICAgKiBJbnRlcmNlcHQgYW4gb3V0Z29pbmcgYEh0dHBSZXF1ZXN0YFxuICAgKi9cbiAgcHVibGljIGludGVyY2VwdChcbiAgICByZXE6IEh0dHBSZXF1ZXN0PGFueT4sXG4gICAgZGVsZWdhdGU6IEh0dHBIYW5kbGVyXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICBpZiAodGhpcy5za2lwUmVxdWVzdChyZXEpKSB7XG4gICAgICByZXR1cm4gZGVsZWdhdGUuaGFuZGxlKHJlcSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucHJvY2Vzc0ludGVyY2VwdChyZXEsIGRlbGVnYXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzIGFsbCB0aGUgcmVxdWVzdHMgdmlhIGN1c3RvbSBpbnRlcmNlcHRvcnMuXG4gICAqL1xuICBwcml2YXRlIHByb2Nlc3NJbnRlcmNlcHQoXG4gICAgb3JpZ2luYWw6IEh0dHBSZXF1ZXN0PGFueT4sXG4gICAgZGVsZWdhdGU6IEh0dHBIYW5kbGVyXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICBjb25zdCBjbG9uZTogSHR0cFJlcXVlc3Q8YW55PiA9IG9yaWdpbmFsLmNsb25lKCk7XG5cbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KGNsb25lKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgocmVxOiBIdHRwUmVxdWVzdDxhbnk+KSA9PiBkZWxlZ2F0ZS5oYW5kbGUocmVxKSksXG4gICAgICAgIGNhdGNoRXJyb3IoKHJlczogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMucmVzcG9uc2VFcnJvcihjbG9uZSwgcmVzKSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmVxdWVzdCBpbnRlcmNlcHRvci4gRGVsYXlzIHJlcXVlc3QgaWYgcmVmcmVzaCBpcyBpbiBwcm9ncmVzc1xuICAgKiBvdGhlcndpc2UgYWRkcyB0b2tlbiB0byB0aGUgaGVhZGVyc1xuICAgKi9cbiAgcHJpdmF0ZSByZXF1ZXN0KHJlcTogSHR0cFJlcXVlc3Q8YW55Pik6IE9ic2VydmFibGU8SHR0cFJlcXVlc3Q8YW55Pj4ge1xuICAgIGlmICh0aGlzLnJlZnJlc2hJblByb2dyZXNzKSB7XG4gICAgICByZXR1cm4gdGhpcy5kZWxheVJlcXVlc3QocmVxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hZGRUb2tlbihyZXEpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZhaWxlZCByZXF1ZXN0IGludGVyY2VwdG9yLCBjaGVjayBpZiBpdCBoYXMgdG8gYmUgcHJvY2Vzc2VkIHdpdGggcmVmcmVzaFxuICAgKi9cbiAgcHJpdmF0ZSByZXNwb25zZUVycm9yKFxuICAgIHJlcTogSHR0cFJlcXVlc3Q8YW55PixcbiAgICByZXM6IEh0dHBFcnJvclJlc3BvbnNlXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICBjb25zdCBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UgPVxuICAgICAgdGhpcy5pbmplY3Rvci5nZXQ8QXV0aFNlcnZpY2U+KEFVVEhfU0VSVklDRSk7XG4gICAgY29uc3QgcmVmcmVzaFNob3VsZEhhcHBlbjogYm9vbGVhbiA9XG4gICAgICBhdXRoU2VydmljZS5yZWZyZXNoU2hvdWxkSGFwcGVuKHJlcyk7XG5cbiAgICBpZiAocmVmcmVzaFNob3VsZEhhcHBlbiAmJiAhdGhpcy5yZWZyZXNoSW5Qcm9ncmVzcykge1xuICAgICAgdGhpcy5yZWZyZXNoSW5Qcm9ncmVzcyA9IHRydWU7XG5cbiAgICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC5yZWZyZXNoVG9rZW4oKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaFN1YmplY3QubmV4dCh0cnVlKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaFN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGlmIChyZWZyZXNoU2hvdWxkSGFwcGVuICYmIHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybiB0aGlzLnJldHJ5UmVxdWVzdChyZXEsIHJlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRocm93RXJyb3IocmVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYWNjZXNzIHRva2VuIHRvIGhlYWRlcnMgb3IgdGhlIHJlcXVlc3RcbiAgICovXG4gIHByaXZhdGUgYWRkVG9rZW4ocmVxOiBIdHRwUmVxdWVzdDxhbnk+KTogT2JzZXJ2YWJsZTxIdHRwUmVxdWVzdDxhbnk+PiB7XG4gICAgY29uc3QgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlID1cbiAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0PEF1dGhTZXJ2aWNlPihBVVRIX1NFUlZJQ0UpO1xuXG4gICAgcmV0dXJuIGF1dGhTZXJ2aWNlLmdldEFjY2Vzc1Rva2VuKClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHRva2VuOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICAgIGxldCBzZXRIZWFkZXJzOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB9O1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGF1dGhTZXJ2aWNlLmdldEhlYWRlcnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgc2V0SGVhZGVycyA9IGF1dGhTZXJ2aWNlLmdldEhlYWRlcnModG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc2V0SGVhZGVycyA9IHsgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJlcS5jbG9uZSh7IHNldEhlYWRlcnMgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHJlcTtcbiAgICAgICAgfSksXG4gICAgICAgIGZpcnN0KClcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRGVsYXkgcmVxdWVzdCwgYnkgc3Vic2NyaWJpbmcgb24gcmVmcmVzaCBldmVudCwgb25jZSBpdCBmaW5pc2hlZCwgcHJvY2VzcyBpdFxuICAgKiBvdGhlcndpc2UgdGhyb3cgZXJyb3JcbiAgICovXG4gIHByaXZhdGUgZGVsYXlSZXF1ZXN0KHJlcTogSHR0cFJlcXVlc3Q8YW55Pik6IE9ic2VydmFibGU8SHR0cFJlcXVlc3Q8YW55Pj4ge1xuICAgIHJldHVybiB0aGlzLnJlZnJlc2hTdWJqZWN0LnBpcGUoXG4gICAgICBmaXJzdCgpLFxuICAgICAgc3dpdGNoTWFwKChzdGF0dXM6IGJvb2xlYW4pID0+XG4gICAgICAgIHN0YXR1cyA/IHRoaXMuYWRkVG9rZW4ocmVxKSA6IHRocm93RXJyb3IocmVxKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cnkgcmVxdWVzdCwgYnkgc3Vic2NyaWJpbmcgb24gcmVmcmVzaCBldmVudCwgb25jZSBpdCBmaW5pc2hlZCwgcHJvY2VzcyBpdFxuICAgKiBvdGhlcndpc2UgdGhyb3cgZXJyb3JcbiAgICovXG4gIHByaXZhdGUgcmV0cnlSZXF1ZXN0KFxuICAgIHJlcTogSHR0cFJlcXVlc3Q8YW55PixcbiAgICByZXM6IEh0dHBFcnJvclJlc3BvbnNlXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICBjb25zdCBodHRwOiBIdHRwQ2xpZW50ID1cbiAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0PEh0dHBDbGllbnQ+KEh0dHBDbGllbnQpO1xuXG4gICAgcmV0dXJuIHRoaXMucmVmcmVzaFN1YmplY3QucGlwZShcbiAgICAgIGZpcnN0KCksXG4gICAgICBzd2l0Y2hNYXAoKHN0YXR1czogYm9vbGVhbikgPT5cbiAgICAgICAgc3RhdHVzID8gaHR0cC5yZXF1ZXN0KHJlcSkgOiB0aHJvd0Vycm9yKHJlcyB8fCByZXEpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgcmVxdWVzdCBtdXN0IGJlIHNraXBwZWQgYnkgaW50ZXJjZXB0b3IuXG4gICAqL1xuICBwcml2YXRlIHNraXBSZXF1ZXN0KHJlcTogSHR0cFJlcXVlc3Q8YW55Pikge1xuICAgIGNvbnN0IHNraXBSZXF1ZXN0ID0gdGhpcy5leGVjKCdza2lwUmVxdWVzdCcsIHJlcSk7XG4gICAgY29uc3QgdmVyaWZ5UmVmcmVzaFRva2VuID0gdGhpcy5leGVjKCd2ZXJpZnlSZWZyZXNoVG9rZW4nLCByZXEpO1xuXG4gICAgLy8gZGVwcmVjYXRlZCwgd2lsbCBiZSByZW1vdmVkIHNvb25cbiAgICBjb25zdCB2ZXJpZnlUb2tlblJlcXVlc3QgPSB0aGlzLmV4ZWMoJ3ZlcmlmeVRva2VuUmVxdWVzdCcsIHJlcS51cmwpO1xuXG4gICAgcmV0dXJuIHNraXBSZXF1ZXN0IHx8IHZlcmlmeVJlZnJlc2hUb2tlbiB8fCB2ZXJpZnlUb2tlblJlcXVlc3Q7XG4gIH1cblxuICAvKipcbiAgICogRXhlYyBvcHRpb25hbCBtZXRob2QsIHdpbGwgYmUgcmVtb3ZlZCBpbiB1cGNvbWluZyB1cGRhdGVzLlxuICAgKiBUZW1wIG1ldGhvZCB1bnRpbCBgdmVyaWZ5VG9rZW5SZXF1ZXN0YCB3aWxsIGJlIGNvbXBsZXRlbHkgcmVwbGFjZWQgd2l0aCBza2lwUmVxdWVzdFxuICAgKi9cbiAgcHJpdmF0ZSBleGVjKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGNvbnN0IGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSA9XG4gICAgICB0aGlzLmluamVjdG9yLmdldDxBdXRoU2VydmljZT4oQVVUSF9TRVJWSUNFKTtcblxuICAgIGlmICh0eXBlb2YgYXV0aFNlcnZpY2VbbWV0aG9kXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIGF1dGhTZXJ2aWNlW21ldGhvZF0oLi4uYXJncyk7XG4gICAgfVxuICB9XG5cbn1cbiIsImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIVFRQX0lOVEVSQ0VQVE9SUyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuaW1wb3J0IHsgUHVibGljR3VhcmQgfSBmcm9tICcuL3B1YmxpYy5ndWFyZCc7XG5pbXBvcnQgeyBQcm90ZWN0ZWRHdWFyZCB9IGZyb20gJy4vcHJvdGVjdGVkLmd1YXJkJztcbmltcG9ydCB7IEF1dGhJbnRlcmNlcHRvciB9IGZyb20gJy4vYXV0aC5pbnRlcmNlcHRvcic7XG5cbkBOZ01vZHVsZSh7XG4gIHByb3ZpZGVyczogW1xuICAgIFB1YmxpY0d1YXJkLFxuICAgIFByb3RlY3RlZEd1YXJkLFxuICAgIEF1dGhJbnRlcmNlcHRvcixcbiAgICB7XG4gICAgICBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUyxcbiAgICAgIHVzZUNsYXNzOiBBdXRoSW50ZXJjZXB0b3IsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQXV0aE1vZHVsZSB7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBTUE7Ozs7O0lBQUE7S0ErREM7SUFBRCxrQkFBQztDQUFBOzs7Ozs7QUNyRUQ7QUFFQSxJQUFhLFlBQVksR0FBRyxJQUFJLGNBQWMsQ0FBQyxjQUFjLENBQUM7O0FBQzlELElBQWEsd0JBQXdCLEdBQUcsSUFBSSxjQUFjLENBQUMsMEJBQTBCLENBQUM7O0FBQ3RGLElBQWEsMkJBQTJCLEdBQUcsSUFBSSxjQUFjLENBQUMsNkJBQTZCLENBQUM7Ozs7OztBQ0o1Rjs7Ozs7Ozs7QUFzQkE7SUFHRSxxQkFDZ0MsV0FBd0IsRUFDVCx3QkFBZ0MsRUFDckUsTUFBYztRQUZRLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ1QsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUFRO1FBQ3JFLFdBQU0sR0FBTixNQUFNLENBQVE7S0FDcEI7Ozs7Ozs7Ozs7SUFLRyxpQ0FBVzs7Ozs7O0lBQWxCLFVBQ0UsTUFBOEIsRUFDOUIsS0FBMEI7UUFGNUIsaUJBY0M7UUFWQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFO2FBQ25DLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBQyxZQUFxQjtZQUM5QixJQUFJLFlBQVksSUFBSSxDQUFDLEtBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ2hELEtBQUksQ0FBQyxRQUFRLENBQUMsS0FBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7Z0JBRTdDLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7WUFFRCxPQUFPLElBQUksQ0FBQztTQUNiLENBQUMsQ0FBQyxDQUFDO0tBQ1A7Ozs7Ozs7Ozs7SUFLTSxzQ0FBZ0I7Ozs7OztJQUF2QixVQUNFLEtBQTZCLEVBQzdCLEtBQTBCO1FBRTFCLE9BQU8s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
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWF1dGguanMubWFwIiwic291cmNlcyI6WyJuZzovL25neC1hdXRoL2F1dGguc2VydmljZS50cyIsIm5nOi8vbmd4LWF1dGgvdG9rZW5zLnRzIiwibmc6Ly9uZ3gtYXV0aC9wdWJsaWMuZ3VhcmQudHMiLCJuZzovL25neC1hdXRoL3Byb3RlY3RlZC5ndWFyZC50cyIsIm5nOi8vbmd4LWF1dGgvYXV0aC5pbnRlcmNlcHRvci50cyIsIm5nOi8vbmd4LWF1dGgvYXV0aC5tb2R1bGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cFJlcXVlc3QsIEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIEVzc2VudGlhbCBzZXJ2aWNlIGZvciBhdXRoZW50aWNhdGlvblxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXV0aFNlcnZpY2Uge1xuXG4gIC8qKlxuICAgKiBDaGVjaywgaWYgdXNlciBhbHJlYWR5IGF1dGhvcml6ZWQuXG4gICAqIFNob3VsZCByZXR1cm4gT2JzZXJ2YWJsZSB3aXRoIHRydWUgb3IgZmFsc2UgdmFsdWVzXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgaXNBdXRob3JpemVkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgLyoqXG4gICAqIEdldCBhY2Nlc3MgdG9rZW5cbiAgICogU2hvdWxkIHJldHVybiBhY2Nlc3MgdG9rZW4gaW4gT2JzZXJ2YWJsZSBmcm9tIGUuZy5cbiAgICogbG9jYWxTdG9yYWdlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0QWNjZXNzVG9rZW4oKTogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBGdW5jdGlvbiwgdGhhdCBzaG91bGQgcGVyZm9ybSByZWZyZXNoIHRva2VuXG4gICAqIFNob3VsZCBiZSBzdWNjZXNzZnVsbHkgY29tcGxldGVkIHNvIGludGVyY2VwdG9yXG4gICAqIGNhbiBleGVjdXRlIHBlbmRpbmcgcmVxdWVzdHMgb3IgcmV0cnkgb3JpZ2luYWwgb25lXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVmcmVzaFRva2VuKCk6IE9ic2VydmFibGU8YW55PjtcblxuICAvKipcbiAgICogRnVuY3Rpb24sIGNoZWNrcyByZXNwb25zZSBvZiBmYWlsZWQgcmVxdWVzdCB0byBkZXRlcm1pbmUsXG4gICAqIHdoZXRoZXIgdG9rZW4gYmUgcmVmcmVzaGVkIG9yIG5vdC5cbiAgICpcbiAgICogRXNzZW50aWFsbHkgY2hlY2tzIHN0YXR1c1xuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlZnJlc2hTaG91bGRIYXBwZW4ocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlLCByZXF1ZXN0PzogSHR0cFJlcXVlc3Q8YW55Pik6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFZlcmlmeSB0aGF0IG91dGdvaW5nIHJlcXVlc3QgaXMgcmVmcmVzaC10b2tlbixcbiAgICogc28gaW50ZXJjZXB0b3Igd29uJ3QgaW50ZXJjZXB0IHRoaXMgcmVxdWVzdFxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHZlcmlmeVJlZnJlc2hUb2tlbj8ocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55Pik6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiByZXF1ZXN0IG11c3QgYmUgc2tpcHBlZCBieSBpbnRlcmNlcHRvci5cbiAgICogVXNlZnVsIGZvciByZXF1ZXN0cyBzdWNoIGFzIHJlcXVlc3QgdG9rZW4gd2hpY2ggZG9lc24ndCByZXF1aXJlIHRva2VuIGluIGhlYWRlcnNcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBza2lwUmVxdWVzdD8ocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55Pik6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFkZCB0b2tlbiB0byBoZWFkZXJzLCBkZXBlbmRlbnQgb24gc2VydmVyXG4gICAqIHNldC11cCwgYnkgZGVmYXVsdCBhZGRzIGEgYmVhcmVyIHRva2VuLlxuICAgKiBDYWxsZWQgYnkgaW50ZXJjZXB0b3IuXG4gICAqIFRvIGNoYW5nZSBiZWhhdmlvciwgb3ZlcnJpZGUgdGhpcyBtZXRob2QuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0SGVhZGVycz8odG9rZW46IHN0cmluZyk6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdIH07XG5cbiAgLyoqXG4gICAqIFNhdmVzIGxhc3QgaW50ZXJydXB0ZWQgdXJsIGluc2lkZSBvZiB0aGUgc2VydmljZSBmb3IgZnVydGhlciByZXVzYWdlLFxuICAgKiBlLmcuIHJlc3RvcmluZyBpbnRlcnJ1cHRlZCBwYWdlIGFmdGVyIGxvZ2dpbmcgaW5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBzZXRJbnRlcnJ1cHRlZFVybD8odXJsOiBzdHJpbmcpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBWZXJpZnkgdGhhdCBvdXRnb2luZyByZXF1ZXN0IGlzIHJlZnJlc2gtdG9rZW4sXG4gICAqIHNvIGludGVyY2VwdG9yIHdvbid0IGludGVyY2VwdCB0aGlzIHJlcXVlc3RcbiAgICogQGRlcHJlY2F0ZWQgRHVlIHRvIGlsbG9naWNhbCBtZWFuaW5nL2Z1bmN0aW9uYWxpdHkgdGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZFxuICAgKiBAc2VlIHZlcmlmeVJlZnJlc2hUb2tlblxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHZlcmlmeVRva2VuUmVxdWVzdD8odXJsOiBzdHJpbmcpOiBib29sZWFuO1xufVxuIiwiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNvbnN0IEFVVEhfU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbignQVVUSF9TRVJWSUNFJyk7XG5leHBvcnQgY29uc3QgUFVCTElDX0ZBTExCQUNLX1BBR0VfVVJJID0gbmV3IEluamVjdGlvblRva2VuKCdQVUJMSUNfRkFMTEJBQ0tfUEFHRV9VUkknKTtcbmV4cG9ydCBjb25zdCBQUk9URUNURURfRkFMTEJBQ0tfUEFHRV9VUkkgPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ1BST1RFQ1RFRF9GQUxMQkFDS19QQUdFX1VSSScpO1xuIiwiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDYW5BY3RpdmF0ZSxcbiAgQ2FuQWN0aXZhdGVDaGlsZCxcbiAgUm91dGVyLFxuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBSb3V0ZXJTdGF0ZVNuYXBzaG90XG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVVUSF9TRVJWSUNFLCBQUk9URUNURURfRkFMTEJBQ0tfUEFHRV9VUkkgfSBmcm9tICcuL3Rva2Vucyc7XG5cbi8qKlxuICogR3VhcmQsIGNoZWNrcyBhY2Nlc3MgdG9rZW4gYXZhaWxhYmlsaXR5IGFuZCBhbGxvd3Mgb3IgZGlzYWxsb3dzIGFjY2VzcyB0byBwYWdlLFxuICogYW5kIHJlZGlyZWN0cyBvdXRcbiAqXG4gKiB1c2FnZTogeyBwYXRoOiAndGVzdCcsIGNvbXBvbmVudDogVGVzdENvbXBvbmVudCwgY2FuQWN0aXZhdGU6IFsgUHVibGljR3VhcmQgXSB9XG4gKlxuICogQGV4cG9ydFxuICogQGR5bmFtaWNcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFB1YmxpY0d1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUsIENhbkFjdGl2YXRlQ2hpbGQge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoQVVUSF9TRVJWSUNFKSBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICBASW5qZWN0KFBST1RFQ1RFRF9GQUxMQkFDS19QQUdFX1VSSSkgcHJpdmF0ZSBwcm90ZWN0ZWRGYWxsYmFja1BhZ2VVcmk6IHN0cmluZyxcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXG4gICkge31cblxuICAvKipcbiAgICogQ2FuQWN0aXZhdGUgaGFuZGxlclxuICAgKi9cbiAgcHVibGljIGNhbkFjdGl2YXRlKFxuICAgIF9yb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5pc0F1dGhvcml6ZWQoKVxuICAgICAgLnBpcGUobWFwKChpc0F1dGhvcml6ZWQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKGlzQXV0aG9yaXplZCAmJiAhdGhpcy5pc1Byb3RlY3RlZFBhZ2Uoc3RhdGUpKSB7XG4gICAgICAgICAgdGhpcy5uYXZpZ2F0ZSh0aGlzLnByb3RlY3RlZEZhbGxiYWNrUGFnZVVyaSk7XG5cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYW5BY3RpdmF0ZUNoaWxkIGhhbmRsZXJcbiAgICovXG4gIHB1YmxpYyBjYW5BY3RpdmF0ZUNoaWxkKFxuICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICAgIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XG4gICk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmNhbkFjdGl2YXRlKHJvdXRlLCBzdGF0ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2ssIGlmIGN1cnJlbnQgcGFnZSBpcyBwcm90ZWN0ZWQgZmFsbGJhY2sgcGFnZVxuICAgKi9cbiAgcHJpdmF0ZSBpc1Byb3RlY3RlZFBhZ2Uoc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3RhdGUudXJsID09PSB0aGlzLnByb3RlY3RlZEZhbGxiYWNrUGFnZVVyaTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZSBhd2F5IGZyb20gdGhlIGFwcCAvIHBhdGhcbiAgICovXG4gIHByaXZhdGUgbmF2aWdhdGUodXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodXJsLnN0YXJ0c1dpdGgoJ2h0dHAnKSkge1xuICAgICAgdGhpcy5kb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gdXJsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybCk7XG4gICAgfVxuICB9XG5cbn1cbiIsImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgUm91dGVyLFxuICBDYW5BY3RpdmF0ZSxcbiAgQ2FuQWN0aXZhdGVDaGlsZCxcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgUm91dGVyU3RhdGVTbmFwc2hvdFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEFVVEhfU0VSVklDRSwgUFVCTElDX0ZBTExCQUNLX1BBR0VfVVJJIH0gZnJvbSAnLi90b2tlbnMnO1xuXG4vKipcbiAqIEd1YXJkLCBjaGVja3MgYWNjZXNzIHRva2VuIGF2YWlsYWJpbGl0eSBhbmQgYWxsb3dzIG9yIGRpc2FsbG93cyBhY2Nlc3MgdG8gcGFnZSxcbiAqIGFuZCByZWRpcmVjdHMgb3V0XG4gKlxuICogdXNhZ2U6IHsgcGF0aDogJ3Rlc3QnLCBjb21wb25lbnQ6IFRlc3RDb21wb25lbnQsIGNhbkFjdGl2YXRlOiBbIEF1dGhHdWFyZCBdIH1cbiAqXG4gKiBAZXhwb3J0XG4gKiBAZHluYW1pY1xuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUHJvdGVjdGVkR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSwgQ2FuQWN0aXZhdGVDaGlsZCB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChBVVRIX1NFUlZJQ0UpcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgQEluamVjdChQVUJMSUNfRkFMTEJBQ0tfUEFHRV9VUkkpIHByaXZhdGUgcHVibGljRmFsbGJhY2tQYWdlVXJpOiBzdHJpbmcsXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHt9XG5cbiAgLyoqXG4gICAqIENhbkFjdGl2YXRlIGhhbmRsZXJcbiAgICovXG4gIHB1YmxpYyBjYW5BY3RpdmF0ZShcbiAgICBfcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3RcbiAgKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aFNlcnZpY2UuaXNBdXRob3JpemVkKClcbiAgICAgIC5waXBlKG1hcCgoaXNBdXRob3JpemVkOiBib29sZWFuKSA9PiB7XG4gICAgICAgIGlmICghaXNBdXRob3JpemVkICYmICF0aGlzLmlzUHVibGljUGFnZShzdGF0ZSkpIHtcbiAgICAgICAgICBpZiAodGhpcy5hdXRoU2VydmljZS5zZXRJbnRlcnJ1cHRlZFVybCkge1xuICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5zZXRJbnRlcnJ1cHRlZFVybChzdGF0ZS51cmwpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMubmF2aWdhdGUodGhpcy5wdWJsaWNGYWxsYmFja1BhZ2VVcmkpO1xuXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FuQWN0aXZhdGVDaGlsZCBoYW5kbGVyXG4gICAqL1xuICBwdWJsaWMgY2FuQWN0aXZhdGVDaGlsZChcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5jYW5BY3RpdmF0ZShyb3V0ZSwgc3RhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrLCBpZiBjdXJyZW50IHBhZ2UgaXMgcHVibGljIGZhbGxiYWNrIHBhZ2VcbiAgICovXG4gIHByaXZhdGUgaXNQdWJsaWNQYWdlKHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN0YXRlLnVybCA9PT0gdGhpcy5wdWJsaWNGYWxsYmFja1BhZ2VVcmk7XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGUgYXdheSBmcm9tIHRoZSBhcHAgLyBwYXRoXG4gICAqL1xuICBwcml2YXRlIG5hdmlnYXRlKHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHVybC5zdGFydHNXaXRoKCdodHRwJykpIHtcbiAgICAgIHRoaXMuZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9IHVybDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmwpO1xuICAgIH1cbiAgfVxuXG59XG4iLCJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgSHR0cENsaWVudCxcbiAgSHR0cEV2ZW50LFxuICBIdHRwSW50ZXJjZXB0b3IsXG4gIEh0dHBIYW5kbGVyLFxuICBIdHRwUmVxdWVzdCxcbiAgSHR0cEVycm9yUmVzcG9uc2Vcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBmaXJzdCwgc3dpdGNoTWFwLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEFVVEhfU0VSVklDRSB9IGZyb20gJy4vdG9rZW5zJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEF1dGhJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG5cbiAgLyoqXG4gICAqIElzIHJlZnJlc2ggdG9rZW4gaXMgYmVpbmcgZXhlY3V0ZWRcbiAgICovXG4gIHByaXZhdGUgcmVmcmVzaEluUHJvZ3Jlc3MgPSBmYWxzZTtcblxuICAvKipcbiAgICogTm90aWZ5IGFsbCBvdXRzdGFuZGluZyByZXF1ZXN0cyB0aHJvdWdoIHRoaXMgc3ViamVjdFxuICAgKi9cbiAgcHJpdmF0ZSByZWZyZXNoU3ViamVjdDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHt9XG5cbiAgLyoqXG4gICAqIEludGVyY2VwdCBhbiBvdXRnb2luZyBgSHR0cFJlcXVlc3RgXG4gICAqL1xuICBwdWJsaWMgaW50ZXJjZXB0KFxuICAgIHJlcTogSHR0cFJlcXVlc3Q8YW55PixcbiAgICBkZWxlZ2F0ZTogSHR0cEhhbmRsZXJcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgIGlmICh0aGlzLnNraXBSZXF1ZXN0KHJlcSkpIHtcbiAgICAgIHJldHVybiBkZWxlZ2F0ZS5oYW5kbGUocmVxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wcm9jZXNzSW50ZXJjZXB0KHJlcSwgZGVsZWdhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3MgYWxsIHRoZSByZXF1ZXN0cyB2aWEgY3VzdG9tIGludGVyY2VwdG9ycy5cbiAgICovXG4gIHByaXZhdGUgcHJvY2Vzc0ludGVyY2VwdChcbiAgICBvcmlnaW5hbDogSHR0cFJlcXVlc3Q8YW55PixcbiAgICBkZWxlZ2F0ZTogSHR0cEhhbmRsZXJcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgIGNvbnN0IGNsb25lOiBIdHRwUmVxdWVzdDxhbnk+ID0gb3JpZ2luYWwuY2xvbmUoKTtcblxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QoY2xvbmUpXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChyZXE6IEh0dHBSZXF1ZXN0PGFueT4pID0+IGRlbGVnYXRlLmhhbmRsZShyZXEpKSxcbiAgICAgICAgY2F0Y2hFcnJvcigocmVzOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5yZXNwb25zZUVycm9yKGNsb25lLCByZXMpKVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXF1ZXN0IGludGVyY2VwdG9yLiBEZWxheXMgcmVxdWVzdCBpZiByZWZyZXNoIGlzIGluIHByb2dyZXNzXG4gICAqIG90aGVyd2lzZSBhZGRzIHRva2VuIHRvIHRoZSBoZWFkZXJzXG4gICAqL1xuICBwcml2YXRlIHJlcXVlc3QocmVxOiBIdHRwUmVxdWVzdDxhbnk+KTogT2JzZXJ2YWJsZTxIdHRwUmVxdWVzdDxhbnk+PiB7XG4gICAgaWYgKHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybiB0aGlzLmRlbGF5UmVxdWVzdChyZXEpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFkZFRva2VuKHJlcSk7XG4gIH1cblxuICAvKipcbiAgICogRmFpbGVkIHJlcXVlc3QgaW50ZXJjZXB0b3IsIGNoZWNrIGlmIGl0IGhhcyB0byBiZSBwcm9jZXNzZWQgd2l0aCByZWZyZXNoXG4gICAqL1xuICBwcml2YXRlIHJlc3BvbnNlRXJyb3IoXG4gICAgcmVxOiBIdHRwUmVxdWVzdDxhbnk+LFxuICAgIHJlczogSHR0cEVycm9yUmVzcG9uc2VcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgIGNvbnN0IGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSA9XG4gICAgICB0aGlzLmluamVjdG9yLmdldDxBdXRoU2VydmljZT4oQVVUSF9TRVJWSUNFKTtcbiAgICBjb25zdCByZWZyZXNoU2hvdWxkSGFwcGVuOiBib29sZWFuID1cbiAgICAgIGF1dGhTZXJ2aWNlLnJlZnJlc2hTaG91bGRIYXBwZW4ocmVzLCByZXEpO1xuXG4gICAgaWYgKHJlZnJlc2hTaG91bGRIYXBwZW4gJiYgIXRoaXMucmVmcmVzaEluUHJvZ3Jlc3MpIHtcbiAgICAgIHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MgPSB0cnVlO1xuXG4gICAgICBhdXRoU2VydmljZVxuICAgICAgICAucmVmcmVzaFRva2VuKClcbiAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAocmVmcmVzaFNob3VsZEhhcHBlbiAmJiB0aGlzLnJlZnJlc2hJblByb2dyZXNzKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXRyeVJlcXVlc3QocmVxLCByZXMpO1xuICAgIH1cblxuICAgIHJldHVybiB0aHJvd0Vycm9yKHJlcyk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFjY2VzcyB0b2tlbiB0byBoZWFkZXJzIG9yIHRoZSByZXF1ZXN0XG4gICAqL1xuICBwcml2YXRlIGFkZFRva2VuKHJlcTogSHR0cFJlcXVlc3Q8YW55Pik6IE9ic2VydmFibGU8SHR0cFJlcXVlc3Q8YW55Pj4ge1xuICAgIGNvbnN0IGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSA9XG4gICAgICB0aGlzLmluamVjdG9yLmdldDxBdXRoU2VydmljZT4oQVVUSF9TRVJWSUNFKTtcblxuICAgIHJldHVybiBhdXRoU2VydmljZS5nZXRBY2Nlc3NUb2tlbigpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCh0b2tlbjogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgICAgICBsZXQgc2V0SGVhZGVyczogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfTtcblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBhdXRoU2VydmljZS5nZXRIZWFkZXJzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgIHNldEhlYWRlcnMgPSBhdXRoU2VydmljZS5nZXRIZWFkZXJzKHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNldEhlYWRlcnMgPSB7IEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0b2tlbn1gIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXEuY2xvbmUoeyBzZXRIZWFkZXJzIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiByZXE7XG4gICAgICAgIH0pLFxuICAgICAgICBmaXJzdCgpXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGF5IHJlcXVlc3QsIGJ5IHN1YnNjcmliaW5nIG9uIHJlZnJlc2ggZXZlbnQsIG9uY2UgaXQgZmluaXNoZWQsIHByb2Nlc3MgaXRcbiAgICogb3RoZXJ3aXNlIHRocm93IGVycm9yXG4gICAqL1xuICBwcml2YXRlIGRlbGF5UmVxdWVzdChyZXE6IEh0dHBSZXF1ZXN0PGFueT4pOiBPYnNlcnZhYmxlPEh0dHBSZXF1ZXN0PGFueT4+IHtcbiAgICByZXR1cm4gdGhpcy5yZWZyZXNoU3ViamVjdC5waXBlKFxuICAgICAgZmlyc3QoKSxcbiAgICAgIHN3aXRjaE1hcCgoc3RhdHVzOiBib29sZWFuKSA9PlxuICAgICAgICBzdGF0dXMgPyB0aGlzLmFkZFRva2VuKHJlcSkgOiB0aHJvd0Vycm9yKHJlcSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJ5IHJlcXVlc3QsIGJ5IHN1YnNjcmliaW5nIG9uIHJlZnJlc2ggZXZlbnQsIG9uY2UgaXQgZmluaXNoZWQsIHByb2Nlc3MgaXRcbiAgICogb3RoZXJ3aXNlIHRocm93IGVycm9yXG4gICAqL1xuICBwcml2YXRlIHJldHJ5UmVxdWVzdChcbiAgICByZXE6IEh0dHBSZXF1ZXN0PGFueT4sXG4gICAgcmVzOiBIdHRwRXJyb3JSZXNwb25zZVxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgY29uc3QgaHR0cDogSHR0cENsaWVudCA9XG4gICAgICB0aGlzLmluamVjdG9yLmdldDxIdHRwQ2xpZW50PihIdHRwQ2xpZW50KTtcblxuICAgIHJldHVybiB0aGlzLnJlZnJlc2hTdWJqZWN0LnBpcGUoXG4gICAgICBmaXJzdCgpLFxuICAgICAgc3dpdGNoTWFwKChzdGF0dXM6IGJvb2xlYW4pID0+XG4gICAgICAgIHN0YXR1cyA/IGh0dHAucmVxdWVzdChyZXEpIDogdGhyb3dFcnJvcihyZXMgfHwgcmVxKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHJlcXVlc3QgbXVzdCBiZSBza2lwcGVkIGJ5IGludGVyY2VwdG9yLlxuICAgKi9cbiAgcHJpdmF0ZSBza2lwUmVxdWVzdChyZXE6IEh0dHBSZXF1ZXN0PGFueT4pIHtcbiAgICBjb25zdCBza2lwUmVxdWVzdCA9IHRoaXMuZXhlYygnc2tpcFJlcXVlc3QnLCByZXEpO1xuICAgIGNvbnN0IHZlcmlmeVJlZnJlc2hUb2tlbiA9IHRoaXMuZXhlYygndmVyaWZ5UmVmcmVzaFRva2VuJywgcmVxKTtcblxuICAgIC8vIGRlcHJlY2F0ZWQsIHdpbGwgYmUgcmVtb3ZlZCBzb29uXG4gICAgY29uc3QgdmVyaWZ5VG9rZW5SZXF1ZXN0ID0gdGhpcy5leGVjKCd2ZXJpZnlUb2tlblJlcXVlc3QnLCByZXEudXJsKTtcblxuICAgIHJldHVybiBza2lwUmVxdWVzdCB8fCB2ZXJpZnlSZWZyZXNoVG9rZW4gfHwgdmVyaWZ5VG9rZW5SZXF1ZXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWMgb3B0aW9uYWwgbWV0aG9kLCB3aWxsIGJlIHJlbW92ZWQgaW4gdXBjb21pbmcgdXBkYXRlcy5cbiAgICogVGVtcCBtZXRob2QgdW50aWwgYHZlcmlmeVRva2VuUmVxdWVzdGAgd2lsbCBiZSBjb21wbGV0ZWx5IHJlcGxhY2VkIHdpdGggc2tpcFJlcXVlc3RcbiAgICovXG4gIHByaXZhdGUgZXhlYyhtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICBjb25zdCBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UgPVxuICAgICAgdGhpcy5pbmplY3Rvci5nZXQ8QXV0aFNlcnZpY2U+KEFVVEhfU0VSVklDRSk7XG5cbiAgICBpZiAodHlwZW9mIGF1dGhTZXJ2aWNlW21ldGhvZF0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBhdXRoU2VydmljZVttZXRob2RdKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxuXG59XG4iLCJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSFRUUF9JTlRFUkNFUFRPUlMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmltcG9ydCB7IFB1YmxpY0d1YXJkIH0gZnJvbSAnLi9wdWJsaWMuZ3VhcmQnO1xuaW1wb3J0IHsgUHJvdGVjdGVkR3VhcmQgfSBmcm9tICcuL3Byb3RlY3RlZC5ndWFyZCc7XG5pbXBvcnQgeyBBdXRoSW50ZXJjZXB0b3IgfSBmcm9tICcuL2F1dGguaW50ZXJjZXB0b3InO1xuXG5ATmdNb2R1bGUoe1xuICBwcm92aWRlcnM6IFtcbiAgICBQdWJsaWNHdWFyZCxcbiAgICBQcm90ZWN0ZWRHdWFyZCxcbiAgICBBdXRoSW50ZXJjZXB0b3IsXG4gICAge1xuICAgICAgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsXG4gICAgICB1c2VDbGFzczogQXV0aEludGVyY2VwdG9yLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhNb2R1bGUge1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFNQTs7Ozs7SUFBQTtLQStEQztJQUFELGtCQUFDO0NBQUE7Ozs7OztBQ3JFRDtBQUVBLElBQWEsWUFBWSxHQUFHLElBQUksY0FBYyxDQUFDLGNBQWMsQ0FBQzs7QUFDOUQsSUFBYSx3QkFBd0IsR0FBRyxJQUFJLGNBQWMsQ0FBQywwQkFBMEIsQ0FBQzs7QUFDdEYsSUFBYSwyQkFBMkIsR0FBRyxJQUFJLGNBQWMsQ0FBQyw2QkFBNkIsQ0FBQzs7Ozs7O0FDSjVGOzs7Ozs7Ozs7QUF3QkE7SUFHRSxxQkFDZ0MsV0FBd0IsRUFDVCx3QkFBZ0MsRUFDMUMsUUFBa0IsRUFDN0MsTUFBYztRQUhRLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ1QsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUFRO1FBQzFDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDN0MsV0FBTSxHQUFOLE1BQU0sQ0FBUTtLQUNwQjs7Ozs7Ozs7OztJQUtHLGlDQUFXOzs7Ozs7SUFBbEIsVUFDRSxNQUE4QixFQUM5QixLQUEwQjtRQUY1QixpQkFjQztRQVZDLE9B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

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":4,"metadata":{"AuthService":{"__symbolic":"class","members":{"isAuthorized":[{"__symbolic":"method"}],"getAccessToken":[{"__symbolic":"method"}],"refreshToken":[{"__symbolic":"method"}],"refreshShouldHappen":[{"__symbolic":"method"}],"verifyRefreshToken":[{"__symbolic":"method"}],"skipRequest":[{"__symbolic":"method"}],"getHeaders":[{"__symbolic":"method"}],"setInterruptedUrl":[{"__symbolic":"method"}],"verifyTokenRequest":[{"__symbolic":"method"}]}},"PublicGuard":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":22,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":26,"character":5},"arguments":[{"__symbolic":"reference","name":"AUTH_SERVICE"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":27,"character":5},"arguments":[{"__symbolic":"reference","name":"PROTECTED_FALLBACK_PAGE_URI"}]}],null],"parameters":[{"__symbolic":"reference","name":"AuthService"},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":28,"character":20}]}],"canActivate":[{"__symbolic":"method"}],"canActivateChild":[{"__symbolic":"method"}],"isProtectedPage":[{"__symbolic":"method"}],"navigate":[{"__symbolic":"method"}]}},"ProtectedGuard":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":22,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":26,"character":5},"arguments":[{"__symbolic":"reference","name":"AUTH_SERVICE"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":27,"character":5},"arguments":[{"__symbolic":"reference","name":"PUBLIC_FALLBACK_PAGE_URI"}]}],null],"parameters":[{"__symbolic":"reference","name":"AuthService"},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":28,"character":20}]}],"canActivate":[{"__symbolic":"method"}],"canActivateChild":[{"__symbolic":"method"}],"isPublicPage":[{"__symbolic":"method"}],"navigate":[{"__symbolic":"method"}]}},"AUTH_SERVICE":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":2,"character":32},"arguments":["AUTH_SERVICE"]},"PUBLIC_FALLBACK_PAGE_URI":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":3,"character":44},"arguments":["PUBLIC_FALLBACK_PAGE_URI"]},"PROTECTED_FALLBACK_PAGE_URI":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":4,"character":47},"arguments":["PROTECTED_FALLBACK_PAGE_URI"]},"AuthModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":7,"character":1},"arguments":[{"providers":[{"__symbolic":"reference","name":"PublicGuard"},{"__symbolic":"reference","name":"ProtectedGuard"},{"__symbolic":"reference","name":"ɵa"},{"provide":{"__symbolic":"reference","module":"@angular/common/http","name":"HTTP_INTERCEPTORS","line":13,"character":15},"useClass":{"__symbolic":"reference","name":"ɵa"},"multi":true}]}]}],"members":{}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":28,"character":32}]}],"intercept":[{"__symbolic":"method"}],"processIntercept":[{"__symbolic":"method"}],"request":[{"__symbolic":"method"}],"responseError":[{"__symbolic":"method"}],"addToken":[{"__symbolic":"method"}],"delayRequest":[{"__symbolic":"method"}],"retryRequest":[{"__symbolic":"method"}],"skipRequest":[{"__symbolic":"method"}],"exec":[{"__symbolic":"method"}]}}},"origins":{"AuthService":"./auth.service","PublicGuard":"./public.guard","ProtectedGuard":"./protected.guard","AUTH_SERVICE":"./tokens","PUBLIC_FALLBACK_PAGE_URI":"./tokens","PROTECTED_FALLBACK_PAGE_URI":"./tokens","AuthModule":"./auth.module","ɵa":"./auth.interceptor"},"importAs":"ngx-auth"}
{"__symbolic":"module","version":4,"metadata":{"AuthService":{"__symbolic":"class","members":{"isAuthorized":[{"__symbolic":"method"}],"getAccessToken":[{"__symbolic":"method"}],"refreshToken":[{"__symbolic":"method"}],"refreshShouldHappen":[{"__symbolic":"method"}],"verifyRefreshToken":[{"__symbolic":"method"}],"skipRequest":[{"__symbolic":"method"}],"getHeaders":[{"__symbolic":"method"}],"setInterruptedUrl":[{"__symbolic":"method"}],"verifyTokenRequest":[{"__symbolic":"method"}]}},"PublicGuard":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":28,"character":5},"arguments":[{"__symbolic":"reference","name":"AUTH_SERVICE"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":29,"character":5},"arguments":[{"__symbolic":"reference","name":"PROTECTED_FALLBACK_PAGE_URI"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":30,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":30,"character":12}]}],null],"parameters":[{"__symbolic":"reference","name":"AuthService"},{"__symbolic":"reference","name":"string"},{"__symbolic":"error","message":"Could not resolve type","line":30,"character":49,"context":{"typeName":"Document"},"module":"./public.guard"},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":31,"character":20}]}],"canActivate":[{"__symbolic":"method"}],"canActivateChild":[{"__symbolic":"method"}],"isProtectedPage":[{"__symbolic":"method"}],"navigate":[{"__symbolic":"method"}]}},"ProtectedGuard":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":28,"character":5},"arguments":[{"__symbolic":"reference","name":"AUTH_SERVICE"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":29,"character":5},"arguments":[{"__symbolic":"reference","name":"PUBLIC_FALLBACK_PAGE_URI"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":30,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":30,"character":12}]}],null],"parameters":[{"__symbolic":"reference","name":"AuthService"},{"__symbolic":"reference","name":"string"},{"__symbolic":"error","message":"Could not resolve type","line":30,"character":49,"context":{"typeName":"Document"},"module":"./protected.guard"},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":31,"character":20}]}],"canActivate":[{"__symbolic":"method"}],"canActivateChild":[{"__symbolic":"method"}],"isPublicPage":[{"__symbolic":"method"}],"navigate":[{"__symbolic":"method"}]}},"AUTH_SERVICE":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":2,"character":32},"arguments":["AUTH_SERVICE"]},"PUBLIC_FALLBACK_PAGE_URI":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":3,"character":44},"arguments":["PUBLIC_FALLBACK_PAGE_URI"]},"PROTECTED_FALLBACK_PAGE_URI":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":4,"character":47},"arguments":["PROTECTED_FALLBACK_PAGE_URI"]},"AuthModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":7,"character":1},"arguments":[{"providers":[{"__symbolic":"reference","name":"PublicGuard"},{"__symbolic":"reference","name":"ProtectedGuard"},{"__symbolic":"reference","name":"ɵa"},{"provide":{"__symbolic":"reference","module":"@angular/common/http","name":"HTTP_INTERCEPTORS","line":13,"character":15},"useClass":{"__symbolic":"reference","name":"ɵa"},"multi":true}]}]}],"members":{}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":28,"character":32}]}],"intercept":[{"__symbolic":"method"}],"processIntercept":[{"__symbolic":"method"}],"request":[{"__symbolic":"method"}],"responseError":[{"__symbolic":"method"}],"addToken":[{"__symbolic":"method"}],"delayRequest":[{"__symbolic":"method"}],"retryRequest":[{"__symbolic":"method"}],"skipRequest":[{"__symbolic":"method"}],"exec":[{"__symbolic":"method"}]}}},"origins":{"AuthService":"./auth.service","PublicGuard":"./public.guard","ProtectedGuard":"./protected.guard","AUTH_SERVICE":"./tokens","PUBLIC_FALLBACK_PAGE_URI":"./tokens","PROTECTED_FALLBACK_PAGE_URI":"./tokens","AuthModule":"./auth.module","ɵa":"./auth.interceptor"},"importAs":"ngx-auth"}
{
"name": "ngx-auth",
"version": "5.3.0",
"version": "5.4.0",
"description": "Angular 7+ Authentication module",

@@ -5,0 +5,0 @@ "repository": "https://github.com/serhiisol/ngx-auth",

@@ -11,2 +11,3 @@ import { Router, CanActivate, CanActivateChild, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';

* @export
* @dynamic
*/

@@ -16,4 +17,5 @@ export declare class ProtectedGuard implements CanActivate, CanActivateChild {

private publicFallbackPageUri;
private readonly document;
private router;
constructor(authService: AuthService, publicFallbackPageUri: string, router: Router);
constructor(authService: AuthService, publicFallbackPageUri: string, document: Document, router: Router);
/**

@@ -20,0 +22,0 @@ * CanActivate handler

@@ -11,2 +11,3 @@ import { CanActivate, CanActivateChild, Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';

* @export
* @dynamic
*/

@@ -16,4 +17,5 @@ export declare class PublicGuard implements CanActivate, CanActivateChild {

private protectedFallbackPageUri;
private readonly document;
private router;
constructor(authService: AuthService, protectedFallbackPageUri: string, router: Router);
constructor(authService: AuthService, protectedFallbackPageUri: string, document: Document, router: Router);
/**

@@ -20,0 +22,0 @@ * CanActivate handler

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc