@sumaris-net/ngx-components 2.4.128 → 2.4.130

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.
@@ -26,7 +26,7 @@ export class MenuService extends StartableObservableService {
26
26
  this.environment = environment;
27
27
  this.accountChanges = new BehaviorSubject(undefined);
28
28
  this._itemCounter = 0;
29
- this._logPrefix = '[menu-service]';
29
+ this._logPrefix = '[menu-service] ';
30
30
  this._$opened = new Subject();
31
31
  this._$splitPaneWhen = new BehaviorSubject(DEFAULT_MENU_SHOW_WHEN);
32
32
  this._$enabled = new BehaviorSubject(true);
@@ -92,13 +92,13 @@ export class MenuService extends StartableObservableService {
92
92
  if (!excludedItems.length)
93
93
  return; // Skip if no items detached
94
94
  if (this._debug)
95
- console.debug(`${this._logPrefix} Detached sub menus: `, excludedItems);
95
+ console.debug(`${this._logPrefix}Detached sub menus: `, excludedItems);
96
96
  // TODO Store excluded items
97
97
  // TODO Restore old excluded items
98
98
  // this.addSubMenuItems();
99
99
  }
100
100
  async ngOnStart() {
101
- console.info(`${this._logPrefix} Starting...`);
101
+ console.info(`${this._logPrefix}Starting...`);
102
102
  const [account, config] = await Promise.all([
103
103
  this.accountService.ready(),
104
104
  this.configService.ready(),
@@ -112,7 +112,7 @@ export class MenuService extends StartableObservableService {
112
112
  accountEvent$
113
113
  ]).subscribe(async ([config, account]) => {
114
114
  if (this._debug)
115
- console.debug(`${this._logPrefix} Received config or account event. Refreshing items...`, account);
115
+ console.debug(`${this._logPrefix}Received config or account event. Refreshing items...`, account);
116
116
  // Load all items
117
117
  await this._loadMenuItems(config, account);
118
118
  // Emit account changes event
@@ -136,18 +136,19 @@ export class MenuService extends StartableObservableService {
136
136
  if (opts.skipIfExists) {
137
137
  // DEBUG
138
138
  if (this._debug)
139
- console.debug(`${this._logPrefix} Skipping sub item (already exist)`, newItem);
140
- return;
139
+ console.debug(`${this._logPrefix}Skipping sub item (already exist)`, newItem);
140
+ return existingItem;
141
141
  }
142
142
  if (this._debug)
143
- console.debug(`${this._logPrefix} Updating existing sub item #`, existingItem.id);
143
+ console.debug(`${this._logPrefix}Updating existing sub item #`, existingItem.id);
144
144
  // Replace existing item, but keep the existing id
145
145
  newItem.id = existingItem.id;
146
+ newItem.$children = existingItem.$children;
146
147
  }
147
148
  const parent = this._findParent(newItem, opts?.availableParents);
148
149
  if (!parent) {
149
- console.warn(`${this._logPrefix} Unable to add sub item: no parent found`);
150
- return false;
150
+ console.warn(`${this._logPrefix}Unable to add sub item: no parent found`);
151
+ return null;
151
152
  }
152
153
  // Generate item's id (if need)
153
154
  if (isNil(newItem.id))
@@ -156,11 +157,11 @@ export class MenuService extends StartableObservableService {
156
157
  // Start listening route
157
158
  if (!this._$listenRoute.value)
158
159
  this._$listenRoute.next(true);
159
- return true;
160
+ return newItem;
160
161
  }
161
162
  async _loadMenuItems(config, account) {
162
163
  if (this._debug)
163
- console.debug(`${this._logPrefix} Loading menu items...`);
164
+ console.debug(`${this._logPrefix}Loading menu items...`);
164
165
  // Save previous children of root items
165
166
  const rootChildren = (this.data || [])
166
167
  .reduce((res, rootItem) => res.concat(rootItem?.$children?.value || []), []);
@@ -202,7 +203,7 @@ export class MenuService extends StartableObservableService {
202
203
  }, items);
203
204
  }
204
205
  catch (err) {
205
- console.error(`${this._logPrefix} Invalid value for option '${CORE_CONFIG_OPTIONS.MENU_ITEMS.key}'. Expected an array of menu item`, err);
206
+ console.error(`${this._logPrefix}Invalid value for option '${CORE_CONFIG_OPTIONS.MENU_ITEMS.key}'. Expected an array of menu item`, err);
206
207
  }
207
208
  }
208
209
  // Filter item using account rights
@@ -226,7 +227,7 @@ export class MenuService extends StartableObservableService {
226
227
  await this.addSubMenuItems(rootChildren, { skipIfExists: false, availableParents: items });
227
228
  }
228
229
  if (this._debug)
229
- console.debug(`${this._logPrefix} Found ${items.length} visible items...`);
230
+ console.debug(`${this._logPrefix}Found ${items.length} visible items...`);
230
231
  this.dataSubject.next(items);
231
232
  }
232
233
  _findExistingItem(item, items) {
@@ -283,7 +284,7 @@ export class MenuService extends StartableObservableService {
283
284
  if (!excludedItems.length)
284
285
  return; // Skip if no items detached
285
286
  if (this._debug)
286
- console.debug(`${this._logPrefix} Detached sub menus: `, excludedItems);
287
+ console.debug(`${this._logPrefix}Detached sub menus: `, excludedItems);
287
288
  // TODO Store excluded items
288
289
  // TODO Restore old excluded items
289
290
  // this.addSubMenuItems();
@@ -326,4 +327,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
326
327
  type: Inject,
327
328
  args: [APP_MENU_ITEMS]
328
329
  }] }]; } });
