@igo2/geo 1.13.0 → 1.13.1
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/datasource/shared/capabilities.service.mjs +22 -17
- package/esm2020/lib/draw/draw/draw-popup.component.mjs +5 -5
- package/esm2020/lib/draw/draw/draw.component.mjs +384 -273
- package/esm2020/lib/draw/draw/draw.module.mjs +19 -15
- package/esm2020/lib/draw/shared/draw-style.service.mjs +35 -18
- package/esm2020/lib/draw/shared/draw.interface.mjs +1 -1
- package/esm2020/lib/feature/feature-details/feature-details.component.mjs +51 -24
- package/esm2020/lib/feature/shared/feature.utils.mjs +4 -5
- package/esm2020/lib/feature/shared/store.mjs +14 -2
- package/esm2020/lib/filter/filter.module.mjs +2 -2
- package/esm2020/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +2 -2
- package/esm2020/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +2 -2
- package/esm2020/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +2 -2
- package/esm2020/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +44 -39
- package/esm2020/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +23 -10
- package/esm2020/lib/import-export/import-export/import-export.component.mjs +98 -68
- package/esm2020/lib/import-export/import-export.module.mjs +6 -3
- package/esm2020/lib/import-export/shared/import.utils.mjs +3 -2
- package/esm2020/lib/layer/index.mjs +2 -1
- package/esm2020/lib/layer/layer-legend/layer-legend.component.mjs +28 -22
- package/esm2020/lib/layer/layer-list/layer-list.component.mjs +47 -28
- package/esm2020/lib/layer/layer-list-tool/layer-list-tool.component.mjs +3 -3
- package/esm2020/lib/layer/layer.module.mjs +19 -7
- package/esm2020/lib/layer/shared/layers/layer.interface.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/vector-layer.mjs +4 -1
- package/esm2020/lib/layer/style-modal/index.mjs +2 -0
- package/esm2020/lib/layer/style-modal/style-modal.component.mjs +288 -0
- package/esm2020/lib/map/geolocate-button/geolocate-button.component.mjs +21 -18
- package/esm2020/lib/map/shared/map.interface.mjs +1 -1
- package/esm2020/lib/query/shared/query.service.mjs +4 -1
- package/esm2020/lib/search/search-bar/search-bar.component.mjs +16 -14
- package/esm2020/lib/search/shared/search.utils.mjs +13 -1
- package/esm2020/lib/workspace/shared/edition-workspace.mjs +8 -6
- package/esm2020/lib/workspace/shared/edition-workspace.service.mjs +9 -4
- package/fesm2015/igo2-geo.mjs +3784 -3199
- package/fesm2015/igo2-geo.mjs.map +1 -1
- package/fesm2020/igo2-geo.mjs +3726 -3169
- package/fesm2020/igo2-geo.mjs.map +1 -1
- package/lib/draw/draw/draw-popup.component.d.ts +0 -3
- package/lib/draw/draw/draw.component.d.ts +71 -50
- package/lib/draw/draw/draw.module.d.ts +13 -10
- package/lib/draw/shared/draw-style.service.d.ts +7 -1
- package/lib/draw/shared/draw.interface.d.ts +4 -0
- package/lib/feature/feature-details/feature-details.component.d.ts +4 -0
- package/lib/feature/shared/store.d.ts +1 -0
- package/lib/import-export/import-export/import-export.component.d.ts +2 -0
- package/lib/import-export/import-export.module.d.ts +1 -1
- package/lib/layer/index.d.ts +1 -0
- package/lib/layer/layer-list/layer-list.component.d.ts +3 -4
- package/lib/layer/layer.module.d.ts +20 -18
- package/lib/layer/shared/layers/layer.interface.d.ts +1 -0
- package/lib/layer/shared/layers/vector-layer.d.ts +2 -1
- package/lib/layer/style-modal/index.d.ts +1 -0
- package/lib/layer/style-modal/style-modal.component.d.ts +42 -0
- package/lib/map/geolocate-button/geolocate-button.component.d.ts +3 -1
- package/lib/map/shared/map.interface.d.ts +2 -1
- package/package.json +8 -8
|
@@ -65,22 +65,15 @@ export class CapabilitiesService {
|
|
|
65
65
|
}
|
|
66
66
|
getArcgisOptions(baseOptions) {
|
|
67
67
|
const baseUrl = baseOptions.url + '/' + baseOptions.layer + '?f=json';
|
|
68
|
-
const modifiedUrl = baseOptions.url.replace('FeatureServer', 'MapServer');
|
|
69
|
-
const legendUrl = modifiedUrl + '/legend?f=json';
|
|
70
68
|
const serviceCapabilities = this.getCapabilities('arcgisrest', baseOptions.url);
|
|
71
69
|
const arcgisOptions = this.http.get(baseUrl);
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
return of(err);
|
|
75
|
-
}));
|
|
76
|
-
return forkJoin([arcgisOptions, legend, serviceCapabilities]).pipe(map((res) => {
|
|
77
|
-
return this.parseArcgisOptions(baseOptions, res[0], res[1], res[2]);
|
|
70
|
+
return forkJoin([arcgisOptions, serviceCapabilities]).pipe(map((res) => {
|
|
71
|
+
return this.parseArcgisOptions(baseOptions, res[0], res[1]);
|
|
78
72
|
}));
|
|
79
73
|
}
|
|
80
74
|
getImageArcgisOptions(baseOptions) {
|
|
81
75
|
const baseUrl = baseOptions.url + '/' + baseOptions.layer + '?f=json';
|
|
82
|
-
const
|
|
83
|
-
const legendUrl = modifiedUrl + '/legend?f=json';
|
|
76
|
+
const legendUrl = baseOptions.url + '/legend?f=json';
|
|
84
77
|
const serviceCapabilities = this.getCapabilities('imagearcgisrest', baseOptions.url);
|
|
85
78
|
const arcgisOptions = this.http.get(baseUrl);
|
|
86
79
|
const legend = this.http.get(legendUrl).pipe(map((res) => res), catchError((err) => {
|
|
@@ -250,13 +243,10 @@ export class CapabilitiesService {
|
|
|
250
243
|
});
|
|
251
244
|
return ObjectUtils.mergeDeep(options, baseOptions);
|
|
252
245
|
}
|
|
253
|
-
parseArcgisOptions(baseOptions, arcgisOptions,
|
|
246
|
+
parseArcgisOptions(baseOptions, arcgisOptions, serviceCapabilities) {
|
|
254
247
|
const title = arcgisOptions.name;
|
|
255
248
|
let legendInfo;
|
|
256
|
-
if (
|
|
257
|
-
legendInfo = legend.layers.find(x => x.layerName === title);
|
|
258
|
-
}
|
|
259
|
-
else if (arcgisOptions.drawingInfo?.renderer) {
|
|
249
|
+
if (arcgisOptions.drawingInfo?.renderer) {
|
|
260
250
|
legendInfo = arcgisOptions.drawingInfo.renderer;
|
|
261
251
|
}
|
|
262
252
|
else {
|
|
@@ -412,6 +402,21 @@ export class CapabilitiesService {
|
|
|
412
402
|
}
|
|
413
403
|
CapabilitiesService.ɵfac = function CapabilitiesService_Factory(t) { return new (t || CapabilitiesService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.MapService)); };
|
|
414
404
|
CapabilitiesService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: CapabilitiesService, factory: CapabilitiesService.ɵfac, providedIn: 'root' });
|
|
405
|
+
__decorate([
|
|
406
|
+
Cacheable({
|
|
407
|
+
maxCacheCount: 20
|
|
408
|
+
})
|
|
409
|
+
], CapabilitiesService.prototype, "getArcgisOptions", null);
|
|
410
|
+
__decorate([
|
|
411
|
+
Cacheable({
|
|
412
|
+
maxCacheCount: 20
|
|
413
|
+
})
|
|
414
|
+
], CapabilitiesService.prototype, "getImageArcgisOptions", null);
|
|
415
|
+
__decorate([
|
|
416
|
+
Cacheable({
|
|
417
|
+
maxCacheCount: 20
|
|
418
|
+
})
|
|
419
|
+
], CapabilitiesService.prototype, "getTileArcgisOptions", null);
|
|
415
420
|
__decorate([
|
|
416
421
|
Cacheable({
|
|
417
422
|
maxCacheCount: 20
|
|
@@ -422,5 +427,5 @@ __decorate([
|
|
|
422
427
|
args: [{
|
|
423
428
|
providedIn: 'root'
|
|
424
429
|
}]
|
|
425
|
-
}], function () { return [{ type: i1.HttpClient }, { type: i2.MapService }]; }, { getCapabilities: [] }); })();
|
|
426
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwYWJpbGl0aWVzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kYXRhc291cmNlL3NoYXJlZC9jYXBhYmlsaXRpZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBRUwsVUFBVSxFQUNYLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFjLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXpDLE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVELE9BQU8sYUFBYSxNQUFNLHdCQUF3QixDQUFDO0FBRW5ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFMUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbkUsT0FBTyxFQUNMLFdBQVcsRUFDWCxtQkFBbUIsRUFDcEIsTUFBTSxnQ0FBZ0MsQ0FBQztBQWN4QyxPQUFPLEVBQ0wsY0FBYyxFQUNkLGVBQWUsRUFDaEIsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5QyxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQzs7OztBQUVsQyxNQUFNLENBQU4sSUFBWSxnQkFNWDtBQU5ELFdBQVksZ0JBQWdCO0lBQzFCLCtCQUFXLENBQUE7SUFDWCxpQ0FB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REQ7dUZBaExVLG1CQUFtQjtjQUgvQixVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7c0ZBZ0lDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBIdHRwQ2xpZW50LFxuICBIdHRwUGFyYW1zXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZvcmtKb2luLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2FjaGVhYmxlIH0gZnJvbSAndHMtY2FjaGVhYmxlJztcblxuaW1wb3J0IHsgV01TQ2FwYWJpbGl0aWVzLCBXTVRTQ2FwYWJpbGl0aWVzLCBFc3JpSlNPTiB9IGZyb20gJ29sL2Zvcm1hdCc7XG5pbXBvcnQgeyBvcHRpb25zRnJvbUNhcGFiaWxpdGllcyB9IGZyb20gJ29sL3NvdXJjZS9XTVRTLmpzJztcbmltcG9ydCBvbEF0dHJpYnV0aW9uIGZyb20gJ29sL2NvbnRyb2wvQXR0cmlidXRpb24nO1xuXG5pbXBvcnQgeyBPYmplY3RVdGlscyB9IGZyb20gJ0BpZ28yL3V0aWxzJztcbmltcG9ydCB7IE1hcFNlcnZpY2UgfSBmcm9tICcuLi8uLi9tYXAvc2hhcmVkL21hcC5zZXJ2aWNlJztcbmltcG9ydCB7IGdldFJlc29sdXRpb25Gcm9tU2NhbGUgfSBmcm9tICcuLi8uLi9tYXAvc2hhcmVkL21hcC51dGlscyc7XG5pbXBvcnQgeyBFc3JpU3R5bGVHZW5lcmF0b3IgfSBmcm9tICcuLi91dGlscy9lc3JpLXN0eWxlLWdlbmVyYXRvcic7XG5pbXBvcnQge1xuICBRdWVyeUZvcm1hdCxcbiAgUXVlcnlGb3JtYXRNaW1lVHlwZVxufSBmcm9tICcuLi8uLi9xdWVyeS9zaGFyZWQvcXVlcnkuZW51bXMnO1xuXG5pbXBvcnQge1xuICBXTVRTRGF0YVNvdXJjZU9wdGlvbnMsXG4gIFdNU0RhdGFTb3VyY2VPcHRpb25zLFxuICBDYXJ0b0RhdGFTb3VyY2VPcHRpb25zLFxuICBBcmNHSVNSZXN0RGF0YVNvdXJjZU9wdGlvbnMsXG4gIFRpbGVBcmNHSVNSZXN0RGF0YVNvdXJjZU9wdGlvbnMsXG4gIEFyY0dJU1Jlc3RJbWFnZURhdGFTb3VyY2VPcHRpb25zXG59IGZyb20gJy4vZGF0YXNvdXJjZXMnO1xuaW1wb3J0IHtcbiAgTGVnZW5kT3B0aW9ucyxcbiAgSXRlbVN0eWxlT3B0aW9uc1xufSBmcm9tICcuLi8uLi9sYXllci9zaGFyZWQvbGF5ZXJzL2xheWVyLmludGVyZmFjZSc7XG5pbXBvcnQge1xuICBUaW1lRmlsdGVyVHlwZSxcbiAgVGltZUZpbHRlclN0eWxlXG59IGZyb20gJy4uLy4uL2ZpbHRlci9zaGFyZWQvdGltZS1maWx0ZXIuZW51bSc7XG5pbXBvcnQgKiBhcyBvbHByb2ogZnJvbSAnb2wvcHJvaic7XG5cbmV4cG9ydCBlbnVtIFR5cGVDYXBhYmlsaXRpZXMge1xuICB3bXMgPSAnd21zJyxcbiAgd210cyA9ICd3bXRzJyxcbiAgYXJjZ2lzcmVzdCA9ICdlc3JpSlNPTicsXG4gIGltYWdlYXJjZ2lzcmVzdCA9ICdlc3JpSlNPTicsXG4gIHRpbGVhcmNnaXNyZXN0ID0gJ2VzcmlKU09OJ1xufVxuXG5leHBvcnQgdHlwZSBUeXBlQ2FwYWJpbGl0aWVzU3RyaW5ncyA9IGtleW9mIHR5cGVvZiBUeXBlQ2FwYWJpbGl0aWVzO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDYXBhYmlsaXRpZXNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBwYXJzZXJzID0ge1xuICAgIHdtczogbmV3IFdNU0NhcGFiaWxpdGllcygpLFxuICAgIHdtdHM6IG5ldyBXTVRTQ2FwYWJpbGl0aWVzKCksXG4gICAgZXNyaUpTT046IG5ldyBFc3JpSlNPTigpXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIG1hcFNlcnZpY2U6IE1hcFNlcnZpY2UpIHt9XG5cbiAgZ2V0V01TT3B0aW9ucyhcbiAgICBiYXNlT3B0aW9uczogV01TRGF0YVNvdXJjZU9wdGlvbnNcbiAgKTogT2JzZXJ2YWJsZTxXTVNEYXRhU291cmNlT3B0aW9ucz4ge1xuICAgIGNvbnN0IHVybCA9IGJhc2VPcHRpb25zLnVybDtcbiAgICBjb25zdCB2ZXJzaW9uID0gKGJhc2VPcHRpb25zLnBhcmFtcyBhcyBhbnkpLlZFUlNJT047XG5cbiAgICByZXR1cm4gdGhpcy5nZXRDYXBhYmlsaXRpZXMoJ3dtcycsIHVybCwgdmVyc2lvbikucGlwZShcbiAgICAgIG1hcCgoY2FwYWJpbGl0aWVzOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIGNhcGFiaWxpdGllc1xuICAgICAgICAgID8gdGhpcy5wYXJzZVdNU09wdGlvbnMoYmFzZU9wdGlvbnMsIGNhcGFiaWxpdGllcylcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGdldFdNVFNPcHRpb25zKFxuICAgIGJhc2VPcHRpb25zOiBXTVRTRGF0YVNvdXJjZU9wdGlvbnNcbiAgKTogT2JzZXJ2YWJsZTxXTVRTRGF0YVNvdXJjZU9wdGlvbnM+IHtcbiAgICBjb25zdCB1cmwgPSBiYXNlT3B0aW9ucy51cmw7XG4gICAgY29uc3QgdmVyc2lvbiA9IGJhc2VPcHRpb25zLnZlcnNpb247XG5cbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5nZXRDYXBhYmlsaXRpZXMoJ3dtdHMnLCB1cmwsIHZlcnNpb24pLnBpcGUoXG4gICAgICBtYXAoKGNhcGFiaWxpdGllczogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiBjYXBhYmlsaXRpZXNcbiAgICAgICAgICA/IHRoaXMucGFyc2VXTVRTT3B0aW9ucyhiYXNlT3B0aW9ucywgY2FwYWJpbGl0aWVzKVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgfSlcbiAgICApO1xuICAgIHJldHVybiBvcHRpb25zO1xuICB9XG5cbiAgZ2V0Q2FydG9PcHRpb25zKFxuICAgIGJhc2VPcHRpb25zOiBDYXJ0b0RhdGFTb3VyY2VPcHRpb25zXG4gICk6IE9ic2VydmFibGU8Q2FydG9EYXRhU291cmNlT3B0aW9ucz4ge1xuICAgIGNvbnN0IGJhc2VVcmwgPVxuICAgICAgJ2h0dHBzOi8vJyArXG4gICAgICBiYXNlT3B0aW9ucy5hY2NvdW50ICtcbiAgICAgICcuY2FydG8uY29tL2FwaS92Mi92aXovJyArXG4gICAgICBiYXNlT3B0aW9ucy5tYXBJZCArXG4gICAgICAnL3Zpei5qc29uJztcblxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5qc29ucChiYXNlVXJsLCAnY2FsbGJhY2snKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoY2FydG9PcHRpb25zOiBhbnkpID0+XG4gICAgICAgICAgdGhpcy5wYXJzZUNhcnRvT3B0aW9ucyhiYXNlT3B0aW9ucywgY2FydG9PcHRpb25zKVxuICAgICAgICApXG4gICAgICApO1xuICB9XG5cbiAgZ2V0QXJjZ2lzT3B0aW9ucyhcbiAgICBiYXNlT3B0aW9uczogQXJjR0lTUmVzdERhdGFTb3VyY2VPcHRpb25zXG4gICk6IE9ic2VydmFibGU8QXJjR0lTUmVzdERhdGFTb3VyY2VPcHRpb25zPiB7XG4gICAgY29uc3QgYmFzZVVybCA9IGJhc2VPcHRpb25zLnVybCArICcvJyArIGJhc2VPcHRpb25zLmxheWVyICsgJz9mPWpzb24nO1xuICAgIGNvbnN0IG1vZGlmaWVkVXJsID0gYmFzZU9wdGlvbnMudXJsLnJlcGxhY2UoJ0ZlYXR1cmVTZXJ2ZXInLCAnTWFwU2VydmVyJyk7XG4gICAgY29uc3QgbGVnZW5kVXJsID0gbW9kaWZpZWRVcmwgKyAnL2xlZ2VuZD9mPWpzb24nO1xuICAgIGNvbnN0IHNlcnZpY2VDYXBhYmlsaXRpZXMgPSB0aGlzLmdldENhcGFiaWxpdGllcygnYXJjZ2lzcmVzdCcsIGJhc2VPcHRpb25zLnVybCk7XG4gICAgY29uc3QgYXJjZ2lzT3B0aW9ucyA9IHRoaXMuaHR0cC5nZXQoYmFzZVVybCk7XG4gICAgY29uc3QgbGVnZW5kID0gdGhpcy5odHRwLmdldChsZWdlbmRVcmwpLnBpcGUoXG4gICAgICBtYXAoKHJlczogYW55KSA9PiByZXMpLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdObyBsZWdlbmQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgRmVhdHVyZSBTZXJ2aWNlJyk7XG4gICAgICAgIHJldHVybiBvZihlcnIpO1xuICAgICAgfSlcbiAgICApO1xuICAgIHJldHVybiBmb3JrSm9pbihbYXJjZ2lzT3B0aW9ucywgbGVnZW5kLCBzZXJ2aWNlQ2FwYWJpbGl0aWVzXSkucGlwZShcbiAgICAgIG1hcCgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VBcmNnaXNPcHRpb25zKGJhc2VPcHRpb25zLCByZXNbMF0sIHJlc1sxXSwgcmVzWzJdKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGdldEltYWdlQXJjZ2lzT3B0aW9ucyhcbiAgICBiYXNlT3B0aW9uczogQXJjR0lTUmVzdEltYWdlRGF0YVNvdXJjZU9wdGlvbnMgfCBUaWxlQXJjR0lTUmVzdERhdGFTb3VyY2VPcHRpb25zXG4gICk6IE9ic2VydmFibGU8QXJjR0lTUmVzdEltYWdlRGF0YVNvdXJjZU9wdGlvbnMgfCBUaWxlQXJjR0lTUmVzdERhdGFTb3VyY2VPcHRpb25zPiB7XG4gICAgY29uc3QgYmFzZVVybCA9IGJhc2VPcHRpb25zLnVybCArICcvJyArIGJhc2VPcHRpb25zLmxheWVyICsgJz9mPWpzb24nO1xuICAgIGNvbnN0IG1vZGlmaWVkVXJsID0gYmFzZU9wdGlvbnMudXJsLnJlcGxhY2UoJ0ZlYXR1cmVTZXJ2ZXInLCAnTWFwU2VydmVyJyk7XG4gICAgY29uc3QgbGVnZW5kVXJsID0gbW9kaWZpZWRVcmwgKyAnL2xlZ2VuZD9mPWpzb24nO1xuICAgIGNvbnN0IHNlcnZpY2VDYXBhYmlsaXRpZXMgPSB0aGlzLmdldENhcGFiaWxpdGllcygnaW1hZ2VhcmNnaXNyZXN0JywgYmFzZU9wdGlvbnMudXJsKTtcbiAgICBjb25zdCBhcmNnaXNPcHRpb25zID0gdGhpcy5odHRwLmdldChiYXNlVXJsKTtcbiAgICBjb25zdCBsZWdlbmQgPSB0aGlzLmh0dHAuZ2V0KGxlZ2VuZFVybCkucGlwZShcbiAgICAgIG1hcCgocmVzOiBhbnkpID0+IHJlcyksXG4gICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ05vIGxlZ2VuZCBhc3NvY2lhdGVkIHdpdGggdGhpcyBJbWFnZSBTZXJ2aWNlJyk7XG4gICAgICAgIHJldHVybiBvZihlcnIpO1xuICAgICAgfSlcbiAgICApO1xuICAgIHJldHVybiBmb3JrSm9pbihbYXJjZ2lzT3B0aW9ucywgbGVnZW5kLCBzZXJ2aWNlQ2FwYWJpbGl0aWVzXSkucGlwZShcbiAgICAgIG1hcCgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VUaWxlT3JJbWFnZUFyY2dpc09wdGlvbnMoYmFzZU9wdGlvbnMsIHJlc1swXSwgcmVzWzFdLCByZXNbMl0pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZ2V0VGlsZUFyY2dpc09wdGlvbnMoXG4gICAgYmFzZU9wdGlvbnM6IFRpbGVBcmNHSVNSZXN0RGF0YVNvdXJjZU9wdGlvbnNcbiAgKTogT2JzZXJ2YWJsZTxBcmNHSVNSZXN0SW1hZ2VEYXRhU291cmNlT3B0aW9ucyB8IFRpbGVBcmNHSVNSZXN0RGF0YVNvdXJjZU9wdGlvbnM+IHtcbiAgICBjb25zdCBiYXNlVXJsID0gYmFzZU9wdGlvbnMudXJsICsgJy8nICsgYmFzZU9wdGlvbnMubGF5ZXIgKyAnP2Y9anNvbic7XG4gICAgY29uc3QgbGVnZW5kVXJsID0gYmFzZU9wdGlvbnMudXJsICsgJy9sZWdlbmQ/Zj1qc29uJztcbiAgICBjb25zdCBzZXJ2aWNlQ2FwYWJpbGl0aWVzID0gdGhpcy5nZXRDYXBhYmlsaXRpZXMoJ3RpbGVhcmNnaXNyZXN0JywgYmFzZU9wdGlvbnMudXJsKTtcbiAgICBjb25zdCBhcmNnaXNPcHRpb25zID0gdGhpcy5odHRwLmdldChiYXNlVXJsKTtcbiAgICBjb25zdCBsZWdlbmRJbmZvID0gdGhpcy5odHRwLmdldChsZWdlbmRVcmwpLnBpcGUoXG4gICAgICBtYXAoKHJlczogYW55KSA9PiByZXMpLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdObyBsZWdlbmQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgVGlsZSBTZXJ2aWNlJyk7XG4gICAgICAgIHJldHVybiBvZihlcnIpO1xuICAgICAgfSlcbiAgICApO1xuICAgIHJldHVybiBmb3JrSm9pbihbYXJjZ2lzT3B0aW9ucywgbGVnZW5kSW5mbywgc2VydmljZUNhcGFiaWxpdGllc10pLnBpcGUoXG4gICAgICBtYXAoKHJlczogYW55KSA9PlxuICAgICAgICB0aGlzLnBhcnNlVGlsZU9ySW1hZ2VBcmNnaXNPcHRpb25zKGJhc2VPcHRpb25zLCByZXNbMF0sIHJlc1sxXSwgcmVzWzJdKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBAQ2FjaGVhYmxlKHtcbiAgICBtYXhDYWNoZUNvdW50OiAyMFxuICB9KVxuICBnZXRDYXBhYmlsaXRpZXMoXG4gICAgc2VydmljZTogVHlwZUNhcGFiaWxpdGllc1N0cmluZ3MsXG4gICAgYmFzZVVybDogc3RyaW5nLFxuICAgIHZlcnNpb24/OiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcyh7XG4gICAgICBmcm9tT2JqZWN0OiB7XG4gICAgICAgIHJlcXVlc3Q6ICdHZXRDYXBhYmlsaXRpZXMnLFxuICAgICAgICBzZXJ2aWNlOiBzZXJ2aWNlLnRvVXBwZXJDYXNlKCksXG4gICAgICAgIHZlcnNpb246IHZlcnNpb24gfHwgJzEuMy4wJyxcbiAgICAgICAgX2k6ICd0cnVlJ1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbGV0IHJlcXVlc3Q7XG4gICAgaWYgKFR5cGVDYXBhYmlsaXRpZXNbc2VydmljZV0gPT09ICdlc3JpSlNPTicpIHtcbiAgICAgIHJlcXVlc3QgPSB0aGlzLmh0dHAuZ2V0KGJhc2VVcmwgKyAnP2Y9anNvbicpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXF1ZXN0ID0gdGhpcy5odHRwLmdldChiYXNlVXJsLCB7XG4gICAgICAgIHBhcmFtcyxcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCdcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXF1ZXN0LnBpcGUoXG4gICAgICBtYXAoKHJlcykgPT4ge1xuICAgICAgICBpZiAoVHlwZUNhcGFiaWxpdGllc1tzZXJ2aWNlXSA9PT0gJ2VzcmlKU09OJykge1xuICAgICAgICAgIHJldHVybiByZXMgYXMgb2JqZWN0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICBTdHJpbmcocmVzKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdzZXJ2aWNlZXhjZXB0aW9uJykgJiZcbiAgICAgICAgICBTdHJpbmcocmVzKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdhY2Nlc3MgZGVuaWVkJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhyb3cge1xuICAgICAgICAgICAgZXJyb3I6IHtcbiAgICAgICAgICAgICAgbWVzc2FnZTogJ1NlcnZpY2UgZXJyb3IgZ2V0Q2FwYWJpbGl0aWVzOiBBY2Nlc3MgaXMgZGVuaWVkJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2Vyc1tzZXJ2aWNlXS5yZWFkKHJlcyk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcigoZSkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGUuZXJyb3IgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgZS5lcnJvci5jYXVnaHQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHBhcnNlV01TT3B0aW9ucyhcbiAgICBiYXNlT3B0aW9uczogV01TRGF0YVNvdXJjZU9wdGlvbnMsXG4gICAgY2FwYWJpbGl0aWVzOiBhbnlcbiAgKTogV01TRGF0YVNvdXJjZU9wdGlvbnMge1xuICAgIGNvbnN0IGxheWVycyA9IChiYXNlT3B0aW9ucy5wYXJhbXMgYXMgYW55KS5MQVlFUlM7XG4gICAgY29uc3QgbGF5ZXIgPSB0aGlzLmZpbmREYXRhU291cmNlSW5DYXBhYmlsaXRpZXMoXG4gICAgICBjYXBhYmlsaXRpZXMuQ2FwYWJpbGl0eS5MYXllcixcbiAgICAgIGxheWVyc1xuICAgICk7XG5cbiAgICBpZiAoIWxheWVyKSB7XG4gICAgICB0aHJvdyB7XG4gICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgbWVzc2FnZTogJ0xheWVyIG5vdCBmb3VuZCdcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgbWV0YWRhdGEgPSBsYXllci5EYXRhVVJMID8gbGF5ZXIuRGF0YVVSTFswXSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBhYnN0cmFjdCA9IGxheWVyLkFic3RyYWN0ID8gbGF5ZXIuQWJzdHJhY3QgOiB1bmRlZmluZWQ7XG4gICAgY29uc3Qga2V5d29yZExpc3QgPSBsYXllci5LZXl3b3JkTGlzdCA/IGxheWVyLktleXdvcmRMaXN0IDogdW5kZWZpbmVkO1xuICAgIGxldCBxdWVyeWFibGUgPSBsYXllci5xdWVyeWFibGU7XG4gICAgY29uc3QgdGltZUZpbHRlciA9IHRoaXMuZ2V0VGltZUZpbHRlcihsYXllcik7XG4gICAgY29uc3QgdGltZUZpbHRlcmFibGUgPSB0aW1lRmlsdGVyICYmIE9iamVjdC5rZXlzKHRpbWVGaWx0ZXIpLmxlbmd0aCA+IDA7XG4gICAgY29uc3QgbGVnZW5kT3B0aW9ucyA9IGxheWVyLlN0eWxlID8gdGhpcy5nZXRTdHlsZShsYXllci5TdHlsZSkgOiB1bmRlZmluZWQ7XG4gICAgbGV0IGlzRXh0ZW50SW5HZW9ncmFwaGljID0gdHJ1ZTtcbiAgICBpZiAobGF5ZXIuRVhfR2VvZ3JhcGhpY0JvdW5kaW5nQm94KSB7XG4gICAgICBsYXllci5FWF9HZW9ncmFwaGljQm91bmRpbmdCb3guZm9yRWFjaCgoY29vcmQsIGluZGV4KSA9PiB7XG4gICAgICAgIGlmIChpbmRleCA8IDIgJiYgKGNvb3JkID4gMTgwIHx8IGNvb3JkIDwgLTE4MCkpIHtcbiAgICAgICAgICBpc0V4dGVudEluR2VvZ3JhcGhpYyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbmRleCA+PSAyICYmIChjb29yZCA+IDkwIHx8IGNvb3JkIDwgLTkwKSkge1xuICAgICAgICAgIGlzRXh0ZW50SW5HZW9ncmFwaGljID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpc0V4dGVudEluR2VvZ3JhcGhpYyA9IGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGV4dGVudCA9IGlzRXh0ZW50SW5HZW9ncmFwaGljID9cbiAgICAgICAgb2xwcm9qLnRyYW5zZm9ybUV4dGVudChsYXllci5FWF9HZW9ncmFwaGljQm91bmRpbmdCb3gsICdFUFNHOjQzMjYnLCB0aGlzLm1hcFNlcnZpY2UuZ2V0TWFwKCkucHJvamVjdGlvbikgOlxuICAgICAgICB1bmRlZmluZWQ7XG5cbiAgICBsZXQgcXVlcnlGb3JtYXQ6IFF1ZXJ5Rm9ybWF0O1xuICAgIGNvbnN0IHF1ZXJ5Rm9ybWF0TWltZVR5cGVQcmlvcml0eSA9IFtcbiAgICAgIFF1ZXJ5Rm9ybWF0TWltZVR5cGUuR0VPSlNPTixcbiAgICAgIFF1ZXJ5Rm9ybWF0TWltZVR5cGUuR0VPSlNPTjIsXG4gICAgICBRdWVyeUZvcm1hdE1pbWVUeXBlLkdNTDMsXG4gICAgICBRdWVyeUZvcm1hdE1pbWVUeXBlLkdNTDIsXG4gICAgICBRdWVyeUZvcm1hdE1pbWVUeXBlLkpTT04sXG4gICAgICBRdWVyeUZvcm1hdE1pbWVUeXBlLkhUTUxcbiAgICBdO1xuXG4gICAgZm9yIChjb25zdCBtaW1lVHlwZSBvZiBxdWVyeUZvcm1hdE1pbWVUeXBlUHJpb3JpdHkpIHtcbiAgICAgIGlmIChcbiAgICAgICAgY2FwYWJpbGl0aWVzLkNhcGFiaWxpdHkuUmVxdWVzdC5HZXRGZWF0dXJlSW5mby5Gb3JtYXQuaW5kZXhPZihcbiAgICAgICAgICBtaW1lVHlwZVxuICAgICAgICApICE9PSAtMVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IGtleUVudW0gPSBPYmplY3Qua2V5cyhRdWVyeUZvcm1hdE1pbWVUeXBlKS5maW5kKFxuICAgICAgICAgIChrZXkpID0+IFF1ZXJ5Rm9ybWF0TWltZVR5cGVba2V5XSA9PT0gbWltZVR5cGVcbiAgICAgICAgKTtcbiAgICAgICAgcXVlcnlGb3JtYXQgPSBRdWVyeUZvcm1hdFtrZXlFbnVtXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghcXVlcnlGb3JtYXQpIHtcbiAgICAgIHF1ZXJ5YWJsZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbnM6IFdNU0RhdGFTb3VyY2VPcHRpb25zID0gT2JqZWN0VXRpbHMucmVtb3ZlVW5kZWZpbmVkKHtcbiAgICAgIF9sYXllck9wdGlvbnNGcm9tU291cmNlOiB7XG4gICAgICAgIHRpdGxlOiBsYXllci5UaXRsZSxcbiAgICAgICAgbWF4UmVzb2x1dGlvbjogZ2V0UmVzb2x1dGlvbkZyb21TY2FsZShsYXllci5NYXhTY2FsZURlbm9taW5hdG9yKSxcbiAgICAgICAgbWluUmVzb2x1dGlvbjogZ2V0UmVzb2x1dGlvbkZyb21TY2FsZShsYXllci5NaW5TY2FsZURlbm9taW5hdG9yKSxcbiAgICAgICAgZXh0ZW50LFxuICAgICAgICBtZXRhZGF0YToge1xuICAgICAgICAgIHVybDogbWV0YWRhdGEgPyBtZXRhZGF0YS5PbmxpbmVSZXNvdXJjZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBleHRlcm46IG1ldGFkYXRhID8gdHJ1ZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBhYnN0cmFjdCxcbiAgICAgICAgICBrZXl3b3JkTGlzdFxuICAgICAgICB9LFxuICAgICAgICBsZWdlbmRPcHRpb25zXG4gICAgICB9LFxuICAgICAgcXVlcnlhYmxlLFxuICAgICAgcXVlcnlGb3JtYXQsXG4gICAgICB0aW1lRmlsdGVyOiB0aW1lRmlsdGVyYWJsZSA/IHRpbWVGaWx0ZXIgOiB1bmRlZmluZWQsXG4gICAgICB0aW1lRmlsdGVyYWJsZTogdGltZUZpbHRlcmFibGUgPyB0cnVlIDogdW5kZWZpbmVkLFxuICAgICAgbWluRGF0ZTogdGltZUZpbHRlcmFibGUgPyB0aW1lRmlsdGVyLm1pbiA6IHVuZGVmaW5lZCxcbiAgICAgIG1heERhdGU6IHRpbWVGaWx0ZXJhYmxlID8gdGltZUZpbHRlci5tYXggOiB1bmRlZmluZWQsXG4gICAgICBzdGVwRGF0ZTogdGltZUZpbHRlcmFibGUgPyB0aW1lRmlsdGVyLnN0ZXAgOiB1bmRlZmluZWRcbiAgICB9KTtcblxuICAgIHJldHVybiBPYmplY3RVdGlscy5tZXJnZURlZXAob3B0aW9ucywgYmFzZU9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZVdNVFNPcHRpb25zKFxuICAgIGJhc2VPcHRpb25zOiBXTVRTRGF0YVNvdXJjZU9wdGlvbnMsXG4gICAgY2FwYWJpbGl0aWVzOiBhbnlcbiAgKTogV01UU0RhdGFTb3VyY2VPcHRpb25zIHtcbiAgICAvLyBQdXQgVGl0bGUgc291cmNlIGluIF9sYXllck9wdGlvbnNGcm9tU291cmNlLiAoRm9yIHNvdXJjZSAmIGNhdGFsb2cgaW4gX2xheWVyT3B0aW9uc0Zyb21Tb3VyY2UsIGlmIG5vdCBhbHJlYWR5IG9uIGNvbmZpZylcbiAgICBjb25zdCBsYXllciA9IGNhcGFiaWxpdGllcy5Db250ZW50cy5MYXllci5maW5kKFxuICAgICAgKGVsKSA9PiBlbC5JZGVudGlmaWVyID09PSBiYXNlT3B0aW9ucy5sYXllclxuICAgICk7XG5cbiAgICBjb25zdCBvcHRpb25zID0gb3B0aW9uc0Zyb21DYXBhYmlsaXRpZXMoY2FwYWJpbGl0aWVzLCBiYXNlT3B0aW9ucyk7XG5cbiAgICBjb25zdCBvdXB1dE9wdGlvbnMgPSBPYmplY3QuYXNzaWduKG9wdGlvbnMsIGJhc2VPcHRpb25zKTtcbiAgICBjb25zdCBzb3VyY2VPcHRpb25zID0gT2JqZWN0VXRpbHMucmVtb3ZlVW5kZWZpbmVkKHtcbiAgICAgIF9sYXllck9wdGlvbnNGcm9tU291cmNlOiB7XG4gICAgICAgIHRpdGxlOiBsYXllci5UaXRsZVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIE9iamVjdFV0aWxzLm1lcmdlRGVlcChzb3VyY2VPcHRpb25zLCBvdXB1dE9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZUNhcnRvT3B0aW9ucyhcbiAgICBiYXNlT3B0aW9uczogQ2FydG9EYXRhU291cmNlT3B0aW9ucyxcbiAgICBjYXJ0b09wdGlvbnM6IGFueVxuICApOiBDYXJ0b0RhdGFTb3VyY2VPcHRpb25zIHtcbiAgICBjb25zdCBsYXllcnMgPSBbXTtcbiAgICBjb25zdCBwYXJhbXMgPSBjYXJ0b09wdGlvbnMubGF5ZXJzWzFdLm9wdGlvbnMubGF5ZXJfZGVmaW5pdGlvbjtcbiAgICBwYXJhbXMubGF5ZXJzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgIGxheWVycy5wdXNoKHtcbiAgICAgICAgdHlwZTogZWxlbWVudC50eXBlLnRvTG93ZXJDYXNlKCksXG4gICAgICAgIG9wdGlvbnM6IGVsZW1lbnQub3B0aW9ucyxcbiAgICAgICAgbGVnZW5kOiBlbGVtZW50LmxlZ2VuZFxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgY29uc3Qgb3B0aW9ucyA9IE9iamVjdFV0aWxzLnJlbW92ZVVuZGVmaW5lZCh7XG4gICAgICBjb25maWc6IHtcbiAgICAgICAgdmVyc2lvbjogcGFyYW1zLnZlcnNpb24sXG4gICAgICAgIGxheWVyc1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBPYmplY3RVdGlscy5tZXJnZURlZXAob3B0aW9ucywgYmFzZU9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZUFyY2dpc09wdGlvbnMoXG4gICAgYmFzZU9wdGlvbnM6IEFyY0dJU1Jlc3REYXRhU291cmNlT3B0aW9ucyxcbiAgICBhcmNnaXNPcHRpb25zOiBhbnksXG4gICAgbGVnZW5kOiBhbnksXG4gICAgc2VydmljZUNhcGFiaWxpdGllczogYW55LFxuICApOiBBcmNHSVNSZXN0RGF0YVNvdXJjZU9wdGlvbnMge1xuICAgIGNvbnN0IHRpdGxlID0gYXJjZ2lzT3B0aW9ucy5uYW1lO1xuICAgIGxldCBsZWdlbmRJbmZvOiBhbnk7XG5cbiAgICBpZiAobGVnZW5kLmxheWVycykge1xuICAgICAgbGVnZW5kSW5mbyA9IGxlZ2VuZC5sYXllcnMuZmluZCh4ID0+IHgubGF5ZXJOYW1lID09PSB0aXRsZSk7XG4gICAgfSBlbHNlIGlmIChhcmNnaXNPcHRpb25zLmRyYXdpbmdJbmZvPy5yZW5kZXJlcikge1xuICAgICAgbGVnZW5kSW5mbyA9IGFyY2dpc09wdGlvbnMuZHJhd2luZ0luZm8ucmVuZGVyZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxlZ2VuZEluZm8gPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbGV0IHN0eWxlO1xuICAgIGlmIChhcmNnaXNPcHRpb25zLmRyYXdpbmdJbmZvKSB7XG4gICAgICBjb25zdCBzdHlsZUdlbmVyYXRvciA9IG5ldyBFc3JpU3R5bGVHZW5lcmF0b3IoKTtcbiAgICAgIGNvbnN0IHVuaXRzID0gYXJjZ2lzT3B0aW9ucy51bml0cyA9PT0gJ2VzcmlNZXRlcnMnID8gJ20nIDogJ2RlZ3JlZXMnO1xuICAgICAgc3R5bGUgPSBzdHlsZUdlbmVyYXRvci5nZW5lcmF0ZVN0eWxlKGFyY2dpc09wdGlvbnMsIHVuaXRzKTtcbiAgICB9XG4gICAgY29uc3QgYXR0cmlidXRpb25zID0gbmV3IG9sQXR0cmlidXRpb24oe1xuICAgICAgdGFyZ2V0OiBhcmNnaXNPcHRpb25zLmNvcHlyaWdodFRleHRcbiAgICB9KTtcbiAgICBsZXQgdGltZUV4dGVudDtcbiAgICBsZXQgdGltZUZpbHRlcjtcbiAgICBpZiAoYXJjZ2lzT3B0aW9ucy50aW1lSW5mbykge1xuICAgICAgY29uc3QgdGltZSA9IGFyY2dpc09wdGlvbnMudGltZUluZm8udGltZUV4dGVudDtcbiAgICAgIHRpbWVFeHRlbnQgPSB0aW1lWzBdICsgJywnICsgdGltZVsxXTtcbiAgICAgIGNvbnN0IG1pbiA9IG5ldyBEYXRlKCk7XG4gICAgICBtaW4uc2V0VGltZSh0aW1lWzBdKTtcbiAgICAgIGNvbnN0IG1heCA9IG5ldyBEYXRlKCk7XG4gICAgICBtYXguc2V0VGltZSh0aW1lWzFdKTtcbiAgICAgIHRpbWVGaWx0ZXIgPSB7XG4gICAgICAgIG1pbjogbWluLnRvVVRDU3RyaW5nKCksXG4gICAgICAgIG1heDogbWF4LnRvVVRDU3RyaW5nKCksXG4gICAgICAgIHJhbmdlOiB0cnVlLFxuICAgICAgICB0eXBlOiBUaW1lRmlsdGVyVHlwZS5EQVRFVElNRSxcbiAgICAgICAgc3R5bGU6IFRpbWVGaWx0ZXJTdHlsZS5DQUxFTkRBUlxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgcGFyYW1zID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBzdHlsZSxcbiAgICAgICAgTEFZRVJTOiBiYXNlT3B0aW9ucy5sYXllciA/ICdzaG93OicgKyBiYXNlT3B0aW9ucy5sYXllciA6IHVuZGVmaW5lZCxcbiAgICAgICAgdGltZTogdGltZUV4dGVudFxuICAgICAgfVxuICAgICk7XG4gICAgY29uc3Qgb3B0aW9ucyA9IE9iamVjdFV0aWxzLnJlbW92ZVVuZGVmaW5lZCh7XG4gICAgICBwYXJhbXMsXG4gICAgICBfbGF5ZXJPcHRpb25zRnJvbVNvdXJjZToge1xuICAgICAgICB0aXRsZSxcbiAgICAgICAgbWluUmVzb2x1dGlvbjogZ2V0UmVzb2x1dGlvbkZyb21TY2FsZShhcmNnaXNPcHRpb25zLm1heFNjYWxlKSxcbiAgICAgICAgbWF4UmVzb2x1dGlvbjogZ2V0UmVzb2x1dGlvbkZyb21TY2FsZShhcmNnaXNPcHRpb25zLm1pblNjYWxlKSxcbiAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICBleHRlcm46IGZhbHNlLFxuICAgICAgICAgIGFic3RyYWN0OiBhcmNnaXNPcHRpb25zLmRlc2NyaXB0aW9uIHx8IHNlcnZpY2VDYXBhYmlsaXRpZXMuc2VydmljZURlc2NyaXB0aW9uXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbGVnZW5kSW5mbyxcbiAgICAgIHRpbWVGaWx0ZXIsXG4gICAgICBzb3VyY2VGaWVsZHM6IGFyY2dpc09wdGlvbnMuZmllbGRzLFxuICAgICAgcXVlcnlUaXRsZTogYXJjZ2lzT3B0aW9ucy5kaXNwbGF5RmllbGRcbiAgICB9KTtcbiAgICBvcHRpb25zLmF0dHJpYnV0aW9ucyA9IGF0dHJpYnV0aW9ucztcbiAgICByZXR1cm4gT2JqZWN0VXRpbHMubWVyZ2VEZWVwKG9wdGlvbnMsIGJhc2VPcHRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VUaWxlT3JJbWFnZUFyY2dpc09wdGlvbnMoXG4gICAgYmFzZU9wdGlvbnM6IFRpbGVBcmNHSVNSZXN0RGF0YVNvdXJjZU9wdGlvbnMgfCBBcmNHSVNSZXN0SW1hZ2VEYXRhU291cmNlT3B0aW9ucyxcbiAgICBhcmNnaXNPcHRpb25zOiBhbnksXG4gICAgbGVnZW5kOiBhbnksXG4gICAgc2VydmljZUNhcGFiaWxpdGllczogYW55XG4gICk6IFRpbGVBcmNHSVNSZXN0RGF0YVNvdXJjZU9wdGlvbnMgfCBBcmNHSVNSZXN0SW1hZ2VEYXRhU291cmNlT3B0aW9ucyB7XG4gICAgY29uc3QgdGl0bGUgPSBhcmNnaXNPcHRpb25zLm5hbWU7XG4gICAgY29uc3QgbGVnZW5kSW5mbyA9IGxlZ2VuZC5sYXllcnMgPyBsZWdlbmQubGF5ZXJzLmZpbmQoeCA9PiB4LmxheWVyTmFtZSA9PT0gdGl0bGUpIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IGF0dHJpYnV0aW9ucyA9IG5ldyBvbEF0dHJpYnV0aW9uKHtcbiAgICAgIHRhcmdldDogYXJjZ2lzT3B0aW9ucy5jb3B5cmlnaHRUZXh0XG4gICAgfSk7XG4gICAgbGV0IHRpbWVFeHRlbnQ7XG4gICAgbGV0IHRpbWVGaWx0ZXI7XG4gICAgaWYgKGFyY2dpc09wdGlvbnMudGltZUluZm8pIHtcbiAgICAgIGNvbnN0IHRpbWUgPSBhcmNnaXNPcHRpb25zLnRpbWVJbmZvLnRpbWVFeHRlbnQ7XG4gICAgICB0aW1lRXh0ZW50ID0gdGltZVswXSArICcsJyArIHRpbWVbMV07XG4gICAgICBjb25zdCBtaW4gPSBuZXcgRGF0ZSgpO1xuICAgICAgbWluLnNldFRpbWUodGltZVswXSk7XG4gICAgICBjb25zdCBtYXggPSBuZXcgRGF0ZSgpO1xuICAgICAgbWF4LnNldFRpbWUodGltZVsxXSk7XG4gICAgICB0aW1lRmlsdGVyID0ge1xuICAgICAgICBtaW46IG1pbi50b1VUQ1N0cmluZygpLFxuICAgICAgICBtYXg6IG1heC50b1VUQ1N0cmluZygpLFxuICAgICAgICByYW5nZTogdHJ1ZSxcbiAgICAgICAgdHlwZTogVGltZUZpbHRlclR5cGUuREFURVRJTUUsXG4gICAgICAgIHN0eWxlOiBUaW1lRmlsdGVyU3R5bGUuQ0FMRU5EQVJcbiAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IHBhcmFtcyA9IE9iamVjdC5hc3NpZ24oXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgTEFZRVJTOiBiYXNlT3B0aW9ucy5sYXllciA/ICdzaG93OicgKyBiYXNlT3B0aW9ucy5sYXllciA6IHVuZGVmaW5lZCxcbiAgICAgICAgdGltZTogdGltZUV4dGVudFxuICAgICAgfVxuICAgICk7XG4gICAgY29uc3Qgb3B0aW9ucyA9IE9iamVjdFV0aWxzLnJlbW92ZVVuZGVmaW5lZCh7XG4gICAgICBwYXJhbXMsXG4gICAgICBfbGF5ZXJPcHRpb25zRnJvbVNvdXJjZToge1xuICAgICAgICB0aXRsZSxcbiAgICAgICAgbWluUmVzb2x1dGlvbjogZ2V0UmVzb2x1dGlvbkZyb21TY2FsZShhcmNnaXNPcHRpb25zLm1heFNjYWxlKSxcbiAgICAgICAgbWF4UmVzb2x1dGlvbjogZ2V0UmVzb2x1dGlvbkZyb21TY2FsZShhcmNnaXNPcHRpb25zLm1pblNjYWxlKSxcbiAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICBleHRlcm46IGZhbHNlLFxuICAgICAgICAgIGFic3RyYWN0OiBhcmNnaXNPcHRpb25zLmRlc2NyaXB0aW9uIHx8IHNlcnZpY2VDYXBhYmlsaXRpZXMuc2VydmljZURlc2NyaXB0aW9uXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbGVnZW5kSW5mbyxcbiAgICAgIHRpbWVGaWx0ZXIsXG4gICAgICBzb3VyY2VGaWVsZHM6IGFyY2dpc09wdGlvbnMuZmllbGRzLFxuICAgICAgcXVlcnlUaXRsZTogYXJjZ2lzT3B0aW9ucy5kaXNwbGF5RmllbGRcbiAgICB9KTtcbiAgICBvcHRpb25zLmF0dHJpYnV0aW9ucyA9IGF0dHJpYnV0aW9ucztcbiAgICByZXR1cm4gT2JqZWN0VXRpbHMubWVyZ2VEZWVwKG9wdGlvbnMsIGJhc2VPcHRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZERhdGFTb3VyY2VJbkNhcGFiaWxpdGllcyhsYXllckFycmF5LCBuYW1lKTogYW55IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShsYXllckFycmF5KSkge1xuICAgICAgbGV0IGxheWVyO1xuICAgICAgbGF5ZXJBcnJheS5maW5kKCh2YWx1ZSkgPT4ge1xuICAgICAgICBsYXllciA9IHRoaXMuZmluZERhdGFTb3VyY2VJbkNhcGFiaWxpdGllcyh2YWx1ZSwgbmFtZSk7XG4gICAgICAgIHJldHVybiBsYXllciAhPT0gdW5kZWZpbmVkO1xuICAgICAgfSwgdGhpcyk7XG5cbiAgICAgIHJldHVybiBsYXllcjtcbiAgICB9IGVsc2UgaWYgKGxheWVyQXJyYXkuTGF5ZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmZpbmREYXRhU291cmNlSW5DYXBhYmlsaXRpZXMobGF5ZXJBcnJheS5MYXllciwgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChsYXllckFycmF5Lk5hbWUgJiYgbGF5ZXJBcnJheS5OYW1lID09PSBuYW1lKSB7XG4gICAgICAgIHJldHVybiBsYXllckFycmF5O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBnZXRUaW1lRmlsdGVyKGxheWVyKSB7XG4gICAgbGV0IGRpbWVuc2lvbjtcblxuICAgIGlmIChsYXllci5EaW1lbnNpb24pIHtcbiAgICAgIGNvbnN0IHRpbWVGaWx0ZXI6IGFueSA9IHt9O1xuICAgICAgZGltZW5zaW9uID0gbGF5ZXIuRGltZW5zaW9uWzBdO1xuXG4gICAgICBpZiAoZGltZW5zaW9uLnZhbHVlcykge1xuICAgICAgICBjb25zdCBtaW5NYXhEaW0gPSBkaW1lbnNpb24udmFsdWVzLnNwbGl0KCcvJyk7XG4gICAgICAgIHRpbWVGaWx0ZXIubWluID0gbWluTWF4RGltWzBdICE9PSB1bmRlZmluZWQgPyBtaW5NYXhEaW1bMF0gOiB1bmRlZmluZWQ7XG4gICAgICAgIHRpbWVGaWx0ZXIubWF4ID0gbWluTWF4RGltWzFdICE9PSB1bmRlZmluZWQgPyBtaW5NYXhEaW1bMV0gOiB1bmRlZmluZWQ7XG4gICAgICAgIHRpbWVGaWx0ZXIuc3RlcCA9IG1pbk1heERpbVsyXSAhPT0gdW5kZWZpbmVkID8gbWluTWF4RGltWzJdIDogdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGltZW5zaW9uLmRlZmF1bHQpIHtcbiAgICAgICAgdGltZUZpbHRlci52YWx1ZSA9IGRpbWVuc2lvbi5kZWZhdWx0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRpbWVGaWx0ZXI7XG4gICAgfVxuICB9XG5cbiAgZ2V0U3R5bGUoU3R5bGUpOiBMZWdlbmRPcHRpb25zIHtcbiAgICBjb25zdCBzdHlsZU9wdGlvbnM6IEl0ZW1TdHlsZU9wdGlvbnNbXSA9IFN0eWxlLm1hcCgoc3R5bGUpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IHN0eWxlLk5hbWUsXG4gICAgICAgIHRpdGxlOiBzdHlsZS5UaXRsZVxuICAgICAgfTtcbiAgICB9KVxuICAgICAgLy8gSGFuZGxlIHJlcGVhdCB0aGUgc3R5bGUgXCJkZWZhdWx0XCIgaW4gb3V0cHV0ICAoTWFwU2VydmVyIG9yIE9wZW5MYXllcilcbiAgICAgIC5maWx0ZXIoXG4gICAgICAgIChpdGVtLCBpbmRleCwgc2VsZikgPT5cbiAgICAgICAgICBzZWxmLmZpbmRJbmRleCgoaTogSXRlbVN0eWxlT3B0aW9ucykgPT4gaS5uYW1lID09PSBpdGVtLm5hbWUpID09PVxuICAgICAgICAgIGluZGV4XG4gICAgICApO1xuXG4gICAgY29uc3QgbGVnZW5kT3B0aW9uczogTGVnZW5kT3B0aW9ucyA9IHtcbiAgICAgIHN0eWxlc0F2YWlsYWJsZTogc3R5bGVPcHRpb25zXG4gICAgfSBhcyBMZWdlbmRPcHRpb25zO1xuXG4gICAgcmV0dXJuIGxlZ2VuZE9wdGlvbnM7XG4gIH1cbn1cbiJdfQ==
|
|
430
|
+
}], function () { return [{ type: i1.HttpClient }, { type: i2.MapService }]; }, { getArcgisOptions: [], getImageArcgisOptions: [], getTileArcgisOptions: [], getCapabilities: [] }); })();
|
|
431
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwYWJpbGl0aWVzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kYXRhc291cmNlL3NoYXJlZC9jYXBhYmlsaXRpZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBRUwsVUFBVSxFQUNYLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFjLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXpDLE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVELE9BQU8sYUFBYSxNQUFNLHdCQUF3QixDQUFDO0FBRW5ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFMUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbkUsT0FBTyxFQUNMLFdBQVcsRUFDWCxtQkFBbUIsRUFDcEIsTUFBTSxnQ0FBZ0MsQ0FBQztBQWN4QyxPQUFPLEVBQ0wsY0FBYyxFQUNkLGVBQWUsRUFDaEIsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5QyxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQzs7OztBQUVsQyxNQUFNLENBQU4sSUFBWSxnQkFNWDtBQU5ELFdBQVksZ0JBQWdCO0lBQzFCLCtCQUFXLENBQUE7SUFDWCxpQ0FB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RUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQzdELEtBQUssQ0FDUixDQUFDO1FBRUosTUFBTSxhQUFhLEdBQWtCO1lBQ25DLGVBQWUsRUFBRSxZQUFZO1NBQ2IsQ0FBQztRQUVuQixPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDOztzRkFqZlUsbUJBQW1CO3lFQUFuQixtQkFBbUIsV0FBbkIsbUJBQW1CLG1CQUZsQixNQUFNO0FBZ0VsQjtJQUhDLFNBQVMsQ0FBQztRQUNULGFBQWEsRUFBRSxFQUFFO0tBQ2xCLENBQUM7MkRBWUQ7QUFLRDtJQUhDLFNBQVMsQ0FBQztRQUNULGFBQWEsRUFBRSxFQUFFO0tBQ2xCLENBQUM7Z0VBb0JEO0FBS0Q7SUFIQyxTQUFTLENBQUM7UUFDVCxhQUFhLEVBQUUsRUFBRTtLQUNsQixDQUFDOytEQW9CRDtBQUtEO0lBSEMsU0FBUyxDQUFDO1FBQ1QsYUFBYSxFQUFFLEVBQUU7S0FDbEIsQ0FBQzswREFrREQ7dUZBL0tVLG1CQUFtQjtjQUgvQixVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7c0ZBK0RDLGdCQUFnQixNQWdCaEIscUJBQXFCLE1Bd0JyQixvQkFBb0IsTUF3QnBCLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBIdHRwQ2xpZW50LFxuICBIdHRwUGFyYW1zXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZvcmtKb2luLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2FjaGVhYmxlIH0gZnJvbSAndHMtY2FjaGVhYmxlJztcblxuaW1wb3J0IHsgV01TQ2FwYWJpbGl0aWVzLCBXTVRTQ2FwYWJpbGl0aWVzLCBFc3JpSlNPTiB9IGZyb20gJ29sL2Zvcm1hdCc7XG5pbXBvcnQgeyBvcHRpb25zRnJvbUNhcGFiaWxpdGllcyB9IGZyb20gJ29sL3NvdXJjZS9XTVRTLmpzJztcbmltcG9ydCBvbEF0dHJpYnV0aW9uIGZyb20gJ29sL2NvbnRyb2wvQXR0cmlidXRpb24nO1xuXG5pbXBvcnQgeyBPYmplY3RVdGlscyB9IGZyb20gJ0BpZ28yL3V0aWxzJztcbmltcG9ydCB7IE1hcFNlcnZpY2UgfSBmcm9tICcuLi8uLi9tYXAvc2hhcmVkL21hcC5zZXJ2aWNlJztcbmltcG9ydCB7IGdldFJlc29sdXRpb25Gcm9tU2NhbGUgfSBmcm9tICcuLi8uLi9tYXAvc2hhcmVkL21hcC51dGlscyc7XG5pbXBvcnQgeyBFc3JpU3R5bGVHZW5lcmF0b3IgfSBmcm9tICcuLi91dGlscy9lc3JpLXN0eWxlLWdlbmVyYXRvcic7XG5pbXBvcnQge1xuICBRdWVyeUZvcm1hdCxcbiAgUXVlcnlGb3JtYXRNaW1lVHlwZVxufSBmcm9tICcuLi8uLi9xdWVyeS9zaGFyZWQvcXVlcnkuZW51bXMnO1xuXG5pbXBvcnQge1xuICBXTVRTRGF0YVNvdXJjZU9wdGlvbnMsXG4gIFdNU0RhdGFTb3VyY2VPcHRpb25zLFxuICBDYXJ0b0RhdGFTb3VyY2VPcHRpb25zLFxuICBBcmNHSVNSZXN0RGF0YVNvdXJjZU9wdGlvbnMsXG4gIFRpbGVBcmNHSVNSZXN0RGF0YVNvdXJjZU9wdGlvbnMsXG4gIEFyY0dJU1Jlc3RJbWFnZURhdGFTb3VyY2VPcHRpb25zXG59IGZyb20gJy4vZGF0YXNvdXJjZXMnO1xuaW1wb3J0IHtcbiAgTGVnZW5kT3B0aW9ucyxcbiAgSXRlbVN0eWxlT3B0aW9uc1xufSBmcm9tICcuLi8uLi9sYXllci9zaGFyZWQvbGF5ZXJzL2xheWVyLmludGVyZmFjZSc7XG5pbXBvcnQge1xuICBUaW1lRmlsdGVyVHlwZSxcbiAgVGltZUZpbHRlclN0eWxlXG59IGZyb20gJy4uLy4uL2ZpbHRlci9zaGFyZWQvdGltZS1maWx0ZXIuZW51bSc7XG5pbXBvcnQgKiBhcyBvbHByb2ogZnJvbSAnb2wvcHJvaic7XG5cbmV4cG9ydCBlbnVtIFR5cGVDYXBhYmlsaXRpZXMge1xuICB3bXMgPSAnd21zJyxcbiAgd210cyA9ICd3bXRzJyxcbiAgYXJjZ2lzcmVzdCA9ICdlc3JpSlNPTicsXG4gIGltYWdlYXJjZ2lzcmVzdCA9ICdlc3JpSlNPTicsXG4gIHRpbGVhcmNnaXNyZXN0ID0gJ2VzcmlKU09OJ1xufVxuXG5leHBvcnQgdHlwZSBUeXBlQ2FwYWJpbGl0aWVzU3RyaW5ncyA9IGtleW9mIHR5cGVvZiBUeXBlQ2FwYWJpbGl0aWVzO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDYXBhYmlsaXRpZXNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBwYXJzZXJzID0ge1xuICAgIHdtczogbmV3IFdNU0NhcGFiaWxpdGllcygpLFxuICAgIHdtdHM6IG5ldyBXTVRTQ2FwYWJpbGl0aWVzKCksXG4gICAgZXNyaUpTT046IG5ldyBFc3JpSlNPTigpXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIG1hcFNlcnZpY2U6IE1hcFNlcnZpY2UpIHt9XG5cbiAgZ2V0V01TT3B0aW9ucyhcbiAgICBiYXNlT3B0aW9uczogV01TRGF0YVNvdXJjZU9wdGlvbnNcbiAgKTogT2JzZXJ2YWJsZTxXTVNEYXRhU291cmNlT3B0aW9ucz4ge1xuICAgIGNvbnN0IHVybCA9IGJhc2VPcHRpb25zLnVybDtcbiAgICBjb25zdCB2ZXJzaW9uID0gKGJhc2VPcHRpb25zLnBhcmFtcyBhcyBhbnkpLlZFUlNJT047XG5cbiAgICByZXR1cm4gdGhpcy5nZXRDYXBhYmlsaXRpZXMoJ3dtcycsIHVybCwgdmVyc2lvbikucGlwZShcbiAgICAgIG1hcCgoY2FwYWJpbGl0aWVzOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIGNhcGFiaWxpdGllc1xuICAgICAgICAgID8gdGhpcy5wYXJzZVdNU09wdGlvbnMoYmFzZU9wdGlvbnMsIGNhcGFiaWxpdGllcylcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGdldFdNVFNPcHRpb25zKFxuICAgIGJhc2VPcHRpb25zOiBXTVRTRGF0YVNvdXJjZU9wdGlvbnNcbiAgKTogT2JzZXJ2YWJsZTxXTVRTRGF0YVNvdXJjZU9wdGlvbnM+IHtcbiAgICBjb25zdCB1cmwgPSBiYXNlT3B0aW9ucy51cmw7XG4gICAgY29uc3QgdmVyc2lvbiA9IGJhc2VPcHRpb25zLnZlcnNpb247XG5cbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5nZXRDYXBhYmlsaXRpZXMoJ3dtdHMnLCB1cmwsIHZlcnNpb24pLnBpcGUoXG4gICAgICBtYXAoKGNhcGFiaWxpdGllczogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiBjYXBhYmlsaXRpZXNcbiAgICAgICAgICA/IHRoaXMucGFyc2VXTVRTT3B0aW9ucyhiYXNlT3B0aW9ucywgY2FwYWJpbGl0aWVzKVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgfSlcbiAgICApO1xuICAgIHJldHVybiBvcHRpb25zO1xuICB9XG5cbiAgZ2V0Q2FydG9PcHRpb25zKFxuICAgIGJhc2VPcHRpb25zOiBDYXJ0b0RhdGFTb3VyY2VPcHRpb25zXG4gICk6IE9ic2VydmFibGU8Q2FydG9EYXRhU291cmNlT3B0aW9ucz4ge1xuICAgIGNvbnN0IGJhc2VVcmwgPVxuICAgICAgJ2h0dHBzOi8vJyArXG4gICAgICBiYXNlT3B0aW9ucy5hY2NvdW50ICtcbiAgICAgICcuY2FydG8uY29tL2FwaS92Mi92aXovJyArXG4gICAgICBiYXNlT3B0aW9ucy5tYXBJZCArXG4gICAgICAnL3Zpei5qc29uJztcblxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5qc29ucChiYXNlVXJsLCAnY2FsbGJhY2snKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoY2FydG9PcHRpb25zOiBhbnkpID0+XG4gICAgICAgICAgdGhpcy5wYXJzZUNhcnRvT3B0aW9ucyhiYXNlT3B0aW9ucywgY2FydG9PcHRpb25zKVxuICAgICAgICApXG4gICAgICApO1xuICB9XG5cbiAgQENhY2hlYWJsZSh7XG4gICAgbWF4Q2FjaGVDb3VudDogMjBcbiAgfSlcbiAgZ2V0QXJjZ2lzT3B0aW9ucyhcbiAgICBiYXNlT3B0aW9uczogQXJjR0lTUmVzdERhdGFTb3VyY2VPcHRpb25zXG4gICk6IE9ic2VydmFibGU8QXJjR0lTUmVzdERhdGFTb3VyY2VPcHRpb25zPiB7XG4gICAgY29uc3QgYmFzZVVybCA9IGJhc2VPcHRpb25zLnVybCArICcvJyArIGJhc2VPcHRpb25zLmxheWVyICsgJz9mPWpzb24nO1xuICAgIGNvbnN0IHNlcnZpY2VDYXBhYmlsaXRpZXMgPSB0aGlzLmdldENhcGFiaWxpdGllcygnYXJjZ2lzcmVzdCcsIGJhc2VPcHRpb25zLnVybCk7XG4gICAgY29uc3QgYXJjZ2lzT3B0aW9ucyA9IHRoaXMuaHR0cC5nZXQoYmFzZVVybCk7XG4gICAgcmV0dXJuIGZvcmtKb2luKFthcmNnaXNPcHRpb25zLCBzZXJ2aWNlQ2FwYWJpbGl0aWVzXSkucGlwZShcbiAgICAgIG1hcCgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VBcmNnaXNPcHRpb25zKGJhc2VPcHRpb25zLCByZXNbMF0sIHJlc1sxXSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBAQ2FjaGVhYmxlKHtcbiAgICBtYXhDYWNoZUNvdW50OiAyMFxuICB9KVxuICBnZXRJbWFnZUFyY2dpc09wdGlvbnMoXG4gICAgYmFzZU9wdGlvbnM6IEFyY0dJU1Jlc3RJbWFnZURhdGFTb3VyY2VPcHRpb25zIHwgVGlsZUFyY0dJU1Jlc3REYXRhU291cmNlT3B0aW9uc1xuICApOiBPYnNlcnZhYmxlPEFyY0dJU1Jlc3RJbWFnZURhdGFTb3VyY2VPcHRpb25zIHwgVGlsZUFyY0dJU1Jlc3REYXRhU291cmNlT3B0aW9ucz4ge1xuICAgIGNvbnN0IGJhc2VVcmwgPSBiYXNlT3B0aW9ucy51cmwgKyAnLycgKyBiYXNlT3B0aW9ucy5sYXllciArICc/Zj1qc29uJztcbiAgICBjb25zdCBsZWdlbmRVcmwgPSBiYXNlT3B0aW9ucy51cmwgKyAnL2xlZ2VuZD9mPWpzb24nO1xuICAgIGNvbnN0IHNlcnZpY2VDYXBhYmlsaXRpZXMgPSB0aGlzLmdldENhcGFiaWxpdGllcygnaW1hZ2VhcmNnaXNyZXN0JywgYmFzZU9wdGlvbnMudXJsKTtcbiAgICBjb25zdCBhcmNnaXNPcHRpb25zID0gdGhpcy5odHRwLmdldChiYXNlVXJsKTtcbiAgICBjb25zdCBsZWdlbmQgPSB0aGlzLmh0dHAuZ2V0KGxlZ2VuZFVybCkucGlwZShcbiAgICAgIG1hcCgocmVzOiBhbnkpID0+IHJlcyksXG4gICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ05vIGxlZ2VuZCBhc3NvY2lhdGVkIHdpdGggdGhpcyBJbWFnZSBTZXJ2aWNlJyk7XG4gICAgICAgIHJldHVybiBvZihlcnIpO1xuICAgICAgfSlcbiAgICApO1xuICAgIHJldHVybiBmb3JrSm9pbihbYXJjZ2lzT3B0aW9ucywgbGVnZW5kLCBzZXJ2aWNlQ2FwYWJpbGl0aWVzXSkucGlwZShcbiAgICAgIG1hcCgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VUaWxlT3JJbWFnZUFyY2dpc09wdGlvbnMoYmFzZU9wdGlvbnMsIHJlc1swXSwgcmVzWzFdLCByZXNbMl0pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgQENhY2hlYWJsZSh7XG4gICAgbWF4Q2FjaGVDb3VudDogMjBcbiAgfSlcbiAgZ2V0VGlsZUFyY2dpc09wdGlvbnMoXG4gICAgYmFzZU9wdGlvbnM6IFRpbGVBcmNHSVNSZXN0RGF0YVNvdXJjZU9wdGlvbnNcbiAgKTogT2JzZXJ2YWJsZTxBcmNHSVNSZXN0SW1hZ2VEYXRhU291cmNlT3B0aW9ucyB8IFRpbGVBcmNHSVNSZXN0RGF0YVNvdXJjZU9wdGlvbnM+IHtcbiAgICBjb25zdCBiYXNlVXJsID0gYmFzZU9wdGlvbnMudXJsICsgJy8nICsgYmFzZU9wdGlvbnMubGF5ZXIgKyAnP2Y9anNvbic7XG4gICAgY29uc3QgbGVnZW5kVXJsID0gYmFzZU9wdGlvbnMudXJsICsgJy9sZWdlbmQ/Zj1qc29uJztcbiAgICBjb25zdCBzZXJ2aWNlQ2FwYWJpbGl0aWVzID0gdGhpcy5nZXRDYXBhYmlsaXRpZXMoJ3RpbGVhcmNnaXNyZXN0JywgYmFzZU9wdGlvbnMudXJsKTtcbiAgICBjb25zdCBhcmNnaXNPcHRpb25zID0gdGhpcy5odHRwLmdldChiYXNlVXJsKTtcbiAgICBjb25zdCBsZWdlbmRJbmZvID0gdGhpcy5odHRwLmdldChsZWdlbmRVcmwpLnBpcGUoXG4gICAgICBtYXAoKHJlczogYW55KSA9PiByZXMpLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdObyBsZWdlbmQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgVGlsZSBTZXJ2aWNlJyk7XG4gICAgICAgIHJldHVybiBvZihlcnIpO1xuICAgICAgfSlcbiAgICApO1xuICAgIHJldHVybiBmb3JrSm9pbihbYXJjZ2lzT3B0aW9ucywgbGVnZW5kSW5mbywgc2VydmljZUNhcGFiaWxpdGllc10pLnBpcGUoXG4gICAgICBtYXAoKHJlczogYW55KSA9PlxuICAgICAgICB0aGlzLnBhcnNlVGlsZU9ySW1hZ2VBcmNnaXNPcHRpb25zKGJhc2VPcHRpb25zLCByZXNbMF0sIHJlc1sxXSwgcmVzWzJdKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBAQ2FjaGVhYmxlKHtcbiAgICBtYXhDYWNoZUNvdW50OiAyMFxuICB9KVxuICBnZXRDYXBhYmlsaXRpZXMoXG4gICAgc2VydmljZTogVHlwZUNhcGFiaWxpdGllc1N0cmluZ3MsXG4gICAgYmFzZVVybDogc3RyaW5nLFxuICAgIHZlcnNpb24/OiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcyh7XG4gICAgICBmcm9tT2JqZWN0OiB7XG4gICAgICAgIHJlcXVlc3Q6ICdHZXRDYXBhYmlsaXRpZXMnLFxuICAgICAgICBzZXJ2aWNlOiBzZXJ2aWNlLnRvVXBwZXJDYXNlKCksXG4gICAgICAgIHZlcnNpb246IHZlcnNpb24gfHwgJzEuMy4wJyxcbiAgICAgICAgX2k6ICd0cnVlJ1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbGV0IHJlcXVlc3Q7XG4gICAgaWYgKFR5cGVDYXBhYmlsaXRpZXNbc2VydmljZV0gPT09ICdlc3JpSlNPTicpIHtcbiAgICAgIHJlcXVlc3QgPSB0aGlzLmh0dHAuZ2V0KGJhc2VVcmwgKyAnP2Y9anNvbicpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXF1ZXN0ID0gdGhpcy5odHRwLmdldChiYXNlVXJsLCB7XG4gICAgICAgIHBhcmFtcyxcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCdcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXF1ZXN0LnBpcGUoXG4gICAgICBtYXAoKHJlcykgPT4ge1xuICAgICAgICBpZiAoVHlwZUNhcGFiaWxpdGllc1tzZXJ2aWNlXSA9PT0gJ2VzcmlKU09OJykge1xuICAgICAgICAgIHJldHVybiByZXMgYXMgb2JqZWN0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICBTdHJpbmcocmVzKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdzZXJ2aWNlZXhjZXB0aW9uJykgJiZcbiAgICAgICAgICBTdHJpbmcocmVzKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdhY2Nlc3MgZGVuaWVkJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhyb3cge1xuICAgICAgICAgICAgZXJyb3I6IHtcbiAgICAgICAgICAgICAgbWVzc2FnZTogJ1NlcnZpY2UgZXJyb3IgZ2V0Q2FwYWJpbGl0aWVzOiBBY2Nlc3MgaXMgZGVuaWVkJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2Vyc1tzZXJ2aWNlXS5yZWFkKHJlcyk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcigoZSkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGUuZXJyb3IgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgZS5lcnJvci5jYXVnaHQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHBhcnNlV01TT3B0aW9ucyhcbiAgICBiYXNlT3B0aW9uczogV01TRGF0YVNvdXJjZU9wdGlvbnMsXG4gICAgY2FwYWJpbGl0aWVzOiBhbnlcbiAgKTogV01TRGF0YVNvdXJjZU9wdGlvbnMge1xuICAgIGNvbnN0IGxheWVycyA9IChiYXNlT3B0aW9ucy5wYXJhbXMgYXMgYW55KS5MQVlFUlM7XG4gICAgY29uc3QgbGF5ZXIgPSB0aGlzLmZpbmREYXRhU291cmNlSW5DYXBhYmlsaXRpZXMoXG4gICAgICBjYXBhYmlsaXRpZXMuQ2FwYWJpbGl0eS5MYXllcixcbiAgICAgIGxheWVyc1xuICAgICk7XG5cbiAgICBpZiAoIWxheWVyKSB7XG4gICAgICB0aHJvdyB7XG4gICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgbWVzc2FnZTogJ0xheWVyIG5vdCBmb3VuZCdcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgbWV0YWRhdGEgPSBsYXllci5EYXRhVVJMID8gbGF5ZXIuRGF0YVVSTFswXSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBhYnN0cmFjdCA9IGxheWVyLkFic3RyYWN0ID8gbGF5ZXIuQWJzdHJhY3QgOiB1bmRlZmluZWQ7XG4gICAgY29uc3Qga2V5d29yZExpc3QgPSBsYXllci5LZXl3b3JkTGlzdCA/IGxheWVyLktleXdvcmRMaXN0IDogdW5kZWZpbmVkO1xuICAgIGxldCBxdWVyeWFibGUgPSBsYXllci5xdWVyeWFibGU7XG4gICAgY29uc3QgdGltZUZpbHRlciA9IHRoaXMuZ2V0VGltZUZpbHRlcihsYXllcik7XG4gICAgY29uc3QgdGltZUZpbHRlcmFibGUgPSB0aW1lRmlsdGVyICYmIE9iamVjdC5rZXlzKHRpbWVGaWx0ZXIpLmxlbmd0aCA+IDA7XG4gICAgY29uc3QgbGVnZW5kT3B0aW9ucyA9IGxheWVyLlN0eWxlID8gdGhpcy5nZXRTdHlsZShsYXllci5TdHlsZSkgOiB1bmRlZmluZWQ7XG4gICAgbGV0IGlzRXh0ZW50SW5HZW9ncmFwaGljID0gdHJ1ZTtcbiAgICBpZiAobGF5ZXIuRVhfR2VvZ3JhcGhpY0JvdW5kaW5nQm94KSB7XG4gICAgICBsYXllci5FWF9HZW9ncmFwaGljQm91bmRpbmdCb3guZm9yRWFjaCgoY29vcmQsIGluZGV4KSA9PiB7XG4gICAgICAgIGlmIChpbmRleCA8IDIgJiYgKGNvb3JkID4gMTgwIHx8IGNvb3JkIDwgLTE4MCkpIHtcbiAgICAgICAgICBpc0V4dGVudEluR2VvZ3JhcGhpYyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbmRleCA+PSAyICYmIChjb29yZCA+IDkwIHx8IGNvb3JkIDwgLTkwKSkge1xuICAgICAgICAgIGlzRXh0ZW50SW5HZW9ncmFwaGljID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpc0V4dGVudEluR2VvZ3JhcGhpYyA9IGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGV4dGVudCA9IGlzRXh0ZW50SW5HZW9ncmFwaGljID9cbiAgICAgICAgb2xwcm9qLnRyYW5zZm9ybUV4dGVudChsYXllci5FWF9HZW9ncmFwaGljQm91bmRpbmdCb3gsICdFUFNHOjQzMjYnLCB0aGlzLm1hcFNlcnZpY2UuZ2V0TWFwKCkucHJvamVjdGlvbikgOlxuICAgICAgICB1bmRlZmluZWQ7XG5cbiAgICBsZXQgcXVlcnlGb3JtYXQ6IFF1ZXJ5Rm9ybWF0O1xuICAgIGNvbnN0IHF1ZXJ5Rm9ybWF0TWltZVR5cGVQcmlvcml0eSA9IFtcbiAgICAgIFF1ZXJ5Rm9ybWF0TWltZVR5cGUuR0VPSlNPTixcbiAgICAgIFF1ZXJ5Rm9ybWF0TWltZVR5cGUuR0VPSlNPTjIsXG4gICAgICBRdWVyeUZvcm1hdE1pbWVUeXBlLkdNTDMsXG4gICAgICBRdWVyeUZvcm1hdE1pbWVUeXBlLkdNTDIsXG4gICAgICBRdWVyeUZvcm1hdE1pbWVUeXBlLkpTT04sXG4gICAgICBRdWVyeUZvcm1hdE1pbWVUeXBlLkhUTUxcbiAgICBdO1xuXG4gICAgZm9yIChjb25zdCBtaW1lVHlwZSBvZiBxdWVyeUZvcm1hdE1pbWVUeXBlUHJpb3JpdHkpIHtcbiAgICAgIGlmIChcbiAgICAgICAgY2FwYWJpbGl0aWVzLkNhcGFiaWxpdHkuUmVxdWVzdC5HZXRGZWF0dXJlSW5mby5Gb3JtYXQuaW5kZXhPZihcbiAgICAgICAgICBtaW1lVHlwZVxuICAgICAgICApICE9PSAtMVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IGtleUVudW0gPSBPYmplY3Qua2V5cyhRdWVyeUZvcm1hdE1pbWVUeXBlKS5maW5kKFxuICAgICAgICAgIChrZXkpID0+IFF1ZXJ5Rm9ybWF0TWltZVR5cGVba2V5XSA9PT0gbWltZVR5cGVcbiAgICAgICAgKTtcbiAgICAgICAgcXVlcnlGb3JtYXQgPSBRdWVyeUZvcm1hdFtrZXlFbnVtXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghcXVlcnlGb3JtYXQpIHtcbiAgICAgIHF1ZXJ5YWJsZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbnM6IFdNU0RhdGFTb3VyY2VPcHRpb25zID0gT2JqZWN0VXRpbHMucmVtb3ZlVW5kZWZpbmVkKHtcbiAgICAgIF9sYXllck9wdGlvbnNGcm9tU291cmNlOiB7XG4gICAgICAgIHRpdGxlOiBsYXllci5UaXRsZSxcbiAgICAgICAgbWF4UmVzb2x1dGlvbjogZ2V0UmVzb2x1dGlvbkZyb21TY2FsZShsYXllci5NYXhTY2FsZURlbm9taW5hdG9yKSxcbiAgICAgICAgbWluUmVzb2x1dGlvbjogZ2V0UmVzb2x1dGlvbkZyb21TY2FsZShsYXllci5NaW5TY2FsZURlbm9taW5hdG9yKSxcbiAgICAgICAgZXh0ZW50LFxuICAgICAgICBtZXRhZGF0YToge1xuICAgICAgICAgIHVybDogbWV0YWRhdGEgPyBtZXRhZGF0YS5PbmxpbmVSZXNvdXJjZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBleHRlcm46IG1ldGFkYXRhID8gdHJ1ZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBhYnN0cmFjdCxcbiAgICAgICAgICBrZXl3b3JkTGlzdFxuICAgICAgICB9LFxuICAgICAgICBsZWdlbmRPcHRpb25zXG4gICAgICB9LFxuICAgICAgcXVlcnlhYmxlLFxuICAgICAgcXVlcnlGb3JtYXQsXG4gICAgICB0aW1lRmlsdGVyOiB0aW1lRmlsdGVyYWJsZSA/IHRpbWVGaWx0ZXIgOiB1bmRlZmluZWQsXG4gICAgICB0aW1lRmlsdGVyYWJsZTogdGltZUZpbHRlcmFibGUgPyB0cnVlIDogdW5kZWZpbmVkLFxuICAgICAgbWluRGF0ZTogdGltZUZpbHRlcmFibGUgPyB0aW1lRmlsdGVyLm1pbiA6IHVuZGVmaW5lZCxcbiAgICAgIG1heERhdGU6IHRpbWVGaWx0ZXJhYmxlID8gdGltZUZpbHRlci5tYXggOiB1bmRlZmluZWQsXG4gICAgICBzdGVwRGF0ZTogdGltZUZpbHRlcmFibGUgPyB0aW1lRmlsdGVyLnN0ZXAgOiB1bmRlZmluZWRcbiAgICB9KTtcblxuICAgIHJldHVybiBPYmplY3RVdGlscy5tZXJnZURlZXAob3B0aW9ucywgYmFzZU9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZVdNVFNPcHRpb25zKFxuICAgIGJhc2VPcHRpb25zOiBXTVRTRGF0YVNvdXJjZU9wdGlvbnMsXG4gICAgY2FwYWJpbGl0aWVzOiBhbnlcbiAgKTogV01UU0RhdGFTb3VyY2VPcHRpb25zIHtcbiAgICAvLyBQdXQgVGl0bGUgc291cmNlIGluIF9sYXllck9wdGlvbnNGcm9tU291cmNlLiAoRm9yIHNvdXJjZSAmIGNhdGFsb2cgaW4gX2xheWVyT3B0aW9uc0Zyb21Tb3VyY2UsIGlmIG5vdCBhbHJlYWR5IG9uIGNvbmZpZylcbiAgICBjb25zdCBsYXllciA9IGNhcGFiaWxpdGllcy5Db250ZW50cy5MYXllci5maW5kKFxuICAgICAgKGVsKSA9PiBlbC5JZGVudGlmaWVyID09PSBiYXNlT3B0aW9ucy5sYXllclxuICAgICk7XG5cbiAgICBjb25zdCBvcHRpb25zID0gb3B0aW9uc0Zyb21DYXBhYmlsaXRpZXMoY2FwYWJpbGl0aWVzLCBiYXNlT3B0aW9ucyk7XG5cbiAgICBjb25zdCBvdXB1dE9wdGlvbnMgPSBPYmplY3QuYXNzaWduKG9wdGlvbnMsIGJhc2VPcHRpb25zKTtcbiAgICBjb25zdCBzb3VyY2VPcHRpb25zID0gT2JqZWN0VXRpbHMucmVtb3ZlVW5kZWZpbmVkKHtcbiAgICAgIF9sYXllck9wdGlvbnNGcm9tU291cmNlOiB7XG4gICAgICAgIHRpdGxlOiBsYXllci5UaXRsZVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIE9iamVjdFV0aWxzLm1lcmdlRGVlcChzb3VyY2VPcHRpb25zLCBvdXB1dE9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZUNhcnRvT3B0aW9ucyhcbiAgICBiYXNlT3B0aW9uczogQ2FydG9EYXRhU291cmNlT3B0aW9ucyxcbiAgICBjYXJ0b09wdGlvbnM6IGFueVxuICApOiBDYXJ0b0RhdGFTb3VyY2VPcHRpb25zIHtcbiAgICBjb25zdCBsYXllcnMgPSBbXTtcbiAgICBjb25zdCBwYXJhbXMgPSBjYXJ0b09wdGlvbnMubGF5ZXJzWzFdLm9wdGlvbnMubGF5ZXJfZGVmaW5pdGlvbjtcbiAgICBwYXJhbXMubGF5ZXJzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgIGxheWVycy5wdXNoKHtcbiAgICAgICAgdHlwZTogZWxlbWVudC50eXBlLnRvTG93ZXJDYXNlKCksXG4gICAgICAgIG9wdGlvbnM6IGVsZW1lbnQub3B0aW9ucyxcbiAgICAgICAgbGVnZW5kOiBlbGVtZW50LmxlZ2VuZFxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgY29uc3Qgb3B0aW9ucyA9IE9iamVjdFV0aWxzLnJlbW92ZVVuZGVmaW5lZCh7XG4gICAgICBjb25maWc6IHtcbiAgICAgICAgdmVyc2lvbjogcGFyYW1zLnZlcnNpb24sXG4gICAgICAgIGxheWVyc1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBPYmplY3RVdGlscy5tZXJnZURlZXAob3B0aW9ucywgYmFzZU9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZUFyY2dpc09wdGlvbnMoXG4gICAgYmFzZU9wdGlvbnM6IEFyY0dJU1Jlc3REYXRhU291cmNlT3B0aW9ucyxcbiAgICBhcmNnaXNPcHRpb25zOiBhbnksXG4gICAgc2VydmljZUNhcGFiaWxpdGllczogYW55LFxuICApOiBBcmNHSVNSZXN0RGF0YVNvdXJjZU9wdGlvbnMge1xuICAgIGNvbnN0IHRpdGxlID0gYXJjZ2lzT3B0aW9ucy5uYW1lO1xuICAgIGxldCBsZWdlbmRJbmZvOiBhbnk7XG5cbiAgICBpZiAoYXJjZ2lzT3B0aW9ucy5kcmF3aW5nSW5mbz8ucmVuZGVyZXIpIHtcbiAgICAgIGxlZ2VuZEluZm8gPSBhcmNnaXNPcHRpb25zLmRyYXdpbmdJbmZvLnJlbmRlcmVyO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZWdlbmRJbmZvID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGxldCBzdHlsZTtcbiAgICBpZiAoYXJjZ2lzT3B0aW9ucy5kcmF3aW5nSW5mbykge1xuICAgICAgY29uc3Qgc3R5bGVHZW5lcmF0b3IgPSBuZXcgRXNyaVN0eWxlR2VuZXJhdG9yKCk7XG4gICAgICBjb25zdCB1bml0cyA9IGFyY2dpc09wdGlvbnMudW5pdHMgPT09ICdlc3JpTWV0ZXJzJyA/ICdtJyA6ICdkZWdyZWVzJztcbiAgICAgIHN0eWxlID0gc3R5bGVHZW5lcmF0b3IuZ2VuZXJhdGVTdHlsZShhcmNnaXNPcHRpb25zLCB1bml0cyk7XG4gICAgfVxuICAgIGNvbnN0IGF0dHJpYnV0aW9ucyA9IG5ldyBvbEF0dHJpYnV0aW9uKHtcbiAgICAgIHRhcmdldDogYXJjZ2lzT3B0aW9ucy5jb3B5cmlnaHRUZXh0XG4gICAgfSk7XG4gICAgbGV0IHRpbWVFeHRlbnQ7XG4gICAgbGV0IHRpbWVGaWx0ZXI7XG4gICAgaWYgKGFyY2dpc09wdGlvbnMudGltZUluZm8pIHtcbiAgICAgIGNvbnN0IHRpbWUgPSBhcmNnaXNPcHRpb25zLnRpbWVJbmZvLnRpbWVFeHRlbnQ7XG4gICAgICB0aW1lRXh0ZW50ID0gdGltZVswXSArICcsJyArIHRpbWVbMV07XG4gICAgICBjb25zdCBtaW4gPSBuZXcgRGF0ZSgpO1xuICAgICAgbWluLnNldFRpbWUodGltZVswXSk7XG4gICAgICBjb25zdCBtYXggPSBuZXcgRGF0ZSgpO1xuICAgICAgbWF4LnNldFRpbWUodGltZVsxXSk7XG4gICAgICB0aW1lRmlsdGVyID0ge1xuICAgICAgICBtaW46IG1pbi50b1VUQ1N0cmluZygpLFxuICAgICAgICBtYXg6IG1heC50b1VUQ1N0cmluZygpLFxuICAgICAgICByYW5nZTogdHJ1ZSxcbiAgICAgICAgdHlwZTogVGltZUZpbHRlclR5cGUuREFURVRJTUUsXG4gICAgICAgIHN0eWxlOiBUaW1lRmlsdGVyU3R5bGUuQ0FMRU5EQVJcbiAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IHBhcmFtcyA9IE9iamVjdC5hc3NpZ24oXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgc3R5bGUsXG4gICAgICAgIExBWUVSUzogYmFzZU9wdGlvbnMubGF5ZXIgPyAnc2hvdzonICsgYmFzZU9wdGlvbnMubGF5ZXIgOiB1bmRlZmluZWQsXG4gICAgICAgIHRpbWU6IHRpbWVFeHRlbnRcbiAgICAgIH1cbiAgICApO1xuICAgIGNvbnN0IG9wdGlvbnMgPSBPYmplY3RVdGlscy5yZW1vdmVVbmRlZmluZWQoe1xuICAgICAgcGFyYW1zLFxuICAgICAgX2xheWVyT3B0aW9uc0Zyb21Tb3VyY2U6IHtcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIG1pblJlc29sdXRpb246IGdldFJlc29sdXRpb25Gcm9tU2NhbGUoYXJjZ2lzT3B0aW9ucy5tYXhTY2FsZSksXG4gICAgICAgIG1heFJlc29sdXRpb246IGdldFJlc29sdXRpb25Gcm9tU2NhbGUoYXJjZ2lzT3B0aW9ucy5taW5TY2FsZSksXG4gICAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgICAgZXh0ZXJuOiBmYWxzZSxcbiAgICAgICAgICBhYnN0cmFjdDogYXJjZ2lzT3B0aW9ucy5kZXNjcmlwdGlvbiB8fCBzZXJ2aWNlQ2FwYWJpbGl0aWVzLnNlcnZpY2VEZXNjcmlwdGlvblxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGxlZ2VuZEluZm8sXG4gICAgICB0aW1lRmlsdGVyLFxuICAgICAgc291cmNlRmllbGRzOiBhcmNnaXNPcHRpb25zLmZpZWxkcyxcbiAgICAgIHF1ZXJ5VGl0bGU6IGFyY2dpc09wdGlvbnMuZGlzcGxheUZpZWxkXG4gICAgfSk7XG4gICAgb3B0aW9ucy5hdHRyaWJ1dGlvbnMgPSBhdHRyaWJ1dGlvbnM7XG4gICAgcmV0dXJuIE9iamVjdFV0aWxzLm1lcmdlRGVlcChvcHRpb25zLCBiYXNlT3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIHBhcnNlVGlsZU9ySW1hZ2VBcmNnaXNPcHRpb25zKFxuICAgIGJhc2VPcHRpb25zOiBUaWxlQXJjR0lTUmVzdERhdGFTb3VyY2VPcHRpb25zIHwgQXJjR0lTUmVzdEltYWdlRGF0YVNvdXJjZU9wdGlvbnMsXG4gICAgYXJjZ2lzT3B0aW9uczogYW55LFxuICAgIGxlZ2VuZDogYW55LFxuICAgIHNlcnZpY2VDYXBhYmlsaXRpZXM6IGFueVxuICApOiBUaWxlQXJjR0lTUmVzdERhdGFTb3VyY2VPcHRpb25zIHwgQXJjR0lTUmVzdEltYWdlRGF0YVNvdXJjZU9wdGlvbnMge1xuICAgIGNvbnN0IHRpdGxlID0gYXJjZ2lzT3B0aW9ucy5uYW1lO1xuICAgIGNvbnN0IGxlZ2VuZEluZm8gPSBsZWdlbmQubGF5ZXJzID8gbGVnZW5kLmxheWVycy5maW5kKHggPT4geC5sYXllck5hbWUgPT09IHRpdGxlKSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBhdHRyaWJ1dGlvbnMgPSBuZXcgb2xBdHRyaWJ1dGlvbih7XG4gICAgICB0YXJnZXQ6IGFyY2dpc09wdGlvbnMuY29weXJpZ2h0VGV4dFxuICAgIH0pO1xuICAgIGxldCB0aW1lRXh0ZW50O1xuICAgIGxldCB0aW1lRmlsdGVyO1xuICAgIGlmIChhcmNnaXNPcHRpb25zLnRpbWVJbmZvKSB7XG4gICAgICBjb25zdCB0aW1lID0gYXJjZ2lzT3B0aW9ucy50aW1lSW5mby50aW1lRXh0ZW50O1xuICAgICAgdGltZUV4dGVudCA9IHRpbWVbMF0gKyAnLCcgKyB0aW1lWzFdO1xuICAgICAgY29uc3QgbWluID0gbmV3IERhdGUoKTtcbiAgICAgIG1pbi5zZXRUaW1lKHRpbWVbMF0pO1xuICAgICAgY29uc3QgbWF4ID0gbmV3IERhdGUoKTtcbiAgICAgIG1heC5zZXRUaW1lKHRpbWVbMV0pO1xuICAgICAgdGltZUZpbHRlciA9IHtcbiAgICAgICAgbWluOiBtaW4udG9VVENTdHJpbmcoKSxcbiAgICAgICAgbWF4OiBtYXgudG9VVENTdHJpbmcoKSxcbiAgICAgICAgcmFuZ2U6IHRydWUsXG4gICAgICAgIHR5cGU6IFRpbWVGaWx0ZXJUeXBlLkRBVEVUSU1FLFxuICAgICAgICBzdHlsZTogVGltZUZpbHRlclN0eWxlLkNBTEVOREFSXG4gICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBwYXJhbXMgPSBPYmplY3QuYXNzaWduKFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIExBWUVSUzogYmFzZU9wdGlvbnMubGF5ZXIgPyAnc2hvdzonICsgYmFzZU9wdGlvbnMubGF5ZXIgOiB1bmRlZmluZWQsXG4gICAgICAgIHRpbWU6IHRpbWVFeHRlbnRcbiAgICAgIH1cbiAgICApO1xuICAgIGNvbnN0IG9wdGlvbnMgPSBPYmplY3RVdGlscy5yZW1vdmVVbmRlZmluZWQoe1xuICAgICAgcGFyYW1zLFxuICAgICAgX2xheWVyT3B0aW9uc0Zyb21Tb3VyY2U6IHtcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIG1pblJlc29sdXRpb246IGdldFJlc29sdXRpb25Gcm9tU2NhbGUoYXJjZ2lzT3B0aW9ucy5tYXhTY2FsZSksXG4gICAgICAgIG1heFJlc29sdXRpb246IGdldFJlc29sdXRpb25Gcm9tU2NhbGUoYXJjZ2lzT3B0aW9ucy5taW5TY2FsZSksXG4gICAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgICAgZXh0ZXJuOiBmYWxzZSxcbiAgICAgICAgICBhYnN0cmFjdDogYXJjZ2lzT3B0aW9ucy5kZXNjcmlwdGlvbiB8fCBzZXJ2aWNlQ2FwYWJpbGl0aWVzLnNlcnZpY2VEZXNjcmlwdGlvblxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGxlZ2VuZEluZm8sXG4gICAgICB0aW1lRmlsdGVyLFxuICAgICAgc291cmNlRmllbGRzOiBhcmNnaXNPcHRpb25zLmZpZWxkcyxcbiAgICAgIHF1ZXJ5VGl0bGU6IGFyY2dpc09wdGlvbnMuZGlzcGxheUZpZWxkXG4gICAgfSk7XG4gICAgb3B0aW9ucy5hdHRyaWJ1dGlvbnMgPSBhdHRyaWJ1dGlvbnM7XG4gICAgcmV0dXJuIE9iamVjdFV0aWxzLm1lcmdlRGVlcChvcHRpb25zLCBiYXNlT3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGZpbmREYXRhU291cmNlSW5DYXBhYmlsaXRpZXMobGF5ZXJBcnJheSwgbmFtZSk6IGFueSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkobGF5ZXJBcnJheSkpIHtcbiAgICAgIGxldCBsYXllcjtcbiAgICAgIGxheWVyQXJyYXkuZmluZCgodmFsdWUpID0+IHtcbiAgICAgICAgbGF5ZXIgPSB0aGlzLmZpbmREYXRhU291cmNlSW5DYXBhYmlsaXRpZXModmFsdWUsIG5hbWUpO1xuICAgICAgICByZXR1cm4gbGF5ZXIgIT09IHVuZGVmaW5lZDtcbiAgICAgIH0sIHRoaXMpO1xuXG4gICAgICByZXR1cm4gbGF5ZXI7XG4gICAgfSBlbHNlIGlmIChsYXllckFycmF5LkxheWVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5maW5kRGF0YVNvdXJjZUluQ2FwYWJpbGl0aWVzKGxheWVyQXJyYXkuTGF5ZXIsIG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobGF5ZXJBcnJheS5OYW1lICYmIGxheWVyQXJyYXkuTmFtZSA9PT0gbmFtZSkge1xuICAgICAgICByZXR1cm4gbGF5ZXJBcnJheTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgZ2V0VGltZUZpbHRlcihsYXllcikge1xuICAgIGxldCBkaW1lbnNpb247XG5cbiAgICBpZiAobGF5ZXIuRGltZW5zaW9uKSB7XG4gICAgICBjb25zdCB0aW1lRmlsdGVyOiBhbnkgPSB7fTtcbiAgICAgIGRpbWVuc2lvbiA9IGxheWVyLkRpbWVuc2lvblswXTtcblxuICAgICAgaWYgKGRpbWVuc2lvbi52YWx1ZXMpIHtcbiAgICAgICAgY29uc3QgbWluTWF4RGltID0gZGltZW5zaW9uLnZhbHVlcy5zcGxpdCgnLycpO1xuICAgICAgICB0aW1lRmlsdGVyLm1pbiA9IG1pbk1heERpbVswXSAhPT0gdW5kZWZpbmVkID8gbWluTWF4RGltWzBdIDogdW5kZWZpbmVkO1xuICAgICAgICB0aW1lRmlsdGVyLm1heCA9IG1pbk1heERpbVsxXSAhPT0gdW5kZWZpbmVkID8gbWluTWF4RGltWzFdIDogdW5kZWZpbmVkO1xuICAgICAgICB0aW1lRmlsdGVyLnN0ZXAgPSBtaW5NYXhEaW1bMl0gIT09IHVuZGVmaW5lZCA/IG1pbk1heERpbVsyXSA6IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpbWVuc2lvbi5kZWZhdWx0KSB7XG4gICAgICAgIHRpbWVGaWx0ZXIudmFsdWUgPSBkaW1lbnNpb24uZGVmYXVsdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aW1lRmlsdGVyO1xuICAgIH1cbiAgfVxuXG4gIGdldFN0eWxlKFN0eWxlKTogTGVnZW5kT3B0aW9ucyB7XG4gICAgY29uc3Qgc3R5bGVPcHRpb25zOiBJdGVtU3R5bGVPcHRpb25zW10gPSBTdHlsZS5tYXAoKHN0eWxlKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiBzdHlsZS5OYW1lLFxuICAgICAgICB0aXRsZTogc3R5bGUuVGl0bGVcbiAgICAgIH07XG4gICAgfSlcbiAgICAgIC8vIEhhbmRsZSByZXBlYXQgdGhlIHN0eWxlIFwiZGVmYXVsdFwiIGluIG91dHB1dCAgKE1hcFNlcnZlciBvciBPcGVuTGF5ZXIpXG4gICAgICAuZmlsdGVyKFxuICAgICAgICAoaXRlbSwgaW5kZXgsIHNlbGYpID0+XG4gICAgICAgICAgc2VsZi5maW5kSW5kZXgoKGk6IEl0ZW1TdHlsZU9wdGlvbnMpID0+IGkubmFtZSA9PT0gaXRlbS5uYW1lKSA9PT1cbiAgICAgICAgICBpbmRleFxuICAgICAgKTtcblxuICAgIGNvbnN0IGxlZ2VuZE9wdGlvbnM6IExlZ2VuZE9wdGlvbnMgPSB7XG4gICAgICBzdHlsZXNBdmFpbGFibGU6IHN0eWxlT3B0aW9uc1xuICAgIH0gYXMgTGVnZW5kT3B0aW9ucztcblxuICAgIHJldHVybiBsZWdlbmRPcHRpb25zO1xuICB9XG59XG4iXX0=
|
|
@@ -38,24 +38,24 @@ DrawPopupComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawPopu
|
|
|
38
38
|
i0.ɵɵelementEnd();
|
|
39
39
|
i0.ɵɵelementStart(12, "button", 7);
|
|
40
40
|
i0.ɵɵlistener("click", function DrawPopupComponent_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r1); const _r0 = i0.ɵɵreference(6); return i0.ɵɵresetView(ctx.confirm(_r0.value)); });
|
|
41
|
-
i0.ɵɵtext(13, "
|
|
41
|
+
i0.ɵɵtext(13, "OK ");
|
|
42
42
|
i0.ɵɵelementEnd()();
|
|
43
43
|
} if (rf & 2) {
|
|
44
44
|
i0.ɵɵadvance(2);
|
|
45
|
-
i0.ɵɵ
|
|
45
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 4, "igo.geo.draw.dialogInstruction"));
|
|
46
46
|
i0.ɵɵadvance(3);
|
|
47
47
|
i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(7, 6, "igo.geo.draw.dialogTitle"));
|
|
48
48
|
i0.ɵɵpropertyInterpolate("value", ctx.data.currentLabel);
|
|
49
49
|
i0.ɵɵadvance(5);
|
|
50
|
-
i0.ɵɵtextInterpolate1("
|
|
50
|
+
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(11, 8, "igo.geo.draw.cancel"), " ");
|
|
51
51
|
} }, dependencies: [i2.MatButton, i3.MatFormField, i4.MatInput, i1.MatDialogContent, i1.MatDialogActions, i5.TranslatePipe] });
|
|
52
52
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DrawPopupComponent, [{
|
|
53
53
|
type: Component,
|
|
54
|
-
args: [{ selector: 'igo-draw-popup-component', template: "<div mat-dialog-content>\n <p class=\"mat-typography\"
|
|
54
|
+
args: [{ selector: 'igo-draw-popup-component', template: "<div mat-dialog-content>\n <p class=\"mat-typography\">{{ 'igo.geo.draw.dialogInstruction' | translate }}</p>\n <mat-form-field class=\"example-full-width\">\n <input\n #input\n matInput\n placeholder=\"{{'igo.geo.draw.dialogTitle' | translate}}\"\n value=\"{{data.currentLabel}}\"/>\n </mat-form-field>\n</div>\n<div mat-dialog-actions>\n <button \n mat-raised-button \n (click)=\"cancelDrawing()\">{{'igo.geo.draw.cancel' | translate}}\n </button>\n <button \n mat-raised-button \n color=\"primary\" \n (click)=\"confirm(input.value)\">OK\n </button>\n</div>\n" }]
|
|
55
55
|
}], function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
56
56
|
type: Inject,
|
|
57
57
|
args: [MAT_DIALOG_DATA]
|
|
58
58
|
}] }]; }, { confirmFlag: [{
|
|
59
59
|
type: Input
|
|
60
60
|
}] }); })();
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhdy1wb3B1cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kcmF3L2RyYXcvZHJhdy1wb3B1cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kcmF3L2RyYXcvZHJhdy1wb3B1cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFnQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7OztBQU96RSxNQUFNLE9BQU8sa0JBQWtCO0lBRzdCLFlBQ1MsU0FBMkMsRUFDbEIsSUFBOEI7UUFEdkQsY0FBUyxHQUFULFNBQVMsQ0FBa0M7UUFDbEIsU0FBSSxHQUFKLElBQUksQ0FBMEI7UUFKdkQsZ0JBQVcsR0FBWSxLQUFLLENBQUM7SUFJNEIsQ0FBQztJQUVuRSxhQUFhO1FBQ1gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsT0FBTyxDQUFDLFdBQW1CO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7O29GQWRVLGtCQUFrQiw4REFLbkIsZUFBZTtxRUFMZCxrQkFBa0I7O1FDUi9CLDhCQUF3QixXQUFBO1FBQ0ksWUFBa0Q7O1FBQUEsaUJBQUk7UUFDaEYseUNBQTJDO1FBQ3pDLDhCQUlpQzs7UUFDbkMsaUJBQWlCLEVBQUE7UUFFbkIsOEJBQXdCLGdCQUFBO1FBR3BCLCtGQUFTLG1CQUFlLElBQUM7UUFBQyxhQUM1Qjs7UUFBQSxpQkFBUztRQUNULGtDQUdpQztRQUEvQixzSkFBUyxlQUFBLHNCQUFvQixDQUFBLElBQUM7UUFBQyxvQkFDakM7UUFBQSxpQkFBUyxFQUFBOztRQWxCaUIsZUFBa0Q7UUFBbEQsNEVBQWtEO1FBS3hFLGVBQXdEO1FBQXhELHlGQUF3RDtRQUN4RCx3REFBNkI7UUFNTCxlQUM1QjtRQUQ0Qiw0RUFDNUI7O3VGRE5XLGtCQUFrQjtjQUw5QixTQUFTOzJCQUNFLDBCQUEwQjs7c0JBU2pDLE1BQU07dUJBQUMsZUFBZTt3QkFKaEIsV0FBVztrQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tZHJhdy1wb3B1cC1jb21wb25lbnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZHJhdy1wb3B1cC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RyYXctcG9wdXAuY29tcG9uZW50LnNjc3MnXVxuICB9KVxuZXhwb3J0IGNsYXNzIERyYXdQb3B1cENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGNvbmZpcm1GbGFnOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPERyYXdQb3B1cENvbXBvbmVudD4sXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiB7IGN1cnJlbnRMYWJlbDogc3RyaW5nIH0pe31cblxuICBjYW5jZWxEcmF3aW5nKCkge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gIH1cblxuICBjb25maXJtKGxhYmVsU3RyaW5nOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNvbmZpcm1GbGFnID0gdHJ1ZTtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShsYWJlbFN0cmluZyk7XG4gIH1cbn1cbiIsIjxkaXYgbWF0LWRpYWxvZy1jb250ZW50PlxuICA8cCBjbGFzcz1cIm1hdC10eXBvZ3JhcGh5XCI+e3sgJ2lnby5nZW8uZHJhdy5kaWFsb2dJbnN0cnVjdGlvbicgfCB0cmFuc2xhdGUgfX08L3A+XG4gIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImV4YW1wbGUtZnVsbC13aWR0aFwiPlxuICAgIDxpbnB1dFxuICAgICAgI2lucHV0XG4gICAgICBtYXRJbnB1dFxuICAgICAgcGxhY2Vob2xkZXI9XCJ7eydpZ28uZ2VvLmRyYXcuZGlhbG9nVGl0bGUnIHwgdHJhbnNsYXRlfX1cIlxuICAgICAgdmFsdWU9XCJ7e2RhdGEuY3VycmVudExhYmVsfX1cIi8+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L2Rpdj5cbjxkaXYgbWF0LWRpYWxvZy1hY3Rpb25zPlxuICA8YnV0dG9uIFxuICAgIG1hdC1yYWlzZWQtYnV0dG9uIFxuICAgIChjbGljayk9XCJjYW5jZWxEcmF3aW5nKClcIj57eydpZ28uZ2VvLmRyYXcuY2FuY2VsJyB8IHRyYW5zbGF0ZX19XG4gIDwvYnV0dG9uPlxuICA8YnV0dG9uIFxuICAgIG1hdC1yYWlzZWQtYnV0dG9uIFxuICAgIGNvbG9yPVwicHJpbWFyeVwiIFxuICAgIChjbGljayk9XCJjb25maXJtKGlucHV0LnZhbHVlKVwiPk9LXG4gIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
|