@c8y/ngx-components 1018.0.67 → 1018.0.69
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets-navigator/asset-node.service.d.ts +1 -1
- package/assets-navigator/group.service.d.ts +1 -1
- package/core/asset-types/asset-types.service.d.ts +6 -14
- package/core/common/get-group-icon.pipe.d.ts +1 -1
- package/core/common/group.service.d.ts +1 -1
- package/esm2020/assets-navigator/asset-node.mjs +3 -3
- package/esm2020/assets-navigator/asset-node.service.mjs +1 -1
- package/esm2020/assets-navigator/group.service.mjs +1 -1
- package/esm2020/core/asset-types/asset-types.service.mjs +17 -36
- package/esm2020/core/common/get-group-icon.pipe.mjs +2 -2
- package/esm2020/core/common/group.service.mjs +4 -4
- package/esm2020/core/search/search-input.component.mjs +3 -3
- package/esm2020/search/columns/asset-type.cell-renderer.component.mjs +3 -3
- package/esm2020/sub-assets/columns/asset-type.cell-renderer.component.mjs +5 -5
- package/esm2020/sub-assets/group-info.component.mjs +2 -2
- package/fesm2015/c8y-ngx-components-assets-navigator.mjs +5 -3
- package/fesm2015/c8y-ngx-components-assets-navigator.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-search.mjs +7 -5
- package/fesm2015/c8y-ngx-components-search.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-sub-assets.mjs +10 -8
- package/fesm2015/c8y-ngx-components-sub-assets.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components.mjs +31 -48
- package/fesm2015/c8y-ngx-components.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-assets-navigator.mjs +2 -2
- package/fesm2020/c8y-ngx-components-assets-navigator.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-search.mjs +2 -2
- package/fesm2020/c8y-ngx-components-search.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-sub-assets.mjs +5 -5
- package/fesm2020/c8y-ngx-components-sub-assets.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components.mjs +22 -41
- package/fesm2020/c8y-ngx-components.mjs.map +1 -1
- package/package.json +1 -1
- package/search/columns/asset-type.cell-renderer.component.d.ts +1 -1
- package/sub-assets/columns/asset-type.cell-renderer.component.d.ts +2 -2
|
@@ -27,7 +27,7 @@ export declare class AssetNodeService {
|
|
|
27
27
|
queriesUtil: QueriesUtil;
|
|
28
28
|
protected PAGE_SIZE: number;
|
|
29
29
|
constructor(inventory: InventoryService, apiService: ApiService, modal: ModalService, alert: AlertService, breadcrumbService: BreadcrumbService, user: UserService, appState: AppStateService, optionsService: OptionsService, moduleConfig: AssetNavigatorConfig, deviceGroupService: DeviceGroupService);
|
|
30
|
-
icon(mo: IManagedObject, open?: boolean): string
|
|
30
|
+
icon(mo: IManagedObject, open?: boolean): Promise<string>;
|
|
31
31
|
isGroup(mo: IManagedObject): boolean;
|
|
32
32
|
isDynamicGroup(mo: IManagedObject): boolean;
|
|
33
33
|
isDataBroker(mo: IManagedObject): boolean;
|
|
@@ -4,7 +4,7 @@ import * as i0 from "@angular/core";
|
|
|
4
4
|
export declare class DeviceGroupService {
|
|
5
5
|
private migratedDeviceGroupService;
|
|
6
6
|
constructor(migratedDeviceGroupService: MigratedDeviceGroupService);
|
|
7
|
-
icon(mo: IManagedObject, open?: boolean): string
|
|
7
|
+
icon(mo: IManagedObject, open?: boolean): Promise<string>;
|
|
8
8
|
isGroup(mo: IManagedObject): boolean;
|
|
9
9
|
isDynamicGroup(mo: IManagedObject): boolean;
|
|
10
10
|
isDataBroker(mo: IManagedObject): boolean;
|
|
@@ -5,23 +5,24 @@ import * as i0 from "@angular/core";
|
|
|
5
5
|
/**
|
|
6
6
|
* AssetTypesService is being used to manage a cache of all existing asset types.
|
|
7
7
|
* This service is injected in the AssetOverviewNavigationFactory class, which will trigger
|
|
8
|
-
* the initialization of the cache as the
|
|
8
|
+
* the initialization of the cache as the constructor is called.
|
|
9
9
|
*/
|
|
10
10
|
export declare class AssetTypesService {
|
|
11
11
|
private inventory;
|
|
12
12
|
private apiService;
|
|
13
13
|
private appStateService;
|
|
14
14
|
private readonly ASSET_TYPE_GROUP_QUERY;
|
|
15
|
-
private assetTypesCache;
|
|
16
15
|
private readonly DEFAULT_GROUP_ICON;
|
|
17
16
|
private readonly DEFAULT_GROUP_ICON_OPEN;
|
|
17
|
+
private assetTypesCache;
|
|
18
|
+
private isCacheSet;
|
|
18
19
|
private allowedMethods;
|
|
19
20
|
constructor(inventory: InventoryService, apiService: ApiService, appStateService: AppStateService);
|
|
20
21
|
/**
|
|
21
22
|
* Queries available asset types and adds every asset type to the local cache.
|
|
22
|
-
* @returns
|
|
23
|
+
* @returns IManagedObject table of asset types.
|
|
23
24
|
*/
|
|
24
|
-
initAssetTypesCache(): Promise<
|
|
25
|
+
initAssetTypesCache(): Promise<IManagedObject[]>;
|
|
25
26
|
/**
|
|
26
27
|
* Returns an asset type from the cache based on the unique name property.
|
|
27
28
|
* @param name Name of the asset type.
|
|
@@ -41,17 +42,8 @@ export declare class AssetTypesService {
|
|
|
41
42
|
* Defaults to false.
|
|
42
43
|
* @returns Returns an icon for a given asset type.
|
|
43
44
|
*/
|
|
44
|
-
getIcon(type: string, open?: boolean): string
|
|
45
|
+
getIcon(type: string, open?: boolean): Promise<string>;
|
|
45
46
|
private getDefaultGroupIcon;
|
|
46
|
-
/**
|
|
47
|
-
* Checks if the default asset type 'group' already exists and if it doesn't it will be created.
|
|
48
|
-
* @returns void.
|
|
49
|
-
*/
|
|
50
|
-
private createAssetTypeGroupIfNotExists;
|
|
51
|
-
/**
|
|
52
|
-
* create the default asset type group in the Inventory.
|
|
53
|
-
*/
|
|
54
|
-
private createDefaultAssetTypeGroup;
|
|
55
47
|
/**
|
|
56
48
|
* Add an asset type to the local cache.
|
|
57
49
|
* @param assetType Asset type which should be added to the cache.
|
|
@@ -5,7 +5,7 @@ import * as i0 from "@angular/core";
|
|
|
5
5
|
export declare class GetGroupIconPipe implements PipeTransform {
|
|
6
6
|
private groupService;
|
|
7
7
|
constructor(groupService: GroupService);
|
|
8
|
-
transform(mo: IManagedObject): string
|
|
8
|
+
transform(mo: IManagedObject): Promise<string>;
|
|
9
9
|
static ɵfac: i0.ɵɵFactoryDeclaration<GetGroupIconPipe, never>;
|
|
10
10
|
static ɵpipe: i0.ɵɵPipeDeclaration<GetGroupIconPipe, "getGroupIcon", false>;
|
|
11
11
|
}
|
|
@@ -21,7 +21,7 @@ export declare class GroupService {
|
|
|
21
21
|
* @param open Determines whether the method should return an alternative icon showing the open state.
|
|
22
22
|
* @returns Returns an icon.
|
|
23
23
|
*/
|
|
24
|
-
getIcon(mo: IManagedObject, open?: boolean): string
|
|
24
|
+
getIcon(mo: IManagedObject, open?: boolean): Promise<string>;
|
|
25
25
|
/**
|
|
26
26
|
* Checks whether a given managed object is a group.
|
|
27
27
|
* @param mo Managed object to be checked.
|
|
@@ -324,11 +324,11 @@ export class AssetNode extends NavigatorNode {
|
|
|
324
324
|
parent.remove(nodeToMove);
|
|
325
325
|
}
|
|
326
326
|
}
|
|
327
|
-
updateIcon(open) {
|
|
328
|
-
this.icon = this.service.icon(
|
|
327
|
+
async updateIcon(open) {
|
|
328
|
+
this.icon = await this.service.icon(
|
|
329
329
|
// if it's root we are going to pass a fake mo to get the same icon as groups
|
|
330
330
|
this.root ? { c8y_IsDeviceGroup: {} } : this.mo, open);
|
|
331
331
|
}
|
|
332
332
|
}
|
|
333
333
|
AssetNode.NAME = 'AssetNode';
|
|
334
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtbm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2Fzc2V0cy1uYXZpZ2F0b3IvYXNzZXQtbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBRUwscUJBQXFCLEVBQ3JCLE9BQU8sRUFDUCxhQUFhLEVBQ2IsYUFBYSxFQUVkLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWhELE1BQU0sT0FBTyxTQUFVLFNBQVEsYUFBYTtJQXdDMUMsWUFBc0IsT0FBeUIsRUFBWSxTQUE0QixFQUFFO1FBQ3ZGLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQURNLFlBQU8sR0FBUCxPQUFPLENBQWtCO1FBQVksV0FBTSxHQUFOLE1BQU0sQ0FBd0I7UUFwQ3pGLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDL0MscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBRXpCOztXQUVHO1FBQ0gsYUFBUSxHQUFnQixFQUFFLENBQUM7UUF3QjNCLGlCQUFZLEdBQWlCLElBQUksT0FBTyxFQUFFLENBQUM7UUFRekMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQztRQUMvQixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUMxRCxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO1FB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akQsS0FBSyxNQUFNLE1BQU0sSUFBSSxVQUFVLENBQUMsT0FBc0IsRUFBRTtZQUN0RCxJQUFJLE1BQU0sQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLGdCQUFnQixFQUFFO2dCQUNsRSxNQUFNLENBQUMsd0NBQXdDO2FBQ2hEO1lBRUQsSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDNUMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7b0JBQ2xDLEVBQUUsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7b0JBQ3BCLElBQUksRUFBRSxhQUFhLENBQUMsWUFBWTtpQkFDakMsQ0FBQyxDQUFDO2FBQ0o7WUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRTtnQkFDaEIsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUMxRTtZQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRU8sVUFBVSxDQUFDLElBQUk7UUFDckIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUk7UUFDM0IsNkVBQTZFO1FBQzdFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQy9DLElBQUksQ0FDTCxDQUFDO0lBQ0osQ0FBQzs7QUEzWE0sY0FBSSxHQUFHLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElJZGVudGlmaWVkLCBQYWdpbmcgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBDbGlja09wdGlvbnMsXG4gIERldmljZVN0YXR1c0NvbXBvbmVudCxcbiAgZ2V0dGV4dCxcbiAgR3JvdXBGcmFnbWVudCxcbiAgTmF2aWdhdG9yTm9kZSxcbiAgTmF2aWdhdG9yTm9kZURhdGFcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBkZWJvdW5jZSwgZ2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tICcuL2FjdGlvbi5lbnVtJztcbmltcG9ydCB7IEFzc2V0Tm9kZU1vLCBBc3NldE5vZGVTZXJ2aWNlIH0gZnJvbSAnLi9hc3NldC1ub2RlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9hZE1vcmVOb2RlIH0gZnJvbSAnLi9sb2FkLW1vcmUtbm9kZSc7XG5cbmV4cG9ydCBjbGFzcyBBc3NldE5vZGUgZXh0ZW5kcyBOYXZpZ2F0b3JOb2RlIHtcbiAgc3RhdGljIE5BTUUgPSAnQXNzZXROb2RlJztcbiAgcm9vdDogYm9vbGVhbjtcbiAgbW86IGFueTtcbiAgaGlkZURldmljZXMgPSBmYWxzZTtcbiAgZmlsdGVyUXVlcnkkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgc2hvd0NoaWxkRGV2aWNlcyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBBc3NldCBub2RlIGNoaWxkcmVuIChzdWJlbnRyaWVzKS5cbiAgICovXG4gIGNoaWxkcmVuOiBBc3NldE5vZGVbXSA9IFtdO1xuXG4gIGdldCBoYXNDaGlsZHJlbigpIHtcbiAgICByZXR1cm4gdGhpcy5yb290IHx8IHRoaXMuc2VydmljZS5pc0dyb3VwKHRoaXMubW8pO1xuICB9XG5cbiAgZ2V0IGlzRGV2aWNlKCkge1xuICAgIHJldHVybiAhIXRoaXMubW8uYzh5X0lzRGV2aWNlO1xuICB9XG5cbiAgZ2V0IGlzRGV2aWNlT3JQcm9iYWJseUNoaWxkRGV2aWNlKCkge1xuICAgIHJldHVybiB0aGlzLmlzRGV2aWNlIHx8IHRoaXMuaXNOZWl0aGVyRGV2aWNlT3JHcm91cDtcbiAgfVxuXG4gIGdldCBpc05laXRoZXJEZXZpY2VPckdyb3VwKCkge1xuICAgIHJldHVybiAoXG4gICAgICAhdGhpcy5zZXJ2aWNlLmlzR3JvdXAodGhpcy5tbykgJiZcbiAgICAgICF0aGlzLnNlcnZpY2UuaXNEeW5hbWljR3JvdXAodGhpcy5tbykgJiZcbiAgICAgICF0aGlzLmlzRGV2aWNlICYmXG4gICAgICAhdGhpcy5yb290XG4gICAgKTtcbiAgfVxuXG4gIGV2ZW50czogU3ViamVjdDxBY3Rpb24+O1xuICBub2Rlc0ZldGNoZWQ6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XG4gIHByb3RlY3RlZCBwYWdpbmc6IFBhZ2luZzxBc3NldE5vZGVNbz47XG4gIHByb3RlY3RlZCBsb2FkTW9yZU5vZGU6IExvYWRNb3JlTm9kZTtcbiAgcHJpdmF0ZSBvblVwZGF0ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBzZXJ2aWNlOiBBc3NldE5vZGVTZXJ2aWNlLCBwcm90ZWN0ZWQgY29uZmlnOiBOYXZpZ2F0b3JOb2RlRGF0YSA9IHt9KSB7XG4gICAgc3VwZXIoY29uZmlnKTtcblxuICAgIHRoaXMucm9vdCA9IHRoaXMucm9vdCB8fCBmYWxzZTtcbiAgICB0aGlzLmhpZGVEZXZpY2VzID0gY29uZmlnLmhpZGVEZXZpY2VzID8/IHRoaXMuaGlkZURldmljZXM7XG4gICAgdGhpcy5tbyA9IHRoaXMubW8gfHwge307XG4gICAgdGhpcy5wYXRoID0gdGhpcy5nZXRQYXRoKCk7XG4gICAgdGhpcy5kcmFnZ2FibGUgPSAhdGhpcy5zZXJ2aWNlPy5tb2R1bGVDb25maWc/LmRpc2FibGVEcmFnQW5kRHJvcCAmJiAhdGhpcy5yb290O1xuICAgIHRoaXMuZHJvcHBhYmxlID1cbiAgICAgICF0aGlzLnNlcnZpY2U/Lm1vZHVsZUNvbmZpZz8uZGlzYWJsZURyYWdBbmREcm9wICYmICF0aGlzLmlzRGV2aWNlT3JQcm9iYWJseUNoaWxkRGV2aWNlO1xuICAgIHRoaXMucm91dGVyTGlua0V4YWN0ID0gdGhpcy5yb290O1xuICAgIHRoaXMudXBkYXRlSWNvbihmYWxzZSk7XG4gICAgdGhpcy5vblVwZGF0ZVN1YnNjcmlwdGlvbiA9IHRoaXMuc2VydmljZVxuICAgICAgLm9uVXBkYXRlKHRoaXMpXG4gICAgICAuc3Vic2NyaWJlKCh7IGRhdGEsIG1ldGhvZCB9KSA9PiB0aGlzLnJlZnJlc2goZGF0YSwgbWV0aG9kKSk7XG4gICAgdGhpcy5zZXRMYWJlbCgpO1xuICAgIHRoaXMuaWNvbkNvbXBvbmVudCA9IHRoaXMuaXNEZXZpY2VPclByb2JhYmx5Q2hpbGREZXZpY2UgPyBEZXZpY2VTdGF0dXNDb21wb25lbnQgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXRQYXRoKCkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5wYXRoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb25maWcucGF0aDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5yb290XG4gICAgICA/ICdncm91cCdcbiAgICAgIDogdGhpcy5pc0RldmljZU9yUHJvYmFibHlDaGlsZERldmljZVxuICAgICAgPyBgZGV2aWNlLyR7dGhpcy5tby5pZH1gXG4gICAgICA6IGBncm91cC8ke3RoaXMubW8uaWR9YDtcbiAgfVxuXG4gIG9wZW5PblN0YXJ0KHVybCkge1xuICAgIGNvbnN0IHVybFJlZ2V4ID0gL15cXC9ncm91cFxcLy87XG4gICAgaWYgKHRoaXMucm9vdCkge1xuICAgICAgaWYgKHRoaXMuc2VydmljZS5tb2R1bGVDb25maWcub3Blbk9uU3RhcnQgfHwgdXJsUmVnZXgudGVzdCh1cmwpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBtYXRjaGVzID0gdXJsLm1hdGNoKC9cXC8oZ3JvdXApXFwvKFxcZCspLyk7XG4gICAgbGV0IGlzTWF0Y2ggPSBmYWxzZTtcbiAgICBpZiAobWF0Y2hlcykge1xuICAgICAgY29uc3QgaWQgPSBtYXRjaGVzWzJdO1xuICAgICAgaXNNYXRjaCA9IFtdXG4gICAgICAgIC5jb25jYXQoZ2V0KHRoaXMubW8sICdjaGlsZEFzc2V0cy5yZWZlcmVuY2VzJywgW10pKVxuICAgICAgICAuc29tZSgoeyBtYW5hZ2VkT2JqZWN0IH0pID0+IG1hbmFnZWRPYmplY3QuaWQgPT09IGlkKTtcbiAgICAgIHJldHVybiBpc01hdGNoO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZWZyZXNoKG1vOiBhbnkgPSB7fSwgbWV0aG9kID0gJ0dFVCcpIHtcbiAgICBpZiAobW8/LmlkID09PSB0aGlzLm1vLmlkKSB7XG4gICAgICB0aGlzLm1vID0gbW87XG4gICAgICB0aGlzLnNldExhYmVsKCk7XG4gICAgfSBlbHNlIGlmIChtZXRob2QgPT09ICdERUxFVEUnKSB7XG4gICAgICB0aGlzLnBhcmVudHMuZm9yRWFjaCgobm9kZTogQXNzZXROb2RlKSA9PiBub2RlLnJlZnJlc2goKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmV2ZW50cykge1xuICAgICAgdGhpcy5ldmVudHMubmV4dChBY3Rpb24uUkVGUkVTSCk7XG4gICAgfVxuICB9XG5cbiAgc2V0TGFiZWwoKSB7XG4gICAgdGhpcy5sYWJlbCA9IHRoaXMuY29uZmlnLmxhYmVsIHx8ICh0aGlzLnJvb3QgJiYgZ2V0dGV4dCgnR3JvdXBzJykpIHx8IHRoaXMubW8ubmFtZSB8fCAnLS0nO1xuICB9XG5cbiAgY2xpY2sob3B0aW9uczogQ2xpY2tPcHRpb25zID0ge30pIHtcbiAgICBpZiAodGhpcy5pc0RldmljZU9yUHJvYmFibHlDaGlsZERldmljZSAmJiAhdGhpcy5zaG93Q2hpbGREZXZpY2VzKSB7XG4gICAgICB0aGlzLnNlcnZpY2UucHJlZmVyQnJlYWRjcnVtYih0aGlzLnBhcmVudHMpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmhvb2tFdmVudHMoKTtcbiAgICB0aGlzLnVwZGF0ZUljb24ob3B0aW9ucy5vcGVuKTtcbiAgICBpZiAob3B0aW9ucy5vcGVuKSB7XG4gICAgICB0aGlzLmV2ZW50cy5uZXh0KEFjdGlvbi5GRVRDSCk7XG4gICAgfVxuICB9XG5cbiAgc29ydCgpIHtcbiAgICB0aGlzLmNoaWxkcmVuLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGlmIChhLnByaW9yaXR5ID4gYi5wcmlvcml0eSkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9IGVsc2UgaWYgKGEucHJpb3JpdHkgPCBiLnByaW9yaXR5KSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhZGRNYW5hZ2VkT2JqZWN0KG1vKSB7XG4gICAgY29uc3QgeyBjaGlsZEFkZGl0aW9ucyB9ID0gdGhpcy5tbztcbiAgICBpZiAoIXRoaXMuaXNDaGlsZEFkZGl0aW9uKGNoaWxkQWRkaXRpb25zLCBtbykpIHtcbiAgICAgIHRoaXMuYWRkKHRoaXMuc2VydmljZS5jcmVhdGVDaGlsZE5vZGUobW8sIHsgaGlkZURldmljZXM6IHRoaXMuaGlkZURldmljZXMgfSkpO1xuICAgIH1cbiAgfVxuXG4gIGlzQ2hpbGRBZGRpdGlvbihjaGlsZEFkZGl0aW9ucywgbW8pIHtcbiAgICByZXR1cm4gKFxuICAgICAgY2hpbGRBZGRpdGlvbnMgJiYgY2hpbGRBZGRpdGlvbnMucmVmZXJlbmNlcy5zb21lKCh7IG1hbmFnZWRPYmplY3Q6IHsgaWQgfSB9KSA9PiBpZCA9PT0gbW8uaWQpXG4gICAgKTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5vblVwZGF0ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgZ2V0IGNhbkRyb3AoKSB7XG4gICAgY29uc3Qgbm9kZVRvTW92ZSA9IHRoaXMuc2VydmljZS5kcmFnZ2VkRGF0YTtcbiAgICBpZiAobm9kZVRvTW92ZSkge1xuICAgICAgY29uc3Qgc2hvdWxkR2V0Q2hpbGRPZkl0c093biA9ICEhbm9kZVRvTW92ZS5maW5kKGNoaWxkID0+IGNoaWxkID09PSB0aGlzKTtcbiAgICAgIGNvbnN0IGlzQWxyZWFkeUNoaWxkID0gKHRoaXMuY2hpbGRyZW4gYXMgQXNzZXROb2RlW10pLnNvbWUoXG4gICAgICAgIGNoaWxkID0+IGNoaWxkLm1vICYmIGNoaWxkLm1vLmlkID09PSBub2RlVG9Nb3ZlLm1vLmlkXG4gICAgICApO1xuICAgICAgY29uc3QgcHJldmVudE1vdmUgPSB0aGlzID09PSBub2RlVG9Nb3ZlIHx8IHNob3VsZEdldENoaWxkT2ZJdHNPd24gfHwgaXNBbHJlYWR5Q2hpbGQ7XG4gICAgICByZXR1cm4gdGhpcy5kcm9wcGFibGUgJiYgIXByZXZlbnRNb3ZlICYmIHRoaXMuc2VydmljZS5jYW5Ecm9wTm9kZSh0aGlzLnJvb3QpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5kcm9wcGFibGU7XG4gIH1cblxuICBkcmFnU3RhcnQoJGV2ZW50KSB7XG4gICAgc3VwZXIuZHJhZ1N0YXJ0KCRldmVudCk7XG4gICAgdGhpcy5zZXJ2aWNlLmRyYWdnZWREYXRhID0gdGhpcztcbiAgICB0aGlzLnNlcnZpY2Uucm9vdE5vZGUuZHJvcHBhYmxlID0gIXRoaXMuaXNEZXZpY2VPclByb2JhYmx5Q2hpbGREZXZpY2U7XG4gIH1cblxuICBkcmFnRW5kKCRldmVudCkge1xuICAgIHN1cGVyLmRyYWdFbmQoJGV2ZW50KTtcbiAgfVxuXG4gIGFzeW5jIGRyb3AoJGV2ZW50KSB7XG4gICAgY29uc3Qgbm9kZVRvTW92ZSA9IHRoaXMuc2VydmljZS5kcmFnZ2VkRGF0YTtcblxuICAgIC8vIFRPRE8gcmVtb3ZlIHdoZW4gYXNzZXQgdHlwZSBub2RlIGNhbiBiZSB1c2VkIG9uIHRoZSByb290IGxldmVsLlxuICAgIGlmICh0aGlzLnJvb3QgJiYgdGhpcy5pc0Fzc2V0KG5vZGVUb01vdmUpKSB7XG4gICAgICB0aGlzLnNlcnZpY2UuYWxlcnQuaW5mbyhnZXR0ZXh0KCdBc3NldCB0eXBlIG5vZGUgY2Fubm90IGJlY29tZSByb290IG5vZGUuJykpO1xuICAgICAgdGhpcy5kcmFnZ2VkSG92ZXIgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2VydmljZS5kcmFnZ2VkRGF0YSA9IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzdXBlci5kcm9wKCRldmVudCk7XG4gICAgaWYgKHRoaXMuY2FuRHJvcCkge1xuICAgICAgYXdhaXQgdGhpcy5tb3ZlTm9kZShub2RlVG9Nb3ZlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kcmFnZ2VkSG92ZXIgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2VydmljZS5kcmFnZ2VkRGF0YSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBob29rRXZlbnRzKCkge1xuICAgIGlmICghdGhpcy5ldmVudHMpIHtcbiAgICAgIHRoaXMuZXZlbnRzID0gbmV3IFN1YmplY3QoKTtcbiAgICAgIHRoaXMuZXZlbnRzLnN1YnNjcmliZShldnQgPT4ge1xuICAgICAgICBpZiAoIXRoaXMubG9hZGluZykge1xuICAgICAgICAgIHRoaXMuaGFuZGxlRXZlbnQoZXZ0KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIEFzc2V0Tm9kZS5OQU1FO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgY3VycmVudCBub2RlIGhhcyBjaGlsZCBkZXZpY2VzLlxuICAgKi9cbiAgaGFzQ2hpbGREZXZpY2VzKCkge1xuICAgIHJldHVybiB0aGlzLm1vICYmIHRoaXMubW8uYzh5X0lzRGV2aWNlICYmIHRoaXMubW8uY2hpbGREZXZpY2VzLnJlZmVyZW5jZXMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIHByb3RlY3RlZCBmZXRjaCgpIHtcbiAgICByZXR1cm4gdGhpcy5yb290XG4gICAgICA/IHRoaXMuc2VydmljZS5nZXRSb290Tm9kZXMoKVxuICAgICAgOiB0aGlzLnNlcnZpY2UuZ2V0R3JvdXBJdGVtcyhcbiAgICAgICAgICB0aGlzLm1vLmlkLFxuICAgICAgICAgIHRoaXMuaGlkZURldmljZXNcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIHF1ZXJ5OiBgJGZpbHRlcj0oaGFzKCR7R3JvdXBGcmFnbWVudC5ncm91cEZyYWdtZW50VHlwZX0pKSRvcmRlcmJ5PW5hbWVgXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDoge31cbiAgICAgICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb3VudENoaWxkcmVuKCkge1xuICAgIHJldHVybiB0aGlzLmNoaWxkcmVuLmxlbmd0aDtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVFdmVudChldnQ6IEFjdGlvbikge1xuICAgIGlmICghdGhpcy5jb3VudENoaWxkcmVuKCkgJiYgZXZ0ID09PSBBY3Rpb24uRkVUQ0gpIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLmFkZE5vZGVzKGF3YWl0IHRoaXMuZmV0Y2goKSk7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKGV2dCA9PT0gQWN0aW9uLk5FWFQpIHtcbiAgICAgIHRoaXMubG9hZE1vcmVOb2RlLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5hZGROb2Rlcyhhd2FpdCB0aGlzLnBhZ2luZy5uZXh0KCkpO1xuICAgICAgdGhpcy5sb2FkTW9yZU5vZGUubG9hZGluZyA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoZXZ0ID09PSBBY3Rpb24uUkVGUkVTSCkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLnBhZ2luZyA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMubG9hZE1vcmVOb2RlID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5lbXB0eSgpO1xuICAgICAgdGhpcy5ldmVudHMubmV4dChBY3Rpb24uRkVUQ0gpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhZGROb2RlcyhyZXMpIHtcbiAgICBpZiAocmVzLnBhZ2luZykge1xuICAgICAgY29uc3QgeyBjdXJyZW50UGFnZSwgbmV4dFBhZ2UsIHBhZ2VTaXplIH0gPSAodGhpcy5wYWdpbmcgPSByZXMucGFnaW5nKTtcbiAgICAgIGlmIChjdXJyZW50UGFnZSA9PT0gMSkge1xuICAgICAgICB0aGlzLmVtcHR5KCk7XG4gICAgICB9XG4gICAgICBjb25zdCBpdGVtc0NvdW50ID0gcmVzLmRhdGEubGVuZ3RoO1xuICAgICAgY29uc3QgbW9yZUl0ZW1zQXZhaWxhYmxlID0gISFuZXh0UGFnZSAmJiBpdGVtc0NvdW50ID09PSBwYWdlU2l6ZTtcbiAgICAgIHRoaXMudG9nZ2xlTG9hZE1vcmUobW9yZUl0ZW1zQXZhaWxhYmxlKTtcbiAgICB9XG4gICAgKHJlcy5kYXRhIHx8IHJlcykubWFwKG1vID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmFkZE1hbmFnZWRPYmplY3QobW8pO1xuICAgIH0pO1xuICAgIHRoaXMuZXZlbnRzLm5leHQoQWN0aW9uLkxPQURJTkdfRE9ORSk7XG4gICAgdGhpcy5ub2Rlc0ZldGNoZWQubmV4dCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRvZ2dsZUxvYWRNb3JlKHNob3c6IGJvb2xlYW4pIHtcbiAgICBpZiAoIXRoaXMubG9hZE1vcmVOb2RlICYmIHNob3cpIHtcbiAgICAgIHRoaXMubG9hZE1vcmVOb2RlID0gbmV3IExvYWRNb3JlTm9kZSgpO1xuICAgICAgdGhpcy5hZGQodGhpcy5sb2FkTW9yZU5vZGUpO1xuICAgICAgdGhpcy5sb2FkTW9yZU5vZGUuY2xpY2sgPSBkZWJvdW5jZSgoKSA9PiB0aGlzLmV2ZW50cy5uZXh0KEFjdGlvbi5ORVhUKSwgMzAwLCB7XG4gICAgICAgIGxlYWRpbmc6IHRydWUsXG4gICAgICAgIHRyYWlsaW5nOiBmYWxzZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubG9hZE1vcmVOb2RlKSB7XG4gICAgICB0aGlzLmxvYWRNb3JlTm9kZS5oaWRkZW4gPSAhc2hvdztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG1vdmVOb2RlKG5vZGVUb01vdmU6IEFzc2V0Tm9kZSkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBpc0NvcHkgPSBhd2FpdCB0aGlzLnNob3dEcm9wQ29uZmlybShub2RlVG9Nb3ZlKTtcbiAgICAgIGF3YWl0IHRoaXMudmVyaWZ5Tm9kZUFjY2Vzcyhub2RlVG9Nb3ZlKTtcbiAgICAgIGF3YWl0IHRoaXMuYWRkTW92ZWROb2RlKG5vZGVUb01vdmUpO1xuICAgICAgaWYgKCFpc0NvcHkpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5yZW1vdmVNb3ZlZE5vZGUobm9kZVRvTW92ZSk7XG4gICAgICB9XG4gICAgICB0aGlzLmV4cGFuZCgpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICBpZiAoZXgpIHtcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmFsZXJ0LmFkZFNlcnZlckZhaWx1cmUoZXgpO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmRyYWdnZWRIb3ZlciA9IGZhbHNlO1xuICAgICAgdGhpcy5zZXJ2aWNlLmRyYWdnZWREYXRhID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2hvd0Ryb3BDb25maXJtKG5vZGVUb01vdmU6IEFzc2V0Tm9kZSkge1xuICAgIHRoaXMuY29uZmlybS50aXRsZSA9IGdldHRleHQoJ01vdmUnKTtcbiAgICB0aGlzLmNvbmZpcm0ubWVzc2FnZSA9IGdldHRleHQoJ0RvIHlvdSB3YW50IHRvIG1vdmUgdGhlIGdyb3VwPycpO1xuICAgIGNvbnN0IGJ1dHRvbnM6IGFueSA9IFtcbiAgICAgIHtcbiAgICAgICAgbGFiZWw6IGdldHRleHQoJ0NhbmNlbCcpLFxuICAgICAgICBhY3Rpb246ICgpID0+IFByb21pc2UucmVqZWN0KClcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdNb3ZlJyksXG4gICAgICAgIHN0YXR1czogJ2RlZmF1bHQnLFxuICAgICAgICBhY3Rpb246ICgpID0+IFByb21pc2UucmVzb2x2ZShmYWxzZSlcbiAgICAgIH1cbiAgICBdO1xuICAgIGlmIChub2RlVG9Nb3ZlLmlzRGV2aWNlT3JQcm9iYWJseUNoaWxkRGV2aWNlKSB7XG4gICAgICB0aGlzLmNvbmZpcm0udGl0bGUgPSBnZXR0ZXh0KCdNb3ZlIG9yIGFkZCcpO1xuICAgICAgdGhpcy5jb25maXJtLm1lc3NhZ2UgPSBnZXR0ZXh0KCdEbyB5b3Ugd2FudCB0byBtb3ZlIG9yIGFkZCB0aGUgZGV2aWNlPycpO1xuICAgICAgYnV0dG9ucy5wdXNoKHtcbiAgICAgICAgbGFiZWw6IGdldHRleHQoJ0FkZCcpLFxuICAgICAgICBzdGF0dXM6ICdwcmltYXJ5JyxcbiAgICAgICAgYWN0aW9uOiAoKSA9PiBQcm9taXNlLnJlc29sdmUodHJ1ZSlcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jb25maXJtLnNob3coYnV0dG9ucyk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHZlcmlmeU5vZGVBY2Nlc3Mobm9kZVRvTW92ZTogQXNzZXROb2RlKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VydmljZS5pbnZlbnRvcnkudXBkYXRlKHsgaWQ6IG5vZGVUb01vdmUubW8uaWQgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFkZE1vdmVkTm9kZShub2RlVG9Nb3ZlOiBBc3NldE5vZGUpIHtcbiAgICBsZXQgbW86IElJZGVudGlmaWVkO1xuXG4gICAgaWYgKHRoaXMucm9vdCAmJiAhdGhpcy5pc0Fzc2V0KG5vZGVUb01vdmUpKSB7XG4gICAgICBtbyA9IChcbiAgICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlLmludmVudG9yeS51cGRhdGUoe1xuICAgICAgICAgIGlkOiBub2RlVG9Nb3ZlLm1vLmlkLFxuICAgICAgICAgIHR5cGU6IEdyb3VwRnJhZ21lbnQuZ3JvdXBUeXBlXG4gICAgICAgIH0pXG4gICAgICApLmRhdGE7XG5cbiAgICAgIHRoaXMuYWRkTWFuYWdlZE9iamVjdChtbyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbW8gPSAoYXdhaXQgdGhpcy5zZXJ2aWNlLmludmVudG9yeS5jaGlsZEFzc2V0c0FkZChub2RlVG9Nb3ZlLm1vLCB0aGlzLm1vKSkuZGF0YTtcbiAgICB0aGlzLmFkZE1hbmFnZWRPYmplY3QobW8pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0Fzc2V0KG5vZGVUb01vdmU6IEFzc2V0Tm9kZSkge1xuICAgIC8vIFRPRE8gdXNlIGlzQXNzZXQgY2hlY2sgd2hlbiBodHRwczovL2dpdGh1Yi5zb2Z0d2FyZWFnLmNvbS9JT1RBL2N1bXVsb2NpdHktdWkvcHVsbC82OTAgaXMgbWVyZ2VkLlxuICAgIC8vIERvIG5vdCBvdmVycmlkZSBhc3NldCB0eXBlIVxuICAgIHJldHVybiBub2RlVG9Nb3ZlLm1vPy5jOHlfSXNBc3NldDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVtb3ZlTW92ZWROb2RlKG5vZGVUb01vdmU6IEFzc2V0Tm9kZSkge1xuICAgIGZvciAoY29uc3QgcGFyZW50IG9mIG5vZGVUb01vdmUucGFyZW50cyBhcyBBc3NldE5vZGVbXSkge1xuICAgICAgaWYgKHBhcmVudC5tbyAmJiBwYXJlbnQubW8udHlwZSA9PT0gR3JvdXBGcmFnbWVudC5keW5hbWljR3JvdXBUeXBlKSB7XG4gICAgICAgIGJyZWFrOyAvLyBzbWFydCBncm91cHMgZG9uJ3QgbmVlZCB0byBiZSBjaGFuZ2VkXG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJlbnQucm9vdCAmJiAhdGhpcy5pc0Fzc2V0KG5vZGVUb01vdmUpKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuc2VydmljZS5pbnZlbnRvcnkudXBkYXRlKHtcbiAgICAgICAgICBpZDogbm9kZVRvTW92ZS5tby5pZCxcbiAgICAgICAgICB0eXBlOiBHcm91cEZyYWdtZW50LnN1Ykdyb3VwVHlwZVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFwYXJlbnQucm9vdCkge1xuICAgICAgICBhd2FpdCB0aGlzLnNlcnZpY2UuaW52ZW50b3J5LmNoaWxkQXNzZXRzUmVtb3ZlKG5vZGVUb01vdmUubW8sIHBhcmVudC5tbyk7XG4gICAgICB9XG4gICAgICBwYXJlbnQucmVtb3ZlKG5vZGVUb01vdmUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlSWNvbihvcGVuKSB7XG4gICAgdGhpcy5pY29uID0gdGhpcy5zZXJ2aWNlLmljb24oXG4gICAgICAvLyBpZiBpdCdzIHJvb3Qgd2UgYXJlIGdvaW5nIHRvIHBhc3MgYSBmYWtlIG1vIHRvIGdldCB0aGUgc2FtZSBpY29uIGFzIGdyb3Vwc1xuICAgICAgdGhpcy5yb290ID8geyBjOHlfSXNEZXZpY2VHcm91cDoge30gfSA6IHRoaXMubW8sXG4gICAgICBvcGVuXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
334
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtbm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2Fzc2V0cy1uYXZpZ2F0b3IvYXNzZXQtbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBRUwscUJBQXFCLEVBQ3JCLE9BQU8sRUFDUCxhQUFhLEVBQ2IsYUFBYSxFQUVkLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWhELE1BQU0sT0FBTyxTQUFVLFNBQVEsYUFBYTtJQXdDMUMsWUFBc0IsT0FBeUIsRUFBWSxTQUE0QixFQUFFO1FBQ3ZGLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQURNLFlBQU8sR0FBUCxPQUFPLENBQWtCO1FBQVksV0FBTSxHQUFOLE1BQU0sQ0FBd0I7UUFwQ3pGLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDL0MscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBRXpCOztXQUVHO1FBQ0gsYUFBUSxHQUFnQixFQUFFLENBQUM7UUF3QjNCLGlCQUFZLEdBQWlCLElBQUksT0FBTyxFQUFFLENBQUM7UUFRekMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQztRQUMvQixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUMxRCxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO1FB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akQsS0FBSyxNQUFNLE1BQU0sSUFBSSxVQUFVLENBQUMsT0FBc0IsRUFBRTtZQUN0RCxJQUFJLE1BQU0sQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLGdCQUFnQixFQUFFO2dCQUNsRSxNQUFNLENBQUMsd0NBQXdDO2FBQ2hEO1lBRUQsSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDNUMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7b0JBQ2xDLEVBQUUsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7b0JBQ3BCLElBQUksRUFBRSxhQUFhLENBQUMsWUFBWTtpQkFDakMsQ0FBQyxDQUFDO2FBQ0o7WUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRTtnQkFDaEIsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUMxRTtZQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRU8sS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJO1FBQzNCLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUk7UUFDakMsNkVBQTZFO1FBQzdFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQy9DLElBQUksQ0FDTCxDQUFDO0lBQ0osQ0FBQzs7QUEzWE0sY0FBSSxHQUFHLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElJZGVudGlmaWVkLCBQYWdpbmcgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBDbGlja09wdGlvbnMsXG4gIERldmljZVN0YXR1c0NvbXBvbmVudCxcbiAgZ2V0dGV4dCxcbiAgR3JvdXBGcmFnbWVudCxcbiAgTmF2aWdhdG9yTm9kZSxcbiAgTmF2aWdhdG9yTm9kZURhdGFcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBkZWJvdW5jZSwgZ2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tICcuL2FjdGlvbi5lbnVtJztcbmltcG9ydCB7IEFzc2V0Tm9kZU1vLCBBc3NldE5vZGVTZXJ2aWNlIH0gZnJvbSAnLi9hc3NldC1ub2RlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9hZE1vcmVOb2RlIH0gZnJvbSAnLi9sb2FkLW1vcmUtbm9kZSc7XG5cbmV4cG9ydCBjbGFzcyBBc3NldE5vZGUgZXh0ZW5kcyBOYXZpZ2F0b3JOb2RlIHtcbiAgc3RhdGljIE5BTUUgPSAnQXNzZXROb2RlJztcbiAgcm9vdDogYm9vbGVhbjtcbiAgbW86IGFueTtcbiAgaGlkZURldmljZXMgPSBmYWxzZTtcbiAgZmlsdGVyUXVlcnkkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgc2hvd0NoaWxkRGV2aWNlcyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBBc3NldCBub2RlIGNoaWxkcmVuIChzdWJlbnRyaWVzKS5cbiAgICovXG4gIGNoaWxkcmVuOiBBc3NldE5vZGVbXSA9IFtdO1xuXG4gIGdldCBoYXNDaGlsZHJlbigpIHtcbiAgICByZXR1cm4gdGhpcy5yb290IHx8IHRoaXMuc2VydmljZS5pc0dyb3VwKHRoaXMubW8pO1xuICB9XG5cbiAgZ2V0IGlzRGV2aWNlKCkge1xuICAgIHJldHVybiAhIXRoaXMubW8uYzh5X0lzRGV2aWNlO1xuICB9XG5cbiAgZ2V0IGlzRGV2aWNlT3JQcm9iYWJseUNoaWxkRGV2aWNlKCkge1xuICAgIHJldHVybiB0aGlzLmlzRGV2aWNlIHx8IHRoaXMuaXNOZWl0aGVyRGV2aWNlT3JHcm91cDtcbiAgfVxuXG4gIGdldCBpc05laXRoZXJEZXZpY2VPckdyb3VwKCkge1xuICAgIHJldHVybiAoXG4gICAgICAhdGhpcy5zZXJ2aWNlLmlzR3JvdXAodGhpcy5tbykgJiZcbiAgICAgICF0aGlzLnNlcnZpY2UuaXNEeW5hbWljR3JvdXAodGhpcy5tbykgJiZcbiAgICAgICF0aGlzLmlzRGV2aWNlICYmXG4gICAgICAhdGhpcy5yb290XG4gICAgKTtcbiAgfVxuXG4gIGV2ZW50czogU3ViamVjdDxBY3Rpb24+O1xuICBub2Rlc0ZldGNoZWQ6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XG4gIHByb3RlY3RlZCBwYWdpbmc6IFBhZ2luZzxBc3NldE5vZGVNbz47XG4gIHByb3RlY3RlZCBsb2FkTW9yZU5vZGU6IExvYWRNb3JlTm9kZTtcbiAgcHJpdmF0ZSBvblVwZGF0ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBzZXJ2aWNlOiBBc3NldE5vZGVTZXJ2aWNlLCBwcm90ZWN0ZWQgY29uZmlnOiBOYXZpZ2F0b3JOb2RlRGF0YSA9IHt9KSB7XG4gICAgc3VwZXIoY29uZmlnKTtcblxuICAgIHRoaXMucm9vdCA9IHRoaXMucm9vdCB8fCBmYWxzZTtcbiAgICB0aGlzLmhpZGVEZXZpY2VzID0gY29uZmlnLmhpZGVEZXZpY2VzID8/IHRoaXMuaGlkZURldmljZXM7XG4gICAgdGhpcy5tbyA9IHRoaXMubW8gfHwge307XG4gICAgdGhpcy5wYXRoID0gdGhpcy5nZXRQYXRoKCk7XG4gICAgdGhpcy5kcmFnZ2FibGUgPSAhdGhpcy5zZXJ2aWNlPy5tb2R1bGVDb25maWc/LmRpc2FibGVEcmFnQW5kRHJvcCAmJiAhdGhpcy5yb290O1xuICAgIHRoaXMuZHJvcHBhYmxlID1cbiAgICAgICF0aGlzLnNlcnZpY2U/Lm1vZHVsZUNvbmZpZz8uZGlzYWJsZURyYWdBbmREcm9wICYmICF0aGlzLmlzRGV2aWNlT3JQcm9iYWJseUNoaWxkRGV2aWNlO1xuICAgIHRoaXMucm91dGVyTGlua0V4YWN0ID0gdGhpcy5yb290O1xuICAgIHRoaXMudXBkYXRlSWNvbihmYWxzZSk7XG4gICAgdGhpcy5vblVwZGF0ZVN1YnNjcmlwdGlvbiA9IHRoaXMuc2VydmljZVxuICAgICAgLm9uVXBkYXRlKHRoaXMpXG4gICAgICAuc3Vic2NyaWJlKCh7IGRhdGEsIG1ldGhvZCB9KSA9PiB0aGlzLnJlZnJlc2goZGF0YSwgbWV0aG9kKSk7XG4gICAgdGhpcy5zZXRMYWJlbCgpO1xuICAgIHRoaXMuaWNvbkNvbXBvbmVudCA9IHRoaXMuaXNEZXZpY2VPclByb2JhYmx5Q2hpbGREZXZpY2UgPyBEZXZpY2VTdGF0dXNDb21wb25lbnQgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXRQYXRoKCkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5wYXRoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb25maWcucGF0aDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5yb290XG4gICAgICA/ICdncm91cCdcbiAgICAgIDogdGhpcy5pc0RldmljZU9yUHJvYmFibHlDaGlsZERldmljZVxuICAgICAgPyBgZGV2aWNlLyR7dGhpcy5tby5pZH1gXG4gICAgICA6IGBncm91cC8ke3RoaXMubW8uaWR9YDtcbiAgfVxuXG4gIG9wZW5PblN0YXJ0KHVybCkge1xuICAgIGNvbnN0IHVybFJlZ2V4ID0gL15cXC9ncm91cFxcLy87XG4gICAgaWYgKHRoaXMucm9vdCkge1xuICAgICAgaWYgKHRoaXMuc2VydmljZS5tb2R1bGVDb25maWcub3Blbk9uU3RhcnQgfHwgdXJsUmVnZXgudGVzdCh1cmwpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBtYXRjaGVzID0gdXJsLm1hdGNoKC9cXC8oZ3JvdXApXFwvKFxcZCspLyk7XG4gICAgbGV0IGlzTWF0Y2ggPSBmYWxzZTtcbiAgICBpZiAobWF0Y2hlcykge1xuICAgICAgY29uc3QgaWQgPSBtYXRjaGVzWzJdO1xuICAgICAgaXNNYXRjaCA9IFtdXG4gICAgICAgIC5jb25jYXQoZ2V0KHRoaXMubW8sICdjaGlsZEFzc2V0cy5yZWZlcmVuY2VzJywgW10pKVxuICAgICAgICAuc29tZSgoeyBtYW5hZ2VkT2JqZWN0IH0pID0+IG1hbmFnZWRPYmplY3QuaWQgPT09IGlkKTtcbiAgICAgIHJldHVybiBpc01hdGNoO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZWZyZXNoKG1vOiBhbnkgPSB7fSwgbWV0aG9kID0gJ0dFVCcpIHtcbiAgICBpZiAobW8/LmlkID09PSB0aGlzLm1vLmlkKSB7XG4gICAgICB0aGlzLm1vID0gbW87XG4gICAgICB0aGlzLnNldExhYmVsKCk7XG4gICAgfSBlbHNlIGlmIChtZXRob2QgPT09ICdERUxFVEUnKSB7XG4gICAgICB0aGlzLnBhcmVudHMuZm9yRWFjaCgobm9kZTogQXNzZXROb2RlKSA9PiBub2RlLnJlZnJlc2goKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmV2ZW50cykge1xuICAgICAgdGhpcy5ldmVudHMubmV4dChBY3Rpb24uUkVGUkVTSCk7XG4gICAgfVxuICB9XG5cbiAgc2V0TGFiZWwoKSB7XG4gICAgdGhpcy5sYWJlbCA9IHRoaXMuY29uZmlnLmxhYmVsIHx8ICh0aGlzLnJvb3QgJiYgZ2V0dGV4dCgnR3JvdXBzJykpIHx8IHRoaXMubW8ubmFtZSB8fCAnLS0nO1xuICB9XG5cbiAgY2xpY2sob3B0aW9uczogQ2xpY2tPcHRpb25zID0ge30pIHtcbiAgICBpZiAodGhpcy5pc0RldmljZU9yUHJvYmFibHlDaGlsZERldmljZSAmJiAhdGhpcy5zaG93Q2hpbGREZXZpY2VzKSB7XG4gICAgICB0aGlzLnNlcnZpY2UucHJlZmVyQnJlYWRjcnVtYih0aGlzLnBhcmVudHMpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmhvb2tFdmVudHMoKTtcbiAgICB0aGlzLnVwZGF0ZUljb24ob3B0aW9ucy5vcGVuKTtcbiAgICBpZiAob3B0aW9ucy5vcGVuKSB7XG4gICAgICB0aGlzLmV2ZW50cy5uZXh0KEFjdGlvbi5GRVRDSCk7XG4gICAgfVxuICB9XG5cbiAgc29ydCgpIHtcbiAgICB0aGlzLmNoaWxkcmVuLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGlmIChhLnByaW9yaXR5ID4gYi5wcmlvcml0eSkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9IGVsc2UgaWYgKGEucHJpb3JpdHkgPCBiLnByaW9yaXR5KSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhZGRNYW5hZ2VkT2JqZWN0KG1vKSB7XG4gICAgY29uc3QgeyBjaGlsZEFkZGl0aW9ucyB9ID0gdGhpcy5tbztcbiAgICBpZiAoIXRoaXMuaXNDaGlsZEFkZGl0aW9uKGNoaWxkQWRkaXRpb25zLCBtbykpIHtcbiAgICAgIHRoaXMuYWRkKHRoaXMuc2VydmljZS5jcmVhdGVDaGlsZE5vZGUobW8sIHsgaGlkZURldmljZXM6IHRoaXMuaGlkZURldmljZXMgfSkpO1xuICAgIH1cbiAgfVxuXG4gIGlzQ2hpbGRBZGRpdGlvbihjaGlsZEFkZGl0aW9ucywgbW8pIHtcbiAgICByZXR1cm4gKFxuICAgICAgY2hpbGRBZGRpdGlvbnMgJiYgY2hpbGRBZGRpdGlvbnMucmVmZXJlbmNlcy5zb21lKCh7IG1hbmFnZWRPYmplY3Q6IHsgaWQgfSB9KSA9PiBpZCA9PT0gbW8uaWQpXG4gICAgKTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5vblVwZGF0ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgZ2V0IGNhbkRyb3AoKSB7XG4gICAgY29uc3Qgbm9kZVRvTW92ZSA9IHRoaXMuc2VydmljZS5kcmFnZ2VkRGF0YTtcbiAgICBpZiAobm9kZVRvTW92ZSkge1xuICAgICAgY29uc3Qgc2hvdWxkR2V0Q2hpbGRPZkl0c093biA9ICEhbm9kZVRvTW92ZS5maW5kKGNoaWxkID0+IGNoaWxkID09PSB0aGlzKTtcbiAgICAgIGNvbnN0IGlzQWxyZWFkeUNoaWxkID0gKHRoaXMuY2hpbGRyZW4gYXMgQXNzZXROb2RlW10pLnNvbWUoXG4gICAgICAgIGNoaWxkID0+IGNoaWxkLm1vICYmIGNoaWxkLm1vLmlkID09PSBub2RlVG9Nb3ZlLm1vLmlkXG4gICAgICApO1xuICAgICAgY29uc3QgcHJldmVudE1vdmUgPSB0aGlzID09PSBub2RlVG9Nb3ZlIHx8IHNob3VsZEdldENoaWxkT2ZJdHNPd24gfHwgaXNBbHJlYWR5Q2hpbGQ7XG4gICAgICByZXR1cm4gdGhpcy5kcm9wcGFibGUgJiYgIXByZXZlbnRNb3ZlICYmIHRoaXMuc2VydmljZS5jYW5Ecm9wTm9kZSh0aGlzLnJvb3QpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5kcm9wcGFibGU7XG4gIH1cblxuICBkcmFnU3RhcnQoJGV2ZW50KSB7XG4gICAgc3VwZXIuZHJhZ1N0YXJ0KCRldmVudCk7XG4gICAgdGhpcy5zZXJ2aWNlLmRyYWdnZWREYXRhID0gdGhpcztcbiAgICB0aGlzLnNlcnZpY2Uucm9vdE5vZGUuZHJvcHBhYmxlID0gIXRoaXMuaXNEZXZpY2VPclByb2JhYmx5Q2hpbGREZXZpY2U7XG4gIH1cblxuICBkcmFnRW5kKCRldmVudCkge1xuICAgIHN1cGVyLmRyYWdFbmQoJGV2ZW50KTtcbiAgfVxuXG4gIGFzeW5jIGRyb3AoJGV2ZW50KSB7XG4gICAgY29uc3Qgbm9kZVRvTW92ZSA9IHRoaXMuc2VydmljZS5kcmFnZ2VkRGF0YTtcblxuICAgIC8vIFRPRE8gcmVtb3ZlIHdoZW4gYXNzZXQgdHlwZSBub2RlIGNhbiBiZSB1c2VkIG9uIHRoZSByb290IGxldmVsLlxuICAgIGlmICh0aGlzLnJvb3QgJiYgdGhpcy5pc0Fzc2V0KG5vZGVUb01vdmUpKSB7XG4gICAgICB0aGlzLnNlcnZpY2UuYWxlcnQuaW5mbyhnZXR0ZXh0KCdBc3NldCB0eXBlIG5vZGUgY2Fubm90IGJlY29tZSByb290IG5vZGUuJykpO1xuICAgICAgdGhpcy5kcmFnZ2VkSG92ZXIgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2VydmljZS5kcmFnZ2VkRGF0YSA9IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzdXBlci5kcm9wKCRldmVudCk7XG4gICAgaWYgKHRoaXMuY2FuRHJvcCkge1xuICAgICAgYXdhaXQgdGhpcy5tb3ZlTm9kZShub2RlVG9Nb3ZlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kcmFnZ2VkSG92ZXIgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2VydmljZS5kcmFnZ2VkRGF0YSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBob29rRXZlbnRzKCkge1xuICAgIGlmICghdGhpcy5ldmVudHMpIHtcbiAgICAgIHRoaXMuZXZlbnRzID0gbmV3IFN1YmplY3QoKTtcbiAgICAgIHRoaXMuZXZlbnRzLnN1YnNjcmliZShldnQgPT4ge1xuICAgICAgICBpZiAoIXRoaXMubG9hZGluZykge1xuICAgICAgICAgIHRoaXMuaGFuZGxlRXZlbnQoZXZ0KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIEFzc2V0Tm9kZS5OQU1FO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgY3VycmVudCBub2RlIGhhcyBjaGlsZCBkZXZpY2VzLlxuICAgKi9cbiAgaGFzQ2hpbGREZXZpY2VzKCkge1xuICAgIHJldHVybiB0aGlzLm1vICYmIHRoaXMubW8uYzh5X0lzRGV2aWNlICYmIHRoaXMubW8uY2hpbGREZXZpY2VzLnJlZmVyZW5jZXMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIHByb3RlY3RlZCBmZXRjaCgpIHtcbiAgICByZXR1cm4gdGhpcy5yb290XG4gICAgICA/IHRoaXMuc2VydmljZS5nZXRSb290Tm9kZXMoKVxuICAgICAgOiB0aGlzLnNlcnZpY2UuZ2V0R3JvdXBJdGVtcyhcbiAgICAgICAgICB0aGlzLm1vLmlkLFxuICAgICAgICAgIHRoaXMuaGlkZURldmljZXNcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIHF1ZXJ5OiBgJGZpbHRlcj0oaGFzKCR7R3JvdXBGcmFnbWVudC5ncm91cEZyYWdtZW50VHlwZX0pKSRvcmRlcmJ5PW5hbWVgXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDoge31cbiAgICAgICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb3VudENoaWxkcmVuKCkge1xuICAgIHJldHVybiB0aGlzLmNoaWxkcmVuLmxlbmd0aDtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVFdmVudChldnQ6IEFjdGlvbikge1xuICAgIGlmICghdGhpcy5jb3VudENoaWxkcmVuKCkgJiYgZXZ0ID09PSBBY3Rpb24uRkVUQ0gpIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLmFkZE5vZGVzKGF3YWl0IHRoaXMuZmV0Y2goKSk7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKGV2dCA9PT0gQWN0aW9uLk5FWFQpIHtcbiAgICAgIHRoaXMubG9hZE1vcmVOb2RlLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5hZGROb2Rlcyhhd2FpdCB0aGlzLnBhZ2luZy5uZXh0KCkpO1xuICAgICAgdGhpcy5sb2FkTW9yZU5vZGUubG9hZGluZyA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoZXZ0ID09PSBBY3Rpb24uUkVGUkVTSCkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLnBhZ2luZyA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMubG9hZE1vcmVOb2RlID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5lbXB0eSgpO1xuICAgICAgdGhpcy5ldmVudHMubmV4dChBY3Rpb24uRkVUQ0gpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhZGROb2RlcyhyZXMpIHtcbiAgICBpZiAocmVzLnBhZ2luZykge1xuICAgICAgY29uc3QgeyBjdXJyZW50UGFnZSwgbmV4dFBhZ2UsIHBhZ2VTaXplIH0gPSAodGhpcy5wYWdpbmcgPSByZXMucGFnaW5nKTtcbiAgICAgIGlmIChjdXJyZW50UGFnZSA9PT0gMSkge1xuICAgICAgICB0aGlzLmVtcHR5KCk7XG4gICAgICB9XG4gICAgICBjb25zdCBpdGVtc0NvdW50ID0gcmVzLmRhdGEubGVuZ3RoO1xuICAgICAgY29uc3QgbW9yZUl0ZW1zQXZhaWxhYmxlID0gISFuZXh0UGFnZSAmJiBpdGVtc0NvdW50ID09PSBwYWdlU2l6ZTtcbiAgICAgIHRoaXMudG9nZ2xlTG9hZE1vcmUobW9yZUl0ZW1zQXZhaWxhYmxlKTtcbiAgICB9XG4gICAgKHJlcy5kYXRhIHx8IHJlcykubWFwKG1vID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmFkZE1hbmFnZWRPYmplY3QobW8pO1xuICAgIH0pO1xuICAgIHRoaXMuZXZlbnRzLm5leHQoQWN0aW9uLkxPQURJTkdfRE9ORSk7XG4gICAgdGhpcy5ub2Rlc0ZldGNoZWQubmV4dCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRvZ2dsZUxvYWRNb3JlKHNob3c6IGJvb2xlYW4pIHtcbiAgICBpZiAoIXRoaXMubG9hZE1vcmVOb2RlICYmIHNob3cpIHtcbiAgICAgIHRoaXMubG9hZE1vcmVOb2RlID0gbmV3IExvYWRNb3JlTm9kZSgpO1xuICAgICAgdGhpcy5hZGQodGhpcy5sb2FkTW9yZU5vZGUpO1xuICAgICAgdGhpcy5sb2FkTW9yZU5vZGUuY2xpY2sgPSBkZWJvdW5jZSgoKSA9PiB0aGlzLmV2ZW50cy5uZXh0KEFjdGlvbi5ORVhUKSwgMzAwLCB7XG4gICAgICAgIGxlYWRpbmc6IHRydWUsXG4gICAgICAgIHRyYWlsaW5nOiBmYWxzZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubG9hZE1vcmVOb2RlKSB7XG4gICAgICB0aGlzLmxvYWRNb3JlTm9kZS5oaWRkZW4gPSAhc2hvdztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG1vdmVOb2RlKG5vZGVUb01vdmU6IEFzc2V0Tm9kZSkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBpc0NvcHkgPSBhd2FpdCB0aGlzLnNob3dEcm9wQ29uZmlybShub2RlVG9Nb3ZlKTtcbiAgICAgIGF3YWl0IHRoaXMudmVyaWZ5Tm9kZUFjY2Vzcyhub2RlVG9Nb3ZlKTtcbiAgICAgIGF3YWl0IHRoaXMuYWRkTW92ZWROb2RlKG5vZGVUb01vdmUpO1xuICAgICAgaWYgKCFpc0NvcHkpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5yZW1vdmVNb3ZlZE5vZGUobm9kZVRvTW92ZSk7XG4gICAgICB9XG4gICAgICB0aGlzLmV4cGFuZCgpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICBpZiAoZXgpIHtcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmFsZXJ0LmFkZFNlcnZlckZhaWx1cmUoZXgpO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmRyYWdnZWRIb3ZlciA9IGZhbHNlO1xuICAgICAgdGhpcy5zZXJ2aWNlLmRyYWdnZWREYXRhID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2hvd0Ryb3BDb25maXJtKG5vZGVUb01vdmU6IEFzc2V0Tm9kZSkge1xuICAgIHRoaXMuY29uZmlybS50aXRsZSA9IGdldHRleHQoJ01vdmUnKTtcbiAgICB0aGlzLmNvbmZpcm0ubWVzc2FnZSA9IGdldHRleHQoJ0RvIHlvdSB3YW50IHRvIG1vdmUgdGhlIGdyb3VwPycpO1xuICAgIGNvbnN0IGJ1dHRvbnM6IGFueSA9IFtcbiAgICAgIHtcbiAgICAgICAgbGFiZWw6IGdldHRleHQoJ0NhbmNlbCcpLFxuICAgICAgICBhY3Rpb246ICgpID0+IFByb21pc2UucmVqZWN0KClcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdNb3ZlJyksXG4gICAgICAgIHN0YXR1czogJ2RlZmF1bHQnLFxuICAgICAgICBhY3Rpb246ICgpID0+IFByb21pc2UucmVzb2x2ZShmYWxzZSlcbiAgICAgIH1cbiAgICBdO1xuICAgIGlmIChub2RlVG9Nb3ZlLmlzRGV2aWNlT3JQcm9iYWJseUNoaWxkRGV2aWNlKSB7XG4gICAgICB0aGlzLmNvbmZpcm0udGl0bGUgPSBnZXR0ZXh0KCdNb3ZlIG9yIGFkZCcpO1xuICAgICAgdGhpcy5jb25maXJtLm1lc3NhZ2UgPSBnZXR0ZXh0KCdEbyB5b3Ugd2FudCB0byBtb3ZlIG9yIGFkZCB0aGUgZGV2aWNlPycpO1xuICAgICAgYnV0dG9ucy5wdXNoKHtcbiAgICAgICAgbGFiZWw6IGdldHRleHQoJ0FkZCcpLFxuICAgICAgICBzdGF0dXM6ICdwcmltYXJ5JyxcbiAgICAgICAgYWN0aW9uOiAoKSA9PiBQcm9taXNlLnJlc29sdmUodHJ1ZSlcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jb25maXJtLnNob3coYnV0dG9ucyk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHZlcmlmeU5vZGVBY2Nlc3Mobm9kZVRvTW92ZTogQXNzZXROb2RlKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VydmljZS5pbnZlbnRvcnkudXBkYXRlKHsgaWQ6IG5vZGVUb01vdmUubW8uaWQgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFkZE1vdmVkTm9kZShub2RlVG9Nb3ZlOiBBc3NldE5vZGUpIHtcbiAgICBsZXQgbW86IElJZGVudGlmaWVkO1xuXG4gICAgaWYgKHRoaXMucm9vdCAmJiAhdGhpcy5pc0Fzc2V0KG5vZGVUb01vdmUpKSB7XG4gICAgICBtbyA9IChcbiAgICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlLmludmVudG9yeS51cGRhdGUoe1xuICAgICAgICAgIGlkOiBub2RlVG9Nb3ZlLm1vLmlkLFxuICAgICAgICAgIHR5cGU6IEdyb3VwRnJhZ21lbnQuZ3JvdXBUeXBlXG4gICAgICAgIH0pXG4gICAgICApLmRhdGE7XG5cbiAgICAgIHRoaXMuYWRkTWFuYWdlZE9iamVjdChtbyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbW8gPSAoYXdhaXQgdGhpcy5zZXJ2aWNlLmludmVudG9yeS5jaGlsZEFzc2V0c0FkZChub2RlVG9Nb3ZlLm1vLCB0aGlzLm1vKSkuZGF0YTtcbiAgICB0aGlzLmFkZE1hbmFnZWRPYmplY3QobW8pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0Fzc2V0KG5vZGVUb01vdmU6IEFzc2V0Tm9kZSkge1xuICAgIC8vIFRPRE8gdXNlIGlzQXNzZXQgY2hlY2sgd2hlbiBodHRwczovL2dpdGh1Yi5zb2Z0d2FyZWFnLmNvbS9JT1RBL2N1bXVsb2NpdHktdWkvcHVsbC82OTAgaXMgbWVyZ2VkLlxuICAgIC8vIERvIG5vdCBvdmVycmlkZSBhc3NldCB0eXBlIVxuICAgIHJldHVybiBub2RlVG9Nb3ZlLm1vPy5jOHlfSXNBc3NldDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVtb3ZlTW92ZWROb2RlKG5vZGVUb01vdmU6IEFzc2V0Tm9kZSkge1xuICAgIGZvciAoY29uc3QgcGFyZW50IG9mIG5vZGVUb01vdmUucGFyZW50cyBhcyBBc3NldE5vZGVbXSkge1xuICAgICAgaWYgKHBhcmVudC5tbyAmJiBwYXJlbnQubW8udHlwZSA9PT0gR3JvdXBGcmFnbWVudC5keW5hbWljR3JvdXBUeXBlKSB7XG4gICAgICAgIGJyZWFrOyAvLyBzbWFydCBncm91cHMgZG9uJ3QgbmVlZCB0byBiZSBjaGFuZ2VkXG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJlbnQucm9vdCAmJiAhdGhpcy5pc0Fzc2V0KG5vZGVUb01vdmUpKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuc2VydmljZS5pbnZlbnRvcnkudXBkYXRlKHtcbiAgICAgICAgICBpZDogbm9kZVRvTW92ZS5tby5pZCxcbiAgICAgICAgICB0eXBlOiBHcm91cEZyYWdtZW50LnN1Ykdyb3VwVHlwZVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFwYXJlbnQucm9vdCkge1xuICAgICAgICBhd2FpdCB0aGlzLnNlcnZpY2UuaW52ZW50b3J5LmNoaWxkQXNzZXRzUmVtb3ZlKG5vZGVUb01vdmUubW8sIHBhcmVudC5tbyk7XG4gICAgICB9XG4gICAgICBwYXJlbnQucmVtb3ZlKG5vZGVUb01vdmUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlSWNvbihvcGVuKSB7XG4gICAgdGhpcy5pY29uID0gYXdhaXQgdGhpcy5zZXJ2aWNlLmljb24oXG4gICAgICAvLyBpZiBpdCdzIHJvb3Qgd2UgYXJlIGdvaW5nIHRvIHBhc3MgYSBmYWtlIG1vIHRvIGdldCB0aGUgc2FtZSBpY29uIGFzIGdyb3Vwc1xuICAgICAgdGhpcy5yb290ID8geyBjOHlfSXNEZXZpY2VHcm91cDoge30gfSA6IHRoaXMubW8sXG4gICAgICBvcGVuXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -278,4 +278,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
278
278
|
type: Inject,
|
|
279
279
|
args: [ASSET_NAVIGATOR_CONFIG]
|
|
280
280
|
}] }, { type: i4.DeviceGroupService }]; } });
|
|
281
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtbm9kZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYXNzZXRzLW5hdmlnYXRvci9hc3NldC1ub2RlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBa0IsZ0JBQWdCLEVBQVcsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRyxPQUFPLEVBQ0wsWUFBWSxFQUNaLGVBQWUsRUFDZixpQkFBaUIsRUFDakIsYUFBYSxFQUNiLFlBQVksRUFHWixjQUFjLEVBQ2YsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUF3QixzQkFBc0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7QUFVckQsTUFBTSxPQUFPLGdCQUFnQjtJQU8zQixZQUNTLFNBQTJCLEVBQzNCLFVBQXNCLEVBQ3RCLEtBQW1CLEVBQ25CLEtBQW1CLEVBQ2hCLGlCQUFvQyxFQUNwQyxJQUFpQixFQUNqQixRQUF5QixFQUN6QixjQUE4QixFQUNXLFlBQWtDLEVBQzNFLGtCQUFzQztRQVR6QyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFVBQUssR0FBTCxLQUFLLENBQWM7UUFDbkIsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUNoQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQ1csaUJBQVksR0FBWixZQUFZLENBQXNCO1FBQzNFLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFmbEQsYUFBUSxHQUFHLElBQUksQ0FBQztRQUdOLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFjdkIsSUFBSSxDQUFDLFlBQVksR0FBRztZQUNsQixnQkFBZ0IsRUFBRSxJQUFJO1lBQ3RCLEdBQUcsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO1NBQ3hCLENBQUM7UUFDRixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQUksQ0FBQyxFQUFrQixFQUFFLElBQWM7UUFDckMsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsT0FBTyxDQUFDLEVBQWtCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsY0FBYyxDQUFDLEVBQWtCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsWUFBWSxDQUFDLEVBQWtCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsRUFBa0I7UUFDbkMsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELE9BQU8sQ0FBQyxFQUFrQjtRQUN4QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELFVBQVUsQ0FBQyxFQUFrQjtRQUMzQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELFFBQVEsQ0FBQyxFQUFrQjtRQUN6QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELGNBQWMsQ0FBQyxTQUE0QixFQUFFO1FBQzNDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUNuQyxJQUFJLEVBQUUsSUFBSTtZQUNWLEdBQUcsTUFBTTtZQUNULFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQjtZQUM1QyxTQUFTLEVBQUUsUUFBUTtTQUNwQixDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELHNCQUFzQixDQUFDLE1BQU07UUFDM0IsT0FBTyxJQUFJLGdCQUFnQixDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsZUFBZSxDQUFDLE1BQTBCO1FBQ3hDLE9BQU8sSUFBSSxTQUFTLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxlQUFlLENBQUMsYUFBYSxFQUFFLE1BQTBCO1FBQ3ZELE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxhQUFhLENBQUM7UUFDL0IsTUFBTSxDQUFDLEVBQUUsR0FBRyxhQUFhLENBQUM7UUFDMUIsSUFBSSxJQUFJLEtBQUssYUFBYSxDQUFDLGdCQUFnQixFQUFFO1lBQzNDLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzVDO1FBQ0QsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxZQUFZLENBQUMsWUFBa0I7UUFDN0IsTUFBTSxhQUFhLEdBQUc7WUFDcEIsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3hCLFlBQVksRUFBRSxLQUFLO1lBQ25CLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCO1lBQ3JELEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztTQUM5RCxDQUFDO1FBQ0YsTUFBTSxXQUFXLEdBQUcsRUFBRSxHQUFHLGFBQWEsRUFBRSxHQUFHLFlBQVksRUFBRSxDQUFDO1FBRTFELDZHQUE2RztRQUM3RyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLHFCQUFxQixDQUFDLEVBQUU7WUFDOUUsT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQ3pCLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFO2dCQUN6QixZQUFZLEVBQUUsYUFBYSxDQUFDLGlCQUFpQjtnQkFDN0MsU0FBUyxFQUFFLElBQUk7YUFDaEIsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsWUFBa0I7UUFDbEMsTUFBTSxhQUFhLEdBQUc7WUFDcEIsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3hCLFlBQVksRUFBRSxLQUFLO1NBQ3BCLENBQUM7UUFDRixNQUFNLFdBQVcsR0FBRyxFQUFFLEdBQUcsYUFBYSxFQUFFLEdBQUcsWUFBWSxFQUFFLENBQUM7UUFDMUQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFZLEVBQUUsY0FBc0IsRUFBRSxFQUFFLFlBQVksR0FBRyxLQUFLLEVBQUUsV0FBVyxHQUFHLEVBQUU7UUFDMUYsTUFBTSxXQUFXLEdBQUc7WUFDbEIsWUFBWTtZQUNaLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN4QixLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxXQUFXLENBQUM7U0FDaEQsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxXQUFXLEVBQUUsR0FBRyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxZQUFZLEdBQUcsS0FBSyxFQUFFLFdBQVcsR0FBRyxFQUFFO1FBQ3pELE1BQU0sV0FBVyxHQUFRO1lBQ3ZCLFlBQVksRUFBRSxjQUFjO1lBQzVCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsWUFBWTtZQUNaLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN4QixDQUFDLEVBQUUsSUFBSSxDQUFDLDRCQUE0QixDQUFDLFdBQVcsQ0FBQztTQUNsRCxDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELG9CQUFvQixDQUFDLFVBQWtCLEVBQUUsWUFBaUIsRUFBRTtRQUMxRCxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsV0FBVyxFQUFFLEdBQUcsU0FBUyxDQUFDO1FBQzVDLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQztRQUMzQixNQUFNLFdBQVcsR0FBRztZQUNsQixDQUFDLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUM7WUFDcEQsR0FBRyxXQUFXO1NBQ2YsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxpQkFBaUIsQ0FDZixJQUFZLEVBQ1osY0FBc0IsRUFBRSxFQUN4QixXQUFXLEdBQUcsRUFBRSxFQUNoQixZQUFZLEdBQUcsS0FBSztRQUVwQixNQUFNLFdBQVcsR0FBRztZQUNsQixZQUFZO1lBQ1osUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3hCLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQztTQUNoRCxDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsV0FBVyxFQUFFLEdBQUcsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQsNEJBQTRCLENBQUMsV0FBVztRQUN0QyxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JELGdDQUFnQztRQUNoQyxNQUFNLGVBQWUsR0FBRyxlQUFlLENBQUM7UUFFeEMsOEVBQThFO1FBQzlFLE9BQU8sVUFBVSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztJQUNwRSxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBWSxFQUFFLFdBQW9CO1FBQ2pELElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDaEIsT0FBTyxzQkFBc0IsSUFBSSxpQkFBaUIsQ0FBQztTQUNwRDtRQUNELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzdDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxlQUFlO1FBQ2IsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLElBQUksQ0FBQztRQUM5QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLHFCQUFxQjtZQUMxRCxDQUFDLENBQUM7Z0JBQ0UsUUFBUSxFQUFFO29CQUNSLElBQUksRUFBRSxhQUFhLENBQUMsU0FBUztpQkFDOUI7Z0JBQ0QsU0FBUyxFQUFFLEVBQUU7YUFDZDtZQUNILENBQUMsQ0FBQztnQkFDRSxRQUFRLEVBQUU7b0JBQ1IsS0FBSyxFQUFFLGFBQWEsQ0FBQyxpQkFBaUI7aUJBQ3ZDO2dCQUNELFNBQVMsRUFBRSxFQUFFO2FBQ2QsQ0FBQztRQUNOLElBQUksWUFBWSxDQUFDLFdBQVcsRUFBRTtZQUM1QixNQUFNLFdBQVcsR0FBRztnQkFDbEIsUUFBUSxFQUFFO29CQUNSLEtBQUssRUFBRTt3QkFDTDs0QkFDRSxJQUFJLEVBQUUsYUFBYSxDQUFDLGdCQUFnQjt5QkFDckM7d0JBQ0Q7NEJBQ0UsS0FBSyxFQUFFLGFBQWEsQ0FBQyxvQkFBb0I7eUJBQzFDO3dCQUNELEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsYUFBYSxDQUFDLG9CQUFvQixZQUFZLEVBQUUsRUFBRTtxQkFDeEU7aUJBQ0Y7YUFDRixDQUFDO1lBQ0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1NBQ3ZEO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVELFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUU7UUFDbkIsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ1QsT0FBTyxJQUFJLENBQUMsVUFBVTtpQkFDbkIsWUFBWSxDQUNYLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUNsQixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDMUMsTUFBTSxDQUFDLGlFQUFpRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ25GLEdBQUcsQ0FDSixDQUNKO2lCQUNBLElBQUksQ0FDSCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQy9CLFFBQVEsQ0FBQyxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBMkIsQ0FBQSxDQUFDLEVBQ3JELE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxhQUFhLENBQUMsQ0FDbkQsQ0FBQztTQUNMO2FBQU0sSUFBSSxJQUFJLEVBQUU7WUFDZixPQUFPLElBQUksQ0FBQyxVQUFVO2lCQUNuQixZQUFZLENBQ1gsQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQ2xCLE1BQU0sQ0FBQyxrRUFBa0UsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7Z0JBQ3BGLE1BQU0sS0FBSyxNQUFNLENBQ3BCO2lCQUNBLElBQUksQ0FDSCxRQUFRLENBQUMsQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQTJCLENBQUEsQ0FBQyxFQUNyRCxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FDMUQsQ0FBQztTQUNMO2FBQU07WUFDTCxPQUFPLEtBQUssRUFBRSxDQUFDO1NBQ2hCO0lBQ0gsQ0FBQztJQUVELHNCQUFzQixDQUFDLFdBQTZDLEVBQUU7UUFDcEUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQztRQUMxQixJQUFJLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFFeEIsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDNUIsV0FBVyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDdEQsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRTtnQkFDakQsV0FBVyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLENBQUM7YUFDMUQ7U0FDRjtRQUNELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxXQUFXLENBQUMsVUFBbUI7UUFDN0IsT0FBTyxDQUNMLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxzQkFBc0IsQ0FBQyxDQUMxRixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxnQkFBZ0IsQ0FBQyxPQUF3QjtRQUN2QyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDL0Q7SUFDSCxDQUFDO0lBRVMsWUFBWSxDQUFDLGNBQW1CLEVBQUU7UUFDMUMsTUFBTSxNQUFNLEdBQUc7WUFDYixXQUFXLEVBQUUsQ0FBQztZQUNkLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLFFBQVEsRUFBRSxFQUFFO1NBQ2IsQ0FBQztRQUNGLE9BQU8sRUFBRSxHQUFHLE1BQU0sRUFBRSxHQUFHLFdBQVcsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsTUFBTTtRQUN2QyxJQUFJLGFBQWEsQ0FBQztRQUNsQixJQUFJLE1BQU0sSUFBSSxNQUFNLEVBQUU7WUFDcEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7Z0JBQzlDO29CQUNFLHNCQUFzQixFQUFFLE1BQU07aUJBQy9CO2dCQUNEO29CQUNFLHNCQUFzQixFQUFFLE1BQU07aUJBQy9CO2FBQ0YsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ2hGLGFBQWEsR0FBRyxHQUFHLFdBQVcsSUFBSSxZQUFZLEVBQUUsQ0FBQztTQUNsRDthQUFNO1lBQ0wsYUFBYSxHQUFHLE1BQU0sSUFBSSxNQUFNLElBQUksRUFBRSxDQUFDO1NBQ3hDO1FBQ0QsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQzs7NkdBalRVLGdCQUFnQiw2UEFnQkwsc0JBQXNCO2lIQWhCakMsZ0JBQWdCLGNBRmYsTUFBTTsyRkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFpQkksUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCwgSW52ZW50b3J5U2VydmljZSwgSVJlc3VsdCwgUXVlcmllc1V0aWwsIFVzZXJTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQWxlcnRTZXJ2aWNlLFxuICBBcHBTdGF0ZVNlcnZpY2UsXG4gIEJyZWFkY3J1bWJTZXJ2aWNlLFxuICBHcm91cEZyYWdtZW50LFxuICBNb2RhbFNlcnZpY2UsXG4gIE5hdmlnYXRvck5vZGUsXG4gIE5hdmlnYXRvck5vZGVEYXRhLFxuICBPcHRpb25zU2VydmljZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2FwaSc7XG5pbXBvcnQgeyBlbXB0eSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtZXJnZU1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFzc2V0Tm9kZSB9IGZyb20gJy4vYXNzZXQtbm9kZSc7XG5pbXBvcnQgeyBBc3NldE5hdmlnYXRvckNvbmZpZywgQVNTRVRfTkFWSUdBVE9SX0NPTkZJRyB9IGZyb20gJy4vYXNzZXQtbm9kZS1jb25maWcubW9kZWwnO1xuaW1wb3J0IHsgRHluYW1pY0dyb3VwTm9kZSB9IGZyb20gJy4vZHluYW1pYy1ncm91cC1ub2RlJztcbmltcG9ydCB7IERldmljZUdyb3VwU2VydmljZSB9IGZyb20gJy4vZ3JvdXAuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXNzZXROb2RlTW8ge1xuICBpZDogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFzc2V0Tm9kZVNlcnZpY2Uge1xuICByb290Tm9kZTogQXNzZXROb2RlO1xuICBmaXJzdFVybCA9IHRydWU7XG4gIGRyYWdnZWREYXRhOiBBc3NldE5vZGU7XG4gIHF1ZXJpZXNVdGlsOiBRdWVyaWVzVXRpbDtcbiAgcHJvdGVjdGVkIFBBR0VfU0laRSA9IDIwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBpbnZlbnRvcnk6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHVibGljIGFwaVNlcnZpY2U6IEFwaVNlcnZpY2UsXG4gICAgcHVibGljIG1vZGFsOiBNb2RhbFNlcnZpY2UsXG4gICAgcHVibGljIGFsZXJ0OiBBbGVydFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGJyZWFkY3J1bWJTZXJ2aWNlOiBCcmVhZGNydW1iU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgdXNlcjogVXNlclNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGFwcFN0YXRlOiBBcHBTdGF0ZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG9wdGlvbnNTZXJ2aWNlOiBPcHRpb25zU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFTU0VUX05BVklHQVRPUl9DT05GSUcpIHB1YmxpYyBtb2R1bGVDb25maWc6IEFzc2V0TmF2aWdhdG9yQ29uZmlnLFxuICAgIHByb3RlY3RlZCBkZXZpY2VHcm91cFNlcnZpY2U6IERldmljZUdyb3VwU2VydmljZVxuICApIHtcbiAgICB0aGlzLm1vZHVsZUNvbmZpZyA9IHtcbiAgICAgIHJvb3ROb2RlUHJpb3JpdHk6IDIwMDAsXG4gICAgICAuLi4obW9kdWxlQ29uZmlnIHx8IHt9KVxuICAgIH07XG4gICAgdGhpcy5xdWVyaWVzVXRpbCA9IG5ldyBRdWVyaWVzVXRpbCgpO1xuICB9XG5cbiAgaWNvbihtbzogSU1hbmFnZWRPYmplY3QsIG9wZW4/OiBib29sZWFuKSB7XG4gICAgcmV0dXJuIHRoaXMuZGV2aWNlR3JvdXBTZXJ2aWNlLmljb24obW8sIG9wZW4pO1xuICB9XG5cbiAgaXNHcm91cChtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICByZXR1cm4gdGhpcy5kZXZpY2VHcm91cFNlcnZpY2UuaXNHcm91cChtbyk7XG4gIH1cblxuICBpc0R5bmFtaWNHcm91cChtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICByZXR1cm4gdGhpcy5kZXZpY2VHcm91cFNlcnZpY2UuaXNEeW5hbWljR3JvdXAobW8pO1xuICB9XG5cbiAgaXNEYXRhQnJva2VyKG1vOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHJldHVybiB0aGlzLmRldmljZUdyb3VwU2VydmljZS5pc0RhdGFCcm9rZXIobW8pO1xuICB9XG5cbiAgaXNEYXRhQnJva2VyQWN0aXZlKG1vOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHJldHVybiB0aGlzLmRldmljZUdyb3VwU2VydmljZS5pc0RhdGFCcm9rZXJBY3RpdmUobW8pO1xuICB9XG5cbiAgaXNBc3NldChtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICByZXR1cm4gdGhpcy5kZXZpY2VHcm91cFNlcnZpY2UuaXNBc3NldChtbyk7XG4gIH1cblxuICBpc0FueUdyb3VwKG1vOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHJldHVybiB0aGlzLmRldmljZUdyb3VwU2VydmljZS5pc0FueUdyb3VwKG1vKTtcbiAgfVxuXG4gIGlzRGV2aWNlKG1vOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHJldHVybiB0aGlzLmRldmljZUdyb3VwU2VydmljZS5pc0RldmljZShtbyk7XG4gIH1cblxuICBjcmVhdGVSb290Tm9kZShjb25maWc6IE5hdmlnYXRvck5vZGVEYXRhID0ge30pIHtcbiAgICB0aGlzLnJvb3ROb2RlID0gdGhpcy5jcmVhdGVBc3NldE5vZGUoe1xuICAgICAgcm9vdDogdHJ1ZSxcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIHByaW9yaXR5OiB0aGlzLm1vZHVsZUNvbmZpZy5yb290Tm9kZVByaW9yaXR5LFxuICAgICAgZmVhdHVyZUlkOiAnZ3JvdXBzJ1xuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLnJvb3ROb2RlO1xuICB9XG5cbiAgY3JlYXRlRHluYW1pY0dyb3VwTm9kZShjb25maWcpIHtcbiAgICByZXR1cm4gbmV3IER5bmFtaWNHcm91cE5vZGUodGhpcywgY29uZmlnKTtcbiAgfVxuXG4gIGNyZWF0ZUFzc2V0Tm9kZShjb25maWc6IFBhcnRpYWw8QXNzZXROb2RlPikge1xuICAgIHJldHVybiBuZXcgQXNzZXROb2RlKHRoaXMsIGNvbmZpZyk7XG4gIH1cblxuICBjcmVhdGVDaGlsZE5vZGUobWFuYWdlZE9iamVjdCwgY29uZmlnOiBQYXJ0aWFsPEFzc2V0Tm9kZT4pIHtcbiAgICBjb25zdCB7IHR5cGUgfSA9IG1hbmFnZWRPYmplY3Q7XG4gICAgY29uZmlnLm1vID0gbWFuYWdlZE9iamVjdDtcbiAgICBpZiAodHlwZSA9PT0gR3JvdXBGcmFnbWVudC5keW5hbWljR3JvdXBUeXBlKSB7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVEeW5hbWljR3JvdXBOb2RlKGNvbmZpZyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNyZWF0ZUFzc2V0Tm9kZShjb25maWcpO1xuICB9XG5cbiAgZ2V0Um9vdE5vZGVzKGN1c3RvbUZpbHRlcj86IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgZGVmYXVsdEZpbHRlciA9IHtcbiAgICAgIHBhZ2VTaXplOiB0aGlzLlBBR0VfU0laRSxcbiAgICAgIHdpdGhDaGlsZHJlbjogZmFsc2UsXG4gICAgICBvbmx5Um9vdHM6ICF0aGlzLm9wdGlvbnNTZXJ2aWNlLmRpc2FibGVPbmx5Um9vdHNRdWVyeSxcbiAgICAgIHF1ZXJ5OiB0aGlzLnF1ZXJpZXNVdGlsLmJ1aWxkUXVlcnkodGhpcy5uYXZSb290UXVlcnlGaWx0ZXIoKSlcbiAgICB9O1xuICAgIGNvbnN0IGdyb3VwRmlsdGVyID0geyAuLi5kZWZhdWx0RmlsdGVyLCAuLi5jdXN0b21GaWx0ZXIgfTtcblxuICAgIC8vIGR1ZSB0byBCRSBwZXJmb3JtYW5jZSBsaW1pdGF0aW9ucyB3ZSBkbyBub3QgYWxsb3cgZmlsdGVyaW5nIGFuZCBzb3J0aW5nIGZvciBhIHVzZXIgd2l0aG91dCBpbnZlbnRvcnkgcm9sZXNcbiAgICBpZiAoIXRoaXMudXNlci5oYXNSb2xlKHRoaXMuYXBwU3RhdGUuY3VycmVudFVzZXIudmFsdWUsICdST0xFX0lOVkVOVE9SWV9SRUFEJykpIHtcbiAgICAgIGRlbGV0ZSBncm91cEZpbHRlci5xdWVyeTtcbiAgICAgIE9iamVjdC5hc3NpZ24oZ3JvdXBGaWx0ZXIsIHtcbiAgICAgICAgZnJhZ21lbnRUeXBlOiBHcm91cEZyYWdtZW50Lmdyb3VwRnJhZ21lbnRUeXBlLFxuICAgICAgICBvbmx5Um9vdHM6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pbnZlbnRvcnkubGlzdCh0aGlzLmNyZWF0ZUZpbHRlcihncm91cEZpbHRlcikpO1xuICB9XG5cbiAgZ2V0QWxsSW52ZW50b3JpZXMoY3VzdG9tRmlsdGVyPzogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBkZWZhdWx0RmlsdGVyID0ge1xuICAgICAgcGFnZVNpemU6IHRoaXMuUEFHRV9TSVpFLFxuICAgICAgd2l0aENoaWxkcmVuOiBmYWxzZVxuICAgIH07XG4gICAgY29uc3QgZ3JvdXBGaWx0ZXIgPSB7IC4uLmRlZmF1bHRGaWx0ZXIsIC4uLmN1c3RvbUZpbHRlciB9O1xuICAgIHJldHVybiB0aGlzLmludmVudG9yeS5saXN0KHRoaXMuY3JlYXRlRmlsdGVyKGdyb3VwRmlsdGVyKSk7XG4gIH1cblxuICBnZXRHcm91cEl0ZW1zKG1vSWQ6IHN0cmluZywgZXh0cmFGaWx0ZXI6IG9iamVjdCA9IHt9LCB3aXRoQ2hpbGRyZW4gPSBmYWxzZSwgZmlsdGVyUXVlcnkgPSAnJykge1xuICAgIGNvbnN0IHF1ZXJ5RmlsdGVyID0ge1xuICAgICAgd2l0aENoaWxkcmVuLFxuICAgICAgcGFnZVNpemU6IHRoaXMuUEFHRV9TSVpFLFxuICAgICAgcXVlcnk6IHRoaXMuZ3JvdXBRdWVyeUZpbHRlcihtb0lkLCBmaWx0ZXJRdWVyeSlcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmludmVudG9yeS5jaGlsZEFzc2V0c0xpc3QobW9JZCwgeyAuLi5xdWVyeUZpbHRlciwgLi4uZXh0cmFGaWx0ZXIgfSk7XG4gIH1cblxuICBnZXRVbmFzc2lnbmVkRGV2aWNlcyh3aXRoQ2hpbGRyZW4gPSBmYWxzZSwgZmlsdGVyUXVlcnkgPSAnJykge1xuICAgIGNvbnN0IHF1ZXJ5RmlsdGVyOiBhbnkgPSB7XG4gICAgICBmcmFnbWVudFR5cGU6ICdjOHlfSXNEZXZpY2UnLFxuICAgICAgb25seVJvb3RzOiB0cnVlLFxuICAgICAgd2l0aENoaWxkcmVuLFxuICAgICAgcGFnZVNpemU6IHRoaXMuUEFHRV9TSVpFLFxuICAgICAgcTogdGhpcy5nZXRVbmFzc2lnbmVkRGV2aWNlc1F1ZXJ5U3RyKGZpbHRlclF1ZXJ5KVxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuaW52ZW50b3J5Lmxpc3QodGhpcy5jcmVhdGVGaWx0ZXIocXVlcnlGaWx0ZXIpKTtcbiAgfVxuXG4gIGdldER5bmFtaWNHcm91cEl0ZW1zKGdyb3VwUXVlcnk6IHN0cmluZywgZmlsdGVyT2JqOiBhbnkgPSB7fSkge1xuICAgIGNvbnN0IHsgcXVlcnksIC4uLnF1ZXJ5UGFyYW1zIH0gPSBmaWx0ZXJPYmo7XG4gICAgY29uc3Qgb3JkZXJCeVF1ZXJ5ID0gcXVlcnk7XG4gICAgY29uc3QgcXVlcnlGaWx0ZXIgPSB7XG4gICAgICBxOiB0aGlzLmJ1aWxkQ29tYmluZWRRdWVyeShncm91cFF1ZXJ5LCBvcmRlckJ5UXVlcnkpLFxuICAgICAgLi4ucXVlcnlQYXJhbXNcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmludmVudG9yeS5saXN0KHRoaXMuY3JlYXRlRmlsdGVyKHF1ZXJ5RmlsdGVyKSk7XG4gIH1cblxuICBnZXREZXZpY2VDaGlsZHJlbihcbiAgICBtb0lkOiBzdHJpbmcsXG4gICAgZXh0cmFGaWx0ZXI6IG9iamVjdCA9IHt9LFxuICAgIGZpbHRlclF1ZXJ5ID0gJycsXG4gICAgd2l0aENoaWxkcmVuID0gZmFsc2VcbiAgKSB7XG4gICAgY29uc3QgcXVlcnlGaWx0ZXIgPSB7XG4gICAgICB3aXRoQ2hpbGRyZW4sXG4gICAgICBwYWdlU2l6ZTogdGhpcy5QQUdFX1NJWkUsXG4gICAgICBxdWVyeTogdGhpcy5ncm91cFF1ZXJ5RmlsdGVyKG1vSWQsIGZpbHRlclF1ZXJ5KVxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuaW52ZW50b3J5LmNoaWxkRGV2aWNlc0xpc3QobW9JZCwgeyAuLi5xdWVyeUZpbHRlciwgLi4uZXh0cmFGaWx0ZXIgfSk7XG4gIH1cblxuICBnZXRVbmFzc2lnbmVkRGV2aWNlc1F1ZXJ5U3RyKGZpbHRlclF1ZXJ5KTogc3RyaW5nIHtcbiAgICBjb25zdCBoYXNHcm91cElkID0gZmlsdGVyUXVlcnkuaW5jbHVkZXMoJ2J5Z3JvdXBpZCcpO1xuICAgIC8vIEZldGNoIGFsbCB1bmFzc2lnbmVkIGRldmljZXMuXG4gICAgY29uc3QgZGVmYXVsdFF1ZXJ5U3RyID0gJyRvcmRlcmJ5PW5hbWUnO1xuXG4gICAgLy8gZmlsdGVyUXVlcnkgaXMgYSBjdXN0b20gcXVlcnkgdG8gZmV0Y2ggdW5hc3NpZ25lZCBkZXZpY2VzIGZpbHRlcmVkIGJ5IG5hbWUuXG4gICAgcmV0dXJuIGhhc0dyb3VwSWQgfHwgIWZpbHRlclF1ZXJ5ID8gZGVmYXVsdFF1ZXJ5U3RyIDogZmlsdGVyUXVlcnk7XG4gIH1cblxuICBncm91cFF1ZXJ5RmlsdGVyKG1vSWQ6IHN0cmluZywgZmlsdGVyUXVlcnk/OiBzdHJpbmcpIHtcbiAgICBpZiAoIWZpbHRlclF1ZXJ5KSB7XG4gICAgICByZXR1cm4gYCRmaWx0ZXI9KGJ5Z3JvdXBpZCgke21vSWR9KSkkb3JkZXJieT1uYW1lYDtcbiAgICB9XG4gICAgcmV0dXJuIGZpbHRlclF1ZXJ5O1xuICB9XG5cbiAgbmF2Um9vdFF1ZXJ5RmlsdGVyKCkge1xuICAgIGNvbnN0IG5hdlJvb3RGaWx0ZXIgPSB0aGlzLnJvb3RRdWVyeUZpbHRlcigpO1xuICAgIG5hdlJvb3RGaWx0ZXIuX19vcmRlcmJ5ID0gW3sgbmFtZTogMSB9XTtcbiAgICByZXR1cm4gbmF2Um9vdEZpbHRlcjtcbiAgfVxuXG4gIHJvb3RRdWVyeUZpbHRlcigpIHtcbiAgICBjb25zdCB7IG1vZHVsZUNvbmZpZyB9ID0gdGhpcztcbiAgICBjb25zdCByb290RmlsdGVyID0gdGhpcy5vcHRpb25zU2VydmljZS5kaXNhYmxlT25seVJvb3RzUXVlcnlcbiAgICAgID8ge1xuICAgICAgICAgIF9fZmlsdGVyOiB7XG4gICAgICAgICAgICB0eXBlOiBHcm91cEZyYWdtZW50Lmdyb3VwVHlwZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgX19vcmRlcmJ5OiBbXVxuICAgICAgICB9XG4gICAgICA6IHtcbiAgICAgICAgICBfX2ZpbHRlcjoge1xuICAgICAgICAgICAgX19oYXM6IEdyb3VwRnJhZ21lbnQuZ3JvdXBGcmFnbWVudFR5cGVcbiAgICAgICAgICB9LFxuICAgICAgICAgIF9fb3JkZXJieTogW11cbiAgICAgICAgfTtcbiAgICBpZiAobW9kdWxlQ29uZmlnLnNtYXJ0R3JvdXBzKSB7XG4gICAgICBjb25zdCBxdWVyeUZpbHRlciA9IHtcbiAgICAgICAgX19maWx0ZXI6IHtcbiAgICAgICAgICBfX2FuZDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiBHcm91cEZyYWdtZW50LmR5bmFtaWNHcm91cFR5cGVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIF9faGFzOiBHcm91cEZyYWdtZW50LmR5bmFtaWNHcm91cEZyYWdtZW50XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyBfX25vdDogeyBfX2hhczogYCR7R3JvdXBGcmFnbWVudC5keW5hbWljR3JvdXBGcmFnbWVudH0uaW52aXNpYmxlYCB9IH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICB0aGlzLnF1ZXJpZXNVdGlsLmFkZE9yRmlsdGVyKHJvb3RGaWx0ZXIsIHF1ZXJ5RmlsdGVyKTtcbiAgICB9XG4gICAgcmV0dXJuIHJvb3RGaWx0ZXI7XG4gIH1cblxuICBvblVwZGF0ZSh7IG1vLCByb290IH0pIHtcbiAgICBpZiAobW8uaWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgICAgLmhvb2tSZXNwb25zZShcbiAgICAgICAgICAoeyB1cmwsIG1ldGhvZCB9KSA9PlxuICAgICAgICAgICAgWydQVVQnLCAnREVMRVRFJywgJ1BPU1QnXS5pbmNsdWRlcyhtZXRob2QpICYmXG4gICAgICAgICAgICBSZWdFeHAoYCgoaW52ZW50b3J5L21hbmFnZWRPYmplY3RzKXwoc2VydmljZS9zbWFydGdyb3VwL3NtYXJ0Z3JvdXBzKSkvJHttby5pZH1gKS50ZXN0KFxuICAgICAgICAgICAgICB1cmxcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoKCkgPT4gIXRoaXMuZHJhZ2dlZERhdGEpLFxuICAgICAgICAgIG1lcmdlTWFwKHRoaXMuYXBpU2VydmljZS5yZXNvbHZlRGF0YTxJTWFuYWdlZE9iamVjdD4pLFxuICAgICAgICAgIGZpbHRlcihyZXNwb25zZSA9PiAhcmVzcG9uc2U/LmRhdGE/LmM4eV9EYXNoYm9hcmQpXG4gICAgICAgICk7XG4gICAgfSBlbHNlIGlmIChyb290KSB7XG4gICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAgIC5ob29rUmVzcG9uc2UoXG4gICAgICAgICAgKHsgdXJsLCBtZXRob2QgfSkgPT5cbiAgICAgICAgICAgIFJlZ0V4cCgnKChpbnZlbnRvcnkvbWFuYWdlZE9iamVjdHMpfChzZXJ2aWNlL3NtYXJ0Z3JvdXAvc21hcnRncm91cHMpKS8/JCcpLnRlc3QodXJsKSAmJlxuICAgICAgICAgICAgbWV0aG9kID09PSAnUE9TVCdcbiAgICAgICAgKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtZXJnZU1hcCh0aGlzLmFwaVNlcnZpY2UucmVzb2x2ZURhdGE8SU1hbmFnZWRPYmplY3Q+KSxcbiAgICAgICAgICBmaWx0ZXIocmVzcG9uc2UgPT4gdGhpcy5pc05ld01hbmFnZWRPYmplY3RSb290KHJlc3BvbnNlKSlcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGVtcHR5KCk7XG4gICAgfVxuICB9XG5cbiAgaXNOZXdNYW5hZ2VkT2JqZWN0Um9vdChyZXNwb25zZTogUGFydGlhbDxJUmVzdWx0PElNYW5hZ2VkT2JqZWN0Pj4gPSB7fSkge1xuICAgIGNvbnN0IHsgZGF0YSB9ID0gcmVzcG9uc2U7XG4gICAgbGV0IGlzUm9vdEFzc2V0ID0gZmFsc2U7XG5cbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdvYmplY3QnKSB7XG4gICAgICBpc1Jvb3RBc3NldCA9ICEhZGF0YVtHcm91cEZyYWdtZW50Lmdyb3VwRnJhZ21lbnRUeXBlXTtcbiAgICAgIGlmICghaXNSb290QXNzZXQgJiYgdGhpcy5tb2R1bGVDb25maWcuc21hcnRHcm91cHMpIHtcbiAgICAgICAgaXNSb290QXNzZXQgPSAhIWRhdGFbR3JvdXBGcmFnbWVudC5keW5hbWljR3JvdXBGcmFnbWVudF07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpc1Jvb3RBc3NldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBpdCBpcyBwb3NzaWJsZSB0byBkcm9wIGEgbm9kZSBhZnRlciBkcmFnZ2luZy5cbiAgICogQHBhcmFtIGRyb3BPblJvb3QgSXMgdGhlIGRyb3AgcGVyZm9ybWVkIG9uIHRoZSByb290IG5vZGVcbiAgICovXG4gIGNhbkRyb3BOb2RlKGRyb3BPblJvb3Q6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgIWRyb3BPblJvb3QgfHwgdGhpcy51c2VyLmhhc1JvbGUodGhpcy5hcHBTdGF0ZS5jdXJyZW50VXNlci52YWx1ZSwgJ1JPTEVfSU5WRU5UT1JZX0FETUlOJylcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZXJlIGNvdWxkIGJlIG11bHRpcGxlIGJyZWFkY3J1bWJzIGZvciBkZXZpY2VzLFxuICAgKiBzbyB3ZSBzZXQgYSBwcmVmZXJyZWQgb25lIG9uIGNsaWNrIG9uIGEgZGV2aWNlLlxuICAgKiBAcGFyYW0gcGFyZW50cyBUaGUgcGFyZW50IG5vZGVzIG9mIHRoZSBkZXZpY2UgdG8gc2VsZWN0IHRoZSBwcmVmZXJlZCBvbmUuXG4gICAqL1xuICBwcmVmZXJCcmVhZGNydW1iKHBhcmVudHM6IE5hdmlnYXRvck5vZGVbXSkge1xuICAgIGlmIChwYXJlbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGhpcy5icmVhZGNydW1iU2VydmljZS5zZWxlY3RQcmVmZXJyZWRCeVBhdGgocGFyZW50c1swXS5wYXRoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlRmlsdGVyKGV4dHJhUGFyYW1zOiBhbnkgPSB7fSkge1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGN1cnJlbnRQYWdlOiAxLFxuICAgICAgd2l0aFRvdGFsUGFnZXM6IHRydWUsXG4gICAgICBwYWdlU2l6ZTogMTBcbiAgICB9O1xuICAgIHJldHVybiB7IC4uLnBhcmFtcywgLi4uZXh0cmFQYXJhbXMgfTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRDb21iaW5lZFF1ZXJ5KHF1ZXJ5QSwgcXVlcnlCKSB7XG4gICAgbGV0IGNvbWJpbmVkUXVlcnk7XG4gICAgaWYgKHF1ZXJ5QSAmJiBxdWVyeUIpIHtcbiAgICAgIGNvbnN0IGZpbHRlclF1ZXJ5ID0gdGhpcy5xdWVyaWVzVXRpbC5idWlsZFF1ZXJ5KFtcbiAgICAgICAge1xuICAgICAgICAgIF9fdXNlRmlsdGVyUXVlcnlTdHJpbmc6IHF1ZXJ5QVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgX191c2VGaWx0ZXJRdWVyeVN0cmluZzogcXVlcnlCXG4gICAgICAgIH1cbiAgICAgIF0pO1xuICAgICAgY29uc3Qgb3JiZXJCeVF1ZXJ5ID0gdGhpcy5xdWVyaWVzVXRpbC5leHRyYWN0QW5kTWVyZ2VPcmRlckJ5cyhbcXVlcnlBLCBxdWVyeUJdKTtcbiAgICAgIGNvbWJpbmVkUXVlcnkgPSBgJHtmaWx0ZXJRdWVyeX0gJHtvcmJlckJ5UXVlcnl9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29tYmluZWRRdWVyeSA9IHF1ZXJ5QSB8fCBxdWVyeUIgfHwgJyc7XG4gICAgfVxuICAgIHJldHVybiBjb21iaW5lZFF1ZXJ5O1xuICB9XG59XG4iXX0=
|
|
281
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtbm9kZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYXNzZXRzLW5hdmlnYXRvci9hc3NldC1ub2RlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBa0IsZ0JBQWdCLEVBQVcsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRyxPQUFPLEVBQ0wsWUFBWSxFQUNaLGVBQWUsRUFDZixpQkFBaUIsRUFDakIsYUFBYSxFQUNiLFlBQVksRUFHWixjQUFjLEVBQ2YsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUF3QixzQkFBc0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7QUFVckQsTUFBTSxPQUFPLGdCQUFnQjtJQU8zQixZQUNTLFNBQTJCLEVBQzNCLFVBQXNCLEVBQ3RCLEtBQW1CLEVBQ25CLEtBQW1CLEVBQ2hCLGlCQUFvQyxFQUNwQyxJQUFpQixFQUNqQixRQUF5QixFQUN6QixjQUE4QixFQUNXLFlBQWtDLEVBQzNFLGtCQUFzQztRQVR6QyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFVBQUssR0FB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QU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ2hGLGFBQWEsR0FBRyxHQUFHLFdBQVcsSUFBSSxZQUFZLEVBQUUsQ0FBQztTQUNsRDthQUFNO1lBQ0wsYUFBYSxHQUFHLE1BQU0sSUFBSSxNQUFNLElBQUksRUFBRSxDQUFDO1NBQ3hDO1FBQ0QsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQzs7NkdBalRVLGdCQUFnQiw2UEFnQkwsc0JBQXNCO2lIQWhCakMsZ0JBQWdCLGNBRmYsTUFBTTsyRkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFpQkksUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCwgSW52ZW50b3J5U2VydmljZSwgSVJlc3VsdCwgUXVlcmllc1V0aWwsIFVzZXJTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQWxlcnRTZXJ2aWNlLFxuICBBcHBTdGF0ZVNlcnZpY2UsXG4gIEJyZWFkY3J1bWJTZXJ2aWNlLFxuICBHcm91cEZyYWdtZW50LFxuICBNb2RhbFNlcnZpY2UsXG4gIE5hdmlnYXRvck5vZGUsXG4gIE5hdmlnYXRvck5vZGVEYXRhLFxuICBPcHRpb25zU2VydmljZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2FwaSc7XG5pbXBvcnQgeyBlbXB0eSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtZXJnZU1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFzc2V0Tm9kZSB9IGZyb20gJy4vYXNzZXQtbm9kZSc7XG5pbXBvcnQgeyBBc3NldE5hdmlnYXRvckNvbmZpZywgQVNTRVRfTkFWSUdBVE9SX0NPTkZJRyB9IGZyb20gJy4vYXNzZXQtbm9kZS1jb25maWcubW9kZWwnO1xuaW1wb3J0IHsgRHluYW1pY0dyb3VwTm9kZSB9IGZyb20gJy4vZHluYW1pYy1ncm91cC1ub2RlJztcbmltcG9ydCB7IERldmljZUdyb3VwU2VydmljZSB9IGZyb20gJy4vZ3JvdXAuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXNzZXROb2RlTW8ge1xuICBpZDogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFzc2V0Tm9kZVNlcnZpY2Uge1xuICByb290Tm9kZTogQXNzZXROb2RlO1xuICBmaXJzdFVybCA9IHRydWU7XG4gIGRyYWdnZWREYXRhOiBBc3NldE5vZGU7XG4gIHF1ZXJpZXNVdGlsOiBRdWVyaWVzVXRpbDtcbiAgcHJvdGVjdGVkIFBBR0VfU0laRSA9IDIwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBpbnZlbnRvcnk6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHVibGljIGFwaVNlcnZpY2U6IEFwaVNlcnZpY2UsXG4gICAgcHVibGljIG1vZGFsOiBNb2RhbFNlcnZpY2UsXG4gICAgcHVibGljIGFsZXJ0OiBBbGVydFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGJyZWFkY3J1bWJTZXJ2aWNlOiBCcmVhZGNydW1iU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgdXNlcjogVXNlclNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGFwcFN0YXRlOiBBcHBTdGF0ZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG9wdGlvbnNTZXJ2aWNlOiBPcHRpb25zU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFTU0VUX05BVklHQVRPUl9DT05GSUcpIHB1YmxpYyBtb2R1bGVDb25maWc6IEFzc2V0TmF2aWdhdG9yQ29uZmlnLFxuICAgIHByb3RlY3RlZCBkZXZpY2VHcm91cFNlcnZpY2U6IERldmljZUdyb3VwU2VydmljZVxuICApIHtcbiAgICB0aGlzLm1vZHVsZUNvbmZpZyA9IHtcbiAgICAgIHJvb3ROb2RlUHJpb3JpdHk6IDIwMDAsXG4gICAgICAuLi4obW9kdWxlQ29uZmlnIHx8IHt9KVxuICAgIH07XG4gICAgdGhpcy5xdWVyaWVzVXRpbCA9IG5ldyBRdWVyaWVzVXRpbCgpO1xuICB9XG5cbiAgaWNvbihtbzogSU1hbmFnZWRPYmplY3QsIG9wZW4/OiBib29sZWFuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5kZXZpY2VHcm91cFNlcnZpY2UuaWNvbihtbywgb3Blbik7XG4gIH1cblxuICBpc0dyb3VwKG1vOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHJldHVybiB0aGlzLmRldmljZUdyb3VwU2VydmljZS5pc0dyb3VwKG1vKTtcbiAgfVxuXG4gIGlzRHluYW1pY0dyb3VwKG1vOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHJldHVybiB0aGlzLmRldmljZUdyb3VwU2VydmljZS5pc0R5bmFtaWNHcm91cChtbyk7XG4gIH1cblxuICBpc0RhdGFCcm9rZXIobW86IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgcmV0dXJuIHRoaXMuZGV2aWNlR3JvdXBTZXJ2aWNlLmlzRGF0YUJyb2tlcihtbyk7XG4gIH1cblxuICBpc0RhdGFCcm9rZXJBY3RpdmUobW86IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgcmV0dXJuIHRoaXMuZGV2aWNlR3JvdXBTZXJ2aWNlLmlzRGF0YUJyb2tlckFjdGl2ZShtbyk7XG4gIH1cblxuICBpc0Fzc2V0KG1vOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHJldHVybiB0aGlzLmRldmljZUdyb3VwU2VydmljZS5pc0Fzc2V0KG1vKTtcbiAgfVxuXG4gIGlzQW55R3JvdXAobW86IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgcmV0dXJuIHRoaXMuZGV2aWNlR3JvdXBTZXJ2aWNlLmlzQW55R3JvdXAobW8pO1xuICB9XG5cbiAgaXNEZXZpY2UobW86IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgcmV0dXJuIHRoaXMuZGV2aWNlR3JvdXBTZXJ2aWNlLmlzRGV2aWNlKG1vKTtcbiAgfVxuXG4gIGNyZWF0ZVJvb3ROb2RlKGNvbmZpZzogTmF2aWdhdG9yTm9kZURhdGEgPSB7fSkge1xuICAgIHRoaXMucm9vdE5vZGUgPSB0aGlzLmNyZWF0ZUFzc2V0Tm9kZSh7XG4gICAgICByb290OiB0cnVlLFxuICAgICAgLi4uY29uZmlnLFxuICAgICAgcHJpb3JpdHk6IHRoaXMubW9kdWxlQ29uZmlnLnJvb3ROb2RlUHJpb3JpdHksXG4gICAgICBmZWF0dXJlSWQ6ICdncm91cHMnXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMucm9vdE5vZGU7XG4gIH1cblxuICBjcmVhdGVEeW5hbWljR3JvdXBOb2RlKGNvbmZpZykge1xuICAgIHJldHVybiBuZXcgRHluYW1pY0dyb3VwTm9kZSh0aGlzLCBjb25maWcpO1xuICB9XG5cbiAgY3JlYXRlQXNzZXROb2RlKGNvbmZpZzogUGFydGlhbDxBc3NldE5vZGU+KSB7XG4gICAgcmV0dXJuIG5ldyBBc3NldE5vZGUodGhpcywgY29uZmlnKTtcbiAgfVxuXG4gIGNyZWF0ZUNoaWxkTm9kZShtYW5hZ2VkT2JqZWN0LCBjb25maWc6IFBhcnRpYWw8QXNzZXROb2RlPikge1xuICAgIGNvbnN0IHsgdHlwZSB9ID0gbWFuYWdlZE9iamVjdDtcbiAgICBjb25maWcubW8gPSBtYW5hZ2VkT2JqZWN0O1xuICAgIGlmICh0eXBlID09PSBHcm91cEZyYWdtZW50LmR5bmFtaWNHcm91cFR5cGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUR5bmFtaWNHcm91cE5vZGUoY29uZmlnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlQXNzZXROb2RlKGNvbmZpZyk7XG4gIH1cblxuICBnZXRSb290Tm9kZXMoY3VzdG9tRmlsdGVyPzogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBkZWZhdWx0RmlsdGVyID0ge1xuICAgICAgcGFnZVNpemU6IHRoaXMuUEFHRV9TSVpFLFxuICAgICAgd2l0aENoaWxkcmVuOiBmYWxzZSxcbiAgICAgIG9ubHlSb290czogIXRoaXMub3B0aW9uc1NlcnZpY2UuZGlzYWJsZU9ubHlSb290c1F1ZXJ5LFxuICAgICAgcXVlcnk6IHRoaXMucXVlcmllc1V0aWwuYnVpbGRRdWVyeSh0aGlzLm5hdlJvb3RRdWVyeUZpbHRlcigpKVxuICAgIH07XG4gICAgY29uc3QgZ3JvdXBGaWx0ZXIgPSB7IC4uLmRlZmF1bHRGaWx0ZXIsIC4uLmN1c3RvbUZpbHRlciB9O1xuXG4gICAgLy8gZHVlIHRvIEJFIHBlcmZvcm1hbmNlIGxpbWl0YXRpb25zIHdlIGRvIG5vdCBhbGxvdyBmaWx0ZXJpbmcgYW5kIHNvcnRpbmcgZm9yIGEgdXNlciB3aXRob3V0IGludmVudG9yeSByb2xlc1xuICAgIGlmICghdGhpcy51c2VyLmhhc1JvbGUodGhpcy5hcHBTdGF0ZS5jdXJyZW50VXNlci52YWx1ZSwgJ1JPTEVfSU5WRU5UT1JZX1JFQUQnKSkge1xuICAgICAgZGVsZXRlIGdyb3VwRmlsdGVyLnF1ZXJ5O1xuICAgICAgT2JqZWN0LmFzc2lnbihncm91cEZpbHRlciwge1xuICAgICAgICBmcmFnbWVudFR5cGU6IEdyb3VwRnJhZ21lbnQuZ3JvdXBGcmFnbWVudFR5cGUsXG4gICAgICAgIG9ubHlSb290czogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmludmVudG9yeS5saXN0KHRoaXMuY3JlYXRlRmlsdGVyKGdyb3VwRmlsdGVyKSk7XG4gIH1cblxuICBnZXRBbGxJbnZlbnRvcmllcyhjdXN0b21GaWx0ZXI/OiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IGRlZmF1bHRGaWx0ZXIgPSB7XG4gICAgICBwYWdlU2l6ZTogdGhpcy5QQUdFX1NJWkUsXG4gICAgICB3aXRoQ2hpbGRyZW46IGZhbHNlXG4gICAgfTtcbiAgICBjb25zdCBncm91cEZpbHRlciA9IHsgLi4uZGVmYXVsdEZpbHRlciwgLi4uY3VzdG9tRmlsdGVyIH07XG4gICAgcmV0dXJuIHRoaXMuaW52ZW50b3J5Lmxpc3QodGhpcy5jcmVhdGVGaWx0ZXIoZ3JvdXBGaWx0ZXIpKTtcbiAgfVxuXG4gIGdldEdyb3VwSXRlbXMobW9JZDogc3RyaW5nLCBleHRyYUZpbHRlcjogb2JqZWN0ID0ge30sIHdpdGhDaGlsZHJlbiA9IGZhbHNlLCBmaWx0ZXJRdWVyeSA9ICcnKSB7XG4gICAgY29uc3QgcXVlcnlGaWx0ZXIgPSB7XG4gICAgICB3aXRoQ2hpbGRyZW4sXG4gICAgICBwYWdlU2l6ZTogdGhpcy5QQUdFX1NJWkUsXG4gICAgICBxdWVyeTogdGhpcy5ncm91cFF1ZXJ5RmlsdGVyKG1vSWQsIGZpbHRlclF1ZXJ5KVxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuaW52ZW50b3J5LmNoaWxkQXNzZXRzTGlzdChtb0lkLCB7IC4uLnF1ZXJ5RmlsdGVyLCAuLi5leHRyYUZpbHRlciB9KTtcbiAgfVxuXG4gIGdldFVuYXNzaWduZWREZXZpY2VzKHdpdGhDaGlsZHJlbiA9IGZhbHNlLCBmaWx0ZXJRdWVyeSA9ICcnKSB7XG4gICAgY29uc3QgcXVlcnlGaWx0ZXI6IGFueSA9IHtcbiAgICAgIGZyYWdtZW50VHlwZTogJ2M4eV9Jc0RldmljZScsXG4gICAgICBvbmx5Um9vdHM6IHRydWUsXG4gICAgICB3aXRoQ2hpbGRyZW4sXG4gICAgICBwYWdlU2l6ZTogdGhpcy5QQUdFX1NJWkUsXG4gICAgICBxOiB0aGlzLmdldFVuYXNzaWduZWREZXZpY2VzUXVlcnlTdHIoZmlsdGVyUXVlcnkpXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5pbnZlbnRvcnkubGlzdCh0aGlzLmNyZWF0ZUZpbHRlcihxdWVyeUZpbHRlcikpO1xuICB9XG5cbiAgZ2V0RHluYW1pY0dyb3VwSXRlbXMoZ3JvdXBRdWVyeTogc3RyaW5nLCBmaWx0ZXJPYmo6IGFueSA9IHt9KSB7XG4gICAgY29uc3QgeyBxdWVyeSwgLi4ucXVlcnlQYXJhbXMgfSA9IGZpbHRlck9iajtcbiAgICBjb25zdCBvcmRlckJ5UXVlcnkgPSBxdWVyeTtcbiAgICBjb25zdCBxdWVyeUZpbHRlciA9IHtcbiAgICAgIHE6IHRoaXMuYnVpbGRDb21iaW5lZFF1ZXJ5KGdyb3VwUXVlcnksIG9yZGVyQnlRdWVyeSksXG4gICAgICAuLi5xdWVyeVBhcmFtc1xuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuaW52ZW50b3J5Lmxpc3QodGhpcy5jcmVhdGVGaWx0ZXIocXVlcnlGaWx0ZXIpKTtcbiAgfVxuXG4gIGdldERldmljZUNoaWxkcmVuKFxuICAgIG1vSWQ6IHN0cmluZyxcbiAgICBleHRyYUZpbHRlcjogb2JqZWN0ID0ge30sXG4gICAgZmlsdGVyUXVlcnkgPSAnJyxcbiAgICB3aXRoQ2hpbGRyZW4gPSBmYWxzZVxuICApIHtcbiAgICBjb25zdCBxdWVyeUZpbHRlciA9IHtcbiAgICAgIHdpdGhDaGlsZHJlbixcbiAgICAgIHBhZ2VTaXplOiB0aGlzLlBBR0VfU0laRSxcbiAgICAgIHF1ZXJ5OiB0aGlzLmdyb3VwUXVlcnlGaWx0ZXIobW9JZCwgZmlsdGVyUXVlcnkpXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5pbnZlbnRvcnkuY2hpbGREZXZpY2VzTGlzdChtb0lkLCB7IC4uLnF1ZXJ5RmlsdGVyLCAuLi5leHRyYUZpbHRlciB9KTtcbiAgfVxuXG4gIGdldFVuYXNzaWduZWREZXZpY2VzUXVlcnlTdHIoZmlsdGVyUXVlcnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IGhhc0dyb3VwSWQgPSBmaWx0ZXJRdWVyeS5pbmNsdWRlcygnYnlncm91cGlkJyk7XG4gICAgLy8gRmV0Y2ggYWxsIHVuYXNzaWduZWQgZGV2aWNlcy5cbiAgICBjb25zdCBkZWZhdWx0UXVlcnlTdHIgPSAnJG9yZGVyYnk9bmFtZSc7XG5cbiAgICAvLyBmaWx0ZXJRdWVyeSBpcyBhIGN1c3RvbSBxdWVyeSB0byBmZXRjaCB1bmFzc2lnbmVkIGRldmljZXMgZmlsdGVyZWQgYnkgbmFtZS5cbiAgICByZXR1cm4gaGFzR3JvdXBJZCB8fCAhZmlsdGVyUXVlcnkgPyBkZWZhdWx0UXVlcnlTdHIgOiBmaWx0ZXJRdWVyeTtcbiAgfVxuXG4gIGdyb3VwUXVlcnlGaWx0ZXIobW9JZDogc3RyaW5nLCBmaWx0ZXJRdWVyeT86IHN0cmluZykge1xuICAgIGlmICghZmlsdGVyUXVlcnkpIHtcbiAgICAgIHJldHVybiBgJGZpbHRlcj0oYnlncm91cGlkKCR7bW9JZH0pKSRvcmRlcmJ5PW5hbWVgO1xuICAgIH1cbiAgICByZXR1cm4gZmlsdGVyUXVlcnk7XG4gIH1cblxuICBuYXZSb290UXVlcnlGaWx0ZXIoKSB7XG4gICAgY29uc3QgbmF2Um9vdEZpbHRlciA9IHRoaXMucm9vdFF1ZXJ5RmlsdGVyKCk7XG4gICAgbmF2Um9vdEZpbHRlci5fX29yZGVyYnkgPSBbeyBuYW1lOiAxIH1dO1xuICAgIHJldHVybiBuYXZSb290RmlsdGVyO1xuICB9XG5cbiAgcm9vdFF1ZXJ5RmlsdGVyKCkge1xuICAgIGNvbnN0IHsgbW9kdWxlQ29uZmlnIH0gPSB0aGlzO1xuICAgIGNvbnN0IHJvb3RGaWx0ZXIgPSB0aGlzLm9wdGlvbnNTZXJ2aWNlLmRpc2FibGVPbmx5Um9vdHNRdWVyeVxuICAgICAgPyB7XG4gICAgICAgICAgX19maWx0ZXI6IHtcbiAgICAgICAgICAgIHR5cGU6IEdyb3VwRnJhZ21lbnQuZ3JvdXBUeXBlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBfX29yZGVyYnk6IFtdXG4gICAgICAgIH1cbiAgICAgIDoge1xuICAgICAgICAgIF9fZmlsdGVyOiB7XG4gICAgICAgICAgICBfX2hhczogR3JvdXBGcmFnbWVudC5ncm91cEZyYWdtZW50VHlwZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgX19vcmRlcmJ5OiBbXVxuICAgICAgICB9O1xuICAgIGlmIChtb2R1bGVDb25maWcuc21hcnRHcm91cHMpIHtcbiAgICAgIGNvbnN0IHF1ZXJ5RmlsdGVyID0ge1xuICAgICAgICBfX2ZpbHRlcjoge1xuICAgICAgICAgIF9fYW5kOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6IEdyb3VwRnJhZ21lbnQuZHluYW1pY0dyb3VwVHlwZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgX19oYXM6IEdyb3VwRnJhZ21lbnQuZHluYW1pY0dyb3VwRnJhZ21lbnRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IF9fbm90OiB7IF9faGFzOiBgJHtHcm91cEZyYWdtZW50LmR5bmFtaWNHcm91cEZyYWdtZW50fS5pbnZpc2libGVgIH0gfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHRoaXMucXVlcmllc1V0aWwuYWRkT3JGaWx0ZXIocm9vdEZpbHRlciwgcXVlcnlGaWx0ZXIpO1xuICAgIH1cbiAgICByZXR1cm4gcm9vdEZpbHRlcjtcbiAgfVxuXG4gIG9uVXBkYXRlKHsgbW8sIHJvb3QgfSkge1xuICAgIGlmIChtby5pZCkge1xuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgICAuaG9va1Jlc3BvbnNlKFxuICAgICAgICAgICh7IHVybCwgbWV0aG9kIH0pID0+XG4gICAgICAgICAgICBbJ1BVVCcsICdERUxFVEUnLCAnUE9TVCddLmluY2x1ZGVzKG1ldGhvZCkgJiZcbiAgICAgICAgICAgIFJlZ0V4cChgKChpbnZlbnRvcnkvbWFuYWdlZE9iamVjdHMpfChzZXJ2aWNlL3NtYXJ0Z3JvdXAvc21hcnRncm91cHMpKS8ke21vLmlkfWApLnRlc3QoXG4gICAgICAgICAgICAgIHVybFxuICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbHRlcigoKSA9PiAhdGhpcy5kcmFnZ2VkRGF0YSksXG4gICAgICAgICAgbWVyZ2VNYXAodGhpcy5hcGlTZXJ2aWNlLnJlc29sdmVEYXRhPElNYW5hZ2VkT2JqZWN0PiksXG4gICAgICAgICAgZmlsdGVyKHJlc3BvbnNlID0+ICFyZXNwb25zZT8uZGF0YT8uYzh5X0Rhc2hib2FyZClcbiAgICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHJvb3QpIHtcbiAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgICAgLmhvb2tSZXNwb25zZShcbiAgICAgICAgICAoeyB1cmwsIG1ldGhvZCB9KSA9PlxuICAgICAgICAgICAgUmVnRXhwKCcoKGludmVudG9yeS9tYW5hZ2VkT2JqZWN0cyl8KHNlcnZpY2Uvc21hcnRncm91cC9zbWFydGdyb3VwcykpLz8kJykudGVzdCh1cmwpICYmXG4gICAgICAgICAgICBtZXRob2QgPT09ICdQT1NUJ1xuICAgICAgICApXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1lcmdlTWFwKHRoaXMuYXBpU2VydmljZS5yZXNvbHZlRGF0YTxJTWFuYWdlZE9iamVjdD4pLFxuICAgICAgICAgIGZpbHRlcihyZXNwb25zZSA9PiB0aGlzLmlzTmV3TWFuYWdlZE9iamVjdFJvb3QocmVzcG9uc2UpKVxuICAgICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZW1wdHkoKTtcbiAgICB9XG4gIH1cblxuICBpc05ld01hbmFnZWRPYmplY3RSb290KHJlc3BvbnNlOiBQYXJ0aWFsPElSZXN1bHQ8SU1hbmFnZWRPYmplY3Q+PiA9IHt9KSB7XG4gICAgY29uc3QgeyBkYXRhIH0gPSByZXNwb25zZTtcbiAgICBsZXQgaXNSb290QXNzZXQgPSBmYWxzZTtcblxuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlzUm9vdEFzc2V0ID0gISFkYXRhW0dyb3VwRnJhZ21lbnQuZ3JvdXBGcmFnbWVudFR5cGVdO1xuICAgICAgaWYgKCFpc1Jvb3RBc3NldCAmJiB0aGlzLm1vZHVsZUNvbmZpZy5zbWFydEdyb3Vwcykge1xuICAgICAgICBpc1Jvb3RBc3NldCA9ICEhZGF0YVtHcm91cEZyYWdtZW50LmR5bmFtaWNHcm91cEZyYWdtZW50XTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlzUm9vdEFzc2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGl0IGlzIHBvc3NpYmxlIHRvIGRyb3AgYSBub2RlIGFmdGVyIGRyYWdnaW5nLlxuICAgKiBAcGFyYW0gZHJvcE9uUm9vdCBJcyB0aGUgZHJvcCBwZXJmb3JtZWQgb24gdGhlIHJvb3Qgbm9kZVxuICAgKi9cbiAgY2FuRHJvcE5vZGUoZHJvcE9uUm9vdDogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICAhZHJvcE9uUm9vdCB8fCB0aGlzLnVzZXIuaGFzUm9sZSh0aGlzLmFwcFN0YXRlLmN1cnJlbnRVc2VyLnZhbHVlLCAnUk9MRV9JTlZFTlRPUllfQURNSU4nKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVGhlcmUgY291bGQgYmUgbXVsdGlwbGUgYnJlYWRjcnVtYnMgZm9yIGRldmljZXMsXG4gICAqIHNvIHdlIHNldCBhIHByZWZlcnJlZCBvbmUgb24gY2xpY2sgb24gYSBkZXZpY2UuXG4gICAqIEBwYXJhbSBwYXJlbnRzIFRoZSBwYXJlbnQgbm9kZXMgb2YgdGhlIGRldmljZSB0byBzZWxlY3QgdGhlIHByZWZlcmVkIG9uZS5cbiAgICovXG4gIHByZWZlckJyZWFkY3J1bWIocGFyZW50czogTmF2aWdhdG9yTm9kZVtdKSB7XG4gICAgaWYgKHBhcmVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICB0aGlzLmJyZWFkY3J1bWJTZXJ2aWNlLnNlbGVjdFByZWZlcnJlZEJ5UGF0aChwYXJlbnRzWzBdLnBhdGgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVGaWx0ZXIoZXh0cmFQYXJhbXM6IGFueSA9IHt9KSB7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgY3VycmVudFBhZ2U6IDEsXG4gICAgICB3aXRoVG90YWxQYWdlczogdHJ1ZSxcbiAgICAgIHBhZ2VTaXplOiAxMFxuICAgIH07XG4gICAgcmV0dXJuIHsgLi4ucGFyYW1zLCAuLi5leHRyYVBhcmFtcyB9O1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZENvbWJpbmVkUXVlcnkocXVlcnlBLCBxdWVyeUIpIHtcbiAgICBsZXQgY29tYmluZWRRdWVyeTtcbiAgICBpZiAocXVlcnlBICYmIHF1ZXJ5Qikge1xuICAgICAgY29uc3QgZmlsdGVyUXVlcnkgPSB0aGlzLnF1ZXJpZXNVdGlsLmJ1aWxkUXVlcnkoW1xuICAgICAgICB7XG4gICAgICAgICAgX191c2VGaWx0ZXJRdWVyeVN0cmluZzogcXVlcnlBXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBfX3VzZUZpbHRlclF1ZXJ5U3RyaW5nOiBxdWVyeUJcbiAgICAgICAgfVxuICAgICAgXSk7XG4gICAgICBjb25zdCBvcmJlckJ5UXVlcnkgPSB0aGlzLnF1ZXJpZXNVdGlsLmV4dHJhY3RBbmRNZXJnZU9yZGVyQnlzKFtxdWVyeUEsIHF1ZXJ5Ql0pO1xuICAgICAgY29tYmluZWRRdWVyeSA9IGAke2ZpbHRlclF1ZXJ5fSAke29yYmVyQnlRdWVyeX1gO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb21iaW5lZFF1ZXJ5ID0gcXVlcnlBIHx8IHF1ZXJ5QiB8fCAnJztcbiAgICB9XG4gICAgcmV0dXJuIGNvbWJpbmVkUXVlcnk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -44,4 +44,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
44
44
|
providedIn: 'root'
|
|
45
45
|
}]
|
|
46
46
|
}], ctorParameters: function () { return [{ type: i1.GroupService }]; } });
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2Fzc2V0cy1uYXZpZ2F0b3IvZ3JvdXAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxZQUFZLElBQUksMEJBQTBCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBTWpGOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFlBQW9CLDBCQUFzRDtRQUF0RCwrQkFBMEIsR0FBMUIsMEJBQTBCLENBQTRCO0lBQUcsQ0FBQztJQUU5RSxJQUFJLENBQUMsRUFBa0IsRUFBRSxJQUFJLEdBQUcsS0FBSztRQUNuQyxPQUFPLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxPQUFPLENBQUMsRUFBa0I7UUFDeEIsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxjQUFjLENBQUMsRUFBa0I7UUFDL0IsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxZQUFZLENBQUMsRUFBa0I7UUFDN0IsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxFQUFrQjtRQUNuQyxPQUFPLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsT0FBTyxDQUFDLEVBQWtCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLDBCQUEwQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsVUFBVSxDQUFDLEVBQWtCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLDBCQUEwQixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsUUFBUSxDQUFDLEVBQWtCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLDBCQUEwQixDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0RCxDQUFDOzsrR0FqQ1Usa0JBQWtCO21IQUFsQixrQkFBa0IsY0FSakIsTUFBTTsyRkFRUCxrQkFBa0I7a0JBVDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBHcm91cFNlcnZpY2UgYXMgTWlncmF0ZWREZXZpY2VHcm91cFNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIE9yaWdpbmFsIHNlcnZpY2Ugd2FzIG1vdmVkIHRvIGNvcmUvY29tbW9uLlxuICogVGhpcyBzZXJ2aWNlIGlzIGRlcHJlY2F0ZWQgYW5kIHNlcnZlcyBhcyBhIHByb3h5IHRvIG1haW50YWluIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4gKi9cbmV4cG9ydCBjbGFzcyBEZXZpY2VHcm91cFNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1pZ3JhdGVkRGV2aWNlR3JvdXBTZXJ2aWNlOiBNaWdyYXRlZERldmljZUdyb3VwU2VydmljZSkge31cblxuICBpY29uKG1vOiBJTWFuYWdlZE9iamVjdCwgb3BlbiA9IGZhbHNlKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5taWdyYXRlZERldmljZUdyb3VwU2VydmljZS5nZXRJY29uKG1vLCBvcGVuKTtcbiAgfVxuXG4gIGlzR3JvdXAobW86IElNYW5hZ2VkT2JqZWN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubWlncmF0ZWREZXZpY2VHcm91cFNlcnZpY2UuaXNHcm91cChtbyk7XG4gIH1cblxuICBpc0R5bmFtaWNHcm91cChtbzogSU1hbmFnZWRPYmplY3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5taWdyYXRlZERldmljZUdyb3VwU2VydmljZS5pc0R5bmFtaWNHcm91cChtbyk7XG4gIH1cblxuICBpc0RhdGFCcm9rZXIobW86IElNYW5hZ2VkT2JqZWN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubWlncmF0ZWREZXZpY2VHcm91cFNlcnZpY2UuaXNEYXRhQnJva2VyKG1vKTtcbiAgfVxuXG4gIGlzRGF0YUJyb2tlckFjdGl2ZShtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICByZXR1cm4gdGhpcy5taWdyYXRlZERldmljZUdyb3VwU2VydmljZS5pc0RhdGFCcm9rZXJBY3RpdmUobW8pO1xuICB9XG5cbiAgaXNBc3NldChtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICByZXR1cm4gdGhpcy5taWdyYXRlZERldmljZUdyb3VwU2VydmljZS5pc0Fzc2V0KG1vKTtcbiAgfVxuXG4gIGlzQW55R3JvdXAobW86IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgcmV0dXJuIHRoaXMubWlncmF0ZWREZXZpY2VHcm91cFNlcnZpY2UuaXNBbnlHcm91cChtbyk7XG4gIH1cblxuICBpc0RldmljZShtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICByZXR1cm4gdGhpcy5taWdyYXRlZERldmljZUdyb3VwU2VydmljZS5pc0RldmljZShtbyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -11,7 +11,7 @@ import * as i3 from "../common/ui-state.service";
|
|
|
11
11
|
/**
|
|
12
12
|
* AssetTypesService is being used to manage a cache of all existing asset types.
|
|
13
13
|
* This service is injected in the AssetOverviewNavigationFactory class, which will trigger
|
|
14
|
-
* the initialization of the cache as the
|
|
14
|
+
* the initialization of the cache as the constructor is called.
|
|
15
15
|
*/
|
|
16
16
|
export class AssetTypesService {
|
|
17
17
|
constructor(inventory, apiService, appStateService) {
|
|
@@ -23,9 +23,10 @@ export class AssetTypesService {
|
|
|
23
23
|
__and: [{ __has: 'c8y_IsAssetType' }, { name: 'group' }]
|
|
24
24
|
}
|
|
25
25
|
};
|
|
26
|
-
this.assetTypesCache = {};
|
|
27
26
|
this.DEFAULT_GROUP_ICON = 'c8y-group';
|
|
28
27
|
this.DEFAULT_GROUP_ICON_OPEN = 'c8y-group-open';
|
|
28
|
+
this.assetTypesCache = {};
|
|
29
|
+
this.isCacheSet = false;
|
|
29
30
|
this.allowedMethods = ['POST', 'PUT', 'DELETE'];
|
|
30
31
|
this.appStateService.currentUser
|
|
31
32
|
.pipe(map(user => user?.id), distinctUntilChanged(), switchMap(userId => {
|
|
@@ -42,7 +43,7 @@ export class AssetTypesService {
|
|
|
42
43
|
}
|
|
43
44
|
/**
|
|
44
45
|
* Queries available asset types and adds every asset type to the local cache.
|
|
45
|
-
* @returns
|
|
46
|
+
* @returns IManagedObject table of asset types.
|
|
46
47
|
*/
|
|
47
48
|
async initAssetTypesCache() {
|
|
48
49
|
const { data } = await this.inventory.list({
|
|
@@ -51,7 +52,8 @@ export class AssetTypesService {
|
|
|
51
52
|
pageSize: 2000
|
|
52
53
|
});
|
|
53
54
|
data.forEach(assetType => this.addAssetType(assetType));
|
|
54
|
-
|
|
55
|
+
this.isCacheSet = true;
|
|
56
|
+
return data;
|
|
55
57
|
}
|
|
56
58
|
/**
|
|
57
59
|
* Returns an asset type from the cache based on the unique name property.
|
|
@@ -82,42 +84,21 @@ export class AssetTypesService {
|
|
|
82
84
|
* Defaults to false.
|
|
83
85
|
* @returns Returns an icon for a given asset type.
|
|
84
86
|
*/
|
|
85
|
-
getIcon(type, open = false) {
|
|
87
|
+
async getIcon(type, open = false) {
|
|
88
|
+
if (!this.isCacheSet) {
|
|
89
|
+
try {
|
|
90
|
+
await this.initAssetTypesCache();
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
// do nothing
|
|
94
|
+
}
|
|
95
|
+
}
|
|
86
96
|
const assetType = this.getAssetTypeByName(type);
|
|
87
|
-
|
|
88
|
-
return icon;
|
|
97
|
+
return assetType?.c8y_IsAssetType?.icon?.name || this.getDefaultGroupIcon(open);
|
|
89
98
|
}
|
|
90
99
|
getDefaultGroupIcon(open = false) {
|
|
91
100
|
return open ? this.DEFAULT_GROUP_ICON_OPEN : this.DEFAULT_GROUP_ICON;
|
|
92
101
|
}
|
|
93
|
-
/**
|
|
94
|
-
* Checks if the default asset type 'group' already exists and if it doesn't it will be created.
|
|
95
|
-
* @returns void.
|
|
96
|
-
*/
|
|
97
|
-
async createAssetTypeGroupIfNotExists() {
|
|
98
|
-
const managedObjects = (await this.inventory.listQuery(this.ASSET_TYPE_GROUP_QUERY)).data;
|
|
99
|
-
if (managedObjects.length > 0) {
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
// if default group asset type doesn't exit create it
|
|
103
|
-
await this.createDefaultAssetTypeGroup();
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* create the default asset type group in the Inventory.
|
|
107
|
-
*/
|
|
108
|
-
async createDefaultAssetTypeGroup() {
|
|
109
|
-
await this.inventory.create({
|
|
110
|
-
label: 'Group',
|
|
111
|
-
name: 'group',
|
|
112
|
-
description: 'Default group asset type',
|
|
113
|
-
c8y_IsAssetType: {
|
|
114
|
-
icon: 'folder',
|
|
115
|
-
propertyIds: [],
|
|
116
|
-
allowedAssetTypeIds: [],
|
|
117
|
-
isNoneChildAssetsAllowed: 'false'
|
|
118
|
-
}
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
102
|
/**
|
|
122
103
|
* Add an asset type to the local cache.
|
|
123
104
|
* @param assetType Asset type which should be added to the cache.
|
|
@@ -209,4 +190,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
209
190
|
type: Injectable,
|
|
210
191
|
args: [{ providedIn: 'root' }]
|
|
211
192
|
}], ctorParameters: function () { return [{ type: i1.InventoryService }, { type: i2.ApiService }, { type: i3.AppStateService }]; } });
|
|
212
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtdHlwZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvYXNzZXQtdHlwZXMvYXNzZXQtdHlwZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0QsT0FBTyxFQUFXLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7OztBQUU3RDs7OztHQUlHO0FBRUgsTUFBTSxPQUFPLGlCQUFpQjtJQVk1QixZQUNVLFNBQTJCLEVBQzNCLFVBQXNCLEVBQ3RCLGVBQWdDO1FBRmhDLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBZHpCLDJCQUFzQixHQUFHO1lBQ3hDLFFBQVEsRUFBRTtnQkFDUixLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO2FBQ3pEO1NBQ0YsQ0FBQztRQUVNLG9CQUFlLEdBQVcsRUFBRSxDQUFDO1FBQ3BCLHVCQUFrQixHQUFHLFdBQVcsQ0FBQztRQUNqQyw0QkFBdUIsR0FBRyxnQkFBZ0IsQ0FBQztRQUNwRCxtQkFBYyxHQUFHLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FB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MUI7YUFBTTtZQUNMLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDdkI7SUFDSCxDQUFDO0lBRU8sc0JBQXNCLENBQUMsRUFBa0I7UUFDL0MsT0FBTyxFQUFFLEVBQUUsY0FBYyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVPLGNBQWMsQ0FBQyxHQUFXO1FBQ2hDLE1BQU0sS0FBSyxHQUFHLHVCQUF1QixDQUFDO1FBQ3RDLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFL0IsSUFBSSxLQUFLLEVBQUU7WUFDVCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU87SUFDVCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLHlCQUF5QixDQUFDLElBQWE7UUFDN0MsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxNQUFNLGlCQUFpQixHQUNyQixJQUFJLENBQUMsTUFBTSxLQUFLLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQztRQUM5RSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzNELE9BQU8saUJBQWlCLElBQUksY0FBYyxDQUFDO0lBQzdDLENBQUM7OzhHQWxPVSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQURKLE1BQU07MkZBQ25CLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCwgSW52ZW50b3J5U2VydmljZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEFwaUNhbGwsIEFwaVNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2FwaSc7XG5pbXBvcnQgeyBORVZFUiwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgbWVyZ2VNYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXBwU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3VpLXN0YXRlLnNlcnZpY2UnO1xuXG4vKipcbiAqIEFzc2V0VHlwZXNTZXJ2aWNlIGlzIGJlaW5nIHVzZWQgdG8gbWFuYWdlIGEgY2FjaGUgb2YgYWxsIGV4aXN0aW5nIGFzc2V0IHR5cGVzLlxuICogVGhpcyBzZXJ2aWNlIGlzIGluamVjdGVkIGluIHRoZSBBc3NldE92ZXJ2aWV3TmF2aWdhdGlvbkZhY3RvcnkgY2xhc3MsIHdoaWNoIHdpbGwgdHJpZ2dlclxuICogdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBjYWNoZSBhcyB0aGUgY29udHN0cnVjdG9yIGlzIGNhbGxlZC5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBc3NldFR5cGVzU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgQVNTRVRfVFlQRV9HUk9VUF9RVUVSWSA9IHtcbiAgICBfX2ZpbHRlcjoge1xuICAgICAgX19hbmQ6IFt7IF9faGFzOiAnYzh5X0lzQXNzZXRUeXBlJyB9LCB7IG5hbWU6ICdncm91cCcgfV1cbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBhc3NldFR5cGVzQ2FjaGU6IG9iamVjdCA9IHt9O1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfR1JPVVBfSUNPTiA9ICdjOHktZ3JvdXAnO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfR1JPVVBfSUNPTl9PUEVOID0gJ2M4eS1ncm91cC1vcGVuJztcbiAgcHJpdmF0ZSBhbGxvd2VkTWV0aG9kcyA9IFsnUE9TVCcsICdQVVQnLCAnREVMRVRFJ107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnk6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcGlTZXJ2aWNlOiBBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXBwU3RhdGVTZXJ2aWNlOiBBcHBTdGF0ZVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5hcHBTdGF0ZVNlcnZpY2UuY3VycmVudFVzZXJcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAodXNlciA9PiB1c2VyPy5pZCksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHN3aXRjaE1hcCh1c2VySWQgPT4ge1xuICAgICAgICAgIGlmICh1c2VySWQpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdEFzc2V0VHlwZXNDYWNoZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3Vic2NyaWJlRm9yQXNzZXRUeXBlVXBkYXRlcygpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFzc2V0VHlwZXNDYWNoZSA9IHt9O1xuICAgICAgICAgICAgcmV0dXJuIE5FVkVSO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBRdWVyaWVzIGF2YWlsYWJsZSBhc3NldCB0eXBlcyBhbmQgYWRkcyBldmVyeSBhc3NldCB0eXBlIHRvIHRoZSBsb2NhbCBjYWNoZS5cbiAgICogQHJldHVybnMgdm9pZC5cbiAgICovXG4gIGFzeW5jIGluaXRBc3NldFR5cGVzQ2FjaGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB0aGlzLmludmVudG9yeS5saXN0KHtcbiAgICAgIGZyYWdtZW50VHlwZTogJ2M4eV9Jc0Fzc2V0VHlwZScsXG4gICAgICB3aXRoQ2hpbGRyZW46IGZhbHNlLFxuICAgICAgcGFnZVNpemU6IDIwMDBcbiAgICB9KTtcbiAgICBkYXRhLmZvckVhY2goYXNzZXRUeXBlID0+IHRoaXMuYWRkQXNzZXRUeXBlKGFzc2V0VHlwZSkpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGFzc2V0IHR5cGUgZnJvbSB0aGUgY2FjaGUgYmFzZWQgb24gdGhlIHVuaXF1ZSBuYW1lIHByb3BlcnR5LlxuICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSBhc3NldCB0eXBlLlxuICAgKiBAcmV0dXJucyBJTWFuYWdlZE9iamVjdCB3aGljaCByZXByZXNlbnRzIHRoZSBhc3NldCB0eXBlLlxuICAgKi9cbiAgZ2V0QXNzZXRUeXBlQnlOYW1lKG5hbWU6IHN0cmluZyk6IElNYW5hZ2VkT2JqZWN0IHtcbiAgICBpZiAoIXRoaXMuYXNzZXRUeXBlc0NhY2hlLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFzc2V0VHlwZXNDYWNoZVtuYW1lXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGFzc2V0IHR5cGUgZnJvbSB0aGUgY2FjaGUgYmFzZWQgb24gdGhlIGlkLlxuICAgKiBAcGFyYW0gYXNzZXRUeXBlSWQgSWQgb2YgdGhlIGFzc2V0IHR5cGUuXG4gICAqIEByZXR1cm5zIElNYW5hZ2VkT2JqZWN0IHdoaWNoIHJlcHJlc2VudHMgdGhlIGFzc2V0IHR5cGUuXG4gICAqL1xuICBnZXRBc3NldFR5cGVCeUlkKGFzc2V0VHlwZUlkOiBzdHJpbmcpOiBJTWFuYWdlZE9iamVjdCB7XG4gICAgaWYgKCFhc3NldFR5cGVJZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRoaXMuYXNzZXRUeXBlc0NhY2hlKS5maW5kKFxuICAgICAgKGFzc2V0VHlwZTogSU1hbmFnZWRPYmplY3QpID0+IGFzc2V0VHlwZS5pZCA9PT0gYXNzZXRUeXBlSWRcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhY3RzIGFuIGljb24gZnJvbSBhbiBhc3NldCB0eXBlLlxuICAgKiBAcGFyYW0gdHlwZSBUeXBlIG9mIHRoZSBhc3NldCB0eXBlLlxuICAgKiBAcGFyYW0gb3BlbiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIG1ldGhvZCBzaG91bGQgcmV0dXJuIGFuIGFsdGVybmF0aXZlIGljb24gc2hvd2luZyB0aGUgb3BlbiBzdGF0ZS5cbiAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAqIEByZXR1cm5zIFJldHVybnMgYW4gaWNvbiBmb3IgYSBnaXZlbiBhc3NldCB0eXBlLlxuICAgKi9cbiAgZ2V0SWNvbih0eXBlOiBzdHJpbmcsIG9wZW4gPSBmYWxzZSk6IHN0cmluZyB7XG4gICAgY29uc3QgYXNzZXRUeXBlID0gdGhpcy5nZXRBc3NldFR5cGVCeU5hbWUodHlwZSk7XG4gICAgY29uc3QgaWNvbiA9IGFzc2V0VHlwZT8uYzh5X0lzQXNzZXRUeXBlPy5pY29uPy5uYW1lIHx8IHRoaXMuZ2V0RGVmYXVsdEdyb3VwSWNvbihvcGVuKTtcbiAgICByZXR1cm4gaWNvbjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdEdyb3VwSWNvbihvcGVuID0gZmFsc2UpIHtcbiAgICByZXR1cm4gb3BlbiA/IHRoaXMuREVGQVVMVF9HUk9VUF9JQ09OX09QRU4gOiB0aGlzLkRFRkFVTFRfR1JPVVBfSUNPTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGRlZmF1bHQgYXNzZXQgdHlwZSAnZ3JvdXAnIGFscmVhZHkgZXhpc3RzIGFuZCBpZiBpdCBkb2Vzbid0IGl0IHdpbGwgYmUgY3JlYXRlZC5cbiAgICogQHJldHVybnMgdm9pZC5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgY3JlYXRlQXNzZXRUeXBlR3JvdXBJZk5vdEV4aXN0cygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBtYW5hZ2VkT2JqZWN0cyA9IChhd2FpdCB0aGlzLmludmVudG9yeS5saXN0UXVlcnkodGhpcy5BU1NFVF9UWVBFX0dST1VQX1FVRVJZKSkuZGF0YTtcblxuICAgIGlmIChtYW5hZ2VkT2JqZWN0cy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gaWYgZGVmYXVsdCBncm91cCBhc3NldCB0eXBlIGRvZXNuJ3QgZXhpdCBjcmVhdGUgaXRcbiAgICBhd2FpdCB0aGlzLmNyZWF0ZURlZmF1bHRBc3NldFR5cGVHcm91cCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIGNyZWF0ZSB0aGUgZGVmYXVsdCBhc3NldCB0eXBlIGdyb3VwIGluIHRoZSBJbnZlbnRvcnkuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGNyZWF0ZURlZmF1bHRBc3NldFR5cGVHcm91cCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmludmVudG9yeS5jcmVhdGUoe1xuICAgICAgbGFiZWw6ICdHcm91cCcsXG4gICAgICBuYW1lOiAnZ3JvdXAnLFxuICAgICAgZGVzY3JpcHRpb246ICdEZWZhdWx0IGdyb3VwIGFzc2V0IHR5cGUnLFxuICAgICAgYzh5X0lzQXNzZXRUeXBlOiB7XG4gICAgICAgIGljb246ICdmb2xkZXInLFxuICAgICAgICBwcm9wZXJ0eUlkczogW10sXG4gICAgICAgIGFsbG93ZWRBc3NldFR5cGVJZHM6IFtdLFxuICAgICAgICBpc05vbmVDaGlsZEFzc2V0c0FsbG93ZWQ6ICdmYWxzZSdcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gYXNzZXQgdHlwZSB0byB0aGUgbG9jYWwgY2FjaGUuXG4gICAqIEBwYXJhbSBhc3NldFR5cGUgQXNzZXQgdHlwZSB3aGljaCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGNhY2hlLlxuICAgKiBAcmV0dXJucyB2b2lkLlxuICAgKi9cbiAgcHJpdmF0ZSBhZGRBc3NldFR5cGUoYXNzZXRUeXBlOiBJTWFuYWdlZE9iamVjdCk6IHZvaWQge1xuICAgIHRoaXMuYXNzZXRUeXBlc0NhY2hlW2Fzc2V0VHlwZS5uYW1lXSA9IGFzc2V0VHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgYW4gYXNzZXQgdHlwZSBmcm9tIHRoZSBsb2NhbCBjYWNoZSBiYXNlZCBvbiB0aGUgZ2l2ZW4gYXNzZXQgdHlwZSBpZC5cbiAgICogQHBhcmFtIGFzc2V0VHlwZUlkIElkIG9mIHRoZSBhc3NldCB0eXBlIHdoaWNoIHNob3VsZCBiZSBkZWxldGVkLlxuICAgKiBAcmV0dXJucyB2b2lkLlxuICAgKi9cbiAgcHJpdmF0ZSBkZWxldGVBc3NldFR5cGUoYXNzZXRUeXBlSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGFzc2V0VHlwZSA9IHRoaXMuZ2V0QXNzZXRUeXBlQnlJZChhc3NldFR5cGVJZCk7XG4gICAgaWYgKGFzc2V0VHlwZSkge1xuICAgICAgZGVsZXRlIHRoaXMuYXNzZXRUeXBlc0NhY2hlW2Fzc2V0VHlwZS5uYW1lXTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFVwZGF0ZSBhbiBhc3NldCB0eXBlIGluIHRoZSBsb2NhbCBjYWNoZS5cbiAgICogQHBhcmFtIGFzc2V0VHlwZSBBc3NldCB0eXBlIHdoaWNoIHNob3VsZCBiZSB1cGRhdGVkIGluIHRoZSBjYWNoZS5cbiAgICogQHJldHVybnMgdm9pZC5cbiAgICovXG4gIHByaXZhdGUgdXBkYXRlQXNzZXRUeXBlKGFzc2V0VHlwZTogSU1hbmFnZWRPYmplY3QpOiB2b2lkIHtcbiAgICBjb25zdCBjYWNoZWRBc3NldFR5cGUgPSB0aGlzLmdldEFzc2V0VHlwZUJ5SWQoYXNzZXRUeXBlLmlkKTtcbiAgICBpZiAoY2FjaGVkQXNzZXRUeXBlKSB7XG4gICAgICB0aGlzLmFzc2V0VHlwZXNDYWNoZVtjYWNoZWRBc3NldFR5cGUubmFtZV0gPSBPYmplY3QuYXNzaWduKGNhY2hlZEFzc2V0VHlwZSwgYXNzZXRUeXBlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlcyB0byBhcGkgUFVULCBQT1NUIGFuZCBERUxFVEUgcmVxdWVzdHMgaW50ZXJjZXB0b3IgdG8gdXBkYXRlIGxvY2FsIGFzc2V0IHR5cGVzIGNhY2hlLlxuICAgKiBJZiBhIG5ldyBhc3NldCB0eXBlIGhhcyBiZWVuIGNyZWF0ZWQgaXQgd2lsbCBiZSBhZGRlZCB0byB0aGUgbG9jYWwgY2FjaGUuIElmIGFuIGFzc2V0XG4gICAqIHR5cGUgaGFzIGJlZW4gZGVsZXRlZCBpdCB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgbG9jYWwgY2FjaGUuXG4gICAqL1xuICBwcml2YXRlIHN1YnNjcmliZUZvckFzc2V0VHlwZVVwZGF0ZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmhvb2tSZXNwb25zZShjID0+IHRoaXMuY2hlY2tJZkludmVudG9yeU1vQXBpQ2FsbChjKSlcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKGNhbGw6IEFwaUNhbGwpID0+ICEhY2FsbD8ubWV0aG9kICYmIHRoaXMuaXNFeHBlY3RlZE1ldGhvZChjYWxsKSksXG4gICAgICAgIG1lcmdlTWFwKHRoaXMuYXBpU2VydmljZS5yZXNvbHZlRGF0YTxJTWFuYWdlZE9iamVjdCB8IG51bGw+KSxcbiAgICAgICAgc3dpdGNoTWFwKCh7IG1ldGhvZCwgZGF0YSwgdXJsIH0pID0+XG4gICAgICAgICAgbWV0aG9kID09PSAnREVMRVRFJyA/IHRoaXMuaGFuZGxlRGVsZXRlKG1ldGhvZCwgdXJsKSA6IG9mKGRhdGEpXG4gICAgICAgICksXG4gICAgICAgIGZpbHRlcigobW86IElNYW5hZ2VkT2JqZWN0KSA9PiAhIW1vICYmIHRoaXMuaGFzSXNBc3NldFR5cGVGcmFnbWVudChtbykpLFxuICAgICAgICB0YXAoKG1vOiBJTWFuYWdlZE9iamVjdCkgPT4gdGhpcy5oYW5kbGVQdXRPclBvc3QobW8pKVxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNFeHBlY3RlZE1ldGhvZChjYWxsOiBBcGlDYWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuYWxsb3dlZE1ldGhvZHMuaW5jbHVkZXMoY2FsbD8ubWV0aG9kKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRGVsZXRlKG1ldGhvZDogc3RyaW5nLCB1cmw6IHN0cmluZykge1xuICAgIGNvbnN0IG1vSWQ6IHN0cmluZyA9IHRoaXMuZ2V0TW9JZEZyb21VcmwodXJsKTtcbiAgICBpZiAobWV0aG9kICE9PSAnREVMRVRFJyB8fCAhbW9JZCkge1xuICAgICAgcmV0dXJuIE5FVkVSO1xuICAgIH1cbiAgICB0aGlzLmRlbGV0ZUFzc2V0VHlwZShtb0lkKTtcbiAgICByZXR1cm4gTkVWRVI7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVB1dE9yUG9zdChtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICBpZiAodGhpcy5nZXRBc3NldFR5cGVCeUlkKG1vLmlkKSkge1xuICAgICAgdGhpcy51cGRhdGVBc3NldFR5cGUobW8pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZEFzc2V0VHlwZShtbyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYXNJc0Fzc2V0VHlwZUZyYWdtZW50KG1vOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHJldHVybiBtbz8uaGFzT3duUHJvcGVydHkoJ2M4eV9Jc0Fzc2V0VHlwZScpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNb0lkRnJvbVVybCh1cmw6IHN0cmluZykge1xuICAgIGNvbnN0IHJlZ2V4ID0gL21hbmFnZWRPYmplY3RzXFwvKFxcZCspLztcbiAgICBjb25zdCBtYXRjaCA9IHVybC5tYXRjaChyZWdleCk7XG5cbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgIGNvbnN0IG1vSWQgPSBtYXRjaFsxXTtcbiAgICAgIHJldHVybiBtb0lkO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogTWFuYWdlZCBvYmplY3RzIGludmVudG9yeSBhcGkgZmlsdGVyLCBhbGxvd2luZyBvbmx5IFBVVCwgUE9TVCBhbmQgREVMRVRFIG1ldGhvZHMuXG4gICAqIEBwYXJhbSBjYWxsIEFwaSBjYWxsIHRvIGZpbHRlci5cbiAgICogQHJldHVybnMgUmV0dXJucyB0cnVlIGlmIGFwaSBjYWxsIG1lZXRzIHRoZSByZXF1aXJlZCBjcml0ZXJpYS5cbiAgICovXG4gIHByaXZhdGUgY2hlY2tJZkludmVudG9yeU1vQXBpQ2FsbChjYWxsOiBBcGlDYWxsKTogYm9vbGVhbiB7XG4gICAgaWYgKCFjYWxsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgaGFzUmVxdWlyZWRNZXRob2QgPVxuICAgICAgY2FsbC5tZXRob2QgPT09ICdQT1NUJyB8fCBjYWxsLm1ldGhvZCA9PT0gJ0RFTEVURScgfHwgY2FsbC5tZXRob2QgPT09ICdQVVQnO1xuICAgIGNvbnN0IGhhc1JlcXVpcmVkVXJsID0gY2FsbC51cmwuaW5jbHVkZXMoJ21hbmFnZWRPYmplY3RzJyk7XG4gICAgcmV0dXJuIGhhc1JlcXVpcmVkTWV0aG9kICYmIGhhc1JlcXVpcmVkVXJsO1xuICB9XG59XG4iXX0=
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtdHlwZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvYXNzZXQtdHlwZXMvYXNzZXQtdHlwZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0QsT0FBTyxFQUFXLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7OztBQUU3RDs7OztHQUlHO0FBRUgsTUFBTSxPQUFPLGlCQUFpQjtJQVk1QixZQUNVLFNBQTJCLEVBQzNCLFVBQXNCLEVBQ3RCLGVBQWdDO1FBRmhDLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBZHpCLDJCQUFzQixHQUFHO1lBQ3hDLFFBQVEsRUFBRTtnQkFDUixLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO2FBQ3pEO1NBQ0YsQ0FBQztRQUNlLHVCQUFrQixHQUFHLFdBQVcsQ0FBQztRQUNqQyw0QkFBdUIsR0FBRyxnQkFBZ0IsQ0FBQztRQUNwRCxvQkFBZSxHQUFXLEVBQUUsQ0FBQztRQUM3QixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLG1CQUFjLEdBQUcsQ0FBQyxNQUFNLEVB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YjtRQUNELE9BQU87SUFDVCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLHlCQUF5QixDQUFDLElBQWE7UUFDN0MsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxNQUFNLGlCQUFpQixHQUNyQixJQUFJLENBQUMsTUFBTSxLQUFLLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQztRQUM5RSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzNELE9BQU8saUJBQWlCLElBQUksY0FBYyxDQUFDO0lBQzdDLENBQUM7OzhHQTFNVSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQURKLE1BQU07MkZBQ25CLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCwgSW52ZW50b3J5U2VydmljZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEFwaUNhbGwsIEFwaVNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2FwaSc7XG5pbXBvcnQgeyBORVZFUiwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgbWVyZ2VNYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXBwU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3VpLXN0YXRlLnNlcnZpY2UnO1xuXG4vKipcbiAqIEFzc2V0VHlwZXNTZXJ2aWNlIGlzIGJlaW5nIHVzZWQgdG8gbWFuYWdlIGEgY2FjaGUgb2YgYWxsIGV4aXN0aW5nIGFzc2V0IHR5cGVzLlxuICogVGhpcyBzZXJ2aWNlIGlzIGluamVjdGVkIGluIHRoZSBBc3NldE92ZXJ2aWV3TmF2aWdhdGlvbkZhY3RvcnkgY2xhc3MsIHdoaWNoIHdpbGwgdHJpZ2dlclxuICogdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBjYWNoZSBhcyB0aGUgY29uc3RydWN0b3IgaXMgY2FsbGVkLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFzc2V0VHlwZXNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBBU1NFVF9UWVBFX0dST1VQX1FVRVJZID0ge1xuICAgIF9fZmlsdGVyOiB7XG4gICAgICBfX2FuZDogW3sgX19oYXM6ICdjOHlfSXNBc3NldFR5cGUnIH0sIHsgbmFtZTogJ2dyb3VwJyB9XVxuICAgIH1cbiAgfTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0dST1VQX0lDT04gPSAnYzh5LWdyb3VwJztcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0dST1VQX0lDT05fT1BFTiA9ICdjOHktZ3JvdXAtb3Blbic7XG4gIHByaXZhdGUgYXNzZXRUeXBlc0NhY2hlOiBvYmplY3QgPSB7fTtcbiAgcHJpdmF0ZSBpc0NhY2hlU2V0ID0gZmFsc2U7XG4gIHByaXZhdGUgYWxsb3dlZE1ldGhvZHMgPSBbJ1BPU1QnLCAnUFVUJywgJ0RFTEVURSddO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaW52ZW50b3J5OiBJbnZlbnRvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXBpU2VydmljZTogQXBpU2VydmljZSxcbiAgICBwcml2YXRlIGFwcFN0YXRlU2VydmljZTogQXBwU3RhdGVTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuYXBwU3RhdGVTZXJ2aWNlLmN1cnJlbnRVc2VyXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHVzZXIgPT4gdXNlcj8uaWQpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICBzd2l0Y2hNYXAodXNlcklkID0+IHtcbiAgICAgICAgICBpZiAodXNlcklkKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRBc3NldFR5cGVzQ2FjaGUoKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN1YnNjcmliZUZvckFzc2V0VHlwZVVwZGF0ZXMoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hc3NldFR5cGVzQ2FjaGUgPSB7fTtcbiAgICAgICAgICAgIHJldHVybiBORVZFUjtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvKipcbiAgICogUXVlcmllcyBhdmFpbGFibGUgYXNzZXQgdHlwZXMgYW5kIGFkZHMgZXZlcnkgYXNzZXQgdHlwZSB0byB0aGUgbG9jYWwgY2FjaGUuXG4gICAqIEByZXR1cm5zIElNYW5hZ2VkT2JqZWN0IHRhYmxlIG9mIGFzc2V0IHR5cGVzLlxuICAgKi9cbiAgYXN5bmMgaW5pdEFzc2V0VHlwZXNDYWNoZSgpOiBQcm9taXNlPElNYW5hZ2VkT2JqZWN0W10+IHtcbiAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMuaW52ZW50b3J5Lmxpc3Qoe1xuICAgICAgZnJhZ21lbnRUeXBlOiAnYzh5X0lzQXNzZXRUeXBlJyxcbiAgICAgIHdpdGhDaGlsZHJlbjogZmFsc2UsXG4gICAgICBwYWdlU2l6ZTogMjAwMFxuICAgIH0pO1xuICAgIGRhdGEuZm9yRWFjaChhc3NldFR5cGUgPT4gdGhpcy5hZGRBc3NldFR5cGUoYXNzZXRUeXBlKSk7XG5cbiAgICB0aGlzLmlzQ2FjaGVTZXQgPSB0cnVlO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gYXNzZXQgdHlwZSBmcm9tIHRoZSBjYWNoZSBiYXNlZCBvbiB0aGUgdW5pcXVlIG5hbWUgcHJvcGVydHkuXG4gICAqIEBwYXJhbSBuYW1lIE5hbWUgb2YgdGhlIGFzc2V0IHR5cGUuXG4gICAqIEByZXR1cm5zIElNYW5hZ2VkT2JqZWN0IHdoaWNoIHJlcHJlc2VudHMgdGhlIGFzc2V0IHR5cGUuXG4gICAqL1xuICBnZXRBc3NldFR5cGVCeU5hbWUobmFtZTogc3RyaW5nKTogSU1hbmFnZWRPYmplY3Qge1xuICAgIGlmICghdGhpcy5hc3NldFR5cGVzQ2FjaGUuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXNzZXRUeXBlc0NhY2hlW25hbWVdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gYXNzZXQgdHlwZSBmcm9tIHRoZSBjYWNoZSBiYXNlZCBvbiB0aGUgaWQuXG4gICAqIEBwYXJhbSBhc3NldFR5cGVJZCBJZCBvZiB0aGUgYXNzZXQgdHlwZS5cbiAgICogQHJldHVybnMgSU1hbmFnZWRPYmplY3Qgd2hpY2ggcmVwcmVzZW50cyB0aGUgYXNzZXQgdHlwZS5cbiAgICovXG4gIGdldEFzc2V0VHlwZUJ5SWQoYXNzZXRUeXBlSWQ6IHN0cmluZyk6IElNYW5hZ2VkT2JqZWN0IHtcbiAgICBpZiAoIWFzc2V0VHlwZUlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5hc3NldFR5cGVzQ2FjaGUpLmZpbmQoXG4gICAgICAoYXNzZXRUeXBlOiBJTWFuYWdlZE9iamVjdCkgPT4gYXNzZXRUeXBlLmlkID09PSBhc3NldFR5cGVJZFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRXh0cmFjdHMgYW4gaWNvbiBmcm9tIGFuIGFzc2V0IHR5cGUuXG4gICAqIEBwYXJhbSB0eXBlIFR5cGUgb2YgdGhlIGFzc2V0IHR5cGUuXG4gICAqIEBwYXJhbSBvcGVuIERldGVybWluZXMgd2hldGhlciB0aGUgbWV0aG9kIHNob3VsZCByZXR1cm4gYW4gYWx0ZXJuYXRpdmUgaWNvbiBzaG93aW5nIHRoZSBvcGVuIHN0YXRlLlxuICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICogQHJldHVybnMgUmV0dXJucyBhbiBpY29uIGZvciBhIGdpdmVuIGFzc2V0IHR5cGUuXG4gICAqL1xuICBhc3luYyBnZXRJY29uKHR5cGU6IHN0cmluZywgb3BlbiA9IGZhbHNlKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBpZiAoIXRoaXMuaXNDYWNoZVNldCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5pbml0QXNzZXRUeXBlc0NhY2hlKCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBkbyBub3RoaW5nXG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGFzc2V0VHlwZSA9IHRoaXMuZ2V0QXNzZXRUeXBlQnlOYW1lKHR5cGUpO1xuICAgIHJldHVybiBhc3NldFR5cGU/LmM4eV9Jc0Fzc2V0VHlwZT8uaWNvbj8ubmFtZSB8fCB0aGlzLmdldERlZmF1bHRHcm91cEljb24ob3Blbik7XG4gIH1cblxuICBwcml2YXRlIGdldERlZmF1bHRHcm91cEljb24ob3BlbiA9IGZhbHNlKSB7XG4gICAgcmV0dXJuIG9wZW4gPyB0aGlzLkRFRkFVTFRfR1JPVVBfSUNPTl9PUEVOIDogdGhpcy5ERUZBVUxUX0dST1VQX0lDT047XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFuIGFzc2V0IHR5cGUgdG8gdGhlIGxvY2FsIGNhY2hlLlxuICAgKiBAcGFyYW0gYXNzZXRUeXBlIEFzc2V0IHR5cGUgd2hpY2ggc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBjYWNoZS5cbiAgICogQHJldHVybnMgdm9pZC5cbiAgICovXG4gIHByaXZhdGUgYWRkQXNzZXRUeXBlKGFzc2V0VHlwZTogSU1hbmFnZWRPYmplY3QpOiB2b2lkIHtcbiAgICB0aGlzLmFzc2V0VHlwZXNDYWNoZVthc3NldFR5cGUubmFtZV0gPSBhc3NldFR5cGU7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIGFuIGFzc2V0IHR5cGUgZnJvbSB0aGUgbG9jYWwgY2FjaGUgYmFzZWQgb24gdGhlIGdpdmVuIGFzc2V0IHR5cGUgaWQuXG4gICAqIEBwYXJhbSBhc3NldFR5cGVJZCBJZCBvZiB0aGUgYXNzZXQgdHlwZSB3aGljaCBzaG91bGQgYmUgZGVsZXRlZC5cbiAgICogQHJldHVybnMgdm9pZC5cbiAgICovXG4gIHByaXZhdGUgZGVsZXRlQXNzZXRUeXBlKGFzc2V0VHlwZUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBhc3NldFR5cGUgPSB0aGlzLmdldEFzc2V0VHlwZUJ5SWQoYXNzZXRUeXBlSWQpO1xuICAgIGlmIChhc3NldFR5cGUpIHtcbiAgICAgIGRlbGV0ZSB0aGlzLmFzc2V0VHlwZXNDYWNoZVthc3NldFR5cGUubmFtZV07XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBVcGRhdGUgYW4gYXNzZXQgdHlwZSBpbiB0aGUgbG9jYWwgY2FjaGUuXG4gICAqIEBwYXJhbSBhc3NldFR5cGUgQXNzZXQgdHlwZSB3aGljaCBzaG91bGQgYmUgdXBkYXRlZCBpbiB0aGUgY2FjaGUuXG4gICAqIEByZXR1cm5zIHZvaWQuXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZUFzc2V0VHlwZShhc3NldFR5cGU6IElNYW5hZ2VkT2JqZWN0KTogdm9pZCB7XG4gICAgY29uc3QgY2FjaGVkQXNzZXRUeXBlID0gdGhpcy5nZXRBc3NldFR5cGVCeUlkKGFzc2V0VHlwZS5pZCk7XG4gICAgaWYgKGNhY2hlZEFzc2V0VHlwZSkge1xuICAgICAgdGhpcy5hc3NldFR5cGVzQ2FjaGVbY2FjaGVkQXNzZXRUeXBlLm5hbWVdID0gT2JqZWN0LmFzc2lnbihjYWNoZWRBc3NldFR5cGUsIGFzc2V0VHlwZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZXMgdG8gYXBpIFBVVCwgUE9TVCBhbmQgREVMRVRFIHJlcXVlc3RzIGludGVyY2VwdG9yIHRvIHVwZGF0ZSBsb2NhbCBhc3NldCB0eXBlcyBjYWNoZS5cbiAgICogSWYgYSBuZXcgYXNzZXQgdHlwZSBoYXMgYmVlbiBjcmVhdGVkIGl0IHdpbGwgYmUgYWRkZWQgdG8gdGhlIGxvY2FsIGNhY2hlLiBJZiBhbiBhc3NldFxuICAgKiB0eXBlIGhhcyBiZWVuIGRlbGV0ZWQgaXQgd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIGxvY2FsIGNhY2hlLlxuICAgKi9cbiAgcHJpdmF0ZSBzdWJzY3JpYmVGb3JBc3NldFR5cGVVcGRhdGVzKCkge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5ob29rUmVzcG9uc2UoYyA9PiB0aGlzLmNoZWNrSWZJbnZlbnRvcnlNb0FwaUNhbGwoYykpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChjYWxsOiBBcGlDYWxsKSA9PiAhIWNhbGw/Lm1ldGhvZCAmJiB0aGlzLmlzRXhwZWN0ZWRNZXRob2QoY2FsbCkpLFxuICAgICAgICBtZXJnZU1hcCh0aGlzLmFwaVNlcnZpY2UucmVzb2x2ZURhdGE8SU1hbmFnZWRPYmplY3QgfCBudWxsPiksXG4gICAgICAgIHN3aXRjaE1hcCgoeyBtZXRob2QsIGRhdGEsIHVybCB9KSA9PlxuICAgICAgICAgIG1ldGhvZCA9PT0gJ0RFTEVURScgPyB0aGlzLmhhbmRsZURlbGV0ZShtZXRob2QsIHVybCkgOiBvZihkYXRhKVxuICAgICAgICApLFxuICAgICAgICBmaWx0ZXIoKG1vOiBJTWFuYWdlZE9iamVjdCkgPT4gISFtbyAmJiB0aGlzLmhhc0lzQXNzZXRUeXBlRnJhZ21lbnQobW8pKSxcbiAgICAgICAgdGFwKChtbzogSU1hbmFnZWRPYmplY3QpID0+IHRoaXMuaGFuZGxlUHV0T3JQb3N0KG1vKSlcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIGlzRXhwZWN0ZWRNZXRob2QoY2FsbDogQXBpQ2FsbCkge1xuICAgIHJldHVybiB0aGlzLmFsbG93ZWRNZXRob2RzLmluY2x1ZGVzKGNhbGw/Lm1ldGhvZCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZURlbGV0ZShtZXRob2Q6IHN0cmluZywgdXJsOiBzdHJpbmcpIHtcbiAgICBjb25zdCBtb0lkOiBzdHJpbmcgPSB0aGlzLmdldE1vSWRGcm9tVXJsKHVybCk7XG4gICAgaWYgKG1ldGhvZCAhPT0gJ0RFTEVURScgfHwgIW1vSWQpIHtcbiAgICAgIHJldHVybiBORVZFUjtcbiAgICB9XG4gICAgdGhpcy5kZWxldGVBc3NldFR5cGUobW9JZCk7XG4gICAgcmV0dXJuIE5FVkVSO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVQdXRPclBvc3QobW86IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgaWYgKHRoaXMuZ2V0QXNzZXRUeXBlQnlJZChtby5pZCkpIHtcbiAgICAgIHRoaXMudXBkYXRlQXNzZXRUeXBlKG1vKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hZGRBc3NldFR5cGUobW8pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFzSXNBc3NldFR5cGVGcmFnbWVudChtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICByZXR1cm4gbW8/Lmhhc093blByb3BlcnR5KCdjOHlfSXNBc3NldFR5cGUnKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TW9JZEZyb21VcmwodXJsOiBzdHJpbmcpIHtcbiAgICBjb25zdCByZWdleCA9IC9tYW5hZ2VkT2JqZWN0c1xcLyhcXGQrKS87XG4gICAgY29uc3QgbWF0Y2ggPSB1cmwubWF0Y2gocmVnZXgpO1xuXG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICBjb25zdCBtb0lkID0gbWF0Y2hbMV07XG4gICAgICByZXR1cm4gbW9JZDtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hbmFnZWQgb2JqZWN0cyBpbnZlbnRvcnkgYXBpIGZpbHRlciwgYWxsb3dpbmcgb25seSBQVVQsIFBPU1QgYW5kIERFTEVURSBtZXRob2RzLlxuICAgKiBAcGFyYW0gY2FsbCBBcGkgY2FsbCB0byBmaWx0ZXIuXG4gICAqIEByZXR1cm5zIFJldHVybnMgdHJ1ZSBpZiBhcGkgY2FsbCBtZWV0cyB0aGUgcmVxdWlyZWQgY3JpdGVyaWEuXG4gICAqL1xuICBwcml2YXRlIGNoZWNrSWZJbnZlbnRvcnlNb0FwaUNhbGwoY2FsbDogQXBpQ2FsbCk6IGJvb2xlYW4ge1xuICAgIGlmICghY2FsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGhhc1JlcXVpcmVkTWV0aG9kID1cbiAgICAgIGNhbGwubWV0aG9kID09PSAnUE9TVCcgfHwgY2FsbC5tZXRob2QgPT09ICdERUxFVEUnIHx8IGNhbGwubWV0aG9kID09PSAnUFVUJztcbiAgICBjb25zdCBoYXNSZXF1aXJlZFVybCA9IGNhbGwudXJsLmluY2x1ZGVzKCdtYW5hZ2VkT2JqZWN0cycpO1xuICAgIHJldHVybiBoYXNSZXF1aXJlZE1ldGhvZCAmJiBoYXNSZXF1aXJlZFVybDtcbiAgfVxufVxuIl19
|
|
@@ -6,7 +6,7 @@ export class GetGroupIconPipe {
|
|
|
6
6
|
constructor(groupService) {
|
|
7
7
|
this.groupService = groupService;
|
|
8
8
|
}
|
|
9
|
-
transform(mo) {
|
|
9
|
+
async transform(mo) {
|
|
10
10
|
return this.groupService.getIcon(mo);
|
|
11
11
|
}
|
|
12
12
|
}
|
|
@@ -18,4 +18,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
18
18
|
name: 'getGroupIcon'
|
|
19
19
|
}]
|
|
20
20
|
}], ctorParameters: function () { return [{ type: i1.GroupService }]; } });
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWdyb3VwLWljb24ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvY29tbW9uL2dldC1ncm91cC1pY29uLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFLL0MsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixZQUFvQixZQUEwQjtRQUExQixpQkFBWSxHQUFaLFlBQVksQ0FBYztJQUFHLENBQUM7SUFFbEQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFrQjtRQUNoQyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7OzZHQUxVLGdCQUFnQjsyR0FBaEIsZ0JBQWdCOzJGQUFoQixnQkFBZ0I7a0JBSDVCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGNBQWM7aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBHcm91cFNlcnZpY2UgfSBmcm9tICcuL2dyb3VwLnNlcnZpY2UnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdnZXRHcm91cEljb24nXG59KVxuZXhwb3J0IGNsYXNzIEdldEdyb3VwSWNvblBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBncm91cFNlcnZpY2U6IEdyb3VwU2VydmljZSkge31cblxuICBhc3luYyB0cmFuc2Zvcm0obW86IElNYW5hZ2VkT2JqZWN0KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5ncm91cFNlcnZpY2UuZ2V0SWNvbihtbyk7XG4gIH1cbn1cbiJdfQ==
|