329
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL21lbnUvbWVudS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBUSxLQUFLLEVBQUUsUUFBUSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRyxPQUFPLEVBQVksU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFlLFdBQVcsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRW5GLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSW5FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDOzs7Ozs7O0FBR3RHLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFzQixJQUFJLENBQUM7QUFlOUQsTUFBTSxPQUFPLFdBQVksU0FBUSwwQkFBc0M7SUFZckUsWUFDWSxlQUFnQyxFQUNoQyxhQUE0QixFQUM1QixjQUE4QixFQUM5QixNQUFjLEVBQ08sV0FBd0IsRUFDbkIsV0FBd0I7UUFFNUQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxD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RkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBa0JJLE1BQU07MkJBQUMsV0FBVzs7MEJBQ2xCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZnJvbSwgbWVyZ2UsIG1lcmdlTWFwLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNZW51SXRlbSwgTWVudUl0ZW1zIH0gZnJvbSAnLi9tZW51Lm1vZGVsJztcbmltcG9ydCB7IEFQUF9NRU5VX0lURU1TIH0gZnJvbSAnLi9tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRW52aXJvbm1lbnQsIEVOVklST05NRU5UIH0gZnJvbSAnLi4vLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LmNsYXNzJztcbmltcG9ydCB7IFBsYXRmb3JtU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3BsYXRmb3JtLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0ZVV0aWxzIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2RhdGVzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFjY291bnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYWNjb3VudC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvY29uZmlnLm1vZGVsJztcbmltcG9ydCB7IENPUkVfQ09ORklHX09QVElPTlMgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb25maWcvY29yZS5jb25maWcnO1xuaW1wb3J0IHsgaXNOaWwsIGlzTm90TmlsLCBpc05vdE5pbE9yQmxhbmsgfSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7IEFjY291bnQgfSBmcm9tICcuLi9zZXJ2aWNlcy9tb2RlbC9hY2NvdW50Lm1vZGVsJztcbmltcG9ydCB7IFN0YXJ0YWJsZU9ic2VydmFibGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3NlcnZpY2VzL3N0YXJ0YWJsZS1vYnNlcnZhYmxlLXNlcnZpY2UuY2xhc3MnO1xuXG5leHBvcnQgdHlwZSBTcGxpdFBhbmVTaG93V2hlbiA9IGJvb2xlYW4gfCAnbGcnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTUVOVV9TSE9XX1dIRU46IFNwbGl0UGFuZVNob3dXaGVuID0gJ2xnJztcblxuZXhwb3J0IGludGVyZmFjZSBBZGRTdWJNZW51SXRlbXNPcHRpb24ge1xuICBza2lwSWZFeGlzdHM/OiBib29sZWFuO1xuICBhdmFpbGFibGVQYXJlbnRzPzogTWVudUl0ZW1bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZW51UGF0aFBhcmFtIHtcbiAgcGF0aDogc3RyaW5nO1xuICBwYXJhbXM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9O1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBNZW51U2VydmljZSBleHRlbmRzIFN0YXJ0YWJsZU9ic2VydmFibGVTZXJ2aWNlPE1lbnVJdGVtW10+IHtcblxuICByZWFkb25seSBhY2NvdW50Q2hhbmdlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QWNjb3VudD4odW5kZWZpbmVkKTtcblxuICBwcml2YXRlIF9zdGF0aWNJdGVtczogTWVudUl0ZW1bXTtcbiAgcHJpdmF0ZSBfaXRlbUNvdW50ZXIgPSAwO1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dQcmVmaXggPSAnW21lbnUtc2VydmljZV0nO1xuICBwcml2YXRlIHJlYWRvbmx5IF8kb3BlbmVkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfJHNwbGl0UGFuZVdoZW4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNwbGl0UGFuZVNob3dXaGVuPihERUZBVUxUX01FTlVfU0hPV19XSEVOKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfJGVuYWJsZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICBwcml2YXRlIHJlYWRvbmx5IF8kbGlzdGVuUm91dGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcGxhdGZvcm1TZXJ2aWNlOiBQbGF0Zm9ybVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGFjY291bnRTZXJ2aWNlOiBBY2NvdW50U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXIsXG4gICAgQEluamVjdChFTlZJUk9OTUVOVCkgcHJvdGVjdGVkIGVudmlyb25tZW50OiBFbnZpcm9ubWVudCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFQUF9NRU5VX0lURU1TKSBzdGF0aWNJdGVtcz86IE1lbnVJdGVtW11cbiAgKSB7XG4gICAgc3VwZXIocGxhdGZvcm1TZXJ2aWNlKTtcbiAgICB0aGlzLl9kZWJ1ZyA9ICFlbnZpcm9ubWVudC5wcm9kdWN0aW9uO1xuICAgIHRoaXMuX3N0YXRpY0l0ZW1zID0gKHN0YXRpY0l0ZW1zIHx8IFtdKS5tYXAoaSA9PiB7XG4gICAgICBjb25zdCBpdGVtID0gTWVudUl0ZW1zLnByZXBhcmVJdGVtKGkpO1xuICAgICAgaXRlbS5pZCA9IHRoaXMuX2l0ZW1Db3VudGVyKys7XG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBvcGVuZWQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuXyRvcGVuZWQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgc3BsaXRQYW5lV2hlbigpOiBPYnNlcnZhYmxlPFNwbGl0UGFuZVNob3dXaGVuPiB7XG4gICAgcmV0dXJuIHRoaXMuXyRzcGxpdFBhbmVXaGVuLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGVuYWJsZWQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuXyRlbmFibGVkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZW5hYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fJGVuYWJsZWQubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBzZXRTcGxpdFBhbmVTaG93V2hlbih2YWx1ZTogU3BsaXRQYW5lU2hvd1doZW4pIHtcbiAgICBpZiAodGhpcy5fJHNwbGl0UGFuZVdoZW4udmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl8kc3BsaXRQYW5lV2hlbi5uZXh0KHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVTcGxpdFBhbmVXaGVuKCkge1xuICAgIGlmICh0aGlzLl8kc3BsaXRQYW5lV2hlbi52YWx1ZSAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuXyRzcGxpdFBhbmVXaGVuLm5leHQoZmFsc2UpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuXyRzcGxpdFBhbmVXaGVuLm5leHQoREVGQVVMVF9NRU5VX1NIT1dfV0hFTik7XG4gICAgfVxuICB9XG5cbiAgX21hcmtBc09wZW5lZCgpIHtcbiAgICB0aGlzLl8kb3BlbmVkLm5leHQodHJ1ZSk7XG4gIH1cblxuICBfbWFya0FzQ2xvc2VkKCkge1xuICAgIHRoaXMuXyRvcGVuZWQubmV4dChmYWxzZSk7XG4gIH1cblxuICBhc3luYyBhZGRTdWJNZW51SXRlbXMobmV3SXRlbXM6IE1lbnVJdGVtW10sIG9wdHM/OiBBZGRTdWJNZW51SXRlbXNPcHRpb24pIHtcbiAgICBpZiAoIXRoaXMuc3RhcnRlZCkgYXdhaXQgdGhpcy5yZWFkeSgpO1xuICAgIHJldHVybiBuZXdJdGVtcy5tYXAoaSA9PiB0aGlzLl9hZGRTdWJNZW51SXRlbShpLCBvcHRzKSk7XG4gIH1cblxuICBhc3luYyBhZGRTdWJNZW51SXRlbShuZXdJdGVtOiBNZW51SXRlbSwgb3B0cz86IEFkZFN1Yk1lbnVJdGVtc09wdGlvbikge1xuICAgIGlmICghdGhpcy5zdGFydGVkKSBhd2FpdCB0aGlzLnJlYWR5KCk7XG4gICAgcmV0dXJuIHRoaXMuX2FkZFN1Yk1lbnVJdGVtKG5ld0l0ZW0sIG9wdHMpO1xuICB9XG5cbiAgcmVtb3ZlU3ViTWVudUl0ZW0oaXRlbTogTWVudUl0ZW0pIHtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLl9maW5kUGFyZW50KGl0ZW0pO1xuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgIGNvbnN0IG5ld0NoaWxkcyA9IHBhcmVudC4kY2hpbGRyZW4udmFsdWUuZmlsdGVyKGkgPT4gIU1lbnVJdGVtcy5pc1NhbWUoaXRlbSwgaSkpO1xuICAgICAgcGFyZW50LiRjaGlsZHJlbi5uZXh0KG5ld0NoaWxkcyk7XG4gICAgfVxuICB9XG5cbiAgZGV0YWNoU3ViTWVudUl0ZW0ocGF0aFBhcmFtOiBNZW51UGF0aFBhcmFtKSB7XG4gICAgY29uc3QgZXhjbHVkZWRJdGVtcyA9IFtdO1xuICAgIHRoaXMuX2RldGFjaFN1Yk1lbnVzKHBhdGhQYXJhbSwgdGhpcy5kYXRhLCBleGNsdWRlZEl0ZW1zKTtcbiAgICBpZiAoIWV4Y2x1ZGVkSXRlbXMubGVuZ3RoKSByZXR1cm47IC8vIFNraXAgaWYgbm8gaXRlbXMgZGV0YWNoZWRcblxuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9IERldGFjaGVkIHN1YiBtZW51czogYCwgZXhjbHVkZWRJdGVtcyk7XG4gICAgLy8gVE9ETyBTdG9yZSBleGNsdWRlZCBpdGVtc1xuICAgIC8vIFRPRE8gUmVzdG9yZSBvbGQgZXhjbHVkZWQgaXRlbXNcbiAgICAvLyB0aGlzLmFkZFN1Yk1lbnVJdGVtcygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIG5nT25TdGFydCgpIHtcbiAgICBjb25zb2xlLmluZm8oYCR7dGhpcy5fbG9nUHJlZml4fSBTdGFydGluZy4uLmApO1xuXG4gICAgY29uc3QgW2FjY291bnQsIGNvbmZpZ10gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICB0aGlzLmFjY291bnRTZXJ2aWNlLnJlYWR5KCksXG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UucmVhZHkoKSxcbiAgICBdKTtcbiAgICBhd2FpdCB0aGlzLl9sb2FkTWVudUl0ZW1zKGNvbmZpZywgYWNjb3VudCk7XG5cbiAgICBjb25zdCBhY2NvdW50RXZlbnQkID0gbWVyZ2UoXG4gICAgICB0aGlzLmFjY291bnRTZXJ2aWNlLm9uTG9naW4sXG4gICAgICB0aGlzLmFjY291bnRTZXJ2aWNlLm9uTG9nb3V0LnBpcGUoXG4gICAgICAgIG1hcChfID0+IG51bGwpXG4gICAgICApLFxuICAgICkucGlwZShcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChhMSwgYTIpID0+IERhdGVVdGlscy5pc1NhbWUoYTE/LnVwZGF0ZURhdGUsIGEyPy51cGRhdGVEYXRlKSksXG4gICAgICBtYXAoYWNjb3VudCA9PiBpc05vdE5pbChhY2NvdW50Py5pZCkgPyBhY2NvdW50IDogbnVsbClcbiAgICApO1xuXG4gICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbihcbiAgICAgIC8vIENvbWJpbmUgY29uZmlnIGFuZCBhY2NvdW50IGV2ZW50c1xuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcsXG4gICAgICAgIGFjY291bnRFdmVudCRcbiAgICAgIF0pLnN1YnNjcmliZShhc3luYyAoW2NvbmZpZywgYWNjb3VudF0pID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH0gUmVjZWl2ZWQgY29uZmlnIG9yIGFjY291bnQgZXZlbnQuIFJlZnJlc2hpbmcgaXRlbXMuLi5gLCBhY2NvdW50KTtcblxuICAgICAgICAvLyBMb2FkIGFsbCBpdGVtc1xuICAgICAgICBhd2FpdCB0aGlzLl9sb2FkTWVudUl0ZW1zKGNvbmZpZywgYWNjb3VudCk7XG5cbiAgICAgICAgLy8gRW1pdCBhY2NvdW50IGNoYW5nZXMgZXZlbnRcbiAgICAgICAgdGhpcy5hY2NvdW50Q2hhbmdlcy5uZXh0KGFjY291bnQpO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbihcbiAgICAgIHRoaXMuXyRsaXN0ZW5Sb3V0ZS5waXBlKFxuICAgICAgICBmaWx0ZXIobGlzdGVuID0+IGxpc3RlbiA9PT0gdHJ1ZSksXG4gICAgICAgIG1lcmdlTWFwKF8gPT4gdGhpcy5yb3V0ZXIuZXZlbnRzKSxcbiAgICAgICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCksXG4gICAgICAgIG1hcCgoZXZlbnQ6IE5hdmlnYXRpb25FbmQpID0+IE1lbnVJdGVtcy5wYXJzZVBhdGhXaXRoUXVlcnkoZXZlbnQudXJsKSksXG4gICAgICApLnN1YnNjcmliZShwYXRoUGFyYW0gPT4ge1xuICAgICAgICB0aGlzLmRldGFjaFN1Yk1lbnVJdGVtKHBhdGhQYXJhbSk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICByZXR1cm4gdGhpcy5kYXRhU3ViamVjdC52YWx1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfYWRkU3ViTWVudUl0ZW0obmV3SXRlbTogTWVudUl0ZW0sIG9wdHM/OiBBZGRTdWJNZW51SXRlbXNPcHRpb24pIHtcbiAgICBvcHRzID0ge1xuICAgICAgc2tpcElmRXhpc3RzOiB0cnVlLFxuICAgICAgLi4ub3B0cyxcbiAgICB9O1xuXG4gICAgLy8gTWFrZSBzdXJlIHBhdGggKGFuZCBwYXRoUGFyYW1zKSBhcmUgZmlsbGVkIGluIHRoZSBzYW1lIHdheVxuICAgIG5ld0l0ZW0gPSBNZW51SXRlbXMucHJlcGFyZUl0ZW0obmV3SXRlbSk7XG5cbiAgICAvLyBGaW5kIGlmIGl0ZW0gYWxyZWFkeSBleGlzdHNcbiAgICBjb25zdCBleGlzdGluZ0l0ZW0gPSB0aGlzLl9maW5kRXhpc3RpbmdJdGVtKG5ld0l0ZW0pO1xuICAgIGlmIChleGlzdGluZ0l0ZW0pIHtcbiAgICAgIGlmIChvcHRzLnNraXBJZkV4aXN0cykge1xuICAgICAgICAvLyBERUJVR1xuICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fSBTa2lwcGluZyBzdWIgaXRlbSAoYWxyZWFkeSBleGlzdClgLCBuZXdJdGVtKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fSBVcGRhdGluZyBleGlzdGluZyBzdWIgaXRlbSAjYCwgZXhpc3RpbmdJdGVtLmlkKTtcbiAgICAgIC8vIFJlcGxhY2UgZXhpc3RpbmcgaXRlbSwgYnV0IGtlZXAgdGhlIGV4aXN0aW5nIGlkXG4gICAgICBuZXdJdGVtLmlkID0gZXhpc3RpbmdJdGVtLmlkO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuX2ZpbmRQYXJlbnQobmV3SXRlbSwgb3B0cz8uYXZhaWxhYmxlUGFyZW50cyk7XG4gICAgaWYgKCFwYXJlbnQpIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHt0aGlzLl9sb2dQcmVmaXh9IFVuYWJsZSB0byBhZGQgc3ViIGl0ZW06IG5vIHBhcmVudCBmb3VuZGApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIEdlbmVyYXRlIGl0ZW0ncyBpZCAoaWYgbmVlZClcbiAgICBpZiAoaXNOaWwobmV3SXRlbS5pZCkpIG5ld0l0ZW0uaWQgPSB0aGlzLl9pdGVtQ291bnRlcisrO1xuXG4gICAgdGhpcy5fYWRkTWVudVRvUGFyZW50KHBhcmVudCwgbmV3SXRlbSk7XG5cbiAgICAvLyBTdGFydCBsaXN0ZW5pbmcgcm91dGVcbiAgICBpZiAoIXRoaXMuXyRsaXN0ZW5Sb3V0ZS52YWx1ZSkgdGhpcy5fJGxpc3RlblJvdXRlLm5leHQodHJ1ZSk7XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBfbG9hZE1lbnVJdGVtcyhjb25maWc6IENvbmZpZ3VyYXRpb258bnVsbCwgYWNjb3VudDogQWNjb3VudHxudWxsKSB7XG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH0gTG9hZGluZyBtZW51IGl0ZW1zLi4uYCk7XG5cbiAgICAvLyBTYXZlIHByZXZpb3VzIGNoaWxkcmVuIG9mIHJvb3QgaXRlbXNcbiAgICBjb25zdCByb290Q2hpbGRyZW4gPSAodGhpcy5kYXRhIHx8IFtdKVxuICAgICAgLnJlZHVjZSgocmVzLCByb290SXRlbSkgPT4gcmVzLmNvbmNhdChyb290SXRlbT8uJGNoaWxkcmVuPy52YWx1ZSB8fCBbXSksIFtdKTtcblxuICAgIC8vIFJlc2V0IGJhc2Ugcm9vdCBpdGVtcyAoY2xlYW4gaXRlbXMgYWRkZWQgYnkgY29uZmlnKVxuICAgIGxldCBpdGVtcyA9IHRoaXMuX3N0YXRpY0l0ZW1zLnNsaWNlKCk7XG5cbiAgICAvLyBDb25jYXQgY29uZmlnJ3MgaXRlbXNcbiAgICBjb25zdCBjb25maWdWYWx1ZTogc3RyaW5nID0gY29uZmlnPy5nZXRQcm9wZXJ0eShDT1JFX0NPTkZJR19PUFRJT05TLk1FTlVfSVRFTVMpO1xuICAgIGlmIChpc05vdE5pbE9yQmxhbmsoY29uZmlnVmFsdWUpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBjb25maWdJdGVtcyA9IEpTT04ucGFyc2UoY29uZmlnVmFsdWUpIGFzIE1lbnVJdGVtW107XG4gICAgICAgIGl0ZW1zID0gKGNvbmZpZ0l0ZW1zIHx8IFtdKS5yZWR1Y2UoKHJlczogTWVudUl0ZW1bXSwgaXRlbSkgPT4ge1xuXG4gICAgICAgICAgLy8gTm9ybWFsaXplIHRoZSBpdGVtXG4gICAgICAgICAgaXRlbSA9IE1lbnVJdGVtcy5wcmVwYXJlSXRlbShpdGVtKTtcblxuICAgICAgICAgIC8vIFNraXAgaXMgYWxyZWFkeSBsb2FkZWRcbiAgICAgICAgICBpZiAocmVzLmZpbmQoKGkpID0+IE1lbnVJdGVtcy5pc1NhbWUoaSwgaXRlbSkpKSByZXR1cm4gcmVzO1xuXG4gICAgICAgICAgLy8gUmV1c2UgZXhpc3RpbmcgaWQsIGlmIHBvc3NpYmxlXG4gICAgICAgICAgY29uc3QgZXhpc3RpbmdJdGVtID0gdGhpcy5kYXRhPy5maW5kKChpKSA9PiBNZW51SXRlbXMuaXNTYW1lKGksIGl0ZW0pKTtcbiAgICAgICAgICBpZiAoZXhpc3RpbmdJdGVtKSB7XG4gICAgICAgICAgICBpdGVtLmlkID0gZXhpc3RpbmdJdGVtLmlkO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpdGVtLmFmdGVyKSB7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHJlcy5maW5kSW5kZXgoaSA9PiBpLnRpdGxlID09PSBpdGVtLmFmdGVyKTtcbiAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlcy5zbGljZSgwLCBpbmRleCArIDEpXG4gICAgICAgICAgICAgICAgLmNvbmNhdChpdGVtKVxuICAgICAgICAgICAgICAgIC5jb25jYXQocmVzLnNsaWNlKGluZGV4ICsgMSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGlmIChpdGVtLmJlZm9yZSkge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSByZXMuZmluZEluZGV4KGkgPT4gaS50aXRsZSA9PT0gaXRlbS5iZWZvcmUpO1xuICAgICAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzLnNsaWNlKDAsIGluZGV4KVxuICAgICAgICAgICAgICAgIC5jb25jYXQoaXRlbSlcbiAgICAgICAgICAgICAgICAuY29uY2F0KHJlcy5zbGljZShpbmRleCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcmVzLmNvbmNhdChpdGVtKTtcbiAgICAgICAgfSwgaXRlbXMpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYCR7dGhpcy5fbG9nUHJlZml4fSBJbnZhbGlkIHZhbHVlIGZvciBvcHRpb24gJyR7Q09SRV9DT05GSUdfT1BUSU9OUy5NRU5VX0lURU1TLmtleX0nLiBFeHBlY3RlZCBhbiBhcnJheSBvZiBtZW51IGl0ZW1gLCBlcnIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZpbHRlciBpdGVtIHVzaW5nIGFjY291bnQgcmlnaHRzXG4gICAgY29uc3Qgb3B0cyA9IHtkZWJ1ZzogdGhpcy5fZGVidWd9O1xuICAgIGl0ZW1zID0gaXRlbXNcbiAgICAgIC5maWx0ZXIoaXRlbSA9PiBNZW51SXRlbXMuY2hlY2tJZlZpc2libGUoaXRlbSwgYWNjb3VudCwgY29uZmlnLCBvcHRzKSlcbiAgICAgIC5tYXAoaXRlbSA9PiB7XG4gICAgICAgIC8vIEdlbmVyYXRlIGl0ZW0ncyBpZCAoaWYgbmVlZClcbiAgICAgICAgaWYgKGlzTmlsKGl0ZW0uaWQpKSBpdGVtLmlkID0gdGhpcy5faXRlbUNvdW50ZXIrKztcblxuICAgICAgICAvLyBSZXBsYWNlIHRpdGxlIHVzaW5nIHByb3BlcnRpZXNcbiAgICAgICAgaWYgKGlzTm90TmlsT3JCbGFuayhpdGVtLnRpdGxlUHJvcGVydHkpICYmIGNvbmZpZykge1xuICAgICAgICAgIGNvbnN0IHRpdGxlID0gY29uZmlnLnByb3BlcnRpZXNbaXRlbS50aXRsZVByb3BlcnR5XTtcbiAgICAgICAgICBpZiAodGl0bGUpIHJldHVybiB7Li4uaXRlbSwgdGl0bGV9OyAvLyBDcmVhdGUgYSBjb3B5LCB0byBrZWVwIHRoZSBvcmlnaW5hbCBpdGVtLnRpdGxlXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICB9KTtcblxuICAgIC8vIFJlLWF0dGFjaCBzdWIgbWVudSBpdGVtc1xuICAgIGlmIChyb290Q2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICBhd2FpdCB0aGlzLmFkZFN1Yk1lbnVJdGVtcyhyb290Q2hpbGRyZW4sIHtza2lwSWZFeGlzdHM6IGZhbHNlLCBhdmFpbGFibGVQYXJlbnRzOiBpdGVtc30pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9IEZvdW5kICR7aXRlbXMubGVuZ3RofSB2aXNpYmxlIGl0ZW1zLi4uYCk7XG5cbiAgICB0aGlzLmRhdGFTdWJqZWN0Lm5leHQoaXRlbXMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9maW5kRXhpc3RpbmdJdGVtKGl0ZW06IE1lbnVJdGVtLCBpdGVtcz86IE1lbnVJdGVtW10pOiBNZW51SXRlbSB7XG4gICAgaXRlbXMgPSBpdGVtcyB8fCB0aGlzLmRhdGE7XG4gICAgaWYgKCFpdGVtcy5sZW5ndGgpIHJldHVybiB1bmRlZmluZWQ7IC8vIE5vdCBmb3VuZFxuICAgIGZvciAoY29uc3QgaSBvZiBpdGVtcykge1xuICAgICAgaWYgKE1lbnVJdGVtcy5pc1NhbWUoaSwgaXRlbSkpIHJldHVybiBpO1xuICAgICAgY29uc3QgY2hpbGQgPSB0aGlzLl9maW5kRXhpc3RpbmdJdGVtKGl0ZW0sIGkuJGNoaWxkcmVuLnZhbHVlKTtcbiAgICAgIGlmIChjaGlsZCkgcmV0dXJuIGNoaWxkO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBfZmluZFBhcmVudChjaGlsZEl0ZW06IE1lbnVJdGVtLCBhdmFpbGFibGVQYXJlbnRzPzogTWVudUl0ZW1bXSk6IE1lbnVJdGVtIHtcbiAgICBpZiAoIWNoaWxkSXRlbT8ucGF0aCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBhdmFpbGFibGVQYXJlbnRzID0gYXZhaWxhYmxlUGFyZW50cyB8fCB0aGlzLmRhdGE7XG5cbiAgICByZXR1cm4gYXZhaWxhYmxlUGFyZW50cy5yZWR1Y2UoKHJlcywgaXRlbSkgPT4ge1xuICAgICAgaWYgKCFpdGVtPy5wYXRoKSByZXR1cm4gcmVzO1xuXG4gICAgICAvLyBBIGZvdW5kIGl0ZW0gYWxyZWFkeSBtYXRjaCB3aXRoIHRoZSBtZW51SXRlbS5wYXJlbnRQYXRoIDoga2VlcCBpdCBhcyBpdFxuICAgICAgLy8gVGhlcmUgaXMgYSBmb3VuZCBjYW5kaWRhdGUgdGhhdCBhbHJlYWR5IG1hdGNoIHRoZSBjdXJyZW50IGNhbmRpZGF0ZSA6IGtlZXAgaXRcbiAgICAgIGlmIChNZW51SXRlbXMuaXNQYXJlbnQoY2hpbGRJdGVtLCByZXMpKSByZXR1cm4gcmVzO1xuXG4gICAgICAvLyBJZiB0aGUgbWVudSBpdGVtIGhhcyBleHBsaWNpdCBwYXJlbnRQYXRoIGFuZCBpdHMgcGF0aCBhbmQgcGF0aCBwYXJhbSBhcmUgdGhlIHNhbWUgYXMgdGhlIGNhbmRpZGF0ZSAgOiB1c2UgaXQgYXMgcGFyZW50XG4gICAgICBpZiAoTWVudUl0ZW1zLmlzUGFyZW50KGNoaWxkSXRlbSwgaXRlbSkpIHJldHVybiBpdGVtO1xuXG4gICAgICBpZiAoIXJlcyAmJiBpdGVtLiRjaGlsZHJlbj8udmFsdWUubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maW5kUGFyZW50KGNoaWxkSXRlbSwgaXRlbS4kY2hpbGRyZW4/LnZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9LCB1bmRlZmluZWQpO1xuICB9O1xuXG4gIHByb3RlY3RlZCBfYWRkTWVudVRvUGFyZW50KHBhcmVudDogTWVudUl0ZW0sIGNoaWxkOiBNZW51SXRlbSkge1xuXG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1BZGRpbmcgYSBzdWItbWVudSAke01lbnVJdGVtcy5nZXRVcmwoY2hpbGQpfSB0byBwYXJlbnQgbWVudSAke01lbnVJdGVtcy5nZXRVcmwocGFyZW50KX1gKTtcblxuICAgIC8vIEF2b2lkIHRvIGtlZXAgaWRlbnRpY2FsIG1lbnUgaXRlbSAod2UgcmVwbGFjZSBpdCB3aXRoIHRoZSBuZXcgY2hpbGQgbWVudSBpdGVtKVxuICAgIC8vaWYgKCFwYXJlbnQ/LiRjaGlsZHJlbikgcGFyZW50LiRjaGlsZHJlbiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWVudUl0ZW1bXT4oW10pO1xuICAgIGNvbnN0IGNoaWxkcmVuID0gcGFyZW50LiRjaGlsZHJlbi52YWx1ZSB8fCBbXTtcbiAgICBjb25zdCBleGlzdGluZ0luZGV4ID0gY2hpbGRyZW4uZmluZEluZGV4KGl0ZW0gPT4gTWVudUl0ZW1zLmlzU2FtZShjaGlsZCwgaXRlbSkpO1xuICAgIGlmIChleGlzdGluZ0luZGV4ICE9PSAtMSkge1xuICAgICAgY2hpbGRyZW5bZXhpc3RpbmdJbmRleF0gPSBjaGlsZDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjaGlsZHJlbi5wdXNoKGNoaWxkKTtcbiAgICB9XG4gICAgcGFyZW50LiRjaGlsZHJlbi5uZXh0KGNoaWxkcmVuKTtcblxuICB9XG5cbiAgcHJvdGVjdGVkIF9kZXRhY2hTdG9yZUFuZFJlc3RvcmUocGF0aFBhcmFtOiBNZW51UGF0aFBhcmFtKSB7XG4gICAgY29uc3QgZXhjbHVkZWRJdGVtcyA9IFtdO1xuICAgIHRoaXMuX2RldGFjaFN1Yk1lbnVzKHBhdGhQYXJhbSwgdGhpcy5kYXRhLCBleGNsdWRlZEl0ZW1zKTtcbiAgICBpZiAoIWV4Y2x1ZGVkSXRlbXMubGVuZ3RoKSByZXR1cm47IC8vIFNraXAgaWYgbm8gaXRlbXMgZGV0YWNoZWRcblxuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9IERldGFjaGVkIHN1YiBtZW51czogYCwgZXhjbHVkZWRJdGVtcyk7XG4gICAgLy8gVE9ETyBTdG9yZSBleGNsdWRlZCBpdGVtc1xuICAgIC8vIFRPRE8gUmVzdG9yZSBvbGQgZXhjbHVkZWQgaXRlbXNcbiAgICAvLyB0aGlzLmFkZFN1Yk1lbnVJdGVtcygpO1xuXG4gIH1cblxuICBwcm90ZWN0ZWQgX2RldGFjaFN1Yk1lbnVzKGN1cnJlbnRQYXRoUGFyYW06IE1lbnVQYXRoUGFyYW0sIGl0ZW1zPzogTWVudUl0ZW1bXSwgZXhjbHVkZWRJdGVtcz86IE1lbnVJdGVtW10pIHtcbiAgICBpdGVtcyA9IGl0ZW1zIHx8IHRoaXMuZGF0YTtcbiAgICBleGNsdWRlZEl0ZW1zID0gZXhjbHVkZWRJdGVtcyB8fCBbXTtcbiAgICBpdGVtcyA9IGl0ZW1zLmZpbHRlcihpdGVtID0+IHtcbiAgICAgIGlmICghaXRlbS5wYXJlbnRQYXRoKSByZXR1cm4gdHJ1ZTsgLy8gQWx3YXlzIGtlZXAgcm9vdCBpdGVtc1xuICAgICAgaWYgKE1lbnVJdGVtcy5pc1Bpbm5lZChpdGVtKSkgcmV0dXJuIHRydWU7IC8vIEFsd2F5cyBrZWVwIHBpbm5lZCBpdGVtc1xuXG4gICAgICAvLyBLZWVwIGVhY2ggbWVudSBpdGVtcyBpbiB0aGUgc2NvcGUgb2YgdGhlIGN1cnJlbnQgdXJsIHBhdGhcbiAgICAgIGlmIChjdXJyZW50UGF0aFBhcmFtLnBhdGguc3RhcnRzV2l0aChpdGVtLnBhdGgpKSByZXR1cm4gdHJ1ZTtcblxuICAgICAgLy8gRWxzZSwgZXhjbHVkZVxuICAgICAgZXhjbHVkZWRJdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xuICAgIGl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuX2RldGFjaFN1Yk1lbnVzKGN1cnJlbnRQYXRoUGFyYW0sIGl0ZW0uJGNoaWxkcmVuLnZhbHVlIHx8IFtdLCBleGNsdWRlZEl0ZW1zKTtcbiAgICAgIGl0ZW0uJGNoaWxkcmVuLm5leHQoY2hpbGRyZW4pO1xuICAgIH0pO1xuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG59XG4iXX0=
330
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL21lbnUvbWVudS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RixPQUFPLEVBQVksU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFlLFdBQVcsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRW5GLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSW5FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDOzs7Ozs7O0FBR3RHLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFzQixJQUFJLENBQUM7QUFlOUQsTUFBTSxPQUFPLFdBQVksU0FBUSwwQkFBc0M7SUFZckUsWUFDWSxlQUFnQyxFQUNoQyxhQUE0QixFQUM1QixjQUE4QixFQUM5QixNQUFjLEVBQ08sV0FBd0IsRUFDbkIsV0FBd0I7UUFFNUQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxD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d0dBMVZVLFdBQVcsa0lBaUJaLFdBQVcsYUFDQyxjQUFjOzRHQWxCekIsV0FBVyxjQUZWLE1BQU07MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQWtCSSxNQUFNOzJCQUFDLFdBQVc7OzBCQUNsQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1lcmdlLCBtZXJnZU1hcCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWVudUl0ZW0sIE1lbnVJdGVtcyB9IGZyb20gJy4vbWVudS5tb2RlbCc7XG5pbXBvcnQgeyBBUFBfTUVOVV9JVEVNUyB9IGZyb20gJy4vbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEVudmlyb25tZW50LCBFTlZJUk9OTUVOVCB9IGZyb20gJy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5jbGFzcyc7XG5pbXBvcnQgeyBQbGF0Zm9ybVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wbGF0Zm9ybS5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGVVdGlscyB9IGZyb20gJy4uLy4uL3NoYXJlZC9kYXRlcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBY2NvdW50U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2FjY291bnQuc2VydmljZSc7XG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uL3NlcnZpY2VzL21vZGVsL2NvbmZpZy5tb2RlbCc7XG5pbXBvcnQgeyBDT1JFX0NPTkZJR19PUFRJT05TIH0gZnJvbSAnLi4vc2VydmljZXMvY29uZmlnL2NvcmUuY29uZmlnJztcbmltcG9ydCB7IGlzTmlsLCBpc05vdE5pbCwgaXNOb3ROaWxPckJsYW5rIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBBY2NvdW50IH0gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvYWNjb3VudC5tb2RlbCc7XG5pbXBvcnQgeyBTdGFydGFibGVPYnNlcnZhYmxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9zdGFydGFibGUtb2JzZXJ2YWJsZS1zZXJ2aWNlLmNsYXNzJztcblxuZXhwb3J0IHR5cGUgU3BsaXRQYW5lU2hvd1doZW4gPSBib29sZWFuIHwgJ2xnJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX01FTlVfU0hPV19XSEVOOiBTcGxpdFBhbmVTaG93V2hlbiA9ICdsZyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkU3ViTWVudUl0ZW1zT3B0aW9uIHtcbiAgc2tpcElmRXhpc3RzPzogYm9vbGVhbjtcbiAgYXZhaWxhYmxlUGFyZW50cz86IE1lbnVJdGVtW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVudVBhdGhQYXJhbSB7XG4gIHBhdGg6IHN0cmluZztcbiAgcGFyYW1zOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfTtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTWVudVNlcnZpY2UgZXh0ZW5kcyBTdGFydGFibGVPYnNlcnZhYmxlU2VydmljZTxNZW51SXRlbVtdPiB7XG5cbiAgcmVhZG9ubHkgYWNjb3VudENoYW5nZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFjY291bnQ+KHVuZGVmaW5lZCk7XG5cbiAgcHJpdmF0ZSBfc3RhdGljSXRlbXM6IE1lbnVJdGVtW107XG4gIHByaXZhdGUgX2l0ZW1Db3VudGVyID0gMDtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nUHJlZml4ID0gJ1ttZW51LXNlcnZpY2VdICc7XG4gIHByaXZhdGUgcmVhZG9ubHkgXyRvcGVuZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF8kc3BsaXRQYW5lV2hlbiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U3BsaXRQYW5lU2hvd1doZW4+KERFRkFVTFRfTUVOVV9TSE9XX1dIRU4pO1xuICBwcml2YXRlIHJlYWRvbmx5IF8kZW5hYmxlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgXyRsaXN0ZW5Sb3V0ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBwbGF0Zm9ybVNlcnZpY2U6IFBsYXRmb3JtU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYWNjb3VudFNlcnZpY2U6IEFjY291bnRTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcbiAgICBASW5qZWN0KEVOVklST05NRU5UKSBwcm90ZWN0ZWQgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50LFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVBQX01FTlVfSVRFTVMpIHN0YXRpY0l0ZW1zPzogTWVudUl0ZW1bXVxuICApIHtcbiAgICBzdXBlcihwbGF0Zm9ybVNlcnZpY2UpO1xuICAgIHRoaXMuX2RlYnVnID0gIWVudmlyb25tZW50LnByb2R1Y3Rpb247XG4gICAgdGhpcy5fc3RhdGljSXRlbXMgPSAoc3RhdGljSXRlbXMgfHwgW10pLm1hcChpID0+IHtcbiAgICAgIGNvbnN0IGl0ZW0gPSBNZW51SXRlbXMucHJlcGFyZUl0ZW0oaSk7XG4gICAgICBpdGVtLmlkID0gdGhpcy5faXRlbUNvdW50ZXIrKztcbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IG9wZW5lZCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fJG9wZW5lZC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBzcGxpdFBhbmVXaGVuKCk6IE9ic2VydmFibGU8U3BsaXRQYW5lU2hvd1doZW4+IHtcbiAgICByZXR1cm4gdGhpcy5fJHNwbGl0UGFuZVdoZW4uYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgZW5hYmxlZCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fJGVuYWJsZWQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBlbmFibGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl8kZW5hYmxlZC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHNldFNwbGl0UGFuZVNob3dXaGVuKHZhbHVlOiBTcGxpdFBhbmVTaG93V2hlbikge1xuICAgIGlmICh0aGlzLl8kc3BsaXRQYW5lV2hlbi52YWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIHRoaXMuXyRzcGxpdFBhbmVXaGVuLm5leHQodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZVNwbGl0UGFuZVdoZW4oKSB7XG4gICAgaWYgKHRoaXMuXyRzcGxpdFBhbmVXaGVuLnZhbHVlICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5fJHNwbGl0UGFuZVdoZW4ubmV4dChmYWxzZSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5fJHNwbGl0UGFuZVdoZW4ubmV4dChERUZBVUxUX01FTlVfU0hPV19XSEVOKTtcbiAgICB9XG4gIH1cblxuICBfbWFya0FzT3BlbmVkKCkge1xuICAgIHRoaXMuXyRvcGVuZWQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIF9tYXJrQXNDbG9zZWQoKSB7XG4gICAgdGhpcy5fJG9wZW5lZC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIGFzeW5jIGFkZFN1Yk1lbnVJdGVtcyhuZXdJdGVtczogTWVudUl0ZW1bXSwgb3B0cz86IEFkZFN1Yk1lbnVJdGVtc09wdGlvbikge1xuICAgIGlmICghdGhpcy5zdGFydGVkKSBhd2FpdCB0aGlzLnJlYWR5KCk7XG4gICAgcmV0dXJuIG5ld0l0ZW1zLm1hcChpID0+IHRoaXMuX2FkZFN1Yk1lbnVJdGVtKGksIG9wdHMpKTtcbiAgfVxuXG4gIGFzeW5jIGFkZFN1Yk1lbnVJdGVtKG5ld0l0ZW06IE1lbnVJdGVtLCBvcHRzPzogQWRkU3ViTWVudUl0ZW1zT3B0aW9uKSB7XG4gICAgaWYgKCF0aGlzLnN0YXJ0ZWQpIGF3YWl0IHRoaXMucmVhZHkoKTtcbiAgICByZXR1cm4gdGhpcy5fYWRkU3ViTWVudUl0ZW0obmV3SXRlbSwgb3B0cyk7XG4gIH1cblxuICByZW1vdmVTdWJNZW51SXRlbShpdGVtOiBNZW51SXRlbSkge1xuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuX2ZpbmRQYXJlbnQoaXRlbSk7XG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgY29uc3QgbmV3Q2hpbGRzID0gcGFyZW50LiRjaGlsZHJlbi52YWx1ZS5maWx0ZXIoaSA9PiAhTWVudUl0ZW1zLmlzU2FtZShpdGVtLCBpKSk7XG4gICAgICBwYXJlbnQuJGNoaWxkcmVuLm5leHQobmV3Q2hpbGRzKTtcbiAgICB9XG4gIH1cblxuICBkZXRhY2hTdWJNZW51SXRlbShwYXRoUGFyYW06IE1lbnVQYXRoUGFyYW0pIHtcbiAgICBjb25zdCBleGNsdWRlZEl0ZW1zID0gW107XG4gICAgdGhpcy5fZGV0YWNoU3ViTWVudXMocGF0aFBhcmFtLCB0aGlzLmRhdGEsIGV4Y2x1ZGVkSXRlbXMpO1xuICAgIGlmICghZXhjbHVkZWRJdGVtcy5sZW5ndGgpIHJldHVybjsgLy8gU2tpcCBpZiBubyBpdGVtcyBkZXRhY2hlZFxuXG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1EZXRhY2hlZCBzdWIgbWVudXM6IGAsIGV4Y2x1ZGVkSXRlbXMpO1xuICAgIC8vIFRPRE8gU3RvcmUgZXhjbHVkZWQgaXRlbXNcbiAgICAvLyBUT0RPIFJlc3RvcmUgb2xkIGV4Y2x1ZGVkIGl0ZW1zXG4gICAgLy8gdGhpcy5hZGRTdWJNZW51SXRlbXMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBuZ09uU3RhcnQoKSB7XG4gICAgY29uc29sZS5pbmZvKGAke3RoaXMuX2xvZ1ByZWZpeH1TdGFydGluZy4uLmApO1xuXG4gICAgY29uc3QgW2FjY291bnQsIGNvbmZpZ10gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICB0aGlzLmFjY291bnRTZXJ2aWNlLnJlYWR5KCksXG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UucmVhZHkoKSxcbiAgICBdKTtcbiAgICBhd2FpdCB0aGlzLl9sb2FkTWVudUl0ZW1zKGNvbmZpZywgYWNjb3VudCk7XG5cbiAgICBjb25zdCBhY2NvdW50RXZlbnQkID0gbWVyZ2UoXG4gICAgICB0aGlzLmFjY291bnRTZXJ2aWNlLm9uTG9naW4sXG4gICAgICB0aGlzLmFjY291bnRTZXJ2aWNlLm9uTG9nb3V0LnBpcGUoXG4gICAgICAgIG1hcChfID0+IG51bGwpXG4gICAgICApLFxuICAgICkucGlwZShcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChhMSwgYTIpID0+IERhdGVVdGlscy5pc1NhbWUoYTE/LnVwZGF0ZURhdGUsIGEyPy51cGRhdGVEYXRlKSksXG4gICAgICBtYXAoYWNjb3VudCA9PiBpc05vdE5pbChhY2NvdW50Py5pZCkgPyBhY2NvdW50IDogbnVsbClcbiAgICApO1xuXG4gICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbihcbiAgICAgIC8vIENvbWJpbmUgY29uZmlnIGFuZCBhY2NvdW50IGV2ZW50c1xuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcsXG4gICAgICAgIGFjY291bnRFdmVudCRcbiAgICAgIF0pLnN1YnNjcmliZShhc3luYyAoW2NvbmZpZywgYWNjb3VudF0pID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1SZWNlaXZlZCBjb25maWcgb3IgYWNjb3VudCBldmVudC4gUmVmcmVzaGluZyBpdGVtcy4uLmAsIGFjY291bnQpO1xuXG4gICAgICAgIC8vIExvYWQgYWxsIGl0ZW1zXG4gICAgICAgIGF3YWl0IHRoaXMuX2xvYWRNZW51SXRlbXMoY29uZmlnLCBhY2NvdW50KTtcblxuICAgICAgICAvLyBFbWl0IGFjY291bnQgY2hhbmdlcyBldmVudFxuICAgICAgICB0aGlzLmFjY291bnRDaGFuZ2VzLm5leHQoYWNjb3VudCk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKFxuICAgICAgdGhpcy5fJGxpc3RlblJvdXRlLnBpcGUoXG4gICAgICAgIGZpbHRlcihsaXN0ZW4gPT4gbGlzdGVuID09PSB0cnVlKSxcbiAgICAgICAgbWVyZ2VNYXAoXyA9PiB0aGlzLnJvdXRlci5ldmVudHMpLFxuICAgICAgICBmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSxcbiAgICAgICAgbWFwKChldmVudDogTmF2aWdhdGlvbkVuZCkgPT4gTWVudUl0ZW1zLnBhcnNlUGF0aFdpdGhRdWVyeShldmVudC51cmwpKSxcbiAgICAgICkuc3Vic2NyaWJlKHBhdGhQYXJhbSA9PiB7XG4gICAgICAgIHRoaXMuZGV0YWNoU3ViTWVudUl0ZW0ocGF0aFBhcmFtKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzLmRhdGFTdWJqZWN0LnZhbHVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9hZGRTdWJNZW51SXRlbShuZXdJdGVtOiBNZW51SXRlbSwgb3B0cz86IEFkZFN1Yk1lbnVJdGVtc09wdGlvbikge1xuICAgIG9wdHMgPSB7XG4gICAgICBza2lwSWZFeGlzdHM6IHRydWUsXG4gICAgICAuLi5vcHRzLFxuICAgIH07XG5cbiAgICAvLyBNYWtlIHN1cmUgcGF0aCAoYW5kIHBhdGhQYXJhbXMpIGFyZSBmaWxsZWQgaW4gdGhlIHNhbWUgd2F5XG4gICAgbmV3SXRlbSA9IE1lbnVJdGVtcy5wcmVwYXJlSXRlbShuZXdJdGVtKTtcblxuICAgIC8vIEZpbmQgaWYgaXRlbSBhbHJlYWR5IGV4aXN0c1xuICAgIGNvbnN0IGV4aXN0aW5nSXRlbSA9IHRoaXMuX2ZpbmRFeGlzdGluZ0l0ZW0obmV3SXRlbSk7XG4gICAgaWYgKGV4aXN0aW5nSXRlbSkge1xuICAgICAgaWYgKG9wdHMuc2tpcElmRXhpc3RzKSB7XG4gICAgICAgIC8vIERFQlVHXG4gICAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9U2tpcHBpbmcgc3ViIGl0ZW0gKGFscmVhZHkgZXhpc3QpYCwgbmV3SXRlbSk7XG4gICAgICAgIHJldHVybiBleGlzdGluZ0l0ZW07XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9VXBkYXRpbmcgZXhpc3Rpbmcgc3ViIGl0ZW0gI2AsIGV4aXN0aW5nSXRlbS5pZCk7XG4gICAgICAvLyBSZXBsYWNlIGV4aXN0aW5nIGl0ZW0sIGJ1dCBrZWVwIHRoZSBleGlzdGluZyBpZFxuICAgICAgbmV3SXRlbS5pZCA9IGV4aXN0aW5nSXRlbS5pZDtcbiAgICAgIG5ld0l0ZW0uJGNoaWxkcmVuID0gZXhpc3RpbmdJdGVtLiRjaGlsZHJlbjtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLl9maW5kUGFyZW50KG5ld0l0ZW0sIG9wdHM/LmF2YWlsYWJsZVBhcmVudHMpO1xuICAgIGlmICghcGFyZW50KSB7XG4gICAgICBjb25zb2xlLndhcm4oYCR7dGhpcy5fbG9nUHJlZml4fVVuYWJsZSB0byBhZGQgc3ViIGl0ZW06IG5vIHBhcmVudCBmb3VuZGApO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gR2VuZXJhdGUgaXRlbSdzIGlkIChpZiBuZWVkKVxuICAgIGlmIChpc05pbChuZXdJdGVtLmlkKSkgbmV3SXRlbS5pZCA9IHRoaXMuX2l0ZW1Db3VudGVyKys7XG5cbiAgICB0aGlzLl9hZGRNZW51VG9QYXJlbnQocGFyZW50LCBuZXdJdGVtKTtcblxuICAgIC8vIFN0YXJ0IGxpc3RlbmluZyByb3V0ZVxuICAgIGlmICghdGhpcy5fJGxpc3RlblJvdXRlLnZhbHVlKSB0aGlzLl8kbGlzdGVuUm91dGUubmV4dCh0cnVlKTtcblxuICAgIHJldHVybiBuZXdJdGVtO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIF9sb2FkTWVudUl0ZW1zKGNvbmZpZzogQ29uZmlndXJhdGlvbnxudWxsLCBhY2NvdW50OiBBY2NvdW50fG51bGwpIHtcbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fUxvYWRpbmcgbWVudSBpdGVtcy4uLmApO1xuXG4gICAgLy8gU2F2ZSBwcmV2aW91cyBjaGlsZHJlbiBvZiByb290IGl0ZW1zXG4gICAgY29uc3Qgcm9vdENoaWxkcmVuID0gKHRoaXMuZGF0YSB8fCBbXSlcbiAgICAgIC5yZWR1Y2UoKHJlcywgcm9vdEl0ZW0pID0+IHJlcy5jb25jYXQocm9vdEl0ZW0/LiRjaGlsZHJlbj8udmFsdWUgfHwgW10pLCBbXSk7XG5cbiAgICAvLyBSZXNldCBiYXNlIHJvb3QgaXRlbXMgKGNsZWFuIGl0ZW1zIGFkZGVkIGJ5IGNvbmZpZylcbiAgICBsZXQgaXRlbXMgPSB0aGlzLl9zdGF0aWNJdGVtcy5zbGljZSgpO1xuXG4gICAgLy8gQ29uY2F0IGNvbmZpZydzIGl0ZW1zXG4gICAgY29uc3QgY29uZmlnVmFsdWU6IHN0cmluZyA9IGNvbmZpZz8uZ2V0UHJvcGVydHkoQ09SRV9DT05GSUdfT1BUSU9OUy5NRU5VX0lURU1TKTtcbiAgICBpZiAoaXNOb3ROaWxPckJsYW5rKGNvbmZpZ1ZhbHVlKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgY29uZmlnSXRlbXMgPSBKU09OLnBhcnNlKGNvbmZpZ1ZhbHVlKSBhcyBNZW51SXRlbVtdO1xuICAgICAgICBpdGVtcyA9IChjb25maWdJdGVtcyB8fCBbXSkucmVkdWNlKChyZXM6IE1lbnVJdGVtW10sIGl0ZW0pID0+IHtcblxuICAgICAgICAgIC8vIE5vcm1hbGl6ZSB0aGUgaXRlbVxuICAgICAgICAgIGl0ZW0gPSBNZW51SXRlbXMucHJlcGFyZUl0ZW0oaXRlbSk7XG5cbiAgICAgICAgICAvLyBTa2lwIGlzIGFscmVhZHkgbG9hZGVkXG4gICAgICAgICAgaWYgKHJlcy5maW5kKChpKSA9PiBNZW51SXRlbXMuaXNTYW1lKGksIGl0ZW0pKSkgcmV0dXJuIHJlcztcblxuICAgICAgICAgIC8vIFJldXNlIGV4aXN0aW5nIGlkLCBpZiBwb3NzaWJsZVxuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSXRlbSA9IHRoaXMuZGF0YT8uZmluZCgoaSkgPT4gTWVudUl0ZW1zLmlzU2FtZShpLCBpdGVtKSk7XG4gICAgICAgICAgaWYgKGV4aXN0aW5nSXRlbSkge1xuICAgICAgICAgICAgaXRlbS5pZCA9IGV4aXN0aW5nSXRlbS5pZDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoaXRlbS5hZnRlcikge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSByZXMuZmluZEluZGV4KGkgPT4gaS50aXRsZSA9PT0gaXRlbS5hZnRlcik7XG4gICAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgIHJldHVybiByZXMuc2xpY2UoMCwgaW5kZXggKyAxKVxuICAgICAgICAgICAgICAgIC5jb25jYXQoaXRlbSlcbiAgICAgICAgICAgICAgICAuY29uY2F0KHJlcy5zbGljZShpbmRleCArIDEpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBpZiAoaXRlbS5iZWZvcmUpIHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gcmVzLmZpbmRJbmRleChpID0+IGkudGl0bGUgPT09IGl0ZW0uYmVmb3JlKTtcbiAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlcy5zbGljZSgwLCBpbmRleClcbiAgICAgICAgICAgICAgICAuY29uY2F0KGl0ZW0pXG4gICAgICAgICAgICAgICAgLmNvbmNhdChyZXMuc2xpY2UoaW5kZXgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHJlcy5jb25jYXQoaXRlbSk7XG4gICAgICAgIH0sIGl0ZW1zKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGAke3RoaXMuX2xvZ1ByZWZpeH1JbnZhbGlkIHZhbHVlIGZvciBvcHRpb24gJyR7Q09SRV9DT05GSUdfT1BUSU9OUy5NRU5VX0lURU1TLmtleX0nLiBFeHBlY3RlZCBhbiBhcnJheSBvZiBtZW51IGl0ZW1gLCBlcnIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZpbHRlciBpdGVtIHVzaW5nIGFjY291bnQgcmlnaHRzXG4gICAgY29uc3Qgb3B0cyA9IHtkZWJ1ZzogdGhpcy5fZGVidWd9O1xuICAgIGl0ZW1zID0gaXRlbXNcbiAgICAgIC5maWx0ZXIoaXRlbSA9PiBNZW51SXRlbXMuY2hlY2tJZlZpc2libGUoaXRlbSwgYWNjb3VudCwgY29uZmlnLCBvcHRzKSlcbiAgICAgIC5tYXAoaXRlbSA9PiB7XG4gICAgICAgIC8vIEdlbmVyYXRlIGl0ZW0ncyBpZCAoaWYgbmVlZClcbiAgICAgICAgaWYgKGlzTmlsKGl0ZW0uaWQpKSBpdGVtLmlkID0gdGhpcy5faXRlbUNvdW50ZXIrKztcblxuICAgICAgICAvLyBSZXBsYWNlIHRpdGxlIHVzaW5nIHByb3BlcnRpZXNcbiAgICAgICAgaWYgKGlzTm90TmlsT3JCbGFuayhpdGVtLnRpdGxlUHJvcGVydHkpICYmIGNvbmZpZykge1xuICAgICAgICAgIGNvbnN0IHRpdGxlID0gY29uZmlnLnByb3BlcnRpZXNbaXRlbS50aXRsZVByb3BlcnR5XTtcbiAgICAgICAgICBpZiAodGl0bGUpIHJldHVybiB7Li4uaXRlbSwgdGl0bGV9OyAvLyBDcmVhdGUgYSBjb3B5LCB0byBrZWVwIHRoZSBvcmlnaW5hbCBpdGVtLnRpdGxlXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICB9KTtcblxuICAgIC8vIFJlLWF0dGFjaCBzdWIgbWVudSBpdGVtc1xuICAgIGlmIChyb290Q2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICBhd2FpdCB0aGlzLmFkZFN1Yk1lbnVJdGVtcyhyb290Q2hpbGRyZW4sIHtza2lwSWZFeGlzdHM6IGZhbHNlLCBhdmFpbGFibGVQYXJlbnRzOiBpdGVtc30pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9Rm91bmQgJHtpdGVtcy5sZW5ndGh9IHZpc2libGUgaXRlbXMuLi5gKTtcblxuICAgIHRoaXMuZGF0YVN1YmplY3QubmV4dChpdGVtcyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2ZpbmRFeGlzdGluZ0l0ZW0oaXRlbTogTWVudUl0ZW0sIGl0ZW1zPzogTWVudUl0ZW1bXSk6IE1lbnVJdGVtIHtcbiAgICBpdGVtcyA9IGl0ZW1zIHx8IHRoaXMuZGF0YTtcbiAgICBpZiAoIWl0ZW1zLmxlbmd0aCkgcmV0dXJuIHVuZGVmaW5lZDsgLy8gTm90IGZvdW5kXG4gICAgZm9yIChjb25zdCBpIG9mIGl0ZW1zKSB7XG4gICAgICBpZiAoTWVudUl0ZW1zLmlzU2FtZShpLCBpdGVtKSkgcmV0dXJuIGk7XG4gICAgICBjb25zdCBjaGlsZCA9IHRoaXMuX2ZpbmRFeGlzdGluZ0l0ZW0oaXRlbSwgaS4kY2hpbGRyZW4udmFsdWUpO1xuICAgICAgaWYgKGNoaWxkKSByZXR1cm4gY2hpbGQ7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIF9maW5kUGFyZW50KGNoaWxkSXRlbTogTWVudUl0ZW0sIGF2YWlsYWJsZVBhcmVudHM/OiBNZW51SXRlbVtdKTogTWVudUl0ZW0ge1xuICAgIGlmICghY2hpbGRJdGVtPy5wYXRoKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGF2YWlsYWJsZVBhcmVudHMgPSBhdmFpbGFibGVQYXJlbnRzIHx8IHRoaXMuZGF0YTtcblxuICAgIHJldHVybiBhdmFpbGFibGVQYXJlbnRzLnJlZHVjZSgocmVzLCBpdGVtKSA9PiB7XG4gICAgICBpZiAoIWl0ZW0/LnBhdGgpIHJldHVybiByZXM7XG5cbiAgICAgIC8vIEEgZm91bmQgaXRlbSBhbHJlYWR5IG1hdGNoIHdpdGggdGhlIG1lbnVJdGVtLnBhcmVudFBhdGggOiBrZWVwIGl0IGFzIGl0XG4gICAgICAvLyBUaGVyZSBpcyBhIGZvdW5kIGNhbmRpZGF0ZSB0aGF0IGFscmVhZHkgbWF0Y2ggdGhlIGN1cnJlbnQgY2FuZGlkYXRlIDoga2VlcCBpdFxuICAgICAgaWYgKE1lbnVJdGVtcy5pc1BhcmVudChjaGlsZEl0ZW0sIHJlcykpIHJldHVybiByZXM7XG5cbiAgICAgIC8vIElmIHRoZSBtZW51IGl0ZW0gaGFzIGV4cGxpY2l0IHBhcmVudFBhdGggYW5kIGl0cyBwYXRoIGFuZCBwYXRoIHBhcmFtIGFyZSB0aGUgc2FtZSBhcyB0aGUgY2FuZGlkYXRlICA6IHVzZSBpdCBhcyBwYXJlbnRcbiAgICAgIGlmIChNZW51SXRlbXMuaXNQYXJlbnQoY2hpbGRJdGVtLCBpdGVtKSkgcmV0dXJuIGl0ZW07XG5cbiAgICAgIGlmICghcmVzICYmIGl0ZW0uJGNoaWxkcmVuPy52YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbmRQYXJlbnQoY2hpbGRJdGVtLCBpdGVtLiRjaGlsZHJlbj8udmFsdWUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0sIHVuZGVmaW5lZCk7XG4gIH07XG5cbiAgcHJvdGVjdGVkIF9hZGRNZW51VG9QYXJlbnQocGFyZW50OiBNZW51SXRlbSwgY2hpbGQ6IE1lbnVJdGVtKSB7XG5cbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fUFkZGluZyBhIHN1Yi1tZW51ICR7TWVudUl0ZW1zLmdldFVybChjaGlsZCl9IHRvIHBhcmVudCBtZW51ICR7TWVudUl0ZW1zLmdldFVybChwYXJlbnQpfWApO1xuXG4gICAgLy8gQXZvaWQgdG8ga2VlcCBpZGVudGljYWwgbWVudSBpdGVtICh3ZSByZXBsYWNlIGl0IHdpdGggdGhlIG5ldyBjaGlsZCBtZW51IGl0ZW0pXG4gICAgLy9pZiAoIXBhcmVudD8uJGNoaWxkcmVuKSBwYXJlbnQuJGNoaWxkcmVuID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNZW51SXRlbVtdPihbXSk7XG4gICAgY29uc3QgY2hpbGRyZW4gPSBwYXJlbnQuJGNoaWxkcmVuLnZhbHVlIHx8IFtdO1xuICAgIGNvbnN0IGV4aXN0aW5nSW5kZXggPSBjaGlsZHJlbi5maW5kSW5kZXgoaXRlbSA9PiBNZW51SXRlbXMuaXNTYW1lKGNoaWxkLCBpdGVtKSk7XG4gICAgaWYgKGV4aXN0aW5nSW5kZXggIT09IC0xKSB7XG4gICAgICBjaGlsZHJlbltleGlzdGluZ0luZGV4XSA9IGNoaWxkO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgIH1cbiAgICBwYXJlbnQuJGNoaWxkcmVuLm5leHQoY2hpbGRyZW4pO1xuXG4gIH1cblxuICBwcm90ZWN0ZWQgX2RldGFjaFN0b3JlQW5kUmVzdG9yZShwYXRoUGFyYW06IE1lbnVQYXRoUGFyYW0pIHtcbiAgICBjb25zdCBleGNsdWRlZEl0ZW1zID0gW107XG4gICAgdGhpcy5fZGV0YWNoU3ViTWVudXMocGF0aFBhcmFtLCB0aGlzLmRhdGEsIGV4Y2x1ZGVkSXRlbXMpO1xuICAgIGlmICghZXhjbHVkZWRJdGVtcy5sZW5ndGgpIHJldHVybjsgLy8gU2tpcCBpZiBubyBpdGVtcyBkZXRhY2hlZFxuXG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1EZXRhY2hlZCBzdWIgbWVudXM6IGAsIGV4Y2x1ZGVkSXRlbXMpO1xuICAgIC8vIFRPRE8gU3RvcmUgZXhjbHVkZWQgaXRlbXNcbiAgICAvLyBUT0RPIFJlc3RvcmUgb2xkIGV4Y2x1ZGVkIGl0ZW1zXG4gICAgLy8gdGhpcy5hZGRTdWJNZW51SXRlbXMoKTtcblxuICB9XG5cbiAgcHJvdGVjdGVkIF9kZXRhY2hTdWJNZW51cyhjdXJyZW50UGF0aFBhcmFtOiBNZW51UGF0aFBhcmFtLCBpdGVtcz86IE1lbnVJdGVtW10sIGV4Y2x1ZGVkSXRlbXM/OiBNZW51SXRlbVtdKSB7XG4gICAgaXRlbXMgPSBpdGVtcyB8fCB0aGlzLmRhdGE7XG4gICAgZXhjbHVkZWRJdGVtcyA9IGV4Y2x1ZGVkSXRlbXMgfHwgW107XG4gICAgaXRlbXMgPSBpdGVtcy5maWx0ZXIoaXRlbSA9PiB7XG4gICAgICBpZiAoIWl0ZW0ucGFyZW50UGF0aCkgcmV0dXJuIHRydWU7IC8vIEFsd2F5cyBrZWVwIHJvb3QgaXRlbXNcbiAgICAgIGlmIChNZW51SXRlbXMuaXNQaW5uZWQoaXRlbSkpIHJldHVybiB0cnVlOyAvLyBBbHdheXMga2VlcCBwaW5uZWQgaXRlbXNcblxuICAgICAgLy8gS2VlcCBlYWNoIG1lbnUgaXRlbXMgaW4gdGhlIHNjb3BlIG9mIHRoZSBjdXJyZW50IHVybCBwYXRoXG4gICAgICBpZiAoY3VycmVudFBhdGhQYXJhbS5wYXRoLnN0YXJ0c1dpdGgoaXRlbS5wYXRoKSkgcmV0dXJuIHRydWU7XG5cbiAgICAgIC8vIEVsc2UsIGV4Y2x1ZGVcbiAgICAgIGV4Y2x1ZGVkSXRlbXMucHVzaChpdGVtKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbiAgICBpdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLl9kZXRhY2hTdWJNZW51cyhjdXJyZW50UGF0aFBhcmFtLCBpdGVtLiRjaGlsZHJlbi52YWx1ZSB8fCBbXSwgZXhjbHVkZWRJdGVtcyk7XG4gICAgICBpdGVtLiRjaGlsZHJlbi5uZXh0KGNoaWxkcmVuKTtcbiAgICB9KTtcbiAgICByZXR1cm4gaXRlbXM7XG4gIH1cblxufVxuIl19
@@ -1,5 +1,6 @@
1
- import { Directive, Input, } from '@angular/core';
1
+ import { Directive, Input } from '@angular/core';
2
2
  import { MenuItems } from './menu.model';
