@sam-senior/sam-utils 2.0.2 → 2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,11 +2,10 @@
2
2
  * @fileoverview added by tsickle
3
3
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
4
  */
5
- import * as tslib_1 from "tslib";
5
+ import { __awaiter } from "tslib";
6
6
  import { Injectable } from '@angular/core';
7
7
  import { Observable } from 'rxjs';
8
8
  import { HttpClient, HttpHeaders } from '@angular/common/http';
9
- import { map } from 'rxjs/operators';
10
9
  import * as i0 from "@angular/core";
11
10
  import * as i1 from "@angular/common/http";
12
11
  export class SamUtilsService {
@@ -46,7 +45,7 @@ export class SamUtilsService {
46
45
  * @return {?}
47
46
  */
48
47
  setUserProperties(product) {
49
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
48
+ return __awaiter(this, void 0, void 0, function* () {
50
49
  /** @type {?} */
51
50
  const user = yield this.getActiveUser().toPromise();
52
51
  gtag('set', 'user_properties', {
@@ -98,10 +97,10 @@ export class SamUtilsService {
98
97
  * @return {?}
99
98
  */
100
99
  sendToAnalytics(eventName, params, product) {
101
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
100
+ return __awaiter(this, void 0, void 0, function* () {
102
101
  /** @type {?} */
103
102
  const user = yield this.getActiveUser().toPromise();
104
- gtag('event', eventName, Object.assign({}, params, { environment: this.getBaseURL(), user: user.username, tentant: user.tenantName, product: product ? product : params.product, debug_mode: true }));
103
+ gtag('event', eventName, Object.assign(Object.assign({}, params), { environment: this.getBaseURL(), user: user.username, tentant: user.tenantName, product: product ? product : params.product, debug_mode: true }));
105
104
  });
106
105
  }
107
106
  /**
@@ -130,7 +129,7 @@ export class SamUtilsService {
130
129
  else if (typeof InstallTrigger !== 'undefined') { // Firefox 1.0+
131
130
  return 'Firefox';
132
131
  }
133
- else if (/constructor/i.test(window['HTMLElement']) || ((/**
132
+ else if (/constructor/i.test((/** @type {?} */ (window['HTMLElement']))) || ((/**
134
133
  * @param {?} p
135
134
  * @return {?}
136
135
  */
@@ -172,18 +171,9 @@ export class SamUtilsService {
172
171
  * @return {?}
173
172
  */
174
173
  getActiveUser() {
175
- if (!SamUtilsService.ACTIVE_USER) {
176
- return (/** @type {?} */ (this.httpClient.get(`${this.getG7BridgeURL()}/rest/platform/user/queries/getUser`, {
177
- headers: this.getHeaders()
178
- }).pipe(map((/**
179
- * @param {?} user
180
- * @return {?}
181
- */
182
- user => SamUtilsService.ACTIVE_USER = user)))));
183
- }
184
- else {
185
- return this.createObservableWithValue(SamUtilsService.ACTIVE_USER);
186
- }
174
+ return this.httpClient.get(`${this.getG7BridgeURL()}/rest/platform/user/queries/getUser`, {
175
+ headers: this.getHeaders()
176
+ });
187
177
  }
188
178
  /**
189
179
  * @param {?} user
@@ -249,7 +239,7 @@ export class SamUtilsService {
249
239
  * @return {?}
250
240
  */
251
241
  trackSale(tracksaleKey, tracksaleCampaign, pageUrl) {
252
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
242
+ return __awaiter(this, void 0, void 0, function* () {
253
243
  if (!((/** @type {?} */ (window))).show_tacksale) {
254
244
  return;
255
245
  }
@@ -336,7 +326,6 @@ export class SamUtilsService {
336
326
  }
337
327
  }
338
328
  SamUtilsService.HAS_LOADED = false;
339
- SamUtilsService.ACTIVE_USER = null;
340
329
  SamUtilsService.decorators = [
341
330
  { type: Injectable, args: [{
342
331
  providedIn: 'root'
@@ -346,22 +335,17 @@ SamUtilsService.decorators = [
346
335
  SamUtilsService.ctorParameters = () => [
347
336
  { type: HttpClient }
348
337
  ];
349
- /** @nocollapse */ SamUtilsService.ngInjectableDef = i0.defineInjectable({ factory: function SamUtilsService_Factory() { return new SamUtilsService(i0.inject(i1.HttpClient)); }, token: SamUtilsService, providedIn: "root" });
338
+ /** @nocollapse */ SamUtilsService.ɵprov = i0.ɵɵdefineInjectable({ factory: function SamUtilsService_Factory() { return new SamUtilsService(i0.ɵɵinject(i1.HttpClient)); }, token: SamUtilsService, providedIn: "root" });
350
339
  if (false) {
351
340
  /**
352
341
  * @type {?}
353
342
  * @private
354
343
  */
355
344
  SamUtilsService.HAS_LOADED;
356
- /**
357
- * @type {?}
358
- * @private
359
- */
360
- SamUtilsService.ACTIVE_USER;
361
345
  /**
362
346
  * @type {?}
363
347
  * @private
364
348
  */
365
349
  SamUtilsService.prototype.httpClient;
366
350
  }
367
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FtLXV0aWxzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2FtLXNlbmlvci9zYW0tdXRpbHMvIiwic291cmNlcyI6WyJsaWIvc2FtLXV0aWxzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUsvRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQVVyQyxNQUFNLE9BQU8sZUFBZTs7OztJQUsxQixZQUNVLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7SUFDNUIsQ0FBQzs7Ozs7SUFFRSxnQkFBZ0IsQ0FBQyxRQUFRO1FBQzlCLE9BQU8sUUFBUSxDQUFDLEdBQUc7Ozs7UUFBQyxPQUFPLENBQUMsRUFBRTs7Z0JBQ3hCLEdBQUcsR0FBRyxPQUFPO1lBQ2pCLElBQUk7O3NCQUNJLEVBQUUsR0FBRyxtQkFBQSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQU87Z0JBQ3JDLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssS0FBSyxFQUFFO29CQUMxQixHQUFHLEdBQUcsTUFBTSxDQUFDO2lCQUNkO2FBQ0Y7WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDVixHQUFHLEdBQUcsT0FBTyxDQUFDO2FBQ2Y7WUFDRCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNmLENBQUM7Ozs7O0lBRVksaUJBQWlCLENBQUMsT0FBZTs7O2tCQUN0QyxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsU0FBUyxFQUFFO1lBQ25ELElBQUksQ0FBQyxLQUFLLEVBQUUsaUJBQWlC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QUNsQyw0QkFBa0M7Ozs7O0lBR2hDLHFDQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgVXNlciB9IGZyb20gJy4vdXNlci5tb2RlbCc7XHJcbmltcG9ydCB7IFVzZXJSb2xlcyB9IGZyb20gJy4vdXNlci1yb2xlcy5tb2RlbCc7XHJcbmltcG9ydCB7IEhhc0ludGVncmF0ZWRSb2xlTW9kZWwgfSBmcm9tICcuL2hhcy1pbnRlZ3JhdGVkLXJvbGUubW9kZWwnO1xyXG5pbXBvcnQgeyBUZW5hbnRJbmZvcm1hdGlvbiB9IGZyb20gJy4vdGVuYW50LWluZm9ybWF0aW9uJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuZGVjbGFyZSBjb25zdCBJbnN0YWxsVHJpZ2dlcjogYW55O1xyXG5kZWNsYXJlIGNvbnN0IHNhZmFyaTogYW55O1xyXG5kZWNsYXJlIGNvbnN0IFRyYWNrc2FsZTogYW55O1xyXG5kZWNsYXJlIGxldCBndGFnOiBGdW5jdGlvbjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNhbVV0aWxzU2VydmljZSB7XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIEhBU19MT0FERUQgPSBmYWxzZTtcclxuICBwcml2YXRlIHN0YXRpYyBBQ1RJVkVfVVNFUiA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50XHJcbiAgKSB7IH1cclxuXHJcbiAgcHVibGljIGdldFVybFdpdGhvdXRJZHModXJsUGFydHMpIHtcclxuICAgIHJldHVybiB1cmxQYXJ0cy5tYXAodXJsUGFydCA9PiB7XHJcbiAgICAgIGxldCB1cmwgPSB1cmxQYXJ0O1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IGlkID0gcGFyc2VGbG9hdCh1cmxQYXJ0KSBhcyBhbnk7XHJcbiAgICAgICAgaWYgKGlkID4gMCB8fCBpZCA9PT0gJ25ldycpIHtcclxuICAgICAgICAgIHVybCA9ICd7aWR9JztcclxuICAgICAgICB9XHJcbiAgICAgIH0gY2F0Y2ggKF8pIHtcclxuICAgICAgICB1cmwgPSB1cmxQYXJ0O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB1cmw7XHJcbiAgICB9KS5qb2luKCcvJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgc2V0VXNlclByb3BlcnRpZXMocHJvZHVjdDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5nZXRBY3RpdmVVc2VyKCkudG9Qcm9taXNlKCk7XHJcbiAgICBndGFnKCdzZXQnLCAndXNlcl9wcm9wZXJ0aWVzJywge1xyXG4gICAgICBwcm9kdWN0X2c3OiBwcm9kdWN0LFxyXG4gICAgICB0ZW5hbnQ6IHVzZXIudGVuYW50TmFtZSxcclxuICAgICAgdXNlcm5hbWU6IHVzZXIudXNlcm5hbWVcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHBhZ2VMb2FkaW5nKHBhZ2U6IHN0cmluZywgcHJvZHVjdDogc3RyaW5nKSB7XHJcbiAgICBpZiAoIVNhbVV0aWxzU2VydmljZS5IQVNfTE9BREVEICYmIHdpbmRvdy5wZXJmb3JtYW5jZSkge1xyXG4gICAgICBTYW1VdGlsc1NlcnZpY2UuSEFTX0xPQURFRCA9IHRydWU7XHJcbiAgICAgIGNvbnN0IHRpbWVTaW5jZVBhZ2VMb2FkID0gTWF0aC5yb3VuZChwZXJmb3JtYW5jZS5ub3coKSk7XHJcbiAgICAgIHRoaXMuc2VuZFRvQW5hbHl0aWNzKCd0ZW1wb19jYXJyZWdhbWVudG9fdGVsYScsIHtcclxuICAgICAgICB0aW1lX3ZhbHVlOiAodGltZVNpbmNlUGFnZUxvYWQgLyAxMDAwKSxcclxuICAgICAgICBwYWdlOiBwYWdlXHJcbiAgICAgIH0sIHByb2R1Y3QpLnRoZW4oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRCYXNlVVJMKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgY29va2llID0gZG9jdW1lbnQuY29va2llLnNwbGl0KCc7JykuZmlsdGVyKGNvb2tpZVN0ciA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGNvb2tpZVN0ci5pbmNsdWRlcygnY29tLnNlbmlvci5iYXNlLnVybCcpO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChcclxuICAgICAgICBjb29raWVbMF0uc3BsaXQoJz0nKVsxXVxyXG4gICAgICApLnNsaWNlKDAsIC0xKTtcclxuICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICB0aHJvdyBFcnJvcignUGxhdGZvcm0gRzcgbm90IGNvbmZpZ3VyZWQgaW4gdGhpcyBhcHAnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBzZW5kVG9BbmFseXRpY3MoZXZlbnROYW1lOiBzdHJpbmcsIHBhcmFtczogYW55LCBwcm9kdWN0Pzogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5nZXRBY3RpdmVVc2VyKCkudG9Qcm9taXNlKCk7XHJcbiAgICBndGFnKCdldmVudCcsIGV2ZW50TmFtZSwge1xyXG4gICAgICAuLi5wYXJhbXMsXHJcbiAgICAgIGVudmlyb25tZW50OiB0aGlzLmdldEJhc2VVUkwoKSxcclxuICAgICAgdXNlcjogdXNlci51c2VybmFtZSxcclxuICAgICAgdGVudGFudDogdXNlci50ZW5hbnROYW1lLFxyXG4gICAgICBwcm9kdWN0OiBwcm9kdWN0ID8gcHJvZHVjdCA6IHBhcmFtcy5wcm9kdWN0LFxyXG4gICAgICBkZWJ1Z19tb2RlOiB0cnVlXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjcmVhdGVPYnNlcnZhYmxlV2l0aFZhbHVlPFQ+KHZhbHVlKSB7XHJcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8VD4ob2JzZXJ2ZXIgPT4ge1xyXG4gICAgICBvYnNlcnZlci5uZXh0KHZhbHVlKTtcclxuICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyogdHNsaW50OmRpc2FibGUgKi9cclxuICBwdWJsaWMgZ2V0QnJvd3NlcigpOiBzdHJpbmcge1xyXG4gICAgaWYgKCghIXdpbmRvd1snb3ByJ10gJiYgISF3aW5kb3dbJ29wciddLmFkZG9ucykgfHwgISF3aW5kb3dbJ29wZXJhJ10gfHwgbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCcgT1BSLycpID49IDApIHsgLy8gT3BlcmEgOC4wK1xyXG4gICAgICByZXR1cm4gJ09wZXJhJztcclxuICAgIH0gZWxzZSBpZiAodHlwZW9mIEluc3RhbGxUcmlnZ2VyICE9PSAndW5kZWZpbmVkJykgeyAvLyBGaXJlZm94IDEuMCtcclxuICAgICAgcmV0dXJuICdGaXJlZm94JztcclxuICAgIH0gZWxzZSBpZiAoL2NvbnN0cnVjdG9yL2kudGVzdCh3aW5kb3dbJ0hUTUxFbGVtZW50J10pIHx8IChmdW5jdGlvbiAocCkgeyByZXR1cm4gcC50b1N0cmluZygpID09PSBcIltvYmplY3QgU2FmYXJpUmVtb3RlTm90aWZpY2F0aW9uXVwiOyB9KSghd2luZG93WydzYWZhcmknXSB8fCAodHlwZW9mIHNhZmFyaSAhPT0gJ3VuZGVmaW5lZCcgJiYgc2FmYXJpLnB1c2hOb3RpZmljYXRpb24pKSkgeyAvLyBTYWZhcmkgMy4wKyBcIltvYmplY3QgSFRNTEVsZW1lbnRDb25zdHJ1Y3Rvcl1cIlxyXG4gICAgICByZXR1cm4gJ1NhZmFyaSc7XHJcbiAgICB9IGVsc2UgaWYgKC8qQGNjX29uIUAqL2ZhbHNlIHx8ICEhZG9jdW1lbnRbJ2RvY3VtZW50TW9kZSddKSB7IC8vIEludGVybmV0IEV4cGxvcmVyIDYtMTFcclxuICAgICAgcmV0dXJuICdJbnRlcm5ldCBFeHBsb3Jlcic7XHJcbiAgICB9IGVsc2UgaWYgKCEoLypAY2Nfb24hQCovZmFsc2UgfHwgISFkb2N1bWVudFsnZG9jdW1lbnRNb2RlJ10pICYmICEhd2luZG93WydTdHlsZU1lZGlhJ10pIHsgLy9FZGdlIDIwK1xyXG4gICAgICByZXR1cm4gJ0VkZ2UnO1xyXG4gICAgfSBlbHNlIGlmICghIXdpbmRvd1snY2hyb21lJ10pIHsvLyBDaHJvbWUgMStcclxuICAgICAgcmV0dXJuICdDaHJvbWUnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICd1bmtub3duJztcclxuICB9XHJcbiAgLyogdHNsaW50OmVuYWJsZSAqL1xyXG5cclxuICBwdWJsaWMgZ2V0RzdCcmlkZ2VVUkwoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBkdCA9IGRvY3VtZW50LmNvb2tpZS5zcGxpdCgnOycpLmZpbHRlcihjb29raWVTdHIgPT4ge1xyXG4gICAgICAgIHJldHVybiBjb29raWVTdHIuaW5jbHVkZXMoJ2NvbS5zZW5pb3Iuc2VydmljZXMudXJsJyk7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KFxyXG4gICAgICAgIGR0WzBdLnNwbGl0KCc9JylbMV1cclxuICAgICAgKS5zbGljZSgwLCAtMSk7XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgdGhyb3cgRXJyb3IoJ1BsYXRmb3JtIEc3IG5vdCBjb25maWd1cmVkIGluIHRoaXMgYXBwJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0QWN0aXZlVXNlcigpIHtcclxuICAgIGlmICghU2FtVXRpbHNTZXJ2aWNlLkFDVElWRV9VU0VSKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PFVzZXI+KGAke3RoaXMuZ2V0RzdCcmlkZ2VVUkwoKX0vcmVzdC9wbGF0Zm9ybS91c2VyL3F1ZXJpZXMvZ2V0VXNlcmAsIHtcclxuICAgICAgICBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKVxyXG4gICAgICB9KS5waXBlKG1hcCh1c2VyID0+IFNhbVV0aWxzU2VydmljZS5BQ1RJVkVfVVNFUiA9IHVzZXIpKSBhcyBhbnk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVPYnNlcnZhYmxlV2l0aFZhbHVlKFNhbVV0aWxzU2VydmljZS5BQ1RJVkVfVVNFUik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Um9sZXNCeUFjdGl2ZVVzZXIodXNlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8VXNlclJvbGVzPihgJHt0aGlzLmdldEc3QnJpZGdlVVJMKCl9L3Jlc3QvcGxhdGZvcm0vYXV0aG9yaXphdGlvbi9xdWVyaWVzL2dldFVzZXJSb2xlcz91c2VyPSR7dXNlcn1gLCB7XHJcbiAgICAgIGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRUZW5hdEluZm9ybWF0aW9uKHNjaGVtYU5hbWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8VGVuYW50SW5mb3JtYXRpb24+KGAke3RoaXMuZ2V0RzdCcmlkZ2VVUkwoKX0vcmVzdC9zYW0vYWRtaW5pc3RyYXRpb24vcXVlcmllcy9nZXRFcnBDb2RlYCwge1xyXG4gICAgICBwYXJhbXM6IHtcclxuICAgICAgICBzY2hlbWFOYW1lOiBzY2hlbWFOYW1lXHJcbiAgICAgIH0sXHJcbiAgICAgIGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYXNJbnRlZ3JhdGVkUm9sZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PEhhc0ludGVncmF0ZWRSb2xlTW9kZWw+KGAke3RoaXMuZ2V0RzdCcmlkZ2VVUkwoKX0vcmVzdC9zYW0vYXBwbGljYXRpb24vcXVlcmllcy9oYXNJbnRlZ3JhdGVkUm9sZWAsIHtcclxuICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKClcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRIZWFkZXJzKCkge1xyXG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLmdldEc3VG9rZW4oKTtcclxuICAgIHJldHVybiBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0F1dGhvcml6YXRpb24nLCBgJHt0b2tlbi50b2tlbl90eXBlfSAke3Rva2VuLmFjY2Vzc190b2tlbn1gKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRHN1Rva2VuKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3Qgc2VuaW9yVG9rZW4gPSBkb2N1bWVudC5jb29raWUuc3BsaXQoJzsnKS5maWx0ZXIoY29va2llU3RyID0+IHtcclxuICAgICAgICByZXR1cm4gY29va2llU3RyLmluY2x1ZGVzKCdjb20uc2VuaW9yLnRva2VuJyk7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShkZWNvZGVVUklDb21wb25lbnQoc2VuaW9yVG9rZW5bMF0uc3BsaXQoJz0nKVsxXSkpO1xyXG4gICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgIHRocm93IEVycm9yKCdQbGF0Zm9ybSBHNyBub3QgY29uZmlndXJlZCBpbiB0aGlzIGFwcCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHRyYWNrU2FsZSh0cmFja3NhbGVLZXk6IHN0cmluZywgdHJhY2tzYWxlQ2FtcGFpZ246IHN0cmluZywgcGFnZVVybDogc3RyaW5nKSB7XHJcbiAgICBpZiAoISh3aW5kb3cgYXMgYW55KS5zaG93X3RhY2tzYWxlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB1c2VySW5mb3JtYXRpb24gPSBhd2FpdCB0aGlzLmdldEFjdGl2ZVVzZXIoKS50b1Byb21pc2UoKTtcclxuXHJcbiAgICBsZXQgcm9sZXMgPSAnJztcclxuICAgIGlmICgod2luZG93IGFzIGFueSkuY2FuX2NhcHR1cmVfcm9sZSkge1xyXG4gICAgICBjb25zdCByb2xlID0gYXdhaXQgdGhpcy5nZXRSb2xlc0J5QWN0aXZlVXNlcih1c2VySW5mb3JtYXRpb24udXNlcm5hbWUpLnRvUHJvbWlzZSgpO1xyXG4gICAgICByb2xlcyA9IHJvbGUucm9sZXMuam9pbignLCAnKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBoYXNJbnRlZ3JhdGVkUm9sZSA9IGF3YWl0IHRoaXMuaGFzSW50ZWdyYXRlZFJvbGUoKS50b1Byb21pc2UoKTtcclxuICAgIGNvbnN0IHRlbmFudEluZm9ybWF0aW9uID0gYXdhaXQgdGhpcy5nZXRUZW5hdEluZm9ybWF0aW9uKHVzZXJJbmZvcm1hdGlvbi50ZW5hbnROYW1lKS50b1Byb21pc2UoKTtcclxuICAgIGNvbnN0IGJyb3dzZXIgPSB0aGlzLmdldEJyb3dzZXIoKTtcclxuICAgIGNvbnN0IGZ1bGxuYW1lID0gdXNlckluZm9ybWF0aW9uLmZ1bGxOYW1lLnJlcGxhY2UoJysnLCAnICcpO1xyXG4gICAgY29uc3QgZW1haWwgPSB1c2VySW5mb3JtYXRpb24uZW1haWw7XHJcbiAgICAoZnVuY3Rpb24gKGYsIGIsIGcpIHtcclxuICAgICAgY29uc3QgYSA9IHtcclxuICAgICAgICBrZXk6IHRyYWNrc2FsZUtleSxcclxuICAgICAgICBjYW1wYWlnbjogdHJhY2tzYWxlQ2FtcGFpZ24sXHJcbiAgICAgICAgbmFtZTogZnVsbG5hbWUsXHJcbiAgICAgICAgZW1haWw6IGVtYWlsLFxyXG4gICAgICAgIHRhZ3M6IHtcclxuICAgICAgICAgICd0ZW5hbnQnOiB1c2VySW5mb3JtYXRpb24udGVuYW50TmFtZSxcclxuICAgICAgICAgICdwYXBlbCc6IHJvbGVzLFxyXG4gICAgICAgICAgJ2RldmljZSc6IGJyb3dzZXIsXHJcbiAgICAgICAgICAndWYnOiAnJyxcclxuICAgICAgICAgICdTQU0nOiAhaGFzSW50ZWdyYXRlZFJvbGUuaGFzSW50ZWdyYXRlZFJvbGUsXHJcbiAgICAgICAgICAnR0FTJzogaGFzSW50ZWdyYXRlZFJvbGUuaGFzSW50ZWdyYXRlZFJvbGUsXHJcbiAgICAgICAgICAnR2VzdGFvSW5jaWRlbnRlcyc6ICcnLFxyXG4gICAgICAgICAgJ0NhbWVyYXMnOiAnJyxcclxuICAgICAgICAgICdQb3J0YXJpYVZpcnR1YWwnOiAnJyxcclxuICAgICAgICAgICdBdXRvYXRlbmRpbWVudG8nOiAnJyxcclxuICAgICAgICAgICdwYWdpbmEnOiBwYWdlVXJsLFxyXG4gICAgICAgICAgJ0lEIEVSUCc6IHRlbmFudEluZm9ybWF0aW9uLmVycENvZGVcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICAgIC8vIFNlZ3VpbmRvIG8gZXhlbXBsbyBkYSBhcnF1aXRlcmEuXHJcbiAgICAgIC8vIEZvbnRlIG7Do28gc2Vyw6EgYWx0ZXJhZG8gbmVzdGEgdGFzaztcclxuICAgICAgbGV0IGU7XHJcbiAgICAgIGNvbnN0IGMgPSBmLmdldEVsZW1lbnRzQnlUYWdOYW1lKGIpWzBdO1xyXG4gICAgICBpZiAoZi5nZXRFbGVtZW50QnlJZChnKSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBlID0gZi5jcmVhdGVFbGVtZW50KGIpO1xyXG4gICAgICBlLmlkID0gZztcclxuICAgICAgZS5zcmMgPSAnaHR0cHM6Ly9jZG4udHJhY2tzYWxlLmNvL3RyYWNrc2FsZS1qcy90cmFja3NhbGUuanMnO1xyXG4gICAgICBlLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JztcclxuICAgICAgZS5hc3luYyA9IHRydWU7XHJcbiAgICAgIGUub25sb2FkID0gZS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgY29uc3QgaCA9IHRoaXMucmVhZHlTdGF0ZTtcclxuICAgICAgICBpZiAoaCAmJiBoICE9PSAnY29tcGxldGUnICYmIGggIT09ICdsb2FkZWQnKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBjb25zdCBkID0gbmV3IFRyYWNrc2FsZSgpO1xyXG4gICAgICAgICAgZC5pbml0KGEpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGkpIHsgfVxyXG4gICAgICB9O1xyXG4gICAgICBjLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGUsIGMpO1xyXG4gICAgfShkb2N1bWVudCwgJ3NjcmlwdCcsICd0cmFja3NhbGUtanMnKSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
351
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FtLXV0aWxzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2FtLXNlbmlvci9zYW0tdXRpbHMvIiwic291cmNlcyI6WyJsaWIvc2FtLXV0aWxzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBYy9ELE1BQU0sT0FBTyxlQUFlOzs7O0lBSTFCLFlBQ1UsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUM1QixDQUFDOzs7OztJQUVFLGdCQUFnQixDQUFDLFFBQVE7UUFDOUIsT0FBTyxRQUFRLENBQUMsR0FBRzs7OztRQUFDLE9BQU8sQ0FBQyxFQUFFOztnQkFDeEIsR0FBRyxHQUFHLE9BQU87WUFDakIsSUFBSTs7c0JBQ0ksRUFBRSxHQUFHLG1CQUFBLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBTztnQkFDckMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxLQUFLLEVBQUU7b0JBQzFCLEdBQUcsR0FBRyxNQUFNLENBQUM7aUJBQ2Q7YUFDRjtZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNWLEdBQUcsR0FBRyxPQUFPLENBQUM7YUFDZjtZQUNELE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxFQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2YsQ0FBQzs7Ozs7SUFFWSxpQkFBaUIsQ0FBQyxPQUFlOzs7a0JBQ3RDLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxTQUFTLEVBQUU7WUFDbkQsSUFBSSxDQUFDLEtBQUssRUFBRSxpQkFBaUIsRUFBRTtnQkFDN0IsVUFBVSxFQUFFLE9BQU87Z0JBQ25CLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVTtnQkFDdkIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2FBQ3hCLENBQUMsQ0FBQztRQUNMLENBQUM7S0FBQTs7Ozs7O0lBRU0sV0FBVyxDQUFDLElBQVksRUFBRSxPQUFlO1FBQzlDLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUU7WUFDckQsZUFBZSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7O2tCQUM1QixpQkFBaUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN2RCxJQUFJLENBQUMsZUFBZSxDQUFDLHlCQUF5QixFQUFFO2dCQUM5QyxVQUFVLEVBQUUsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7Z0JBQ3RDLElBQUksRUFBRSxJQUFJO2FBQ1gsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNwQjtJQUNILENBQUM7Ozs7SUFFTSxVQUFVO1FBQ2YsSUFBSTs7a0JBQ0ksTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU07Ozs7WUFBQyxTQUFTLENBQUMsRUFBRTtnQkFDM0QsT0FBTyxTQUFTLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDbkQsQ0FBQyxFQUFDO1lBQ0YsT0FBTyxrQkFBa0IsQ0FDdkIsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDeEIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDaEI7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNaLE1BQU0sS0FBSyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7U0FDdkQ7SUFDSCxDQUFDOzs7Ozs7O0lBRVksZUFBZSxDQUFDLFNBQWlCLEVBQUUsTUFBVyxFQUFFLE9BQWdCOzs7a0JBQ3JFLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxTQUFTLEVBQUU7WUFDbkQsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLGtDQUNsQixNQUFNLEtBQ1QsV0FBVyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFDOUIsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQ25CLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUN4QixPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQzNDLFVBQVUsRUFBRSxJQUFJLElBQ2hCLENBQUM7UUFDTCxDQUFDO0tBQUE7Ozs7OztJQUVNLHlCQUF5QixDQUFJLEtBQUs7UUFDdkMsT0FBTyxJQUFJLFVBQVU7Ozs7UUFBSSxRQUFRLENBQUMsRUFBRTtZQUNsQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JCLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN0QixDQUFDLEVBQUMsQ0FBQztJQUNMLENBQUM7Ozs7O0lBR00sVUFBVTtRQUNmLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxhQUFhO1lBQ2hJLE9BQU8sT0FBTyxDQUFDO1NBQ2hCO2FBQU0sSUFBSSxPQUFPLGNBQWMsS0FBSyxXQUFXLEVBQUUsRUFBRSxlQUFlO1lBQ2pFLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO2FBQU0sSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLG1CQUFBLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBTyxDQUFDLElBQUk7Ozs7UUFBQyxVQUFVLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxtQ0FBbUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsRUFBRSxnREFBZ0Q7WUFDbFIsT0FBTyxRQUFRLENBQUM7U0FDakI7YUFBTSxLQUFJLFlBQVksS0FBSyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSx5QkFBeUI7WUFDckYsT0FBTyxtQkFBbUIsQ0FBQztTQUM1QjthQUFNLElBQUksQ0FBQyxFQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsVUFBVTtZQUNuRyxPQUFPLE1BQU0sQ0FBQztTQUNmO2FBQU0sSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUMsWUFBWTtZQUMxQyxPQUFPLFFBQVEsQ0FBQztTQUNqQjtRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7Ozs7O0lBR00sY0FBYztRQUNuQixJQUFJOztrQkFDSSxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTTs7OztZQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUN2RCxPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUMseUJBQXlCLENBQUMsQ0FBQztZQUN2RCxDQUFDLEVBQUM7WUFDRixPQUFPLGtCQUFrQixDQUN2QixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNwQixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNoQjtRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1osTUFBTSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQztTQUN2RDtJQUNILENBQUM7Ozs7SUFFTSxhQUFhO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLHFDQUFxQyxFQUFFO1lBQzlGLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFO1NBQzNCLENBQUMsQ0FBQztJQUNMLENBQUM7Ozs7O0lBRU0sb0JBQW9CLENBQUMsSUFBSTtRQUM5QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSwwREFBMEQsSUFBSSxFQUFFLEVBQUU7WUFDOUgsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUU7U0FDM0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7Ozs7SUFFTSxtQkFBbUIsQ0FBQyxVQUFrQjtRQUMzQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFvQixHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsNkNBQTZDLEVBQUU7WUFDbkgsTUFBTSxFQUFFO2dCQUNOLFVBQVUsRUFBRSxVQUFVO2FBQ3ZCO1lBQ0QsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUU7U0FDM0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7OztJQUVNLGlCQUFpQjtRQUN0QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUF5QixHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsaURBQWlELEVBQUU7WUFDNUgsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUU7U0FDM0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7Ozs7SUFFTyxVQUFVOztjQUNWLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFO1FBQy9CLE9BQU8sSUFBSSxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLEdBQUcsS0FBSyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUM3RixDQUFDOzs7O0lBRU0sVUFBVTtRQUNmLElBQUk7O2tCQUNJLFdBQVcsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNOzs7O1lBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ2hFLE9BQU8sU0FBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ2hELENBQUMsRUFBQztZQUNGLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNyRTtRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1osTUFBTSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQztTQUN2RDtJQUNILENBQUM7Ozs7Ozs7SUFFWSxTQUFTLENBQUMsWUFBb0IsRUFBRSxpQkFBeUIsRUFBRSxPQUFlOztZQUNyRixJQUFJLENBQUMsQ0FBQyxtQkFBQSxNQUFNLEVBQU8sQ0FBQyxDQUFDLGFBQWEsRUFBRTtnQkFDbEMsT0FBTzthQUNSOztrQkFFSyxlQUFlLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsU0FBUyxFQUFFOztnQkFFMUQsS0FBSyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsbUJBQUEsTUFBTSxFQUFPLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRTs7c0JBQzlCLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxFQUFFO2dCQUNsRixLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDL0I7O2tCQUVLLGlCQUFpQixHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsU0FBUyxFQUFFOztrQkFDOUQsaUJBQWlCLEdBQUcsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsRUFBRTs7a0JBQzFGLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFOztrQkFDM0IsUUFBUSxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7O2tCQUNyRCxLQUFLLEdBQUcsZUFBZSxDQUFDLEtBQUs7WUFDbkMsQ0FBQzs7Ozs7O1lBQUEsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7O3NCQUNWLENBQUMsR0FBRztvQkFDUixHQUFHLEVBQUUsWUFBWTtvQkFDakIsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsS0FBSyxFQUFFLEtBQUs7b0JBQ1osSUFBSSxFQUFFO3dCQUNKLFFBQVEsRUFBRSxlQUFlLENBQUMsVUFBVTt3QkFDcEMsT0FBTyxFQUFFLEtBQUs7d0JBQ2QsUUFBUSxFQUFFLE9BQU87d0JBQ2pCLElBQUksRUFBRSxFQUFFO3dCQUNSLEtBQUssRUFBRSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQjt3QkFDM0MsS0FBSyxFQUFFLGlCQUFpQixDQUFDLGlCQUFpQjt3QkFDMUMsa0JBQWtCLEVBQUUsRUFBRTt3QkFDdEIsU0FBUyxFQUFFLEVBQUU7d0JBQ2IsaUJBQWlCLEVBQUUsRUFBRTt3QkFDckIsaUJBQWlCLEVBQUUsRUFBRTt3QkFDckIsUUFBUSxFQUFFLE9BQU87d0JBQ2pCLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxPQUFPO3FCQUNwQztpQkFDRjs7OztvQkFHRyxDQUFDOztzQkFDQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUN2QixPQUFPO2lCQUNSO2dCQUNELENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDVCxDQUFDLENBQUMsR0FBRyxHQUFHLG9EQUFvRCxDQUFDO2dCQUM3RCxDQUFDLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDO2dCQUMzQixDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztnQkFDZixDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxrQkFBa0I7OztnQkFBRzs7MEJBQzFCLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVTtvQkFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLFVBQVUsSUFBSSxDQUFDLEtBQUssUUFBUSxFQUFFO3dCQUMzQyxPQUFPO3FCQUNSO29CQUNELElBQUk7OzhCQUNJLENBQUMsR0FBRyxJQUFJLFNBQVMsRUFBRTt3QkFDekIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDWDtvQkFBQyxPQUFPLENBQUMsRUFBRSxHQUFHO2dCQUNqQixDQUFDLENBQUEsQ0FBQztnQkFDRixDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbEMsQ0FBQyxFQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztRQUN6QyxDQUFDO0tBQUE7O0FBbk5jLDBCQUFVLEdBQUcsS0FBSyxDQUFDOztZQUxuQyxVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7Ozs7WUFiUSxVQUFVOzs7Ozs7OztJQWdCakIsMkJBQWtDOzs7OztJQUdoQyxxQ0FBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuL3VzZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBVc2VyUm9sZXMgfSBmcm9tICcuL3VzZXItcm9sZXMubW9kZWwnO1xyXG5pbXBvcnQgeyBIYXNJbnRlZ3JhdGVkUm9sZU1vZGVsIH0gZnJvbSAnLi9oYXMtaW50ZWdyYXRlZC1yb2xlLm1vZGVsJztcclxuaW1wb3J0IHsgVGVuYW50SW5mb3JtYXRpb24gfSBmcm9tICcuL3RlbmFudC1pbmZvcm1hdGlvbic7XHJcblxyXG5kZWNsYXJlIGNvbnN0IEluc3RhbGxUcmlnZ2VyOiBhbnk7XHJcbmRlY2xhcmUgY29uc3Qgc2FmYXJpOiBhbnk7XHJcbmRlY2xhcmUgY29uc3QgVHJhY2tzYWxlOiBhbnk7XHJcbmRlY2xhcmUgbGV0IGd0YWc6IEZ1bmN0aW9uO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU2FtVXRpbHNTZXJ2aWNlIHtcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgSEFTX0xPQURFRCA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudFxyXG4gICkgeyB9XHJcblxyXG4gIHB1YmxpYyBnZXRVcmxXaXRob3V0SWRzKHVybFBhcnRzKSB7XHJcbiAgICByZXR1cm4gdXJsUGFydHMubWFwKHVybFBhcnQgPT4ge1xyXG4gICAgICBsZXQgdXJsID0gdXJsUGFydDtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBjb25zdCBpZCA9IHBhcnNlRmxvYXQodXJsUGFydCkgYXMgYW55O1xyXG4gICAgICAgIGlmIChpZCA+IDAgfHwgaWQgPT09ICduZXcnKSB7XHJcbiAgICAgICAgICB1cmwgPSAne2lkfSc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGNhdGNoIChfKSB7XHJcbiAgICAgICAgdXJsID0gdXJsUGFydDtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdXJsO1xyXG4gICAgfSkuam9pbignLycpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHNldFVzZXJQcm9wZXJ0aWVzKHByb2R1Y3Q6IHN0cmluZykge1xyXG4gICAgY29uc3QgdXNlciA9IGF3YWl0IHRoaXMuZ2V0QWN0aXZlVXNlcigpLnRvUHJvbWlzZSgpO1xyXG4gICAgZ3RhZygnc2V0JywgJ3VzZXJfcHJvcGVydGllcycsIHtcclxuICAgICAgcHJvZHVjdF9nNzogcHJvZHVjdCxcclxuICAgICAgdGVuYW50OiB1c2VyLnRlbmFudE5hbWUsXHJcbiAgICAgIHVzZXJuYW1lOiB1c2VyLnVzZXJuYW1lXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwYWdlTG9hZGluZyhwYWdlOiBzdHJpbmcsIHByb2R1Y3Q6IHN0cmluZykge1xyXG4gICAgaWYgKCFTYW1VdGlsc1NlcnZpY2UuSEFTX0xPQURFRCAmJiB3aW5kb3cucGVyZm9ybWFuY2UpIHtcclxuICAgICAgU2FtVXRpbHNTZXJ2aWNlLkhBU19MT0FERUQgPSB0cnVlO1xyXG4gICAgICBjb25zdCB0aW1lU2luY2VQYWdlTG9hZCA9IE1hdGgucm91bmQocGVyZm9ybWFuY2Uubm93KCkpO1xyXG4gICAgICB0aGlzLnNlbmRUb0FuYWx5dGljcygndGVtcG9fY2FycmVnYW1lbnRvX3RlbGEnLCB7XHJcbiAgICAgICAgdGltZV92YWx1ZTogKHRpbWVTaW5jZVBhZ2VMb2FkIC8gMTAwMCksXHJcbiAgICAgICAgcGFnZTogcGFnZVxyXG4gICAgICB9LCBwcm9kdWN0KS50aGVuKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0QmFzZVVSTCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGNvb2tpZSA9IGRvY3VtZW50LmNvb2tpZS5zcGxpdCgnOycpLmZpbHRlcihjb29raWVTdHIgPT4ge1xyXG4gICAgICAgIHJldHVybiBjb29raWVTdHIuaW5jbHVkZXMoJ2NvbS5zZW5pb3IuYmFzZS51cmwnKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoXHJcbiAgICAgICAgY29va2llWzBdLnNwbGl0KCc9JylbMV1cclxuICAgICAgKS5zbGljZSgwLCAtMSk7XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgdGhyb3cgRXJyb3IoJ1BsYXRmb3JtIEc3IG5vdCBjb25maWd1cmVkIGluIHRoaXMgYXBwJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgc2VuZFRvQW5hbHl0aWNzKGV2ZW50TmFtZTogc3RyaW5nLCBwYXJhbXM6IGFueSwgcHJvZHVjdD86IHN0cmluZykge1xyXG4gICAgY29uc3QgdXNlciA9IGF3YWl0IHRoaXMuZ2V0QWN0aXZlVXNlcigpLnRvUHJvbWlzZSgpO1xyXG4gICAgZ3RhZygnZXZlbnQnLCBldmVudE5hbWUsIHtcclxuICAgICAgLi4ucGFyYW1zLFxyXG4gICAgICBlbnZpcm9ubWVudDogdGhpcy5nZXRCYXNlVVJMKCksXHJcbiAgICAgIHVzZXI6IHVzZXIudXNlcm5hbWUsXHJcbiAgICAgIHRlbnRhbnQ6IHVzZXIudGVuYW50TmFtZSxcclxuICAgICAgcHJvZHVjdDogcHJvZHVjdCA/IHByb2R1Y3QgOiBwYXJhbXMucHJvZHVjdCxcclxuICAgICAgZGVidWdfbW9kZTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY3JlYXRlT2JzZXJ2YWJsZVdpdGhWYWx1ZTxUPih2YWx1ZSkge1xyXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPFQ+KG9ic2VydmVyID0+IHtcclxuICAgICAgb2JzZXJ2ZXIubmV4dCh2YWx1ZSk7XHJcbiAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qIHRzbGludDpkaXNhYmxlICovXHJcbiAgcHVibGljIGdldEJyb3dzZXIoKTogc3RyaW5nIHtcclxuICAgIGlmICgoISF3aW5kb3dbJ29wciddICYmICEhd2luZG93WydvcHInXS5hZGRvbnMpIHx8ICEhd2luZG93WydvcGVyYSddIHx8IG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignIE9QUi8nKSA+PSAwKSB7IC8vIE9wZXJhIDguMCtcclxuICAgICAgcmV0dXJuICdPcGVyYSc7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBJbnN0YWxsVHJpZ2dlciAhPT0gJ3VuZGVmaW5lZCcpIHsgLy8gRmlyZWZveCAxLjArXHJcbiAgICAgIHJldHVybiAnRmlyZWZveCc7XHJcbiAgICB9IGVsc2UgaWYgKC9jb25zdHJ1Y3Rvci9pLnRlc3Qod2luZG93WydIVE1MRWxlbWVudCddIGFzIGFueSkgfHwgKGZ1bmN0aW9uIChwKSB7IHJldHVybiBwLnRvU3RyaW5nKCkgPT09IFwiW29iamVjdCBTYWZhcmlSZW1vdGVOb3RpZmljYXRpb25dXCI7IH0pKCF3aW5kb3dbJ3NhZmFyaSddIHx8ICh0eXBlb2Ygc2FmYXJpICE9PSAndW5kZWZpbmVkJyAmJiBzYWZhcmkucHVzaE5vdGlmaWNhdGlvbikpKSB7IC8vIFNhZmFyaSAzLjArIFwiW29iamVjdCBIVE1MRWxlbWVudENvbnN0cnVjdG9yXVwiXHJcbiAgICAgIHJldHVybiAnU2FmYXJpJztcclxuICAgIH0gZWxzZSBpZiAoLypAY2Nfb24hQCovZmFsc2UgfHwgISFkb2N1bWVudFsnZG9jdW1lbnRNb2RlJ10pIHsgLy8gSW50ZXJuZXQgRXhwbG9yZXIgNi0xMVxyXG4gICAgICByZXR1cm4gJ0ludGVybmV0IEV4cGxvcmVyJztcclxuICAgIH0gZWxzZSBpZiAoISgvKkBjY19vbiFAKi9mYWxzZSB8fCAhIWRvY3VtZW50Wydkb2N1bWVudE1vZGUnXSkgJiYgISF3aW5kb3dbJ1N0eWxlTWVkaWEnXSkgeyAvL0VkZ2UgMjArXHJcbiAgICAgIHJldHVybiAnRWRnZSc7XHJcbiAgICB9IGVsc2UgaWYgKCEhd2luZG93WydjaHJvbWUnXSkgey8vIENocm9tZSAxK1xyXG4gICAgICByZXR1cm4gJ0Nocm9tZSc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJ3Vua25vd24nO1xyXG4gIH1cclxuICAvKiB0c2xpbnQ6ZW5hYmxlICovXHJcblxyXG4gIHB1YmxpYyBnZXRHN0JyaWRnZVVSTCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGR0ID0gZG9jdW1lbnQuY29va2llLnNwbGl0KCc7JykuZmlsdGVyKGNvb2tpZVN0ciA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGNvb2tpZVN0ci5pbmNsdWRlcygnY29tLnNlbmlvci5zZXJ2aWNlcy51cmwnKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoXHJcbiAgICAgICAgZHRbMF0uc3BsaXQoJz0nKVsxXVxyXG4gICAgICApLnNsaWNlKDAsIC0xKTtcclxuICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICB0aHJvdyBFcnJvcignUGxhdGZvcm0gRzcgbm90IGNvbmZpZ3VyZWQgaW4gdGhpcyBhcHAnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRBY3RpdmVVc2VyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8VXNlcj4oYCR7dGhpcy5nZXRHN0JyaWRnZVVSTCgpfS9yZXN0L3BsYXRmb3JtL3VzZXIvcXVlcmllcy9nZXRVc2VyYCwge1xyXG4gICAgICBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Um9sZXNCeUFjdGl2ZVVzZXIodXNlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8VXNlclJvbGVzPihgJHt0aGlzLmdldEc3QnJpZGdlVVJMKCl9L3Jlc3QvcGxhdGZvcm0vYXV0aG9yaXphdGlvbi9xdWVyaWVzL2dldFVzZXJSb2xlcz91c2VyPSR7dXNlcn1gLCB7XHJcbiAgICAgIGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRUZW5hdEluZm9ybWF0aW9uKHNjaGVtYU5hbWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8VGVuYW50SW5mb3JtYXRpb24+KGAke3RoaXMuZ2V0RzdCcmlkZ2VVUkwoKX0vcmVzdC9zYW0vYWRtaW5pc3RyYXRpb24vcXVlcmllcy9nZXRFcnBDb2RlYCwge1xyXG4gICAgICBwYXJhbXM6IHtcclxuICAgICAgICBzY2hlbWFOYW1lOiBzY2hlbWFOYW1lXHJcbiAgICAgIH0sXHJcbiAgICAgIGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYXNJbnRlZ3JhdGVkUm9sZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PEhhc0ludGVncmF0ZWRSb2xlTW9kZWw+KGAke3RoaXMuZ2V0RzdCcmlkZ2VVUkwoKX0vcmVzdC9zYW0vYXBwbGljYXRpb24vcXVlcmllcy9oYXNJbnRlZ3JhdGVkUm9sZWAsIHtcclxuICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKClcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRIZWFkZXJzKCkge1xyXG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLmdldEc3VG9rZW4oKTtcclxuICAgIHJldHVybiBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0F1dGhvcml6YXRpb24nLCBgJHt0b2tlbi50b2tlbl90eXBlfSAke3Rva2VuLmFjY2Vzc190b2tlbn1gKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRHN1Rva2VuKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3Qgc2VuaW9yVG9rZW4gPSBkb2N1bWVudC5jb29raWUuc3BsaXQoJzsnKS5maWx0ZXIoY29va2llU3RyID0+IHtcclxuICAgICAgICByZXR1cm4gY29va2llU3RyLmluY2x1ZGVzKCdjb20uc2VuaW9yLnRva2VuJyk7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShkZWNvZGVVUklDb21wb25lbnQoc2VuaW9yVG9rZW5bMF0uc3BsaXQoJz0nKVsxXSkpO1xyXG4gICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgIHRocm93IEVycm9yKCdQbGF0Zm9ybSBHNyBub3QgY29uZmlndXJlZCBpbiB0aGlzIGFwcCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHRyYWNrU2FsZSh0cmFja3NhbGVLZXk6IHN0cmluZywgdHJhY2tzYWxlQ2FtcGFpZ246IHN0cmluZywgcGFnZVVybDogc3RyaW5nKSB7XHJcbiAgICBpZiAoISh3aW5kb3cgYXMgYW55KS5zaG93X3RhY2tzYWxlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB1c2VySW5mb3JtYXRpb24gPSBhd2FpdCB0aGlzLmdldEFjdGl2ZVVzZXIoKS50b1Byb21pc2UoKTtcclxuXHJcbiAgICBsZXQgcm9sZXMgPSAnJztcclxuICAgIGlmICgod2luZG93IGFzIGFueSkuY2FuX2NhcHR1cmVfcm9sZSkge1xyXG4gICAgICBjb25zdCByb2xlID0gYXdhaXQgdGhpcy5nZXRSb2xlc0J5QWN0aXZlVXNlcih1c2VySW5mb3JtYXRpb24udXNlcm5hbWUpLnRvUHJvbWlzZSgpO1xyXG4gICAgICByb2xlcyA9IHJvbGUucm9sZXMuam9pbignLCAnKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBoYXNJbnRlZ3JhdGVkUm9sZSA9IGF3YWl0IHRoaXMuaGFzSW50ZWdyYXRlZFJvbGUoKS50b1Byb21pc2UoKTtcclxuICAgIGNvbnN0IHRlbmFudEluZm9ybWF0aW9uID0gYXdhaXQgdGhpcy5nZXRUZW5hdEluZm9ybWF0aW9uKHVzZXJJbmZvcm1hdGlvbi50ZW5hbnROYW1lKS50b1Byb21pc2UoKTtcclxuICAgIGNvbnN0IGJyb3dzZXIgPSB0aGlzLmdldEJyb3dzZXIoKTtcclxuICAgIGNvbnN0IGZ1bGxuYW1lID0gdXNlckluZm9ybWF0aW9uLmZ1bGxOYW1lLnJlcGxhY2UoJysnLCAnICcpO1xyXG4gICAgY29uc3QgZW1haWwgPSB1c2VySW5mb3JtYXRpb24uZW1haWw7XHJcbiAgICAoZnVuY3Rpb24gKGYsIGIsIGcpIHtcclxuICAgICAgY29uc3QgYSA9IHtcclxuICAgICAgICBrZXk6IHRyYWNrc2FsZUtleSxcclxuICAgICAgICBjYW1wYWlnbjogdHJhY2tzYWxlQ2FtcGFpZ24sXHJcbiAgICAgICAgbmFtZTogZnVsbG5hbWUsXHJcbiAgICAgICAgZW1haWw6IGVtYWlsLFxyXG4gICAgICAgIHRhZ3M6IHtcclxuICAgICAgICAgICd0ZW5hbnQnOiB1c2VySW5mb3JtYXRpb24udGVuYW50TmFtZSxcclxuICAgICAgICAgICdwYXBlbCc6IHJvbGVzLFxyXG4gICAgICAgICAgJ2RldmljZSc6IGJyb3dzZXIsXHJcbiAgICAgICAgICAndWYnOiAnJyxcclxuICAgICAgICAgICdTQU0nOiAhaGFzSW50ZWdyYXRlZFJvbGUuaGFzSW50ZWdyYXRlZFJvbGUsXHJcbiAgICAgICAgICAnR0FTJzogaGFzSW50ZWdyYXRlZFJvbGUuaGFzSW50ZWdyYXRlZFJvbGUsXHJcbiAgICAgICAgICAnR2VzdGFvSW5jaWRlbnRlcyc6ICcnLFxyXG4gICAgICAgICAgJ0NhbWVyYXMnOiAnJyxcclxuICAgICAgICAgICdQb3J0YXJpYVZpcnR1YWwnOiAnJyxcclxuICAgICAgICAgICdBdXRvYXRlbmRpbWVudG8nOiAnJyxcclxuICAgICAgICAgICdwYWdpbmEnOiBwYWdlVXJsLFxyXG4gICAgICAgICAgJ0lEIEVSUCc6IHRlbmFudEluZm9ybWF0aW9uLmVycENvZGVcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICAgIC8vIFNlZ3VpbmRvIG8gZXhlbXBsbyBkYSBhcnF1aXRlcmEuXHJcbiAgICAgIC8vIEZvbnRlIG7Do28gc2Vyw6EgYWx0ZXJhZG8gbmVzdGEgdGFzaztcclxuICAgICAgbGV0IGU7XHJcbiAgICAgIGNvbnN0IGMgPSBmLmdldEVsZW1lbnRzQnlUYWdOYW1lKGIpWzBdO1xyXG4gICAgICBpZiAoZi5nZXRFbGVtZW50QnlJZChnKSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBlID0gZi5jcmVhdGVFbGVtZW50KGIpO1xyXG4gICAgICBlLmlkID0gZztcclxuICAgICAgZS5zcmMgPSAnaHR0cHM6Ly9jZG4udHJhY2tzYWxlLmNvL3RyYWNrc2FsZS1qcy90cmFja3NhbGUuanMnO1xyXG4gICAgICBlLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JztcclxuICAgICAgZS5hc3luYyA9IHRydWU7XHJcbiAgICAgIGUub25sb2FkID0gZS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgY29uc3QgaCA9IHRoaXMucmVhZHlTdGF0ZTtcclxuICAgICAgICBpZiAoaCAmJiBoICE9PSAnY29tcGxldGUnICYmIGggIT09ICdsb2FkZWQnKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBjb25zdCBkID0gbmV3IFRyYWNrc2FsZSgpO1xyXG4gICAgICAgICAgZC5pbml0KGEpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGkpIHsgfVxyXG4gICAgICB9O1xyXG4gICAgICBjLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGUsIGMpO1xyXG4gICAgfShkb2N1bWVudCwgJ3NjcmlwdCcsICd0cmFja3NhbGUtanMnKSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -2,11 +2,10 @@
2
2
  * @fileoverview added by tsickle
3
3
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
4
  */
5
- import * as tslib_1 from "tslib";
5
+ import { __assign, __awaiter, __generator } from "tslib";
6
6
  import { Injectable } from '@angular/core';
7
7
  import { Observable } from 'rxjs';
8
8
  import { HttpClient, HttpHeaders } from '@angular/common/http';
9
- import { map } from 'rxjs/operators';
10
9
  import * as i0 from "@angular/core";
11
10
  import * as i1 from "@angular/common/http";
12
11
  var SamUtilsService = /** @class */ (function () {
@@ -51,9 +50,9 @@ var SamUtilsService = /** @class */ (function () {
51
50
  * @return {?}
52
51
  */
53
52
  function (product) {
54
- return tslib_1.__awaiter(this, void 0, void 0, function () {
53
+ return __awaiter(this, void 0, void 0, function () {
55
54
  var user;
56
- return tslib_1.__generator(this, function (_a) {
55
+ return __generator(this, function (_a) {
57
56
  switch (_a.label) {
58
57
  case 0: return [4 /*yield*/, this.getActiveUser().toPromise()];
59
58
  case 1:
@@ -124,14 +123,14 @@ var SamUtilsService = /** @class */ (function () {
124
123
  * @return {?}
125
124
  */
126
125
  function (eventName, params, product) {
127
- return tslib_1.__awaiter(this, void 0, void 0, function () {
126
+ return __awaiter(this, void 0, void 0, function () {
128
127
  var user;
129
- return tslib_1.__generator(this, function (_a) {
128
+ return __generator(this, function (_a) {
130
129
  switch (_a.label) {
131
130
  case 0: return [4 /*yield*/, this.getActiveUser().toPromise()];
132
131
  case 1:
133
132
  user = _a.sent();
134
- gtag('event', eventName, tslib_1.__assign({}, params, { environment: this.getBaseURL(), user: user.username, tentant: user.tenantName, product: product ? product : params.product, debug_mode: true }));
133
+ gtag('event', eventName, __assign(__assign({}, params), { environment: this.getBaseURL(), user: user.username, tentant: user.tenantName, product: product ? product : params.product, debug_mode: true }));
135
134
  return [2 /*return*/];
136
135
  }
137
136
  });
@@ -173,7 +172,7 @@ var SamUtilsService = /** @class */ (function () {
173
172
  else if (typeof InstallTrigger !== 'undefined') { // Firefox 1.0+
174
173
  return 'Firefox';
175
174
  }
176
- else if (/constructor/i.test(window['HTMLElement']) || ((/**
175
+ else if (/constructor/i.test((/** @type {?} */ (window['HTMLElement']))) || ((/**
177
176
  * @param {?} p
178
177
  * @return {?}
179
178
  */
@@ -223,18 +222,9 @@ var SamUtilsService = /** @class */ (function () {
223
222
  * @return {?}
224
223
  */
225
224
  function () {
226
- if (!SamUtilsService.ACTIVE_USER) {
227
- return (/** @type {?} */ (this.httpClient.get(this.getG7BridgeURL() + "/rest/platform/user/queries/getUser", {
228
- headers: this.getHeaders()
229
- }).pipe(map((/**
230
- * @param {?} user
231
- * @return {?}
232
- */
233
- function (user) { return SamUtilsService.ACTIVE_USER = user; })))));
234
- }
235
- else {
236
- return this.createObservableWithValue(SamUtilsService.ACTIVE_USER);
237
- }
225
+ return this.httpClient.get(this.getG7BridgeURL() + "/rest/platform/user/queries/getUser", {
226
+ headers: this.getHeaders()
227
+ });
238
228
  };
239
229
  /**
240
230
  * @param {?} user
@@ -324,9 +314,9 @@ var SamUtilsService = /** @class */ (function () {
324
314
  * @return {?}
325
315
  */
326
316
  function (tracksaleKey, tracksaleCampaign, pageUrl) {
327
- return tslib_1.__awaiter(this, void 0, void 0, function () {
317
+ return __awaiter(this, void 0, void 0, function () {
328
318
  var userInformation, roles, role, hasIntegratedRole, tenantInformation, browser, fullname, email;
329
- return tslib_1.__generator(this, function (_a) {
319
+ return __generator(this, function (_a) {
330
320
  switch (_a.label) {
331
321
  case 0:
332
322
  if (!((/** @type {?} */ (window))).show_tacksale) {
@@ -417,7 +407,6 @@ var SamUtilsService = /** @class */ (function () {
417
407
  });
418
408
  };
419
409
  SamUtilsService.HAS_LOADED = false;
420
- SamUtilsService.ACTIVE_USER = null;
421
410
  SamUtilsService.decorators = [
422
411
  { type: Injectable, args: [{
423
412
  providedIn: 'root'
@@ -427,7 +416,7 @@ var SamUtilsService = /** @class */ (function () {
427
416
  SamUtilsService.ctorParameters = function () { return [
428
417
  { type: HttpClient }
429
418
  ]; };
430
- /** @nocollapse */ SamUtilsService.ngInjectableDef = i0.defineInjectable({ factory: function SamUtilsService_Factory() { return new SamUtilsService(i0.inject(i1.HttpClient)); }, token: SamUtilsService, providedIn: "root" });
419
+ /** @nocollapse */ SamUtilsService.ɵprov = i0.ɵɵdefineInjectable({ factory: function SamUtilsService_Factory() { return new SamUtilsService(i0.ɵɵinject(i1.HttpClient)); }, token: SamUtilsService, providedIn: "root" });
431
420
  return SamUtilsService;
432
421
  }());
433
422
  export { SamUtilsService };
@@ -437,15 +426,10 @@ if (false) {
437
426
  * @private
438
427
  */
439
428
  SamUtilsService.HAS_LOADED;
440
- /**
441
- * @type {?}
442
- * @private
443
- */
444
- SamUtilsService.ACTIVE_USER;
445
429
  /**
446
430
  * @type {?}
447
431
  * @private
448
432
  */
449
433
  SamUtilsService.prototype.httpClient;
450
434
  }
451
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FtLXV0aWxzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2FtLXNlbmlvci9zYW0tdXRpbHMvIiwic291cmNlcyI6WyJsaWIvc2FtLXV0aWxzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUsvRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQU9yQztJQVFFLHlCQUNVLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7SUFDNUIsQ0FBQzs7Ozs7SUFFRSwwQ0FBZ0I7Ozs7SUFBdkIsVUFBd0IsUUFBUTtRQUM5QixPQUFPLFFBQVEsQ0FBQyxHQUFHOzs7O1FBQUMsVUFBQSxPQUFPOztnQkFDckIsR0FBRyxHQUFHLE9BQU87WUFDakIsSUFBSTs7b0JBQ0ksRUFBRSxHQUFHLG1CQUFBLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBTztnQkFDckMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxLQUFLLEVBQUU7b0JBQzFCLEdBQUcsR0FBRyxNQUFNLENBQUM7aUJBQ2Q7YUFDRjtZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNWLEdBQUcsR0FBRyxPQUFPLENBQUM7YUFDZjtZQUNELE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxFQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2YsQ0FBQzs7Ozs7SUFFWSwyQ0FBaUI7Ozs7SUFBOUIsVUFBK0IsT0FBZTs7Ozs7NEJBQy9CLHFCQUFNLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxTQUFTLEVBQUUsRUFBQTs7d0JBQTdDLElBQUksR0FBRyxTQUFzQzt3QkFDbkQsSUFBSSxD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Q0FBQyxDQUFDLENBQUM7d0JBQ2xDLENBQUMsRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7Ozs7O0tBQ3hDO0lBeE5jLDBCQUFVLEdBQUcsS0FBSyxDQUFDO0lBQ25CLDJCQUFXLEdBQUcsSUFBSSxDQUFDOztnQkFObkMsVUFBVSxTQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7OztnQkFkUSxVQUFVOzs7MEJBRm5CO0NBNE9DLEFBOU5ELElBOE5DO1NBM05ZLGVBQWU7Ozs7OztJQUUxQiwyQkFBa0M7Ozs7O0lBQ2xDLDRCQUFrQzs7Ozs7SUFHaEMscUNBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi91c2VyLm1vZGVsJztcclxuaW1wb3J0IHsgVXNlclJvbGVzIH0gZnJvbSAnLi91c2VyLXJvbGVzLm1vZGVsJztcclxuaW1wb3J0IHsgSGFzSW50ZWdyYXRlZFJvbGVNb2RlbCB9IGZyb20gJy4vaGFzLWludGVncmF0ZWQtcm9sZS5tb2RlbCc7XHJcbmltcG9ydCB7IFRlbmFudEluZm9ybWF0aW9uIH0gZnJvbSAnLi90ZW5hbnQtaW5mb3JtYXRpb24nO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5kZWNsYXJlIGNvbnN0IEluc3RhbGxUcmlnZ2VyOiBhbnk7XHJcbmRlY2xhcmUgY29uc3Qgc2FmYXJpOiBhbnk7XHJcbmRlY2xhcmUgY29uc3QgVHJhY2tzYWxlOiBhbnk7XHJcbmRlY2xhcmUgbGV0IGd0YWc6IEZ1bmN0aW9uO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU2FtVXRpbHNTZXJ2aWNlIHtcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgSEFTX0xPQURFRCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgc3RhdGljIEFDVElWRV9VU0VSID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnRcclxuICApIHsgfVxyXG5cclxuICBwdWJsaWMgZ2V0VXJsV2l0aG91dElkcyh1cmxQYXJ0cykge1xyXG4gICAgcmV0dXJuIHVybFBhcnRzLm1hcCh1cmxQYXJ0ID0+IHtcclxuICAgICAgbGV0IHVybCA9IHVybFBhcnQ7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgaWQgPSBwYXJzZUZsb2F0KHVybFBhcnQpIGFzIGFueTtcclxuICAgICAgICBpZiAoaWQgPiAwIHx8IGlkID09PSAnbmV3Jykge1xyXG4gICAgICAgICAgdXJsID0gJ3tpZH0nO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBjYXRjaCAoXykge1xyXG4gICAgICAgIHVybCA9IHVybFBhcnQ7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHVybDtcclxuICAgIH0pLmpvaW4oJy8nKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBzZXRVc2VyUHJvcGVydGllcyhwcm9kdWN0OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHVzZXIgPSBhd2FpdCB0aGlzLmdldEFjdGl2ZVVzZXIoKS50b1Byb21pc2UoKTtcclxuICAgIGd0YWcoJ3NldCcsICd1c2VyX3Byb3BlcnRpZXMnLCB7XHJcbiAgICAgIHByb2R1Y3RfZzc6IHByb2R1Y3QsXHJcbiAgICAgIHRlbmFudDogdXNlci50ZW5hbnROYW1lLFxyXG4gICAgICB1c2VybmFtZTogdXNlci51c2VybmFtZVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcGFnZUxvYWRpbmcocGFnZTogc3RyaW5nLCBwcm9kdWN0OiBzdHJpbmcpIHtcclxuICAgIGlmICghU2FtVXRpbHNTZXJ2aWNlLkhBU19MT0FERUQgJiYgd2luZG93LnBlcmZvcm1hbmNlKSB7XHJcbiAgICAgIFNhbVV0aWxzU2VydmljZS5IQVNfTE9BREVEID0gdHJ1ZTtcclxuICAgICAgY29uc3QgdGltZVNpbmNlUGFnZUxvYWQgPSBNYXRoLnJvdW5kKHBlcmZvcm1hbmNlLm5vdygpKTtcclxuICAgICAgdGhpcy5zZW5kVG9BbmFseXRpY3MoJ3RlbXBvX2NhcnJlZ2FtZW50b190ZWxhJywge1xyXG4gICAgICAgIHRpbWVfdmFsdWU6ICh0aW1lU2luY2VQYWdlTG9hZCAvIDEwMDApLFxyXG4gICAgICAgIHBhZ2U6IHBhZ2VcclxuICAgICAgfSwgcHJvZHVjdCkudGhlbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEJhc2VVUkwoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBjb29raWUgPSBkb2N1bWVudC5jb29raWUuc3BsaXQoJzsnKS5maWx0ZXIoY29va2llU3RyID0+IHtcclxuICAgICAgICByZXR1cm4gY29va2llU3RyLmluY2x1ZGVzKCdjb20uc2VuaW9yLmJhc2UudXJsJyk7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KFxyXG4gICAgICAgIGNvb2tpZVswXS5zcGxpdCgnPScpWzFdXHJcbiAgICAgICkuc2xpY2UoMCwgLTEpO1xyXG4gICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgIHRocm93IEVycm9yKCdQbGF0Zm9ybSBHNyBub3QgY29uZmlndXJlZCBpbiB0aGlzIGFwcCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHNlbmRUb0FuYWx5dGljcyhldmVudE5hbWU6IHN0cmluZywgcGFyYW1zOiBhbnksIHByb2R1Y3Q/OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHVzZXIgPSBhd2FpdCB0aGlzLmdldEFjdGl2ZVVzZXIoKS50b1Byb21pc2UoKTtcclxuICAgIGd0YWcoJ2V2ZW50JywgZXZlbnROYW1lLCB7XHJcbiAgICAgIC4uLnBhcmFtcyxcclxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuZ2V0QmFzZVVSTCgpLFxyXG4gICAgICB1c2VyOiB1c2VyLnVzZXJuYW1lLFxyXG4gICAgICB0ZW50YW50OiB1c2VyLnRlbmFudE5hbWUsXHJcbiAgICAgIHByb2R1Y3Q6IHByb2R1Y3QgPyBwcm9kdWN0IDogcGFyYW1zLnByb2R1Y3QsXHJcbiAgICAgIGRlYnVnX21vZGU6IHRydWVcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNyZWF0ZU9ic2VydmFibGVXaXRoVmFsdWU8VD4odmFsdWUpIHtcclxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxUPihvYnNlcnZlciA9PiB7XHJcbiAgICAgIG9ic2VydmVyLm5leHQodmFsdWUpO1xyXG4gICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKiB0c2xpbnQ6ZGlzYWJsZSAqL1xyXG4gIHB1YmxpYyBnZXRCcm93c2VyKCk6IHN0cmluZyB7XHJcbiAgICBpZiAoKCEhd2luZG93WydvcHInXSAmJiAhIXdpbmRvd1snb3ByJ10uYWRkb25zKSB8fCAhIXdpbmRvd1snb3BlcmEnXSB8fCBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJyBPUFIvJykgPj0gMCkgeyAvLyBPcGVyYSA4LjArXHJcbiAgICAgIHJldHVybiAnT3BlcmEnO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgSW5zdGFsbFRyaWdnZXIgIT09ICd1bmRlZmluZWQnKSB7IC8vIEZpcmVmb3ggMS4wK1xyXG4gICAgICByZXR1cm4gJ0ZpcmVmb3gnO1xyXG4gICAgfSBlbHNlIGlmICgvY29uc3RydWN0b3IvaS50ZXN0KHdpbmRvd1snSFRNTEVsZW1lbnQnXSkgfHwgKGZ1bmN0aW9uIChwKSB7IHJldHVybiBwLnRvU3RyaW5nKCkgPT09IFwiW29iamVjdCBTYWZhcmlSZW1vdGVOb3RpZmljYXRpb25dXCI7IH0pKCF3aW5kb3dbJ3NhZmFyaSddIHx8ICh0eXBlb2Ygc2FmYXJpICE9PSAndW5kZWZpbmVkJyAmJiBzYWZhcmkucHVzaE5vdGlmaWNhdGlvbikpKSB7IC8vIFNhZmFyaSAzLjArIFwiW29iamVjdCBIVE1MRWxlbWVudENvbnN0cnVjdG9yXVwiXHJcbiAgICAgIHJldHVybiAnU2FmYXJpJztcclxuICAgIH0gZWxzZSBpZiAoLypAY2Nfb24hQCovZmFsc2UgfHwgISFkb2N1bWVudFsnZG9jdW1lbnRNb2RlJ10pIHsgLy8gSW50ZXJuZXQgRXhwbG9yZXIgNi0xMVxyXG4gICAgICByZXR1cm4gJ0ludGVybmV0IEV4cGxvcmVyJztcclxuICAgIH0gZWxzZSBpZiAoISgvKkBjY19vbiFAKi9mYWxzZSB8fCAhIWRvY3VtZW50Wydkb2N1bWVudE1vZGUnXSkgJiYgISF3aW5kb3dbJ1N0eWxlTWVkaWEnXSkgeyAvL0VkZ2UgMjArXHJcbiAgICAgIHJldHVybiAnRWRnZSc7XHJcbiAgICB9IGVsc2UgaWYgKCEhd2luZG93WydjaHJvbWUnXSkgey8vIENocm9tZSAxK1xyXG4gICAgICByZXR1cm4gJ0Nocm9tZSc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJ3Vua25vd24nO1xyXG4gIH1cclxuICAvKiB0c2xpbnQ6ZW5hYmxlICovXHJcblxyXG4gIHB1YmxpYyBnZXRHN0JyaWRnZVVSTCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGR0ID0gZG9jdW1lbnQuY29va2llLnNwbGl0KCc7JykuZmlsdGVyKGNvb2tpZVN0ciA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGNvb2tpZVN0ci5pbmNsdWRlcygnY29tLnNlbmlvci5zZXJ2aWNlcy51cmwnKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoXHJcbiAgICAgICAgZHRbMF0uc3BsaXQoJz0nKVsxXVxyXG4gICAgICApLnNsaWNlKDAsIC0xKTtcclxuICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICB0aHJvdyBFcnJvcignUGxhdGZvcm0gRzcgbm90IGNvbmZpZ3VyZWQgaW4gdGhpcyBhcHAnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRBY3RpdmVVc2VyKCkge1xyXG4gICAgaWYgKCFTYW1VdGlsc1NlcnZpY2UuQUNUSVZFX1VTRVIpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8VXNlcj4oYCR7dGhpcy5nZXRHN0JyaWRnZVVSTCgpfS9yZXN0L3BsYXRmb3JtL3VzZXIvcXVlcmllcy9nZXRVc2VyYCwge1xyXG4gICAgICAgIGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpXHJcbiAgICAgIH0pLnBpcGUobWFwKHVzZXIgPT4gU2FtVXRpbHNTZXJ2aWNlLkFDVElWRV9VU0VSID0gdXNlcikpIGFzIGFueTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZU9ic2VydmFibGVXaXRoVmFsdWUoU2FtVXRpbHNTZXJ2aWNlLkFDVElWRV9VU0VSKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRSb2xlc0J5QWN0aXZlVXNlcih1c2VyKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxVc2VyUm9sZXM+KGAke3RoaXMuZ2V0RzdCcmlkZ2VVUkwoKX0vcmVzdC9wbGF0Zm9ybS9hdXRob3JpemF0aW9uL3F1ZXJpZXMvZ2V0VXNlclJvbGVzP3VzZXI9JHt1c2VyfWAsIHtcclxuICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKClcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFRlbmF0SW5mb3JtYXRpb24oc2NoZW1hTmFtZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxUZW5hbnRJbmZvcm1hdGlvbj4oYCR7dGhpcy5nZXRHN0JyaWRnZVVSTCgpfS9yZXN0L3NhbS9hZG1pbmlzdHJhdGlvbi9xdWVyaWVzL2dldEVycENvZGVgLCB7XHJcbiAgICAgIHBhcmFtczoge1xyXG4gICAgICAgIHNjaGVtYU5hbWU6IHNjaGVtYU5hbWVcclxuICAgICAgfSxcclxuICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKClcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhc0ludGVncmF0ZWRSb2xlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8SGFzSW50ZWdyYXRlZFJvbGVNb2RlbD4oYCR7dGhpcy5nZXRHN0JyaWRnZVVSTCgpfS9yZXN0L3NhbS9hcHBsaWNhdGlvbi9xdWVyaWVzL2hhc0ludGVncmF0ZWRSb2xlYCwge1xyXG4gICAgICBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEhlYWRlcnMoKSB7XHJcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMuZ2V0RzdUb2tlbigpO1xyXG4gICAgcmV0dXJuIG5ldyBIdHRwSGVhZGVycygpLnNldCgnQXV0aG9yaXphdGlvbicsIGAke3Rva2VuLnRva2VuX3R5cGV9ICR7dG9rZW4uYWNjZXNzX3Rva2VufWApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEc3VG9rZW4oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBzZW5pb3JUb2tlbiA9IGRvY3VtZW50LmNvb2tpZS5zcGxpdCgnOycpLmZpbHRlcihjb29raWVTdHIgPT4ge1xyXG4gICAgICAgIHJldHVybiBjb29raWVTdHIuaW5jbHVkZXMoJ2NvbS5zZW5pb3IudG9rZW4nKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKGRlY29kZVVSSUNvbXBvbmVudChzZW5pb3JUb2tlblswXS5zcGxpdCgnPScpWzFdKSk7XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgdGhyb3cgRXJyb3IoJ1BsYXRmb3JtIEc3IG5vdCBjb25maWd1cmVkIGluIHRoaXMgYXBwJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgdHJhY2tTYWxlKHRyYWNrc2FsZUtleTogc3RyaW5nLCB0cmFja3NhbGVDYW1wYWlnbjogc3RyaW5nLCBwYWdlVXJsOiBzdHJpbmcpIHtcclxuICAgIGlmICghKHdpbmRvdyBhcyBhbnkpLnNob3dfdGFja3NhbGUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHVzZXJJbmZvcm1hdGlvbiA9IGF3YWl0IHRoaXMuZ2V0QWN0aXZlVXNlcigpLnRvUHJvbWlzZSgpO1xyXG5cclxuICAgIGxldCByb2xlcyA9ICcnO1xyXG4gICAgaWYgKCh3aW5kb3cgYXMgYW55KS5jYW5fY2FwdHVyZV9yb2xlKSB7XHJcbiAgICAgIGNvbnN0IHJvbGUgPSBhd2FpdCB0aGlzLmdldFJvbGVzQnlBY3RpdmVVc2VyKHVzZXJJbmZvcm1hdGlvbi51c2VybmFtZSkudG9Qcm9taXNlKCk7XHJcbiAgICAgIHJvbGVzID0gcm9sZS5yb2xlcy5qb2luKCcsICcpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGhhc0ludGVncmF0ZWRSb2xlID0gYXdhaXQgdGhpcy5oYXNJbnRlZ3JhdGVkUm9sZSgpLnRvUHJvbWlzZSgpO1xyXG4gICAgY29uc3QgdGVuYW50SW5mb3JtYXRpb24gPSBhd2FpdCB0aGlzLmdldFRlbmF0SW5mb3JtYXRpb24odXNlckluZm9ybWF0aW9uLnRlbmFudE5hbWUpLnRvUHJvbWlzZSgpO1xyXG4gICAgY29uc3QgYnJvd3NlciA9IHRoaXMuZ2V0QnJvd3NlcigpO1xyXG4gICAgY29uc3QgZnVsbG5hbWUgPSB1c2VySW5mb3JtYXRpb24uZnVsbE5hbWUucmVwbGFjZSgnKycsICcgJyk7XHJcbiAgICBjb25zdCBlbWFpbCA9IHVzZXJJbmZvcm1hdGlvbi5lbWFpbDtcclxuICAgIChmdW5jdGlvbiAoZiwgYiwgZykge1xyXG4gICAgICBjb25zdCBhID0ge1xyXG4gICAgICAgIGtleTogdHJhY2tzYWxlS2V5LFxyXG4gICAgICAgIGNhbXBhaWduOiB0cmFja3NhbGVDYW1wYWlnbixcclxuICAgICAgICBuYW1lOiBmdWxsbmFtZSxcclxuICAgICAgICBlbWFpbDogZW1haWwsXHJcbiAgICAgICAgdGFnczoge1xyXG4gICAgICAgICAgJ3RlbmFudCc6IHVzZXJJbmZvcm1hdGlvbi50ZW5hbnROYW1lLFxyXG4gICAgICAgICAgJ3BhcGVsJzogcm9sZXMsXHJcbiAgICAgICAgICAnZGV2aWNlJzogYnJvd3NlcixcclxuICAgICAgICAgICd1Zic6ICcnLFxyXG4gICAgICAgICAgJ1NBTSc6ICFoYXNJbnRlZ3JhdGVkUm9sZS5oYXNJbnRlZ3JhdGVkUm9sZSxcclxuICAgICAgICAgICdHQVMnOiBoYXNJbnRlZ3JhdGVkUm9sZS5oYXNJbnRlZ3JhdGVkUm9sZSxcclxuICAgICAgICAgICdHZXN0YW9JbmNpZGVudGVzJzogJycsXHJcbiAgICAgICAgICAnQ2FtZXJhcyc6ICcnLFxyXG4gICAgICAgICAgJ1BvcnRhcmlhVmlydHVhbCc6ICcnLFxyXG4gICAgICAgICAgJ0F1dG9hdGVuZGltZW50byc6ICcnLFxyXG4gICAgICAgICAgJ3BhZ2luYSc6IHBhZ2VVcmwsXHJcbiAgICAgICAgICAnSUQgRVJQJzogdGVuYW50SW5mb3JtYXRpb24uZXJwQ29kZVxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgICAgLy8gU2VndWluZG8gbyBleGVtcGxvIGRhIGFycXVpdGVyYS5cclxuICAgICAgLy8gRm9udGUgbsOjbyBzZXLDoSBhbHRlcmFkbyBuZXN0YSB0YXNrO1xyXG4gICAgICBsZXQgZTtcclxuICAgICAgY29uc3QgYyA9IGYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYilbMF07XHJcbiAgICAgIGlmIChmLmdldEVsZW1lbnRCeUlkKGcpKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGUgPSBmLmNyZWF0ZUVsZW1lbnQoYik7XHJcbiAgICAgIGUuaWQgPSBnO1xyXG4gICAgICBlLnNyYyA9ICdodHRwczovL2Nkbi50cmFja3NhbGUuY28vdHJhY2tzYWxlLWpzL3RyYWNrc2FsZS5qcyc7XHJcbiAgICAgIGUudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xyXG4gICAgICBlLmFzeW5jID0gdHJ1ZTtcclxuICAgICAgZS5vbmxvYWQgPSBlLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBjb25zdCBoID0gdGhpcy5yZWFkeVN0YXRlO1xyXG4gICAgICAgIGlmIChoICYmIGggIT09ICdjb21wbGV0ZScgJiYgaCAhPT0gJ2xvYWRlZCcpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGNvbnN0IGQgPSBuZXcgVHJhY2tzYWxlKCk7XHJcbiAgICAgICAgICBkLmluaXQoYSk7XHJcbiAgICAgICAgfSBjYXRjaCAoaSkgeyB9XHJcbiAgICAgIH07XHJcbiAgICAgIGMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSwgYyk7XHJcbiAgICB9KGRvY3VtZW50LCAnc2NyaXB0JywgJ3RyYWNrc2FsZS1qcycpKTtcclxuICB9XHJcbn1cclxuIl19
435
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FtLXV0aWxzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2FtLXNlbmlvci9zYW0tdXRpbHMvIiwic291cmNlcyI6WyJsaWIvc2FtLXV0aWxzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBVy9EO0lBT0UseUJBQ1UsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUM1QixDQUFDOzs7OztJQUVFLDBDQUFnQjs7OztJQUF2QixVQUF3QixRQUFRO1FBQzlCLE9BQU8sUUFBUSxDQUFDLEdBQUc7Ozs7UUFBQyxVQUFBLE9BQU87O2dCQUNyQixHQUFHLEdBQUcsT0FBTztZQUNqQixJQUFJOztvQkFDSSxFQUFFLEdBQUcsbUJBQUEsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFPO2dCQUNyQyxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLEtBQUssRUFBRTtvQkFDMUIsR0FBRyxHQUFHLE1BQU0sQ0FBQztpQkFDZDthQUNGO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1YsR0FBRyxHQUFHLE9BQU8sQ0FBQzthQUNmO1lBQ0QsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDZixDQUFDOzs7OztJQUVZLDJDQUFpQjs7OztJQUE5QixVQUErQixPQUFlOzs7Ozs0QkFDL0IscUJBQU0sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsRUFBRSxFQUFBOzt3QkFBN0MsSUFBSSxHQUFHLFNBQXNDO3dCQUNuRCxJQUFJLENBQUMsS0FBSyxFQUFFLGlCQUFpQixFQUFFOzRCQUM3QixVQUFVLEVBQUUs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ZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgVXNlciB9IGZyb20gJy4vdXNlci5tb2RlbCc7XHJcbmltcG9ydCB7IFVzZXJSb2xlcyB9IGZyb20gJy4vdXNlci1yb2xlcy5tb2RlbCc7XHJcbmltcG9ydCB7IEhhc0ludGVncmF0ZWRSb2xlTW9kZWwgfSBmcm9tICcuL2hhcy1pbnRlZ3JhdGVkLXJvbGUubW9kZWwnO1xyXG5pbXBvcnQgeyBUZW5hbnRJbmZvcm1hdGlvbiB9IGZyb20gJy4vdGVuYW50LWluZm9ybWF0aW9uJztcclxuXHJcbmRlY2xhcmUgY29uc3QgSW5zdGFsbFRyaWdnZXI6IGFueTtcclxuZGVjbGFyZSBjb25zdCBzYWZhcmk6IGFueTtcclxuZGVjbGFyZSBjb25zdCBUcmFja3NhbGU6IGFueTtcclxuZGVjbGFyZSBsZXQgZ3RhZzogRnVuY3Rpb247XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTYW1VdGlsc1NlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIHN0YXRpYyBIQVNfTE9BREVEID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50XHJcbiAgKSB7IH1cclxuXHJcbiAgcHVibGljIGdldFVybFdpdGhvdXRJZHModXJsUGFydHMpIHtcclxuICAgIHJldHVybiB1cmxQYXJ0cy5tYXAodXJsUGFydCA9PiB7XHJcbiAgICAgIGxldCB1cmwgPSB1cmxQYXJ0O1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IGlkID0gcGFyc2VGbG9hdCh1cmxQYXJ0KSBhcyBhbnk7XHJcbiAgICAgICAgaWYgKGlkID4gMCB8fCBpZCA9PT0gJ25ldycpIHtcclxuICAgICAgICAgIHVybCA9ICd7aWR9JztcclxuICAgICAgICB9XHJcbiAgICAgIH0gY2F0Y2ggKF8pIHtcclxuICAgICAgICB1cmwgPSB1cmxQYXJ0O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB1cmw7XHJcbiAgICB9KS5qb2luKCcvJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgc2V0VXNlclByb3BlcnRpZXMocHJvZHVjdDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5nZXRBY3RpdmVVc2VyKCkudG9Qcm9taXNlKCk7XHJcbiAgICBndGFnKCdzZXQnLCAndXNlcl9wcm9wZXJ0aWVzJywge1xyXG4gICAgICBwcm9kdWN0X2c3OiBwcm9kdWN0LFxyXG4gICAgICB0ZW5hbnQ6IHVzZXIudGVuYW50TmFtZSxcclxuICAgICAgdXNlcm5hbWU6IHVzZXIudXNlcm5hbWVcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHBhZ2VMb2FkaW5nKHBhZ2U6IHN0cmluZywgcHJvZHVjdDogc3RyaW5nKSB7XHJcbiAgICBpZiAoIVNhbVV0aWxzU2VydmljZS5IQVNfTE9BREVEICYmIHdpbmRvdy5wZXJmb3JtYW5jZSkge1xyXG4gICAgICBTYW1VdGlsc1NlcnZpY2UuSEFTX0xPQURFRCA9IHRydWU7XHJcbiAgICAgIGNvbnN0IHRpbWVTaW5jZVBhZ2VMb2FkID0gTWF0aC5yb3VuZChwZXJmb3JtYW5jZS5ub3coKSk7XHJcbiAgICAgIHRoaXMuc2VuZFRvQW5hbHl0aWNzKCd0ZW1wb19jYXJyZWdhbWVudG9fdGVsYScsIHtcclxuICAgICAgICB0aW1lX3ZhbHVlOiAodGltZVNpbmNlUGFnZUxvYWQgLyAxMDAwKSxcclxuICAgICAgICBwYWdlOiBwYWdlXHJcbiAgICAgIH0sIHByb2R1Y3QpLnRoZW4oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRCYXNlVVJMKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgY29va2llID0gZG9jdW1lbnQuY29va2llLnNwbGl0KCc7JykuZmlsdGVyKGNvb2tpZVN0ciA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGNvb2tpZVN0ci5pbmNsdWRlcygnY29tLnNlbmlvci5iYXNlLnVybCcpO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChcclxuICAgICAgICBjb29raWVbMF0uc3BsaXQoJz0nKVsxXVxyXG4gICAgICApLnNsaWNlKDAsIC0xKTtcclxuICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICB0aHJvdyBFcnJvcignUGxhdGZvcm0gRzcgbm90IGNvbmZpZ3VyZWQgaW4gdGhpcyBhcHAnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBzZW5kVG9BbmFseXRpY3MoZXZlbnROYW1lOiBzdHJpbmcsIHBhcmFtczogYW55LCBwcm9kdWN0Pzogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5nZXRBY3RpdmVVc2VyKCkudG9Qcm9taXNlKCk7XHJcbiAgICBndGFnKCdldmVudCcsIGV2ZW50TmFtZSwge1xyXG4gICAgICAuLi5wYXJhbXMsXHJcbiAgICAgIGVudmlyb25tZW50OiB0aGlzLmdldEJhc2VVUkwoKSxcclxuICAgICAgdXNlcjogdXNlci51c2VybmFtZSxcclxuICAgICAgdGVudGFudDogdXNlci50ZW5hbnROYW1lLFxyXG4gICAgICBwcm9kdWN0OiBwcm9kdWN0ID8gcHJvZHVjdCA6IHBhcmFtcy5wcm9kdWN0LFxyXG4gICAgICBkZWJ1Z19tb2RlOiB0cnVlXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjcmVhdGVPYnNlcnZhYmxlV2l0aFZhbHVlPFQ+KHZhbHVlKSB7XHJcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8VD4ob2JzZXJ2ZXIgPT4ge1xyXG4gICAgICBvYnNlcnZlci5uZXh0KHZhbHVlKTtcclxuICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyogdHNsaW50OmRpc2FibGUgKi9cclxuICBwdWJsaWMgZ2V0QnJvd3NlcigpOiBzdHJpbmcge1xyXG4gICAgaWYgKCghIXdpbmRvd1snb3ByJ10gJiYgISF3aW5kb3dbJ29wciddLmFkZG9ucykgfHwgISF3aW5kb3dbJ29wZXJhJ10gfHwgbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCcgT1BSLycpID49IDApIHsgLy8gT3BlcmEgOC4wK1xyXG4gICAgICByZXR1cm4gJ09wZXJhJztcclxuICAgIH0gZWxzZSBpZiAodHlwZW9mIEluc3RhbGxUcmlnZ2VyICE9PSAndW5kZWZpbmVkJykgeyAvLyBGaXJlZm94IDEuMCtcclxuICAgICAgcmV0dXJuICdGaXJlZm94JztcclxuICAgIH0gZWxzZSBpZiAoL2NvbnN0cnVjdG9yL2kudGVzdCh3aW5kb3dbJ0hUTUxFbGVtZW50J10gYXMgYW55KSB8fCAoZnVuY3Rpb24gKHApIHsgcmV0dXJuIHAudG9TdHJpbmcoKSA9PT0gXCJbb2JqZWN0IFNhZmFyaVJlbW90ZU5vdGlmaWNhdGlvbl1cIjsgfSkoIXdpbmRvd1snc2FmYXJpJ10gfHwgKHR5cGVvZiBzYWZhcmkgIT09ICd1bmRlZmluZWQnICYmIHNhZmFyaS5wdXNoTm90aWZpY2F0aW9uKSkpIHsgLy8gU2FmYXJpIDMuMCsgXCJbb2JqZWN0IEhUTUxFbGVtZW50Q29uc3RydWN0b3JdXCJcclxuICAgICAgcmV0dXJuICdTYWZhcmknO1xyXG4gICAgfSBlbHNlIGlmICgvKkBjY19vbiFAKi9mYWxzZSB8fCAhIWRvY3VtZW50Wydkb2N1bWVudE1vZGUnXSkgeyAvLyBJbnRlcm5ldCBFeHBsb3JlciA2LTExXHJcbiAgICAgIHJldHVybiAnSW50ZXJuZXQgRXhwbG9yZXInO1xyXG4gICAgfSBlbHNlIGlmICghKC8qQGNjX29uIUAqL2ZhbHNlIHx8ICEhZG9jdW1lbnRbJ2RvY3VtZW50TW9kZSddKSAmJiAhIXdpbmRvd1snU3R5bGVNZWRpYSddKSB7IC8vRWRnZSAyMCtcclxuICAgICAgcmV0dXJuICdFZGdlJztcclxuICAgIH0gZWxzZSBpZiAoISF3aW5kb3dbJ2Nocm9tZSddKSB7Ly8gQ2hyb21lIDErXHJcbiAgICAgIHJldHVybiAnQ2hyb21lJztcclxuICAgIH1cclxuICAgIHJldHVybiAndW5rbm93bic7XHJcbiAgfVxyXG4gIC8qIHRzbGludDplbmFibGUgKi9cclxuXHJcbiAgcHVibGljIGdldEc3QnJpZGdlVVJMKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgZHQgPSBkb2N1bWVudC5jb29raWUuc3BsaXQoJzsnKS5maWx0ZXIoY29va2llU3RyID0+IHtcclxuICAgICAgICByZXR1cm4gY29va2llU3RyLmluY2x1ZGVzKCdjb20uc2VuaW9yLnNlcnZpY2VzLnVybCcpO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChcclxuICAgICAgICBkdFswXS5zcGxpdCgnPScpWzFdXHJcbiAgICAgICkuc2xpY2UoMCwgLTEpO1xyXG4gICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgIHRocm93IEVycm9yKCdQbGF0Zm9ybSBHNyBub3QgY29uZmlndXJlZCBpbiB0aGlzIGFwcCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEFjdGl2ZVVzZXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxVc2VyPihgJHt0aGlzLmdldEc3QnJpZGdlVVJMKCl9L3Jlc3QvcGxhdGZvcm0vdXNlci9xdWVyaWVzL2dldFVzZXJgLCB7XHJcbiAgICAgIGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRSb2xlc0J5QWN0aXZlVXNlcih1c2VyKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxVc2VyUm9sZXM+KGAke3RoaXMuZ2V0RzdCcmlkZ2VVUkwoKX0vcmVzdC9wbGF0Zm9ybS9hdXRob3JpemF0aW9uL3F1ZXJpZXMvZ2V0VXNlclJvbGVzP3VzZXI9JHt1c2VyfWAsIHtcclxuICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKClcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFRlbmF0SW5mb3JtYXRpb24oc2NoZW1hTmFtZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxUZW5hbnRJbmZvcm1hdGlvbj4oYCR7dGhpcy5nZXRHN0JyaWRnZVVSTCgpfS9yZXN0L3NhbS9hZG1pbmlzdHJhdGlvbi9xdWVyaWVzL2dldEVycENvZGVgLCB7XHJcbiAgICAgIHBhcmFtczoge1xyXG4gICAgICAgIHNjaGVtYU5hbWU6IHNjaGVtYU5hbWVcclxuICAgICAgfSxcclxuICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKClcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhc0ludGVncmF0ZWRSb2xlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8SGFzSW50ZWdyYXRlZFJvbGVNb2RlbD4oYCR7dGhpcy5nZXRHN0JyaWRnZVVSTCgpfS9yZXN0L3NhbS9hcHBsaWNhdGlvbi9xdWVyaWVzL2hhc0ludGVncmF0ZWRSb2xlYCwge1xyXG4gICAgICBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEhlYWRlcnMoKSB7XHJcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMuZ2V0RzdUb2tlbigpO1xyXG4gICAgcmV0dXJuIG5ldyBIdHRwSGVhZGVycygpLnNldCgnQXV0aG9yaXphdGlvbicsIGAke3Rva2VuLnRva2VuX3R5cGV9ICR7dG9rZW4uYWNjZXNzX3Rva2VufWApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEc3VG9rZW4oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBzZW5pb3JUb2tlbiA9IGRvY3VtZW50LmNvb2tpZS5zcGxpdCgnOycpLmZpbHRlcihjb29raWVTdHIgPT4ge1xyXG4gICAgICAgIHJldHVybiBjb29raWVTdHIuaW5jbHVkZXMoJ2NvbS5zZW5pb3IudG9rZW4nKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKGRlY29kZVVSSUNvbXBvbmVudChzZW5pb3JUb2tlblswXS5zcGxpdCgnPScpWzFdKSk7XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgdGhyb3cgRXJyb3IoJ1BsYXRmb3JtIEc3IG5vdCBjb25maWd1cmVkIGluIHRoaXMgYXBwJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgdHJhY2tTYWxlKHRyYWNrc2FsZUtleTogc3RyaW5nLCB0cmFja3NhbGVDYW1wYWlnbjogc3RyaW5nLCBwYWdlVXJsOiBzdHJpbmcpIHtcclxuICAgIGlmICghKHdpbmRvdyBhcyBhbnkpLnNob3dfdGFja3NhbGUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHVzZXJJbmZvcm1hdGlvbiA9IGF3YWl0IHRoaXMuZ2V0QWN0aXZlVXNlcigpLnRvUHJvbWlzZSgpO1xyXG5cclxuICAgIGxldCByb2xlcyA9ICcnO1xyXG4gICAgaWYgKCh3aW5kb3cgYXMgYW55KS5jYW5fY2FwdHVyZV9yb2xlKSB7XHJcbiAgICAgIGNvbnN0IHJvbGUgPSBhd2FpdCB0aGlzLmdldFJvbGVzQnlBY3RpdmVVc2VyKHVzZXJJbmZvcm1hdGlvbi51c2VybmFtZSkudG9Qcm9taXNlKCk7XHJcbiAgICAgIHJvbGVzID0gcm9sZS5yb2xlcy5qb2luKCcsICcpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGhhc0ludGVncmF0ZWRSb2xlID0gYXdhaXQgdGhpcy5oYXNJbnRlZ3JhdGVkUm9sZSgpLnRvUHJvbWlzZSgpO1xyXG4gICAgY29uc3QgdGVuYW50SW5mb3JtYXRpb24gPSBhd2FpdCB0aGlzLmdldFRlbmF0SW5mb3JtYXRpb24odXNlckluZm9ybWF0aW9uLnRlbmFudE5hbWUpLnRvUHJvbWlzZSgpO1xyXG4gICAgY29uc3QgYnJvd3NlciA9IHRoaXMuZ2V0QnJvd3NlcigpO1xyXG4gICAgY29uc3QgZnVsbG5hbWUgPSB1c2VySW5mb3JtYXRpb24uZnVsbE5hbWUucmVwbGFjZSgnKycsICcgJyk7XHJcbiAgICBjb25zdCBlbWFpbCA9IHVzZXJJbmZvcm1hdGlvbi5lbWFpbDtcclxuICAgIChmdW5jdGlvbiAoZiwgYiwgZykge1xyXG4gICAgICBjb25zdCBhID0ge1xyXG4gICAgICAgIGtleTogdHJhY2tzYWxlS2V5LFxyXG4gICAgICAgIGNhbXBhaWduOiB0cmFja3NhbGVDYW1wYWlnbixcclxuICAgICAgICBuYW1lOiBmdWxsbmFtZSxcclxuICAgICAgICBlbWFpbDogZW1haWwsXHJcbiAgICAgICAgdGFnczoge1xyXG4gICAgICAgICAgJ3RlbmFudCc6IHVzZXJJbmZvcm1hdGlvbi50ZW5hbnROYW1lLFxyXG4gICAgICAgICAgJ3BhcGVsJzogcm9sZXMsXHJcbiAgICAgICAgICAnZGV2aWNlJzogYnJvd3NlcixcclxuICAgICAgICAgICd1Zic6ICcnLFxyXG4gICAgICAgICAgJ1NBTSc6ICFoYXNJbnRlZ3JhdGVkUm9sZS5oYXNJbnRlZ3JhdGVkUm9sZSxcclxuICAgICAgICAgICdHQVMnOiBoYXNJbnRlZ3JhdGVkUm9sZS5oYXNJbnRlZ3JhdGVkUm9sZSxcclxuICAgICAgICAgICdHZXN0YW9JbmNpZGVudGVzJzogJycsXHJcbiAgICAgICAgICAnQ2FtZXJhcyc6ICcnLFxyXG4gICAgICAgICAgJ1BvcnRhcmlhVmlydHVhbCc6ICcnLFxyXG4gICAgICAgICAgJ0F1dG9hdGVuZGltZW50byc6ICcnLFxyXG4gICAgICAgICAgJ3BhZ2luYSc6IHBhZ2VVcmwsXHJcbiAgICAgICAgICAnSUQgRVJQJzogdGVuYW50SW5mb3JtYXRpb24uZXJwQ29kZVxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgICAgLy8gU2VndWluZG8gbyBleGVtcGxvIGRhIGFycXVpdGVyYS5cclxuICAgICAgLy8gRm9udGUgbsOjbyBzZXLDoSBhbHRlcmFkbyBuZXN0YSB0YXNrO1xyXG4gICAgICBsZXQgZTtcclxuICAgICAgY29uc3QgYyA9IGYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYilbMF07XHJcbiAgICAgIGlmIChmLmdldEVsZW1lbnRCeUlkKGcpKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGUgPSBmLmNyZWF0ZUVsZW1lbnQoYik7XHJcbiAgICAgIGUuaWQgPSBnO1xyXG4gICAgICBlLnNyYyA9ICdodHRwczovL2Nkbi50cmFja3NhbGUuY28vdHJhY2tzYWxlLWpzL3RyYWNrc2FsZS5qcyc7XHJcbiAgICAgIGUudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xyXG4gICAgICBlLmFzeW5jID0gdHJ1ZTtcclxuICAgICAgZS5vbmxvYWQgPSBlLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBjb25zdCBoID0gdGhpcy5yZWFkeVN0YXRlO1xyXG4gICAgICAgIGlmIChoICYmIGggIT09ICdjb21wbGV0ZScgJiYgaCAhPT0gJ2xvYWRlZCcpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGNvbnN0IGQgPSBuZXcgVHJhY2tzYWxlKCk7XHJcbiAgICAgICAgICBkLmluaXQoYSk7XHJcbiAgICAgICAgfSBjYXRjaCAoaSkgeyB9XHJcbiAgICAgIH07XHJcbiAgICAgIGMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSwgYyk7XHJcbiAgICB9KGRvY3VtZW50LCAnc2NyaXB0JywgJ3RyYWNrc2FsZS1qcycpKTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,8 +1,7 @@
1
1
  import { __awaiter } from 'tslib';
2
- import { Injectable, defineInjectable, inject } from '@angular/core';
2
+ import { Injectable, ɵɵdefineInjectable, ɵɵinject } from '@angular/core';
3
3
  import { Observable } from 'rxjs';
4
4
  import { HttpClient, HttpHeaders } from '@angular/common/http';
5
- import { map } from 'rxjs/operators';
6
5
 
7
6
  /**
8
7
  * @fileoverview added by tsickle
@@ -100,7 +99,7 @@ class SamUtilsService {
100
99
  return __awaiter(this, void 0, void 0, function* () {
101
100
  /** @type {?} */
102
101
  const user = yield this.getActiveUser().toPromise();
103
- gtag('event', eventName, Object.assign({}, params, { environment: this.getBaseURL(), user: user.username, tentant: user.tenantName, product: product ? product : params.product, debug_mode: true }));
102
+ gtag('event', eventName, Object.assign(Object.assign({}, params), { environment: this.getBaseURL(), user: user.username, tentant: user.tenantName, product: product ? product : params.product, debug_mode: true }));
104
103
  });
105
104
  }
106
105
  /**
@@ -129,7 +128,7 @@ class SamUtilsService {
129
128
  else if (typeof InstallTrigger !== 'undefined') { // Firefox 1.0+
130
129
  return 'Firefox';
131
130
  }
132
- else if (/constructor/i.test(window['HTMLElement']) || ((/**
131
+ else if (/constructor/i.test((/** @type {?} */ (window['HTMLElement']))) || ((/**
133
132
  * @param {?} p
134
133
  * @return {?}
135
134
  */
@@ -171,18 +170,9 @@ class SamUtilsService {
171
170
  * @return {?}
172
171
  */
173
172
  getActiveUser() {
174
- if (!SamUtilsService.ACTIVE_USER) {
175
- return (/** @type {?} */ (this.httpClient.get(`${this.getG7BridgeURL()}/rest/platform/user/queries/getUser`, {
176
- headers: this.getHeaders()
177
- }).pipe(map((/**
178
- * @param {?} user
179
- * @return {?}
180
- */
181
- user => SamUtilsService.ACTIVE_USER = user)))));
182
- }
183
- else {
184
- return this.createObservableWithValue(SamUtilsService.ACTIVE_USER);
185
- }
173
+ return this.httpClient.get(`${this.getG7BridgeURL()}/rest/platform/user/queries/getUser`, {
174
+ headers: this.getHeaders()
175
+ });
186
176
  }
187
177
  /**
188
178
  * @param {?} user
@@ -335,7 +325,6 @@ class SamUtilsService {
335
325
  }
336
326
  }
337
327
  SamUtilsService.HAS_LOADED = false;
338
- SamUtilsService.ACTIVE_USER = null;
339
328
  SamUtilsService.decorators = [
340
329
  { type: Injectable, args: [{
341
330
  providedIn: 'root'
@@ -345,7 +334,7 @@ SamUtilsService.decorators = [
345
334
  SamUtilsService.ctorParameters = () => [
346
335
  { type: HttpClient }
347
336
  ];
348
- /** @nocollapse */ SamUtilsService.ngInjectableDef = defineInjectable({ factory: function SamUtilsService_Factory() { return new SamUtilsService(inject(HttpClient)); }, token: SamUtilsService, providedIn: "root" });
337
+ /** @nocollapse */ SamUtilsService.ɵprov = ɵɵdefineInjectable({ factory: function SamUtilsService_Factory() { return new SamUtilsService(ɵɵinject(HttpClient)); }, token: SamUtilsService, providedIn: "root" });
349
338
 
350
339
  /**
351
340
  * @fileoverview added by tsickle
@@ -1 +1 @@
1
- {"version":3,"file":"sam-senior-sam-utils.js.map","sources":["ng://@sam-senior/sam-utils/lib/sam-utils.service.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { User } from './user.model';\r\nimport { UserRoles } from './user-roles.model';\r\nimport { HasIntegratedRoleModel } from './has-integrated-role.model';\r\nimport { TenantInformation } from './tenant-information';\r\nimport { map } from 'rxjs/operators';\r\n\r\ndeclare const InstallTrigger: any;\r\ndeclare const safari: any;\r\ndeclare const Tracksale: any;\r\ndeclare let gtag: Function;\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SamUtilsService {\r\n\r\n private static HAS_LOADED = false;\r\n private static ACTIVE_USER = null;\r\n\r\n constructor(\r\n private httpClient: HttpClient\r\n ) { }\r\n\r\n public getUrlWithoutIds(urlParts) {\r\n return urlParts.map(urlPart => {\r\n let url = urlPart;\r\n try {\r\n const id = parseFloat(urlPart) as any;\r\n if (id > 0 || id === 'new') {\r\n url = '{id}';\r\n }\r\n } catch (_) {\r\n url = urlPart;\r\n }\r\n return url;\r\n }).join('/');\r\n }\r\n\r\n public async setUserProperties(product: string) {\r\n const user = await this.getActiveUser().toPromise();\r\n gtag('set', 'user_properties', {\r\n product_g7: product,\r\n tenant: user.tenantName,\r\n username: user.username\r\n });\r\n }\r\n\r\n public pageLoading(page: string, product: string) {\r\n if (!SamUtilsService.HAS_LOADED && window.performance) {\r\n SamUtilsService.HAS_LOADED = true;\r\n const timeSincePageLoad = Math.round(performance.now());\r\n this.sendToAnalytics('tempo_carregamento_tela', {\r\n time_value: (timeSincePageLoad / 1000),\r\n page: page\r\n }, product).then();\r\n }\r\n }\r\n\r\n public getBaseURL() {\r\n try {\r\n const cookie = document.cookie.split(';').filter(cookieStr => {\r\n return cookieStr.includes('com.senior.base.url');\r\n });\r\n return decodeURIComponent(\r\n cookie[0].split('=')[1]\r\n ).slice(0, -1);\r\n } catch (err) {\r\n throw Error('Platform G7 not configured in this app');\r\n }\r\n }\r\n\r\n public async sendToAnalytics(eventName: string, params: any, product?: string) {\r\n const user = await this.getActiveUser().toPromise();\r\n gtag('event', eventName, {\r\n ...params,\r\n environment: this.getBaseURL(),\r\n user: user.username,\r\n tentant: user.tenantName,\r\n product: product ? product : params.product,\r\n debug_mode: true\r\n });\r\n }\r\n\r\n public createObservableWithValue<T>(value) {\r\n return new Observable<T>(observer => {\r\n observer.next(value);\r\n observer.complete();\r\n });\r\n }\r\n\r\n /* tslint:disable */\r\n public getBrowser(): string {\r\n if ((!!window['opr'] && !!window['opr'].addons) || !!window['opera'] || navigator.userAgent.indexOf(' OPR/') >= 0) { // Opera 8.0+\r\n return 'Opera';\r\n } else if (typeof InstallTrigger !== 'undefined') { // Firefox 1.0+\r\n return 'Firefox';\r\n } else if (/constructor/i.test(window['HTMLElement']) || (function (p) { return p.toString() === \"[object SafariRemoteNotification]\"; })(!window['safari'] || (typeof safari !== 'undefined' && safari.pushNotification))) { // Safari 3.0+ \"[object HTMLElementConstructor]\"\r\n return 'Safari';\r\n } else if (/*@cc_on!@*/false || !!document['documentMode']) { // Internet Explorer 6-11\r\n return 'Internet Explorer';\r\n } else if (!(/*@cc_on!@*/false || !!document['documentMode']) && !!window['StyleMedia']) { //Edge 20+\r\n return 'Edge';\r\n } else if (!!window['chrome']) {// Chrome 1+\r\n return 'Chrome';\r\n }\r\n return 'unknown';\r\n }\r\n /* tslint:enable */\r\n\r\n public getG7BridgeURL() {\r\n try {\r\n const dt = document.cookie.split(';').filter(cookieStr => {\r\n return cookieStr.includes('com.senior.services.url');\r\n });\r\n return decodeURIComponent(\r\n dt[0].split('=')[1]\r\n ).slice(0, -1);\r\n } catch (err) {\r\n throw Error('Platform G7 not configured in this app');\r\n }\r\n }\r\n\r\n public getActiveUser() {\r\n if (!SamUtilsService.ACTIVE_USER) {\r\n return this.httpClient.get<User>(`${this.getG7BridgeURL()}/rest/platform/user/queries/getUser`, {\r\n headers: this.getHeaders()\r\n }).pipe(map(user => SamUtilsService.ACTIVE_USER = user)) as any;\r\n } else {\r\n return this.createObservableWithValue(SamUtilsService.ACTIVE_USER);\r\n }\r\n }\r\n\r\n public getRolesByActiveUser(user) {\r\n return this.httpClient.get<UserRoles>(`${this.getG7BridgeURL()}/rest/platform/authorization/queries/getUserRoles?user=${user}`, {\r\n headers: this.getHeaders()\r\n });\r\n }\r\n\r\n public getTenatInformation(schemaName: string) {\r\n return this.httpClient.get<TenantInformation>(`${this.getG7BridgeURL()}/rest/sam/administration/queries/getErpCode`, {\r\n params: {\r\n schemaName: schemaName\r\n },\r\n headers: this.getHeaders()\r\n });\r\n }\r\n\r\n public hasIntegratedRole() {\r\n return this.httpClient.get<HasIntegratedRoleModel>(`${this.getG7BridgeURL()}/rest/sam/application/queries/hasIntegratedRole`, {\r\n headers: this.getHeaders()\r\n });\r\n }\r\n\r\n private getHeaders() {\r\n const token = this.getG7Token();\r\n return new HttpHeaders().set('Authorization', `${token.token_type} ${token.access_token}`);\r\n }\r\n\r\n public getG7Token() {\r\n try {\r\n const seniorToken = document.cookie.split(';').filter(cookieStr => {\r\n return cookieStr.includes('com.senior.token');\r\n });\r\n return JSON.parse(decodeURIComponent(seniorToken[0].split('=')[1]));\r\n } catch (err) {\r\n throw Error('Platform G7 not configured in this app');\r\n }\r\n }\r\n\r\n public async trackSale(tracksaleKey: string, tracksaleCampaign: string, pageUrl: string) {\r\n if (!(window as any).show_tacksale) {\r\n return;\r\n }\r\n\r\n const userInformation = await this.getActiveUser().toPromise();\r\n\r\n let roles = '';\r\n if ((window as any).can_capture_role) {\r\n const role = await this.getRolesByActiveUser(userInformation.username).toPromise();\r\n roles = role.roles.join(', ');\r\n }\r\n\r\n const hasIntegratedRole = await this.hasIntegratedRole().toPromise();\r\n const tenantInformation = await this.getTenatInformation(userInformation.tenantName).toPromise();\r\n const browser = this.getBrowser();\r\n const fullname = userInformation.fullName.replace('+', ' ');\r\n const email = userInformation.email;\r\n (function (f, b, g) {\r\n const a = {\r\n key: tracksaleKey,\r\n campaign: tracksaleCampaign,\r\n name: fullname,\r\n email: email,\r\n tags: {\r\n 'tenant': userInformation.tenantName,\r\n 'papel': roles,\r\n 'device': browser,\r\n 'uf': '',\r\n 'SAM': !hasIntegratedRole.hasIntegratedRole,\r\n 'GAS': hasIntegratedRole.hasIntegratedRole,\r\n 'GestaoIncidentes': '',\r\n 'Cameras': '',\r\n 'PortariaVirtual': '',\r\n 'Autoatendimento': '',\r\n 'pagina': pageUrl,\r\n 'ID ERP': tenantInformation.erpCode\r\n }\r\n };\r\n // Seguindo o exemplo da arquitera.\r\n // Fonte não será alterado nesta task;\r\n let e;\r\n const c = f.getElementsByTagName(b)[0];\r\n if (f.getElementById(g)) {\r\n return;\r\n }\r\n e = f.createElement(b);\r\n e.id = g;\r\n e.src = 'https://cdn.tracksale.co/tracksale-js/tracksale.js';\r\n e.type = 'text/javascript';\r\n e.async = true;\r\n e.onload = e.onreadystatechange = function () {\r\n const h = this.readyState;\r\n if (h && h !== 'complete' && h !== 'loaded') {\r\n return;\r\n }\r\n try {\r\n const d = new Tracksale();\r\n d.init(a);\r\n } catch (i) { }\r\n };\r\n c.parentNode.insertBefore(e, c);\r\n }(document, 'script', 'tracksale-js'));\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sam-senior-sam-utils.js.map","sources":["ng://@sam-senior/sam-utils/lib/sam-utils.service.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { User } from './user.model';\r\nimport { UserRoles } from './user-roles.model';\r\nimport { HasIntegratedRoleModel } from './has-integrated-role.model';\r\nimport { TenantInformation } from './tenant-information';\r\n\r\ndeclare const InstallTrigger: any;\r\ndeclare const safari: any;\r\ndeclare const Tracksale: any;\r\ndeclare let gtag: Function;\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SamUtilsService {\r\n\r\n private static HAS_LOADED = false;\r\n\r\n constructor(\r\n private httpClient: HttpClient\r\n ) { }\r\n\r\n public getUrlWithoutIds(urlParts) {\r\n return urlParts.map(urlPart => {\r\n let url = urlPart;\r\n try {\r\n const id = parseFloat(urlPart) as any;\r\n if (id > 0 || id === 'new') {\r\n url = '{id}';\r\n }\r\n } catch (_) {\r\n url = urlPart;\r\n }\r\n return url;\r\n }).join('/');\r\n }\r\n\r\n public async setUserProperties(product: string) {\r\n const user = await this.getActiveUser().toPromise();\r\n gtag('set', 'user_properties', {\r\n product_g7: product,\r\n tenant: user.tenantName,\r\n username: user.username\r\n });\r\n }\r\n\r\n public pageLoading(page: string, product: string) {\r\n if (!SamUtilsService.HAS_LOADED && window.performance) {\r\n SamUtilsService.HAS_LOADED = true;\r\n const timeSincePageLoad = Math.round(performance.now());\r\n this.sendToAnalytics('tempo_carregamento_tela', {\r\n time_value: (timeSincePageLoad / 1000),\r\n page: page\r\n }, product).then();\r\n }\r\n }\r\n\r\n public getBaseURL() {\r\n try {\r\n const cookie = document.cookie.split(';').filter(cookieStr => {\r\n return cookieStr.includes('com.senior.base.url');\r\n });\r\n return decodeURIComponent(\r\n cookie[0].split('=')[1]\r\n ).slice(0, -1);\r\n } catch (err) {\r\n throw Error('Platform G7 not configured in this app');\r\n }\r\n }\r\n\r\n public async sendToAnalytics(eventName: string, params: any, product?: string) {\r\n const user = await this.getActiveUser().toPromise();\r\n gtag('event', eventName, {\r\n ...params,\r\n environment: this.getBaseURL(),\r\n user: user.username,\r\n tentant: user.tenantName,\r\n product: product ? product : params.product,\r\n debug_mode: true\r\n });\r\n }\r\n\r\n public createObservableWithValue<T>(value) {\r\n return new Observable<T>(observer => {\r\n observer.next(value);\r\n observer.complete();\r\n });\r\n }\r\n\r\n /* tslint:disable */\r\n public getBrowser(): string {\r\n if ((!!window['opr'] && !!window['opr'].addons) || !!window['opera'] || navigator.userAgent.indexOf(' OPR/') >= 0) { // Opera 8.0+\r\n return 'Opera';\r\n } else if (typeof InstallTrigger !== 'undefined') { // Firefox 1.0+\r\n return 'Firefox';\r\n } else if (/constructor/i.test(window['HTMLElement'] as any) || (function (p) { return p.toString() === \"[object SafariRemoteNotification]\"; })(!window['safari'] || (typeof safari !== 'undefined' && safari.pushNotification))) { // Safari 3.0+ \"[object HTMLElementConstructor]\"\r\n return 'Safari';\r\n } else if (/*@cc_on!@*/false || !!document['documentMode']) { // Internet Explorer 6-11\r\n return 'Internet Explorer';\r\n } else if (!(/*@cc_on!@*/false || !!document['documentMode']) && !!window['StyleMedia']) { //Edge 20+\r\n return 'Edge';\r\n } else if (!!window['chrome']) {// Chrome 1+\r\n return 'Chrome';\r\n }\r\n return 'unknown';\r\n }\r\n /* tslint:enable */\r\n\r\n public getG7BridgeURL() {\r\n try {\r\n const dt = document.cookie.split(';').filter(cookieStr => {\r\n return cookieStr.includes('com.senior.services.url');\r\n });\r\n return decodeURIComponent(\r\n dt[0].split('=')[1]\r\n ).slice(0, -1);\r\n } catch (err) {\r\n throw Error('Platform G7 not configured in this app');\r\n }\r\n }\r\n\r\n public getActiveUser() {\r\n return this.httpClient.get<User>(`${this.getG7BridgeURL()}/rest/platform/user/queries/getUser`, {\r\n headers: this.getHeaders()\r\n });\r\n }\r\n\r\n public getRolesByActiveUser(user) {\r\n return this.httpClient.get<UserRoles>(`${this.getG7BridgeURL()}/rest/platform/authorization/queries/getUserRoles?user=${user}`, {\r\n headers: this.getHeaders()\r\n });\r\n }\r\n\r\n public getTenatInformation(schemaName: string) {\r\n return this.httpClient.get<TenantInformation>(`${this.getG7BridgeURL()}/rest/sam/administration/queries/getErpCode`, {\r\n params: {\r\n schemaName: schemaName\r\n },\r\n headers: this.getHeaders()\r\n });\r\n }\r\n\r\n public hasIntegratedRole() {\r\n return this.httpClient.get<HasIntegratedRoleModel>(`${this.getG7BridgeURL()}/rest/sam/application/queries/hasIntegratedRole`, {\r\n headers: this.getHeaders()\r\n });\r\n }\r\n\r\n private getHeaders() {\r\n const token = this.getG7Token();\r\n return new HttpHeaders().set('Authorization', `${token.token_type} ${token.access_token}`);\r\n }\r\n\r\n public getG7Token() {\r\n try {\r\n const seniorToken = document.cookie.split(';').filter(cookieStr => {\r\n return cookieStr.includes('com.senior.token');\r\n });\r\n return JSON.parse(decodeURIComponent(seniorToken[0].split('=')[1]));\r\n } catch (err) {\r\n throw Error('Platform G7 not configured in this app');\r\n }\r\n }\r\n\r\n public async trackSale(tracksaleKey: string, tracksaleCampaign: string, pageUrl: string) {\r\n if (!(window as any).show_tacksale) {\r\n return;\r\n }\r\n\r\n const userInformation = await this.getActiveUser().toPromise();\r\n\r\n let roles = '';\r\n if ((window as any).can_capture_role) {\r\n const role = await this.getRolesByActiveUser(userInformation.username).toPromise();\r\n roles = role.roles.join(', ');\r\n }\r\n\r\n const hasIntegratedRole = await this.hasIntegratedRole().toPromise();\r\n const tenantInformation = await this.getTenatInformation(userInformation.tenantName).toPromise();\r\n const browser = this.getBrowser();\r\n const fullname = userInformation.fullName.replace('+', ' ');\r\n const email = userInformation.email;\r\n (function (f, b, g) {\r\n const a = {\r\n key: tracksaleKey,\r\n campaign: tracksaleCampaign,\r\n name: fullname,\r\n email: email,\r\n tags: {\r\n 'tenant': userInformation.tenantName,\r\n 'papel': roles,\r\n 'device': browser,\r\n 'uf': '',\r\n 'SAM': !hasIntegratedRole.hasIntegratedRole,\r\n 'GAS': hasIntegratedRole.hasIntegratedRole,\r\n 'GestaoIncidentes': '',\r\n 'Cameras': '',\r\n 'PortariaVirtual': '',\r\n 'Autoatendimento': '',\r\n 'pagina': pageUrl,\r\n 'ID ERP': tenantInformation.erpCode\r\n }\r\n };\r\n // Seguindo o exemplo da arquitera.\r\n // Fonte não será alterado nesta task;\r\n let e;\r\n const c = f.getElementsByTagName(b)[0];\r\n if (f.getElementById(g)) {\r\n return;\r\n }\r\n e = f.createElement(b);\r\n e.id = g;\r\n e.src = 'https://cdn.tracksale.co/tracksale-js/tracksale.js';\r\n e.type = 'text/javascript';\r\n e.async = true;\r\n e.onload = e.onreadystatechange = function () {\r\n const h = this.readyState;\r\n if (h && h !== 'complete' && h !== 'loaded') {\r\n return;\r\n }\r\n try {\r\n const d = new Tracksale();\r\n d.init(a);\r\n } catch (i) { }\r\n };\r\n c.parentNode.insertBefore(e, c);\r\n }(document, 'script', 'tracksale-js'));\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
@@ -1,8 +1,7 @@
1
- import { __awaiter, __generator, __assign } from 'tslib';
2
- import { Injectable, defineInjectable, inject } from '@angular/core';
1
+ import { __assign, __awaiter, __generator } from 'tslib';
2
+ import { Injectable, ɵɵdefineInjectable, ɵɵinject } from '@angular/core';
3
3
  import { Observable } from 'rxjs';
4
4
  import { HttpClient, HttpHeaders } from '@angular/common/http';
5
- import { map } from 'rxjs/operators';
6
5
 
7
6
  /**
8
7
  * @fileoverview added by tsickle
@@ -130,7 +129,7 @@ var SamUtilsService = /** @class */ (function () {
130
129
  case 0: return [4 /*yield*/, this.getActiveUser().toPromise()];
131
130
  case 1:
132
131
  user = _a.sent();
133
- gtag('event', eventName, __assign({}, params, { environment: this.getBaseURL(), user: user.username, tentant: user.tenantName, product: product ? product : params.product, debug_mode: true }));
132
+ gtag('event', eventName, __assign(__assign({}, params), { environment: this.getBaseURL(), user: user.username, tentant: user.tenantName, product: product ? product : params.product, debug_mode: true }));
134
133
  return [2 /*return*/];
135
134
  }
136
135
  });
@@ -172,7 +171,7 @@ var SamUtilsService = /** @class */ (function () {
172
171
  else if (typeof InstallTrigger !== 'undefined') { // Firefox 1.0+
173
172
  return 'Firefox';
174
173
  }
175
- else if (/constructor/i.test(window['HTMLElement']) || ((/**
174
+ else if (/constructor/i.test((/** @type {?} */ (window['HTMLElement']))) || ((/**
176
175
  * @param {?} p
177
176
  * @return {?}
178
177
  */
@@ -222,18 +221,9 @@ var SamUtilsService = /** @class */ (function () {
222
221
  * @return {?}
223
222
  */
224
223
  function () {
225
- if (!SamUtilsService.ACTIVE_USER) {
226
- return (/** @type {?} */ (this.httpClient.get(this.getG7BridgeURL() + "/rest/platform/user/queries/getUser", {
227
- headers: this.getHeaders()
228
- }).pipe(map((/**
229
- * @param {?} user
230
- * @return {?}
231
- */
232
- function (user) { return SamUtilsService.ACTIVE_USER = user; })))));
233
- }
234
- else {
235
- return this.createObservableWithValue(SamUtilsService.ACTIVE_USER);
236
- }
224
+ return this.httpClient.get(this.getG7BridgeURL() + "/rest/platform/user/queries/getUser", {
225
+ headers: this.getHeaders()
226
+ });
237
227
  };
238
228
  /**
239
229
  * @param {?} user
@@ -416,7 +406,6 @@ var SamUtilsService = /** @class */ (function () {
416
406
  });
417
407
  };
418
408
  SamUtilsService.HAS_LOADED = false;
419
- SamUtilsService.ACTIVE_USER = null;
420
409
  SamUtilsService.decorators = [
421
410
  { type: Injectable, args: [{
422
411
  providedIn: 'root'
@@ -426,7 +415,7 @@ var SamUtilsService = /** @class */ (function () {
426
415
  SamUtilsService.ctorParameters = function () { return [
427
416
  { type: HttpClient }
428
417
  ]; };
429
- /** @nocollapse */ SamUtilsService.ngInjectableDef = defineInjectable({ factory: function SamUtilsService_Factory() { return new SamUtilsService(inject(HttpClient)); }, token: SamUtilsService, providedIn: "root" });
418
+ /** @nocollapse */ SamUtilsService.ɵprov = ɵɵdefineInjectable({ factory: function SamUtilsService_Factory() { return new SamUtilsService(ɵɵinject(HttpClient)); }, token: SamUtilsService, providedIn: "root" });
430
419
  return SamUtilsService;
431
420
  }());
432
421