@hestia-earth/ui-components 0.24.0-4 → 0.24.0-5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,4 @@
1
+ /// <reference types="google.maps" />
1
2
  import { HttpClient } from '@angular/common/http';
2
3
  import { InjectionToken } from '@angular/core';
3
4
  import { Observable } from 'rxjs';
@@ -55,7 +56,12 @@ export declare const markerPie: (configs: IMarkerPieConfig[], size?: number) =>
55
56
  labelOrigin: google.maps.Point;
56
57
  };
57
58
  export declare const markerIcon: (scale?: number) => google.maps.Symbol;
58
- export declare const createMarker: (position?: google.maps.LatLng | google.maps.LatLngLiteral, text?: string, color?: string, scale?: number) => google.maps.Marker;
59
+ export interface IMarker {
60
+ position: google.maps.LatLng | google.maps.LatLngLiteral;
61
+ label: google.maps.MarkerLabel;
62
+ icon: google.maps.Symbol;
63
+ }
64
+ export declare const createMarker: (position?: google.maps.LatLng | google.maps.LatLngLiteral, text?: string, color?: string, scale?: number) => IMarker;
59
65
  interface IPolygon {
60
66
  type: 'Polygon';
61
67
  coordinates: number[][][];
@@ -78,11 +84,16 @@ export interface IGeometryCollection {
78
84
  type: 'GeometryCollection';
79
85
  geometries: geometry[];
80
86
  }
81
- type feature = IFeature | IFeatureCollection | IGeometryCollection | IPolygon | IMultiPolygon;
87
+ export type feature = IFeature | IFeatureCollection | IGeometryCollection | IPolygon | IMultiPolygon;
82
88
  export declare const defaultFeature: () => IFeature;
83
89
  export declare const pointToCoordinates: (point: google.maps.LatLng) => number[];
84
90
  export declare const coordinatesToPoint: (values: (number | number[])[]) => any;
85
91
  export declare const polygonToCoordinates: (polygon: google.maps.Polygon) => number[][];
92
+ export interface IPolygonMap {
93
+ paths: google.maps.MVCArray<google.maps.MVCArray<google.maps.LatLng>>;
94
+ options: google.maps.PolygonOptions;
95
+ }
96
+ export declare const polygonToMap: (polygon: google.maps.Polygon, color?: string) => IPolygonMap;
86
97
  export declare const addPolygonToFeature: (feat: feature, polygon: google.maps.Polygon) => any;
87
98
  export declare const polygonsFromFeature: (feat: feature, color?: string) => google.maps.Polygon[];
88
99
  export declare const polygonBounds: (polygon?: google.maps.Polygon | google.maps.Polygon[]) => google.maps.LatLngBounds;
@@ -1,6 +1,6 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  import { of } from 'rxjs';
3
- import { catchError, map, mergeMap, shareReplay } from 'rxjs/operators';
3
+ import { catchError, delay, map, mergeMap, shareReplay } from 'rxjs/operators';
4
4
  const loadMapUrl = 'https://maps.googleapis.com/maps/api/js';
5
5
  const buildMapsUrl = (params) => Object.entries(params)
6
6
  .filter(([_key, values]) => values.length)
@@ -23,7 +23,7 @@ export const HE_MAP_LOADED = new InjectionToken('Google Maps API Loaded');
23
23
  * @param libraries
24
24
  * @returns
25
25
  */
26
- export const loadMapApi = (apiKey, libraries = ['visualization', 'drawing']) => (httpClient) => of(`${loadMapUrl}?${buildMapsUrl({ key: [apiKey], libraries })}`).pipe(mergeMap(url => httpClient.jsonp(url, 'callback')), shareReplay({ bufferSize: 1, refCount: true }), map(() => true), catchError(e => {
26
+ export const loadMapApi = (apiKey, libraries = ['visualization', 'drawing']) => (httpClient) => of(`${loadMapUrl}?${buildMapsUrl({ key: [apiKey], libraries })}`).pipe(mergeMap(url => httpClient.jsonp(url, 'callback')), shareReplay({ bufferSize: 1, refCount: true }), delay(100), map(() => true), catchError(e => {
27
27
  console.error(e);
28
28
  return of(false);
29
29
  }));
@@ -88,13 +88,13 @@ export const markerIcon = (scale = 7) => ({
88
88
  scale,
89
89
  labelOrigin: new google.maps.Point(0, -2)
90
90
  });
91
- export const createMarker = (position, text = '', color = fillColor, scale) => (position && position.lat && position.lng
92
- ? new google.maps.Marker({
91
+ export const createMarker = (position, text = '', color = fillColor, scale) => position?.lat && position?.lng
92
+ ? {
93
93
  position,
94
94
  label: { color, text },
95
95
  icon: markerIcon(scale)
96
- })
97
- : undefined);
96
+ }
97
+ : undefined;
98
98
  export const defaultFeature = () => ({
99
99
  type: 'Feature',
100
100
  properties: {},
@@ -123,6 +123,13 @@ export const polygonToCoordinates = (polygon) => polygon
123
123
  const points = path.getArray();
124
124
  return [...points.map(pointToCoordinates), pointToCoordinates(points[0])];
125
125
  })[0];
126
+ export const polygonToMap = (polygon, color = strokeColor) => ({
127
+ paths: polygon.getPaths(),
128
+ options: {
129
+ ...strokeStyle,
130
+ strokeColor: color
131
+ }
132
+ });
126
133
  const coordinatesToPolygon = (coordinates, color = strokeColor) => new google.maps.Polygon({
127
134
  paths: coordinates.map(coordinatesToPoint).filter(Boolean),
128
135
  ...strokeStyle,
@@ -151,4 +158,4 @@ export const polygonBounds = (polygon) => {
151
158
  : [];
152
159
  return paths.reduce((prev, curr) => prev.extend(curr), new google.maps.LatLngBounds());
153
160
  };
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcy11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vbWFwcy11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhFLE1BQU0sVUFBVSxHQUFHLHlDQUF5QyxDQUFDO0FBQzdELE1BQU0sWUFBWSxHQUFHLENBQUMsTUFBZ0MsRUFBRSxFQUFFLENBQ3hELE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO0tBQ25CLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0tBQ3pDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7S0FDcEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRWYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLElBQUksY0FBYyxDQUFzQix3QkFBd0IsQ0FBQyxDQUFDO0FBRS9GOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FDckIsQ0FBQyxNQUFjLEVBQUUsU0FBUyxHQUFHLENBQUMsZUFBZSxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FDN0QsQ0FBQyxVQUFzQixFQUFFLEVBQUUsQ0FDekIsRUFBRSxDQUFDLEdBQUcsVUFBVSxJQUFJLFlBQVksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNB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LENBQUMsQ0FBQyxDQUNoRjtRQUNILENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUV0RixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxPQUFxRCxFQUFFLEVBQUU7SUFDckYsTUFBTSxLQUFLLEdBQUcsT0FBTztRQUNuQixDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFDdEIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ3JELENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtRQUN2QyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ1AsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztBQUN6RixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIG1lcmdlTWFwLCBzaGFyZVJlcGxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuY29uc3QgbG9hZE1hcFVybCA9ICdodHRwczovL21hcHMuZ29vZ2xlYXBpcy5jb20vbWFwcy9hcGkvanMnO1xuY29uc3QgYnVpbGRNYXBzVXJsID0gKHBhcmFtczogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+KSA9PlxuICBPYmplY3QuZW50cmllcyhwYXJhbXMpXG4gICAgLmZpbHRlcigoW19rZXksIHZhbHVlc10pID0+IHZhbHVlcy5sZW5ndGgpXG4gICAgLm1hcCgoW2tleSwgdmFsdWVzXSkgPT4gYCR7a2V5fT0ke3ZhbHVlcy5qb2luKCcsJyl9YClcbiAgICAuam9pbignJicpO1xuXG5leHBvcnQgY29uc3QgSEVfTUFQX0xPQURFRCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxPYnNlcnZhYmxlPGJvb2xlYW4+PignR29vZ2xlIE1hcHMgQVBJIExvYWRlZCcpO1xuXG4vKipcbiAqIFVzYWdlOlxuICogYGBgXG4gKiAvLyBpbXBvcnQgSHR0cENsaWVudEpzb25wTW9kdWxlXG4gKiBpbXBvcnRzOiBbSHR0cENsaWVudEpzb25wTW9kdWxlXVxuICpcbiAqIC8vIEluamVjdCBpbiBtb2R1bGVcbiAqIHByb3ZpZGVyczogW3sgcHJvdmlkZTogSEVfTUFQX0xPQURFRCwgdXNlRmFjdG9yeTogbG9hZE1hcEFwaShhcGlLZXkpLCBkZXBzOiBbSHR0cENsaWVudF19IF1cbiAqXG4gKiAvLyBJbmplY3QgaW4gY29tcG9uZW50XG4gKiBjb25zdHJ1Y3RvcihASW5qZWN0KEhFX01BUF9MT0FERUQpIHB1YmxpYyBtYXBMb2FkZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+KSB7IH1cbiAqIGBgYFxuICogQHBhcmFtIGFwaUtleVxuICogQHBhcmFtIGxpYnJhcmllc1xuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRNYXBBcGkgPVxuICAoYXBpS2V5OiBzdHJpbmcsIGxpYnJhcmllcyA9IFsndmlzdWFsaXphdGlvbicsICdkcmF3aW5nJ10pID0+XG4gIChodHRwQ2xpZW50OiBIdHRwQ2xpZW50KSA9PlxuICAgIG9mKGAke2xvYWRNYXBVcmx9PyR7YnVpbGRNYXBzVXJsKHsga2V5OiBbYXBpS2V5XSwgbGlicmFyaWVzIH0pfWApLnBpcGUoXG4gICAgICBtZXJnZU1hcCh1cmwgPT4gaHR0cENsaWVudC5qc29ucCh1cmwsICdjYWxsYmFjaycpKSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSksXG4gICAgICBtYXAoKCkgPT4gdHJ1ZSksXG4gICAgICBjYXRjaEVycm9yKGUgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgICAgfSlcbiAgICApO1xuXG5leHBvcnQgY29uc3QgbG9jYXRpb25RdWVyeSA9IChib3VuZHM6IGdvb2dsZS5tYXBzLkxhdExuZ0JvdW5kcywgc2VhcmNoRmllbGQgPSAnbG9jYXRpb24nKSA9PiB7XG4gIGNvbnN0IHRvcFJpZ2h0ID0gYm91bmRzLmdldE5vcnRoRWFzdCgpO1xuICBjb25zdCBib3R0b21MZWZ0ID0gYm91bmRzLmdldFNvdXRoV2VzdCgpO1xuICByZXR1cm4ge1xuICAgIGdlb19ib3VuZGluZ19ib3g6IHtcbiAgICAgIFtzZWFyY2hGaWVsZF06IHtcbiAgICAgICAgdG9wX2xlZnQ6IHsgbGF0OiB0b3BSaWdodC5sYXQoKSwgbG9uOiBib3R0b21MZWZ0LmxuZygpIH0sXG4gICAgICAgIGJvdHRvbV9yaWdodDogeyBsYXQ6IGJvdHRvbUxlZnQubGF0KCksIGxvbjogdG9wUmlnaHQubG5nKCkgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBmaWxsQ29sb3IgPSAnIzE5Mzk1Nyc7XG5leHBvcnQgY29uc3Qgc3Ryb2tlQ29sb3IgPSAnIzBDMUIyOSc7XG5cbmV4cG9ydCBjb25zdCBmaWxsU3R5bGUgPSB7XG4gIGZpbGxDb2xvcixcbiAgZmlsbE9wYWNpdHk6IDAuNlxufTtcblxuZXhwb3J0IGNvbnN0IHN0cm9rZVN0eWxlID0ge1xuICBzdHJva2VDb2xvcixcbiAgc3Ryb2tlT3BhY2l0eTogMC42LFxuICBzdHJva2VXZWlnaHQ6IDFcbn07XG5cbmV4cG9ydCBjb25zdCBjbHVzdGVyZXJJbWFnZSA9ICdodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9leGFtcGxlcy9tYXJrZXJjbHVzdGVyZXIvbSc7XG5cbmNvbnN0IGdldENvb3JkaW5hdGVzRm9yUGVyY2VudCA9IChwZXJjZW50OiBudW1iZXIpID0+IHtcbiAgY29uc3QgeCA9IE1hdGguY29zKDIgKiBNYXRoLlBJICogcGVyY2VudCk7XG4gIGNvbnN0IHkgPSBNYXRoLnNpbigyICogTWF0aC5QSSAqIHBlcmNlbnQpO1xuICByZXR1cm4gW3gsIHldO1xufTtcblxuaW50ZXJmYWNlIElNYXJrZXJQaWVDb25maWcge1xuICBwZXJjZW50OiBudW1iZXI7XG4gIGNvbG9yOiBzdHJpbmc7XG59XG5cbmNvbnN0IHBpZVVybCA9IChjb25maWdzOiBJTWFya2VyUGllQ29uZmlnW10sIHNpemU6IG51bWJlcikgPT4ge1xuICBsZXQgY3VtdWxhdGl2ZVBlcmNlbnQgPSAwO1xuXG4gIHJldHVybiAoXG4gICAgJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGYtOCwnICtcbiAgICBlbmNvZGVVUklDb21wb25lbnQoXG4gICAgICBgXG4gICAgPHN2ZyB3aWR0aD1cIiR7c2l6ZX1cIiBoZWlnaHQ9XCIke3NpemV9XCIgdmlld0JveD1cIi0xIC0xIDIgMlwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj4ke2NvbmZpZ3NcbiAgICAgIC5tYXAoKHsgcGVyY2VudCwgY29sb3IgfSkgPT4ge1xuICAgICAgICBjb25zdCBbc3RhcnRYLCBzdGFydFldID0gZ2V0Q29vcmRpbmF0ZXNGb3JQZXJjZW50KGN1bXVsYXRpdmVQZXJjZW50KTtcbiAgICAgICAgY3VtdWxhdGl2ZVBlcmNlbnQgKz0gcGVyY2VudDtcbiAgICAgICAgY29uc3QgW2VuZFgsIGVuZFldID0gZ2V0Q29vcmRpbmF0ZXNGb3JQZXJjZW50KGN1bXVsYXRpdmVQZXJjZW50KTtcbiAgICAgICAgY29uc3QgbGFyZ2VBcmNGbGFnID0gcGVyY2VudCA+IDAuNSA/IDEgOiAwO1xuICAgICAgICBjb25zdCBwYXRoRGF0YSA9IFtcbiAgICAgICAgICBgTSAke3N0YXJ0WH0gJHtzdGFydFl9YCwgLy8gTW92ZVxuICAgICAgICAgIGBBIDEgMSAwICR7bGFyZ2VBcmNGbGFnfSAxICR7ZW5kWH0gJHtlbmRZfWAsIC8vIEFyY1xuICAgICAgICAgIGBMIDAgMGAgLy8gTGluZVxuICAgICAgICBdLmpvaW4oJyAnKTtcbiAgICAgICAgcmV0dXJuIGA8cGF0aCBmaWxsPVwiJHtjb2xvcn1cIiBkPVwiJHtwYXRoRGF0YX1cIj48L3BhdGg+YDtcbiAgICAgIH0pXG4gICAgICAuam9pbignJyl9PC9zdmc+XG4gIGAudHJpbSgpXG4gICAgKVxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IG1hcmtlclBpZSA9IChjb25maWdzOiBJTWFya2VyUGllQ29uZmlnW10sIHNpemUgPSA3KSA9PiAoe1xuICBhbmNob3I6IG5ldyBnb29nbGUubWFwcy5Qb2ludChzaXplIC8gMiwgc2l6ZSAvIDIpLFxuICB1cmw6IHBpZVVybChjb25maWdzLCBzaXplKSxcbiAgbGFiZWxPcmlnaW46IG5ldyBnb29nbGUubWFwcy5Qb2ludCgwLCAtMilcbn0pO1xuXG5leHBvcnQgY29uc3QgbWFya2VySWNvbiA9IChzY2FsZSA9IDcpOiBnb29nbGUubWFwcy5TeW1ib2wgPT4gKHtcbiAgcGF0aDogZ29vZ2xlLm1hcHMuU3ltYm9sUGF0aC5DSVJDTEUsXG4gIC4uLmZpbGxTdHlsZSxcbiAgLi4uc3Ryb2tlU3R5bGUsXG4gIHNjYWxlLFxuICBsYWJlbE9yaWdpbjogbmV3IGdvb2dsZS5tYXBzLlBvaW50KDAsIC0yKVxufSk7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVNYXJrZXIgPSAoXG4gIHBvc2l0aW9uPzogZ29vZ2xlLm1hcHMuTGF0TG5nIHwgZ29vZ2xlLm1hcHMuTGF0TG5nTGl0ZXJhbCxcbiAgdGV4dCA9ICcnLFxuICBjb2xvciA9IGZpbGxDb2xvcixcbiAgc2NhbGU/OiBudW1iZXJcbikgPT5cbiAgKHBvc2l0aW9uICYmIHBvc2l0aW9uLmxhdCAmJiBwb3NpdGlvbi5sbmdcbiAgICA/IG5ldyBnb29nbGUubWFwcy5NYXJrZXIoe1xuICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgbGFiZWw6IHsgY29sb3IsIHRleHQgfSxcbiAgICAgICAgaWNvbjogbWFya2VySWNvbihzY2FsZSlcbiAgICAgIH0pXG4gICAgOiB1bmRlZmluZWQpIGFzIGdvb2dsZS5tYXBzLk1hcmtlcjtcblxuaW50ZXJmYWNlIElQb2x5Z29uIHtcbiAgdHlwZTogJ1BvbHlnb24nO1xuICBjb29yZGluYXRlczogbnVtYmVyW11bXVtdO1xufVxuXG5pbnRlcmZhY2UgSU11bHRpUG9seWdvbiB7XG4gIHR5cGU6ICdNdWx0aVBvbHlnb24nO1xuICBjb29yZGluYXRlczogbnVtYmVyW11bXVtdO1xufVxuXG50eXBlIGdlb21ldHJ5ID0gSVBvbHlnb24gfCBJTXVsdGlQb2x5Z29uO1xuXG5leHBvcnQgaW50ZXJmYWNlIElGZWF0dXJlIHtcbiAgdHlwZTogJ0ZlYXR1cmUnO1xuICBwcm9wZXJ0aWVzOiBhbnk7XG4gIGdlb21ldHJ5OiBnZW9tZXRyeTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRmVhdHVyZUNvbGxlY3Rpb24ge1xuICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nO1xuICBmZWF0dXJlczogSUZlYXR1cmVbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR2VvbWV0cnlDb2xsZWN0aW9uIHtcbiAgdHlwZTogJ0dlb21ldHJ5Q29sbGVjdGlvbic7XG4gIGdlb21ldHJpZXM6IGdlb21ldHJ5W107XG59XG5cbnR5cGUgZmVhdHVyZSA9IElGZWF0dXJlIHwgSUZlYXR1cmVDb2xsZWN0aW9uIHwgSUdlb21ldHJ5Q29sbGVjdGlvbiB8IElQb2x5Z29uIHwgSU11bHRpUG9seWdvbjtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRGZWF0dXJlID0gKCk6IElGZWF0dXJlID0+ICh7XG4gIHR5cGU6ICdGZWF0dXJlJyxcbiAgcHJvcGVydGllczoge30sXG4gIGdlb21ldHJ5OiB7XG4gICAgdHlwZTogJ1BvbHlnb24nLFxuICAgIGNvb3JkaW5hdGVzOiBbXVxuICB9IGFzIGdlb21ldHJ5XG59KTtcblxuZXhwb3J0IGNvbnN0IHBvaW50VG9Db29yZGluYXRlcyA9IChwb2ludDogZ29vZ2xlLm1hcHMuTGF0TG5nKSA9PiBbcG9pbnQubG5nKCksIHBvaW50LmxhdCgpXTtcblxuZXhwb3J0IGNvbnN0IGNvb3JkaW5hdGVzVG9Qb2ludCA9ICh2YWx1ZXM6IChudW1iZXIgfCBudW1iZXJbXSlbXSkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlc1swXSlcbiAgICAgID8gdmFsdWVzLm1hcCgodjogYW55KSA9PiBjb29yZGluYXRlc1RvUG9pbnQodikpXG4gICAgICA6ICh2YWx1ZXMgYXMgbnVtYmVyW10pPy5zb21lKGlzTmFOKVxuICAgICAgPyBudWxsXG4gICAgICA6IG5ldyBnb29nbGUubWFwcy5MYXRMbmcoKHZhbHVlcyBhcyBudW1iZXJbXSlbMV0sICh2YWx1ZXMgYXMgbnVtYmVyW10pWzBdKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBwb2x5Z29uVG9Db29yZGluYXRlcyA9IChwb2x5Z29uOiBnb29nbGUubWFwcy5Qb2x5Z29uKSA9PlxuICBwb2x5Z29uXG4gICAgLmdldFBhdGhzKClcbiAgICAuZ2V0QXJyYXkoKVxuICAgIC5tYXAocGF0aCA9PiB7XG4gICAgICBjb25zdCBwb2ludHMgPSBwYXRoLmdldEFycmF5KCk7XG4gICAgICByZXR1cm4gWy4uLnBvaW50cy5tYXAocG9pbnRUb0Nvb3JkaW5hdGVzKSwgcG9pbnRUb0Nvb3JkaW5hdGVzKHBvaW50c1swXSldO1xuICAgIH0pWzBdO1xuXG5jb25zdCBjb29yZGluYXRlc1RvUG9seWdvbiA9IChjb29yZGluYXRlczogbnVtYmVyW11bXSwgY29sb3IgPSBzdHJva2VDb2xvcikgPT5cbiAgbmV3IGdvb2dsZS5tYXBzLlBvbHlnb24oe1xuICAgIHBhdGhzOiBjb29yZGluYXRlcy5tYXAoY29vcmRpbmF0ZXNUb1BvaW50KS5maWx0ZXIoQm9vbGVhbiksXG4gICAgLi4uc3Ryb2tlU3R5bGUsXG4gICAgc3Ryb2tlQ29sb3I6IGNvbG9yXG4gIH0pO1xuXG5jb25zdCBnZXRDb29yZGluYXRlcyA9IChmZWF0OiBmZWF0dXJlKSA9PlxuICBmZWF0LnR5cGUgPT09ICdQb2x5Z29uJyB8fCBmZWF0LnR5cGUgPT09ICdNdWx0aVBvbHlnb24nXG4gICAgPyBmZWF0LmNvb3JkaW5hdGVzXG4gICAgOiBmZWF0LnR5cGUgPT09ICdGZWF0dXJlJ1xuICAgID8gZmVhdC5nZW9tZXRyeT8uY29vcmRpbmF0ZXNcbiAgICA6IFtdO1xuXG5leHBvcnQgY29uc3QgYWRkUG9seWdvblRvRmVhdHVyZSA9IChmZWF0OiBmZWF0dXJlLCBwb2x5Z29uOiBnb29nbGUubWFwcy5Qb2x5Z29uKSA9PlxuICBmZWF0LnR5cGUgPT09ICdGZWF0dXJlQ29sbGVjdGlvbidcbiAgICA/IGZlYXQuZmVhdHVyZXMucHVzaChhZGRQb2x5Z29uVG9GZWF0dXJlKGRlZmF1bHRGZWF0dXJlKCksIHBvbHlnb24pKVxuICAgIDogZmVhdC50eXBlID09PSAnR2VvbWV0cnlDb2xsZWN0aW9uJ1xuICAgID8gZmVhdC5nZW9tZXRyaWVzLm1hcChnZW9tZXRyeSA9PiAoZ2VvbWV0cnk/LmNvb3JkaW5hdGVzIHx8IFtdKS5wdXNoKHBvbHlnb25Ub0Nvb3JkaW5hdGVzKHBvbHlnb24pKSlcbiAgICA6IChnZXRDb29yZGluYXRlcyhmZWF0KSB8fCBbXSkucHVzaChwb2x5Z29uVG9Db29yZGluYXRlcyhwb2x5Z29uKSk7XG5cbmV4cG9ydCBjb25zdCBwb2x5Z29uc0Zyb21GZWF0dXJlID0gKGZlYXQ6IGZlYXR1cmUsIGNvbG9yPzogc3RyaW5nKTogZ29vZ2xlLm1hcHMuUG9seWdvbltdID0+XG4gIGZlYXQudHlwZSA9PT0gJ0ZlYXR1cmVDb2xsZWN0aW9uJ1xuICAgID8gZmVhdC5mZWF0dXJlcy5mbGF0TWFwKHZhbHVlcyA9PiBwb2x5Z29uc0Zyb21GZWF0dXJlKHZhbHVlcywgY29sb3IpKVxuICAgIDogZmVhdC50eXBlID09PSAnR2VvbWV0cnlDb2xsZWN0aW9uJ1xuICAgID8gZmVhdC5nZW9tZXRyaWVzPy5mbGF0TWFwKGdlb21ldHJ5ID0+XG4gICAgICAgIChnZW9tZXRyeS5jb29yZGluYXRlcyB8fCBbXSkubWFwKHZhbHVlcyA9PiBjb29yZGluYXRlc1RvUG9seWdvbih2YWx1ZXMsIGNvbG9yKSlcbiAgICAgIClcbiAgICA6IChnZXRDb29yZGluYXRlcyhmZWF0KSB8fCBbXSkubWFwKHZhbHVlcyA9PiBjb29yZGluYXRlc1RvUG9seWdvbih2YWx1ZXMsIGNvbG9yKSk7XG5cbmV4cG9ydCBjb25zdCBwb2x5Z29uQm91bmRzID0gKHBvbHlnb24/OiBnb29nbGUubWFwcy5Qb2x5Z29uIHwgZ29vZ2xlLm1hcHMuUG9seWdvbltdKSA9PiB7XG4gIGNvbnN0IHBhdGhzID0gcG9seWdvblxuICAgID8gQXJyYXkuaXNBcnJheShwb2x5Z29uKVxuICAgICAgPyBwb2x5Z29uLmZsYXRNYXAocCA9PiBwLmdldFBhdGgoKT8uZ2V0QXJyYXkoKSB8fCBbXSlcbiAgICAgIDogcG9seWdvbi5nZXRQYXRoKCk/LmdldEFycmF5KCkgfHwgW11cbiAgICA6IFtdO1xuICByZXR1cm4gcGF0aHMucmVkdWNlKChwcmV2LCBjdXJyKSA9PiBwcmV2LmV4dGVuZChjdXJyKSwgbmV3IGdvb2dsZS5tYXBzLkxhdExuZ0JvdW5kcygpKTtcbn07XG4iXX0=
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcy11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vbWFwcy11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvRSxNQUFNLFVBQVUsR0FBRyx5Q0FBeUMsQ0FBQztBQUM3RCxNQUFNLFlBQVksR0FBRyxDQUFDLE1BQWdDLEVBQUUsRUFBRSxDQUN4RCxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztLQUNuQixNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztLQUN6QyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0tBQ3BELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUVmLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBc0Isd0JBQXdCLENBQUMsQ0FBQztBQUUvRjs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQ3JCLENBQUMsTUFBYyxFQUFFLFNBQVMsR0FBRyxDQUFDLGVBQWUsRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFLENBQzdELENBQUMsVUFBc0IsRUFBRSxFQUFFLENBQ3pCLEVBQUUsQ0FBQyxHQUFHLFVBQVUsSUFBSSxZQUFZLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENB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QUNwQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FDbEMsQ0FBQyxRQUFRLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUNoRjtRQUNILENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUV0RixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxPQUFxRCxFQUFFLEVBQUU7SUFDckYsTUFBTSxLQUFLLEdBQUcsT0FBTztRQUNuQixDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFDdEIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ3JELENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtRQUN2QyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ1AsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztBQUN6RixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkZWxheSwgbWFwLCBtZXJnZU1hcCwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmNvbnN0IGxvYWRNYXBVcmwgPSAnaHR0cHM6Ly9tYXBzLmdvb2dsZWFwaXMuY29tL21hcHMvYXBpL2pzJztcbmNvbnN0IGJ1aWxkTWFwc1VybCA9IChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPikgPT5cbiAgT2JqZWN0LmVudHJpZXMocGFyYW1zKVxuICAgIC5maWx0ZXIoKFtfa2V5LCB2YWx1ZXNdKSA9PiB2YWx1ZXMubGVuZ3RoKVxuICAgIC5tYXAoKFtrZXksIHZhbHVlc10pID0+IGAke2tleX09JHt2YWx1ZXMuam9pbignLCcpfWApXG4gICAgLmpvaW4oJyYnKTtcblxuZXhwb3J0IGNvbnN0IEhFX01BUF9MT0FERUQgPSBuZXcgSW5qZWN0aW9uVG9rZW48T2JzZXJ2YWJsZTxib29sZWFuPj4oJ0dvb2dsZSBNYXBzIEFQSSBMb2FkZWQnKTtcblxuLyoqXG4gKiBVc2FnZTpcbiAqIGBgYFxuICogLy8gaW1wb3J0IEh0dHBDbGllbnRKc29ucE1vZHVsZVxuICogaW1wb3J0czogW0h0dHBDbGllbnRKc29ucE1vZHVsZV1cbiAqXG4gKiAvLyBJbmplY3QgaW4gbW9kdWxlXG4gKiBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEhFX01BUF9MT0FERUQsIHVzZUZhY3Rvcnk6IGxvYWRNYXBBcGkoYXBpS2V5KSwgZGVwczogW0h0dHBDbGllbnRdfSBdXG4gKlxuICogLy8gSW5qZWN0IGluIGNvbXBvbmVudFxuICogY29uc3RydWN0b3IoQEluamVjdChIRV9NQVBfTE9BREVEKSBwdWJsaWMgbWFwTG9hZGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPikgeyB9XG4gKiBgYGBcbiAqIEBwYXJhbSBhcGlLZXlcbiAqIEBwYXJhbSBsaWJyYXJpZXNcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBjb25zdCBsb2FkTWFwQXBpID1cbiAgKGFwaUtleTogc3RyaW5nLCBsaWJyYXJpZXMgPSBbJ3Zpc3VhbGl6YXRpb24nLCAnZHJhd2luZyddKSA9PlxuICAoaHR0cENsaWVudDogSHR0cENsaWVudCkgPT5cbiAgICBvZihgJHtsb2FkTWFwVXJsfT8ke2J1aWxkTWFwc1VybCh7IGtleTogW2FwaUtleV0sIGxpYnJhcmllcyB9KX1gKS5waXBlKFxuICAgICAgbWVyZ2VNYXAodXJsID0+IGh0dHBDbGllbnQuanNvbnAodXJsLCAnY2FsbGJhY2snKSksXG4gICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pLFxuICAgICAgZGVsYXkoMTAwKSxcbiAgICAgIG1hcCgoKSA9PiB0cnVlKSxcbiAgICAgIGNhdGNoRXJyb3IoZSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICB9KVxuICAgICk7XG5cbmV4cG9ydCBjb25zdCBsb2NhdGlvblF1ZXJ5ID0gKGJvdW5kczogZ29vZ2xlLm1hcHMuTGF0TG5nQm91bmRzLCBzZWFyY2hGaWVsZCA9ICdsb2NhdGlvbicpID0+IHtcbiAgY29uc3QgdG9wUmlnaHQgPSBib3VuZHMuZ2V0Tm9ydGhFYXN0KCk7XG4gIGNvbnN0IGJvdHRvbUxlZnQgPSBib3VuZHMuZ2V0U291dGhXZXN0KCk7XG4gIHJldHVybiB7XG4gICAgZ2VvX2JvdW5kaW5nX2JveDoge1xuICAgICAgW3NlYXJjaEZpZWxkXToge1xuICAgICAgICB0b3BfbGVmdDogeyBsYXQ6IHRvcFJpZ2h0LmxhdCgpLCBsb246IGJvdHRvbUxlZnQubG5nKCkgfSxcbiAgICAgICAgYm90dG9tX3JpZ2h0OiB7IGxhdDogYm90dG9tTGVmdC5sYXQoKSwgbG9uOiB0b3BSaWdodC5sbmcoKSB9XG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbGxDb2xvciA9ICcjMTkzOTU3JztcbmV4cG9ydCBjb25zdCBzdHJva2VDb2xvciA9ICcjMEMxQjI5JztcblxuZXhwb3J0IGNvbnN0IGZpbGxTdHlsZSA9IHtcbiAgZmlsbENvbG9yLFxuICBmaWxsT3BhY2l0eTogMC42XG59O1xuXG5leHBvcnQgY29uc3Qgc3Ryb2tlU3R5bGUgPSB7XG4gIHN0cm9rZUNvbG9yLFxuICBzdHJva2VPcGFjaXR5OiAwLjYsXG4gIHN0cm9rZVdlaWdodDogMVxufTtcblxuZXhwb3J0IGNvbnN0IGNsdXN0ZXJlckltYWdlID0gJ2h0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L2V4YW1wbGVzL21hcmtlcmNsdXN0ZXJlci9tJztcblxuY29uc3QgZ2V0Q29vcmRpbmF0ZXNGb3JQZXJjZW50ID0gKHBlcmNlbnQ6IG51bWJlcikgPT4ge1xuICBjb25zdCB4ID0gTWF0aC5jb3MoMiAqIE1hdGguUEkgKiBwZXJjZW50KTtcbiAgY29uc3QgeSA9IE1hdGguc2luKDIgKiBNYXRoLlBJICogcGVyY2VudCk7XG4gIHJldHVybiBbeCwgeV07XG59O1xuXG5pbnRlcmZhY2UgSU1hcmtlclBpZUNvbmZpZyB7XG4gIHBlcmNlbnQ6IG51bWJlcjtcbiAgY29sb3I6IHN0cmluZztcbn1cblxuY29uc3QgcGllVXJsID0gKGNvbmZpZ3M6IElNYXJrZXJQaWVDb25maWdbXSwgc2l6ZTogbnVtYmVyKSA9PiB7XG4gIGxldCBjdW11bGF0aXZlUGVyY2VudCA9IDA7XG5cbiAgcmV0dXJuIChcbiAgICAnZGF0YTppbWFnZS9zdmcreG1sO3V0Zi04LCcgK1xuICAgIGVuY29kZVVSSUNvbXBvbmVudChcbiAgICAgIGBcbiAgICA8c3ZnIHdpZHRoPVwiJHtzaXplfVwiIGhlaWdodD1cIiR7c2l6ZX1cIiB2aWV3Qm94PVwiLTEgLTEgMiAyXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPiR7Y29uZmlnc1xuICAgICAgLm1hcCgoeyBwZXJjZW50LCBjb2xvciB9KSA9PiB7XG4gICAgICAgIGNvbnN0IFtzdGFydFgsIHN0YXJ0WV0gPSBnZXRDb29yZGluYXRlc0ZvclBlcmNlbnQoY3VtdWxhdGl2ZVBlcmNlbnQpO1xuICAgICAgICBjdW11bGF0aXZlUGVyY2VudCArPSBwZXJjZW50O1xuICAgICAgICBjb25zdCBbZW5kWCwgZW5kWV0gPSBnZXRDb29yZGluYXRlc0ZvclBlcmNlbnQoY3VtdWxhdGl2ZVBlcmNlbnQpO1xuICAgICAgICBjb25zdCBsYXJnZUFyY0ZsYWcgPSBwZXJjZW50ID4gMC41ID8gMSA6IDA7XG4gICAgICAgIGNvbnN0IHBhdGhEYXRhID0gW1xuICAgICAgICAgIGBNICR7c3RhcnRYfSAke3N0YXJ0WX1gLCAvLyBNb3ZlXG4gICAgICAgICAgYEEgMSAxIDAgJHtsYXJnZUFyY0ZsYWd9IDEgJHtlbmRYfSAke2VuZFl9YCwgLy8gQXJjXG4gICAgICAgICAgYEwgMCAwYCAvLyBMaW5lXG4gICAgICAgIF0uam9pbignICcpO1xuICAgICAgICByZXR1cm4gYDxwYXRoIGZpbGw9XCIke2NvbG9yfVwiIGQ9XCIke3BhdGhEYXRhfVwiPjwvcGF0aD5gO1xuICAgICAgfSlcbiAgICAgIC5qb2luKCcnKX08L3N2Zz5cbiAgYC50cmltKClcbiAgICApXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgbWFya2VyUGllID0gKGNvbmZpZ3M6IElNYXJrZXJQaWVDb25maWdbXSwgc2l6ZSA9IDcpID0+ICh7XG4gIGFuY2hvcjogbmV3IGdvb2dsZS5tYXBzLlBvaW50KHNpemUgLyAyLCBzaXplIC8gMiksXG4gIHVybDogcGllVXJsKGNvbmZpZ3MsIHNpemUpLFxuICBsYWJlbE9yaWdpbjogbmV3IGdvb2dsZS5tYXBzLlBvaW50KDAsIC0yKVxufSk7XG5cbmV4cG9ydCBjb25zdCBtYXJrZXJJY29uID0gKHNjYWxlID0gNyk6IGdvb2dsZS5tYXBzLlN5bWJvbCA9PiAoe1xuICBwYXRoOiBnb29nbGUubWFwcy5TeW1ib2xQYXRoLkNJUkNMRSxcbiAgLi4uZmlsbFN0eWxlLFxuICAuLi5zdHJva2VTdHlsZSxcbiAgc2NhbGUsXG4gIGxhYmVsT3JpZ2luOiBuZXcgZ29vZ2xlLm1hcHMuUG9pbnQoMCwgLTIpXG59KTtcblxuZXhwb3J0IGludGVyZmFjZSBJTWFya2VyIHtcbiAgcG9zaXRpb246IGdvb2dsZS5tYXBzLkxhdExuZyB8IGdvb2dsZS5tYXBzLkxhdExuZ0xpdGVyYWw7XG4gIGxhYmVsOiBnb29nbGUubWFwcy5NYXJrZXJMYWJlbDtcbiAgaWNvbjogZ29vZ2xlLm1hcHMuU3ltYm9sO1xufVxuXG5leHBvcnQgY29uc3QgY3JlYXRlTWFya2VyID0gKFxuICBwb3NpdGlvbj86IGdvb2dsZS5tYXBzLkxhdExuZyB8IGdvb2dsZS5tYXBzLkxhdExuZ0xpdGVyYWwsXG4gIHRleHQgPSAnJyxcbiAgY29sb3IgPSBmaWxsQ29sb3IsXG4gIHNjYWxlPzogbnVtYmVyXG4pOiBJTWFya2VyID0+XG4gIHBvc2l0aW9uPy5sYXQgJiYgcG9zaXRpb24/LmxuZ1xuICAgID8ge1xuICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgbGFiZWw6IHsgY29sb3IsIHRleHQgfSxcbiAgICAgICAgaWNvbjogbWFya2VySWNvbihzY2FsZSlcbiAgICAgIH1cbiAgICA6IHVuZGVmaW5lZDtcblxuaW50ZXJmYWNlIElQb2x5Z29uIHtcbiAgdHlwZTogJ1BvbHlnb24nO1xuICBjb29yZGluYXRlczogbnVtYmVyW11bXVtdO1xufVxuXG5pbnRlcmZhY2UgSU11bHRpUG9seWdvbiB7XG4gIHR5cGU6ICdNdWx0aVBvbHlnb24nO1xuICBjb29yZGluYXRlczogbnVtYmVyW11bXVtdO1xufVxuXG50eXBlIGdlb21ldHJ5ID0gSVBvbHlnb24gfCBJTXVsdGlQb2x5Z29uO1xuXG5leHBvcnQgaW50ZXJmYWNlIElGZWF0dXJlIHtcbiAgdHlwZTogJ0ZlYXR1cmUnO1xuICBwcm9wZXJ0aWVzOiBhbnk7XG4gIGdlb21ldHJ5OiBnZW9tZXRyeTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRmVhdHVyZUNvbGxlY3Rpb24ge1xuICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nO1xuICBmZWF0dXJlczogSUZlYXR1cmVbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR2VvbWV0cnlDb2xsZWN0aW9uIHtcbiAgdHlwZTogJ0dlb21ldHJ5Q29sbGVjdGlvbic7XG4gIGdlb21ldHJpZXM6IGdlb21ldHJ5W107XG59XG5cbmV4cG9ydCB0eXBlIGZlYXR1cmUgPSBJRmVhdHVyZSB8IElGZWF0dXJlQ29sbGVjdGlvbiB8IElHZW9tZXRyeUNvbGxlY3Rpb24gfCBJUG9seWdvbiB8IElNdWx0aVBvbHlnb247XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0RmVhdHVyZSA9ICgpOiBJRmVhdHVyZSA9PiAoe1xuICB0eXBlOiAnRmVhdHVyZScsXG4gIHByb3BlcnRpZXM6IHt9LFxuICBnZW9tZXRyeToge1xuICAgIHR5cGU6ICdQb2x5Z29uJyxcbiAgICBjb29yZGluYXRlczogW11cbiAgfSBhcyBnZW9tZXRyeVxufSk7XG5cbmV4cG9ydCBjb25zdCBwb2ludFRvQ29vcmRpbmF0ZXMgPSAocG9pbnQ6IGdvb2dsZS5tYXBzLkxhdExuZykgPT4gW3BvaW50LmxuZygpLCBwb2ludC5sYXQoKV07XG5cbmV4cG9ydCBjb25zdCBjb29yZGluYXRlc1RvUG9pbnQgPSAodmFsdWVzOiAobnVtYmVyIHwgbnVtYmVyW10pW10pID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZXNbMF0pXG4gICAgICA/IHZhbHVlcy5tYXAoKHY6IGFueSkgPT4gY29vcmRpbmF0ZXNUb1BvaW50KHYpKVxuICAgICAgOiAodmFsdWVzIGFzIG51bWJlcltdKT8uc29tZShpc05hTilcbiAgICAgID8gbnVsbFxuICAgICAgOiBuZXcgZ29vZ2xlLm1hcHMuTGF0TG5nKCh2YWx1ZXMgYXMgbnVtYmVyW10pWzFdLCAodmFsdWVzIGFzIG51bWJlcltdKVswXSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcG9seWdvblRvQ29vcmRpbmF0ZXMgPSAocG9seWdvbjogZ29vZ2xlLm1hcHMuUG9seWdvbikgPT5cbiAgcG9seWdvblxuICAgIC5nZXRQYXRocygpXG4gICAgLmdldEFycmF5KClcbiAgICAubWFwKHBhdGggPT4ge1xuICAgICAgY29uc3QgcG9pbnRzID0gcGF0aC5nZXRBcnJheSgpO1xuICAgICAgcmV0dXJuIFsuLi5wb2ludHMubWFwKHBvaW50VG9Db29yZGluYXRlcyksIHBvaW50VG9Db29yZGluYXRlcyhwb2ludHNbMF0pXTtcbiAgICB9KVswXTtcblxuZXhwb3J0IGludGVyZmFjZSBJUG9seWdvbk1hcCB7XG4gIHBhdGhzOiBnb29nbGUubWFwcy5NVkNBcnJheTxnb29nbGUubWFwcy5NVkNBcnJheTxnb29nbGUubWFwcy5MYXRMbmc+PjtcbiAgb3B0aW9uczogZ29vZ2xlLm1hcHMuUG9seWdvbk9wdGlvbnM7XG59XG5cbmV4cG9ydCBjb25zdCBwb2x5Z29uVG9NYXAgPSAocG9seWdvbjogZ29vZ2xlLm1hcHMuUG9seWdvbiwgY29sb3IgPSBzdHJva2VDb2xvcik6IElQb2x5Z29uTWFwID0+ICh7XG4gIHBhdGhzOiBwb2x5Z29uLmdldFBhdGhzKCksXG4gIG9wdGlvbnM6IHtcbiAgICAuLi5zdHJva2VTdHlsZSxcbiAgICBzdHJva2VDb2xvcjogY29sb3JcbiAgfVxufSk7XG5cbmNvbnN0IGNvb3JkaW5hdGVzVG9Qb2x5Z29uID0gKGNvb3JkaW5hdGVzOiBudW1iZXJbXVtdLCBjb2xvciA9IHN0cm9rZUNvbG9yKSA9PlxuICBuZXcgZ29vZ2xlLm1hcHMuUG9seWdvbih7XG4gICAgcGF0aHM6IGNvb3JkaW5hdGVzLm1hcChjb29yZGluYXRlc1RvUG9pbnQpLmZpbHRlcihCb29sZWFuKSxcbiAgICAuLi5zdHJva2VTdHlsZSxcbiAgICBzdHJva2VDb2xvcjogY29sb3JcbiAgfSk7XG5cbmNvbnN0IGdldENvb3JkaW5hdGVzID0gKGZlYXQ6IGZlYXR1cmUpID0+XG4gIGZlYXQudHlwZSA9PT0gJ1BvbHlnb24nIHx8IGZlYXQudHlwZSA9PT0gJ011bHRpUG9seWdvbidcbiAgICA/IGZlYXQuY29vcmRpbmF0ZXNcbiAgICA6IGZlYXQudHlwZSA9PT0gJ0ZlYXR1cmUnXG4gICAgPyBmZWF0Lmdlb21ldHJ5Py5jb29yZGluYXRlc1xuICAgIDogW107XG5cbmV4cG9ydCBjb25zdCBhZGRQb2x5Z29uVG9GZWF0dXJlID0gKGZlYXQ6IGZlYXR1cmUsIHBvbHlnb246IGdvb2dsZS5tYXBzLlBvbHlnb24pID0+XG4gIGZlYXQudHlwZSA9PT0gJ0ZlYXR1cmVDb2xsZWN0aW9uJ1xuICAgID8gZmVhdC5mZWF0dXJlcy5wdXNoKGFkZFBvbHlnb25Ub0ZlYXR1cmUoZGVmYXVsdEZlYXR1cmUoKSwgcG9seWdvbikpXG4gICAgOiBmZWF0LnR5cGUgPT09ICdHZW9tZXRyeUNvbGxlY3Rpb24nXG4gICAgPyBmZWF0Lmdlb21ldHJpZXMubWFwKGdlb21ldHJ5ID0+IChnZW9tZXRyeT8uY29vcmRpbmF0ZXMgfHwgW10pLnB1c2gocG9seWdvblRvQ29vcmRpbmF0ZXMocG9seWdvbikpKVxuICAgIDogKGdldENvb3JkaW5hdGVzKGZlYXQpIHx8IFtdKS5wdXNoKHBvbHlnb25Ub0Nvb3JkaW5hdGVzKHBvbHlnb24pKTtcblxuZXhwb3J0IGNvbnN0IHBvbHlnb25zRnJvbUZlYXR1cmUgPSAoZmVhdDogZmVhdHVyZSwgY29sb3I/OiBzdHJpbmcpOiBnb29nbGUubWFwcy5Qb2x5Z29uW10gPT5cbiAgZmVhdC50eXBlID09PSAnRmVhdHVyZUNvbGxlY3Rpb24nXG4gICAgPyBmZWF0LmZlYXR1cmVzLmZsYXRNYXAodmFsdWVzID0+IHBvbHlnb25zRnJvbUZlYXR1cmUodmFsdWVzLCBjb2xvcikpXG4gICAgOiBmZWF0LnR5cGUgPT09ICdHZW9tZXRyeUNvbGxlY3Rpb24nXG4gICAgPyBmZWF0Lmdlb21ldHJpZXM/LmZsYXRNYXAoZ2VvbWV0cnkgPT5cbiAgICAgICAgKGdlb21ldHJ5LmNvb3JkaW5hdGVzIHx8IFtdKS5tYXAodmFsdWVzID0+IGNvb3JkaW5hdGVzVG9Qb2x5Z29uKHZhbHVlcywgY29sb3IpKVxuICAgICAgKVxuICAgIDogKGdldENvb3JkaW5hdGVzKGZlYXQpIHx8IFtdKS5tYXAodmFsdWVzID0+IGNvb3JkaW5hdGVzVG9Qb2x5Z29uKHZhbHVlcywgY29sb3IpKTtcblxuZXhwb3J0IGNvbnN0IHBvbHlnb25Cb3VuZHMgPSAocG9seWdvbj86IGdvb2dsZS5tYXBzLlBvbHlnb24gfCBnb29nbGUubWFwcy5Qb2x5Z29uW10pID0+IHtcbiAgY29uc3QgcGF0aHMgPSBwb2x5Z29uXG4gICAgPyBBcnJheS5pc0FycmF5KHBvbHlnb24pXG4gICAgICA/IHBvbHlnb24uZmxhdE1hcChwID0+IHAuZ2V0UGF0aCgpPy5nZXRBcnJheSgpIHx8IFtdKVxuICAgICAgOiBwb2x5Z29uLmdldFBhdGgoKT8uZ2V0QXJyYXkoKSB8fCBbXVxuICAgIDogW107XG4gIHJldHVybiBwYXRocy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHByZXYuZXh0ZW5kKGN1cnIpLCBuZXcgZ29vZ2xlLm1hcHMuTGF0TG5nQm91bmRzKCkpO1xufTtcbiJdfQ==
@@ -100,7 +100,7 @@ export class HeNodeStoreService {
100
100
  return this.nodes$().pipe(map(values => (values[nodeType] || []).filter(node => !id || node.id === id)));
101
101
  }
102
102
  findByState$(nodeType, dataState, id) {
103
- return this.find$(nodeType, id).pipe(map(values => values.map(v => v[dataState])));
103
+ return this.find$(nodeType, id).pipe(map(values => values.map(v => v[dataState]).filter(Boolean)));
104
104
  }
105
105
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.8", ngImport: i0, type: HeNodeStoreService, deps: [{ token: i1.HeNodeService }], target: i0.ɵɵFactoryTarget.Injectable }); }
106
106
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.8", ngImport: i0, type: HeNodeStoreService, providedIn: 'root' }); }
@@ -111,4 +111,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.8", ngImpor
111
111
  providedIn: 'root'
112
112
  }]
113
113
  }], ctorParameters: function () { return [{ type: i1.HeNodeService }]; } });
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1zdG9yZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25vZGUvbm9kZS1zdG9yZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFVLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckUsT0FBTyxFQUFjLGFBQWEsRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0QsT0FBTyxPQUFPLE1BQU0sZ0JBQWdCLENBQUM7OztBQTZCckMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBRXZFLE1BQU0saUJBQWlCLEdBS25CO0lBQ0YsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDaEIsT0FBTyxFQUFFLGlCQUFpQjtRQUMxQixVQUFVLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO0tBQ2pDO0lBQ0QsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtRQUMzQixPQUFPLEVBQUUsaUJBQWlCO1FBQzFCLFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUM7S0FDckM7SUFDRCxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNmLE9BQU8sRUFBRSxpQkFBaUI7UUFDMUIsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztLQUNqQztDQUNGLENBQUM7QUFFRixNQUFNLGtCQUFrQixHQUFHLENBQUMsUUFBa0IsRUFBRSxVQUFVLEdBQUcsS0FBSyxF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Q25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSlNPTkxELCBOb2RlVHlwZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7IERhdGFTdGF0ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvYXBpJztcbmltcG9ydCB7IG1hcCwgbWVyZ2VNYXAsIHNoYXJlUmVwbGF5LCB0b0FycmF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgZm9ya0pvaW4gfSBmcm9tICdyeGpzJztcbmltcG9ydCBvcmRlckJ5IGZyb20gJ2xvZGFzaC5vcmRlcmJ5JztcblxuaW1wb3J0IHsgSGVOb2RlU2VydmljZSB9IGZyb20gJy4vbm9kZS5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBJU3RvcmVkTm9kZSB7XG4gIGluZGV4OiBudW1iZXI7XG4gIHR5cGU6IE5vZGVUeXBlO1xuICBpZDogc3RyaW5nO1xufVxuXG50eXBlIG5vZGVTdGF0ZXMgPSB7XG4gIFtkYXRhU3RhdGUgaW4gRGF0YVN0YXRlXT86IEpTT05MRDxOb2RlVHlwZT47XG59O1xuXG50eXBlIG5vZGVzID0ge1xuICBbbm9kZVR5cGUgaW4gTm9kZVR5cGVdPzogKG5vZGVTdGF0ZXMgJiBJU3RvcmVkTm9kZSlbXTtcbn07XG5cbnR5cGUgbm9kZUxvYWRSZXF1ZXN0ID0ge1xuICBbZGF0YVN0YXRlIGluIERhdGFTdGF0ZV06IE9ic2VydmFibGU8SlNPTkxEPE5vZGVUeXBlPj47XG59O1xuXG50eXBlIG5vZGVzTG9hZFJlcXVlc3QgPSB7XG4gIFtub2RlVHlwZSBpbiBOb2RlVHlwZV0/OiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICByZXF1ZXN0OiBPYnNlcnZhYmxlPG5vZGVTdGF0ZXMgJiBJU3RvcmVkTm9kZT47XG4gIH1bXTtcbn07XG5cbmNvbnN0IGRlZmF1bHREYXRhU3RhdGVzID0gW0RhdGFTdGF0ZS5vcmlnaW5hbCwgRGF0YVN0YXRlLnJlY2FsY3VsYXRlZF07XG5cbmNvbnN0IG5vZGVUeXBlRGF0YVN0YXRlOiB7XG4gIFt0eXBlIGluIE5vZGVUeXBlXT86IHtcbiAgICBkZWZhdWx0OiBEYXRhU3RhdGVbXTtcbiAgICBhZ2dyZWdhdGVkPzogRGF0YVN0YXRlW107XG4gIH07XG59ID0ge1xuICBbTm9kZVR5cGUuQ3ljbGVdOiB7XG4gICAgZGVmYXVsdDogZGVmYXVsdERhdGFTdGF0ZXMsXG4gICAgYWdncmVnYXRlZDogW0RhdGFTdGF0ZS5vcmlnaW5hbF1cbiAgfSxcbiAgW05vZGVUeXBlLkltcGFjdEFzc2Vzc21lbnRdOiB7XG4gICAgZGVmYXVsdDogZGVmYXVsdERhdGFTdGF0ZXMsXG4gICAgYWdncmVnYXRlZDogW0RhdGFTdGF0ZS5yZWNhbGN1bGF0ZWRdXG4gIH0sXG4gIFtOb2RlVHlwZS5TaXRlXToge1xuICAgIGRlZmF1bHQ6IGRlZmF1bHREYXRhU3RhdGVzLFxuICAgIGFnZ3JlZ2F0ZWQ6IFtEYXRhU3RhdGUub3JpZ2luYWxdXG4gIH1cbn07XG5cbmNvbnN0IG5vZGVUeXBlRGF0YVN0YXRlcyA9IChub2RlVHlwZTogTm9kZVR5cGUsIGFnZ3JlZ2F0ZWQgPSBmYWxzZSkgPT4ge1xuICBjb25zdCBkYXRhU3RhdGVzTWFwcGluZyA9IG5vZGVUeXBlRGF0YVN0YXRlW25vZGVUeXBlXSB8fCB7XG4gICAgZGVmYXVsdDogW0RhdGFTdGF0ZS5vcmlnaW5hbF0sXG4gICAgYWdncmVnYXRlZDogW0RhdGFTdGF0ZS5vcmlnaW5hbF1cbiAgfTtcbiAgcmV0dXJuIGFnZ3JlZ2F0ZWQgPyBkYXRhU3RhdGVzTWFwcGluZy5hZ2dyZWdhdGVkIDogZGF0YVN0YXRlc01hcHBpbmcuZGVmYXVsdDtcbn07XG5cbmNvbnN0IHNvcnROb2RlcyA9ICh2YWx1ZXM/OiBJU3RvcmVkTm9kZVtdKSA9PlxuICB2YWx1ZXM/Lmxlbmd0aFxuICAgID8gb3JkZXJCeShcbiAgICAgICAgdmFsdWVzLmZpbHRlcihCb29sZWFuKSxcbiAgICAgICAgWydvcmlnaW5hbC5hZ2dyZWdhdGVkJywgJ29yaWdpbmFsLnNpdGUuQGlkJywgJ29yaWdpbmFsLmN5Y2xlLkBpZCcsICdvcmlnaW5hbC5AaWQnXSxcbiAgICAgICAgWydhc2MnLCAnYXNjJywgJ2FzYycsICdhc2MnXVxuICAgICAgKVxuICAgIDogW107XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEhlTm9kZVN0b3JlU2VydmljZSB7XG4gIHByaXZhdGUgX25vZGVzTG9hZFJlcXVlc3RzOiBub2Rlc0xvYWRSZXF1ZXN0ID0ge307XG4gIHByaXZhdGUgX25vZGVzOiBub2RlcyA9IHt9O1xuICBwcml2YXRlIF9ub2RlcyQgPSBuZXcgUmVwbGF5U3ViamVjdDxub2Rlcz4oMSk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBub2RlU2VydmljZTogSGVOb2RlU2VydmljZSkge31cblxuICBwcml2YXRlIGZpbmROb2RlSW5kZXg8VCBleHRlbmRzIFBpY2s8SlNPTkxEPE5vZGVUeXBlPiwgJ0B0eXBlJyB8ICdAaWQnPj4obm9kZTogVCkge1xuICAgIGNvbnN0IG5vZGVzID0gdGhpcy5fbm9kZXM/Lltub2RlWydAdHlwZSddXSB8fCBbXTtcbiAgICByZXR1cm4gbm9kZXMuZmluZEluZGV4KG4gPT4gbi50eXBlID09PSBub2RlWydAdHlwZSddICYmIG4uaWQgPT09IG5vZGVbJ0BpZCddKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZE5vZGU8VCBleHRlbmRzIFBpY2s8SlNPTkxEPE5vZGVUeXBlPiwgJ0B0eXBlJyB8ICdAaWQnPj4obm9kZTogVCkge1xuICAgIGNvbnN0IGFnZ3JlZ2F0ZWQgPSAnYWdncmVnYXRlZCcgaW4gbm9kZSA/IChub2RlLmFnZ3JlZ2F0ZWQgYXMgYm9vbGVhbikgOiBmYWxzZTtcbiAgICBjb25zdCBkYXRhU3RhdGVzID0gbm9kZVR5cGVEYXRhU3RhdGVzKG5vZGVbJ0B0eXBlJ10sIGFnZ3JlZ2F0ZWQpO1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5fbm9kZXNMb2FkUmVxdWVzdHNbbm9kZVsnQHR5cGUnXV0ubGVuZ3RoO1xuXG4gICAgY29uc3QgcmVxdWVzdCA9IGZvcmtKb2luKFxuICAgICAgZGF0YVN0YXRlcy5yZWR1Y2UoXG4gICAgICAgIChwcmV2LCBkYXRhU3RhdGUpID0+ICh7XG4gICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICBbZGF0YVN0YXRlXTogdGhpcy5ub2RlU2VydmljZS5nZXQkPEpTT05MRDxOb2RlVHlwZT4+KHsgLi4ubm9kZSwgZGF0YVN0YXRlIH0pXG4gICAgICAgIH0pLFxuICAgICAgICB7fSBhcyBub2RlTG9hZFJlcXVlc3RcbiAgICAgIClcbiAgICApLnBpcGUoXG4gICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pLFxuICAgICAgbWFwKFxuICAgICAgICAodmFsdWVzOiBub2RlU3RhdGVzKSA9PlxuICAgICAgICAgICh7XG4gICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgIHR5cGU6IG5vZGVbJ0B0eXBlJ10sXG4gICAgICAgICAgICBpZDogbm9kZVsnQGlkJ10sXG4gICAgICAgICAgICAvLyBkZWZhdWx0IHZhbHVlcyB3aGVuIHRoZSBzdGF0ZXMgd2VyZSBub3QgZmV0Y2hlZFxuICAgICAgICAgICAgLi4uT2JqZWN0LmZyb21FbnRyaWVzKGRlZmF1bHREYXRhU3RhdGVzLm1hcChkYXRhU3RhdGUgPT4gW2RhdGFTdGF0ZSwgdmFsdWVzW0RhdGFTdGF0ZS5vcmlnaW5hbF0gfHwgbm9kZV0pKSxcbiAgICAgICAgICAgIC4uLnZhbHVlc1xuICAgICAgICAgIH0pIGFzIG5vZGVTdGF0ZXMgJiBJU3RvcmVkTm9kZVxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLl9ub2Rlc0xvYWRSZXF1ZXN0c1tub2RlWydAdHlwZSddXS5wdXNoKHtcbiAgICAgIGlkOiBub2RlWydAaWQnXSxcbiAgICAgIHJlcXVlc3RcbiAgICB9KTtcblxuICAgIHJlcXVlc3Quc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgdGhpcy5fbm9kZXNbbm9kZVsnQHR5cGUnXV1baW5kZXhdID0gZGF0YTtcbiAgICAgIHRoaXMuX25vZGVzJC5uZXh0KHRoaXMuX25vZGVzKTtcbiAgICB9KTtcblxuICAgIHJldHVybiByZXF1ZXN0O1xuICB9XG5cbiAgcHVibGljIGFkZE5vZGU8VCBleHRlbmRzIFBpY2s8SlNPTkxEPE5vZGVUeXBlPiwgJ0B0eXBlJyB8ICdAaWQnPj4obm9kZTogVCkge1xuICAgIHRoaXMuX25vZGVzTG9hZFJlcXVlc3RzW25vZGVbJ0B0eXBlJ11dID0gdGhpcy5fbm9kZXNMb2FkUmVxdWVzdHNbbm9kZVsnQHR5cGUnXV0gfHwgW107XG4gICAgdGhpcy5fbm9kZXNbbm9kZVsnQHR5cGUnXV0gPSB0aGlzLl9ub2Rlc1tub2RlWydAdHlwZSddXSB8fCBbXTtcblxuICAgIGNvbnN0IGV4aXN0aW5nUmVxdWVzdCA9IHRoaXMuX25vZGVzTG9hZFJlcXVlc3RzW25vZGVbJ0B0eXBlJ11dLmZpbmQoKHsgaWQgfSkgPT4gaWQgPT09IG5vZGVbJ0BpZCddKTtcbiAgICByZXR1cm4gZXhpc3RpbmdSZXF1ZXN0ID8gZXhpc3RpbmdSZXF1ZXN0LnJlcXVlc3QgOiB0aGlzLmxvYWROb2RlPFQ+KG5vZGUpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZU5vZGVCeUluZGV4KG5vZGVUeXBlOiBOb2RlVHlwZSwgaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuX25vZGVzTG9hZFJlcXVlc3RzW25vZGVUeXBlXS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMuX25vZGVzW25vZGVUeXBlXS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMuX25vZGVzJC5uZXh0KHRoaXMuX25vZGVzKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVOb2RlPFQgZXh0ZW5kcyBKU09OTEQ8Tm9kZVR5cGU+Pihub2RlOiBUKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmZpbmROb2RlSW5kZXgobm9kZSk7XG4gICAgcmV0dXJuIGluZGV4ID49IDAgPyB0aGlzLnJlbW92ZU5vZGVCeUluZGV4KG5vZGVbJ0B0eXBlJ10sIGluZGV4KSA6IG51bGw7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJOb2RlcygpIHtcbiAgICB0aGlzLl9ub2Rlc0xvYWRSZXF1ZXN0cyA9IHt9O1xuICAgIHRoaXMuX25vZGVzID0ge307XG4gICAgdGhpcy5fbm9kZXMkLm5leHQodGhpcy5fbm9kZXMpO1xuICB9XG5cbiAgcHVibGljIG5vZGVzJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fbm9kZXMkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIHNvcnRlZE5vZGVzJCgpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlcyQoKS5waXBlKFxuICAgICAgbWFwKFxuICAgICAgICBub2RlcyA9PlxuICAgICAgICAgIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhub2RlcykubWFwKChbbm9kZUtleSwgdmFsdWVzXSkgPT4gW25vZGVLZXksIHNvcnROb2Rlcyh2YWx1ZXMpXSkpIGFzIG5vZGVzXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBpZHMkKG5vZGVUeXBlOiBOb2RlVHlwZSkge1xuICAgIHJldHVybiB0aGlzLm5vZGVzJCgpLnBpcGUoXG4gICAgICBtZXJnZU1hcCh2YWx1ZXMgPT4gdmFsdWVzW25vZGVUeXBlXSksXG4gICAgICBtYXAoKHsgaWQgfSkgPT4gaWQpLFxuICAgICAgdG9BcnJheSgpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBmaW5kJDxUIGV4dGVuZHMgSlNPTkxEPE5vZGVUeXBlPj4oXG4gICAgbm9kZVR5cGU6IE5vZGVUeXBlLFxuICAgIGlkPzogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8eyBbZGF0YVN0YXRlIGluIERhdGFTdGF0ZV0/OiBUIH1bXT4ge1xuICAgIHJldHVybiB0aGlzLm5vZGVzJCgpLnBpcGUobWFwKHZhbHVlcyA9PiAoKHZhbHVlc1tub2RlVHlwZV0gYXMgYW55W10pIHx8IFtdKS5maWx0ZXIobm9kZSA9PiAhaWQgfHwgbm9kZS5pZCA9PT0gaWQpKSk7XG4gIH1cblxuICBwdWJsaWMgZmluZEJ5U3RhdGUkPFQgZXh0ZW5kcyBKU09OTEQ8Tm9kZVR5cGU+Pihub2RlVHlwZTogTm9kZVR5cGUsIGRhdGFTdGF0ZTogRGF0YVN0YXRlLCBpZD86IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmZpbmQkPFQ+KG5vZGVUeXBlLCBpZCkucGlwZShtYXAodmFsdWVzID0+IHZhbHVlcy5tYXAodiA9PiB2W2RhdGFTdGF0ZV0pKSk7XG4gIH1cbn1cbiJdfQ==
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1zdG9yZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25vZGUvbm9kZS1zdG9yZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFVLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckUsT0FBTyxFQUFjLGFBQWEsRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0QsT0FBTyxPQUFPLE1BQU0sZ0JBQWdCLENBQUM7OztBQTZCckMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBRXZFLE1BQU0saUJBQWlCLEdBS25CO0lBQ0YsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDaEIsT0FBTyxFQUFFLGlCQUFpQjtRQUMxQixVQUFVLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO0tBQ2pDO0lBQ0QsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtRQUMzQixPQUFPLEVBQUUsaUJBQWlCO1FBQzFCLFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUM7S0FDckM7SUFDRCxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNmLE9BQU8sRUFBRSxpQkFBaUI7UUFDMUIsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztLQUNqQztDQUNGLENBQUM7QUFFRixNQUFNLGtCQUFrQixHQUFHLENBQUMsUUFBa0IsRUFBRSxVQUFVLEdBQUcsS0FBSyxF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O29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEpTT05MRCwgTm9kZVR5cGUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5pbXBvcnQgeyBEYXRhU3RhdGUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL2FwaSc7XG5pbXBvcnQgeyBtYXAsIG1lcmdlTWFwLCBzaGFyZVJlcGxheSwgdG9BcnJheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIGZvcmtKb2luIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgb3JkZXJCeSBmcm9tICdsb2Rhc2gub3JkZXJieSc7XG5cbmltcG9ydCB7IEhlTm9kZVNlcnZpY2UgfSBmcm9tICcuL25vZGUuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN0b3JlZE5vZGUge1xuICBpbmRleDogbnVtYmVyO1xuICB0eXBlOiBOb2RlVHlwZTtcbiAgaWQ6IHN0cmluZztcbn1cblxudHlwZSBub2RlU3RhdGVzID0ge1xuICBbZGF0YVN0YXRlIGluIERhdGFTdGF0ZV0/OiBKU09OTEQ8Tm9kZVR5cGU+O1xufTtcblxudHlwZSBub2RlcyA9IHtcbiAgW25vZGVUeXBlIGluIE5vZGVUeXBlXT86IChub2RlU3RhdGVzICYgSVN0b3JlZE5vZGUpW107XG59O1xuXG50eXBlIG5vZGVMb2FkUmVxdWVzdCA9IHtcbiAgW2RhdGFTdGF0ZSBpbiBEYXRhU3RhdGVdOiBPYnNlcnZhYmxlPEpTT05MRDxOb2RlVHlwZT4+O1xufTtcblxudHlwZSBub2Rlc0xvYWRSZXF1ZXN0ID0ge1xuICBbbm9kZVR5cGUgaW4gTm9kZVR5cGVdPzoge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgcmVxdWVzdDogT2JzZXJ2YWJsZTxub2RlU3RhdGVzICYgSVN0b3JlZE5vZGU+O1xuICB9W107XG59O1xuXG5jb25zdCBkZWZhdWx0RGF0YVN0YXRlcyA9IFtEYXRhU3RhdGUub3JpZ2luYWwsIERhdGFTdGF0ZS5yZWNhbGN1bGF0ZWRdO1xuXG5jb25zdCBub2RlVHlwZURhdGFTdGF0ZToge1xuICBbdHlwZSBpbiBOb2RlVHlwZV0/OiB7XG4gICAgZGVmYXVsdDogRGF0YVN0YXRlW107XG4gICAgYWdncmVnYXRlZD86IERhdGFTdGF0ZVtdO1xuICB9O1xufSA9IHtcbiAgW05vZGVUeXBlLkN5Y2xlXToge1xuICAgIGRlZmF1bHQ6IGRlZmF1bHREYXRhU3RhdGVzLFxuICAgIGFnZ3JlZ2F0ZWQ6IFtEYXRhU3RhdGUub3JpZ2luYWxdXG4gIH0sXG4gIFtOb2RlVHlwZS5JbXBhY3RBc3Nlc3NtZW50XToge1xuICAgIGRlZmF1bHQ6IGRlZmF1bHREYXRhU3RhdGVzLFxuICAgIGFnZ3JlZ2F0ZWQ6IFtEYXRhU3RhdGUucmVjYWxjdWxhdGVkXVxuICB9LFxuICBbTm9kZVR5cGUuU2l0ZV06IHtcbiAgICBkZWZhdWx0OiBkZWZhdWx0RGF0YVN0YXRlcyxcbiAgICBhZ2dyZWdhdGVkOiBbRGF0YVN0YXRlLm9yaWdpbmFsXVxuICB9XG59O1xuXG5jb25zdCBub2RlVHlwZURhdGFTdGF0ZXMgPSAobm9kZVR5cGU6IE5vZGVUeXBlLCBhZ2dyZWdhdGVkID0gZmFsc2UpID0+IHtcbiAgY29uc3QgZGF0YVN0YXRlc01hcHBpbmcgPSBub2RlVHlwZURhdGFTdGF0ZVtub2RlVHlwZV0gfHwge1xuICAgIGRlZmF1bHQ6IFtEYXRhU3RhdGUub3JpZ2luYWxdLFxuICAgIGFnZ3JlZ2F0ZWQ6IFtEYXRhU3RhdGUub3JpZ2luYWxdXG4gIH07XG4gIHJldHVybiBhZ2dyZWdhdGVkID8gZGF0YVN0YXRlc01hcHBpbmcuYWdncmVnYXRlZCA6IGRhdGFTdGF0ZXNNYXBwaW5nLmRlZmF1bHQ7XG59O1xuXG5jb25zdCBzb3J0Tm9kZXMgPSAodmFsdWVzPzogSVN0b3JlZE5vZGVbXSkgPT5cbiAgdmFsdWVzPy5sZW5ndGhcbiAgICA/IG9yZGVyQnkoXG4gICAgICAgIHZhbHVlcy5maWx0ZXIoQm9vbGVhbiksXG4gICAgICAgIFsnb3JpZ2luYWwuYWdncmVnYXRlZCcsICdvcmlnaW5hbC5zaXRlLkBpZCcsICdvcmlnaW5hbC5jeWNsZS5AaWQnLCAnb3JpZ2luYWwuQGlkJ10sXG4gICAgICAgIFsnYXNjJywgJ2FzYycsICdhc2MnLCAnYXNjJ11cbiAgICAgIClcbiAgICA6IFtdO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBIZU5vZGVTdG9yZVNlcnZpY2Uge1xuICBwcml2YXRlIF9ub2Rlc0xvYWRSZXF1ZXN0czogbm9kZXNMb2FkUmVxdWVzdCA9IHt9O1xuICBwcml2YXRlIF9ub2Rlczogbm9kZXMgPSB7fTtcbiAgcHJpdmF0ZSBfbm9kZXMkID0gbmV3IFJlcGxheVN1YmplY3Q8bm9kZXM+KDEpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbm9kZVNlcnZpY2U6IEhlTm9kZVNlcnZpY2UpIHt9XG5cbiAgcHJpdmF0ZSBmaW5kTm9kZUluZGV4PFQgZXh0ZW5kcyBQaWNrPEpTT05MRDxOb2RlVHlwZT4sICdAdHlwZScgfCAnQGlkJz4+KG5vZGU6IFQpIHtcbiAgICBjb25zdCBub2RlcyA9IHRoaXMuX25vZGVzPy5bbm9kZVsnQHR5cGUnXV0gfHwgW107XG4gICAgcmV0dXJuIG5vZGVzLmZpbmRJbmRleChuID0+IG4udHlwZSA9PT0gbm9kZVsnQHR5cGUnXSAmJiBuLmlkID09PSBub2RlWydAaWQnXSk7XG4gIH1cblxuICBwcml2YXRlIGxvYWROb2RlPFQgZXh0ZW5kcyBQaWNrPEpTT05MRDxOb2RlVHlwZT4sICdAdHlwZScgfCAnQGlkJz4+KG5vZGU6IFQpIHtcbiAgICBjb25zdCBhZ2dyZWdhdGVkID0gJ2FnZ3JlZ2F0ZWQnIGluIG5vZGUgPyAobm9kZS5hZ2dyZWdhdGVkIGFzIGJvb2xlYW4pIDogZmFsc2U7XG4gICAgY29uc3QgZGF0YVN0YXRlcyA9IG5vZGVUeXBlRGF0YVN0YXRlcyhub2RlWydAdHlwZSddLCBhZ2dyZWdhdGVkKTtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuX25vZGVzTG9hZFJlcXVlc3RzW25vZGVbJ0B0eXBlJ11dLmxlbmd0aDtcblxuICAgIGNvbnN0IHJlcXVlc3QgPSBmb3JrSm9pbihcbiAgICAgIGRhdGFTdGF0ZXMucmVkdWNlKFxuICAgICAgICAocHJldiwgZGF0YVN0YXRlKSA9PiAoe1xuICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgW2RhdGFTdGF0ZV06IHRoaXMubm9kZVNlcnZpY2UuZ2V0JDxKU09OTEQ8Tm9kZVR5cGU+Pih7IC4uLm5vZGUsIGRhdGFTdGF0ZSB9KVxuICAgICAgICB9KSxcbiAgICAgICAge30gYXMgbm9kZUxvYWRSZXF1ZXN0XG4gICAgICApXG4gICAgKS5waXBlKFxuICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcbiAgICAgIG1hcChcbiAgICAgICAgKHZhbHVlczogbm9kZVN0YXRlcykgPT5cbiAgICAgICAgICAoe1xuICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICB0eXBlOiBub2RlWydAdHlwZSddLFxuICAgICAgICAgICAgaWQ6IG5vZGVbJ0BpZCddLFxuICAgICAgICAgICAgLy8gZGVmYXVsdCB2YWx1ZXMgd2hlbiB0aGUgc3RhdGVzIHdlcmUgbm90IGZldGNoZWRcbiAgICAgICAgICAgIC4uLk9iamVjdC5mcm9tRW50cmllcyhkZWZhdWx0RGF0YVN0YXRlcy5tYXAoZGF0YVN0YXRlID0+IFtkYXRhU3RhdGUsIHZhbHVlc1tEYXRhU3RhdGUub3JpZ2luYWxdIHx8IG5vZGVdKSksXG4gICAgICAgICAgICAuLi52YWx1ZXNcbiAgICAgICAgICB9KSBhcyBub2RlU3RhdGVzICYgSVN0b3JlZE5vZGVcbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5fbm9kZXNMb2FkUmVxdWVzdHNbbm9kZVsnQHR5cGUnXV0ucHVzaCh7XG4gICAgICBpZDogbm9kZVsnQGlkJ10sXG4gICAgICByZXF1ZXN0XG4gICAgfSk7XG5cbiAgICByZXF1ZXN0LnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgIHRoaXMuX25vZGVzW25vZGVbJ0B0eXBlJ11dW2luZGV4XSA9IGRhdGE7XG4gICAgICB0aGlzLl9ub2RlcyQubmV4dCh0aGlzLl9ub2Rlcyk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVxdWVzdDtcbiAgfVxuXG4gIHB1YmxpYyBhZGROb2RlPFQgZXh0ZW5kcyBQaWNrPEpTT05MRDxOb2RlVHlwZT4sICdAdHlwZScgfCAnQGlkJz4+KG5vZGU6IFQpIHtcbiAgICB0aGlzLl9ub2Rlc0xvYWRSZXF1ZXN0c1tub2RlWydAdHlwZSddXSA9IHRoaXMuX25vZGVzTG9hZFJlcXVlc3RzW25vZGVbJ0B0eXBlJ11dIHx8IFtdO1xuICAgIHRoaXMuX25vZGVzW25vZGVbJ0B0eXBlJ11dID0gdGhpcy5fbm9kZXNbbm9kZVsnQHR5cGUnXV0gfHwgW107XG5cbiAgICBjb25zdCBleGlzdGluZ1JlcXVlc3QgPSB0aGlzLl9ub2Rlc0xvYWRSZXF1ZXN0c1tub2RlWydAdHlwZSddXS5maW5kKCh7IGlkIH0pID0+IGlkID09PSBub2RlWydAaWQnXSk7XG4gICAgcmV0dXJuIGV4aXN0aW5nUmVxdWVzdCA/IGV4aXN0aW5nUmVxdWVzdC5yZXF1ZXN0IDogdGhpcy5sb2FkTm9kZTxUPihub2RlKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVOb2RlQnlJbmRleChub2RlVHlwZTogTm9kZVR5cGUsIGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLl9ub2Rlc0xvYWRSZXF1ZXN0c1tub2RlVHlwZV0uc3BsaWNlKGluZGV4LCAxKTtcbiAgICB0aGlzLl9ub2Rlc1tub2RlVHlwZV0uc3BsaWNlKGluZGV4LCAxKTtcbiAgICB0aGlzLl9ub2RlcyQubmV4dCh0aGlzLl9ub2Rlcyk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlTm9kZTxUIGV4dGVuZHMgSlNPTkxEPE5vZGVUeXBlPj4obm9kZTogVCkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maW5kTm9kZUluZGV4KG5vZGUpO1xuICAgIHJldHVybiBpbmRleCA+PSAwID8gdGhpcy5yZW1vdmVOb2RlQnlJbmRleChub2RlWydAdHlwZSddLCBpbmRleCkgOiBudWxsO1xuICB9XG5cbiAgcHVibGljIGNsZWFyTm9kZXMoKSB7XG4gICAgdGhpcy5fbm9kZXNMb2FkUmVxdWVzdHMgPSB7fTtcbiAgICB0aGlzLl9ub2RlcyA9IHt9O1xuICAgIHRoaXMuX25vZGVzJC5uZXh0KHRoaXMuX25vZGVzKTtcbiAgfVxuXG4gIHB1YmxpYyBub2RlcyQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX25vZGVzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzb3J0ZWROb2RlcyQoKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZXMkKCkucGlwZShcbiAgICAgIG1hcChcbiAgICAgICAgbm9kZXMgPT5cbiAgICAgICAgICBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMobm9kZXMpLm1hcCgoW25vZGVLZXksIHZhbHVlc10pID0+IFtub2RlS2V5LCBzb3J0Tm9kZXModmFsdWVzKV0pKSBhcyBub2Rlc1xuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgaWRzJChub2RlVHlwZTogTm9kZVR5cGUpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlcyQoKS5waXBlKFxuICAgICAgbWVyZ2VNYXAodmFsdWVzID0+IHZhbHVlc1tub2RlVHlwZV0pLFxuICAgICAgbWFwKCh7IGlkIH0pID0+IGlkKSxcbiAgICAgIHRvQXJyYXkoKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZmluZCQ8VCBleHRlbmRzIEpTT05MRDxOb2RlVHlwZT4+KFxuICAgIG5vZGVUeXBlOiBOb2RlVHlwZSxcbiAgICBpZD86IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPHsgW2RhdGFTdGF0ZSBpbiBEYXRhU3RhdGVdPzogVCB9W10+IHtcbiAgICByZXR1cm4gdGhpcy5ub2RlcyQoKS5waXBlKG1hcCh2YWx1ZXMgPT4gKCh2YWx1ZXNbbm9kZVR5cGVdIGFzIGFueVtdKSB8fCBbXSkuZmlsdGVyKG5vZGUgPT4gIWlkIHx8IG5vZGUuaWQgPT09IGlkKSkpO1xuICB9XG5cbiAgcHVibGljIGZpbmRCeVN0YXRlJDxUIGV4dGVuZHMgSlNPTkxEPE5vZGVUeXBlPj4obm9kZVR5cGU6IE5vZGVUeXBlLCBkYXRhU3RhdGU6IERhdGFTdGF0ZSwgaWQ/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5maW5kJDxUPihub2RlVHlwZSwgaWQpLnBpcGUobWFwKHZhbHVlcyA9PiB2YWx1ZXMubWFwKHYgPT4gdltkYXRhU3RhdGVdKS5maWx0ZXIoQm9vbGVhbikpKTtcbiAgfVxufVxuIl19
@@ -84,11 +84,11 @@ export class HeNodeService {
84
84
  .toPromise()
85
85
  .catch(handleAPIError);
86
86
  }