3
+ import { isNil, isNilOrBlank } from '../../shared/functions';
3
4
  import * as i0 from "@angular/core";
4
5
  import * as i1 from "./menu.service";
5
6
  import * as i2 from "@angular/material/tabs";
@@ -17,7 +18,7 @@ export class SubMenuTabDirective {
17
18
  this._addItemToMenu();
18
19
  }
19
20
  ngOnChanges(changes) {
20
- if (changes.disabled || changes.label || changes.parentPath) {
21
+ if (changes.disabled || changes.label || changes.subMenuTitle || changes.parentPath || changes.path) {
21
22
  if (this.disabled) {
22
23
  if (this._menuItem)
23
24
  this.menuService.removeSubMenuItem(this._menuItem);
@@ -36,21 +37,20 @@ export class SubMenuTabDirective {
36
37
  parentPath,
37
38
  icon: 'none',
38
39
  path: this.path,
39
- pathParams
40
+ pathParams,
40
41
  });
41
42
  }
42
43
  async _addItemToMenu() {
44
+ let menuItem = this._computeMenuItem();
43
45
  if (this._menuItem) {
44
- const newItem = this._computeMenuItem();
45
- if (!MenuItems.isSame(newItem, this._menuItem))
46
- this._menuItem = newItem;
46
+ menuItem.id = this._menuItem.id;
47
47
  }
48
- else {
49
- this._menuItem = this._computeMenuItem();
50
- }
51
- if (!this._menuItem.parentPath)
52
- return; // Skip
53
- this.menuService.addSubMenuItem(this._menuItem);
48
+ if (!menuItem.parentPath)
49
+ return; // Skip if no parent
50
+ if (isNilOrBlank(menuItem.title))
51
+ return; // Skip if no title
52
+ menuItem = await this.menuService.addSubMenuItem(menuItem, { skipIfExists: isNil(menuItem.id) });
53
+ this._menuItem = menuItem;
54
54
  }
55
55
  }
56
56
  SubMenuTabDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SubMenuTabDirective, deps: [{ token: i1.MenuService }, { token: i2.MatTabGroup }, { token: i2.MatTab }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Directive });
