wacom 14.1.3 → 14.1.6
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.
- package/esm2020/lib/components/alert/wrapper/wrapper.component.mjs +3 -3
- package/esm2020/lib/services/http.service.mjs +37 -25
- package/esm2020/lib/services/mongo.service.mjs +5 -1
- package/esm2020/lib/services/socket.service.mjs +41 -31
- package/fesm2015/wacom.mjs +82 -56
- package/fesm2015/wacom.mjs.map +1 -1
- package/fesm2020/wacom.mjs +82 -56
- package/fesm2020/wacom.mjs.map +1 -1
- package/lib/services/http.service.d.ts +4 -2
- package/lib/services/mongo.service.d.ts +4 -1
- package/lib/services/socket.service.d.ts +10 -7
- package/package.json +1 -1
|
@@ -4,9 +4,9 @@ export class WrapperComponent {
|
|
|
4
4
|
constructor() { }
|
|
5
5
|
}
|
|
6
6
|
WrapperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: WrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7
|
-
WrapperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.1", type: WrapperComponent, selector: "lib-wrapper", ngImport: i0, template: "<div>\r\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-bottomRight\" id=\"bottomRight\"></div>\r\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-bottomLeft\" id=\"bottomLeft\"></div>\r\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-topRight\" id=\"topRight\"></div>\r\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-topLeft\" id=\"topLeft\"></div>\r\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-topCenter\" id=\"topCenter\"></div>\r\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-bottomCenter\" id=\"bottomCenter\"></div>\r\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-center\" id=\"center\"></div>\r\n\
|
|
7
|
+
WrapperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.1", type: WrapperComponent, selector: "lib-wrapper", ngImport: i0, template: "<div>\r\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-bottomRight\" id=\"bottomRight\"></div>\r\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-bottomLeft\" id=\"bottomLeft\"></div>\r\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-topRight\" id=\"topRight\"></div>\r\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-topLeft\" id=\"topLeft\"></div>\r\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-topCenter\" id=\"topCenter\"></div>\r\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-bottomCenter\" id=\"bottomCenter\"></div>\r\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-center\" id=\"center\"></div>\r\n\t<!-- [bottomRight, bottomLeft, topRight, topLeft, topCenter, bottomCenter or center] -->\r\n</div>\r\n", styles: [".waw-alert-wrapper{z-index:99999;position:fixed;width:100%;pointer-events:none;display:flex;flex-direction:column}.waw-alert-wrapper-bottomLeft{left:0;bottom:0;text-align:left}.waw-alert-wrapper-bottomRight{right:0;bottom:0;text-align:right}.waw-alert-wrapper-topLeft{left:0;top:0;text-align:left}.waw-alert-wrapper-topRight{top:0;right:0;text-align:right}.waw-alert-wrapper-topCenter{top:0;left:0;right:0;text-align:center}.waw-alert-wrapper-bottomCenter{bottom:0;left:0;right:0;text-align:center}.waw-alert-wrapper-center{top:0;bottom:0;left:0;right:0;text-align:center;justify-content:center;flex-flow:column;align-items:center}\n"] });
|
|
8
8
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: WrapperComponent, decorators: [{
|
|
9
9
|
type: Component,
|
|
10
|
-
args: [{ selector: 'lib-wrapper', template: "<div>\r\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-bottomRight\" id=\"bottomRight\"></div>\r\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-bottomLeft\" id=\"bottomLeft\"></div>\r\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-topRight\" id=\"topRight\"></div>\r\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-topLeft\" id=\"topLeft\"></div>\r\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-topCenter\" id=\"topCenter\"></div>\r\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-bottomCenter\" id=\"bottomCenter\"></div>\r\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-center\" id=\"center\"></div>\r\n\
|
|
10
|
+
args: [{ selector: 'lib-wrapper', template: "<div>\r\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-bottomRight\" id=\"bottomRight\"></div>\r\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-bottomLeft\" id=\"bottomLeft\"></div>\r\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-topRight\" id=\"topRight\"></div>\r\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-topLeft\" id=\"topLeft\"></div>\r\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-topCenter\" id=\"topCenter\"></div>\r\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-bottomCenter\" id=\"bottomCenter\"></div>\r\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-center\" id=\"center\"></div>\r\n\t<!-- [bottomRight, bottomLeft, topRight, topLeft, topCenter, bottomCenter or center] -->\r\n</div>\r\n", styles: [".waw-alert-wrapper{z-index:99999;position:fixed;width:100%;pointer-events:none;display:flex;flex-direction:column}.waw-alert-wrapper-bottomLeft{left:0;bottom:0;text-align:left}.waw-alert-wrapper-bottomRight{right:0;bottom:0;text-align:right}.waw-alert-wrapper-topLeft{left:0;top:0;text-align:left}.waw-alert-wrapper-topRight{top:0;right:0;text-align:right}.waw-alert-wrapper-topCenter{top:0;left:0;right:0;text-align:center}.waw-alert-wrapper-bottomCenter{bottom:0;left:0;right:0;text-align:center}.waw-alert-wrapper-center{top:0;bottom:0;left:0;right:0;text-align:center;justify-content:center;flex-flow:column;align-items:center}\n"] }]
|
|
11
11
|
}], ctorParameters: function () { return []; } });
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JhcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93YWNvbS9zcmMvbGliL2NvbXBvbmVudHMvYWxlcnQvd3JhcHBlci93cmFwcGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhY29tL3NyYy9saWIvY29tcG9uZW50cy9hbGVydC93cmFwcGVyL3dyYXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFPMUMsTUFBTSxPQUFPLGdCQUFnQjtJQUM1QixnQkFBZSxDQUFDOzs2R0FESixnQkFBZ0I7aUdBQWhCLGdCQUFnQixtRENQN0IseXVCQVVBOzJGREhhLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2xpYi13cmFwcGVyJyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vd3JhcHBlci5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vd3JhcHBlci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXcmFwcGVyQ29tcG9uZW50e1xyXG5cdGNvbnN0cnVjdG9yKCkge31cclxufVxyXG4iLCI8ZGl2PlxyXG5cdDxkaXYgY2xhc3M9XCJ3YXctYWxlcnQtd3JhcHBlciB3YXctYWxlcnQtd3JhcHBlci1ib3R0b21SaWdodFwiIGlkPVwiYm90dG9tUmlnaHRcIj48L2Rpdj5cclxuXHQ8ZGl2IGNsYXNzPVwid2F3LWFsZXJ0LXdyYXBwZXIgd2F3LWFsZXJ0LXdyYXBwZXItYm90dG9tTGVmdFwiIGlkPVwiYm90dG9tTGVmdFwiPjwvZGl2PlxyXG5cdDxkaXYgY2xhc3M9XCJ3YXctYWxlcnQtd3JhcHBlciB3YXctYWxlcnQtd3JhcHBlci10b3BSaWdodFwiIGlkPVwidG9wUmlnaHRcIj48L2Rpdj5cclxuXHQ8ZGl2IGNsYXNzPVwid2F3LWFsZXJ0LXdyYXBwZXIgd2F3LWFsZXJ0LXdyYXBwZXItdG9wTGVmdFwiIGlkPVwidG9wTGVmdFwiPjwvZGl2PlxyXG5cdDxkaXYgY2xhc3M9XCJ3YXctYWxlcnQtd3JhcHBlciB3YXctYWxlcnQtd3JhcHBlci10b3BDZW50ZXJcIiBpZD1cInRvcENlbnRlclwiPjwvZGl2PlxyXG5cdDxkaXYgY2xhc3M9XCJ3YXctYWxlcnQtd3JhcHBlciB3YXctYWxlcnQtd3JhcHBlci1ib3R0b21DZW50ZXJcIiBpZD1cImJvdHRvbUNlbnRlclwiPjwvZGl2PlxyXG5cdDxkaXYgY2xhc3M9XCJ3YXctYWxlcnQtd3JhcHBlciB3YXctYWxlcnQtd3JhcHBlci1jZW50ZXJcIiBpZD1cImNlbnRlclwiPjwvZGl2PlxyXG5cdDwhLS0gW2JvdHRvbVJpZ2h0LCBib3R0b21MZWZ0LCB0b3BSaWdodCwgdG9wTGVmdCwgdG9wQ2VudGVyLCBib3R0b21DZW50ZXIgb3IgY2VudGVyXSAtLT5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -14,8 +14,7 @@ export class HttpService {
|
|
|
14
14
|
this.url = '';
|
|
15
15
|
this.headers = {};
|
|
16
16
|
this.http_headers = new HttpHeaders(this.headers);
|
|
17
|
-
|
|
18
|
-
this.locked = false;
|
|
17
|
+
this._locked = false;
|
|
19
18
|
this._http = config.http;
|
|
20
19
|
if (!this.config)
|
|
21
20
|
this.config = DEFAULT_CONFIG;
|
|
@@ -27,6 +26,9 @@ export class HttpService {
|
|
|
27
26
|
}
|
|
28
27
|
this.http_headers = new HttpHeaders(this.headers);
|
|
29
28
|
}
|
|
29
|
+
this.store.get('http_url', (url) => {
|
|
30
|
+
this.url = url || this._http.url || '';
|
|
31
|
+
});
|
|
30
32
|
this.store.getJson('http_headers', (headers) => {
|
|
31
33
|
if (headers) {
|
|
32
34
|
for (const header in headers) {
|
|
@@ -34,9 +36,16 @@ export class HttpService {
|
|
|
34
36
|
}
|
|
35
37
|
this.http_headers = new HttpHeaders(this.headers);
|
|
36
38
|
}
|
|
37
|
-
this.url = this._http.url || '';
|
|
38
39
|
});
|
|
39
40
|
}
|
|
41
|
+
setUrl(url) {
|
|
42
|
+
this.url = url;
|
|
43
|
+
this.store.set('http_url', url);
|
|
44
|
+
}
|
|
45
|
+
removeUrl() {
|
|
46
|
+
this.url = this._http.url || '';
|
|
47
|
+
this.store.remove('http_url');
|
|
48
|
+
}
|
|
40
49
|
set(key, value) {
|
|
41
50
|
this.headers[key] = value;
|
|
42
51
|
this.store.setJson('http_headers', this.headers);
|
|
@@ -51,7 +60,7 @@ export class HttpService {
|
|
|
51
60
|
this.store.setJson('http_headers', this.headers);
|
|
52
61
|
}
|
|
53
62
|
post(url, doc, callback = (resp) => { }, opts = {}) {
|
|
54
|
-
if (typeof opts
|
|
63
|
+
if (typeof opts === 'function') {
|
|
55
64
|
opts = {
|
|
56
65
|
err: opts
|
|
57
66
|
};
|
|
@@ -62,7 +71,7 @@ export class HttpService {
|
|
|
62
71
|
else if (!opts.err) {
|
|
63
72
|
opts.err = (err) => { };
|
|
64
73
|
}
|
|
65
|
-
if (this.
|
|
74
|
+
if (this._locked) {
|
|
66
75
|
return setTimeout(() => {
|
|
67
76
|
this.post(url, doc, callback, opts);
|
|
68
77
|
}, 100);
|
|
@@ -71,16 +80,17 @@ export class HttpService {
|
|
|
71
80
|
headers: this.http_headers
|
|
72
81
|
});
|
|
73
82
|
observable.pipe(first(), catchError(this.handleError(opts.err))).subscribe(resp => {
|
|
74
|
-
if (typeof this._http.replace
|
|
83
|
+
if (typeof this._http.replace === 'function') {
|
|
75
84
|
this._http.replace(resp, callback);
|
|
76
85
|
}
|
|
77
|
-
else
|
|
86
|
+
else {
|
|
78
87
|
callback(resp);
|
|
88
|
+
}
|
|
79
89
|
});
|
|
80
90
|
return observable;
|
|
81
91
|
}
|
|
82
92
|
put(url, doc, callback = (resp) => { }, opts = {}) {
|
|
83
|
-
if (typeof opts
|
|
93
|
+
if (typeof opts === 'function') {
|
|
84
94
|
opts = {
|
|
85
95
|
err: opts
|
|
86
96
|
};
|
|
@@ -91,7 +101,7 @@ export class HttpService {
|
|
|
91
101
|
else if (!opts.err) {
|
|
92
102
|
opts.err = (err) => { };
|
|
93
103
|
}
|
|
94
|
-
if (this.
|
|
104
|
+
if (this._locked) {
|
|
95
105
|
return setTimeout(() => {
|
|
96
106
|
this.put(url, doc, callback, opts);
|
|
97
107
|
}, 100);
|
|
@@ -100,16 +110,17 @@ export class HttpService {
|
|
|
100
110
|
headers: this.http_headers
|
|
101
111
|
});
|
|
102
112
|
observable.pipe(first(), catchError(this.handleError(opts.err))).subscribe(resp => {
|
|
103
|
-
if (typeof this._http.replace
|
|
113
|
+
if (typeof this._http.replace === 'function') {
|
|
104
114
|
this._http.replace(resp, callback);
|
|
105
115
|
}
|
|
106
|
-
else
|
|
116
|
+
else {
|
|
107
117
|
callback(resp);
|
|
118
|
+
}
|
|
108
119
|
});
|
|
109
120
|
return observable;
|
|
110
121
|
}
|
|
111
122
|
patch(url, doc, callback = (resp) => { }, opts = {}) {
|
|
112
|
-
if (typeof opts
|
|
123
|
+
if (typeof opts === 'function') {
|
|
113
124
|
opts = {
|
|
114
125
|
err: opts
|
|
115
126
|
};
|
|
@@ -120,7 +131,7 @@ export class HttpService {
|
|
|
120
131
|
else if (!opts.err) {
|
|
121
132
|
opts.err = (err) => { };
|
|
122
133
|
}
|
|
123
|
-
if (this.
|
|
134
|
+
if (this._locked) {
|
|
124
135
|
return setTimeout(() => {
|
|
125
136
|
this.patch(url, doc, callback, opts);
|
|
126
137
|
}, 100);
|
|
@@ -129,16 +140,17 @@ export class HttpService {
|
|
|
129
140
|
headers: this.http_headers
|
|
130
141
|
});
|
|
131
142
|
observable.pipe(first(), catchError(this.handleError(opts.err))).subscribe(resp => {
|
|
132
|
-
if (typeof this._http.replace
|
|
143
|
+
if (typeof this._http.replace === 'function') {
|
|
133
144
|
this._http.replace(resp, callback);
|
|
134
145
|
}
|
|
135
|
-
else
|
|
146
|
+
else {
|
|
136
147
|
callback(resp);
|
|
148
|
+
}
|
|
137
149
|
});
|
|
138
150
|
return observable;
|
|
139
151
|
}
|
|
140
152
|
delete(url, doc, callback = (resp) => { }, opts = {}) {
|
|
141
|
-
if (typeof opts
|
|
153
|
+
if (typeof opts === 'function') {
|
|
142
154
|
opts = {
|
|
143
155
|
err: opts
|
|
144
156
|
};
|
|
@@ -149,7 +161,7 @@ export class HttpService {
|
|
|
149
161
|
else if (!opts.err) {
|
|
150
162
|
opts.err = (err) => { };
|
|
151
163
|
}
|
|
152
|
-
if (this.
|
|
164
|
+
if (this._locked) {
|
|
153
165
|
return setTimeout(() => {
|
|
154
166
|
this.delete(url, doc, callback, opts);
|
|
155
167
|
}, 100);
|
|
@@ -159,7 +171,7 @@ export class HttpService {
|
|
|
159
171
|
body: doc || {}
|
|
160
172
|
});
|
|
161
173
|
observable.pipe(first(), catchError(this.handleError(opts.err))).subscribe(resp => {
|
|
162
|
-
if (typeof this._http.replace
|
|
174
|
+
if (typeof this._http.replace === 'function') {
|
|
163
175
|
this._http.replace(resp, callback);
|
|
164
176
|
}
|
|
165
177
|
else
|
|
@@ -168,7 +180,7 @@ export class HttpService {
|
|
|
168
180
|
return observable;
|
|
169
181
|
}
|
|
170
182
|
get(url, callback = (resp) => { }, opts = {}) {
|
|
171
|
-
if (typeof opts
|
|
183
|
+
if (typeof opts === 'function') {
|
|
172
184
|
opts = {
|
|
173
185
|
err: opts
|
|
174
186
|
};
|
|
@@ -179,7 +191,7 @@ export class HttpService {
|
|
|
179
191
|
else if (!opts.err) {
|
|
180
192
|
opts.err = (err) => { };
|
|
181
193
|
}
|
|
182
|
-
if (this.
|
|
194
|
+
if (this._locked) {
|
|
183
195
|
return setTimeout(() => {
|
|
184
196
|
this.get(url, callback, opts);
|
|
185
197
|
}, 100);
|
|
@@ -192,7 +204,7 @@ export class HttpService {
|
|
|
192
204
|
}
|
|
193
205
|
const observable = this.http.get((opts.url || this.url) + url, params);
|
|
194
206
|
observable.pipe(first(), catchError(this.handleError(opts.err))).subscribe(resp => {
|
|
195
|
-
if (typeof this._http.replace
|
|
207
|
+
if (typeof this._http.replace === 'function') {
|
|
196
208
|
this._http.replace(resp, callback);
|
|
197
209
|
}
|
|
198
210
|
else
|
|
@@ -201,13 +213,13 @@ export class HttpService {
|
|
|
201
213
|
return observable;
|
|
202
214
|
}
|
|
203
215
|
lock() {
|
|
204
|
-
this.
|
|
216
|
+
this._locked = true;
|
|
205
217
|
}
|
|
206
218
|
unlock() {
|
|
207
|
-
this.
|
|
219
|
+
this._locked = false;
|
|
208
220
|
}
|
|
209
221
|
err(callback) {
|
|
210
|
-
if (typeof callback
|
|
222
|
+
if (typeof callback === 'function') {
|
|
211
223
|
this._http.err = callback;
|
|
212
224
|
}
|
|
213
225
|
}
|
|
@@ -232,4 +244,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImpor
|
|
|
232
244
|
}, {
|
|
233
245
|
type: Optional
|
|
234
246
|
}] }]; } });
|
|
235
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2Fjb20vc3JjL2xpYi9zZXJ2aWNlcy9odHRwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBVSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFpQyxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFNbkQsTUFBTSxPQUFPLFdBQVc7SUFrQnZCLFlBQW9CLEtBQW1CLEVBQVUsSUFBZ0IsRUFDdEIsTUFBYztRQURyQyxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBbEJsRCxRQUFHLEdBQUcsRUFBRSxDQUFDO1FBRVIsWUFBTyxHQUFPLEVBQUUsQ0FBQztRQUNqQixpQkFBWSxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQXlMckQsa0JBQWtCO1FBQ1YsV0FBTSxHQUFHLEtBQUssQ0FBQztRQTFLdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsY0FBYyxDQUFDO1FBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztZQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLElBQUksT0FBTyxJQUFJLENBQUMs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WyJpbXBvcnQgeyBDT05GSUdfVE9LRU4sIENvbmZpZywgREVGQVVMVF9DT05GSUcgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbmZpZyc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTdG9yZVNlcnZpY2UgfSBmcm9tICcuL3N0b3JlLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgSHR0cFNlcnZpY2Uge1xyXG5cdHB1YmxpYyB1cmwgPSAnJztcclxuXHRwcml2YXRlIF9odHRwOiBhbnk7XHJcblx0cHJpdmF0ZSBoZWFkZXJzOmFueSA9IHt9O1xyXG5cdHByaXZhdGUgaHR0cF9oZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycyk7XHJcblx0c2V0KGtleTphbnksIHZhbHVlOmFueSl7XHJcblx0XHR0aGlzLmhlYWRlcnNba2V5XSA9IHZhbHVlO1xyXG5cdFx0dGhpcy5zdG9yZS5zZXRKc29uKCdodHRwX2hlYWRlcnMnLCB0aGlzLmhlYWRlcnMpO1xyXG5cdFx0dGhpcy5odHRwX2hlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKTtcclxuXHR9XHJcblx0aGVhZGVyKGtleTphbnkpe1xyXG5cdFx0cmV0dXJuIHRoaXMuaGVhZGVyc1trZXldO1xyXG5cdH1cclxuXHRyZW1vdmUoa2V5OmFueSl7XHJcblx0XHRkZWxldGUgdGhpcy5oZWFkZXJzW2tleV07XHJcblx0XHR0aGlzLmh0dHBfaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcnMpO1xyXG5cdFx0dGhpcy5zdG9yZS5zZXRKc29uKCdodHRwX2hlYWRlcnMnLCB0aGlzLmhlYWRlcnMpO1xyXG5cdH1cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JlOiBTdG9yZVNlcnZpY2UsIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuXHRcdEBJbmplY3QoQ09ORklHX1RPS0VOKSBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbmZpZzogQ29uZmlnKSB7XHJcblx0XHR0aGlzLl9odHRwID0gY29uZmlnLmh0dHA7XHJcblx0XHRpZiAoIXRoaXMuY29uZmlnKSB0aGlzLmNvbmZpZyA9IERFRkFVTFRfQ09ORklHO1xyXG5cdFx0aWYgKCF0aGlzLl9odHRwKSB0aGlzLl9odHRwID0ge307XHJcblx0XHRpZiAodHlwZW9mIHRoaXMuX2h0dHAuaGVhZGVycyA9PT0gJ29iamVjdCcpIHtcclxuXHRcdFx0Zm9yIChjb25zdCBoZWFkZXIgaW4gdGhpcy5faHR0cC5oZWFkZXJzKSB7XHJcblx0XHRcdFx0dGhpcy5oZWFkZXJzW2hlYWRlcl0gPSB0aGlzLl9odHRwLmhlYWRlcnNbaGVhZGVyXTtcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLmh0dHBfaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcnMpO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5zdG9yZS5nZXRKc29uKCdodHRwX2hlYWRlcnMnLCAoaGVhZGVyczphbnkpPT57XHJcblx0XHRcdGlmKGhlYWRlcnMpIHtcclxuXHRcdFx0XHRmb3IgKGNvbnN0IGhlYWRlciBpbiBoZWFkZXJzKXtcclxuXHRcdFx0XHRcdHRoaXMuaGVhZGVyc1toZWFkZXJdID0gaGVhZGVyc1toZWFkZXJdO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR0aGlzLmh0dHBfaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcnMpO1xyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMudXJsID0gdGhpcy5faHR0cC51cmwgfHwgJyc7XHJcblx0XHR9KTtcclxuXHR9XHJcblx0cG9zdCh1cmw6YW55LCBkb2M6YW55LCBjYWxsYmFjaz0ocmVzcDphbnkpID0+IHt9LCBvcHRzOmFueT17fSk6YW55e1xyXG5cdFx0aWYodHlwZW9mIG9wdHMgPT0gJ2Z1bmN0aW9uJyl7XHJcblx0XHRcdG9wdHMgPSB7XHJcblx0XHRcdFx0ZXJyOiBvcHRzXHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGlmICghb3B0cy5lcnIgJiYgdGhpcy5faHR0cC5lcnIpIHtcclxuXHRcdFx0b3B0cy5lcnIgPSB0aGlzLl9odHRwLmVycjtcclxuXHRcdH0gZWxzZSBpZiAoIW9wdHMuZXJyKSB7XHJcblx0XHRcdG9wdHMuZXJyID0gKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHsgfTtcclxuXHRcdH1cclxuXHRcdGlmKHRoaXMubG9ja2VkKXtcclxuXHRcdFx0cmV0dXJuIHNldFRpbWVvdXQoKCk9PntcclxuXHRcdFx0XHR0aGlzLnBvc3QodXJsLCBkb2MsIGNhbGxiYWNrLCBvcHRzKTtcclxuXHRcdFx0fSwgMTAwKTtcclxuXHRcdH1cclxuXHRcdGNvbnN0IG9ic2VydmFibGUgPSB0aGlzLmh0dHAucG9zdDxhbnk+KChvcHRzLnVybHx8dGhpcy51cmwpK3VybCwgZG9jLCB7XHJcblx0XHRcdGhlYWRlcnM6IHRoaXMuaHR0cF9oZWFkZXJzXHJcblx0XHR9KTtcclxuXHRcdG9ic2VydmFibGUucGlwZShcclxuXHRcdFx0Zmlyc3QoKSxcclxuXHRcdFx0Y2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKG9wdHMuZXJyKSlcclxuXHRcdCkuc3Vic2NyaWJlKHJlc3A9PntcclxuXHRcdFx0aWYodHlwZW9mIHRoaXMuX2h0dHAucmVwbGFjZSA9PSAnZnVuY3Rpb24nKXtcclxuXHRcdFx0XHR0aGlzLl9odHRwLnJlcGxhY2UocmVzcCwgY2FsbGJhY2spO1xyXG5cdFx0XHR9ZWxzZSBjYWxsYmFjayhyZXNwKTtcclxuXHRcdH0pO1xyXG5cdFx0cmV0dXJuIG9ic2VydmFibGU7XHJcblx0fVxyXG5cdHB1dCh1cmw6YW55LCBkb2M6YW55LCBjYWxsYmFjaz0ocmVzcDphbnkpID0+IHt9LCBvcHRzOmFueT17fSk6YW55e1xyXG5cdFx0aWYodHlwZW9mIG9wdHMgPT0gJ2Z1bmN0aW9uJyl7XHJcblx0XHRcdG9wdHMgPSB7XHJcblx0XHRcdFx0ZXJyOiBvcHRzXHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGlmICghb3B0cy5lcnIgJiYgdGhpcy5faHR0cC5lcnIpIHtcclxuXHRcdFx0b3B0cy5lcnIgPSB0aGlzLl9odHRwLmVycjtcclxuXHRcdH0gZWxzZSBpZiAoIW9wdHMuZXJyKSB7XHJcblx0XHRcdG9wdHMuZXJyID0gKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHsgfTtcclxuXHRcdH1cclxuXHRcdGlmKHRoaXMubG9ja2VkKXtcclxuXHRcdFx0cmV0dXJuIHNldFRpbWVvdXQoKCk9PntcclxuXHRcdFx0XHR0aGlzLnB1dCh1cmwsIGRvYywgY2FsbGJhY2ssIG9wdHMpO1xyXG5cdFx0XHR9LCAxMDApO1xyXG5cdFx0fVxyXG5cdFx0Y29uc3Qgb2JzZXJ2YWJsZSA9IHRoaXMuaHR0cC5wdXQ8YW55Pigob3B0cy51cmx8fHRoaXMudXJsKSt1cmwsIGRvYywge1xyXG5cdFx0XHRoZWFkZXJzOiB0aGlzLmh0dHBfaGVhZGVyc1xyXG5cdFx0fSk7XHJcblx0XHRvYnNlcnZhYmxlLnBpcGUoXHJcblx0XHRcdGZpcnN0KCksXHJcblx0XHRcdGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcihvcHRzLmVycikpXHJcblx0XHQpLnN1YnNjcmliZShyZXNwPT57XHJcblx0XHRcdGlmKHR5cGVvZiB0aGlzLl9odHRwLnJlcGxhY2UgPT0gJ2Z1bmN0aW9uJyl7XHJcblx0XHRcdFx0dGhpcy5faHR0cC5yZXBsYWNlKHJlc3AsIGNhbGxiYWNrKTtcclxuXHRcdFx0fWVsc2UgY2FsbGJhY2socmVzcCk7XHJcblx0XHR9KTtcclxuXHRcdHJldHVybiBvYnNlcnZhYmxlO1xyXG5cdH1cclxuXHRwYXRjaCh1cmw6YW55LCBkb2M6YW55LCBjYWxsYmFjaz0ocmVzcDphbnkpID0+IHt9LCBvcHRzOmFueT17fSk6YW55e1xyXG5cdFx0aWYodHlwZW9mIG9wdHMgPT0gJ2Z1bmN0aW9uJyl7XHJcblx0XHRcdG9wdHMgPSB7XHJcblx0XHRcdFx0ZXJyOiBvcHRzXHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGlmICghb3B0cy5lcnIgJiYgdGhpcy5faHR0cC5lcnIpIHtcclxuXHRcdFx0b3B0cy5lcnIgPSB0aGlzLl9odHRwLmVycjtcclxuXHRcdH0gZWxzZSBpZiAoIW9wdHMuZXJyKSB7XHJcblx0XHRcdG9wdHMuZXJyID0gKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHsgfTtcclxuXHRcdH1cclxuXHRcdGlmKHRoaXMubG9ja2VkKXtcclxuXHRcdFx0cmV0dXJuIHNldFRpbWVvdXQoKCk9PntcclxuXHRcdFx0XHR0aGlzLnBhdGNoKHVybCwgZG9jLCBjYWxsYmFjaywgb3B0cyk7XHJcblx0XHRcdH0sIDEwMCk7XHJcblx0XHR9XHJcblx0XHRjb25zdCBvYnNlcnZhYmxlID0gdGhpcy5odHRwLnBhdGNoPGFueT4oKG9wdHMudXJsfHx0aGlzLnVybCkrdXJsLCBkb2MsIHtcclxuXHRcdFx0aGVhZGVyczogdGhpcy5odHRwX2hlYWRlcnNcclxuXHRcdH0pO1xyXG5cdFx0b2JzZXJ2YWJsZS5waXBlKFxyXG5cdFx0XHRmaXJzdCgpLFxyXG5cdFx0XHRjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3Iob3B0cy5lcnIpKVxyXG5cdFx0KS5zdWJzY3JpYmUocmVzcD0+e1xyXG5cdFx0XHRpZih0eXBlb2YgdGhpcy5faHR0cC5yZXBsYWNlID09ICdmdW5jdGlvbicpe1xyXG5cdFx0XHRcdHRoaXMuX2h0dHAucmVwbGFjZShyZXNwLCBjYWxsYmFjayk7XHJcblx0XHRcdH1lbHNlIGNhbGxiYWNrKHJlc3ApO1xyXG5cdFx0fSk7XHJcblx0XHRyZXR1cm4gb2JzZXJ2YWJsZTtcclxuXHR9XHJcblx0ZGVsZXRlKHVybDphbnksIGRvYzphbnksIGNhbGxiYWNrPShyZXNwOmFueSkgPT4ge30sIG9wdHM6YW55PXt9KTphbnl7XHJcblx0XHRpZih0eXBlb2Ygb3B0cyA9PSAnZnVuY3Rpb24nKXtcclxuXHRcdFx0b3B0cyA9IHtcclxuXHRcdFx0XHRlcnI6IG9wdHNcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0aWYgKCFvcHRzLmVyciAmJiB0aGlzLl9odHRwLmVycikge1xyXG5cdFx0XHRvcHRzLmVyciA9IHRoaXMuX2h0dHAuZXJyO1xyXG5cdFx0fSBlbHNlIGlmICghb3B0cy5lcnIpIHtcclxuXHRcdFx0b3B0cy5lcnIgPSAoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4geyB9O1xyXG5cdFx0fVxyXG5cdFx0aWYodGhpcy5sb2NrZWQpe1xyXG5cdFx0XHRyZXR1cm4gc2V0VGltZW91dCgoKT0+e1xyXG5cdFx0XHRcdHRoaXMuZGVsZXRlKHVybCwgZG9jLCBjYWxsYmFjaywgb3B0cyk7XHJcblx0XHRcdH0sIDEwMCk7XHJcblx0XHR9XHJcblx0XHRjb25zdCBvYnNlcnZhYmxlID0gdGhpcy5odHRwLnJlcXVlc3Q8YW55PignZGVsZXRlJywgKG9wdHMudXJsfHx0aGlzLnVybCkrdXJsLCB7XHJcblx0XHRcdGhlYWRlcnM6IHRoaXMuaHR0cF9oZWFkZXJzLFxyXG5cdFx0XHRib2R5OiBkb2MgfHwge31cclxuXHRcdH0pO1xyXG5cdFx0b2JzZXJ2YWJsZS5waXBlKFxyXG5cdFx0XHRmaXJzdCgpLFxyXG5cdFx0XHRjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3Iob3B0cy5lcnIpKVxyXG5cdFx0KS5zdWJzY3JpYmUocmVzcD0+e1xyXG5cdFx0XHRpZih0eXBlb2YgdGhpcy5faHR0cC5yZXBsYWNlID09ICdmdW5jdGlvbicpe1xyXG5cdFx0XHRcdHRoaXMuX2h0dHAucmVwbGFjZShyZXNwLCBjYWxsYmFjayk7XHJcblx0XHRcdH1lbHNlIGNhbGxiYWNrKHJlc3ApO1xyXG5cdFx0fSk7XHJcblx0XHRyZXR1cm4gb2JzZXJ2YWJsZTtcclxuXHR9XHJcblx0Z2V0KHVybDphbnksIGNhbGxiYWNrPShyZXNwOmFueSkgPT4ge30sIG9wdHM6YW55PXt9KTphbnl7XHJcblx0XHRpZih0eXBlb2Ygb3B0cyA9PSAnZnVuY3Rpb24nKXtcclxuXHRcdFx0b3B0cyA9IHtcclxuXHRcdFx0XHRlcnI6IG9wdHNcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0aWYgKCFvcHRzLmVyciAmJiB0aGlzLl9odHRwLmVycikge1xyXG5cdFx0XHRvcHRzLmVyciA9IHRoaXMuX2h0dHAuZXJyO1xyXG5cdFx0fSBlbHNlIGlmICghb3B0cy5lcnIpIHtcclxuXHRcdFx0b3B0cy5lcnIgPSAoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4geyB9O1xyXG5cdFx0fVxyXG5cdFx0aWYodGhpcy5sb2NrZWQpe1xyXG5cdFx0XHRyZXR1cm4gc2V0VGltZW91dCgoKT0+e1xyXG5cdFx0XHRcdHRoaXMuZ2V0KHVybCwgY2FsbGJhY2ssIG9wdHMpO1xyXG5cdFx0XHR9LCAxMDApO1xyXG5cdFx0fVxyXG5cdFx0bGV0IHBhcmFtczphbnkgPSB7XHJcblx0XHRcdGhlYWRlcnM6IHRoaXMuaHR0cF9oZWFkZXJzXHJcblx0XHR9O1xyXG5cdFx0aWYgKG9wdHMucGFyYW1zKXtcclxuXHRcdFx0cGFyYW1zLnBhcmFtcyA9IG9wdHMucGFyYW1zO1xyXG5cdFx0fVxyXG5cdFx0Y29uc3Qgb2JzZXJ2YWJsZSA9IHRoaXMuaHR0cC5nZXQ8YW55Pigob3B0cy51cmwgfHwgdGhpcy51cmwpICsgdXJsLCBwYXJhbXMpO1xyXG5cdFx0b2JzZXJ2YWJsZS5waXBlKFxyXG5cdFx0XHRmaXJzdCgpLFxyXG5cdFx0XHRjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3Iob3B0cy5lcnIpKVxyXG5cdFx0KS5zdWJzY3JpYmUocmVzcD0+e1xyXG5cdFx0XHRpZih0eXBlb2YgdGhpcy5faHR0cC5yZXBsYWNlID09ICdmdW5jdGlvbicpe1xyXG5cdFx0XHRcdHRoaXMuX2h0dHAucmVwbGFjZShyZXNwLCBjYWxsYmFjayk7XHJcblx0XHRcdH1lbHNlIGNhbGxiYWNrKHJlc3ApO1xyXG5cdFx0fSk7XHJcblx0XHRyZXR1cm4gb2JzZXJ2YWJsZTtcclxuXHR9XHJcblx0Ly8gaHR0cCBtYW5hZ2VtZW50XHJcblx0cHJpdmF0ZSBsb2NrZWQgPSBmYWxzZTtcclxuXHRsb2NrKCl7XHJcblx0XHR0aGlzLmxvY2tlZCA9IHRydWU7XHJcblx0fVxyXG5cdHVubG9jaygpe1xyXG5cdFx0dGhpcy5sb2NrZWQgPSBmYWxzZTtcclxuXHR9XHJcblx0ZXJyKGNhbGxiYWNrOmFueSl7XHJcblx0XHRpZih0eXBlb2YgY2FsbGJhY2sgPT0gJ2Z1bmN0aW9uJyl7XHJcblx0XHRcdHRoaXMuX2h0dHAuZXJyID0gY2FsbGJhY2s7XHJcblx0XHR9XHJcblx0fVxyXG5cdHByaXZhdGUgaGFuZGxlRXJyb3IoY2I6YW55ID0gdGhpcy5faHR0cC5lcnIpIHtcclxuXHRcdHJldHVybiBmdW5jdGlvbihlcnJvcjogSHR0cEVycm9yUmVzcG9uc2Upe1xyXG5cdFx0XHRjYiAmJiBjYihlcnJvcik7XHJcblx0XHRcdHJldHVybiB0aHJvd0Vycm9yKFwiV2UgY2FuJ3QgY29ubmVjdCB0byB0aGUgc2VydmVyXCIpO1xyXG5cdFx0fVxyXG5cdH07XHJcbn1cclxuIl19
|
|
247
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2Fjb20vc3JjL2xpYi9zZXJ2aWNlcy9odHRwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBVSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFpQyxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFNbkQsTUFBTSxPQUFPLFdBQVc7SUFTdkIsWUFDUyxLQUFtQixFQUNuQixJQUFnQixFQUNrQixNQUFjO1FBRmhELFVBQUssR0FBTCxLQUFLLENBQWM7UUFDbkIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNrQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBWGxELFFBQUcsR0FBRyxFQUFFLENBQUM7UUFJUixZQUFPLEdBQU8sRUFBRSxDQUFDO1FBRWpCLGlCQUFZLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBMFA3QyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBblB2QixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFFekIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO1lBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUM7UUFFL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLO1lBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFFakMsSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FB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LEdBQUcsR0FBRyxRQUFRLENBQUM7U0FDMUI7SUFDRixDQUFDO0lBRU8sV0FBVyxDQUFDLEtBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHO1FBQzFDLE9BQU8sVUFBUyxLQUF3QjtZQUN2QyxFQUFFLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRWhCLE9BQU8sVUFBVSxDQUFDLGdDQUFnQyxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFBO0lBQ0YsQ0FBQztJQUFBLENBQUM7O3dHQXZSVSxXQUFXLHdFQVlkLFlBQVk7NEdBWlQsV0FBVyxjQUZYLE1BQU07MkZBRU4sV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEI7OzBCQWFFLE1BQU07MkJBQUMsWUFBWTs7MEJBQUcsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENPTkZJR19UT0tFTiwgQ29uZmlnLCBERUZBVUxUX0NPTkZJRyB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29uZmlnJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFN0b3JlU2VydmljZSB9IGZyb20gJy4vc3RvcmUuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIdHRwU2VydmljZSB7XHJcblx0cHVibGljIHVybCA9ICcnO1xyXG5cclxuXHRwcml2YXRlIF9odHRwOiBhbnk7XHJcblxyXG5cdHByaXZhdGUgaGVhZGVyczphbnkgPSB7fTtcclxuXHJcblx0cHJpdmF0ZSBodHRwX2hlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKTtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIHN0b3JlOiBTdG9yZVNlcnZpY2UsXHJcblx0XHRwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcblx0XHRASW5qZWN0KENPTkZJR19UT0tFTikgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb25maWc6IENvbmZpZ1xyXG5cdCkge1xyXG5cdFx0dGhpcy5faHR0cCA9IGNvbmZpZy5odHRwO1xyXG5cclxuXHRcdGlmICghdGhpcy5jb25maWcpIHRoaXMuY29uZmlnID0gREVGQVVMVF9DT05GSUc7XHJcblxyXG5cdFx0aWYgKCF0aGlzLl9odHRwKSB0aGlzLl9odHRwID0ge307XHJcblxyXG5cdFx0aWYgKHR5cGVvZiB0aGlzLl9odHRwLmhlYWRlcnMgPT09ICdvYmplY3QnKSB7XHJcblx0XHRcdGZvciAoY29uc3QgaGVhZGVyIGluIHRoaXMuX2h0dHAuaGVhZGVycykge1xyXG5cdFx0XHRcdHRoaXMuaGVhZGVyc1toZWFkZXJdID0gdGhpcy5faHR0cC5oZWFkZXJzW2hlYWRlcl07XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHRoaXMuaHR0cF9oZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycyk7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5zdG9yZS5nZXQoJ2h0dHBfdXJsJywgKHVybDphbnkpPT57XHJcblx0XHRcdHRoaXMudXJsID0gdXJsIHx8IHRoaXMuX2h0dHAudXJsIHx8ICcnO1xyXG5cdFx0fSk7XHJcblxyXG5cdFx0dGhpcy5zdG9yZS5nZXRKc29uKCdodHRwX2hlYWRlcnMnLCAoaGVhZGVyczphbnkpPT57XHJcblx0XHRcdGlmIChoZWFkZXJzKSB7XHJcblx0XHRcdFx0Zm9yIChjb25zdCBoZWFkZXIgaW4gaGVhZGVycyl7XHJcblx0XHRcdFx0XHR0aGlzLmhlYWRlcnNbaGVhZGVyXSA9IGhlYWRlcnNbaGVhZGVyXTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdHRoaXMuaHR0cF9oZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycyk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0c2V0VXJsKHVybDogc3RyaW5nKSB7XHJcblx0XHR0aGlzLnVybCA9IHVybDtcclxuXHRcdHRoaXMuc3RvcmUuc2V0KCdodHRwX3VybCcsIHVybCk7XHJcblx0fVxyXG5cclxuXHRyZW1vdmVVcmwoKSB7XHJcblx0XHR0aGlzLnVybCA9IHRoaXMuX2h0dHAudXJsIHx8ICcnO1xyXG5cdFx0dGhpcy5zdG9yZS5yZW1vdmUoJ2h0dHBfdXJsJyk7XHJcblx0fVxyXG5cclxuXHRzZXQoa2V5OiBhbnksIHZhbHVlOiBhbnkpIHtcclxuXHRcdHRoaXMuaGVhZGVyc1trZXldID0gdmFsdWU7XHJcblxyXG5cdFx0dGhpcy5zdG9yZS5zZXRKc29uKCdodHRwX2hlYWRlcnMnLCB0aGlzLmhlYWRlcnMpO1xyXG5cclxuXHRcdHRoaXMuaHR0cF9oZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycyk7XHJcblx0fVxyXG5cclxuXHRoZWFkZXIoa2V5OiBhbnkpIHtcclxuXHRcdHJldHVybiB0aGlzLmhlYWRlcnNba2V5XTtcclxuXHR9XHJcblxyXG5cdHJlbW92ZShrZXk6IGFueSkge1xyXG5cdFx0ZGVsZXRlIHRoaXMuaGVhZGVyc1trZXldO1xyXG5cclxuXHRcdHRoaXMuaHR0cF9oZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycyk7XHJcblxyXG5cdFx0dGhpcy5zdG9yZS5zZXRKc29uKCdodHRwX2hlYWRlcnMnLCB0aGlzLmhlYWRlcnMpO1xyXG5cdH1cclxuXHJcblx0cG9zdCh1cmw6YW55LCBkb2M6YW55LCBjYWxsYmFjaz0ocmVzcDphbnkpID0+IHt9LCBvcHRzOmFueT17fSk6YW55e1xyXG5cdFx0aWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKXtcclxuXHRcdFx0b3B0cyA9IHtcclxuXHRcdFx0XHRlcnI6IG9wdHNcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdGlmICghb3B0cy5lcnIgJiYgdGhpcy5faHR0cC5lcnIpIHtcclxuXHRcdFx0b3B0cy5lcnIgPSB0aGlzLl9odHRwLmVycjtcclxuXHRcdH0gZWxzZSBpZiAoIW9wdHMuZXJyKSB7XHJcblx0XHRcdG9wdHMuZXJyID0gKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHsgfTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAodGhpcy5fbG9ja2VkKXtcclxuXHRcdFx0cmV0dXJuIHNldFRpbWVvdXQoKCk9PntcclxuXHRcdFx0XHR0aGlzLnBvc3QodXJsLCBkb2MsIGNhbGxiYWNrLCBvcHRzKTtcclxuXHRcdFx0fSwgMTAwKTtcclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCBvYnNlcnZhYmxlID0gdGhpcy5odHRwLnBvc3Q8YW55Pigob3B0cy51cmx8fHRoaXMudXJsKSt1cmwsIGRvYywge1xyXG5cdFx0XHRoZWFkZXJzOiB0aGlzLmh0dHBfaGVhZGVyc1xyXG5cdFx0fSk7XHJcblxyXG5cdFx0b2JzZXJ2YWJsZS5waXBlKFxyXG5cdFx0XHRmaXJzdCgpLFxyXG5cdFx0XHRjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3Iob3B0cy5lcnIpKVxyXG5cdFx0KS5zdWJzY3JpYmUocmVzcD0+e1xyXG5cdFx0XHRpZiAodHlwZW9mIHRoaXMuX2h0dHAucmVwbGFjZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG5cdFx0XHRcdHRoaXMuX2h0dHAucmVwbGFjZShyZXNwLCBjYWxsYmFjayk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0Y2FsbGJhY2socmVzcCk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdHJldHVybiBvYnNlcnZhYmxlO1xyXG5cdH1cclxuXHRwdXQodXJsOmFueSwgZG9jOmFueSwgY2FsbGJhY2s9KHJlc3A6YW55KSA9PiB7fSwgb3B0czphbnk9e30pOmFueXtcclxuXHRcdGlmICh0eXBlb2Ygb3B0cyA9PT0gJ2Z1bmN0aW9uJyl7XHJcblx0XHRcdG9wdHMgPSB7XHJcblx0XHRcdFx0ZXJyOiBvcHRzXHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRpZiAoIW9wdHMuZXJyICYmIHRoaXMuX2h0dHAuZXJyKSB7XHJcblx0XHRcdG9wdHMuZXJyID0gdGhpcy5faHR0cC5lcnI7XHJcblx0XHR9IGVsc2UgaWYgKCFvcHRzLmVycikge1xyXG5cdFx0XHRvcHRzLmVyciA9IChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7IH07XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMuX2xvY2tlZCl7XHJcblx0XHRcdHJldHVybiBzZXRUaW1lb3V0KCgpPT57XHJcblx0XHRcdFx0dGhpcy5wdXQodXJsLCBkb2MsIGNhbGxiYWNrLCBvcHRzKTtcclxuXHRcdFx0fSwgMTAwKTtcclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCBvYnNlcnZhYmxlID0gdGhpcy5odHRwLnB1dDxhbnk+KChvcHRzLnVybHx8dGhpcy51cmwpK3VybCwgZG9jLCB7XHJcblx0XHRcdGhlYWRlcnM6IHRoaXMuaHR0cF9oZWFkZXJzXHJcblx0XHR9KTtcclxuXHJcblx0XHRvYnNlcnZhYmxlLnBpcGUoXHJcblx0XHRcdGZpcnN0KCksXHJcblx0XHRcdGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcihvcHRzLmVycikpXHJcblx0XHQpLnN1YnNjcmliZShyZXNwPT57XHJcblx0XHRcdGlmICh0eXBlb2YgdGhpcy5faHR0cC5yZXBsYWNlID09PSAnZnVuY3Rpb24nKXtcclxuXHRcdFx0XHR0aGlzLl9odHRwLnJlcGxhY2UocmVzcCwgY2FsbGJhY2spO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGNhbGxiYWNrKHJlc3ApO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHJcblx0XHRyZXR1cm4gb2JzZXJ2YWJsZTtcclxuXHR9XHJcblx0cGF0Y2godXJsOmFueSwgZG9jOmFueSwgY2FsbGJhY2s9KHJlc3A6YW55KSA9PiB7fSwgb3B0czphbnk9e30pOmFueXtcclxuXHRcdGlmICh0eXBlb2Ygb3B0cyA9PT0gJ2Z1bmN0aW9uJyl7XHJcblx0XHRcdG9wdHMgPSB7XHJcblx0XHRcdFx0ZXJyOiBvcHRzXHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRpZiAoIW9wdHMuZXJyICYmIHRoaXMuX2h0dHAuZXJyKSB7XHJcblx0XHRcdG9wdHMuZXJyID0gdGhpcy5faHR0cC5lcnI7XHJcblx0XHR9IGVsc2UgaWYgKCFvcHRzLmVycikge1xyXG5cdFx0XHRvcHRzLmVyciA9IChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7IH07XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMuX2xvY2tlZCl7XHJcblx0XHRcdHJldHVybiBzZXRUaW1lb3V0KCgpPT57XHJcblx0XHRcdFx0dGhpcy5wYXRjaCh1cmwsIGRvYywgY2FsbGJhY2ssIG9wdHMpO1xyXG5cdFx0XHR9LCAxMDApO1xyXG5cdFx0fVxyXG5cclxuXHRcdGNvbnN0IG9ic2VydmFibGUgPSB0aGlzLmh0dHAucGF0Y2g8YW55Pigob3B0cy51cmx8fHRoaXMudXJsKSt1cmwsIGRvYywge1xyXG5cdFx0XHRoZWFkZXJzOiB0aGlzLmh0dHBfaGVhZGVyc1xyXG5cdFx0fSk7XHJcblxyXG5cdFx0b2JzZXJ2YWJsZS5waXBlKFxyXG5cdFx0XHRmaXJzdCgpLFxyXG5cdFx0XHRjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3Iob3B0cy5lcnIpKVxyXG5cdFx0KS5zdWJzY3JpYmUocmVzcD0+e1xyXG5cdFx0XHRpZiAodHlwZW9mIHRoaXMuX2h0dHAucmVwbGFjZSA9PT0gJ2Z1bmN0aW9uJyl7XHJcblx0XHRcdFx0dGhpcy5faHR0cC5yZXBsYWNlKHJlc3AsIGNhbGxiYWNrKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRjYWxsYmFjayhyZXNwKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0cmV0dXJuIG9ic2VydmFibGU7XHJcblx0fVxyXG5cdGRlbGV0ZSh1cmw6YW55LCBkb2M6YW55LCBjYWxsYmFjaz0ocmVzcDphbnkpID0+IHt9LCBvcHRzOmFueT17fSk6YW55e1xyXG5cdFx0aWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKXtcclxuXHRcdFx0b3B0cyA9IHtcclxuXHRcdFx0XHRlcnI6IG9wdHNcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdGlmICghb3B0cy5lcnIgJiYgdGhpcy5faHR0cC5lcnIpIHtcclxuXHRcdFx0b3B0cy5lcnIgPSB0aGlzLl9odHRwLmVycjtcclxuXHRcdH0gZWxzZSBpZiAoIW9wdHMuZXJyKSB7XHJcblx0XHRcdG9wdHMuZXJyID0gKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHsgfTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAodGhpcy5fbG9ja2VkKXtcclxuXHRcdFx0cmV0dXJuIHNldFRpbWVvdXQoKCk9PntcclxuXHRcdFx0XHR0aGlzLmRlbGV0ZSh1cmwsIGRvYywgY2FsbGJhY2ssIG9wdHMpO1xyXG5cdFx0XHR9LCAxMDApO1xyXG5cdFx0fVxyXG5cclxuXHRcdGNvbnN0IG9ic2VydmFibGUgPSB0aGlzLmh0dHAucmVxdWVzdDxhbnk+KCdkZWxldGUnLCAob3B0cy51cmx8fHRoaXMudXJsKSt1cmwsIHtcclxuXHRcdFx0aGVhZGVyczogdGhpcy5odHRwX2hlYWRlcnMsXHJcblx0XHRcdGJvZHk6IGRvYyB8fCB7fVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0b2JzZXJ2YWJsZS5waXBlKFxyXG5cdFx0XHRmaXJzdCgpLFxyXG5cdFx0XHRjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3Iob3B0cy5lcnIpKVxyXG5cdFx0KS5zdWJzY3JpYmUocmVzcD0+e1xyXG5cdFx0XHRpZiAodHlwZW9mIHRoaXMuX2h0dHAucmVwbGFjZSA9PT0gJ2Z1bmN0aW9uJyl7XHJcblx0XHRcdFx0dGhpcy5faHR0cC5yZXBsYWNlKHJlc3AsIGNhbGxiYWNrKTtcclxuXHRcdFx0fSBlbHNlIGNhbGxiYWNrKHJlc3ApO1xyXG5cdFx0fSk7XHJcblxyXG5cdFx0cmV0dXJuIG9ic2VydmFibGU7XHJcblx0fVxyXG5cdGdldCh1cmw6YW55LCBjYWxsYmFjaz0ocmVzcDphbnkpID0+IHt9LCBvcHRzOmFueT17fSk6YW55e1xyXG5cdFx0aWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKXtcclxuXHRcdFx0b3B0cyA9IHtcclxuXHRcdFx0XHRlcnI6IG9wdHNcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdGlmICghb3B0cy5lcnIgJiYgdGhpcy5faHR0cC5lcnIpIHtcclxuXHRcdFx0b3B0cy5lcnIgPSB0aGlzLl9odHRwLmVycjtcclxuXHRcdH0gZWxzZSBpZiAoIW9wdHMuZXJyKSB7XHJcblx0XHRcdG9wdHMuZXJyID0gKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHsgfTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAodGhpcy5fbG9ja2VkKXtcclxuXHRcdFx0cmV0dXJuIHNldFRpbWVvdXQoKCk9PntcclxuXHRcdFx0XHR0aGlzLmdldCh1cmwsIGNhbGxiYWNrLCBvcHRzKTtcclxuXHRcdFx0fSwgMTAwKTtcclxuXHRcdH1cclxuXHJcblx0XHRsZXQgcGFyYW1zOmFueSA9IHtcclxuXHRcdFx0aGVhZGVyczogdGhpcy5odHRwX2hlYWRlcnNcclxuXHRcdH07XHJcblxyXG5cdFx0aWYgKG9wdHMucGFyYW1zKXtcclxuXHRcdFx0cGFyYW1zLnBhcmFtcyA9IG9wdHMucGFyYW1zO1xyXG5cdFx0fVxyXG5cclxuXHRcdGNvbnN0IG9ic2VydmFibGUgPSB0aGlzLmh0dHAuZ2V0PGFueT4oKG9wdHMudXJsIHx8IHRoaXMudXJsKSArIHVybCwgcGFyYW1zKTtcclxuXHJcblx0XHRvYnNlcnZhYmxlLnBpcGUoXHJcblx0XHRcdGZpcnN0KCksXHJcblx0XHRcdGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcihvcHRzLmVycikpXHJcblx0XHQpLnN1YnNjcmliZShyZXNwPT57XHJcblx0XHRcdGlmICh0eXBlb2YgdGhpcy5faHR0cC5yZXBsYWNlID09PSAnZnVuY3Rpb24nKXtcclxuXHRcdFx0XHR0aGlzLl9odHRwLnJlcGxhY2UocmVzcCwgY2FsbGJhY2spO1xyXG5cdFx0XHR9IGVsc2UgY2FsbGJhY2socmVzcCk7XHJcblx0XHR9KTtcclxuXHJcblx0XHRyZXR1cm4gb2JzZXJ2YWJsZTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgX2xvY2tlZCA9IGZhbHNlO1xyXG5cclxuXHRsb2NrKCl7XHJcblx0XHR0aGlzLl9sb2NrZWQgPSB0cnVlO1xyXG5cdH1cclxuXHJcblx0dW5sb2NrKCl7XHJcblx0XHR0aGlzLl9sb2NrZWQgPSBmYWxzZTtcclxuXHR9XHJcblxyXG5cdGVycihjYWxsYmFjazphbnkpe1xyXG5cdFx0aWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJyl7XHJcblx0XHRcdHRoaXMuX2h0dHAuZXJyID0gY2FsbGJhY2s7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGhhbmRsZUVycm9yKGNiOmFueSA9IHRoaXMuX2h0dHAuZXJyKSB7XHJcblx0XHRyZXR1cm4gZnVuY3Rpb24oZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKXtcclxuXHRcdFx0Y2IgJiYgY2IoZXJyb3IpO1xyXG5cclxuXHRcdFx0cmV0dXJuIHRocm93RXJyb3IoXCJXZSBjYW4ndCBjb25uZWN0IHRvIHRoZSBzZXJ2ZXJcIik7XHJcblx0XHR9XHJcblx0fTtcclxufVxyXG4iXX0=
|