87
+ downloadRaw$(url, responseType = 'json') {
88
+ return this.http.get(url, { responseType }).pipe(catchError(() => of((responseType === 'json' ? {} : ''))));
89
+ }
87
90
  downloadRaw(url, responseType = 'json') {
88
- return this.http
89
- .get(url, { responseType })
90
- .toPromise()
91
- .catch(() => (responseType === 'json' ? {} : ''));
91
+ return this.downloadRaw$(url, responseType).toPromise();
92
92
  }
93
93
  nodeTypeUrl(type) {
94
94
  return nodeTypeUrl(this.commonService.apiBaseUrl, type);
@@ -126,4 +126,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.8", ngImpor
126
126
  providedIn: 'root'
127
127
  }]
128
128
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.HeAuthService }, { type: i3.HeCommonService }]; } });
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25vZGUvbm9kZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0QsT0FBTyxFQUFzRCxRQUFRLEVBQWdCLE1BQU0sc0JBQXNCLENBQUM7QUFHbEgsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBRzFDLE1BQU0sV0FBVyxHQUFHLENBQUMsVUFBa0IsRUFBRSxJQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFFcEg7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQUMsVUFBa0IsRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksRUFBYSxFQUFFLEVBQUUsQ0FDL0UsR0FBRyxXQUFXLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFLEdBQzlFLFNBQVMsQ0FBQyxDQUFDLENBQUMsY0FBYyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDMUMsRUFBRSxD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QUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQ2pFO1FBQUMsT0FBTyxJQUFJLEVBQUU7WUFDYixPQUFPLElBQUksQ0FBQztTQUNiO0lBQ0gsQ0FBQzs4R0E3R1UsYUFBYTtrSEFBYixhQUFhLGNBRlosTUFBTTs7MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERhdGFTdGF0ZSwgbm9kZVR5cGVUb1BhcmFtIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9hcGknO1xuaW1wb3J0IHsgSUN5Y2xlSlNPTkxELCBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCwgSVNpdGVKU09OTEQsIE5vZGVUeXBlLCBUZXJtVGVybVR5cGUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5cbmltcG9ydCB7IElOb2RlTWlzc2luZ0xvb2t1cExvZyB9IGZyb20gJy4vbm9kZS1sb2dzLW1vZGVscy9ub2RlLWxvZ3MtbW9kZWxzLm1vZGVsJztcbmltcG9ydCB7IGZpbHRlclBhcmFtcywgaGFuZGxlQVBJRXJyb3IgfSBmcm9tICcuLi9jb21tb24vdXRpbHMnO1xuaW1wb3J0IHsgSGVDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL2NvbW1vbi5zZXJ2aWNlJztcbmltcG9ydCB7IGJhc2VVcmwgfSBmcm9tICcuLi9jb21tb24vdXRpbHMnO1xuaW1wb3J0IHsgSGVBdXRoU2VydmljZSB9IGZyb20gJy4uL2F1dGgvYXV0aC5zZXJ2aWNlJztcblxuY29uc3Qgbm9kZVR5cGVVcmwgPSAoYXBpQmFzZVVybDogc3RyaW5nLCB0eXBlPzogTm9kZVR5cGUpID0+ICh0eXBlID8gYCR7YXBpQmFzZVVybH0vJHtub2RlVHlwZVRvUGFyYW0odHlwZSl9YCA6ICcnKTtcblxuLyoqXG4gKiBHZXQgdGhlIGZ1bGwgdXJsIHRvIGZldGNoIHRoZSBub2RlIGRhdGEuXG4gKlxuICogQHBhcmFtIGFwaUJhc2VVcmwgVGhlIHVybCBvZiB0aGUgQVBJIGhvc3RpbmcgdGhlIGRhdGEuXG4gKiBAcGFyYW0gbm9kZSBUaGUgbm9kZSB3aXRoIGEgdHlwZSwgaWQgYW5kIG9wdGlvbmFsbHkgYSBkYXRhU3RhdGVcbiAqIEByZXR1cm5zIFRoZSBmdWxsIHVybC5cbiAqL1xuZXhwb3J0IGNvbnN0IG5vZGVVcmwgPSAoYXBpQmFzZVVybDogc3RyaW5nLCB7IGRhdGFTdGF0ZSwgLi4ubm9kZSB9OiBJSlNPTk5vZGUpID0+XG4gIGAke25vZGVUeXBlVXJsKGFwaUJhc2VVcmwsIG5vZGVbJ0B0eXBlJ10gfHwgbm9kZS50eXBlKX0vJHtub2RlWydAaWQnXSB8fCBub2RlLmlkfSR7XG4gICAgZGF0YVN0YXRlID8gYD9kYXRhU3RhdGU9JHtkYXRhU3RhdGV9YCA6ICcnXG4gIH1gO1xuXG5leHBvcnQgY29uc3Qgbm9kZUxvZ3NVcmwgPSAoYXBpQmFzZVVybDogc3RyaW5nLCB7IGRhdGFTdGF0ZSwgLi4ubm9kZSB9OiBJSlNPTk5vZGUpID0+XG4gIGAke25vZGVVcmwoYXBpQmFzZVVybCwgbm9kZSl9L2xvZyR7ZGF0YVN0YXRlID8gYD9kYXRhU3RhdGU9JHtkYXRhU3RhdGV9YCA6ICcnfWA7XG5cbmV4cG9ydCBjb25zdCBsb29rdXBVcmwgPSAoZmlsZW5hbWU6IHN0cmluZykgPT5cbiAgZmlsZW5hbWUuc3RhcnRzV2l0aCgnaHR0cCcpID8gZmlsZW5hbWUgOiBgJHtiYXNlVXJsKCl9L2dsb3NzYXJ5L2xvb2t1cHMvJHtmaWxlbmFtZX0uY3N2YDtcblxuZXhwb3J0IGludGVyZmFjZSBJSlNPTk5vZGUge1xuICAnQHR5cGUnPzogTm9kZVR5cGU7XG4gICdAaWQnPzogc3RyaW5nO1xuICB0eXBlPzogTm9kZVR5cGU7XG4gIGlkPzogc3RyaW5nO1xuICBkYXRhU3RhdGU/OiBEYXRhU3RhdGU7XG4gIGFnZ3JlZ2F0ZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElSZWxhdGVkTm9kZSB7XG4gICdAdHlwZSc6IE5vZGVUeXBlO1xuICAnQGlkJzogc3RyaW5nO1xuICBbeDogc3RyaW5nXTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElKU09ORGF0YSB7XG4gIFtOb2RlVHlwZS5DeWNsZV0/OiBJQ3ljbGVKU09OTERbXTtcbiAgW05vZGVUeXBlLlNpdGVdPzogSVNpdGVKU09OTERbXTtcbiAgW05vZGVUeXBlLkltcGFjdEFzc2Vzc21lbnRdPzogSUltcGFjdEFzc2Vzc21lbnRKU09OTERbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTm9kZUVycm9yTG9nIHtcbiAgZXJyb3I6IHN0cmluZztcbiAgc3RhY2s/OiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEhlTm9kZVNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcm90ZWN0ZWQgYXV0aFNlcnZpY2U6IEhlQXV0aFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGNvbW1vblNlcnZpY2U6IEhlQ29tbW9uU2VydmljZVxuICApIHt9XG5cbiAgZ2V0JDxUPih7IGRhdGFTdGF0ZSwgLi4ubm9kZSB9OiBJSlNPTk5vZGUpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxUPih0aGlzLm5vZGVVcmwobm9kZSksIHtcbiAgICAgIGhlYWRlcnM6IHRoaXMuYXV0aFNlcnZpY2UuaGVhZGVycyxcbiAgICAgIHBhcmFtczogZmlsdGVyUGFyYW1zKHsgZGF0YVN0YXRlIH0pXG4gICAgfSk7XG4gIH1cblxuICBnZXRXaXRoSGVhZGVycyQ8VD4oeyBkYXRhU3RhdGUsIC4uLm5vZGUgfTogSUpTT05Ob2RlKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxUPih0aGlzLm5vZGVVcmwobm9kZSksIHtcbiAgICAgICAgaGVhZGVyczogdGhpcy5hdXRoU2VydmljZS5oZWFkZXJzLFxuICAgICAgICBwYXJhbXM6IGZpbHRlclBhcmFtcyh7IGRhdGFTdGF0ZSB9KSxcbiAgICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ1xuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAocmVzcCA9PiAoe1xuICAgICAgICAgIGhlYWRlcnM6IHJlc3AuaGVhZGVycyxcbiAgICAgICAgICBkYXRhOiByZXNwLmJvZHlcbiAgICAgICAgfSkpXG4gICAgICApO1xuICB9XG5cbiAgZ2V0PFQ+KG5vZGU6IElKU09OTm9kZSwgZGVmYXVsdEZvclN0YXRlID0gdHJ1ZSkge1xuICAgIHJldHVybiB0aGlzLmdldCQ8VD4obm9kZSlcbiAgICAgIC50b1Byb21pc2UoKVxuICAgICAgLmNhdGNoKCgpID0+IChub2RlLmRhdGFTdGF0ZSAmJiBkZWZhdWx0Rm9yU3RhdGUgPyAobm9kZSBhcyBhbnkgYXMgVCkgOiAoe30gYXMgVCkpKTtcbiAgfVxuXG4gIGdldExvZyh7IGRhdGFTdGF0ZSwgYWdncmVnYXRlZCwgLi4ubm9kZSB9OiBJSlNPTk5vZGUpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0KGAke3RoaXMubm9kZVVybChub2RlKX0vbG9nYCwge1xuICAgICAgICBoZWFkZXJzOiB0aGlzLmF1dGhTZXJ2aWNlLmhlYWRlcnMsXG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnLFxuICAgICAgICBwYXJhbXM6IGZpbHRlclBhcmFtcyhkYXRhU3RhdGUgPT09IERhdGFTdGF0ZS5yZWNhbGN1bGF0ZWQgPyB7IGRhdGFTdGF0ZSB9IDogeyBhZ2dyZWdhdGVkIH0pXG4gICAgICB9KVxuICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoKSA9PiBvZignJykpKTtcbiAgfVxuXG4gIGdldE1pc3NpbmdMb29rdXBzTG9nKHsgZGF0YVN0YXRlLCAuLi5ub2RlIH06IElKU09OTm9kZSkge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8SU5vZGVNaXNzaW5nTG9va3VwTG9nW10+KGAke3RoaXMubm9kZVVybChub2RlKX0vbG9nL2xvb2t1cHNgLCB7XG4gICAgICAgIGhlYWRlcnM6IHRoaXMuYXV0aFNlcnZpY2UuaGVhZGVycyxcbiAgICAgICAgcGFyYW1zOiBmaWx0ZXJQYXJhbXMoeyBkYXRhU3RhdGUgfSlcbiAgICAgIH0pXG4gICAgICAudG9Qcm9taXNlKClcbiAgICAgIC5jYXRjaCgoKSA9PiBbXSBhcyBJTm9kZU1pc3NpbmdMb29rdXBMb2dbXSk7XG4gIH1cblxuICBnZXRFcnJvckxvZyh7IGRhdGFTdGF0ZSwgYWdncmVnYXRlZCwgLi4ubm9kZSB9OiBJSlNPTk5vZGUpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PElOb2RlRXJyb3JMb2c+KGAke3RoaXMubm9kZVVybChub2RlKX0vbG9nL2Vycm9yYCwge1xuICAgICAgICBoZWFkZXJzOiB0aGlzLmF1dGhTZXJ2aWNlLmhlYWRlcnMsXG4gICAgICAgIHBhcmFtczogZmlsdGVyUGFyYW1zKGRhdGFTdGF0ZSA9PT0gRGF0YVN0YXRlLnJlY2FsY3VsYXRlZCA/IHsgZGF0YVN0YXRlIH0gOiB7IGFnZ3JlZ2F0ZWQgfSlcbiAgICAgIH0pXG4gICAgICAudG9Qcm9taXNlKClcbiAgICAgIC5jYXRjaChoYW5kbGVBUElFcnJvcik7XG4gIH1cblxuICB0cmlnZ2VyUGlwZWxpbmUoeyBkYXRhU3RhdGUsIC4uLm5vZGUgfTogSUpTT05Ob2RlKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3QoYCR7dGhpcy5ub2RlVXJsKG5vZGUpfS9waXBlbGluZWAsIGZpbHRlclBhcmFtcyh7IGRhdGFTdGF0ZSB9KSwge1xuICAgICAgICBoZWFkZXJzOiB0aGlzLmF1dGhTZXJ2aWNlLmhlYWRlcnNcbiAgICAgIH0pXG4gICAgICAudG9Qcm9taXNlKClcbiAgICAgIC5jYXRjaChoYW5kbGVBUElFcnJvcik7XG4gIH1cblxuICBkb3dubG9hZFJhdzxUID0gYW55Pih1cmw6IHN0cmluZywgcmVzcG9uc2VUeXBlOiBhbnkgPSAnanNvbicpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PFQ+KHVybCwgeyByZXNwb25zZVR5cGUgfSlcbiAgICAgIC50b1Byb21pc2UoKVxuICAgICAgLmNhdGNoKCgpID0+IChyZXNwb25zZVR5cGUgPT09ICdqc29uJyA/IHt9IDogJycpIGFzIFQpO1xuICB9XG5cbiAgcHVibGljIG5vZGVUeXBlVXJsKHR5cGU6IGFueSkge1xuICAgIHJldHVybiBub2RlVHlwZVVybCh0aGlzLmNvbW1vblNlcnZpY2UuYXBpQmFzZVVybCwgdHlwZSk7XG4gIH1cblxuICBwdWJsaWMgbm9kZVVybChub2RlOiBJSlNPTk5vZGUpIHtcbiAgICByZXR1cm4gbm9kZVVybCh0aGlzLmNvbW1vblNlcnZpY2UuYXBpQmFzZVVybCwgbm9kZSk7XG4gIH1cblxuICBwdWJsaWMgbm9kZUxvZ3NVcmwobm9kZTogSUpTT05Ob2RlKSB7XG4gICAgcmV0dXJuIG5vZGVMb2dzVXJsKHRoaXMuY29tbW9uU2VydmljZS5hcGlCYXNlVXJsLCBub2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkb3dubG9hZExvb2t1cChmaWxlbmFtZTogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVybCA9IGxvb2t1cFVybChmaWxlbmFtZSk7XG4gICAgICByZXR1cm4gdGhpcy5kb3dubG9hZFJhdzxzdHJpbmc+KHVybCwgJ3RleHQnKTtcbiAgICB9IGNhdGNoIChfZXJyKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9va3VwTGluayh0ZXJtVHlwZTogVGVybVRlcm1UeXBlKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmRvd25sb2FkTG9va3VwKHRlcm1UeXBlKTtcbiAgICAgIHJldHVybiBkYXRhPy5zdGFydHNXaXRoKCd0ZXJtLmlkJykgPyBsb29rdXBVcmwodGVybVR5cGUpIDogbnVsbDtcbiAgICB9IGNhdGNoIChfZXJyKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25vZGUvbm9kZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0QsT0FBTyxFQUFzRCxRQUFRLEVBQWdCLE1BQU0sc0JBQXNCLENBQUM7QUFHbEgsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBRzFDLE1BQU0sV0FBVyxHQUFHLENBQUMsVUFBa0IsRUFBRSxJQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFFcEg7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQUMsVUFBa0IsRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksRUFBYSxFQUFFLEVBQUUsQ0FDL0UsR0FBRyxXQUFXLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFLEdBQzlFLFNBQVMsQ0FBQyxDQUFDLENBQUMsY0FBYyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDMUMsRUFBRSxD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QyxVQUFVLENBQUMsUUFBc0I7UUFDNUMsSUFBSTtZQUNGLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNqRCxPQUFPLElBQUksRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQ2pFO1FBQUMsT0FBTyxJQUFJLEVBQUU7WUFDYixPQUFPLElBQUksQ0FBQztTQUNiO0lBQ0gsQ0FBQzs4R0E5R1UsYUFBYTtrSEFBYixhQUFhLGNBRlosTUFBTTs7MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERhdGFTdGF0ZSwgbm9kZVR5cGVUb1BhcmFtIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9hcGknO1xuaW1wb3J0IHsgSUN5Y2xlSlNPTkxELCBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCwgSVNpdGVKU09OTEQsIE5vZGVUeXBlLCBUZXJtVGVybVR5cGUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5cbmltcG9ydCB7IElOb2RlTWlzc2luZ0xvb2t1cExvZyB9IGZyb20gJy4vbm9kZS1sb2dzLW1vZGVscy9ub2RlLWxvZ3MtbW9kZWxzLm1vZGVsJztcbmltcG9ydCB7IGZpbHRlclBhcmFtcywgaGFuZGxlQVBJRXJyb3IgfSBmcm9tICcuLi9jb21tb24vdXRpbHMnO1xuaW1wb3J0IHsgSGVDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL2NvbW1vbi5zZXJ2aWNlJztcbmltcG9ydCB7IGJhc2VVcmwgfSBmcm9tICcuLi9jb21tb24vdXRpbHMnO1xuaW1wb3J0IHsgSGVBdXRoU2VydmljZSB9IGZyb20gJy4uL2F1dGgvYXV0aC5zZXJ2aWNlJztcblxuY29uc3Qgbm9kZVR5cGVVcmwgPSAoYXBpQmFzZVVybDogc3RyaW5nLCB0eXBlPzogTm9kZVR5cGUpID0+ICh0eXBlID8gYCR7YXBpQmFzZVVybH0vJHtub2RlVHlwZVRvUGFyYW0odHlwZSl9YCA6ICcnKTtcblxuLyoqXG4gKiBHZXQgdGhlIGZ1bGwgdXJsIHRvIGZldGNoIHRoZSBub2RlIGRhdGEuXG4gKlxuICogQHBhcmFtIGFwaUJhc2VVcmwgVGhlIHVybCBvZiB0aGUgQVBJIGhvc3RpbmcgdGhlIGRhdGEuXG4gKiBAcGFyYW0gbm9kZSBUaGUgbm9kZSB3aXRoIGEgdHlwZSwgaWQgYW5kIG9wdGlvbmFsbHkgYSBkYXRhU3RhdGVcbiAqIEByZXR1cm5zIFRoZSBmdWxsIHVybC5cbiAqL1xuZXhwb3J0IGNvbnN0IG5vZGVVcmwgPSAoYXBpQmFzZVVybDogc3RyaW5nLCB7IGRhdGFTdGF0ZSwgLi4ubm9kZSB9OiBJSlNPTk5vZGUpID0+XG4gIGAke25vZGVUeXBlVXJsKGFwaUJhc2VVcmwsIG5vZGVbJ0B0eXBlJ10gfHwgbm9kZS50eXBlKX0vJHtub2RlWydAaWQnXSB8fCBub2RlLmlkfSR7XG4gICAgZGF0YVN0YXRlID8gYD9kYXRhU3RhdGU9JHtkYXRhU3RhdGV9YCA6ICcnXG4gIH1gO1xuXG5leHBvcnQgY29uc3Qgbm9kZUxvZ3NVcmwgPSAoYXBpQmFzZVVybDogc3RyaW5nLCB7IGRhdGFTdGF0ZSwgLi4ubm9kZSB9OiBJSlNPTk5vZGUpID0+XG4gIGAke25vZGVVcmwoYXBpQmFzZVVybCwgbm9kZSl9L2xvZyR7ZGF0YVN0YXRlID8gYD9kYXRhU3RhdGU9JHtkYXRhU3RhdGV9YCA6ICcnfWA7XG5cbmV4cG9ydCBjb25zdCBsb29rdXBVcmwgPSAoZmlsZW5hbWU6IHN0cmluZykgPT5cbiAgZmlsZW5hbWUuc3RhcnRzV2l0aCgnaHR0cCcpID8gZmlsZW5hbWUgOiBgJHtiYXNlVXJsKCl9L2dsb3NzYXJ5L2xvb2t1cHMvJHtmaWxlbmFtZX0uY3N2YDtcblxuZXhwb3J0IGludGVyZmFjZSBJSlNPTk5vZGUge1xuICAnQHR5cGUnPzogTm9kZVR5cGU7XG4gICdAaWQnPzogc3RyaW5nO1xuICB0eXBlPzogTm9kZVR5cGU7XG4gIGlkPzogc3RyaW5nO1xuICBkYXRhU3RhdGU/OiBEYXRhU3RhdGU7XG4gIGFnZ3JlZ2F0ZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElSZWxhdGVkTm9kZSB7XG4gICdAdHlwZSc6IE5vZGVUeXBlO1xuICAnQGlkJzogc3RyaW5nO1xuICBbeDogc3RyaW5nXTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElKU09ORGF0YSB7XG4gIFtOb2RlVHlwZS5DeWNsZV0/OiBJQ3ljbGVKU09OTERbXTtcbiAgW05vZGVUeXBlLlNpdGVdPzogSVNpdGVKU09OTERbXTtcbiAgW05vZGVUeXBlLkltcGFjdEFzc2Vzc21lbnRdPzogSUltcGFjdEFzc2Vzc21lbnRKU09OTERbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTm9kZUVycm9yTG9nIHtcbiAgZXJyb3I6IHN0cmluZztcbiAgc3RhY2s/OiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEhlTm9kZVNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcm90ZWN0ZWQgYXV0aFNlcnZpY2U6IEhlQXV0aFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGNvbW1vblNlcnZpY2U6IEhlQ29tbW9uU2VydmljZVxuICApIHt9XG5cbiAgZ2V0JDxUPih7IGRhdGFTdGF0ZSwgLi4ubm9kZSB9OiBJSlNPTk5vZGUpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxUPih0aGlzLm5vZGVVcmwobm9kZSksIHtcbiAgICAgIGhlYWRlcnM6IHRoaXMuYXV0aFNlcnZpY2UuaGVhZGVycyxcbiAgICAgIHBhcmFtczogZmlsdGVyUGFyYW1zKHsgZGF0YVN0YXRlIH0pXG4gICAgfSk7XG4gIH1cblxuICBnZXRXaXRoSGVhZGVycyQ8VD4oeyBkYXRhU3RhdGUsIC4uLm5vZGUgfTogSUpTT05Ob2RlKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxUPih0aGlzLm5vZGVVcmwobm9kZSksIHtcbiAgICAgICAgaGVhZGVyczogdGhpcy5hdXRoU2VydmljZS5oZWFkZXJzLFxuICAgICAgICBwYXJhbXM6IGZpbHRlclBhcmFtcyh7IGRhdGFTdGF0ZSB9KSxcbiAgICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ1xuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAocmVzcCA9PiAoe1xuICAgICAgICAgIGhlYWRlcnM6IHJlc3AuaGVhZGVycyxcbiAgICAgICAgICBkYXRhOiByZXNwLmJvZHlcbiAgICAgICAgfSkpXG4gICAgICApO1xuICB9XG5cbiAgZ2V0PFQ+KG5vZGU6IElKU09OTm9kZSwgZGVmYXVsdEZvclN0YXRlID0gdHJ1ZSkge1xuICAgIHJldHVybiB0aGlzLmdldCQ8VD4obm9kZSlcbiAgICAgIC50b1Byb21pc2UoKVxuICAgICAgLmNhdGNoKCgpID0+IChub2RlLmRhdGFTdGF0ZSAmJiBkZWZhdWx0Rm9yU3RhdGUgPyAobm9kZSBhcyBhbnkgYXMgVCkgOiAoe30gYXMgVCkpKTtcbiAgfVxuXG4gIGdldExvZyh7IGRhdGFTdGF0ZSwgYWdncmVnYXRlZCwgLi4ubm9kZSB9OiBJSlNPTk5vZGUpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0KGAke3RoaXMubm9kZVVybChub2RlKX0vbG9nYCwge1xuICAgICAgICBoZWFkZXJzOiB0aGlzLmF1dGhTZXJ2aWNlLmhlYWRlcnMsXG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnLFxuICAgICAgICBwYXJhbXM6IGZpbHRlclBhcmFtcyhkYXRhU3RhdGUgPT09IERhdGFTdGF0ZS5yZWNhbGN1bGF0ZWQgPyB7IGRhdGFTdGF0ZSB9IDogeyBhZ2dyZWdhdGVkIH0pXG4gICAgICB9KVxuICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoKSA9PiBvZignJykpKTtcbiAgfVxuXG4gIGdldE1pc3NpbmdMb29rdXBzTG9nKHsgZGF0YVN0YXRlLCAuLi5ub2RlIH06IElKU09OTm9kZSkge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8SU5vZGVNaXNzaW5nTG9va3VwTG9nW10+KGAke3RoaXMubm9kZVVybChub2RlKX0vbG9nL2xvb2t1cHNgLCB7XG4gICAgICAgIGhlYWRlcnM6IHRoaXMuYXV0aFNlcnZpY2UuaGVhZGVycyxcbiAgICAgICAgcGFyYW1zOiBmaWx0ZXJQYXJhbXMoeyBkYXRhU3RhdGUgfSlcbiAgICAgIH0pXG4gICAgICAudG9Qcm9taXNlKClcbiAgICAgIC5jYXRjaCgoKSA9PiBbXSBhcyBJTm9kZU1pc3NpbmdMb29rdXBMb2dbXSk7XG4gIH1cblxuICBnZXRFcnJvckxvZyh7IGRhdGFTdGF0ZSwgYWdncmVnYXRlZCwgLi4ubm9kZSB9OiBJSlNPTk5vZGUpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PElOb2RlRXJyb3JMb2c+KGAke3RoaXMubm9kZVVybChub2RlKX0vbG9nL2Vycm9yYCwge1xuICAgICAgICBoZWFkZXJzOiB0aGlzLmF1dGhTZXJ2aWNlLmhlYWRlcnMsXG4gICAgICAgIHBhcmFtczogZmlsdGVyUGFyYW1zKGRhdGFTdGF0ZSA9PT0gRGF0YVN0YXRlLnJlY2FsY3VsYXRlZCA/IHsgZGF0YVN0YXRlIH0gOiB7IGFnZ3JlZ2F0ZWQgfSlcbiAgICAgIH0pXG4gICAgICAudG9Qcm9taXNlKClcbiAgICAgIC5jYXRjaChoYW5kbGVBUElFcnJvcik7XG4gIH1cblxuICB0cmlnZ2VyUGlwZWxpbmUoeyBkYXRhU3RhdGUsIC4uLm5vZGUgfTogSUpTT05Ob2RlKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3QoYCR7dGhpcy5ub2RlVXJsKG5vZGUpfS9waXBlbGluZWAsIGZpbHRlclBhcmFtcyh7IGRhdGFTdGF0ZSB9KSwge1xuICAgICAgICBoZWFkZXJzOiB0aGlzLmF1dGhTZXJ2aWNlLmhlYWRlcnNcbiAgICAgIH0pXG4gICAgICAudG9Qcm9taXNlKClcbiAgICAgIC5jYXRjaChoYW5kbGVBUElFcnJvcik7XG4gIH1cblxuICBkb3dubG9hZFJhdyQ8VCA9IGFueT4odXJsOiBzdHJpbmcsIHJlc3BvbnNlVHlwZTogYW55ID0gJ2pzb24nKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8VD4odXJsLCB7IHJlc3BvbnNlVHlwZSB9KS5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2YoKHJlc3BvbnNlVHlwZSA9PT0gJ2pzb24nID8ge30gOiAnJykgYXMgVCkpKTtcbiAgfVxuXG4gIGRvd25sb2FkUmF3PFQgPSBhbnk+KHVybDogc3RyaW5nLCByZXNwb25zZVR5cGU6IGFueSA9ICdqc29uJykge1xuICAgIHJldHVybiB0aGlzLmRvd25sb2FkUmF3JDxUPih1cmwsIHJlc3BvbnNlVHlwZSkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBwdWJsaWMgbm9kZVR5cGVVcmwodHlwZTogYW55KSB7XG4gICAgcmV0dXJuIG5vZGVUeXBlVXJsKHRoaXMuY29tbW9uU2VydmljZS5hcGlCYXNlVXJsLCB0eXBlKTtcbiAgfVxuXG4gIHB1YmxpYyBub2RlVXJsKG5vZGU6IElKU09OTm9kZSkge1xuICAgIHJldHVybiBub2RlVXJsKHRoaXMuY29tbW9uU2VydmljZS5hcGlCYXNlVXJsLCBub2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBub2RlTG9nc1VybChub2RlOiBJSlNPTk5vZGUpIHtcbiAgICByZXR1cm4gbm9kZUxvZ3NVcmwodGhpcy5jb21tb25TZXJ2aWNlLmFwaUJhc2VVcmwsIG5vZGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRvd25sb2FkTG9va3VwKGZpbGVuYW1lOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdXJsID0gbG9va3VwVXJsKGZpbGVuYW1lKTtcbiAgICAgIHJldHVybiB0aGlzLmRvd25sb2FkUmF3PHN0cmluZz4odXJsLCAndGV4dCcpO1xuICAgIH0gY2F0Y2ggKF9lcnIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsb29rdXBMaW5rKHRlcm1UeXBlOiBUZXJtVGVybVR5cGUpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuZG93bmxvYWRMb29rdXAodGVybVR5cGUpO1xuICAgICAgcmV0dXJuIGRhdGE/LnN0YXJ0c1dpdGgoJ3Rlcm0uaWQnKSA/IGxvb2t1cFVybCh0ZXJtVHlwZSkgOiBudWxsO1xuICAgIH0gY2F0Y2ggKF9lcnIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,12 +1,13 @@
1
1
  import { Component, Input, ViewChild, ChangeDetectionStrategy, Inject, signal, computed, effect } from '@angular/core';