@@ -58,7 +58,7 @@ SubMenuTabDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", ve
58
58
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SubMenuTabDirective, decorators: [{
59
59
  type: Directive,
60
60
  args: [{
61
- selector: '[appSubMenuTab]'
61
+ selector: '[appSubMenuTab]',
62
62
  }]
63
63
  }], ctorParameters: function () { return [{ type: i1.MenuService }, { type: i2.MatTabGroup }, { type: i2.MatTab }, { type: i3.Router }]; }, propDecorators: { label: [{
64
64
  type: Input
@@ -71,4 +71,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
71
71
  }], subMenuTitle: [{
72
72
  type: Input
73
73
  }] } });
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViLW1lbnUtdGFiLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9tZW51L3N1Yi1tZW51LXRhYi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxLQUFLLEdBRU4sTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUFXLFNBQVMsRUFBQyxNQUFNLGNBQWMsQ0FBQzs7Ozs7QUFNakQsTUFBTSxPQUFPLG1CQUFtQjtJQVc5QixZQUNVLFdBQXdCLEVBQ3hCLFFBQXFCLEVBQ3JCLEdBQVcsRUFDWCxNQUFjO1FBSGQsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUNyQixRQUFHLEdBQUgsR0FBRyxDQUFRO1FBQ1gsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUV0QixJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3RGLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUTtZQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUU7WUFDM0QsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNqQixJQUFJLElBQUksQ0FBQyxTQUFTO29CQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ3hFO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQzthQUN2QjtTQUNGO0lBQ0gsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUM5RCxNQUFNLFVBQVUsR0FBRyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBQyxDQUFDO1FBQzlELE1BQU0sVUFBVSxHQUFHLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDN0QsT0FBTyxTQUFTLENBQUMsV0FBVyxDQUFDO1lBQzNCLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxLQUFLO1lBQ3RDLFVBQVU7WUFDVixJQUFJLEVBQUUsTUFBTTtZQUNaLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLFVBQVU7U0FDWCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sS0FBSyxDQUFDLGNBQWM7UUFDMUIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDO2dCQUFFLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO1NBQzFFO2FBQU07WUFDTCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1NBQzFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVTtZQUFFLE9BQU8sQ0FBQyxPQUFPO1FBQy9DLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsRCxDQUFDOztnSEF4RFUsbUJBQW1CO29HQUFuQixtQkFBbUI7MkZBQW5CLG1CQUFtQjtrQkFIL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2lCQUM1QjtzS0FHVSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBJbnB1dCwgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWF0VGFiLCBNYXRUYWJHcm91cH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7TWVudVNlcnZpY2V9IGZyb20gJy4vbWVudS5zZXJ2aWNlJztcbmltcG9ydCB7TWVudUl0ZW0sIE1lbnVJdGVtc30gZnJvbSAnLi9tZW51Lm1vZGVsJztcbmltcG9ydCB7ZXF1YWxzfSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FwcFN1Yk1lbnVUYWJdJ1xufSlcbmV4cG9ydCBjbGFzcyBTdWJNZW51VGFiRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcblxuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KCkgcGFyZW50UGF0aDogc3RyaW5nO1xuICBASW5wdXQoKSBwYXRoOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHN1Yk1lbnVUaXRsZTogc3RyaW5nO1xuXG5cbiAgcHJpdmF0ZSBfbWVudUl0ZW06IE1lbnVJdGVtO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWVudVNlcnZpY2U6IE1lbnVTZXJ2aWNlLFxuICAgIHByaXZhdGUgdGFiR3JvdXA6IE1hdFRhYkdyb3VwLFxuICAgIHByaXZhdGUgdGFiOiBNYXRUYWIsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgKSB7XG4gICAgdGhpcy5wYXRoID0gTWVudUl0ZW1zLnBhcnNlUGF0aFdpdGhRdWVyeSh0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdC51cmwpLnBhdGg7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKCF0aGlzLnRhYi5kaXNhYmxlZCkgdGhpcy5fYWRkSXRlbVRvTWVudSgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmRpc2FibGVkIHx8IGNoYW5nZXMubGFiZWwgfHwgY2hhbmdlcy5wYXJlbnRQYXRoKSB7XG4gICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICBpZiAodGhpcy5fbWVudUl0ZW0pIHRoaXMubWVudVNlcnZpY2UucmVtb3ZlU3ViTWVudUl0ZW0odGhpcy5fbWVudUl0ZW0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fYWRkSXRlbVRvTWVudSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NvbXB1dGVNZW51SXRlbSgpOiBNZW51SXRlbSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggKyB0aGlzLnRhYi5wb3NpdGlvbjtcbiAgICBjb25zdCBwYXRoUGFyYW1zID0gaW5kZXggPT09IDAgPyB7fSA6IHt0YWI6IGluZGV4LnRvU3RyaW5nKCl9O1xuICAgIGNvbnN0IHBhcmVudFBhdGggPSBpbmRleCA9PT0gMCA/IHRoaXMucGFyZW50UGF0aCA6IHRoaXMucGF0aDtcbiAgICByZXR1cm4gTWVudUl0ZW1zLnByZXBhcmVJdGVtKHtcbiAgICAgIHRpdGxlOiB0aGlzLnN1Yk1lbnVUaXRsZSB8fCB0aGlzLmxhYmVsLFxuICAgICAgcGFyZW50UGF0aCxcbiAgICAgIGljb246ICdub25lJyxcbiAgICAgIHBhdGg6IHRoaXMucGF0aCxcbiAgICAgIHBhdGhQYXJhbXNcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX2FkZEl0ZW1Ub01lbnUoKSB7XG4gICAgaWYgKHRoaXMuX21lbnVJdGVtKSB7XG4gICAgICBjb25zdCBuZXdJdGVtID0gdGhpcy5fY29tcHV0ZU1lbnVJdGVtKCk7XG4gICAgICBpZiAoIU1lbnVJdGVtcy5pc1NhbWUobmV3SXRlbSwgdGhpcy5fbWVudUl0ZW0pKSB0aGlzLl9tZW51SXRlbSA9IG5ld0l0ZW07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX21lbnVJdGVtID0gdGhpcy5fY29tcHV0ZU1lbnVJdGVtKCk7XG4gICAgfVxuICAgIGlmICghdGhpcy5fbWVudUl0ZW0ucGFyZW50UGF0aCkgcmV0dXJuOyAvLyBTa2lwXG4gICAgdGhpcy5tZW51U2VydmljZS5hZGRTdWJNZW51SXRlbSh0aGlzLl9tZW51SXRlbSk7XG4gIH1cblxufVxuIl19
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViLW1lbnUtdGFiLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9tZW51L3N1Yi1tZW51LXRhYi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsS0FBSyxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUkxRixPQUFPLEVBQVksU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBSzdELE1BQU0sT0FBTyxtQkFBbUI7SUFTOUIsWUFBb0IsV0FBd0IsRUFBVSxRQUFxQixFQUFVLEdBQVcsRUFBVSxNQUFjO1FBQXBHLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUFVLFFBQUcsR0FBSCxHQUFHLENBQVE7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ3RILElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDdEYsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRO1lBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLFlBQVksSUFBSSxPQUFPLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDbkcsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNqQixJQUFJLElBQUksQ0FBQyxTQUFTO29CQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ3hFO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQzthQUN2QjtTQUNGO0lBQ0gsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUM5RCxNQUFNLFVBQVUsR0FBRyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1FBQ2hFLE1BQU0sVUFBVSxHQUFHLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDN0QsT0FBTyxTQUFTLENBQUMsV0FBVyxDQUFDO1lBQzNCLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxLQUFLO1lBQ3RDLFVBQVU7WUFDVixJQUFJLEVBQUUsTUFBTTtZQUNaLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLFVBQVU7U0FDWCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sS0FBSyxDQUFDLGNBQWM7UUFDMUIsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDdkMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLFFBQVEsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7U0FDakM7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVU7WUFBRSxPQUFPLENBQUMsb0JBQW9CO1FBRXRELElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPLENBQUMsbUJBQW1CO1FBRTdELFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxFQUFFLFlBQVksRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqRyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztJQUM1QixDQUFDOztnSEFuRFUsbUJBQW1CO29HQUFuQixtQkFBbUI7MkZBQW5CLG1CQUFtQjtrQkFIL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2lCQUM1QjtzS0FFVSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRUYWIsIE1hdFRhYkdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTWVudVNlcnZpY2UgfSBmcm9tICcuL21lbnUuc2VydmljZSc7XG5pbXBvcnQgeyBNZW51SXRlbSwgTWVudUl0ZW1zIH0gZnJvbSAnLi9tZW51Lm1vZGVsJztcbmltcG9ydCB7IGlzTmlsLCBpc05pbE9yQmxhbmsgfSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FwcFN1Yk1lbnVUYWJdJyxcbn0pXG5leHBvcnQgY2xhc3MgU3ViTWVudVRhYkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xuICBASW5wdXQoKSBwYXJlbnRQYXRoOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBhdGg6IHN0cmluZztcbiAgQElucHV0KCkgc3ViTWVudVRpdGxlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfbWVudUl0ZW06IE1lbnVJdGVtO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbWVudVNlcnZpY2U6IE1lbnVTZXJ2aWNlLCBwcml2YXRlIHRhYkdyb3VwOiBNYXRUYWJHcm91cCwgcHJpdmF0ZSB0YWI6IE1hdFRhYiwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge1xuICAgIHRoaXMucGF0aCA9IE1lbnVJdGVtcy5wYXJzZVBhdGhXaXRoUXVlcnkodGhpcy5yb3V0ZXIucm91dGVyU3RhdGUuc25hcHNob3QudXJsKS5wYXRoO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICghdGhpcy50YWIuZGlzYWJsZWQpIHRoaXMuX2FkZEl0ZW1Ub01lbnUoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5kaXNhYmxlZCB8fCBjaGFuZ2VzLmxhYmVsIHx8IGNoYW5nZXMuc3ViTWVudVRpdGxlIHx8IGNoYW5nZXMucGFyZW50UGF0aCB8fCBjaGFuZ2VzLnBhdGgpIHtcbiAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgIGlmICh0aGlzLl9tZW51SXRlbSkgdGhpcy5tZW51U2VydmljZS5yZW1vdmVTdWJNZW51SXRlbSh0aGlzLl9tZW51SXRlbSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9hZGRJdGVtVG9NZW51KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY29tcHV0ZU1lbnVJdGVtKCk6IE1lbnVJdGVtIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCArIHRoaXMudGFiLnBvc2l0aW9uO1xuICAgIGNvbnN0IHBhdGhQYXJhbXMgPSBpbmRleCA9PT0gMCA/IHt9IDogeyB0YWI6IGluZGV4LnRvU3RyaW5nKCkgfTtcbiAgICBjb25zdCBwYXJlbnRQYXRoID0gaW5kZXggPT09IDAgPyB0aGlzLnBhcmVudFBhdGggOiB0aGlzLnBhdGg7XG4gICAgcmV0dXJuIE1lbnVJdGVtcy5wcmVwYXJlSXRlbSh7XG4gICAgICB0aXRsZTogdGhpcy5zdWJNZW51VGl0bGUgfHwgdGhpcy5sYWJlbCxcbiAgICAgIHBhcmVudFBhdGgsXG4gICAgICBpY29uOiAnbm9uZScsXG4gICAgICBwYXRoOiB0aGlzLnBhdGgsXG4gICAgICBwYXRoUGFyYW1zLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfYWRkSXRlbVRvTWVudSgpIHtcbiAgICBsZXQgbWVudUl0ZW0gPSB0aGlzLl9jb21wdXRlTWVudUl0ZW0oKTtcbiAgICBpZiAodGhpcy5fbWVudUl0ZW0pIHtcbiAgICAgIG1lbnVJdGVtLmlkID0gdGhpcy5fbWVudUl0ZW0uaWQ7XG4gICAgfVxuICAgIGlmICghbWVudUl0ZW0ucGFyZW50UGF0aCkgcmV0dXJuOyAvLyBTa2lwIGlmIG5vIHBhcmVudFxuXG4gICAgaWYgKGlzTmlsT3JCbGFuayhtZW51SXRlbS50aXRsZSkpIHJldHVybjsgLy8gU2tpcCBpZiBubyB0aXRsZVxuXG4gICAgbWVudUl0ZW0gPSBhd2FpdCB0aGlzLm1lbnVTZXJ2aWNlLmFkZFN1Yk1lbnVJdGVtKG1lbnVJdGVtLCB7IHNraXBJZkV4aXN0czogaXNOaWwobWVudUl0ZW0uaWQpIH0pO1xuICAgIHRoaXMuX21lbnVJdGVtID0gbWVudUl0ZW07XG4gIH1cbn1cbiJdfQ==
@@ -1,4 +1,4 @@
1
- import { Component, } from '@angular/core';
1
+ import { Component } from '@angular/core';
2
2
  import { MenuTestingPage } from './menu.testing';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@angular/router";
