ctt-puro 0.46.31 → 0.47.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,5 @@
1
- import { Directive, ElementRef, EventEmitter, HostListener, inject, Input, Output, } from '@angular/core';
1
+ import { Directive, ElementRef, EventEmitter, HostListener, inject, Input, Output, PLATFORM_ID, } from '@angular/core';
2
+ import { isPlatformBrowser } from '@angular/common';
2
3
  import { Router } from '@angular/router';
3
4
  import * as i0 from "@angular/core";
4
5
  export class PuroLinkTypeDirective {
@@ -7,6 +8,7 @@ export class PuroLinkTypeDirective {
7
8
  this.anchorClicked = new EventEmitter();
8
9
  this.router = inject(Router);
9
10
  this.elRef = inject(ElementRef);
11
+ this.platformId = inject(PLATFORM_ID);
10
12
  this.PHONE_RE = /^T\s*[:\-]?\s*(.+)$/i;
11
13
  this.MAILTO_RE = /^mailto:/i;
12
14
  this.ADDRESS_RE = /^c\/\.?(.*)$/i;
@@ -32,6 +34,16 @@ export class PuroLinkTypeDirective {
32
34
  this.handleNoLink();
33
35
  return;
34
36
  }
37
+ // SSR: no ejecutar lógica DOM
38
+ if (!isPlatformBrowser(this.platformId)) {
39
+ return;
40
+ }
41
+ const isAnchor = this.linkType === 'anchor' || this.linkType === 'anchor_link';
42
+ if (isAnchor) {
43
+ event.preventDefault();
44
+ this.handleAnchorLink(this.href);
45
+ return;
46
+ }
35
47
  event.preventDefault();
36
48
  switch (this.linkType) {
37
49
  case 'internal':
@@ -44,27 +56,59 @@ export class PuroLinkTypeDirective {
44
56
  case 'external_link':
45
57
  this.handleExternalLink(this.href);
46
58
  break;
47
- case 'anchor':
48
- this.handleAnchorLink(this.href);
49
- break;
50
59
  case 'pdf_link':
51
60
  this.handlePdfLink(this.href);
52
61
  break;
53
- case 'nolink':
54
- this.handleNoLink();
55
- break;
56
62
  case 'component':
57
63
  case 'component_link':
58
64
  this.handleComponentLink(this.href);
59
65
  break;
60
- default:
61
- console.warn(`Unsupported linkType: ${this.linkType}`);
66
+ case 'nolink':
67
+ this.handleNoLink();
62
68
  break;
63
69
  }
64
70
  }
65
- handleInternalLink(url) {
66
- if (!url)
71
+ handleAnchorLink(raw) {
72
+ const anchor = this.normalizeAnchor(raw);
73
+ if (!anchor)
67
74
  return;
75
+ const { pathname, search } = window.location;
76
+ history.pushState(null, '', `${pathname}${search}#${anchor}`);
77
+ this.waitAndScrollToAnchor(anchor);
78
+ }
79
+ normalizeAnchor(val) {
80
+ return val.replace(/^#/, '').trim();
81
+ }
82
+ waitAndScrollToAnchor(anchor) {
83
+ const intervalMs = 50;
84
+ const timeoutMs = 6000;
85
+ const find = () => document.getElementById(anchor);
86
+ // intento inmediato
87
+ const immediate = find();
88
+ if (immediate) {
89
+ this.scrollToElement(immediate);
90
+ return;
91
+ }
92
+ const intervalId = setInterval(() => {
93
+ const el = find();
94
+ if (el) {
95
+ clearInterval(intervalId);
96
+ clearTimeout(timeoutId);
97
+ this.scrollToElement(el);
98
+ }
99
+ }, intervalMs);
100
+ const timeoutId = setTimeout(() => {
101
+ clearInterval(intervalId);
102
+ console.warn(`Anchor '#${anchor}' not found.`);
103
+ }, timeoutMs);
104
+ }
105
+ scrollToElement(element) {
106
+ const yOffset = -160;
107
+ const y = element.getBoundingClientRect().top + window.scrollY + yOffset;
108
+ window.scrollTo({ top: y, behavior: 'smooth' });
109
+ this.anchorClicked.emit();
110
+ }
111
+ handleInternalLink(url) {
68
112
  const cleanedUrl = url.replace(/^\//, '').replace(/\/+$/, '');
69
113
  const isHotels = cleanedUrl.startsWith('purohotels/');
70
114
  const isBeach = cleanedUrl.startsWith('purobeach/');
@@ -91,44 +135,26 @@ export class PuroLinkTypeDirective {
91
135
  break;
92
136
  default:
93
137
  window.open(detected.value, '_blank');
94
- break;
95
138
  }
96
139
  }
97
140
  handlePdfLink(url) {
98
141
  window.open(url, '_blank');
99
142
  }
100
- handleAnchorLink(sectionId) {
101
- const element = document.getElementById(sectionId);
102
- if (element) {
103
- const yOffset = -160;
104
- const y = element.getBoundingClientRect().top +
105
- window.scrollY +
106
- yOffset;
107
- window.scrollTo({ top: y, behavior: 'smooth' });
108
- this.anchorClicked.emit();
109
- }
110
- else {
111
- console.warn(`Section with ID ${sectionId} not found.`);
112
- }
113
- }
114
143
  handleComponentLink(url) {
115
- const cleanedComponentName = url?.trim()?.toLowerCase();
116
- if (this.modalClick) {
117
- this.modalClick.emit(cleanedComponentName);
118
- }
144
+ this.modalClick?.emit(url.trim().toLowerCase());
119
145
  }
120
146
  handleNoLink() {
121
147
  const parentLi = this.elRef.nativeElement.closest('li');
122
148
  const isInsideMenuItemWithChildren = parentLi?.classList.contains('menu-item-has-children');
123
149
  if (!isInsideMenuItemWithChildren) {
124
150
  this.elRef.nativeElement.removeAttribute('href');
125
- this.elRef.nativeElement.removeAttribute('[href]');
126
- this.elRef.nativeElement.setAttribute('disabled', 'true');
127
151
  this.elRef.nativeElement.setAttribute('tabindex', '-1');
128
- this.elRef.nativeElement.style.cursor = 'default';
129
152
  this.elRef.nativeElement.style.pointerEvents = 'none';
130
153
  }
131
154
  }
155
+ // ======================================================
156
+ // UTILS
157
+ // ======================================================
132
158
  buildMapsUrl(address) {
133
159
  return `https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(address)}`;
134
160
  }
@@ -136,25 +162,22 @@ export class PuroLinkTypeDirective {
136
162
  return t === 'external' || t === 'external_link';
137
163
  }
138
164
  detectExternalKind(raw) {
139
- const trimmed = (raw || '').trim();
165
+ const trimmed = raw.trim();
140
166
  if (this.MAILTO_RE.test(trimmed)) {
141
- const email = trimmed.replace(/^mailto:/i, '');
142
- return { kind: 'email', value: email };
143
- }
144
- if (this.PHONE_RE.test(trimmed)) {
145
- const match = this.PHONE_RE.exec(trimmed);
146
- const numRaw = (match?.[1] ?? '').trim();
147
- const digits = numRaw.replace(/[^\d+]/g, '');
148
- return { kind: 'phone', value: digits };
167
+ return {
168
+ kind: 'email',
169
+ value: trimmed.replace(/^mailto:/i, ''),
170
+ };
149
171
  }
150
- if (/^tel:/i.test(trimmed)) {
151
- const num = trimmed.replace(/^tel:/i, '').replace(/[^\d+]/g, '');
152
- return { kind: 'phone', value: num };
172
+ if (this.PHONE_RE.test(trimmed) || /^tel:/i.test(trimmed)) {
173
+ return {
174
+ kind: 'phone',
175
+ value: trimmed.replace(/^tel:/i, '').replace(/[^\d+]/g, ''),
176
+ };
153
177
  }
154
178
  const addrMatch = this.ADDRESS_RE.exec(trimmed);
155
179
  if (addrMatch) {
156
- const addr = (addrMatch[1] ?? '').trim();
157
- return { kind: 'address', value: addr };
180
+ return { kind: 'address', value: addrMatch[1].trim() };
158
181
  }
159
182
  return { kind: 'url', value: trimmed };
160
183
  }
@@ -163,11 +186,9 @@ export class PuroLinkTypeDirective {
163
186
  switch (detected.kind) {
164
187
  case 'phone':
165
188
  el.setAttribute('href', `tel:${detected.value}`);
166
- el.removeAttribute('target');
167
189
  break;
168
190
  case 'email':
169
191
  el.setAttribute('href', `mailto:${detected.value}`);
170
- el.removeAttribute('target');
171
192
  break;
172
193
  case 'address':
173
194
  el.setAttribute('href', this.buildMapsUrl(detected.value));
@@ -176,7 +197,6 @@ export class PuroLinkTypeDirective {
176
197
  default:
177
198
  el.setAttribute('href', detected.value);
178
199
  el.setAttribute('target', '_blank');
179
- break;
180
200
  }
181
201
  }
182
202
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroLinkTypeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
@@ -202,4 +222,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
202
222
  type: HostListener,
203
223
  args: ['click', ['$event']]
204
224
  }] } });
205
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1saW5rLXR5cGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2RpcmVjdGl2ZXMvcHVyby1saW5rLXR5cGUvcHVyby1saW5rLXR5cGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQU16QyxNQUFNLE9BQU8scUJBQXFCO0lBSmxDO1FBUWMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDckMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRWxDLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEIsVUFBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUUzQixhQUFRLEdBQUcsc0JBQXNCLENBQUM7UUFDbEMsY0FBUyxHQUFHLFdBQVcsQ0FBQztRQUN4QixlQUFVLEdBQUcsZUFBZSxDQUFDO0tBMk1qRDtJQXpNRyxRQUFRO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQzlCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixPQUFPO1NBQ1Y7UUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3BDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3RD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LENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDeEMsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ3BDLE1BQU07U0FDYjtJQUNMLENBQUM7K0dBdE5RLHFCQUFxQjttR0FBckIscUJBQXFCOzs0RkFBckIscUJBQXFCO2tCQUpqQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxZQUFZO29CQUN0QixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7OEJBRVksUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDSSxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBMkJQLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbbGlua1R5cGVdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBQdXJvTGlua1R5cGVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIGxpbmtUeXBlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGhyZWY/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgbW9kYWxDbGljaz86IEV2ZW50RW1pdHRlcjxzdHJpbmc+O1xuICAgIEBPdXRwdXQoKSBib29rQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgQE91dHB1dCgpIGFuY2hvckNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IFBIT05FX1JFID0gL15UXFxzKls6XFwtXT9cXHMqKC4rKSQvaTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IE1BSUxUT19SRSA9IC9ebWFpbHRvOi9pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgQUREUkVTU19SRSA9IC9eY1xcL1xcLj8oLiopJC9pO1xuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5saW5rVHlwZSB8fCAhdGhpcy5ocmVmKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZU5vTGluaygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzRXh0ZXJuYWxUeXBlKHRoaXMubGlua1R5cGUpKSB7XG4gICAgICAgICAgICBjb25zdCBkZXRlY3RlZCA9IHRoaXMuZGV0ZWN0RXh0ZXJuYWxLaW5kKHRoaXMuaHJlZik7XG4gICAgICAgICAgICB0aGlzLmFwcGx5Tm9ybWFsaXplZEhyZWYoZGV0ZWN0ZWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnaHJlZicsIHRoaXMuaHJlZik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5saW5rVHlwZSA9PT0gJ2V4dGVybmFsJyB8fCB0aGlzLmxpbmtUeXBlID09PSAnZXh0ZXJuYWxfbGluaycpIHtcbiAgICAgICAgICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3JlbCcsICdub2ZvbGxvdycpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICAgIGJ0bkNsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMubGlua1R5cGUgfHwgIXRoaXMuaHJlZikge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVOb0xpbmsoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLmxpbmtUeXBlKSB7XG4gICAgICAgICAgICBjYXNlICdpbnRlcm5hbCc6XG4gICAgICAgICAgICBjYXNlICdpbnRlcm5hbF9saW5rJzpcbiAgICAgICAgICAgIGNhc2UgJ2ludGVybmFsX2hvdGVsX2xpbmsnOlxuICAgICAgICAgICAgY2FzZSAnc2VsZl9saW5rJzpcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUludGVybmFsTGluayh0aGlzLmhyZWYpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZXh0ZXJuYWwnOlxuICAgICAgICAgICAgY2FzZSAnZXh0ZXJuYWxfbGluayc6XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVFeHRlcm5hbExpbmsodGhpcy5ocmVmKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2FuY2hvcic6XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVBbmNob3JMaW5rKHRoaXMuaHJlZik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdwZGZfbGluayc6XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVQZGZMaW5rKHRoaXMuaHJlZik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdub2xpbmsnOlxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlTm9MaW5rKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjb21wb25lbnQnOlxuICAgICAgICAgICAgY2FzZSAnY29tcG9uZW50X2xpbmsnOlxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlQ29tcG9uZW50TGluayh0aGlzLmhyZWYpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFVuc3VwcG9ydGVkIGxpbmtUeXBlOiAke3RoaXMubGlua1R5cGV9YCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUludGVybmFsTGluayh1cmw6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoIXVybCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IGNsZWFuZWRVcmwgPSB1cmwucmVwbGFjZSgvXlxcLy8sICcnKS5yZXBsYWNlKC9cXC8rJC8sICcnKTtcblxuICAgICAgICBjb25zdCBpc0hvdGVscyA9IGNsZWFuZWRVcmwuc3RhcnRzV2l0aCgncHVyb2hvdGVscy8nKTtcbiAgICAgICAgY29uc3QgaXNCZWFjaCA9IGNsZWFuZWRVcmwuc3RhcnRzV2l0aCgncHVyb2JlYWNoLycpO1xuXG4gICAgICAgIGNvbnN0IG5ld1NpdGVJZCA9IGlzSG90ZWxzID8gMiA6IGlzQmVhY2ggPyAzIDogMTtcblxuICAgICAgICBjb25zdCBjdXJyZW50U2l0ZSA9ICh3aW5kb3cgYXMgYW55KS5fX1NJVEVfSURfXztcblxuICAgICAgICBpZiAobmV3U2l0ZUlkICE9PSBjdXJyZW50U2l0ZSkge1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnLycgKyBjbGVhbmVkVXJsO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ib29rQ2xpY2suZW1pdCgpO1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvJyArIGNsZWFuZWRVcmwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlRXh0ZXJuYWxMaW5rKHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRldGVjdGVkID0gdGhpcy5kZXRlY3RFeHRlcm5hbEtpbmQodXJsKTtcbiAgICAgICAgc3dpdGNoIChkZXRlY3RlZC5raW5kKSB7XG4gICAgICAgICAgICBjYXNlICdwaG9uZSc6XG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgdGVsOiR7ZGV0ZWN0ZWQudmFsdWV9YDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2VtYWlsJzpcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGBtYWlsdG86JHtkZXRlY3RlZC52YWx1ZX1gO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYWRkcmVzcyc6XG4gICAgICAgICAgICAgICAgd2luZG93Lm9wZW4odGhpcy5idWlsZE1hcHNVcmwoZGV0ZWN0ZWQudmFsdWUpLCAnX2JsYW5rJyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKGRldGVjdGVkLnZhbHVlLCAnX2JsYW5rJyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZVBkZkxpbmsodXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgd2luZG93Lm9wZW4odXJsLCAnX2JsYW5rJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVBbmNob3JMaW5rKHNlY3Rpb25JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzZWN0aW9uSWQpO1xuICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgICAgY29uc3QgeU9mZnNldCA9IC0xNjA7XG4gICAgICAgICAgICBjb25zdCB5ID1cbiAgICAgICAgICAgICAgICBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArXG4gICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFkgK1xuICAgICAgICAgICAgICAgIHlPZmZzZXQ7XG5cbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyh7IHRvcDogeSwgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICAgICAgICAgICAgdGhpcy5hbmNob3JDbGlja2VkLmVtaXQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgU2VjdGlvbiB3aXRoIElEICR7c2VjdGlvbklkfSBub3QgZm91bmQuYCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUNvbXBvbmVudExpbmsodXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY2xlYW5lZENvbXBvbmVudE5hbWUgPSB1cmw/LnRyaW0oKT8udG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKHRoaXMubW9kYWxDbGljaykge1xuICAgICAgICAgICAgdGhpcy5tb2RhbENsaWNrLmVtaXQoY2xlYW5lZENvbXBvbmVudE5hbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVOb0xpbmsoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBhcmVudExpID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmNsb3Nlc3QoJ2xpJyk7XG4gICAgICAgIGNvbnN0IGlzSW5zaWRlTWVudUl0ZW1XaXRoQ2hpbGRyZW4gPSBwYXJlbnRMaT8uY2xhc3NMaXN0LmNvbnRhaW5zKFxuICAgICAgICAgICAgJ21lbnUtaXRlbS1oYXMtY2hpbGRyZW4nXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKCFpc0luc2lkZU1lbnVJdGVtV2l0aENoaWxkcmVuKSB7XG4gICAgICAgICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdocmVmJyk7XG4gICAgICAgICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdbaHJlZl0nKTtcbiAgICAgICAgICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJywgJ3RydWUnKTtcbiAgICAgICAgICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJy0xJyk7XG4gICAgICAgICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuY3Vyc29yID0gJ2RlZmF1bHQnO1xuICAgICAgICAgICAgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGJ1aWxkTWFwc1VybChhZGRyZXNzOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYGh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vbWFwcy9zZWFyY2gvP2FwaT0xJnF1ZXJ5PSR7ZW5jb2RlVVJJQ29tcG9uZW50KGFkZHJlc3MpfWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0V4dGVybmFsVHlwZSh0Pzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0ID09PSAnZXh0ZXJuYWwnIHx8IHQgPT09ICdleHRlcm5hbF9saW5rJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGRldGVjdEV4dGVybmFsS2luZChyYXc6IHN0cmluZyk6IHtcbiAgICAgICAga2luZDogJ3Bob25lJyB8ICdlbWFpbCcgfCAnYWRkcmVzcycgfCAndXJsJztcbiAgICAgICAgdmFsdWU6IHN0cmluZztcbiAgICB9IHtcbiAgICAgICAgY29uc3QgdHJpbW1lZCA9IChyYXcgfHwgJycpLnRyaW0oKTtcblxuICAgICAgICBpZiAodGhpcy5NQUlMVE9fUkUudGVzdCh0cmltbWVkKSkge1xuICAgICAgICAgICAgY29uc3QgZW1haWwgPSB0cmltbWVkLnJlcGxhY2UoL15tYWlsdG86L2ksICcnKTtcbiAgICAgICAgICAgIHJldHVybiB7IGtpbmQ6ICdlbWFpbCcsIHZhbHVlOiBlbWFpbCB9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuUEhPTkVfUkUudGVzdCh0cmltbWVkKSkge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSB0aGlzLlBIT05FX1JFLmV4ZWModHJpbW1lZCk7XG4gICAgICAgICAgICBjb25zdCBudW1SYXcgPSAobWF0Y2g/LlsxXSA/PyAnJykudHJpbSgpO1xuICAgICAgICAgICAgY29uc3QgZGlnaXRzID0gbnVtUmF3LnJlcGxhY2UoL1teXFxkK10vZywgJycpO1xuICAgICAgICAgICAgcmV0dXJuIHsga2luZDogJ3Bob25lJywgdmFsdWU6IGRpZ2l0cyB9O1xuICAgICAgICB9XG4gICAgICAgIGlmICgvXnRlbDovaS50ZXN0KHRyaW1tZWQpKSB7XG4gICAgICAgICAgICBjb25zdCBudW0gPSB0cmltbWVkLnJlcGxhY2UoL150ZWw6L2ksICcnKS5yZXBsYWNlKC9bXlxcZCtdL2csICcnKTtcbiAgICAgICAgICAgIHJldHVybiB7IGtpbmQ6ICdwaG9uZScsIHZhbHVlOiBudW0gfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFkZHJNYXRjaCA9IHRoaXMuQUREUkVTU19SRS5leGVjKHRyaW1tZWQpO1xuICAgICAgICBpZiAoYWRkck1hdGNoKSB7XG4gICAgICAgICAgICBjb25zdCBhZGRyID0gKGFkZHJNYXRjaFsxXSA/PyAnJykudHJpbSgpO1xuICAgICAgICAgICAgcmV0dXJuIHsga2luZDogJ2FkZHJlc3MnLCB2YWx1ZTogYWRkciB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsga2luZDogJ3VybCcsIHZhbHVlOiB0cmltbWVkIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseU5vcm1hbGl6ZWRIcmVmKGRldGVjdGVkOiB7XG4gICAgICAgIGtpbmQ6ICdwaG9uZScgfCAnZW1haWwnIHwgJ2FkZHJlc3MnIHwgJ3VybCc7XG4gICAgICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgfSk6IHZvaWQge1xuICAgICAgICBjb25zdCBlbCA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgc3dpdGNoIChkZXRlY3RlZC5raW5kKSB7XG4gICAgICAgICAgICBjYXNlICdwaG9uZSc6XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdocmVmJywgYHRlbDoke2RldGVjdGVkLnZhbHVlfWApO1xuICAgICAgICAgICAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZSgndGFyZ2V0Jyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdlbWFpbCc6XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdocmVmJywgYG1haWx0bzoke2RldGVjdGVkLnZhbHVlfWApO1xuICAgICAgICAgICAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZSgndGFyZ2V0Jyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdhZGRyZXNzJzpcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCB0aGlzLmJ1aWxkTWFwc1VybChkZXRlY3RlZC52YWx1ZSkpO1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgndGFyZ2V0JywgJ19ibGFuaycpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBkZXRlY3RlZC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCd0YXJnZXQnLCAnX2JsYW5rJyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
225
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1saW5rLXR5cGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2RpcmVjdGl2ZXMvcHVyby1saW5rLXR5cGUvcHVyby1saW5rLXR5cGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEVBQ04sV0FBVyxHQUNkLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFNekMsTUFBTSxPQUFPLHFCQUFxQjtJQUpsQztRQVFjLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3JDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUVsQyxXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLFVBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDM0IsZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVqQyxhQUFRLEdBQUcsc0JBQXNCLENBQUM7UUFDbEMsY0FBUyxHQUFHLFdBQVcsQ0FBQztRQUN4QixlQUFVLEdBQUcsZUFBZSxDQUFDO0tBaVBqRDtJQS9PRyxRQUFRO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQzlCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixPQUFPO1NBQ1Y7UUFFRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3BDLE1BQU0sUUFBUSxHQUFH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QUNuQixLQUFLLE9BQU87Z0JBQ1IsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsT0FBTyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFDakQsTUFBTTtZQUNWLEtBQUssT0FBTztnQkFDUixFQUFFLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxVQUFVLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUNwRCxNQUFNO1lBQ1YsS0FBSyxTQUFTO2dCQUNWLEVBQUUsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQzNELEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUNwQyxNQUFNO1lBQ1Y7Z0JBQ0ksRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN4QyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUMzQztJQUNMLENBQUM7K0dBN1BRLHFCQUFxQjttR0FBckIscUJBQXFCOzs0RkFBckIscUJBQXFCO2tCQUpqQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxZQUFZO29CQUN0QixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7OEJBRVksUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDSSxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBNkJQLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUExBVEZPUk1fSUQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbbGlua1R5cGVdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBQdXJvTGlua1R5cGVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIGxpbmtUeXBlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGhyZWY/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgbW9kYWxDbGljaz86IEV2ZW50RW1pdHRlcjxzdHJpbmc+O1xuICAgIEBPdXRwdXQoKSBib29rQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgQE91dHB1dCgpIGFuY2hvckNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgUEhPTkVfUkUgPSAvXlRcXHMqWzpcXC1dP1xccyooLispJC9pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgTUFJTFRPX1JFID0gL15tYWlsdG86L2k7XG4gICAgcHJpdmF0ZSByZWFkb25seSBBRERSRVNTX1JFID0gL15jXFwvXFwuPyguKikkL2k7XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmxpbmtUeXBlIHx8ICF0aGlzLmhyZWYpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlTm9MaW5rKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0V4dGVybmFsVHlwZSh0aGlzLmxpbmtUeXBlKSkge1xuICAgICAgICAgICAgY29uc3QgZGV0ZWN0ZWQgPSB0aGlzLmRldGVjdEV4dGVybmFsS2luZCh0aGlzLmhyZWYpO1xuICAgICAgICAgICAgdGhpcy5hcHBseU5vcm1hbGl6ZWRIcmVmKGRldGVjdGVkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCB0aGlzLmhyZWYpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubGlua1R5cGUgPT09ICdleHRlcm5hbCcgfHwgdGhpcy5saW5rVHlwZSA9PT0gJ2V4dGVybmFsX2xpbmsnKSB7XG4gICAgICAgICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdyZWwnLCAnbm9mb2xsb3cnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgICBidG5DbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmxpbmtUeXBlIHx8ICF0aGlzLmhyZWYpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlTm9MaW5rKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTU1I6IG5vIGVqZWN1dGFyIGzDs2dpY2EgRE9NXG4gICAgICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNBbmNob3IgPSB0aGlzLmxpbmtUeXBlID09PSAnYW5jaG9yJyB8fCB0aGlzLmxpbmtUeXBlID09PSAnYW5jaG9yX2xpbmsnO1xuXG4gICAgICAgIGlmIChpc0FuY2hvcikge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQW5jaG9yTGluayh0aGlzLmhyZWYpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICBzd2l0Y2ggKHRoaXMubGlua1R5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2ludGVybmFsJzpcbiAgICAgICAgICAgIGNhc2UgJ2ludGVybmFsX2xpbmsnOlxuICAgICAgICAgICAgY2FzZSAnaW50ZXJuYWxfaG90ZWxfbGluayc6XG4gICAgICAgICAgICBjYXNlICdzZWxmX2xpbmsnOlxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlSW50ZXJuYWxMaW5rKHRoaXMuaHJlZik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ2V4dGVybmFsJzpcbiAgICAgICAgICAgIGNhc2UgJ2V4dGVybmFsX2xpbmsnOlxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRXh0ZXJuYWxMaW5rKHRoaXMuaHJlZik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ3BkZl9saW5rJzpcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVBkZkxpbmsodGhpcy5ocmVmKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnY29tcG9uZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ2NvbXBvbmVudF9saW5rJzpcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUNvbXBvbmVudExpbmsodGhpcy5ocmVmKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnbm9saW5rJzpcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZU5vTGluaygpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVBbmNob3JMaW5rKHJhdzogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFuY2hvciA9IHRoaXMubm9ybWFsaXplQW5jaG9yKHJhdyk7XG4gICAgICAgIGlmICghYW5jaG9yKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgeyBwYXRobmFtZSwgc2VhcmNoIH0gPSB3aW5kb3cubG9jYXRpb247XG4gICAgICAgIGhpc3RvcnkucHVzaFN0YXRlKG51bGwsICcnLCBgJHtwYXRobmFtZX0ke3NlYXJjaH0jJHthbmNob3J9YCk7XG5cbiAgICAgICAgdGhpcy53YWl0QW5kU2Nyb2xsVG9BbmNob3IoYW5jaG9yKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG5vcm1hbGl6ZUFuY2hvcih2YWw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB2YWwucmVwbGFjZSgvXiMvLCAnJykudHJpbSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgd2FpdEFuZFNjcm9sbFRvQW5jaG9yKGFuY2hvcjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGludGVydmFsTXMgPSA1MDtcbiAgICAgICAgY29uc3QgdGltZW91dE1zID0gNjAwMDtcblxuICAgICAgICBjb25zdCBmaW5kID0gKCkgPT4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYW5jaG9yKTtcblxuICAgICAgICAvLyBpbnRlbnRvIGlubWVkaWF0b1xuICAgICAgICBjb25zdCBpbW1lZGlhdGUgPSBmaW5kKCk7XG4gICAgICAgIGlmIChpbW1lZGlhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9FbGVtZW50KGltbWVkaWF0ZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZWwgPSBmaW5kKCk7XG4gICAgICAgICAgICBpZiAoZWwpIHtcbiAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsSWQpO1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9FbGVtZW50KGVsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgaW50ZXJ2YWxNcyk7XG5cbiAgICAgICAgY29uc3QgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsSWQpO1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBBbmNob3IgJyMke2FuY2hvcn0nIG5vdCBmb3VuZC5gKTtcbiAgICAgICAgfSwgdGltZW91dE1zKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNjcm9sbFRvRWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCB5T2Zmc2V0ID0gLTE2MDtcbiAgICAgICAgY29uc3QgeSA9XG4gICAgICAgICAgICBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArIHdpbmRvdy5zY3JvbGxZICsgeU9mZnNldDtcblxuICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IHksIGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgICAgICAgdGhpcy5hbmNob3JDbGlja2VkLmVtaXQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUludGVybmFsTGluayh1cmw6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBjbGVhbmVkVXJsID0gdXJsLnJlcGxhY2UoL15cXC8vLCAnJykucmVwbGFjZSgvXFwvKyQvLCAnJyk7XG5cbiAgICAgICAgY29uc3QgaXNIb3RlbHMgPSBjbGVhbmVkVXJsLnN0YXJ0c1dpdGgoJ3B1cm9ob3RlbHMvJyk7XG4gICAgICAgIGNvbnN0IGlzQmVhY2ggPSBjbGVhbmVkVXJsLnN0YXJ0c1dpdGgoJ3B1cm9iZWFjaC8nKTtcbiAgICAgICAgY29uc3QgbmV3U2l0ZUlkID0gaXNIb3RlbHMgPyAyIDogaXNCZWFjaCA/IDMgOiAxO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRTaXRlID0gKHdpbmRvdyBhcyBhbnkpLl9fU0lURV9JRF9fO1xuXG4gICAgICAgIGlmIChuZXdTaXRlSWQgIT09IGN1cnJlbnRTaXRlKSB7XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvJyArIGNsZWFuZWRVcmw7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmJvb2tDbGljay5lbWl0KCk7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy8nICsgY2xlYW5lZFVybCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVFeHRlcm5hbExpbmsodXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGV0ZWN0ZWQgPSB0aGlzLmRldGVjdEV4dGVybmFsS2luZCh1cmwpO1xuXG4gICAgICAgIHN3aXRjaCAoZGV0ZWN0ZWQua2luZCkge1xuICAgICAgICAgICAgY2FzZSAncGhvbmUnOlxuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYHRlbDoke2RldGVjdGVkLnZhbHVlfWA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdlbWFpbCc6XG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgbWFpbHRvOiR7ZGV0ZWN0ZWQudmFsdWV9YDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2FkZHJlc3MnOlxuICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKHRoaXMuYnVpbGRNYXBzVXJsKGRldGVjdGVkLnZhbHVlKSwgJ19ibGFuaycpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB3aW5kb3cub3BlbihkZXRlY3RlZC52YWx1ZSwgJ19ibGFuaycpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVQZGZMaW5rKHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlQ29tcG9uZW50TGluayh1cmw6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vZGFsQ2xpY2s/LmVtaXQodXJsLnRyaW0oKS50b0xvd2VyQ2FzZSgpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZU5vTGluaygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGFyZW50TGkgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuY2xvc2VzdCgnbGknKTtcbiAgICAgICAgY29uc3QgaXNJbnNpZGVNZW51SXRlbVdpdGhDaGlsZHJlbiA9IHBhcmVudExpPy5jbGFzc0xpc3QuY29udGFpbnMoXG4gICAgICAgICAgICAnbWVudS1pdGVtLWhhcy1jaGlsZHJlbidcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoIWlzSW5zaWRlTWVudUl0ZW1XaXRoQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2hyZWYnKTtcbiAgICAgICAgICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJy0xJyk7XG4gICAgICAgICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUucG9pbnRlckV2ZW50cyA9ICdub25lJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIFVUSUxTXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgcHJpdmF0ZSBidWlsZE1hcHNVcmwoYWRkcmVzczogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGBodHRwczovL3d3dy5nb29nbGUuY29tL21hcHMvc2VhcmNoLz9hcGk9MSZxdWVyeT0ke2VuY29kZVVSSUNvbXBvbmVudChcbiAgICAgICAgICAgIGFkZHJlc3NcbiAgICAgICAgKX1gO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNFeHRlcm5hbFR5cGUodD86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdCA9PT0gJ2V4dGVybmFsJyB8fCB0ID09PSAnZXh0ZXJuYWxfbGluayc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZXRlY3RFeHRlcm5hbEtpbmQocmF3OiBzdHJpbmcpOiB7XG4gICAgICAgIGtpbmQ6ICdwaG9uZScgfCAnZW1haWwnIHwgJ2FkZHJlc3MnIHwgJ3VybCc7XG4gICAgICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgfSB7XG4gICAgICAgIGNvbnN0IHRyaW1tZWQgPSByYXcudHJpbSgpO1xuXG4gICAgICAgIGlmICh0aGlzLk1BSUxUT19SRS50ZXN0KHRyaW1tZWQpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGtpbmQ6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHRyaW1tZWQucmVwbGFjZSgvXm1haWx0bzovaSwgJycpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLlBIT05FX1JFLnRlc3QodHJpbW1lZCkgfHwgL150ZWw6L2kudGVzdCh0cmltbWVkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBraW5kOiAncGhvbmUnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB0cmltbWVkLnJlcGxhY2UoL150ZWw6L2ksICcnKS5yZXBsYWNlKC9bXlxcZCtdL2csICcnKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhZGRyTWF0Y2ggPSB0aGlzLkFERFJFU1NfUkUuZXhlYyh0cmltbWVkKTtcbiAgICAgICAgaWYgKGFkZHJNYXRjaCkge1xuICAgICAgICAgICAgcmV0dXJuIHsga2luZDogJ2FkZHJlc3MnLCB2YWx1ZTogYWRkck1hdGNoWzFdLnRyaW0oKSB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsga2luZDogJ3VybCcsIHZhbHVlOiB0cmltbWVkIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseU5vcm1hbGl6ZWRIcmVmKGRldGVjdGVkOiB7XG4gICAgICAgIGtpbmQ6ICdwaG9uZScgfCAnZW1haWwnIHwgJ2FkZHJlc3MnIHwgJ3VybCc7XG4gICAgICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgfSk6IHZvaWQge1xuICAgICAgICBjb25zdCBlbCA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudDtcblxuICAgICAgICBzd2l0Y2ggKGRldGVjdGVkLmtpbmQpIHtcbiAgICAgICAgICAgIGNhc2UgJ3Bob25lJzpcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBgdGVsOiR7ZGV0ZWN0ZWQudmFsdWV9YCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdlbWFpbCc6XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdocmVmJywgYG1haWx0bzoke2RldGVjdGVkLnZhbHVlfWApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYWRkcmVzcyc6XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdocmVmJywgdGhpcy5idWlsZE1hcHNVcmwoZGV0ZWN0ZWQudmFsdWUpKTtcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ3RhcmdldCcsICdfYmxhbmsnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdocmVmJywgZGV0ZWN0ZWQudmFsdWUpO1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgndGFyZ2V0JywgJ19ibGFuaycpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1wYWdlLWNvbmZpZy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wdXJvL3NyYy9saWIvaW50ZXJmYWNlcy9wdXJvLXBhZ2UtY29uZmlnLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHVyb1ZpZXdzVHlwZSB9IGZyb20gJy4uL0VudW0nO1xuaW1wb3J0IHsgRmF2SWNvbiwgTGFuZ3VhZ2UgfSBmcm9tICcuL3B1cm8tc2l0ZS1jb25maWcuaW50ZXJmYWNlJztcblxuZXhwb3J0IHR5cGUgQ09NUE9ORU5UU19FWFRSQSA9IGFueTtcblxuZXhwb3J0IGludGVyZmFjZSBQYWdlQ29uZmlnSGVhZCB7XG4gICAgbGFuZ3VhZ2U6IExhbmd1YWdlW107XG4gICAgbGlua3M6IFJlY29yZDxzdHJpbmcsIHN0cmluZz5bXTtcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIG1ldGFzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+W107XG4gICAgZmF2aWNvbnM/OiBGYXZJY29uW107XG4gICAgc2NyaXB0czogUmVjb3JkPHN0cmluZyB8IG51bWJlciwgc3RyaW5nPltdO1xuICAgIHRpY2tlcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCb2R5Q29tcG9uZW50PFQ+IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgb3JkZXI/OiBudW1iZXI7XG4gICAgcHJvcHM6IFQ7XG4gICAgdmlldz86IFB1cm9WaWV3c1R5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZUNvbmZpZzxUPiB7XG4gICAgaGVhZD86IFBhZ2VDb25maWdIZWFkO1xuICAgIGJvZHk6IEJvZHlDb21wb25lbnQ8VD5bXTtcbiAgICBib2R5RXh0cmE/OiBCb2R5Q29tcG9uZW50PENPTVBPTkVOVFNfRVhUUkE+W107XG4gICAgbWVudTogcGFnZUNvbmZpZ01lbnU7XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgc3VidGl0bGU/OiBzdHJpbmc7XG4gICAgYXBpVXJscz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz5bXTtcbiAgICBmb290ZXI/OiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgcGFnZUNvbmZpZ01lbnUge1xuICAgIGhlYWRlckRhdGE6IGFueTtcbiAgICBjb21wb25lbnRzPzogQm9keUNvbXBvbmVudDxhbnk+W107XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1wYWdlLWNvbmZpZy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wdXJvL3NyYy9saWIvaW50ZXJmYWNlcy9wdXJvLXBhZ2UtY29uZmlnLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHVyb1ZpZXdzVHlwZSB9IGZyb20gJy4uL0VudW0nO1xuaW1wb3J0IHsgRmF2SWNvbiwgTGFuZ3VhZ2UgfSBmcm9tICcuL3B1cm8tc2l0ZS1jb25maWcuaW50ZXJmYWNlJztcblxuZXhwb3J0IHR5cGUgQ09NUE9ORU5UU19FWFRSQSA9IGFueTtcblxuZXhwb3J0IGludGVyZmFjZSBQYWdlQ29uZmlnSGVhZCB7XG4gICAgbGFuZ3VhZ2U6IExhbmd1YWdlW107XG4gICAgbGlua3M6IFJlY29yZDxzdHJpbmcsIHN0cmluZz5bXTtcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIG1ldGFzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+W107XG4gICAgZmF2aWNvbnM/OiBGYXZJY29uW107XG4gICAgc2NyaXB0czogUmVjb3JkPHN0cmluZyB8IG51bWJlciwgc3RyaW5nPltdO1xuICAgIHRpY2tlcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCb2R5Q29tcG9uZW50PFQ+IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgb3JkZXI/OiBudW1iZXI7XG4gICAgcHJvcHM6IFQ7XG4gICAgdmlldz86IFB1cm9WaWV3c1R5cGU7XG4gICAgaWRlbnRpZmllcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWdlQ29uZmlnPFQ+IHtcbiAgICBoZWFkPzogUGFnZUNvbmZpZ0hlYWQ7XG4gICAgYm9keTogQm9keUNvbXBvbmVudDxUPltdO1xuICAgIGJvZHlFeHRyYT86IEJvZHlDb21wb25lbnQ8Q09NUE9ORU5UU19FWFRSQT5bXTtcbiAgICBtZW51OiBwYWdlQ29uZmlnTWVudTtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBzdWJ0aXRsZT86IHN0cmluZztcbiAgICBhcGlVcmxzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPltdO1xuICAgIGZvb3Rlcj86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBwYWdlQ29uZmlnTWVudSB7XG4gICAgaGVhZGVyRGF0YTogYW55O1xuICAgIGNvbXBvbmVudHM/OiBCb2R5Q29tcG9uZW50PGFueT5bXTtcbn1cbiJdfQ==