2
2
  import { toSignal } from '@angular/core/rxjs-interop';
3
3
  import { GoogleMap } from '@angular/google-maps';
4
- import MarkerClusterer from '@googlemaps/markerclustererplus';
5
4
  import { NodeType } from '@hestia-earth/schema';
6
5
  import { unique } from '@hestia-earth/utils';
7
6
  import { DataState } from '@hestia-earth/api';
7
+ import { from } from 'rxjs';
8
+ import { map, mergeMap, shareReplay, toArray } from 'rxjs/operators';
8
9
  import { termLocation, termLocationName } from '../../terms/terms.model';
9
- import { HE_MAP_LOADED, clustererImage, createMarker, polygonsFromFeature, polygonBounds, strokeStyle } from '../../common/maps-utils';
10
+ import { HE_MAP_LOADED, createMarker, polygonsFromFeature, polygonBounds, strokeStyle, polygonToMap } from '../../common/maps-utils';
10
11
  import { baseUrl } from '../../common/utils';
11
12
  import * as i0 from "@angular/core";
12
13
  import * as i1 from "../../node";
@@ -24,99 +25,84 @@ const siteDefaultLocation = ({ region, country }) => {
24
25
  region ? createMarker(termLocation(region), termLocationName(region).name, undefined, 20) : undefined,
25
26
  country ? createMarker(termLocation(country), termLocationName(country).name, undefined, 40) : undefined
26
27
  ].filter(Boolean);