@@ -14,6 +14,7 @@ export class OtherMenuTestingPage extends MenuTestingPage {
14
14
  router, navController, alertCtrl, translate, menuService) {
15
15
  super(route, router, navController, alertCtrl, translate, menuService);
16
16
  this.logPrefix = '[menu-testing-other] ';
17
+ this.showOtherLinks = false;
17
18
  }
18
19
  async initSubMenu() {
19
20
  const otherId = this.route.snapshot.paramMap.get('otherId');
@@ -27,9 +28,9 @@ export class OtherMenuTestingPage extends MenuTestingPage {
27
28
  }
28
29
  }
29
30
  OtherMenuTestingPage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: OtherMenuTestingPage, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.NavController }, { token: i2.AlertController }, { token: i3.TranslateService }, { token: i4.MenuService }], target: i0.ɵɵFactoryTarget.Component });
30
- OtherMenuTestingPage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: OtherMenuTestingPage, selector: "app-testing-menu-other", usesInheritance: true, ngImport: i0, template: "<app-toolbar [defaultBackHref]=\"parentPath\">\n <ion-title>{{ title }}</ion-title>\n</app-toolbar>\n\n<ion-content>\n\n <mat-tab-group #tabGroup\n [(selectedIndex)]=\"selectedTabIndex\"\n (selectedTabChange)=\"onTabChange($event)\"\n dynamicHeight>\n\n <!-- TAB: 1 -->\n <mat-tab appSubMenuTab [subMenuTitle]=\"title\" [parentPath]=\"parentPath\" label=\"Details\" class=\"ion-padding\">\n <ng-template mat-tab-label>\n <ion-label>Details</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n <p>A first tab</p>\n\n <div class=\"ion-margin-vertical\">\n <ion-toggle #toggleThird>\n Toggle Third Tab\n </ion-toggle>\n </div>\n\n <div class=\"ion-margin-vertical\">\n <ion-button (click)=\"enableMenu(false)\" *ngIf=\"menuService.enabled|async\">\n Disable menu\n </ion-button>\n <ion-button (click)=\"enableMenu(true)\" *ngIf=\"!(menuService.enabled|async)\">\n Enable menu\n </ion-button>\n <ion-button (click)=\"toggleSplitPaneWhen()\"\n [disabled]=\"!(menuService.enabled|async)\">\n Toggle split pane\n </ion-button>\n </div>\n </div>\n\n </mat-tab>\n\n <!-- TAB: 2 -->\n <mat-tab appSubMenuTab [label]=\"secondTabTitle\" class=\"ion-padding\">\n <ng-template mat-tab-label>\n <ion-label>{{secondTabTitle}}</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n A second tab<br/>\n\n <ng-container *ngIf=\"secondTabTitle=== 'Others'\">\n Navigate to : <a [routerLink]=\"childPath+'/1'\" >\n {{ childPath }}/1\n </a>\n <br/>\n Navigate to : <a [routerLink]=\"childPath+'/2'\" >\n {{ childPath }}/2\n </a>\n </ng-container>\n </div>\n\n </mat-tab>\n\n <!-- TAB: 3 -->\n <mat-tab appSubMenuTab [label]=\"thirdTabTitle\" class=\"ion-padding\" [disabled]=\"!toggleThird.checked\">\n <ng-template mat-tab-label>\n <ion-label>{{thirdTabTitle}}</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n A third tab\n </div>\n\n </mat-tab>\n </mat-tab-group>\n</ion-content>\n", styles: [".menu-item{padding-left:0 px}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i6.SubMenuTabDirective, selector: "[appSubMenuTab]", inputs: ["label", "disabled", "parentPath", "path", "subMenuTitle"] }, { kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i2.IonToggle, selector: "ion-toggle", inputs: ["alignment", "checked", "color", "disabled", "enableOnOffLabels", "justify", "labelPlacement", "legacy", "mode", "name", "value"] }, { kind: "directive", type: i2.BooleanValueAccessor, selector: "ion-checkbox,ion-toggle" }, { kind: "directive", type: i2.RouterLinkWithHrefDelegate, selector: "a[routerLink],area[routerLink]", inputs: ["routerDirection", "routerAnimation"] }, { kind: "component", type: i7.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i7.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i7.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i8.ToolbarComponent, selector: "app-toolbar", inputs: ["progressBarMode", "title", "color", "class", "backHref", "defaultBackHref", "hasValidate", "hasClose", "hasSearch", "canGoBack", "canShowMenu"], outputs: ["onValidate", "onClose", "onValidateAndClose", "onBackClick", "onSearch"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }] });
31
+ OtherMenuTestingPage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: OtherMenuTestingPage, selector: "app-testing-menu-other", usesInheritance: true, ngImport: i0, template: "<app-toolbar [defaultBackHref]=\"parentPath\">\n <ion-title>{{ title }}</ion-title>\n</app-toolbar>\n\n<ion-content>\n\n <mat-tab-group #tabGroup\n [(selectedIndex)]=\"selectedTabIndex\"\n (selectedTabChange)=\"onTabChange($event)\"\n dynamicHeight>\n\n <!-- TAB: 1 -->\n <mat-tab appSubMenuTab [subMenuTitle]=\"title\" [parentPath]=\"parentPath\" label=\"Details\" class=\"ion-padding\">\n <ng-template mat-tab-label>\n <ion-label>Details</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n <p>A first tab</p>\n\n <p>\n <ion-toggle #toggleThird>\n Toggle Third Tab\n </ion-toggle>\n </p>\n\n <p>\n <ion-button (click)=\"enableMenu(false)\" *ngIf=\"menuService.enabled|async\">\n Disable menu\n </ion-button>\n <ion-button (click)=\"enableMenu(true)\" *ngIf=\"!(menuService.enabled|async)\">\n Enable menu\n </ion-button>\n <ion-button (click)=\"toggleSplitPaneWhen()\"\n [disabled]=\"!(menuService.enabled|async)\">\n Toggle split pane\n </ion-button>\n </p>\n </div>\n\n </mat-tab>\n\n <!-- TAB: 2 -->\n <mat-tab appSubMenuTab\n [subMenuTitle]=\"$secondTabTitle|async\"\n label=\"Second\" class=\"ion-padding\">\n <ng-template mat-tab-label>\n <ion-label [innerHTML]=\"$secondTabTitle|async\"></ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n <p>A second tab</p>\n\n <p *ngIf=\"showOtherLinks\">\n Navigate to : <a [routerLink]=\"childPath+'/1'\" >\n {{ childPath }}/1\n </a>\n <br/>\n Navigate to : <a [routerLink]=\"childPath+'/2'\" >\n {{ childPath }}/2\n </a>\n </p>\n\n <p>\n <ion-button (click)=\"changeSecondTabTitle($event)\">\n Change tab label\n </ion-button>\n </p>\n </div>\n\n </mat-tab>\n\n <!-- TAB: 3 -->\n <mat-tab appSubMenuTab [label]=\"thirdTabTitle\"\n class=\"ion-padding\" [disabled]=\"!toggleThird.checked\">\n <ng-template mat-tab-label>\n <ion-label>{{thirdTabTitle}}</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n A third tab\n </div>\n\n </mat-tab>\n </mat-tab-group>\n</ion-content>\n", styles: [".menu-item{padding-left:0 px}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i6.SubMenuTabDirective, selector: "[appSubMenuTab]", inputs: ["label", "disabled", "parentPath", "path", "subMenuTitle"] }, { kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i2.IonToggle, selector: "ion-toggle", inputs: ["alignment", "checked", "color", "disabled", "enableOnOffLabels", "justify", "labelPlacement", "legacy", "mode", "name", "value"] }, { kind: "directive", type: i2.BooleanValueAccessor, selector: "ion-checkbox,ion-toggle" }, { kind: "directive", type: i2.RouterLinkWithHrefDelegate, selector: "a[routerLink],area[routerLink]", inputs: ["routerDirection", "routerAnimation"] }, { kind: "component", type: i7.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i7.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i7.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i8.ToolbarComponent, selector: "app-toolbar", inputs: ["progressBarMode", "title", "color", "class", "backHref", "defaultBackHref", "hasValidate", "hasClose", "hasSearch", "canGoBack", "canShowMenu"], outputs: ["onValidate", "onClose", "onValidateAndClose", "onBackClick", "onSearch"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }] });
31
32
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: OtherMenuTestingPage, decorators: [{
32
33
  type: Component,
33
- args: [{ selector: 'app-testing-menu-other', template: "<app-toolbar [defaultBackHref]=\"parentPath\">\n <ion-title>{{ title }}</ion-title>\n</app-toolbar>\n\n<ion-content>\n\n <mat-tab-group #tabGroup\n [(selectedIndex)]=\"selectedTabIndex\"\n (selectedTabChange)=\"onTabChange($event)\"\n dynamicHeight>\n\n <!-- TAB: 1 -->\n <mat-tab appSubMenuTab [subMenuTitle]=\"title\" [parentPath]=\"parentPath\" label=\"Details\" class=\"ion-padding\">\n <ng-template mat-tab-label>\n <ion-label>Details</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n <p>A first tab</p>\n\n <div class=\"ion-margin-vertical\">\n <ion-toggle #toggleThird>\n Toggle Third Tab\n </ion-toggle>\n </div>\n\n <div class=\"ion-margin-vertical\">\n <ion-button (click)=\"enableMenu(false)\" *ngIf=\"menuService.enabled|async\">\n Disable menu\n </ion-button>\n <ion-button (click)=\"enableMenu(true)\" *ngIf=\"!(menuService.enabled|async)\">\n Enable menu\n </ion-button>\n <ion-button (click)=\"toggleSplitPaneWhen()\"\n [disabled]=\"!(menuService.enabled|async)\">\n Toggle split pane\n </ion-button>\n </div>\n </div>\n\n </mat-tab>\n\n <!-- TAB: 2 -->\n <mat-tab appSubMenuTab [label]=\"secondTabTitle\" class=\"ion-padding\">\n <ng-template mat-tab-label>\n <ion-label>{{secondTabTitle}}</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n A second tab<br/>\n\n <ng-container *ngIf=\"secondTabTitle=== 'Others'\">\n Navigate to : <a [routerLink]=\"childPath+'/1'\" >\n {{ childPath }}/1\n </a>\n <br/>\n Navigate to : <a [routerLink]=\"childPath+'/2'\" >\n {{ childPath }}/2\n </a>\n </ng-container>\n </div>\n\n </mat-tab>\n\n <!-- TAB: 3 -->\n <mat-tab appSubMenuTab [label]=\"thirdTabTitle\" class=\"ion-padding\" [disabled]=\"!toggleThird.checked\">\n <ng-template mat-tab-label>\n <ion-label>{{thirdTabTitle}}</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n A third tab\n </div>\n\n </mat-tab>\n </mat-tab-group>\n</ion-content>\n", styles: [".menu-item{padding-left:0 px}\n"] }]
34
+ args: [{ selector: 'app-testing-menu-other', template: "<app-toolbar [defaultBackHref]=\"parentPath\">\n <ion-title>{{ title }}</ion-title>\n</app-toolbar>\n\n<ion-content>\n\n <mat-tab-group #tabGroup\n [(selectedIndex)]=\"selectedTabIndex\"\n (selectedTabChange)=\"onTabChange($event)\"\n dynamicHeight>\n\n <!-- TAB: 1 -->\n <mat-tab appSubMenuTab [subMenuTitle]=\"title\" [parentPath]=\"parentPath\" label=\"Details\" class=\"ion-padding\">\n <ng-template mat-tab-label>\n <ion-label>Details</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n <p>A first tab</p>\n\n <p>\n <ion-toggle #toggleThird>\n Toggle Third Tab\n </ion-toggle>\n </p>\n\n <p>\n <ion-button (click)=\"enableMenu(false)\" *ngIf=\"menuService.enabled|async\">\n Disable menu\n </ion-button>\n <ion-button (click)=\"enableMenu(true)\" *ngIf=\"!(menuService.enabled|async)\">\n Enable menu\n </ion-button>\n <ion-button (click)=\"toggleSplitPaneWhen()\"\n [disabled]=\"!(menuService.enabled|async)\">\n Toggle split pane\n </ion-button>\n </p>\n </div>\n\n </mat-tab>\n\n <!-- TAB: 2 -->\n <mat-tab appSubMenuTab\n [subMenuTitle]=\"$secondTabTitle|async\"\n label=\"Second\" class=\"ion-padding\">\n <ng-template mat-tab-label>\n <ion-label [innerHTML]=\"$secondTabTitle|async\"></ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n <p>A second tab</p>\n\n <p *ngIf=\"showOtherLinks\">\n Navigate to : <a [routerLink]=\"childPath+'/1'\" >\n {{ childPath }}/1\n </a>\n <br/>\n Navigate to : <a [routerLink]=\"childPath+'/2'\" >\n {{ childPath }}/2\n </a>\n </p>\n\n <p>\n <ion-button (click)=\"changeSecondTabTitle($event)\">\n Change tab label\n </ion-button>\n </p>\n </div>\n\n </mat-tab>\n\n <!-- TAB: 3 -->\n <mat-tab appSubMenuTab [label]=\"thirdTabTitle\"\n class=\"ion-padding\" [disabled]=\"!toggleThird.checked\">\n <ng-template mat-tab-label>\n <ion-label>{{thirdTabTitle}}</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n A third tab\n </div>\n\n </mat-tab>\n </mat-tab-group>\n</ion-content>\n", styles: [".menu-item{padding-left:0 px}\n"] }]
34
35
  }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.NavController }, { type: i2.AlertController }, { type: i3.TranslateService }, { type: i4.MenuService }]; } });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1vdGhlci50ZXN0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL21lbnUvdGVzdGluZy9tZW51LW90aGVyLnRlc3RpbmcudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvbWVudS90ZXN0aW5nL21lbnUudGVzdGluZy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEdBQUUsTUFBTSxlQUFlLENBQUM7QUFNekMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7O0FBTy9DLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxlQUFlO0lBRXZELFlBQ0UsS0FBcUIsRUFBRSwyQkFBMkI7SUFDbEQsTUFBYyxFQUNkLGFBQTRCLEVBQzVCLFNBQTBCLEVBQzFCLFNBQTJCLEVBQzNCLFdBQXdCO1FBRXhCLEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxTQUFTLEdBQUcsdUJBQXVCLENBQUM7SUFDM0MsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXO1FBQ2YsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUM7UUFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyw0QkFBNEIsQ0FBQztRQUMvQyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixNQUFNLElBQUksR0FBRyw4QkFBOEIsR0FBRyxPQUFPLENBQUM7UUFDdEQsTUFBTSxVQUFVLEdBQUcsNEJBQTRCLENBQUM7UUFDaEQsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLGFBQWEsRUFBRSxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7O2lIQXZCVSxvQkFBb0I7cUdBQXBCLG9CQUFvQixxRkNiakMsNndFQTZFQTsyRkRoRWEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01lbnVTZXJ2aWNlfSBmcm9tICcuLi9tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtBbGVydENvbnRyb2xsZXIsIE5hdkNvbnRyb2xsZXJ9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge01lbnVJdGVtc30gZnJvbSAnLi4vbWVudS5tb2RlbCc7XG5pbXBvcnQge01lbnVUZXN0aW5nUGFnZX0gZnJvbSAnLi9tZW51LnRlc3RpbmcnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtdGVzdGluZy1tZW51LW90aGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lbnUudGVzdGluZy5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWVudS50ZXN0aW5nLnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgT3RoZXJNZW51VGVzdGluZ1BhZ2UgZXh0ZW5kcyBNZW51VGVzdGluZ1BhZ2Uge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgLy8gTW9kYWwgZWRpdG9yIGdpdmUgJ251bGwnXG4gICAgcm91dGVyOiBSb3V0ZXIsXG4gICAgbmF2Q29udHJvbGxlcjogTmF2Q29udHJvbGxlcixcbiAgICBhbGVydEN0cmw6IEFsZXJ0Q29udHJvbGxlcixcbiAgICB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgbWVudVNlcnZpY2U6IE1lbnVTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKHJvdXRlLCByb3V0ZXIsIG5hdkNvbnRyb2xsZXIsIGFsZXJ0Q3RybCwgdHJhbnNsYXRlLCBtZW51U2VydmljZSk7XG4gICAgdGhpcy5sb2dQcmVmaXggPSAnW21lbnUtdGVzdGluZy1vdGhlcl0gJztcbiAgfVxuXG4gIGFzeW5jIGluaXRTdWJNZW51KCkge1xuICAgIGNvbnN0IG90aGVySWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgnb3RoZXJJZCcpO1xuICAgIHRoaXMudGl0bGUgPSAnT3RoZXInICsgb3RoZXJJZDtcbiAgICB0aGlzLnNlY29uZFRhYlRpdGxlID0gJ1NlY29uZCc7XG4gICAgdGhpcy5wYXJlbnRQYXRoID0gJy90ZXN0aW5nL3NoYXJlZC9tZW51P3RhYj0xJztcbiAgICB0aGlzLmNoaWxkUGF0aCA9ICcnO1xuICAgIGNvbnN0IHBhdGggPSAnL3Rlc3Rpbmcvc2hhcmVkL21lbnUvb3RoZXJzLycgKyBvdGhlcklkO1xuICAgIGNvbnN0IHBhcmVudFBhdGggPSAnL3Rlc3Rpbmcvc2hhcmVkL21lbnU/dGFiPTEnO1xuICAgIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5sb2dQcmVmaXh9IFNldHVwIHdpdGhgLCB7cGF0aCwgcGFyZW50UGF0aH0pO1xuICB9XG5cbn1cbiIsIjxhcHAtdG9vbGJhciBbZGVmYXVsdEJhY2tIcmVmXT1cInBhcmVudFBhdGhcIj5cbiAgPGlvbi10aXRsZT57eyB0aXRsZSB9fTwvaW9uLXRpdGxlPlxuPC9hcHAtdG9vbGJhcj5cblxuPGlvbi1jb250ZW50PlxuXG4gIDxtYXQtdGFiLWdyb3VwICN0YWJHcm91cFxuICAgICAgICAgICAgICAgICBbKHNlbGVjdGVkSW5kZXgpXT1cInNlbGVjdGVkVGFiSW5kZXhcIlxuICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRUYWJDaGFuZ2UpPVwib25UYWJDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgIGR5bmFtaWNIZWlnaHQ+XG5cbiAgICA8IS0tIFRBQjogMSAtLT5cbiAgICA8bWF0LXRhYiBhcHBTdWJNZW51VGFiIFtzdWJNZW51VGl0bGVdPVwidGl0bGVcIiBbcGFyZW50UGF0aF09XCJwYXJlbnRQYXRoXCIgbGFiZWw9XCJEZXRhaWxzXCIgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgPG5nLXRlbXBsYXRlIG1hdC10YWItbGFiZWw+XG4gICAgICAgIDxpb24tbGFiZWw+RGV0YWlsczwvaW9uLWxhYmVsPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPGRpdiBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gICAgICAgIDxwPkEgZmlyc3QgdGFiPC9wPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpb24tbWFyZ2luLXZlcnRpY2FsXCI+XG4gICAgICAgICAgPGlvbi10b2dnbGUgI3RvZ2dsZVRoaXJkPlxuICAgICAgICAgICAgVG9nZ2xlIFRoaXJkIFRhYlxuICAgICAgICAgIDwvaW9uLXRvZ2dsZT5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlvbi1tYXJnaW4tdmVydGljYWxcIj5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiZW5hYmxlTWVudShmYWxzZSlcIiAqbmdJZj1cIm1lbnVTZXJ2aWNlLmVuYWJsZWR8YXN5bmNcIj5cbiAgICAgICAgICAgIERpc2FibGUgbWVudVxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiZW5hYmxlTWVudSh0cnVlKVwiICpuZ0lmPVwiIShtZW51U2VydmljZS5lbmFibGVkfGFzeW5jKVwiPlxuICAgICAgICAgICAgRW5hYmxlIG1lbnVcbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cInRvZ2dsZVNwbGl0UGFuZVdoZW4oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiEobWVudVNlcnZpY2UuZW5hYmxlZHxhc3luYylcIj5cbiAgICAgICAgICAgIFRvZ2dsZSBzcGxpdCBwYW5lXG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgPC9tYXQtdGFiPlxuXG4gICAgPCEtLSBUQUI6IDIgLS0+XG4gICAgPG1hdC10YWIgYXBwU3ViTWVudVRhYiBbbGFiZWxdPVwic2Vjb25kVGFiVGl0bGVcIiBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gICAgICA8bmctdGVtcGxhdGUgbWF0LXRhYi1sYWJlbD5cbiAgICAgICAgPGlvbi1sYWJlbD57e3NlY29uZFRhYlRpdGxlfX08L2lvbi1sYWJlbD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgICBBIHNlY29uZCB0YWI8YnIvPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWNvbmRUYWJUaXRsZT09PSAnT3RoZXJzJ1wiPlxuICAgICAgICAgIE5hdmlnYXRlIHRvIDogPGEgW3JvdXRlckxpbmtdPVwiY2hpbGRQYXRoKycvMSdcIiA+XG4gICAgICAgICAgICB7eyBjaGlsZFBhdGggfX0vMVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8YnIvPlxuICAgICAgICAgIE5hdmlnYXRlIHRvIDogPGEgW3JvdXRlckxpbmtdPVwiY2hpbGRQYXRoKycvMidcIiA+XG4gICAgICAgICAge3sgY2hpbGRQYXRoIH19LzJcbiAgICAgICAgPC9hPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuXG4gICAgPC9tYXQtdGFiPlxuXG4gICAgPCEtLSBUQUI6IDMgLS0+XG4gICAgPG1hdC10YWIgYXBwU3ViTWVudVRhYiBbbGFiZWxdPVwidGhpcmRUYWJUaXRsZVwiIGNsYXNzPVwiaW9uLXBhZGRpbmdcIiBbZGlzYWJsZWRdPVwiIXRvZ2dsZVRoaXJkLmNoZWNrZWRcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBtYXQtdGFiLWxhYmVsPlxuICAgICAgICA8aW9uLWxhYmVsPnt7dGhpcmRUYWJUaXRsZX19PC9pb24tbGFiZWw+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgICAgQSB0aGlyZCB0YWJcbiAgICAgIDwvZGl2PlxuXG4gICAgPC9tYXQtdGFiPlxuICA8L21hdC10YWItZ3JvdXA+XG48L2lvbi1jb250ZW50PlxuIl19
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1vdGhlci50ZXN0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL21lbnUvdGVzdGluZy9tZW51LW90aGVyLnRlc3RpbmcudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvbWVudS90ZXN0aW5nL21lbnUudGVzdGluZy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7O0FBT2pELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxlQUFlO0lBQ3ZELFlBQ0UsS0FBcUIsRUFBRSwyQkFBMkI7SUFDbEQsTUFBYyxFQUNkLGFBQTRCLEVBQzVCLFNBQTBCLEVBQzFCLFNBQTJCLEVBQzNCLFdBQXdCO1FBRXhCLEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxTQUFTLEdBQUcsdUJBQXVCLENBQUM7UUFDekMsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDOUIsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXO1FBQ2YsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUM7UUFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyw0QkFBNEIsQ0FBQztRQUMvQyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixNQUFNLElBQUksR0FBRyw4QkFBOEIsR0FBRyxPQUFPLENBQUM7UUFDdEQsTUFBTSxVQUFVLEdBQUcsNEJBQTRCLENBQUM7UUFDaEQsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7O2lIQXZCVSxvQkFBb0I7cUdBQXBCLG9CQUFvQixxRkNaakMsKzVFQXNGQTsyRkQxRWEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWVudVNlcnZpY2UgfSBmcm9tICcuLi9tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBbGVydENvbnRyb2xsZXIsIE5hdkNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBNZW51VGVzdGluZ1BhZ2UgfSBmcm9tICcuL21lbnUudGVzdGluZyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC10ZXN0aW5nLW1lbnUtb3RoZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVudS50ZXN0aW5nLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tZW51LnRlc3Rpbmcuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBPdGhlck1lbnVUZXN0aW5nUGFnZSBleHRlbmRzIE1lbnVUZXN0aW5nUGFnZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgLy8gTW9kYWwgZWRpdG9yIGdpdmUgJ251bGwnXG4gICAgcm91dGVyOiBSb3V0ZXIsXG4gICAgbmF2Q29udHJvbGxlcjogTmF2Q29udHJvbGxlcixcbiAgICBhbGVydEN0cmw6IEFsZXJ0Q29udHJvbGxlcixcbiAgICB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgbWVudVNlcnZpY2U6IE1lbnVTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKHJvdXRlLCByb3V0ZXIsIG5hdkNvbnRyb2xsZXIsIGFsZXJ0Q3RybCwgdHJhbnNsYXRlLCBtZW51U2VydmljZSk7XG4gICAgdGhpcy5sb2dQcmVmaXggPSAnW21lbnUtdGVzdGluZy1vdGhlcl0gJztcbiAgICB0aGlzLnNob3dPdGhlckxpbmtzID0gZmFsc2U7XG4gIH1cblxuICBhc3luYyBpbml0U3ViTWVudSgpIHtcbiAgICBjb25zdCBvdGhlcklkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoJ290aGVySWQnKTtcbiAgICB0aGlzLnRpdGxlID0gJ090aGVyJyArIG90aGVySWQ7XG4gICAgdGhpcy5zZWNvbmRUYWJUaXRsZSA9ICdTZWNvbmQnO1xuICAgIHRoaXMucGFyZW50UGF0aCA9ICcvdGVzdGluZy9zaGFyZWQvbWVudT90YWI9MSc7XG4gICAgdGhpcy5jaGlsZFBhdGggPSAnJztcbiAgICBjb25zdCBwYXRoID0gJy90ZXN0aW5nL3NoYXJlZC9tZW51L290aGVycy8nICsgb3RoZXJJZDtcbiAgICBjb25zdCBwYXJlbnRQYXRoID0gJy90ZXN0aW5nL3NoYXJlZC9tZW51P3RhYj0xJztcbiAgICBjb25zb2xlLmRlYnVnKGAke3RoaXMubG9nUHJlZml4fSBTZXR1cCB3aXRoYCwgeyBwYXRoLCBwYXJlbnRQYXRoIH0pO1xuICB9XG59XG4iLCI8YXBwLXRvb2xiYXIgW2RlZmF1bHRCYWNrSHJlZl09XCJwYXJlbnRQYXRoXCI+XG4gIDxpb24tdGl0bGU+e3sgdGl0bGUgfX08L2lvbi10aXRsZT5cbjwvYXBwLXRvb2xiYXI+XG5cbjxpb24tY29udGVudD5cblxuICA8bWF0LXRhYi1ncm91cCAjdGFiR3JvdXBcbiAgICAgICAgICAgICAgICAgWyhzZWxlY3RlZEluZGV4KV09XCJzZWxlY3RlZFRhYkluZGV4XCJcbiAgICAgICAgICAgICAgICAgKHNlbGVjdGVkVGFiQ2hhbmdlKT1cIm9uVGFiQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICBkeW5hbWljSGVpZ2h0PlxuXG4gICAgPCEtLSBUQUI6IDEgLS0+XG4gICAgPG1hdC10YWIgYXBwU3ViTWVudVRhYiBbc3ViTWVudVRpdGxlXT1cInRpdGxlXCIgW3BhcmVudFBhdGhdPVwicGFyZW50UGF0aFwiIGxhYmVsPVwiRGV0YWlsc1wiIGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBtYXQtdGFiLWxhYmVsPlxuICAgICAgICA8aW9uLWxhYmVsPkRldGFpbHM8L2lvbi1sYWJlbD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgICA8cD5BIGZpcnN0IHRhYjwvcD5cblxuICAgICAgICA8cD5cbiAgICAgICAgICA8aW9uLXRvZ2dsZSAjdG9nZ2xlVGhpcmQ+XG4gICAgICAgICAgICBUb2dnbGUgVGhpcmQgVGFiXG4gICAgICAgICAgPC9pb24tdG9nZ2xlPlxuICAgICAgICA8L3A+XG5cbiAgICAgICAgPHA+XG4gICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImVuYWJsZU1lbnUoZmFsc2UpXCIgKm5nSWY9XCJtZW51U2VydmljZS5lbmFibGVkfGFzeW5jXCI+XG4gICAgICAgICAgICBEaXNhYmxlIG1lbnVcbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImVuYWJsZU1lbnUodHJ1ZSlcIiAqbmdJZj1cIiEobWVudVNlcnZpY2UuZW5hYmxlZHxhc3luYylcIj5cbiAgICAgICAgICAgIEVuYWJsZSBtZW51XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJ0b2dnbGVTcGxpdFBhbmVXaGVuKClcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhKG1lbnVTZXJ2aWNlLmVuYWJsZWR8YXN5bmMpXCI+XG4gICAgICAgICAgICBUb2dnbGUgc3BsaXQgcGFuZVxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG5cbiAgICA8L21hdC10YWI+XG5cbiAgICA8IS0tIFRBQjogMiAtLT5cbiAgICA8bWF0LXRhYiBhcHBTdWJNZW51VGFiXG4gICAgICAgICAgICAgW3N1Yk1lbnVUaXRsZV09XCIkc2Vjb25kVGFiVGl0bGV8YXN5bmNcIlxuICAgICAgICAgICAgIGxhYmVsPVwiU2Vjb25kXCIgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgPG5nLXRlbXBsYXRlIG1hdC10YWItbGFiZWw+XG4gICAgICAgIDxpb24tbGFiZWwgW2lubmVySFRNTF09XCIkc2Vjb25kVGFiVGl0bGV8YXN5bmNcIj48L2lvbi1sYWJlbD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgICA8cD5BIHNlY29uZCB0YWI8L3A+XG5cbiAgICAgICAgPHAgKm5nSWY9XCJzaG93T3RoZXJMaW5rc1wiPlxuICAgICAgICAgIE5hdmlnYXRlIHRvIDogPGEgW3JvdXRlckxpbmtdPVwiY2hpbGRQYXRoKycvMSdcIiA+XG4gICAgICAgICAgICB7eyBjaGlsZFBhdGggfX0vMVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8YnIvPlxuICAgICAgICAgIE5hdmlnYXRlIHRvIDogPGEgW3JvdXRlckxpbmtdPVwiY2hpbGRQYXRoKycvMidcIiA+XG4gICAgICAgICAgICB7eyBjaGlsZFBhdGggfX0vMlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9wPlxuXG4gICAgICAgIDxwPlxuICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJjaGFuZ2VTZWNvbmRUYWJUaXRsZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICBDaGFuZ2UgdGFiIGxhYmVsXG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cblxuICAgIDwvbWF0LXRhYj5cblxuICAgIDwhLS0gVEFCOiAzIC0tPlxuICAgIDxtYXQtdGFiIGFwcFN1Yk1lbnVUYWIgW2xhYmVsXT1cInRoaXJkVGFiVGl0bGVcIlxuICAgICAgICAgICAgIGNsYXNzPVwiaW9uLXBhZGRpbmdcIiBbZGlzYWJsZWRdPVwiIXRvZ2dsZVRoaXJkLmNoZWNrZWRcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBtYXQtdGFiLWxhYmVsPlxuICAgICAgICA8aW9uLWxhYmVsPnt7dGhpcmRUYWJUaXRsZX19PC9pb24tbGFiZWw+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgICAgQSB0aGlyZCB0YWJcbiAgICAgIDwvZGl2PlxuXG4gICAgPC9tYXQtdGFiPlxuICA8L21hdC10YWItZ3JvdXA+XG48L2lvbi1jb250ZW50PlxuIl19
@@ -1,6 +1,7 @@
1
1
  import { Component, ViewChild } from '@angular/core';
2
2
  import { AppTabEditor } from '../../form/entity/editor.class';
3
- import { MenuItems } from '../menu.model';
3
+ import { BehaviorSubject } from 'rxjs';
4
+ import { DateUtils } from '../../../shared/dates';
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "@angular/router";
6
7
  import * as i2 from "@ionic/angular";
@@ -14,15 +15,22 @@ export class MenuTestingPage extends AppTabEditor {
14
15
  constructor(route, // Modal editor give 'null'
15
16
  router, navController, alertCtrl, translate, menuService) {
16
17
  super(route, router, navController, alertCtrl, translate, {
17
- tabCount: 3
18
+ tabCount: 3,
18
19
  });
19
20
  this.menuService = menuService;
20
21
  this.logPrefix = '[menu-testing] ';
21
22
  this.childPath = '';
22
23
  this.title = '';
23
- this.secondTabTitle = '';
24
24
  this.thirdTabTitle = '';
25
25
  this.parentPath = null;
26
+ this.showOtherLinks = true;
27
+ this.$secondTabTitle = new BehaviorSubject('Second');
28
+ }
29
+ set secondTabTitle(value) {
30
+ this.$secondTabTitle.next(value);
31
+ }
32
+ get secondTabTitle() {
33
+ return this.$secondTabTitle.value;
26
34
  }
27
35
  ngOnInit() {
28
36
  console.debug(`${this.logPrefix} Init page...`);
@@ -48,6 +56,10 @@ export class MenuTestingPage extends AppTabEditor {
48
56
  save(event, options) {
49
57
  return Promise.resolve(false);
50
58
  }
59
+ changeSecondTabTitle(event) {
60
+ const time = DateUtils.moment().format('HH:mm:ss');
61
+ this.secondTabTitle = `<small>${time}<br/></small>Second`;
62
+ }
51
63
  enableMenu(value) {
52
64
  this.menuService.enable(value);
53
65
  }
@@ -55,7 +67,6 @@ export class MenuTestingPage extends AppTabEditor {
55
67
  this.menuService.toggleSplitPaneWhen();
56
68
  }
57
69
  async initSubMenu() {
58
- const pathParam = MenuItems.parsePathWithQuery(this.router.url);
59
70
  this.title = 'Menu';
60
71
  this.secondTabTitle = 'Others';
61
72
  this.thirdTabTitle = 'Third';
@@ -69,12 +80,12 @@ export class MenuTestingPage extends AppTabEditor {
69
80
  }
70
81
  }
71
82
  MenuTestingPage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MenuTestingPage, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.NavController }, { token: i2.AlertController }, { token: i3.TranslateService }, { token: i4.MenuService }], target: i0.ɵɵFactoryTarget.Component });