27
- return (markers.length ? markers[0] : undefined);
28
+ return markers?.[0];
28
29
  };
29
- const siteMarker = (site) => createMarker(site ? siteLocation(site) : undefined, site.name);
30
+ const siteMarker = (site) => createMarker(site ? siteLocation(site) : undefined, site.name) || siteDefaultLocation(site);
30
31
  const sitePolygon = ({ boundary }) => (boundary ? polygonsFromFeature(boundary, '#4D8ECB') : undefined);
31
- const regions = (sites) => unique(sites.map(({ country, region }) => (region ? region['@id'] : country ? country['@id'] : null)).filter(Boolean));
32
+ const regionIds = (sites) => unique((sites || [])
33
+ .map(({ country, region }) => (region ? region['@id'] : country ? country['@id'] : null))
34
+ .filter(Boolean));
32
35
  const defaultCenter = { lat: 0, lng: 0 };
33
36
  export class SitesMapsComponent {
37
+ set loadPolygons(value) {
38
+ this._loadPolygons.set(value);
39
+ }
34
40
  set sites(value) {
35
41
  this._sites.set(value);
36
42
  }
43
+ set center(value) {
44
+ this._center.set(value);
45
+ }
37
46
  constructor(mapLoaded$, nodeService, nodeStoreService) {
38
47
  this.mapLoaded$ = mapLoaded$;
39
48
  this.nodeService = nodeService;
40
49
  this.nodeStoreService = nodeStoreService;
41
- this._mapLoaded = signal(false);
42
- this.loadPolygons = true;
50
+ this._loadPolygonsRequests = {};
51
+ this._mapReady = signal(false);
52
+ this._loadPolygons = signal(true);
53
+ this.termPolygons = signal([]);
43
54
  /**
44
55
  * Display Site directly without using the node store.
45
56
  */
46
57
  this._sites = signal([]);
47
- this.center = defaultCenter;
58
+ this._center = signal(defaultCenter);
48
59
  this.zoom = 2;
49
60
  this.showNotice = true;
61
+ this.options = {
62
+ styles: []
63
+ };
50
64
  this.originalSites = toSignal(this.nodeStoreService.findByState$(NodeType.Site, DataState.original));
51
- this.nodes = computed(() => (this._sites()?.length ? this._sites() : this.originalSites()) || []);
52
- this.hasData = computed(() => this.nodes()?.length > 0);
53
- this.showNoLocation = false;
65
+ this.nodes = computed(() => [...(this._sites() || []), ...(this.originalSites() || [])]);
66
+ this.markers = computed(() => this.nodes().map(siteMarker).filter(Boolean));
67
+ this._polygons = computed(() => this.nodes().flatMap(sitePolygon).filter(Boolean));
68
+ this.polygons = computed(() => this._polygons().map(polygon => polygonToMap(polygon)));
69
+ this.showNoLocation = computed(() => this.markers().length === 0 && this.polygons().length === 0 && this.termPolygons().length === 0);
70
+ this.mapCenter = computed(() => this.markers()?.[0]?.position || defaultCenter);
54
71
  effect(() => {
55
- this._mapLoaded() && this.hasData() && this.loadData();
56
- });
57
- }
58
- async loadData() {
59
- const markers = this.addSiteMarkers();
60
- // add the site.boundary if exist
61
- const polygons = this.nodes().flatMap(sitePolygon).filter(Boolean);
62
- polygons.map(polygon => polygon?.setMap(this.map.googleMap));
63
- // add the default site polygons from GADM region if any
64
- const termPolygons = (await Promise.all(regions(this.nodes()).map(v => this.addTermsPolygons(v)))).flat();
65
- this.showNoLocation = markers.length === 0 && polygons.length === 0 && termPolygons.length === 0;
66
- return markers.length
67
- ? this.centerMarker(markers[0])
68
- : this.centerPolygons(polygons.length ? polygons : termPolygons);
69
- }
70
- addMarkers(markers, cluster = false) {
71
- return cluster
72
- ? new MarkerClusterer(this.map.googleMap, markers, { imagePath: clustererImage })
73
- : markers.map(marker => marker.setMap(this.map.googleMap));
74
- }
75
- async addTermsPolygons(id) {
76
- return this.loadPolygons ? await this.termPolygons(id) : [];
77
- }
78
- centerMarker(marker) {
79
- const center = marker.getPosition();
80
- this.center = center ? { lat: center.lat(), lng: center.lng() } : defaultCenter;
81
- setTimeout(() => {
82
- this.map.googleMap.setCenter(this.center);
72
+ this.centerPolygons(this._polygons());
83
73
  });
74
+ effect(() => {
75
+ if (this._mapReady() && this._loadPolygons()) {
76
+ from(regionIds(this.nodes()))
77
+ .pipe(mergeMap(id => this.loadTermId(id)), mergeMap(feature => polygonsFromFeature(feature)), map(polygon => polygonToMap(polygon)), toArray())
78
+ .subscribe(values => this.termPolygons.set(values));
79
+ }
80
+ }, { allowSignalWrites: true });
84
81
  }
85
82
  centerPolygons(polygons) {
86
83
  return polygons?.length ? this.map.googleMap.fitBounds(polygonBounds(polygons)) : null;
87
84
  }
88
- addSiteMarkers() {
89
- const siteMarkers = this.nodes().map(siteMarker).filter(Boolean);
90
- const markers = siteMarkers.length ? siteMarkers : this.nodes().map(siteDefaultLocation).filter(Boolean);
91
- this.addMarkers(markers, !!siteMarkers.length);
92
- return markers;
93
- }
94
- async termPolygons(id) {
95
- try {
96
- const data = await this.nodeService.downloadRaw(`${baseUrl()}/gadm/${id}.geojson`);
97
- const polygons = polygonsFromFeature(data);
98
- polygons.map(polygon => polygon.setMap(this.map.googleMap));
99
- return polygons;
100
- }
101
- catch (_err) {
102
- // ignore error if the file does not exist
103
- return [];
104
- }
85
+ loadTermId(id) {
86
+ this._loadPolygonsRequests[id] =
87
+ this._loadPolygonsRequests[id] ||
88
+ this.nodeService
89
+ .downloadRaw$(`${baseUrl()}/gadm/${id}.geojson`)
90
+ .pipe(shareReplay({ bufferSize: 1, refCount: true }));
91
+ return this._loadPolygonsRequests[id];
105
92
  }
106
93
  mapLoaded() {
107
- this._mapLoaded.set(true);
108
94
  setTimeout(() => {
109
95
  // loaded data as geojson
110
96
  this.map.googleMap.data.setStyle(() => ({ ...strokeStyle, strokeOpacity: 0.1 }));
111
- return this._mapLoaded() && this.hasData() && this.loadData();
97
+ this._mapReady.set(true);
112
98
  });
113
99
  }
114
100
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.8", ngImport: i0, type: SitesMapsComponent, deps: [{ token: HE_MAP_LOADED }, { token: i1.HeNodeService }, { token: i1.HeNodeStoreService }], target: i0.ɵɵFactoryTarget.Component }); }
115
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.8", type: SitesMapsComponent, selector: "he-sites-maps", inputs: { loadPolygons: "loadPolygons", sites: "sites", center: "center", zoom: "zoom", showNotice: "showNotice" }, viewQueries: [{ propertyName: "map", first: true, predicate: GoogleMap, descendants: true }], ngImport: i0, template: "<google-map\n *ngIf=\"mapLoaded$ | async\"\n (mapInitialized)=\"mapLoaded()\"\n height=\"100%\"\n width=\"100%\"\n [zoom]=\"zoom\"\n [center]=\"center\"></google-map>\n\n<p *ngIf=\"showNotice\" class=\"mt-2 is-italic is-size-7\">The information provided might not be complete</p>\n\n<div class=\"no-location has-text-center has-text-light\" *ngIf=\"showNoLocation\">\n <span>No precise location data</span>\n</div>\n", styles: [":host{display:block;height:100%;position:relative;width:100%}.no-location{background-color:#0000004d;left:0;height:100%;position:absolute;top:0;width:100%;z-index:9}.no-location>span{display:inline-block;margin-top:12%}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.GoogleMap, selector: "google-map", inputs: ["height", "width", "mapTypeId", "center", "zoom", "options"], outputs: ["mapInitialized", "authFailure", "boundsChanged", "centerChanged", "mapClick", "mapDblclick", "mapDrag", "mapDragend", "mapDragstart", "headingChanged", "idle", "maptypeidChanged", "mapMousemove", "mapMouseout", "mapMouseover", "projectionChanged", "mapRightclick", "tilesloaded", "tiltChanged", "zoomChanged"], exportAs: ["googleMap"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
101
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.8", type: SitesMapsComponent, selector: "he-sites-maps", inputs: { loadPolygons: "loadPolygons", sites: "sites", center: "center", zoom: "zoom", showNotice: "showNotice" }, viewQueries: [{ propertyName: "map", first: true, predicate: GoogleMap, descendants: true }], ngImport: i0, template: "<google-map\n *ngIf=\"mapLoaded$ | async\"\n (mapInitialized)=\"mapLoaded()\"\n height=\"100%\"\n width=\"100%\"\n [zoom]=\"zoom\"\n [center]=\"mapCenter()\">\n <map-marker *ngFor=\"let marker of markers()\" [position]=\"marker.position\" [icon]=\"marker.icon\"></map-marker>\n <map-polygon *ngFor=\"let polygon of polygons()\" [paths]=\"polygon.paths\" [options]=\"polygon.options\" />\n <map-polygon *ngFor=\"let polygon of termPolygons()\" [paths]=\"polygon.paths\" [options]=\"polygon.options\" />\n</google-map>\n\n<p *ngIf=\"showNotice\" class=\"mt-2 is-italic is-size-7\">The information provided might not be complete</p>\n\n<div class=\"no-location has-text-center has-text-light\" *ngIf=\"showNoLocation()\">\n <span>No precise location data</span>\n</div>\n", styles: [":host{display:block;height:100%;position:relative;width:100%}.no-location{background-color:#0000004d;left:0;height:100%;position:absolute;top:0;width:100%;z-index:9}.no-location>span{display:inline-block;margin-top:12%}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.GoogleMap, selector: "google-map", inputs: ["height", "width", "mapTypeId", "center", "zoom", "options"], outputs: ["mapInitialized", "authFailure", "boundsChanged", "centerChanged", "mapClick", "mapDblclick", "mapDrag", "mapDragend", "mapDragstart", "headingChanged", "idle", "maptypeidChanged", "mapMousemove", "mapMouseout", "mapMouseover", "projectionChanged", "mapRightclick", "tilesloaded", "tiltChanged", "zoomChanged"], exportAs: ["googleMap"] }, { kind: "directive", type: i3.MapMarker, selector: "map-marker", inputs: ["title", "position", "label", "clickable", "options", "icon", "visible"], outputs: ["animationChanged", "mapClick", "clickableChanged", "cursorChanged", "mapDblclick", "mapDrag", "mapDragend", "draggableChanged", "mapDragstart", "flatChanged", "iconChanged", "mapMousedown", "mapMouseout", "mapMouseover", "mapMouseup", "positionChanged", "mapRightclick", "shapeChanged", "titleChanged", "visibleChanged", "zindexChanged"], exportAs: ["mapMarker"] }, { kind: "directive", type: i3.MapPolygon, selector: "map-polygon", inputs: ["options", "paths"], outputs: ["polygonClick", "polygonDblclick", "polygonDrag", "polygonDragend", "polygonDragstart", "polygonMousedown", "polygonMousemove", "polygonMouseout", "polygonMouseover", "polygonMouseup", "polygonRightclick"], exportAs: ["mapPolygon"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
116
102
  }
117
103
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.8", ngImport: i0, type: SitesMapsComponent, decorators: [{
118
104
  type: Component,
119
- args: [{ selector: 'he-sites-maps', changeDetection: ChangeDetectionStrategy.OnPush, template: "<google-map\n *ngIf=\"mapLoaded$ | async\"\n (mapInitialized)=\"mapLoaded()\"\n height=\"100%\"\n width=\"100%\"\n [zoom]=\"zoom\"\n [center]=\"center\"></google-map>\n\n<p *ngIf=\"showNotice\" class=\"mt-2 is-italic is-size-7\">The information provided might not be complete</p>\n\n<div class=\"no-location has-text-center has-text-light\" *ngIf=\"showNoLocation\">\n <span>No precise location data</span>\n</div>\n", styles: [":host{display:block;height:100%;position:relative;width:100%}.no-location{background-color:#0000004d;left:0;height:100%;position:absolute;top:0;width:100%;z-index:9}.no-location>span{display:inline-block;margin-top:12%}\n"] }]
105
+ args: [{ selector: 'he-sites-maps', changeDetection: ChangeDetectionStrategy.OnPush, template: "<google-map\n *ngIf=\"mapLoaded$ | async\"\n (mapInitialized)=\"mapLoaded()\"\n height=\"100%\"\n width=\"100%\"\n [zoom]=\"zoom\"\n [center]=\"mapCenter()\">\n <map-marker *ngFor=\"let marker of markers()\" [position]=\"marker.position\" [icon]=\"marker.icon\"></map-marker>\n <map-polygon *ngFor=\"let polygon of polygons()\" [paths]=\"polygon.paths\" [options]=\"polygon.options\" />\n <map-polygon *ngFor=\"let polygon of termPolygons()\" [paths]=\"polygon.paths\" [options]=\"polygon.options\" />\n</google-map>\n\n<p *ngIf=\"showNotice\" class=\"mt-2 is-italic is-size-7\">The information provided might not be complete</p>\n\n<div class=\"no-location has-text-center has-text-light\" *ngIf=\"showNoLocation()\">\n <span>No precise location data</span>\n</div>\n", styles: [":host{display:block;height:100%;position:relative;width:100%}.no-location{background-color:#0000004d;left:0;height:100%;position:absolute;top:0;width:100%;z-index:9}.no-location>span{display:inline-block;margin-top:12%}\n"] }]
120
106
  }], ctorParameters: function () { return [{ type: i4.Observable, decorators: [{
121
107
  type: Inject,
122
108
  args: [HE_MAP_LOADED]
@@ -134,4 +120,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.8", ngImpor
134
120
  }], showNotice: [{
135
121
  type: Input
136
122
  }] } });
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l0ZXMtbWFwcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2l0ZXMvc2l0ZXMtbWFwcy9zaXRlcy1tYXBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9zaXRlcy9zaXRlcy1tYXBzL3NpdGVzLW1hcHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2SCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sZUFBZSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxRQUFRLEVBQXdELE1BQU0sc0JBQXNCLENBQUM7QUFDdEcsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUk5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekUsT0FBTyxFQUNMLGFBQWEsRUFDYixjQUFjLEVBQ2QsWUFBWSxFQUNaLG1CQUFtQixFQUNuQixhQUFhLEVBQ2IsV0FBVyxFQUNaLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7QUFJN0MsTUFBTSxZQUFZLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQVEsRUFBRSxFQUFFLENBQ3JELFFBQVEsSUFBSSxTQUFTO0lBQ25CLENBQUMsQ0FBQztRQUNFLEdBQUcsRUFBRSxRQUFRO1FBQ2Is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QU0sQ0FBQyxJQUFJLENBQUMsR0FBSSxDQUFDLFNBQVUsQ0FBQyxDQUFDLENBQUM7WUFDOUQsT0FBTyxRQUFRLENBQUM7U0FDakI7UUFBQyxPQUFPLElBQUksRUFBRTtZQUNiLDBDQUEwQztZQUMxQyxPQUFPLEVBQUUsQ0FBQztTQUNYO0lBQ0gsQ0FBQztJQUVTLFNBQVM7UUFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFMUIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLHlCQUF5QjtZQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLFdBQVcsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRWpGLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQTNHVSxrQkFBa0Isa0JBaUNuQixhQUFhO2tHQWpDWixrQkFBa0IsOE1BR2xCLFNBQVMsZ0RDNUR0Qix5YUFhQTs7MkZENENhLGtCQUFrQjtrQkFOOUIsU0FBUzsrQkFDRSxlQUFlLG1CQUdSLHVCQUF1QixDQUFDLE1BQU07OzBCQW1DNUMsTUFBTTsyQkFBQyxhQUFhO3lHQTdCZixHQUFHO3NCQURWLFNBQVM7dUJBQUMsU0FBUztnQkFHWixZQUFZO3NCQURuQixLQUFLO2dCQVNGLEtBQUs7c0JBRFIsS0FBSztnQkFNSSxNQUFNO3NCQURmLEtBQUs7Z0JBR0ksSUFBSTtzQkFEYixLQUFLO2dCQUdJLFVBQVU7c0JBRG5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBWaWV3Q2hpbGQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBJbmplY3QsIHNpZ25hbCwgY29tcHV0ZWQsIGVmZmVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBHb29nbGVNYXAgfSBmcm9tICdAYW5ndWxhci9nb29nbGUtbWFwcyc7XG5pbXBvcnQgTWFya2VyQ2x1c3RlcmVyIGZyb20gJ0Bnb29nbGVtYXBzL21hcmtlcmNsdXN0ZXJlcnBsdXMnO1xuaW1wb3J0IHsgTm9kZVR5cGUsIElTaXRlSlNPTkxELCBTaXRlLCBJT3JnYW5pc2F0aW9uSlNPTkxELCBPcmdhbmlzYXRpb24gfSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5pbXBvcnQgeyB1bmlxdWUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3V0aWxzJztcbmltcG9ydCB7IERhdGFTdGF0ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvYXBpJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgSGVOb2RlU2VydmljZSwgSGVOb2RlU3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbm9kZSc7XG5pbXBvcnQgeyB0ZXJtTG9jYXRpb24sIHRlcm1Mb2NhdGlvbk5hbWUgfSBmcm9tICcuLi8uLi90ZXJtcy90ZXJtcy5tb2RlbCc7XG5pbXBvcnQge1xuICBIRV9NQVBfTE9BREVELFxuICBjbHVzdGVyZXJJbWFnZSxcbiAgY3JlYXRlTWFya2VyLFxuICBwb2x5Z29uc0Zyb21GZWF0dXJlLFxuICBwb2x5Z29uQm91bmRzLFxuICBzdHJva2VTdHlsZVxufSBmcm9tICcuLi8uLi9jb21tb24vbWFwcy11dGlscyc7XG5pbXBvcnQgeyBiYXNlVXJsIH0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWxzJztcblxudHlwZSBzaXRlID0gSVNpdGVKU09OTEQgfCBTaXRlIHwgSU9yZ2FuaXNhdGlvbkpTT05MRCB8IE9yZ2FuaXNhdGlvbjtcblxuY29uc3Qgc2l0ZUxvY2F0aW9uID0gKHsgbGF0aXR1ZGUsIGxvbmdpdHVkZSB9OiBzaXRlKSA9PlxuICBsYXRpdHVkZSAmJiBsb25naXR1ZGVcbiAgICA/IHtcbiAgICAgICAgbGF0OiBsYXRpdHVkZSxcbiAgICAgICAgbG5nOiBsb25naXR1ZGVcbiAgICAgIH1cbiAgICA6IHVuZGVmaW5lZDtcblxuY29uc3Qgc2l0ZURlZmF1bHRMb2NhdGlvbiA9ICh7IHJlZ2lvbiwgY291bnRyeSB9OiBzaXRlKSA9PiB7XG4gIGNvbnN0IG1hcmtlcnMgPSBbXG4gICAgcmVnaW9uID8gY3JlYXRlTWFya2VyKHRlcm1Mb2NhdGlvbihyZWdpb24pLCB0ZXJtTG9jYXRpb25OYW1lKHJlZ2lvbikubmFtZSwgdW5kZWZpbmVkLCAyMCkgOiB1bmRlZmluZWQsXG4gICAgY291bnRyeSA/IGNyZWF0ZU1hcmtlcih0ZXJtTG9jYXRpb24oY291bnRyeSksIHRlcm1Mb2NhdGlvbk5hbWUoY291bnRyeSkubmFtZSwgdW5kZWZpbmVkLCA0MCkgOiB1bmRlZmluZWRcbiAgXS5maWx0ZXIoQm9vbGVhbik7XG4gIHJldHVybiAobWFya2Vycy5sZW5ndGggPyBtYXJrZXJzWzBdIDogdW5kZWZpbmVkKSBhcyBnb29nbGUubWFwcy5NYXJrZXI7XG59O1xuXG5jb25zdCBzaXRlTWFya2VyID0gKHNpdGU6IHNpdGUpID0+IGNyZWF0ZU1hcmtlcihzaXRlID8gc2l0ZUxvY2F0aW9uKHNpdGUpIDogdW5kZWZpbmVkLCBzaXRlLm5hbWUpO1xuXG5jb25zdCBzaXRlUG9seWdvbiA9ICh7IGJvdW5kYXJ5IH06IHNpdGUpID0+XG4gIChib3VuZGFyeSA/IHBvbHlnb25zRnJvbUZlYXR1cmUoYm91bmRhcnkgYXMgYW55LCAnIzREOEVDQicpIDogdW5kZWZpbmVkKSBhcyBnb29nbGUubWFwcy5Qb2x5Z29uW107XG5cbmNvbnN0IHJlZ2lvbnMgPSAoc2l0ZXM6IHNpdGVbXSk6IHN0cmluZ1tdID0+XG4gIHVuaXF1ZShcbiAgICBzaXRlcy5tYXAoKHsgY291bnRyeSwgcmVnaW9uIH0pID0+IChyZWdpb24gPyByZWdpb25bJ0BpZCddIDogY291bnRyeSA/IGNvdW50cnlbJ0BpZCddIDogbnVsbCkpLmZpbHRlcihCb29sZWFuKVxuICApO1xuXG5jb25zdCBkZWZhdWx0Q2VudGVyID0geyBsYXQ6IDAsIGxuZzogMCB9O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZS1zaXRlcy1tYXBzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpdGVzLW1hcHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaXRlcy1tYXBzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNpdGVzTWFwc0NvbXBvbmVudCB7XG4gIHByaXZhdGUgX21hcExvYWRlZCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgQFZpZXdDaGlsZChHb29nbGVNYXApXG4gIHByaXZhdGUgbWFwPzogR29vZ2xlTWFwO1xuICBASW5wdXQoKVxuICBwcml2YXRlIGxvYWRQb2x5Z29ucyA9IHRydWU7XG5cbiAgLyoqXG4gICAqIERpc3BsYXkgU2l0ZSBkaXJlY3RseSB3aXRob3V0IHVzaW5nIHRoZSBub2RlIHN0b3JlLlxuICAgKi9cbiAgcHJpdmF0ZSBfc2l0ZXMgPSBzaWduYWwoW10gYXMgc2l0ZVtdKTtcblxuICBASW5wdXQoKVxuICBzZXQgc2l0ZXModmFsdWU6IHNpdGVbXSkge1xuICAgIHRoaXMuX3NpdGVzLnNldCh2YWx1ZSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBwcm90ZWN0ZWQgY2VudGVyID0gZGVmYXVsdENlbnRlcjtcbiAgQElucHV0KClcbiAgcHJvdGVjdGVkIHpvb20gPSAyO1xuICBASW5wdXQoKVxuICBwcm90ZWN0ZWQgc2hvd05vdGljZSA9IHRydWU7XG5cbiAgcHJpdmF0ZSBvcmlnaW5hbFNpdGVzID0gdG9TaWduYWwodGhpcy5ub2RlU3RvcmVTZXJ2aWNlLmZpbmRCeVN0YXRlJDxJU2l0ZUpTT05MRD4oTm9kZVR5cGUuU2l0ZSwgRGF0YVN0YXRlLm9yaWdpbmFsKSk7XG5cbiAgcHJpdmF0ZSBub2RlcyA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLl9zaXRlcygpPy5sZW5ndGggPyB0aGlzLl9zaXRlcygpIDogdGhpcy5vcmlnaW5hbFNpdGVzKCkpIHx8IFtdKTtcbiAgcHJpdmF0ZSBoYXNEYXRhID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5ub2RlcygpPy5sZW5ndGggPiAwKTtcblxuICBwcm90ZWN0ZWQgc2hvd05vTG9jYXRpb24gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEhFX01BUF9MT0FERUQpIHByb3RlY3RlZCBtYXBMb2FkZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+LFxuICAgIHByaXZhdGUgbm9kZVNlcnZpY2U6IEhlTm9kZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBub2RlU3RvcmVTZXJ2aWNlOiBIZU5vZGVTdG9yZVNlcnZpY2VcbiAgKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIHRoaXMuX21hcExvYWRlZCgpICYmIHRoaXMuaGFzRGF0YSgpICYmIHRoaXMubG9hZERhdGEoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZERhdGEoKSB7XG4gICAgY29uc3QgbWFya2VycyA9IHRoaXMuYWRkU2l0ZU1hcmtlcnMoKTtcbiAgICAvLyBhZGQgdGhlIHNpdGUuYm91bmRhcnkgaWYgZXhpc3RcbiAgICBjb25zdCBwb2x5Z29ucyA9IHRoaXMubm9kZXMoKS5mbGF0TWFwKHNpdGVQb2x5Z29uKS5maWx0ZXIoQm9vbGVhbik7XG4gICAgcG9seWdvbnMubWFwKHBvbHlnb24gPT4gcG9seWdvbj8uc2V0TWFwKHRoaXMubWFwLmdvb2dsZU1hcCkpO1xuXG4gICAgLy8gYWRkIHRoZSBkZWZhdWx0IHNpdGUgcG9seWdvbnMgZnJvbSBHQURNIHJlZ2lvbiBpZiBhbnlcbiAgICBjb25zdCB0ZXJtUG9seWdvbnMgPSAoYXdhaXQgUHJvbWlzZS5hbGwocmVnaW9ucyh0aGlzLm5vZGVzKCkpLm1hcCh2ID0+IHRoaXMuYWRkVGVybXNQb2x5Z29ucyh2KSkpKS5mbGF0KCk7XG5cbiAgICB0aGlzLnNob3dOb0xvY2F0aW9uID0gbWFya2Vycy5sZW5ndGggPT09IDAgJiYgcG9seWdvbnMubGVuZ3RoID09PSAwICYmIHRlcm1Qb2x5Z29ucy5sZW5ndGggPT09IDA7XG4gICAgcmV0dXJuIG1hcmtlcnMubGVuZ3RoXG4gICAgICA/IHRoaXMuY2VudGVyTWFya2VyKG1hcmtlcnNbMF0hKVxuICAgICAgOiB0aGlzLmNlbnRlclBvbHlnb25zKHBvbHlnb25zLmxlbmd0aCA/IHBvbHlnb25zIDogdGVybVBvbHlnb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkTWFya2VycyhtYXJrZXJzOiBnb29nbGUubWFwcy5NYXJrZXJbXSwgY2x1c3RlciA9IGZhbHNlKSB7XG4gICAgcmV0dXJuIGNsdXN0ZXJcbiAgICAgID8gbmV3IE1hcmtlckNsdXN0ZXJlcih0aGlzLm1hcCEuZ29vZ2xlTWFwISwgbWFya2VycywgeyBpbWFnZVBhdGg6IGNsdXN0ZXJlckltYWdlIH0pXG4gICAgICA6IG1hcmtlcnMubWFwKG1hcmtlciA9PiBtYXJrZXIuc2V0TWFwKHRoaXMubWFwIS5nb29nbGVNYXAhKSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFkZFRlcm1zUG9seWdvbnMoaWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmxvYWRQb2x5Z29ucyA/IGF3YWl0IHRoaXMudGVybVBvbHlnb25zKGlkKSA6IFtdO1xuICB9XG5cbiAgcHJpdmF0ZSBjZW50ZXJNYXJrZXIobWFya2VyOiBnb29nbGUubWFwcy5NYXJrZXIpIHtcbiAgICBjb25zdCBjZW50ZXIgPSBtYXJrZXIuZ2V0UG9zaXRpb24oKTtcbiAgICB0aGlzLmNlbnRlciA9IGNlbnRlciA/IHsgbGF0OiBjZW50ZXIubGF0KCksIGxuZzogY2VudGVyLmxuZygpIH0gOiBkZWZhdWx0Q2VudGVyO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5tYXAuZ29vZ2xlTWFwLnNldENlbnRlcih0aGlzLmNlbnRlcik7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNlbnRlclBvbHlnb25zKHBvbHlnb25zOiBnb29nbGUubWFwcy5Qb2x5Z29uW10pIHtcbiAgICByZXR1cm4gcG9seWdvbnM/Lmxlbmd0aCA/IHRoaXMubWFwIS5nb29nbGVNYXAhLmZpdEJvdW5kcyhwb2x5Z29uQm91bmRzKHBvbHlnb25zKSkgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRTaXRlTWFya2VycygpIHtcbiAgICBjb25zdCBzaXRlTWFya2VycyA9IHRoaXMubm9kZXMoKS5tYXAoc2l0ZU1hcmtlcikuZmlsdGVyKEJvb2xlYW4pO1xuICAgIGNvbnN0IG1hcmtlcnMgPSBzaXRlTWFya2Vycy5sZW5ndGggPyBzaXRlTWFya2VycyA6IHRoaXMubm9kZXMoKS5tYXAoc2l0ZURlZmF1bHRMb2NhdGlvbikuZmlsdGVyKEJvb2xlYW4pO1xuICAgIHRoaXMuYWRkTWFya2VycyhtYXJrZXJzLCAhIXNpdGVNYXJrZXJzLmxlbmd0aCk7XG4gICAgcmV0dXJuIG1hcmtlcnM7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHRlcm1Qb2x5Z29ucyhpZDogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLm5vZGVTZXJ2aWNlLmRvd25sb2FkUmF3KGAke2Jhc2VVcmwoKX0vZ2FkbS8ke2lkfS5nZW9qc29uYCk7XG4gICAgICBjb25zdCBwb2x5Z29ucyA9IHBvbHlnb25zRnJvbUZlYXR1cmUoZGF0YSk7XG4gICAgICBwb2x5Z29ucy5tYXAocG9seWdvbiA9PiBwb2x5Z29uLnNldE1hcCh0aGlzLm1hcCEuZ29vZ2xlTWFwISkpO1xuICAgICAgcmV0dXJuIHBvbHlnb25zO1xuICAgIH0gY2F0Y2ggKF9lcnIpIHtcbiAgICAgIC8vIGlnbm9yZSBlcnJvciBpZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdFxuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBtYXBMb2FkZWQoKSB7XG4gICAgdGhpcy5fbWFwTG9hZGVkLnNldCh0cnVlKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLy8gbG9hZGVkIGRhdGEgYXMgZ2VvanNvblxuICAgICAgdGhpcy5tYXAuZ29vZ2xlTWFwLmRhdGEuc2V0U3R5bGUoKCkgPT4gKHsgLi4uc3Ryb2tlU3R5bGUsIHN0cm9rZU9wYWNpdHk6IDAuMSB9KSk7XG5cbiAgICAgIHJldHVybiB0aGlzLl9tYXBMb2FkZWQoKSAmJiB0aGlzLmhhc0RhdGEoKSAmJiB0aGlzLmxvYWREYXRhKCk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxnb29nbGUtbWFwXG4gICpuZ0lmPVwibWFwTG9hZGVkJCB8IGFzeW5jXCJcbiAgKG1hcEluaXRpYWxpemVkKT1cIm1hcExvYWRlZCgpXCJcbiAgaGVpZ2h0PVwiMTAwJVwiXG4gIHdpZHRoPVwiMTAwJVwiXG4gIFt6b29tXT1cInpvb21cIlxuICBbY2VudGVyXT1cImNlbnRlclwiPjwvZ29vZ2xlLW1hcD5cblxuPHAgKm5nSWY9XCJzaG93Tm90aWNlXCIgY2xhc3M9XCJtdC0yIGlzLWl0YWxpYyBpcy1zaXplLTdcIj5UaGUgaW5mb3JtYXRpb24gcHJvdmlkZWQgbWlnaHQgbm90IGJlIGNvbXBsZXRlPC9wPlxuXG48ZGl2IGNsYXNzPVwibm8tbG9jYXRpb24gaGFzLXRleHQtY2VudGVyIGhhcy10ZXh0LWxpZ2h0XCIgKm5nSWY9XCJzaG93Tm9Mb2NhdGlvblwiPlxuICA8c3Bhbj5ObyBwcmVjaXNlIGxvY2F0aW9uIGRhdGE8L3NwYW4+XG48L2Rpdj5cbiJdfQ==
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l0ZXMtbWFwcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2l0ZXMvc2l0ZXMtbWFwcy9zaXRlcy1tYXBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9zaXRlcy9zaXRlcy1tYXBzL3NpdGVzLW1hcHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2SCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQXdELE1BQU0sc0JBQXNCLENBQUM7QUFDdEcsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekUsT0FBTyxFQUNMLGFBQWEsRUFDYixZQUFZLEVBQ1osbUJBQW1CLEVBQ25CLGFBQWEsRUFDYixXQUFXLEVBRVgsWUFBWSxFQUViLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7QUFRN0MsTUFBTSxZQUFZLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxT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O3NCQURWLFNBQVM7dUJBQUMsU0FBUztnQkFLaEIsWUFBWTtzQkFEZixLQUFLO2dCQVlGLEtBQUs7c0JBRFIsS0FBSztnQkFPRixNQUFNO3NCQURULEtBQUs7Z0JBTUksSUFBSTtzQkFEYixLQUFLO2dCQUdJLFVBQVU7c0JBRG5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBWaWV3Q2hpbGQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBJbmplY3QsIHNpZ25hbCwgY29tcHV0ZWQsIGVmZmVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBHb29nbGVNYXAgfSBmcm9tICdAYW5ndWxhci9nb29nbGUtbWFwcyc7XG5pbXBvcnQgeyBOb2RlVHlwZSwgSVNpdGVKU09OTEQsIFNpdGUsIElPcmdhbmlzYXRpb25KU09OTEQsIE9yZ2FuaXNhdGlvbiB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7IHVuaXF1ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvdXRpbHMnO1xuaW1wb3J0IHsgRGF0YVN0YXRlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9hcGknO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBtZXJnZU1hcCwgc2hhcmVSZXBsYXksIHRvQXJyYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEhlTm9kZVNlcnZpY2UsIEhlTm9kZVN0b3JlU2VydmljZSB9IGZyb20gJy4uLy4uL25vZGUnO1xuaW1wb3J0IHsgdGVybUxvY2F0aW9uLCB0ZXJtTG9jYXRpb25OYW1lIH0gZnJvbSAnLi4vLi4vdGVybXMvdGVybXMubW9kZWwnO1xuaW1wb3J0IHtcbiAgSEVfTUFQX0xPQURFRCxcbiAgY3JlYXRlTWFya2VyLFxuICBwb2x5Z29uc0Zyb21GZWF0dXJlLFxuICBwb2x5Z29uQm91bmRzLFxuICBzdHJva2VTdHlsZSxcbiAgZmVhdHVyZSxcbiAgcG9seWdvblRvTWFwLFxuICBJUG9seWdvbk1hcFxufSBmcm9tICcuLi8uLi9jb21tb24vbWFwcy11dGlscyc7XG5pbXBvcnQgeyBiYXNlVXJsIH0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWxzJztcblxuaW50ZXJmYWNlIElMb2FkaW5nUmVxdWVzdHMge1xuICBbaWQ6IHN0cmluZ106IE9ic2VydmFibGU8ZmVhdHVyZT47XG59XG5cbnR5cGUgc2l0ZSA9IElTaXRlSlNPTkxEIHwgU2l0ZSB8IElPcmdhbmlzYXRpb25KU09OTEQgfCBPcmdhbmlzYXRpb247XG5cbmNvbnN0IHNpdGVMb2NhdGlvbiA9ICh7IGxhdGl0dWRlLCBsb25naXR1ZGUgfTogc2l0ZSkgPT5cbiAgbGF0aXR1ZGUgJiYgbG9uZ2l0dWRlXG4gICAgPyB7XG4gICAgICAgIGxhdDogbGF0aXR1ZGUsXG4gICAgICAgIGxuZzogbG9uZ2l0dWRlXG4gICAgICB9XG4gICAgOiB1bmRlZmluZWQ7XG5cbmNvbnN0IHNpdGVEZWZhdWx0TG9jYXRpb24gPSAoeyByZWdpb24sIGNvdW50cnkgfTogc2l0ZSkgPT4ge1xuICBjb25zdCBtYXJrZXJzID0gW1xuICAgIHJlZ2lvbiA/IGNyZWF0ZU1hcmtlcih0ZXJtTG9jYXRpb24ocmVnaW9uKSwgdGVybUxvY2F0aW9uTmFtZShyZWdpb24pLm5hbWUsIHVuZGVmaW5lZCwgMjApIDogdW5kZWZpbmVkLFxuICAgIGNvdW50cnkgPyBjcmVhdGVNYXJrZXIodGVybUxvY2F0aW9uKGNvdW50cnkpLCB0ZXJtTG9jYXRpb25OYW1lKGNvdW50cnkpLm5hbWUsIHVuZGVmaW5lZCwgNDApIDogdW5kZWZpbmVkXG4gIF0uZmlsdGVyKEJvb2xlYW4pO1xuICByZXR1cm4gbWFya2Vycz8uWzBdO1xufTtcblxuY29uc3Qgc2l0ZU1hcmtlciA9IChzaXRlOiBzaXRlKSA9PlxuICBjcmVhdGVNYXJrZXIoc2l0ZSA/IHNpdGVMb2NhdGlvbihzaXRlKSA6IHVuZGVmaW5lZCwgc2l0ZS5uYW1lKSB8fCBzaXRlRGVmYXVsdExvY2F0aW9uKHNpdGUpO1xuXG5jb25zdCBzaXRlUG9seWdvbiA9ICh7IGJvdW5kYXJ5IH06IHNpdGUpID0+XG4gIChib3VuZGFyeSA/IHBvbHlnb25zRnJvbUZlYXR1cmUoYm91bmRhcnkgYXMgYW55LCAnIzREOEVDQicpIDogdW5kZWZpbmVkKSBhcyBnb29nbGUubWFwcy5Qb2x5Z29uW107XG5cbmNvbnN0IHJlZ2lvbklkcyA9IChzaXRlczogc2l0ZVtdKTogc3RyaW5nW10gPT5cbiAgdW5pcXVlKFxuICAgIChzaXRlcyB8fCBbXSlcbiAgICAgIC5tYXAoKHsgY291bnRyeSwgcmVnaW9uIH0pID0+IChyZWdpb24gPyByZWdpb25bJ0BpZCddIDogY291bnRyeSA/IGNvdW50cnlbJ0BpZCddIDogbnVsbCkpXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICk7XG5cbmNvbnN0IGRlZmF1bHRDZW50ZXI6IGdvb2dsZS5tYXBzLkxhdExuZ0xpdGVyYWwgPSB7IGxhdDogMCwgbG5nOiAwIH07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLXNpdGVzLW1hcHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2l0ZXMtbWFwcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NpdGVzLW1hcHMuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgU2l0ZXNNYXBzQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSBfbG9hZFBvbHlnb25zUmVxdWVzdHM6IElMb2FkaW5nUmVxdWVzdHMgPSB7fTtcbiAgcHJpdmF0ZSBfbWFwUmVhZHkgPSBzaWduYWwoZmFsc2UpO1xuXG4gIEBWaWV3Q2hpbGQoR29vZ2xlTWFwKVxuICBwcml2YXRlIG1hcD86IEdvb2dsZU1hcDtcblxuICBwcml2YXRlIF9sb2FkUG9seWdvbnMgPSBzaWduYWwodHJ1ZSk7XG4gIEBJbnB1dCgpXG4gIHNldCBsb2FkUG9seWdvbnModmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9sb2FkUG9seWdvbnMuc2V0KHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0ZXJtUG9seWdvbnMgPSBzaWduYWwoW10gYXMgSVBvbHlnb25NYXBbXSk7XG5cbiAgLyoqXG4gICAqIERpc3BsYXkgU2l0ZSBkaXJlY3RseSB3aXRob3V0IHVzaW5nIHRoZSBub2RlIHN0b3JlLlxuICAgKi9cbiAgcHJpdmF0ZSBfc2l0ZXMgPSBzaWduYWwoW10gYXMgc2l0ZVtdKTtcbiAgQElucHV0KClcbiAgc2V0IHNpdGVzKHZhbHVlOiBzaXRlW10pIHtcbiAgICB0aGlzLl9zaXRlcy5zZXQodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2VudGVyID0gc2lnbmFsKGRlZmF1bHRDZW50ZXIpO1xuICBASW5wdXQoKVxuICBzZXQgY2VudGVyKHZhbHVlOiBnb29nbGUubWFwcy5MYXRMbmdMaXRlcmFsKSB7XG4gICAgdGhpcy5fY2VudGVyLnNldCh2YWx1ZSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBwcm90ZWN0ZWQgem9vbSA9IDI7XG4gIEBJbnB1dCgpXG4gIHByb3RlY3RlZCBzaG93Tm90aWNlID0gdHJ1ZTtcblxuICBwcm90ZWN0ZWQgb3B0aW9uczogZ29vZ2xlLm1hcHMuTWFwT3B0aW9ucyA9IHtcbiAgICBzdHlsZXM6IFtdXG4gIH07XG5cbiAgcHJpdmF0ZSBvcmlnaW5hbFNpdGVzID0gdG9TaWduYWwodGhpcy5ub2RlU3RvcmVTZXJ2aWNlLmZpbmRCeVN0YXRlJDxJU2l0ZUpTT05MRD4oTm9kZVR5cGUuU2l0ZSwgRGF0YVN0YXRlLm9yaWdpbmFsKSk7XG4gIHByaXZhdGUgbm9kZXMgPSBjb21wdXRlZCgoKSA9PiBbLi4uKHRoaXMuX3NpdGVzKCkgfHwgW10pLCAuLi4odGhpcy5vcmlnaW5hbFNpdGVzKCkgfHwgW10pXSk7XG5cbiAgcHJvdGVjdGVkIG1hcmtlcnMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm5vZGVzKCkubWFwKHNpdGVNYXJrZXIpLmZpbHRlcihCb29sZWFuKSk7XG5cbiAgcHJvdGVjdGVkIF9wb2x5Z29ucyA9IGNvbXB1dGVkKCgpID0+IHRoaXMubm9kZXMoKS5mbGF0TWFwKHNpdGVQb2x5Z29uKS5maWx0ZXIoQm9vbGVhbikpO1xuICBwcm90ZWN0ZWQgcG9seWdvbnMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9wb2x5Z29ucygpLm1hcChwb2x5Z29uID0+IHBvbHlnb25Ub01hcChwb2x5Z29uKSkpO1xuXG4gIHByb3RlY3RlZCBzaG93Tm9Mb2NhdGlvbiA9IGNvbXB1dGVkKFxuICAgICgpID0+IHRoaXMubWFya2VycygpLmxlbmd0aCA9PT0gMCAmJiB0aGlzLnBvbHlnb25zKCkubGVuZ3RoID09PSAwICYmIHRoaXMudGVybVBvbHlnb25zKCkubGVuZ3RoID09PSAwXG4gICk7XG4gIHByb3RlY3RlZCBtYXBDZW50ZXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1hcmtlcnMoKT8uWzBdPy5wb3NpdGlvbiB8fCBkZWZhdWx0Q2VudGVyKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEhFX01BUF9MT0FERUQpIHByb3RlY3RlZCBtYXBMb2FkZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+LFxuICAgIHByaXZhdGUgbm9kZVNlcnZpY2U6IEhlTm9kZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBub2RlU3RvcmVTZXJ2aWNlOiBIZU5vZGVTdG9yZVNlcnZpY2VcbiAgKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIHRoaXMuY2VudGVyUG9seWdvbnModGhpcy5fcG9seWdvbnMoKSk7XG4gICAgfSk7XG5cbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9tYXBSZWFkeSgpICYmIHRoaXMuX2xvYWRQb2x5Z29ucygpKSB7XG4gICAgICAgICAgZnJvbShyZWdpb25JZHModGhpcy5ub2RlcygpKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICBtZXJnZU1hcChpZCA9PiB0aGlzLmxvYWRUZXJtSWQoaWQpKSxcbiAgICAgICAgICAgICAgbWVyZ2VNYXAoZmVhdHVyZSA9PiBwb2x5Z29uc0Zyb21GZWF0dXJlKGZlYXR1cmUpKSxcbiAgICAgICAgICAgICAgbWFwKHBvbHlnb24gPT4gcG9seWdvblRvTWFwKHBvbHlnb24pKSxcbiAgICAgICAgICAgICAgdG9BcnJheSgpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHZhbHVlcyA9PiB0aGlzLnRlcm1Qb2x5Z29ucy5zZXQodmFsdWVzKSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjZW50ZXJQb2x5Z29ucyhwb2x5Z29uczogZ29vZ2xlLm1hcHMuUG9seWdvbltdKSB7XG4gICAgcmV0dXJuIHBvbHlnb25zPy5sZW5ndGggPyB0aGlzLm1hcCEuZ29vZ2xlTWFwIS5maXRCb3VuZHMocG9seWdvbkJvdW5kcyhwb2x5Z29ucykpIDogbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZFRlcm1JZChpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5fbG9hZFBvbHlnb25zUmVxdWVzdHNbaWRdID1cbiAgICAgIHRoaXMuX2xvYWRQb2x5Z29uc1JlcXVlc3RzW2lkXSB8fFxuICAgICAgdGhpcy5ub2RlU2VydmljZVxuICAgICAgICAuZG93bmxvYWRSYXckPGZlYXR1cmU+KGAke2Jhc2VVcmwoKX0vZ2FkbS8ke2lkfS5nZW9qc29uYClcbiAgICAgICAgLnBpcGUoc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSk7XG4gICAgcmV0dXJuIHRoaXMuX2xvYWRQb2x5Z29uc1JlcXVlc3RzW2lkXTtcbiAgfVxuXG4gIHByb3RlY3RlZCBtYXBMb2FkZWQoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvLyBsb2FkZWQgZGF0YSBhcyBnZW9qc29uXG4gICAgICB0aGlzLm1hcC5nb29nbGVNYXAuZGF0YS5zZXRTdHlsZSgoKSA9PiAoeyAuLi5zdHJva2VTdHlsZSwgc3Ryb2tlT3BhY2l0eTogMC4xIH0pKTtcbiAgICAgIHRoaXMuX21hcFJlYWR5LnNldCh0cnVlKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPGdvb2dsZS1tYXBcbiAgKm5nSWY9XCJtYXBMb2FkZWQkIHwgYXN5bmNcIlxuICAobWFwSW5pdGlhbGl6ZWQpPVwibWFwTG9hZGVkKClcIlxuICBoZWlnaHQ9XCIxMDAlXCJcbiAgd2lkdGg9XCIxMDAlXCJcbiAgW3pvb21dPVwiem9vbVwiXG4gIFtjZW50ZXJdPVwibWFwQ2VudGVyKClcIj5cbiAgPG1hcC1tYXJrZXIgKm5nRm9yPVwibGV0IG1hcmtlciBvZiBtYXJrZXJzKClcIiBbcG9zaXRpb25dPVwibWFya2VyLnBvc2l0aW9uXCIgW2ljb25dPVwibWFya2VyLmljb25cIj48L21hcC1tYXJrZXI+XG4gIDxtYXAtcG9seWdvbiAqbmdGb3I9XCJsZXQgcG9seWdvbiBvZiBwb2x5Z29ucygpXCIgW3BhdGhzXT1cInBvbHlnb24ucGF0aHNcIiBbb3B0aW9uc109XCJwb2x5Z29uLm9wdGlvbnNcIiAvPlxuICA8bWFwLXBvbHlnb24gKm5nRm9yPVwibGV0IHBvbHlnb24gb2YgdGVybVBvbHlnb25zKClcIiBbcGF0aHNdPVwicG9seWdvbi5wYXRoc1wiIFtvcHRpb25zXT1cInBvbHlnb24ub3B0aW9uc1wiIC8+XG48L2dvb2dsZS1tYXA+XG5cbjxwICpuZ0lmPVwic2hvd05vdGljZVwiIGNsYXNzPVwibXQtMiBpcy1pdGFsaWMgaXMtc2l6ZS03XCI+VGhlIGluZm9ybWF0aW9uIHByb3ZpZGVkIG1pZ2h0IG5vdCBiZSBjb21wbGV0ZTwvcD5cblxuPGRpdiBjbGFzcz1cIm5vLWxvY2F0aW9uIGhhcy10ZXh0LWNlbnRlciBoYXMtdGV4dC1saWdodFwiICpuZ0lmPVwic2hvd05vTG9jYXRpb24oKVwiPlxuICA8c3Bhbj5ObyBwcmVjaXNlIGxvY2F0aW9uIGRhdGE8L3NwYW4+XG48L2Rpdj5cbiJdfQ==