72
- MenuTestingPage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: MenuTestingPage, selector: "app-testing-menu", viewQueries: [{ propertyName: "toggleThird", first: true, predicate: ["toggleThird"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<app-toolbar [defaultBackHref]=\"parentPath\">\n <ion-title>{{ title }}</ion-title>\n</app-toolbar>\n\n<ion-content>\n\n <mat-tab-group #tabGroup\n [(selectedIndex)]=\"selectedTabIndex\"\n (selectedTabChange)=\"onTabChange($event)\"\n dynamicHeight>\n\n <!-- TAB: 1 -->\n <mat-tab appSubMenuTab [subMenuTitle]=\"title\" [parentPath]=\"parentPath\" label=\"Details\" class=\"ion-padding\">\n <ng-template mat-tab-label>\n <ion-label>Details</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n <p>A first tab</p>\n\n <div class=\"ion-margin-vertical\">\n <ion-toggle #toggleThird>\n Toggle Third Tab\n </ion-toggle>\n </div>\n\n <div class=\"ion-margin-vertical\">\n <ion-button (click)=\"enableMenu(false)\" *ngIf=\"menuService.enabled|async\">\n Disable menu\n </ion-button>\n <ion-button (click)=\"enableMenu(true)\" *ngIf=\"!(menuService.enabled|async)\">\n Enable menu\n </ion-button>\n <ion-button (click)=\"toggleSplitPaneWhen()\"\n [disabled]=\"!(menuService.enabled|async)\">\n Toggle split pane\n </ion-button>\n </div>\n </div>\n\n </mat-tab>\n\n <!-- TAB: 2 -->\n <mat-tab appSubMenuTab [label]=\"secondTabTitle\" class=\"ion-padding\">\n <ng-template mat-tab-label>\n <ion-label>{{secondTabTitle}}</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n A second tab<br/>\n\n <ng-container *ngIf=\"secondTabTitle=== 'Others'\">\n Navigate to : <a [routerLink]=\"childPath+'/1'\" >\n {{ childPath }}/1\n </a>\n <br/>\n Navigate to : <a [routerLink]=\"childPath+'/2'\" >\n {{ childPath }}/2\n </a>\n </ng-container>\n </div>\n\n </mat-tab>\n\n <!-- TAB: 3 -->\n <mat-tab appSubMenuTab [label]=\"thirdTabTitle\" class=\"ion-padding\" [disabled]=\"!toggleThird.checked\">\n <ng-template mat-tab-label>\n <ion-label>{{thirdTabTitle}}</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n A third tab\n </div>\n\n </mat-tab>\n </mat-tab-group>\n</ion-content>\n", styles: [".menu-item{padding-left:0 px}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i6.SubMenuTabDirective, selector: "[appSubMenuTab]", inputs: ["label", "disabled", "parentPath", "path", "subMenuTitle"] }, { kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i2.IonToggle, selector: "ion-toggle", inputs: ["alignment", "checked", "color", "disabled", "enableOnOffLabels", "justify", "labelPlacement", "legacy", "mode", "name", "value"] }, { kind: "directive", type: i2.BooleanValueAccessor, selector: "ion-checkbox,ion-toggle" }, { kind: "directive", type: i2.RouterLinkWithHrefDelegate, selector: "a[routerLink],area[routerLink]", inputs: ["routerDirection", "routerAnimation"] }, { kind: "component", type: i7.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i7.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i7.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i8.ToolbarComponent, selector: "app-toolbar", inputs: ["progressBarMode", "title", "color", "class", "backHref", "defaultBackHref", "hasValidate", "hasClose", "hasSearch", "canGoBack", "canShowMenu"], outputs: ["onValidate", "onClose", "onValidateAndClose", "onBackClick", "onSearch"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }] });
83
+ MenuTestingPage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: MenuTestingPage, selector: "app-testing-menu", viewQueries: [{ propertyName: "toggleThird", first: true, predicate: ["toggleThird"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<app-toolbar [defaultBackHref]=\"parentPath\">\n <ion-title>{{ title }}</ion-title>\n</app-toolbar>\n\n<ion-content>\n\n <mat-tab-group #tabGroup\n [(selectedIndex)]=\"selectedTabIndex\"\n (selectedTabChange)=\"onTabChange($event)\"\n dynamicHeight>\n\n <!-- TAB: 1 -->\n <mat-tab appSubMenuTab [subMenuTitle]=\"title\" [parentPath]=\"parentPath\" label=\"Details\" class=\"ion-padding\">\n <ng-template mat-tab-label>\n <ion-label>Details</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n <p>A first tab</p>\n\n <p>\n <ion-toggle #toggleThird>\n Toggle Third Tab\n </ion-toggle>\n </p>\n\n <p>\n <ion-button (click)=\"enableMenu(false)\" *ngIf=\"menuService.enabled|async\">\n Disable menu\n </ion-button>\n <ion-button (click)=\"enableMenu(true)\" *ngIf=\"!(menuService.enabled|async)\">\n Enable menu\n </ion-button>\n <ion-button (click)=\"toggleSplitPaneWhen()\"\n [disabled]=\"!(menuService.enabled|async)\">\n Toggle split pane\n </ion-button>\n </p>\n </div>\n\n </mat-tab>\n\n <!-- TAB: 2 -->\n <mat-tab appSubMenuTab\n [subMenuTitle]=\"$secondTabTitle|async\"\n label=\"Second\" class=\"ion-padding\">\n <ng-template mat-tab-label>\n <ion-label [innerHTML]=\"$secondTabTitle|async\"></ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n <p>A second tab</p>\n\n <p *ngIf=\"showOtherLinks\">\n Navigate to : <a [routerLink]=\"childPath+'/1'\" >\n {{ childPath }}/1\n </a>\n <br/>\n Navigate to : <a [routerLink]=\"childPath+'/2'\" >\n {{ childPath }}/2\n </a>\n </p>\n\n <p>\n <ion-button (click)=\"changeSecondTabTitle($event)\">\n Change tab label\n </ion-button>\n </p>\n </div>\n\n </mat-tab>\n\n <!-- TAB: 3 -->\n <mat-tab appSubMenuTab [label]=\"thirdTabTitle\"\n class=\"ion-padding\" [disabled]=\"!toggleThird.checked\">\n <ng-template mat-tab-label>\n <ion-label>{{thirdTabTitle}}</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n A third tab\n </div>\n\n </mat-tab>\n </mat-tab-group>\n</ion-content>\n", styles: [".menu-item{padding-left:0 px}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i6.SubMenuTabDirective, selector: "[appSubMenuTab]", inputs: ["label", "disabled", "parentPath", "path", "subMenuTitle"] }, { kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i2.IonToggle, selector: "ion-toggle", inputs: ["alignment", "checked", "color", "disabled", "enableOnOffLabels", "justify", "labelPlacement", "legacy", "mode", "name", "value"] }, { kind: "directive", type: i2.BooleanValueAccessor, selector: "ion-checkbox,ion-toggle" }, { kind: "directive", type: i2.RouterLinkWithHrefDelegate, selector: "a[routerLink],area[routerLink]", inputs: ["routerDirection", "routerAnimation"] }, { kind: "component", type: i7.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i7.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i7.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i8.ToolbarComponent, selector: "app-toolbar", inputs: ["progressBarMode", "title", "color", "class", "backHref", "defaultBackHref", "hasValidate", "hasClose", "hasSearch", "canGoBack", "canShowMenu"], outputs: ["onValidate", "onClose", "onValidateAndClose", "onBackClick", "onSearch"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }] });
73
84
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MenuTestingPage, decorators: [{
74
85
  type: Component,
75
- args: [{ selector: 'app-testing-menu', template: "<app-toolbar [defaultBackHref]=\"parentPath\">\n <ion-title>{{ title }}</ion-title>\n</app-toolbar>\n\n<ion-content>\n\n <mat-tab-group #tabGroup\n [(selectedIndex)]=\"selectedTabIndex\"\n (selectedTabChange)=\"onTabChange($event)\"\n dynamicHeight>\n\n <!-- TAB: 1 -->\n <mat-tab appSubMenuTab [subMenuTitle]=\"title\" [parentPath]=\"parentPath\" label=\"Details\" class=\"ion-padding\">\n <ng-template mat-tab-label>\n <ion-label>Details</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n <p>A first tab</p>\n\n <div class=\"ion-margin-vertical\">\n <ion-toggle #toggleThird>\n Toggle Third Tab\n </ion-toggle>\n </div>\n\n <div class=\"ion-margin-vertical\">\n <ion-button (click)=\"enableMenu(false)\" *ngIf=\"menuService.enabled|async\">\n Disable menu\n </ion-button>\n <ion-button (click)=\"enableMenu(true)\" *ngIf=\"!(menuService.enabled|async)\">\n Enable menu\n </ion-button>\n <ion-button (click)=\"toggleSplitPaneWhen()\"\n [disabled]=\"!(menuService.enabled|async)\">\n Toggle split pane\n </ion-button>\n </div>\n </div>\n\n </mat-tab>\n\n <!-- TAB: 2 -->\n <mat-tab appSubMenuTab [label]=\"secondTabTitle\" class=\"ion-padding\">\n <ng-template mat-tab-label>\n <ion-label>{{secondTabTitle}}</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n A second tab<br/>\n\n <ng-container *ngIf=\"secondTabTitle=== 'Others'\">\n Navigate to : <a [routerLink]=\"childPath+'/1'\" >\n {{ childPath }}/1\n </a>\n <br/>\n Navigate to : <a [routerLink]=\"childPath+'/2'\" >\n {{ childPath }}/2\n </a>\n </ng-container>\n </div>\n\n </mat-tab>\n\n <!-- TAB: 3 -->\n <mat-tab appSubMenuTab [label]=\"thirdTabTitle\" class=\"ion-padding\" [disabled]=\"!toggleThird.checked\">\n <ng-template mat-tab-label>\n <ion-label>{{thirdTabTitle}}</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n A third tab\n </div>\n\n </mat-tab>\n </mat-tab-group>\n</ion-content>\n", styles: [".menu-item{padding-left:0 px}\n"] }]
86
+ args: [{ selector: 'app-testing-menu', template: "<app-toolbar [defaultBackHref]=\"parentPath\">\n <ion-title>{{ title }}</ion-title>\n</app-toolbar>\n\n<ion-content>\n\n <mat-tab-group #tabGroup\n [(selectedIndex)]=\"selectedTabIndex\"\n (selectedTabChange)=\"onTabChange($event)\"\n dynamicHeight>\n\n <!-- TAB: 1 -->\n <mat-tab appSubMenuTab [subMenuTitle]=\"title\" [parentPath]=\"parentPath\" label=\"Details\" class=\"ion-padding\">\n <ng-template mat-tab-label>\n <ion-label>Details</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n <p>A first tab</p>\n\n <p>\n <ion-toggle #toggleThird>\n Toggle Third Tab\n </ion-toggle>\n </p>\n\n <p>\n <ion-button (click)=\"enableMenu(false)\" *ngIf=\"menuService.enabled|async\">\n Disable menu\n </ion-button>\n <ion-button (click)=\"enableMenu(true)\" *ngIf=\"!(menuService.enabled|async)\">\n Enable menu\n </ion-button>\n <ion-button (click)=\"toggleSplitPaneWhen()\"\n [disabled]=\"!(menuService.enabled|async)\">\n Toggle split pane\n </ion-button>\n </p>\n </div>\n\n </mat-tab>\n\n <!-- TAB: 2 -->\n <mat-tab appSubMenuTab\n [subMenuTitle]=\"$secondTabTitle|async\"\n label=\"Second\" class=\"ion-padding\">\n <ng-template mat-tab-label>\n <ion-label [innerHTML]=\"$secondTabTitle|async\"></ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n <p>A second tab</p>\n\n <p *ngIf=\"showOtherLinks\">\n Navigate to : <a [routerLink]=\"childPath+'/1'\" >\n {{ childPath }}/1\n </a>\n <br/>\n Navigate to : <a [routerLink]=\"childPath+'/2'\" >\n {{ childPath }}/2\n </a>\n </p>\n\n <p>\n <ion-button (click)=\"changeSecondTabTitle($event)\">\n Change tab label\n </ion-button>\n </p>\n </div>\n\n </mat-tab>\n\n <!-- TAB: 3 -->\n <mat-tab appSubMenuTab [label]=\"thirdTabTitle\"\n class=\"ion-padding\" [disabled]=\"!toggleThird.checked\">\n <ng-template mat-tab-label>\n <ion-label>{{thirdTabTitle}}</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n A third tab\n </div>\n\n </mat-tab>\n </mat-tab-group>\n</ion-content>\n", styles: [".menu-item{padding-left:0 px}\n"] }]
76
87
  }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.NavController }, { type: i2.AlertController }, { type: i3.TranslateService }, { type: i4.MenuService }]; }, propDecorators: { toggleThird: [{
77
88
  type: ViewChild,
78
89
  args: ['toggleThird']
79
90
  }] } });
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS50ZXN0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL21lbnUvdGVzdGluZy9tZW51LnRlc3RpbmcudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvbWVudS90ZXN0aW5nL21lbnUudGVzdGluZy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFnQyxTQUFTLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFFOUcsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBSTVELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7QUFPeEMsTUFBTSxPQUFPLGVBQWdCLFNBQVEsWUFBWTtJQVkvQyxZQUNFLEtBQXFCLEVBQUUsMkJBQTJCO0lBQ2xELE1BQWMsRUFDZCxhQUE0QixFQUM1QixTQUEwQixFQUMxQixTQUEyQixFQUNqQixXQUF3QjtRQUVsQyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRTtZQUN4RCxRQUFRLEVBQUUsQ0FBQztTQUNaLENBQUMsQ0FBQztRQUpPLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBYjFCLGNBQVMsR0FBRyxpQkFBaUIsQ0FBQztRQUM5QixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2YsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ25CLGVBQVUsR0FBVyxJQUFJLENBQUM7SUFhcEMsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsZUFBZSxDQUFDLENBQUM7UUFFaEQsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsZUFBZTtRQUNiLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsV0FBVztRQUNULEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsZUFBZSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELElBQUksQ0FBQyxFQUFXLEVBQUUsT0FBYTtRQUM3QixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksQ0FBQyxLQUF3QixFQUFFLE9BQVk7UUFDekMsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFUyxVQUFVLENBQUMsS0FBYztRQUNqQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBQ1MsbUJBQW1CO1FBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBQ1MsS0FBSyxDQUFDLFdBQVc7UUFDekIsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7UUFDcEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUM7UUFDL0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUM7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyw2QkFBNkIsQ0FBQztRQUMvQyxNQUFNLElBQUksR0FBRyxzQkFBc0IsQ0FBQztRQUNwQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsYUFBYSxFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFDLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRVMsdUJBQXVCO1FBQy9CLE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQzs7NEdBNUVVLGVBQWU7Z0dBQWYsZUFBZSwyTENiNUIsNndFQTZFQTsyRkRoRWEsZUFBZTtrQkFMM0IsU0FBUzsrQkFDRSxrQkFBa0I7Nk9BT0YsV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWVudVNlcnZpY2V9IGZyb20gJy4uL21lbnUuc2VydmljZSc7XG5pbXBvcnQge0FwcFRhYkVkaXRvcn0gZnJvbSAnLi4vLi4vZm9ybS9lbnRpdHkvZWRpdG9yLmNsYXNzJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7QWxlcnRDb250cm9sbGVyLCBJb25Ub2dnbGUsIE5hdkNvbnRyb2xsZXJ9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge01lbnVJdGVtc30gZnJvbSAnLi4vbWVudS5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC10ZXN0aW5nLW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVudS50ZXN0aW5nLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tZW51LnRlc3Rpbmcuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBNZW51VGVzdGluZ1BhZ2UgZXh0ZW5kcyBBcHBUYWJFZGl0b3JcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgQFZpZXdDaGlsZCgndG9nZ2xlVGhpcmQnKSB0b2dnbGVUaGlyZDogSW9uVG9nZ2xlO1xuXG4gIHByb3RlY3RlZCBsb2dQcmVmaXggPSAnW21lbnUtdGVzdGluZ10gJztcbiAgcHJvdGVjdGVkIGNoaWxkUGF0aCA9ICcnO1xuICBwcm90ZWN0ZWQgdGl0bGUgPSAnJztcbiAgcHJvdGVjdGVkIHNlY29uZFRhYlRpdGxlID0gJyc7XG4gIHByb3RlY3RlZCB0aGlyZFRhYlRpdGxlID0gJyc7XG4gIHByb3RlY3RlZCBwYXJlbnRQYXRoOiBzdHJpbmcgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgLy8gTW9kYWwgZWRpdG9yIGdpdmUgJ251bGwnXG4gICAgcm91dGVyOiBSb3V0ZXIsXG4gICAgbmF2Q29udHJvbGxlcjogTmF2Q29udHJvbGxlcixcbiAgICBhbGVydEN0cmw6IEFsZXJ0Q29udHJvbGxlcixcbiAgICB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG1lbnVTZXJ2aWNlOiBNZW51U2VydmljZSxcbiAgKSB7XG4gICAgc3VwZXIocm91dGUsIHJvdXRlciwgbmF2Q29udHJvbGxlciwgYWxlcnRDdHJsLCB0cmFuc2xhdGUsIHtcbiAgICAgIHRhYkNvdW50OiAzXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zb2xlLmRlYnVnKGAke3RoaXMubG9nUHJlZml4fSBJbml0IHBhZ2UuLi5gKTtcblxuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgdGhpcy5pbml0U3ViTWVudSgpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICBjb25zb2xlLmRlYnVnKGAke3RoaXMubG9nUHJlZml4fURlc3Ryb3lpbmcuLi5gKTtcbiAgfVxuXG4gIGxvYWQoaWQ/OiBudW1iZXIsIG9wdGlvbnM/OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gIH1cblxuICBnZXQgaXNOZXdEYXRhKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJlbG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gIH1cblxuICBzYXZlKGV2ZW50OiBFdmVudCB8IHVuZGVmaW5lZCwgb3B0aW9uczogYW55KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZW5hYmxlTWVudSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMubWVudVNlcnZpY2UuZW5hYmxlKHZhbHVlKTtcbiAgfVxuICBwcm90ZWN0ZWQgdG9nZ2xlU3BsaXRQYW5lV2hlbigpIHtcbiAgICB0aGlzLm1lbnVTZXJ2aWNlLnRvZ2dsZVNwbGl0UGFuZVdoZW4oKTtcbiAgfVxuICBwcm90ZWN0ZWQgYXN5bmMgaW5pdFN1Yk1lbnUoKSB7XG4gICAgY29uc3QgcGF0aFBhcmFtID0gTWVudUl0ZW1zLnBhcnNlUGF0aFdpdGhRdWVyeSh0aGlzLnJvdXRlci51cmwpO1xuICAgIHRoaXMudGl0bGUgPSAnTWVudSc7XG4gICAgdGhpcy5zZWNvbmRUYWJUaXRsZSA9ICdPdGhlcnMnO1xuICAgIHRoaXMudGhpcmRUYWJUaXRsZSA9ICdUaGlyZCc7XG4gICAgdGhpcy5wYXJlbnRQYXRoID0gJy90ZXN0aW5nJztcbiAgICB0aGlzLmNoaWxkUGF0aCA9ICcvdGVzdGluZy9zaGFyZWQvbWVudS9vdGhlcnMnO1xuICAgIGNvbnN0IHBhdGggPSAnL3Rlc3Rpbmcvc2hhcmVkL21lbnUnO1xuICAgIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5sb2dQcmVmaXh9IFNldHVwIHdpdGhgLCB7cGF0aCwgcGFyZW50UGF0aDogdGhpcy5wYXJlbnRQYXRofSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0Rmlyc3RJbnZhbGlkVGFiSW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuIiwiPGFwcC10b29sYmFyIFtkZWZhdWx0QmFja0hyZWZdPVwicGFyZW50UGF0aFwiPlxuICA8aW9uLXRpdGxlPnt7IHRpdGxlIH19PC9pb24tdGl0bGU+XG48L2FwcC10b29sYmFyPlxuXG48aW9uLWNvbnRlbnQ+XG5cbiAgPG1hdC10YWItZ3JvdXAgI3RhYkdyb3VwXG4gICAgICAgICAgICAgICAgIFsoc2VsZWN0ZWRJbmRleCldPVwic2VsZWN0ZWRUYWJJbmRleFwiXG4gICAgICAgICAgICAgICAgIChzZWxlY3RlZFRhYkNoYW5nZSk9XCJvblRhYkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgZHluYW1pY0hlaWdodD5cblxuICAgIDwhLS0gVEFCOiAxIC0tPlxuICAgIDxtYXQtdGFiIGFwcFN1Yk1lbnVUYWIgW3N1Yk1lbnVUaXRsZV09XCJ0aXRsZVwiIFtwYXJlbnRQYXRoXT1cInBhcmVudFBhdGhcIiBsYWJlbD1cIkRldGFpbHNcIiBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gICAgICA8bmctdGVtcGxhdGUgbWF0LXRhYi1sYWJlbD5cbiAgICAgICAgPGlvbi1sYWJlbD5EZXRhaWxzPC9pb24tbGFiZWw+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgICAgPHA+QSBmaXJzdCB0YWI8L3A+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlvbi1tYXJnaW4tdmVydGljYWxcIj5cbiAgICAgICAgICA8aW9uLXRvZ2dsZSAjdG9nZ2xlVGhpcmQ+XG4gICAgICAgICAgICBUb2dnbGUgVGhpcmQgVGFiXG4gICAgICAgICAgPC9pb24tdG9nZ2xlPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW9uLW1hcmdpbi12ZXJ0aWNhbFwiPlxuICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJlbmFibGVNZW51KGZhbHNlKVwiICpuZ0lmPVwibWVudVNlcnZpY2UuZW5hYmxlZHxhc3luY1wiPlxuICAgICAgICAgICAgRGlzYWJsZSBtZW51XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJlbmFibGVNZW51KHRydWUpXCIgKm5nSWY9XCIhKG1lbnVTZXJ2aWNlLmVuYWJsZWR8YXN5bmMpXCI+XG4gICAgICAgICAgICBFbmFibGUgbWVudVxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwidG9nZ2xlU3BsaXRQYW5lV2hlbigpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIShtZW51U2VydmljZS5lbmFibGVkfGFzeW5jKVwiPlxuICAgICAgICAgICAgVG9nZ2xlIHNwbGl0IHBhbmVcbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICA8L21hdC10YWI+XG5cbiAgICA8IS0tIFRBQjogMiAtLT5cbiAgICA8bWF0LXRhYiBhcHBTdWJNZW51VGFiIFtsYWJlbF09XCJzZWNvbmRUYWJUaXRsZVwiIGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBtYXQtdGFiLWxhYmVsPlxuICAgICAgICA8aW9uLWxhYmVsPnt7c2Vjb25kVGFiVGl0bGV9fTwvaW9uLWxhYmVsPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPGRpdiBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gICAgICAgIEEgc2Vjb25kIHRhYjxici8+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlY29uZFRhYlRpdGxlPT09ICdPdGhlcnMnXCI+XG4gICAgICAgICAgTmF2aWdhdGUgdG8gOiA8YSBbcm91dGVyTGlua109XCJjaGlsZFBhdGgrJy8xJ1wiID5cbiAgICAgICAgICAgIHt7IGNoaWxkUGF0aCB9fS8xXG4gICAgICAgICAgPC9hPlxuICAgICAgICAgIDxici8+XG4gICAgICAgICAgTmF2aWdhdGUgdG8gOiA8YSBbcm91dGVyTGlua109XCJjaGlsZFBhdGgrJy8yJ1wiID5cbiAgICAgICAgICB7eyBjaGlsZFBhdGggfX0vMlxuICAgICAgICA8L2E+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG5cbiAgICA8L21hdC10YWI+XG5cbiAgICA8IS0tIFRBQjogMyAtLT5cbiAgICA8bWF0LXRhYiBhcHBTdWJNZW51VGFiIFtsYWJlbF09XCJ0aGlyZFRhYlRpdGxlXCIgY2xhc3M9XCJpb24tcGFkZGluZ1wiIFtkaXNhYmxlZF09XCIhdG9nZ2xlVGhpcmQuY2hlY2tlZFwiPlxuICAgICAgPG5nLXRlbXBsYXRlIG1hdC10YWItbGFiZWw+XG4gICAgICAgIDxpb24tbGFiZWw+e3t0aGlyZFRhYlRpdGxlfX08L2lvbi1sYWJlbD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgICBBIHRoaXJkIHRhYlxuICAgICAgPC9kaXY+XG5cbiAgICA8L21hdC10YWI+XG4gIDwvbWF0LXRhYi1ncm91cD5cbjwvaW9uLWNvbnRlbnQ+XG4iXX0=
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS50ZXN0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL21lbnUvdGVzdGluZy9tZW51LnRlc3RpbmcudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvbWVudS90ZXN0aW5nL21lbnUudGVzdGluZy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBSTlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7O0FBT2xELE1BQU0sT0FBTyxlQUFnQixTQUFRLFlBQVk7SUFtQi9DLFlBQ0UsS0FBcUIsRUFBRSwyQkFBMkI7SUFDbEQsTUFBYyxFQUNkLGFBQTRCLEVBQzVCLFNBQTBCLEVBQzFCLFNBQTJCLEVBQ2pCLFdBQXdCO1FBRWxDLEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFO1lBQ3hELFFBQVEsRUFBRSxDQUFDO1NBQ1osQ0FBQyxDQUFDO1FBSk8sZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUF0QjFCLGNBQVMsR0FBRyxpQkFBaUIsQ0FBQztRQUM5QixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2YsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ25CLGVBQVUsR0FBVyxJQUFJLENBQUM7UUFDMUIsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFFdEIsb0JBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBUyxRQUFRLENBQUMsQ0FBQztJQW9CbEUsQ0FBQztJQWxCRCxJQUFjLGNBQWMsQ0FBQyxLQUFhO1FBQ3hDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFDRCxJQUFjLGNBQWM7UUFDMUIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQztJQUNwQyxDQUFDO0lBZUQsUUFBUTtRQUNOLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxlQUFlLENBQUMsQ0FBQztRQUVoRCxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxlQUFlO1FBQ2IsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxXQUFXO1FBQ1QsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxlQUFlLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsSUFBSSxDQUFDLEVBQVcsRUFBRSxPQUFhO1FBQzdCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQXdCLEVBQUUsT0FBWTtRQUN6QyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELG9CQUFvQixDQUFDLEtBQWU7UUFDbEMsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsY0FBYyxHQUFHLFVBQVUsSUFBSSxxQkFBcUIsQ0FBQztJQUM1RCxDQUFDO0lBRVMsVUFBVSxDQUFDLEtBQWM7UUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUNTLG1CQUFtQjtRQUMzQixJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDekMsQ0FBQztJQUNTLEtBQUssQ0FBQyxXQUFXO1FBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDO1FBQy9CLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsNkJBQTZCLENBQUM7UUFDL0MsTUFBTSxJQUFJLEdBQUcsc0JBQXNCLENBQUM7UUFDcEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUVTLHVCQUF1QjtRQUMvQixPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7OzRHQXZGVSxlQUFlO2dHQUFmLGVBQWUsMkxDZDVCLCs1RUFzRkE7MkZEeEVhLGVBQWU7a0JBTDNCLFNBQVM7K0JBQ0Usa0JBQWtCOzZPQUtGLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWVudVNlcnZpY2UgfSBmcm9tICcuLi9tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwVGFiRWRpdG9yIH0gZnJvbSAnLi4vLi4vZm9ybS9lbnRpdHkvZWRpdG9yLmNsYXNzJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQWxlcnRDb250cm9sbGVyLCBJb25Ub2dnbGUsIE5hdkNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERhdGVVdGlscyB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9kYXRlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC10ZXN0aW5nLW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVudS50ZXN0aW5nLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tZW51LnRlc3Rpbmcuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBNZW51VGVzdGluZ1BhZ2UgZXh0ZW5kcyBBcHBUYWJFZGl0b3IgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ3RvZ2dsZVRoaXJkJykgdG9nZ2xlVGhpcmQ6IElvblRvZ2dsZTtcblxuICBwcm90ZWN0ZWQgbG9nUHJlZml4ID0gJ1ttZW51LXRlc3RpbmddICc7XG4gIHByb3RlY3RlZCBjaGlsZFBhdGggPSAnJztcbiAgcHJvdGVjdGVkIHRpdGxlID0gJyc7XG4gIHByb3RlY3RlZCB0aGlyZFRhYlRpdGxlID0gJyc7XG4gIHByb3RlY3RlZCBwYXJlbnRQYXRoOiBzdHJpbmcgPSBudWxsO1xuICBwcm90ZWN0ZWQgc2hvd090aGVyTGlua3MgPSB0cnVlO1xuXG4gIHByb3RlY3RlZCAkc2Vjb25kVGFiVGl0bGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJ1NlY29uZCcpO1xuXG4gIHByb3RlY3RlZCBzZXQgc2Vjb25kVGFiVGl0bGUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuJHNlY29uZFRhYlRpdGxlLm5leHQodmFsdWUpO1xuICB9XG4gIHByb3RlY3RlZCBnZXQgc2Vjb25kVGFiVGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy4kc2Vjb25kVGFiVGl0bGUudmFsdWU7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGUsIC8vIE1vZGFsIGVkaXRvciBnaXZlICdudWxsJ1xuICAgIHJvdXRlcjogUm91dGVyLFxuICAgIG5hdkNvbnRyb2xsZXI6IE5hdkNvbnRyb2xsZXIsXG4gICAgYWxlcnRDdHJsOiBBbGVydENvbnRyb2xsZXIsXG4gICAgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBtZW51U2VydmljZTogTWVudVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIocm91dGUsIHJvdXRlciwgbmF2Q29udHJvbGxlciwgYWxlcnRDdHJsLCB0cmFuc2xhdGUsIHtcbiAgICAgIHRhYkNvdW50OiAzLFxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLmxvZ1ByZWZpeH0gSW5pdCBwYWdlLi4uYCk7XG5cbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMuaW5pdFN1Yk1lbnUoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLmxvZ1ByZWZpeH1EZXN0cm95aW5nLi4uYCk7XG4gIH1cblxuICBsb2FkKGlkPzogbnVtYmVyLCBvcHRpb25zPzogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICB9XG5cbiAgZ2V0IGlzTmV3RGF0YSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZWxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICB9XG5cbiAgc2F2ZShldmVudDogRXZlbnQgfCB1bmRlZmluZWQsIG9wdGlvbnM6IGFueSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xuICB9XG5cbiAgY2hhbmdlU2Vjb25kVGFiVGl0bGUoZXZlbnQ/OiBVSUV2ZW50KSB7XG4gICAgY29uc3QgdGltZSA9IERhdGVVdGlscy5tb21lbnQoKS5mb3JtYXQoJ0hIOm1tOnNzJyk7XG4gICAgdGhpcy5zZWNvbmRUYWJUaXRsZSA9IGA8c21hbGw+JHt0aW1lfTxici8+PC9zbWFsbD5TZWNvbmRgO1xuICB9XG5cbiAgcHJvdGVjdGVkIGVuYWJsZU1lbnUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLm1lbnVTZXJ2aWNlLmVuYWJsZSh2YWx1ZSk7XG4gIH1cbiAgcHJvdGVjdGVkIHRvZ2dsZVNwbGl0UGFuZVdoZW4oKSB7XG4gICAgdGhpcy5tZW51U2VydmljZS50b2dnbGVTcGxpdFBhbmVXaGVuKCk7XG4gIH1cbiAgcHJvdGVjdGVkIGFzeW5jIGluaXRTdWJNZW51KCkge1xuICAgIHRoaXMudGl0bGUgPSAnTWVudSc7XG4gICAgdGhpcy5zZWNvbmRUYWJUaXRsZSA9ICdPdGhlcnMnO1xuICAgIHRoaXMudGhpcmRUYWJUaXRsZSA9ICdUaGlyZCc7XG4gICAgdGhpcy5wYXJlbnRQYXRoID0gJy90ZXN0aW5nJztcbiAgICB0aGlzLmNoaWxkUGF0aCA9ICcvdGVzdGluZy9zaGFyZWQvbWVudS9vdGhlcnMnO1xuICAgIGNvbnN0IHBhdGggPSAnL3Rlc3Rpbmcvc2hhcmVkL21lbnUnO1xuICAgIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5sb2dQcmVmaXh9IFNldHVwIHdpdGhgLCB7IHBhdGgsIHBhcmVudFBhdGg6IHRoaXMucGFyZW50UGF0aCB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRGaXJzdEludmFsaWRUYWJJbmRleCgpOiBudW1iZXIge1xuICAgIHJldHVybiAwO1xuICB9XG59XG4iLCI8YXBwLXRvb2xiYXIgW2RlZmF1bHRCYWNrSHJlZl09XCJwYXJlbnRQYXRoXCI+XG4gIDxpb24tdGl0bGU+e3sgdGl0bGUgfX08L2lvbi10aXRsZT5cbjwvYXBwLXRvb2xiYXI+XG5cbjxpb24tY29udGVudD5cblxuICA8bWF0LXRhYi1ncm91cCAjdGFiR3JvdXBcbiAgICAgICAgICAgICAgICAgWyhzZWxlY3RlZEluZGV4KV09XCJzZWxlY3RlZFRhYkluZGV4XCJcbiAgICAgICAgICAgICAgICAgKHNlbGVjdGVkVGFiQ2hhbmdlKT1cIm9uVGFiQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICBkeW5hbWljSGVpZ2h0PlxuXG4gICAgPCEtLSBUQUI6IDEgLS0+XG4gICAgPG1hdC10YWIgYXBwU3ViTWVudVRhYiBbc3ViTWVudVRpdGxlXT1cInRpdGxlXCIgW3BhcmVudFBhdGhdPVwicGFyZW50UGF0aFwiIGxhYmVsPVwiRGV0YWlsc1wiIGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBtYXQtdGFiLWxhYmVsPlxuICAgICAgICA8aW9uLWxhYmVsPkRldGFpbHM8L2lvbi1sYWJlbD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgICA8cD5BIGZpcnN0IHRhYjwvcD5cblxuICAgICAgICA8cD5cbiAgICAgICAgICA8aW9uLXRvZ2dsZSAjdG9nZ2xlVGhpcmQ+XG4gICAgICAgICAgICBUb2dnbGUgVGhpcmQgVGFiXG4gICAgICAgICAgPC9pb24tdG9nZ2xlPlxuICAgICAgICA8L3A+XG5cbiAgICAgICAgPHA+XG4gICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImVuYWJsZU1lbnUoZmFsc2UpXCIgKm5nSWY9XCJtZW51U2VydmljZS5lbmFibGVkfGFzeW5jXCI+XG4gICAgICAgICAgICBEaXNhYmxlIG1lbnVcbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImVuYWJsZU1lbnUodHJ1ZSlcIiAqbmdJZj1cIiEobWVudVNlcnZpY2UuZW5hYmxlZHxhc3luYylcIj5cbiAgICAgICAgICAgIEVuYWJsZSBtZW51XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJ0b2dnbGVTcGxpdFBhbmVXaGVuKClcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhKG1lbnVTZXJ2aWNlLmVuYWJsZWR8YXN5bmMpXCI+XG4gICAgICAgICAgICBUb2dnbGUgc3BsaXQgcGFuZVxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG5cbiAgICA8L21hdC10YWI+XG5cbiAgICA8IS0tIFRBQjogMiAtLT5cbiAgICA8bWF0LXRhYiBhcHBTdWJNZW51VGFiXG4gICAgICAgICAgICAgW3N1Yk1lbnVUaXRsZV09XCIkc2Vjb25kVGFiVGl0bGV8YXN5bmNcIlxuICAgICAgICAgICAgIGxhYmVsPVwiU2Vjb25kXCIgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgPG5nLXRlbXBsYXRlIG1hdC10YWItbGFiZWw+XG4gICAgICAgIDxpb24tbGFiZWwgW2lubmVySFRNTF09XCIkc2Vjb25kVGFiVGl0bGV8YXN5bmNcIj48L2lvbi1sYWJlbD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgICA8cD5BIHNlY29uZCB0YWI8L3A+XG5cbiAgICAgICAgPHAgKm5nSWY9XCJzaG93T3RoZXJMaW5rc1wiPlxuICAgICAgICAgIE5hdmlnYXRlIHRvIDogPGEgW3JvdXRlckxpbmtdPVwiY2hpbGRQYXRoKycvMSdcIiA+XG4gICAgICAgICAgICB7eyBjaGlsZFBhdGggfX0vMVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8YnIvPlxuICAgICAgICAgIE5hdmlnYXRlIHRvIDogPGEgW3JvdXRlckxpbmtdPVwiY2hpbGRQYXRoKycvMidcIiA+XG4gICAgICAgICAgICB7eyBjaGlsZFBhdGggfX0vMlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9wPlxuXG4gICAgICAgIDxwPlxuICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJjaGFuZ2VTZWNvbmRUYWJUaXRsZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICBDaGFuZ2UgdGFiIGxhYmVsXG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cblxuICAgIDwvbWF0LXRhYj5cblxuICAgIDwhLS0gVEFCOiAzIC0tPlxuICAgIDxtYXQtdGFiIGFwcFN1Yk1lbnVUYWIgW2xhYmVsXT1cInRoaXJkVGFiVGl0bGVcIlxuICAgICAgICAgICAgIGNsYXNzPVwiaW9uLXBhZGRpbmdcIiBbZGlzYWJsZWRdPVwiIXRvZ2dsZVRoaXJkLmNoZWNrZWRcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBtYXQtdGFiLWxhYmVsPlxuICAgICAgICA8aW9uLWxhYmVsPnt7dGhpcmRUYWJUaXRsZX19PC9pb24tbGFiZWw+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgICAgQSB0aGlyZCB0YWJcbiAgICAgIDwvZGl2PlxuXG4gICAgPC9tYXQtdGFiPlxuICA8L21hdC10YWItZ3JvdXA+XG48L2lvbi1jb250ZW50PlxuIl19