@c8y/ngx-components 1017.0.180 → 1017.0.182
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 +5 -5
- 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 +32 -49
- 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 +23 -42
- package/fesm2020/c8y-ngx-components.mjs.map +1 -1
- package/package.json +2 -2
- 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
|
@@ -48,10 +48,10 @@ export class GroupService {
|
|
|
48
48
|
* @param open Determines whether the method should return an alternative icon showing the open state.
|
|
49
49
|
* @returns Returns an icon.
|
|
50
50
|
*/
|
|
51
|
-
getIcon(mo, open = false) {
|
|
51
|
+
async getIcon(mo, open = false) {
|
|
52
52
|
const genericMoType = this.determineMoType(mo);
|
|
53
53
|
if (genericMoType === 'asset') {
|
|
54
|
-
return this.getAssetCustomIcon(mo.type, open);
|
|
54
|
+
return await this.getAssetCustomIcon(mo.type, open);
|
|
55
55
|
}
|
|
56
56
|
const typeIcons = this.getDefaultIcon(genericMoType);
|
|
57
57
|
return (open && typeIcons.iconOpen) || typeIcons.icon;
|
|
@@ -146,8 +146,8 @@ GroupService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version
|
|
|
146
146
|
__decorate([
|
|
147
147
|
memoize(property('id')),
|
|
148
148
|
__metadata("design:type", Function),
|
|
149
|
-
__metadata("design:paramtypes", [Object,
|
|
150
|
-
__metadata("design:returntype",
|
|
149
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
150
|
+
__metadata("design:returntype", Promise)
|
|
151
151
|
], GroupService.prototype, "getIcon", null);
|
|
152
152
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: GroupService, decorators: [{
|
|
153
153
|
type: Injectable,
|
|
@@ -155,4 +155,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
155
155
|
providedIn: 'root'
|
|
156
156
|
}]
|
|
157
157
|
}], ctorParameters: function () { return [{ type: i1.AssetTypesService }]; }, propDecorators: { getIcon: [] } });
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvY29tbW9uL2dyb3VwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNsQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFFOUMsTUFBTSxRQUFRLEdBQUc7SUFDZixPQUFPO0lBQ1AsY0FBYztJQUNkLGNBQWM7SUFDZCxzQkFBc0I7SUFDdEIsT0FBTztJQUNQLE9BQU87Q0FDQyxDQUFDO0FBV1gsTUFBTSxPQUFPLFlBQVk7SUF5QnZCLFlBQW9CLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBeEIvQyxVQUFLLEdBQVU7WUFDdEIsb0JBQW9CLEVBQUU7Z0JBQ3BCLElBQUksRUFBRSwyQkFBMkI7Z0JBQ2pDLFFBQVEsRUFBRSwyQkFBMkI7YUFDdEM7WUFDRCxZQUFZLEVBQUU7Z0JBQ1osSUFBSSxFQUFFLGtCQUFrQjtnQkFDeEIsUUFBUSxFQUFFLHVCQUF1QjthQUNsQztZQUNELEtBQUssRUFBRTtnQkFDTCxJQUFJLEVBQUUsV0FBVztnQkFDakIsUUFBUSxFQUFFLGdCQUFnQjthQUMzQjtZQUNELFlBQVksRUFBRTtnQkFDWixJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixRQUFRLEVBQUUsc0JBQXNCO2FBQ2pDO1lBQ0QsS0FBSyxFQUFFO2dCQUNMLElBQUksRUFBRSxVQUFVO2dCQUNoQixTQUFTLEVBQUUsZUFBZTthQUMzQjtTQUNGLENBQUM7UUFDRixxQ0FBZ0MsR0FBRyxJQUFJ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YyxDQUFDO1NBQ3ZCO1FBRUQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ3pCLE9BQU8sc0JBQXNCLENBQUM7U0FDL0I7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDcEIsT0FBTyxPQUFPLENBQUM7U0FDaEI7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDOzt5R0FuSlUsWUFBWTs2R0FBWixZQUFZLGNBRlgsTUFBTTtBQXFDbEI7SUFEQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDOzs7OzJDQVF2QjsyRkExQ1UsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7d0dBb0NDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEFzc2V0VHlwZXNTZXJ2aWNlIH0gZnJvbSAnLi4vYXNzZXQtdHlwZXMvYXNzZXQtdHlwZXMuc2VydmljZSc7XG5pbXBvcnQgeyBHcm91cEZyYWdtZW50IH0gZnJvbSAnLi9ncm91cC1mcmFnbWVudC5tb2RlbCc7XG5pbXBvcnQgeyBtZW1vaXplIH0gZnJvbSAnLi9tZW1vaXplLmRlY29yYXRvcic7XG5cbmNvbnN0IE1PX1RZUEVTID0gW1xuICAnYXNzZXQnLFxuICAnZHluYW1pY0dyb3VwJyxcbiAgJ2Jyb2tlclNvdXJjZScsXG4gICdicm9rZXJTb3VyY2VJbmFjdGl2ZScsXG4gICdncm91cCcsXG4gICdvdGhlcidcbl0gYXMgY29uc3Q7XG5cbnR5cGUgTW9UeXBlcyA9IHR5cGVvZiBNT19UWVBFU1tudW1iZXJdO1xuXG50eXBlIEljb24gPSBQYXJ0aWFsPHsgaWNvbjogc3RyaW5nOyBpY29uT3Blbj86IHN0cmluZzsgaWNvbkNsYXNzPzogc3RyaW5nIH0+O1xuXG50eXBlIEljb25zID0gUGFydGlhbDxSZWNvcmQ8TW9UeXBlcywgSWNvbj4+O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBHcm91cFNlcnZpY2Uge1xuICByZWFkb25seSBpY29uczogSWNvbnMgPSB7XG4gICAgYnJva2VyU291cmNlSW5hY3RpdmU6IHtcbiAgICAgIGljb246ICdjOHktZ3JvdXAtcmVtb3RlLWluYWN0aXZlJyxcbiAgICAgIGljb25PcGVuOiAnYzh5LWdyb3VwLXJlbW90ZS1pbmFjdGl2ZSdcbiAgICB9LFxuICAgIGJyb2tlclNvdXJjZToge1xuICAgICAgaWNvbjogJ2M4eS1ncm91cC1yZW1vdGUnLFxuICAgICAgaWNvbk9wZW46ICdjOHktZ3JvdXAtcmVtb3RlLW9wZW4nXG4gICAgfSxcbiAgICBncm91cDoge1xuICAgICAgaWNvbjogJ2M4eS1ncm91cCcsXG4gICAgICBpY29uT3BlbjogJ2M4eS1ncm91cC1vcGVuJ1xuICAgIH0sXG4gICAgZHluYW1pY0dyb3VwOiB7XG4gICAgICBpY29uOiAnYzh5LWdyb3VwLXNtYXJ0JyxcbiAgICAgIGljb25PcGVuOiAnYzh5LWdyb3VwLXNtYXJ0LW9wZW4nXG4gICAgfSxcbiAgICBvdGhlcjoge1xuICAgICAgaWNvbjogJ2V4Y2hhbmdlJyxcbiAgICAgIGljb25DbGFzczogJ3N0YXR1c1Vua25vd24nXG4gICAgfVxuICB9O1xuICBkYXRhQnJva2VyU291cmNlRnJhZ21lbnRJbmFjdGl2ZSA9IGBfJHtHcm91cEZyYWdtZW50LmRhdGFCcm9rZXJTb3VyY2VGcmFnbWVudH1gO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXNzZXRUeXBlc1NlcnZpY2U6IEFzc2V0VHlwZXNTZXJ2aWNlKSB7fVxuXG4gIC8qKlxuICAgKiBGaW5kcyBhbiBpY29uIGJhc2VkIG9uIHRoZSBjb250ZW50cyBvZiBhIG1hbmFnZWQgb2JqZWN0LlxuICAgKiBJdCB0YWtlcyBpbnRvIGFjY291bnQgZmFjdG9ycyBzdWNoIGFzIHR5cGUsIGFuZCBzcGVjaWZpYyBmcmFnbWVudHMuXG4gICAqIEBwYXJhbSBtbyBNYW5hZ2VkIG9iamVjdCB0byBiZSBjaGVja2VkLlxuICAgKiBAcGFyYW0gb3BlbiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIG1ldGhvZCBzaG91bGQgcmV0dXJuIGFuIGFsdGVybmF0aXZlIGljb24gc2hvd2luZyB0aGUgb3BlbiBzdGF0ZS5cbiAgICogQHJldHVybnMgUmV0dXJucyBhbiBpY29uLlxuICAgKi9cbiAgQG1lbW9pemUocHJvcGVydHkoJ2lkJykpXG4gIGdldEljb24obW86IElNYW5hZ2VkT2JqZWN0LCBvcGVuOiBib29sZWFuID0gZmFsc2UpOiBzdHJpbmcge1xuICAgIGNvbnN0IGdlbmVyaWNNb1R5cGUgPSB0aGlzLmRldGVybWluZU1vVHlwZShtbyk7XG4gICAgaWYgKGdlbmVyaWNNb1R5cGUgPT09ICdhc3NldCcpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEFzc2V0Q3VzdG9tSWNvbihtby50eXBlLCBvcGVuKTtcbiAgICB9XG4gICAgY29uc3QgdHlwZUljb25zID0gdGhpcy5nZXREZWZhdWx0SWNvbihnZW5lcmljTW9UeXBlKTtcbiAgICByZXR1cm4gKG9wZW4gJiYgdHlwZUljb25zLmljb25PcGVuKSB8fCB0eXBlSWNvbnMuaWNvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBhIGdpdmVuIG1hbmFnZWQgb2JqZWN0IGlzIGEgZ3JvdXAuXG4gICAqIEBwYXJhbSBtbyBNYW5hZ2VkIG9iamVjdCB0byBiZSBjaGVja2VkLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRydWUgaWYgdGhlIG1hbmFnZWQgb2JqZWN0IGlzIGEgZ3JvdXAuXG4gICAqL1xuICBpc0dyb3VwKG1vOiBJTWFuYWdlZE9iamVjdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIW1vW0dyb3VwRnJhZ21lbnQuZ3JvdXBGcmFnbWVudFR5cGVdIHx8IG1vLnR5cGUgPT09IEdyb3VwRnJhZ21lbnQuZ3JvdXBUeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gbWFuYWdlZCBvYmplY3QgaXMgYSBkeW5hbWljIGdyb3VwLlxuICAgKiBAcGFyYW0gbW8gTWFuYWdlZCBvYmplY3QgdG8gYmUgY2hlY2tlZC5cbiAgICogQHJldHVybnMgUmV0dXJucyB0cnVlIGlmIHRoZSBtYW5hZ2VkIG9iamVjdCBpcyBhIGR5bmFtaWMgZ3JvdXAuXG4gICAqL1xuICBpc0R5bmFtaWNHcm91cChtbzogSU1hbmFnZWRPYmplY3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISFtb1tHcm91cEZyYWdtZW50LmR5bmFtaWNHcm91cEZyYWdtZW50XSB8fCBtby50eXBlID09PSBHcm91cEZyYWdtZW50LmR5bmFtaWNHcm91cFR5cGU7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgYSBnaXZlbiBtYW5hZ2VkIG9iamVjdCBpcyBhIGRhdGEgYnJva2VyLlxuICAgKiBAcGFyYW0gbW8gTWFuYWdlZCBvYmplY3QgdG8gYmUgY2hlY2tlZC5cbiAgICogQHJldHVybnMgUmV0dXJucyB0cnVlIGlmIHRoZSBtYW5hZ2VkIG9iamVjdCBpcyBhIGRhdGEgYnJva2VyLlxuICAgKi9cbiAgaXNEYXRhQnJva2VyKG1vOiBJTWFuYWdlZE9iamVjdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICAhIW1vW0dyb3VwRnJhZ21lbnQuZGF0YUJyb2tlclNvdXJjZUZyYWdtZW50XSB8fCAhIW1vW3RoaXMuZGF0YUJyb2tlclNvdXJjZUZyYWdtZW50SW5hY3RpdmVdXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBhIGdpdmVuIG1hbmFnZWQgb2JqZWN0IGlzIGEgZGF0YSBicm9rZXIgYWN0aXZlLlxuICAgKiBAcGFyYW0gbW8gTWFuYWdlZCBvYmplY3QgdG8gYmUgY2hlY2tlZC5cbiAgICogQHJldHVybnMgUmV0dXJucyB0cnVlIGlmIHRoZSBtYW5hZ2VkIG9iamVjdCBpcyBhIGRhdGEgYnJva2VyIGFjdGl2ZS5cbiAgICovXG4gIGlzRGF0YUJyb2tlckFjdGl2ZShtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICByZXR1cm4gKFxuICAgICAgISFtb1tHcm91cEZyYWdtZW50LmRhdGFCcm9rZXJTb3VyY2VGcmFnbWVudF0gJiYgIW1vW3RoaXMuZGF0YUJyb2tlclNvdXJjZUZyYWdtZW50SW5hY3RpdmVdXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBhIGdpdmVuIG1hbmFnZWQgb2JqZWN0IGlzIGFuIGFzc2V0LlxuICAgKiBAcGFyYW0gbW8gTWFuYWdlZCBvYmplY3QgdG8gYmUgY2hlY2tlZC5cbiAgICogQHJldHVybnMgUmV0dXJucyB0cnVlIGlmIHRoZSBtYW5hZ2VkIG9iamVjdCBpcyBhbiBhc3NldC5cbiAgICovXG4gIGlzQXNzZXQobW86IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgcmV0dXJuICEhbW8uYzh5X0lzQXNzZXQ7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIG9iamVjdCBiZWxvbmdzIHRvIGFueSB0eXBlIG9mIGdyb3VwLlxuICAgKiBUeXBlcyBvZiBncm91cHM6IGdyb3VwLCBkeW5hbWljIGdyb3VwLCBkYXRhIGJyb2tlciwgZGF0YSBicm9rZXIgYWN0aXZlLlxuICAgKiBAcGFyYW0gbW8gTWFuYWdlZCBvYmplY3QgdG8gYmUgY2hlY2tlZC5cbiAgICogQHJldHVybnMgUmV0dXJucyB0cnVlIGlmIHRoZSBtYW5hZ2VkIG9iamVjdCBiZWxvbmdzIHRvIHRoZSBncm91cCBjYXRlZ29yeS5cbiAgICovXG4gIGlzQW55R3JvdXAobW86IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuaXNHcm91cChtbykgfHxcbiAgICAgIHRoaXMuaXNEeW5hbWljR3JvdXAobW8pIHx8XG4gICAgICB0aGlzLmlzRGF0YUJyb2tlcihtbykgfHxcbiAgICAgIHRoaXMuaXNEYXRhQnJva2VyQWN0aXZlKG1vKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgYSBnaXZlbiBtYW5hZ2VkIG9iamVjdCBpcyBhIGRldmljZS5cbiAgICogQHBhcmFtIG1vIE1hbmFnZWQgb2JqZWN0IHRvIGJlIGNoZWNrZWQuXG4gICAqIEByZXR1cm5zIFJldHVybnMgdHJ1ZSBpZiB0aGUgbWFuYWdlZCBvYmplY3QgaXMgYSBkZXZpY2UuXG4gICAqL1xuICBpc0RldmljZShtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICByZXR1cm4gISFtby5jOHlfSXNEZXZpY2U7XG4gIH1cblxuICBwcml2YXRlIGdldEFzc2V0Q3VzdG9tSWNvbihtb1R5cGU6IHN0cmluZywgb3BlbjogYm9vbGVhbiA9IGZhbHNlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hc3NldFR5cGVzU2VydmljZS5nZXRJY29uKG1vVHlwZSwgb3Blbik7XG4gIH1cblxuICBwcml2YXRlIGdldERlZmF1bHRJY29uKG1vVHlwZTogTW9UeXBlcyk6IEljb24ge1xuICAgIHJldHVybiB0aGlzLmljb25zW21vVHlwZV07XG4gIH1cblxuICBwcml2YXRlIGRldGVybWluZU1vVHlwZShtbzogSU1hbmFnZWRPYmplY3QpOiBNb1R5cGVzIHtcbiAgICBpZiAodGhpcy5pc0Fzc2V0KG1vKSkge1xuICAgICAgcmV0dXJuICdhc3NldCc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNEeW5hbWljR3JvdXAobW8pKSB7XG4gICAgICByZXR1cm4gJ2R5bmFtaWNHcm91cCc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNEYXRhQnJva2VyQWN0aXZlKG1vKSkge1xuICAgICAgcmV0dXJuICdicm9rZXJTb3VyY2UnO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzRGF0YUJyb2tlcihtbykpIHtcbiAgICAgIHJldHVybiAnYnJva2VyU291cmNlSW5hY3RpdmUnO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzR3JvdXAobW8pKSB7XG4gICAgICByZXR1cm4gJ2dyb3VwJztcbiAgICB9XG5cbiAgICByZXR1cm4gJ290aGVyJztcbiAgfVxufVxuIl19
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvY29tbW9uL2dyb3VwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNsQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFFOUMsTUFBTSxRQUFRLEdBQUc7SUFDZixPQUFPO0lBQ1AsY0FBYztJQUNkLGNBQWM7SUFDZCxzQkFBc0I7SUFDdEIsT0FBTztJQUNQLE9BQU87Q0FDQyxDQUFDO0FBV1gsTUFBTSxPQUFPLFlBQVk7SUF5QnZCLFlBQW9CLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBeEIvQyxVQUFLLEdBQVU7WUFDdEIsb0JBQW9CLEVBQUU7Z0JBQ3BCLElBQUksRUFBRSwyQkFBMkI7Z0JBQ2pDLFFBQVEsRUFBRSwyQkFBMkI7YUFDdEM7WUFDRCxZQUFZLEVBQUU7Z0JBQ1osSUFBSSxFQUFFLGtCQUFrQjtnQkFDeEIsUUFBUSxFQUFFLHVCQUF1QjthQUNsQztZQUNELEtBQUssRUFBRTtnQkFDTCxJQUFJLEVBQUUsV0FBVztnQkFDakIsUUFBUSxFQUFFLGdCQUFnQjthQUMzQjtZQUNELFlBQVksRUFBRTtnQkFDWixJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixRQUFRLEVBQUUsc0JBQXNCO2FBQ2pDO1lBQ0QsS0FBSyxFQUFFO2dCQUNMLElBQUksRUFBRSxVQUFVO2dCQUNoQixTQUFTLEVBQUUsZUFBZTthQUMzQjtTQUNGLENBQUM7UUFDRixxQ0FBZ0MsR0FBRyxJQUFJ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QUFDLEVBQUU7WUFDL0IsT0FBTyxjQUFjLENBQUM7U0FDdkI7UUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDekIsT0FBTyxzQkFBc0IsQ0FBQztTQUMvQjtRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUNwQixPQUFPLE9BQU8sQ0FBQztTQUNoQjtRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7O3lHQW5KVSxZQUFZOzZHQUFaLFlBQVksY0FGWCxNQUFNO0FBcUNsQjtJQURDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Ozs7MkNBUXZCOzJGQTFDVSxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjt3R0FvQ08sT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgcHJvcGVydHkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQXNzZXRUeXBlc1NlcnZpY2UgfSBmcm9tICcuLi9hc3NldC10eXBlcy9hc3NldC10eXBlcy5zZXJ2aWNlJztcbmltcG9ydCB7IEdyb3VwRnJhZ21lbnQgfSBmcm9tICcuL2dyb3VwLWZyYWdtZW50Lm1vZGVsJztcbmltcG9ydCB7IG1lbW9pemUgfSBmcm9tICcuL21lbW9pemUuZGVjb3JhdG9yJztcblxuY29uc3QgTU9fVFlQRVMgPSBbXG4gICdhc3NldCcsXG4gICdkeW5hbWljR3JvdXAnLFxuICAnYnJva2VyU291cmNlJyxcbiAgJ2Jyb2tlclNvdXJjZUluYWN0aXZlJyxcbiAgJ2dyb3VwJyxcbiAgJ290aGVyJ1xuXSBhcyBjb25zdDtcblxudHlwZSBNb1R5cGVzID0gdHlwZW9mIE1PX1RZUEVTW251bWJlcl07XG5cbnR5cGUgSWNvbiA9IFBhcnRpYWw8eyBpY29uOiBzdHJpbmc7IGljb25PcGVuPzogc3RyaW5nOyBpY29uQ2xhc3M/OiBzdHJpbmcgfT47XG5cbnR5cGUgSWNvbnMgPSBQYXJ0aWFsPFJlY29yZDxNb1R5cGVzLCBJY29uPj47XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEdyb3VwU2VydmljZSB7XG4gIHJlYWRvbmx5IGljb25zOiBJY29ucyA9IHtcbiAgICBicm9rZXJTb3VyY2VJbmFjdGl2ZToge1xuICAgICAgaWNvbjogJ2M4eS1ncm91cC1yZW1vdGUtaW5hY3RpdmUnLFxuICAgICAgaWNvbk9wZW46ICdjOHktZ3JvdXAtcmVtb3RlLWluYWN0aXZlJ1xuICAgIH0sXG4gICAgYnJva2VyU291cmNlOiB7XG4gICAgICBpY29uOiAnYzh5LWdyb3VwLXJlbW90ZScsXG4gICAgICBpY29uT3BlbjogJ2M4eS1ncm91cC1yZW1vdGUtb3BlbidcbiAgICB9LFxuICAgIGdyb3VwOiB7XG4gICAgICBpY29uOiAnYzh5LWdyb3VwJyxcbiAgICAgIGljb25PcGVuOiAnYzh5LWdyb3VwLW9wZW4nXG4gICAgfSxcbiAgICBkeW5hbWljR3JvdXA6IHtcbiAgICAgIGljb246ICdjOHktZ3JvdXAtc21hcnQnLFxuICAgICAgaWNvbk9wZW46ICdjOHktZ3JvdXAtc21hcnQtb3BlbidcbiAgICB9LFxuICAgIG90aGVyOiB7XG4gICAgICBpY29uOiAnZXhjaGFuZ2UnLFxuICAgICAgaWNvbkNsYXNzOiAnc3RhdHVzVW5rbm93bidcbiAgICB9XG4gIH07XG4gIGRhdGFCcm9rZXJTb3VyY2VGcmFnbWVudEluYWN0aXZlID0gYF8ke0dyb3VwRnJhZ21lbnQuZGF0YUJyb2tlclNvdXJjZUZyYWdtZW50fWA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhc3NldFR5cGVzU2VydmljZTogQXNzZXRUeXBlc1NlcnZpY2UpIHt9XG5cbiAgLyoqXG4gICAqIEZpbmRzIGFuIGljb24gYmFzZWQgb24gdGhlIGNvbnRlbnRzIG9mIGEgbWFuYWdlZCBvYmplY3QuXG4gICAqIEl0IHRha2VzIGludG8gYWNjb3VudCBmYWN0b3JzIHN1Y2ggYXMgdHlwZSwgYW5kIHNwZWNpZmljIGZyYWdtZW50cy5cbiAgICogQHBhcmFtIG1vIE1hbmFnZWQgb2JqZWN0IHRvIGJlIGNoZWNrZWQuXG4gICAqIEBwYXJhbSBvcGVuIERldGVybWluZXMgd2hldGhlciB0aGUgbWV0aG9kIHNob3VsZCByZXR1cm4gYW4gYWx0ZXJuYXRpdmUgaWNvbiBzaG93aW5nIHRoZSBvcGVuIHN0YXRlLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIGFuIGljb24uXG4gICAqL1xuICBAbWVtb2l6ZShwcm9wZXJ0eSgnaWQnKSlcbiAgYXN5bmMgZ2V0SWNvbihtbzogSU1hbmFnZWRPYmplY3QsIG9wZW4gPSBmYWxzZSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgZ2VuZXJpY01vVHlwZSA9IHRoaXMuZGV0ZXJtaW5lTW9UeXBlKG1vKTtcbiAgICBpZiAoZ2VuZXJpY01vVHlwZSA9PT0gJ2Fzc2V0Jykge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0QXNzZXRDdXN0b21JY29uKG1vLnR5cGUsIG9wZW4pO1xuICAgIH1cbiAgICBjb25zdCB0eXBlSWNvbnMgPSB0aGlzLmdldERlZmF1bHRJY29uKGdlbmVyaWNNb1R5cGUpO1xuICAgIHJldHVybiAob3BlbiAmJiB0eXBlSWNvbnMuaWNvbk9wZW4pIHx8IHR5cGVJY29ucy5pY29uO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gbWFuYWdlZCBvYmplY3QgaXMgYSBncm91cC5cbiAgICogQHBhcmFtIG1vIE1hbmFnZWQgb2JqZWN0IHRvIGJlIGNoZWNrZWQuXG4gICAqIEByZXR1cm5zIFJldHVybnMgdHJ1ZSBpZiB0aGUgbWFuYWdlZCBvYmplY3QgaXMgYSBncm91cC5cbiAgICovXG4gIGlzR3JvdXAobW86IElNYW5hZ2VkT2JqZWN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhbW9bR3JvdXBGcmFnbWVudC5ncm91cEZyYWdtZW50VHlwZV0gfHwgbW8udHlwZSA9PT0gR3JvdXBGcmFnbWVudC5ncm91cFR5cGU7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgYSBnaXZlbiBtYW5hZ2VkIG9iamVjdCBpcyBhIGR5bmFtaWMgZ3JvdXAuXG4gICAqIEBwYXJhbSBtbyBNYW5hZ2VkIG9iamVjdCB0byBiZSBjaGVja2VkLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRydWUgaWYgdGhlIG1hbmFnZWQgb2JqZWN0IGlzIGEgZHluYW1pYyBncm91cC5cbiAgICovXG4gIGlzRHluYW1pY0dyb3VwKG1vOiBJTWFuYWdlZE9iamVjdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIW1vW0dyb3VwRnJhZ21lbnQuZHluYW1pY0dyb3VwRnJhZ21lbnRdIHx8IG1vLnR5cGUgPT09IEdyb3VwRnJhZ21lbnQuZHluYW1pY0dyb3VwVHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBhIGdpdmVuIG1hbmFnZWQgb2JqZWN0IGlzIGEgZGF0YSBicm9rZXIuXG4gICAqIEBwYXJhbSBtbyBNYW5hZ2VkIG9iamVjdCB0byBiZSBjaGVja2VkLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRydWUgaWYgdGhlIG1hbmFnZWQgb2JqZWN0IGlzIGEgZGF0YSBicm9rZXIuXG4gICAqL1xuICBpc0RhdGFCcm9rZXIobW86IElNYW5hZ2VkT2JqZWN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgICEhbW9bR3JvdXBGcmFnbWVudC5kYXRhQnJva2VyU291cmNlRnJhZ21lbnRdIHx8ICEhbW9bdGhpcy5kYXRhQnJva2VyU291cmNlRnJhZ21lbnRJbmFjdGl2ZV1cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gbWFuYWdlZCBvYmplY3QgaXMgYSBkYXRhIGJyb2tlciBhY3RpdmUuXG4gICAqIEBwYXJhbSBtbyBNYW5hZ2VkIG9iamVjdCB0byBiZSBjaGVja2VkLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRydWUgaWYgdGhlIG1hbmFnZWQgb2JqZWN0IGlzIGEgZGF0YSBicm9rZXIgYWN0aXZlLlxuICAgKi9cbiAgaXNEYXRhQnJva2VyQWN0aXZlKG1vOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHJldHVybiAoXG4gICAgICAhIW1vW0dyb3VwRnJhZ21lbnQuZGF0YUJyb2tlclNvdXJjZUZyYWdtZW50XSAmJiAhbW9bdGhpcy5kYXRhQnJva2VyU291cmNlRnJhZ21lbnRJbmFjdGl2ZV1cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gbWFuYWdlZCBvYmplY3QgaXMgYW4gYXNzZXQuXG4gICAqIEBwYXJhbSBtbyBNYW5hZ2VkIG9iamVjdCB0byBiZSBjaGVja2VkLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRydWUgaWYgdGhlIG1hbmFnZWQgb2JqZWN0IGlzIGFuIGFzc2V0LlxuICAgKi9cbiAgaXNBc3NldChtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICByZXR1cm4gISFtby5jOHlfSXNBc3NldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciB0aGUgb2JqZWN0IGJlbG9uZ3MgdG8gYW55IHR5cGUgb2YgZ3JvdXAuXG4gICAqIFR5cGVzIG9mIGdyb3VwczogZ3JvdXAsIGR5bmFtaWMgZ3JvdXAsIGRhdGEgYnJva2VyLCBkYXRhIGJyb2tlciBhY3RpdmUuXG4gICAqIEBwYXJhbSBtbyBNYW5hZ2VkIG9iamVjdCB0byBiZSBjaGVja2VkLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRydWUgaWYgdGhlIG1hbmFnZWQgb2JqZWN0IGJlbG9uZ3MgdG8gdGhlIGdyb3VwIGNhdGVnb3J5LlxuICAgKi9cbiAgaXNBbnlHcm91cChtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5pc0dyb3VwKG1vKSB8fFxuICAgICAgdGhpcy5pc0R5bmFtaWNHcm91cChtbykgfHxcbiAgICAgIHRoaXMuaXNEYXRhQnJva2VyKG1vKSB8fFxuICAgICAgdGhpcy5pc0RhdGFCcm9rZXJBY3RpdmUobW8pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBhIGdpdmVuIG1hbmFnZWQgb2JqZWN0IGlzIGEgZGV2aWNlLlxuICAgKiBAcGFyYW0gbW8gTWFuYWdlZCBvYmplY3QgdG8gYmUgY2hlY2tlZC5cbiAgICogQHJldHVybnMgUmV0dXJucyB0cnVlIGlmIHRoZSBtYW5hZ2VkIG9iamVjdCBpcyBhIGRldmljZS5cbiAgICovXG4gIGlzRGV2aWNlKG1vOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHJldHVybiAhIW1vLmM4eV9Jc0RldmljZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QXNzZXRDdXN0b21JY29uKG1vVHlwZTogc3RyaW5nLCBvcGVuID0gZmFsc2UpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmFzc2V0VHlwZXNTZXJ2aWNlLmdldEljb24obW9UeXBlLCBvcGVuKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdEljb24obW9UeXBlOiBNb1R5cGVzKTogSWNvbiB7XG4gICAgcmV0dXJuIHRoaXMuaWNvbnNbbW9UeXBlXTtcbiAgfVxuXG4gIHByaXZhdGUgZGV0ZXJtaW5lTW9UeXBlKG1vOiBJTWFuYWdlZE9iamVjdCk6IE1vVHlwZXMge1xuICAgIGlmICh0aGlzLmlzQXNzZXQobW8pKSB7XG4gICAgICByZXR1cm4gJ2Fzc2V0JztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0R5bmFtaWNHcm91cChtbykpIHtcbiAgICAgIHJldHVybiAnZHluYW1pY0dyb3VwJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0RhdGFCcm9rZXJBY3RpdmUobW8pKSB7XG4gICAgICByZXR1cm4gJ2Jyb2tlclNvdXJjZSc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNEYXRhQnJva2VyKG1vKSkge1xuICAgICAgcmV0dXJuICdicm9rZXJTb3VyY2VJbmFjdGl2ZSc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNHcm91cChtbykpIHtcbiAgICAgIHJldHVybiAnZ3JvdXAnO1xuICAgIH1cblxuICAgIHJldHVybiAnb3RoZXInO1xuICB9XG59XG4iXX0=
|
|
@@ -199,10 +199,10 @@ export class SearchInputComponent {
|
|
|
199
199
|
}
|
|
200
200
|
}
|
|
201
201
|
SearchInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SearchInputComponent, deps: [{ token: i1.Router }, { token: i2.InventoryService }, { token: i3.InventorySearchService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
202
|
-
SearchInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SearchInputComponent, selector: "c8y-search-input", inputs: { mode: "mode", enableCustomTemplatePlaceholder: "enableCustomTemplatePlaceholder", externalTerm: "externalTerm", customDataQuery: "customDataQuery", container: "container", groupsOnly: "groupsOnly" }, outputs: { filter: "filter", search: "search", reset: "reset", onClick: "onClick" }, host: { listeners: { "document:keydown": "onKeydownHandler($event)" } }, viewQueries: [{ propertyName: "typeahead", first: true, predicate: TypeaheadComponent, descendants: true }, { propertyName: "dropdown", first: true, predicate: ["searchDropdown"], descendants: true }], ngImport: i0, template: "<div\n class=\"dropdown\"\n dropdown\n #searchDropdown=\"bs-dropdown\"\n [insideClick]=\"true\"\n (isOpenChange)=\"onOpenChange($event)\"\n *ngIf=\"mode === 'search'\"\n [cdkTrapFocus]=\"searchDropdown.isOpen\"\n>\n <button\n class=\"main-header-button dropdown-toggle c8y-dropdown\"\n dropdownToggle\n type=\"button\"\n [title]=\"'Search' | translate\"\n data-cy=\"search-input--search-btn\"\n >\n <i c8yIcon=\"search\" class=\"icon-2x\"></i>\n </button>\n\n <div\n id=\"searchDropdown\"\n *dropdownMenu\n class=\"search-header-menu dropdown-menu dropdown-menu-right\"\n >\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n </div>\n</div>\n\n<div class=\"search-header-inline\" *ngIf=\"mode === 'select'\">\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n</div>\n<ng-template #form>\n <form [ngClass]=\"{ 'c8y-search-form': mode === 'search' }\" novalidate #searchForm=\"ngForm\">\n <c8y-typeahead\n [(ngModel)]=\"selected\"\n placeholder=\"{{ 'Search for groups or assets\u2026' | translate }}\"\n (keydown)=\"keyDown($event)\"\n (onIconClick)=\"onReset($event)\"\n [icon]=\"term ? 'times' : 'search'\"\n [allowFreeEntries]=\"false\"\n [container]=\"container\"\n name=\"selected\"\n title=\"Search\"\n >\n <div\n *ngIf=\"enableCustomTemplatePlaceholder && mode === 'search'\"\n class=\"c8y-list__item p-l-24 p-r-24 p-b-8 separator-bottom sticky-top p-t-4\"\n >\n <ng-content></ng-content>\n </div>\n\n <!-- filter buttons -->\n <c8y-li *ngIf=\"term.length !== 0\" class=\"p-l-16 p-r-16\">\n <div class=\"d-flex\" *ngIf=\"mode === 'search'\">\n <p class=\"m-r-4 text-muted\">\n <em translate>Searching by exact match. Click for other search options:</em>\n </p>\n <div class=\"btn-group btn-group-sm\">\n <button\n type=\"button\"\n class=\"btn btn-default\"\n title=\"{{ 'Starts with' | translate }}\"\n data-cy=\"search-input--search-starts-with\"\n (click)=\"onFilter(term + '*')\"\n >\n {{ 'Starts with' | translate }}\n </button>\n <button\n type=\"button\"\n class=\"btn btn-default\"\n title=\"{{ 'Contains' | translate }}\"\n data-cy=\"search-input--search-contains\"\n (click)=\"onFilter('*' + term + '*')\"\n >\n {{ 'Contains' | translate }}\n </button>\n <button\n type=\"button\"\n class=\"btn btn-default\"\n title=\"{{ 'Ends with' | translate }}\"\n data-cy=\"search-input--search-ends-with\"\n (click)=\"onFilter('*' + term)\"\n >\n {{ 'Ends with' | translate }}\n </button>\n </div>\n </div>\n </c8y-li>\n\n <!-- Recent search -->\n <c8y-li\n *ngIf=\"term.length === 0 && recentSearchResults.length > 0\"\n [selectable]=\"false\"\n class=\"p-l-24 p-r-24\"\n >\n <div class=\"legend form-block\">\n <span translate>Recent search views</span>\n </div>\n </c8y-li>\n <c8y-li\n *ngFor=\"let result of term.length === 0 ? recentSearchResults : []\"\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i [c8yIcon]=\"result | getGroupIcon\" class=\"c8y-icon-duocolor\"></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Recently registered devices -->\n <c8y-li\n *ngIf=\"term.length === 0 && (recentlyRegisteredResults$ | async)?.data?.length > 0 && !groupsOnly\"\n class=\"p-l-24 p-r-24\"\n [selectable]=\"false\"\n >\n <div class=\"legend form-block\">\n <span translate>Recently registered devices</span>\n </div>\n </c8y-li>\n <c8y-li\n *c8yFor=\"\n let result of (term.length === 0 && !groupsOnly) ? recentlyRegisteredResults$ : { data: [] };\n loadMore: 'none';\n \"\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i [c8yIcon]=\"result | getGroupIcon\" class=\"c8y-icon-duocolor\"></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Search results -->\n <c8y-li *ngIf=\"term.length !== 0\" class=\"p-l-24 p-r-24\" [selectable]=\"false\">\n <div class=\"legend form-block\">\n <span translate>Search results</span>\n </div>\n </c8y-li>\n <c8y-li\n *c8yFor=\"\n let result of results$;\n loadMore: 'auto';\n notFound: notFoundTemplate;\n loadingTemplate: loading;\n loadNextLabel: 'Find more\u2026'\n \"\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n (click)=\"open($event, result, result.name)\"\n [title]=\"result.name\"\n data-cy=\"search-input--search-results\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i [c8yIcon]=\"result | getGroupIcon\" class=\"c8y-icon-duocolor\"></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- No search results found entry -->\n <ng-template #notFoundTemplate>\n <c8y-li *ngIf=\"noMatch\" class=\"p-16 c8y-empty-state\" data-cy=\"search-input--empty-state\" [selectable]=\"false\">\n <c8y-li-icon [icon]=\"'search'\"></c8y-li-icon>\n <p><strong translate>No match found.</strong></p>\n <small translate *ngIf=\"mode === 'search'\">\n Try to filter or open the asset grid to show all devices and groups.\n </small>\n <small translate *ngIf=\"mode === 'select'\">Try to rephrase your search word.</small>\n </c8y-li>\n </ng-template>\n\n <!-- loading bar first entries -->\n <c8y-li *ngIf=\"isLoading\" class=\"p-t-32 p-b-0\" style=\"position: relative\">\n <div class=\"spinner\" style=\"right: 0\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n </div>\n </c8y-li>\n\n <!-- loading bar for loading more entries (inventory roles) -->\n <ng-template #loading>\n <c8y-li class=\"text-center p-t-32 p-b-0\" style=\"position: relative\">\n <div class=\"spinner\" style=\"right: 0\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n </div>\n </c8y-li>\n </ng-template>\n\n <!-- more filter possibilities -->\n <c8y-li\n class=\"m-t-24 bg-level-2 p-t-16 p-b-16 p-l-24 p-r-24 sticky-bottom\"\n [selectable]=\"false\"\n *ngIf=\"mode === 'search'\"\n >\n <div class=\"d-flex a-i-center\">\n <i c8yIcon=\"info-circle\" class=\"text-info m-r-4\"></i>\n <p translate class=\"m-r-8\">Need more filter possibilities?</p>\n <button\n title=\"{{ 'Go to the asset data table' | translate }}\"\n data-cy=\"search-input--asset-table-btn\"\n type=\"button\"\n class=\"m-l-16 btn btn-default btn-sm\"\n (mousedown)=\"onOpenAssetTable()\"\n >\n {{ 'Go to the asset data table' | translate }}\n </button>\n </div>\n </c8y-li>\n </c8y-typeahead>\n </form>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i4.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i6.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i6.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i7.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i8.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i10.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount"] }, { kind: "component", type: i11.TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected"], outputs: ["onSearch", "onIconClick"] }, { kind: "component", type: i12.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i13.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i14.DeviceStatusComponent, selector: "device-status", inputs: ["mo"] }, { kind: "pipe", type: i15.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: i16.ShouldShowMoPipe, name: "shouldShowMo" }, { kind: "pipe", type: i17.GetGroupIconPipe, name: "getGroupIcon" }] });
|
|
202
|
+
SearchInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SearchInputComponent, selector: "c8y-search-input", inputs: { mode: "mode", enableCustomTemplatePlaceholder: "enableCustomTemplatePlaceholder", externalTerm: "externalTerm", customDataQuery: "customDataQuery", container: "container", groupsOnly: "groupsOnly" }, outputs: { filter: "filter", search: "search", reset: "reset", onClick: "onClick" }, host: { listeners: { "document:keydown": "onKeydownHandler($event)" } }, viewQueries: [{ propertyName: "typeahead", first: true, predicate: TypeaheadComponent, descendants: true }, { propertyName: "dropdown", first: true, predicate: ["searchDropdown"], descendants: true }], ngImport: i0, template: "<div\n class=\"dropdown\"\n dropdown\n #searchDropdown=\"bs-dropdown\"\n [insideClick]=\"true\"\n (isOpenChange)=\"onOpenChange($event)\"\n *ngIf=\"mode === 'search'\"\n [cdkTrapFocus]=\"searchDropdown.isOpen\"\n>\n <button\n class=\"main-header-button dropdown-toggle c8y-dropdown\"\n [title]=\"'Search' | translate\"\n type=\"button\"\n dropdownToggle\n data-cy=\"search-input--search-btn\"\n >\n <i\n class=\"icon-2x\"\n c8yIcon=\"search\"\n ></i>\n </button>\n\n <div\n class=\"search-header-menu dropdown-menu dropdown-menu-right\"\n id=\"searchDropdown\"\n *dropdownMenu\n >\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n </div>\n</div>\n\n<div \n class=\"search-header-inline\" \n *ngIf=\"mode === 'select'\"\n>\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n</div>\n<ng-template #form>\n <form \n [ngClass]=\"{ 'c8y-search-form': mode === 'search' }\" \n novalidate \n #searchForm=\"ngForm\"\n >\n <c8y-typeahead\n [(ngModel)]=\"selected\"\n placeholder=\"{{ 'Search for groups or assets\u2026' | translate }}\"\n (keydown)=\"keyDown($event)\"\n (onIconClick)=\"onReset($event)\"\n [icon]=\"term ? 'times' : 'search'\"\n [allowFreeEntries]=\"false\"\n [container]=\"container\"\n name=\"selected\"\n title=\"Search\"\n >\n <div\n class=\"c8y-list__item p-l-24 p-r-24 p-b-8 separator-bottom sticky-top p-t-4\"\n *ngIf=\"enableCustomTemplatePlaceholder && mode === 'search'\"\n >\n <ng-content></ng-content>\n </div>\n\n <!-- filter buttons -->\n <c8y-li *ngIf=\"term.length !== 0\" class=\"p-l-16 p-r-16\">\n <div class=\"d-flex\" *ngIf=\"mode === 'search'\">\n <p class=\"m-r-4 text-muted\">\n <em translate>Searching by exact match. Click for other search options:</em>\n </p>\n <div class=\"btn-group btn-group-sm\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Starts with' | translate }}\"\n data-cy=\"search-input--search-starts-with\"\n (click)=\"onFilter(term + '*')\"\n >\n {{ 'Starts with' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Contains' | translate }}\"\n data-cy=\"search-input--search-contains\"\n (click)=\"onFilter('*' + term + '*')\"\n >\n {{ 'Contains' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Ends with' | translate }}\"\n data-cy=\"search-input--search-ends-with\"\n (click)=\"onFilter('*' + term)\"\n >\n {{ 'Ends with' | translate }}\n </button>\n </div>\n </div>\n </c8y-li>\n\n <!-- Recent search -->\n <c8y-li\n class=\"p-l-24 p-r-24\"\n *ngIf=\"term.length === 0 && recentSearchResults.length > 0\"\n [selectable]=\"false\"\n >\n <div class=\"legend form-block\">\n <span translate>Recent search views</span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n *ngFor=\"let result of term.length === 0 ? recentSearchResults : []\"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i \n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n >\n </i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Recently registered devices -->\n <c8y-li\n *ngIf=\"term.length === 0 && (recentlyRegisteredResults$ | async)?.data?.length > 0 && !groupsOnly\"\n class=\"p-l-24 p-r-24\"\n [selectable]=\"false\"\n >\n <div class=\"legend form-block\">\n <span translate>Recently registered devices</span>\n </div>\n </c8y-li>\n <c8y-li\n *c8yFor=\"\n let result of (term.length === 0 && !groupsOnly) ? recentlyRegisteredResults$ : { data: [] };\n loadMore: 'none';\n \"\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i \n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\" \n >\n </i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Search results -->\n <c8y-li *ngIf=\"term.length !== 0\" class=\"p-l-24 p-r-24\" [selectable]=\"false\">\n <div class=\"legend form-block\">\n <span translate>Search results</span>\n </div>\n </c8y-li>\n <c8y-li\n *c8yFor=\"\n let result of results$;\n loadMore: 'auto';\n notFound: notFoundTemplate;\n loadingTemplate: loading;\n loadNextLabel: 'Find more\u2026'\n \"\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n (click)=\"open($event, result, result.name)\"\n [title]=\"result.name\"\n data-cy=\"search-input--search-results\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i \n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n >\n </i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- No search results found entry -->\n <ng-template #notFoundTemplate>\n <c8y-li *ngIf=\"noMatch\" class=\"p-16 c8y-empty-state\" data-cy=\"search-input--empty-state\" [selectable]=\"false\">\n <c8y-li-icon [icon]=\"'search'\"></c8y-li-icon>\n <p><strong translate>No match found.</strong></p>\n <small translate *ngIf=\"mode === 'search'\">\n Try to filter or open the asset grid to show all devices and groups.\n </small>\n <small translate *ngIf=\"mode === 'select'\">Try to rephrase your search word.</small>\n </c8y-li>\n </ng-template>\n\n <!-- loading bar first entries -->\n <c8y-li *ngIf=\"isLoading\" class=\"p-t-32 p-b-0\" style=\"position: relative\">\n <div class=\"spinner\" style=\"right: 0\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n </div>\n </c8y-li>\n\n <!-- loading bar for loading more entries (inventory roles) -->\n <ng-template #loading>\n <c8y-li class=\"text-center p-t-32 p-b-0\" style=\"position: relative\">\n <div class=\"spinner\" style=\"right: 0\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n </div>\n </c8y-li>\n </ng-template>\n\n <!-- more filter possibilities -->\n <c8y-li\n class=\"m-t-24 bg-level-2 p-t-16 p-b-16 p-l-24 p-r-24 sticky-bottom\"\n [selectable]=\"false\"\n *ngIf=\"mode === 'search'\"\n >\n <div class=\"d-flex a-i-center\">\n <i c8yIcon=\"info-circle\" class=\"text-info m-r-4\"></i>\n <p translate class=\"m-r-8\">Need more filter possibilities?</p>\n <button\n class=\"m-l-16 btn btn-default btn-sm\"\n title=\"{{ 'Go to the asset data table' | translate }}\"\n data-cy=\"search-input--asset-table-btn\"\n type=\"button\"\n (mousedown)=\"onOpenAssetTable()\"\n >\n {{ 'Go to the asset data table' | translate }}\n </button>\n </div>\n </c8y-li>\n </c8y-typeahead>\n </form>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i4.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i6.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i6.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i7.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i8.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i10.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount"] }, { kind: "component", type: i11.TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected"], outputs: ["onSearch", "onIconClick"] }, { kind: "component", type: i12.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i13.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i14.DeviceStatusComponent, selector: "device-status", inputs: ["mo"] }, { kind: "pipe", type: i15.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: i16.ShouldShowMoPipe, name: "shouldShowMo" }, { kind: "pipe", type: i17.GetGroupIconPipe, name: "getGroupIcon" }] });
|
|
203
203
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SearchInputComponent, decorators: [{
|
|
204
204
|
type: Component,
|
|
205
|
-
args: [{ selector: 'c8y-search-input', template: "<div\n class=\"dropdown\"\n dropdown\n #searchDropdown=\"bs-dropdown\"\n [insideClick]=\"true\"\n (isOpenChange)=\"onOpenChange($event)\"\n *ngIf=\"mode === 'search'\"\n [cdkTrapFocus]=\"searchDropdown.isOpen\"\n>\n <button\n class=\"main-header-button dropdown-toggle c8y-dropdown\"\n
|
|
205
|
+
args: [{ selector: 'c8y-search-input', template: "<div\n class=\"dropdown\"\n dropdown\n #searchDropdown=\"bs-dropdown\"\n [insideClick]=\"true\"\n (isOpenChange)=\"onOpenChange($event)\"\n *ngIf=\"mode === 'search'\"\n [cdkTrapFocus]=\"searchDropdown.isOpen\"\n>\n <button\n class=\"main-header-button dropdown-toggle c8y-dropdown\"\n [title]=\"'Search' | translate\"\n type=\"button\"\n dropdownToggle\n data-cy=\"search-input--search-btn\"\n >\n <i\n class=\"icon-2x\"\n c8yIcon=\"search\"\n ></i>\n </button>\n\n <div\n class=\"search-header-menu dropdown-menu dropdown-menu-right\"\n id=\"searchDropdown\"\n *dropdownMenu\n >\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n </div>\n</div>\n\n<div \n class=\"search-header-inline\" \n *ngIf=\"mode === 'select'\"\n>\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n</div>\n<ng-template #form>\n <form \n [ngClass]=\"{ 'c8y-search-form': mode === 'search' }\" \n novalidate \n #searchForm=\"ngForm\"\n >\n <c8y-typeahead\n [(ngModel)]=\"selected\"\n placeholder=\"{{ 'Search for groups or assets\u2026' | translate }}\"\n (keydown)=\"keyDown($event)\"\n (onIconClick)=\"onReset($event)\"\n [icon]=\"term ? 'times' : 'search'\"\n [allowFreeEntries]=\"false\"\n [container]=\"container\"\n name=\"selected\"\n title=\"Search\"\n >\n <div\n class=\"c8y-list__item p-l-24 p-r-24 p-b-8 separator-bottom sticky-top p-t-4\"\n *ngIf=\"enableCustomTemplatePlaceholder && mode === 'search'\"\n >\n <ng-content></ng-content>\n </div>\n\n <!-- filter buttons -->\n <c8y-li *ngIf=\"term.length !== 0\" class=\"p-l-16 p-r-16\">\n <div class=\"d-flex\" *ngIf=\"mode === 'search'\">\n <p class=\"m-r-4 text-muted\">\n <em translate>Searching by exact match. Click for other search options:</em>\n </p>\n <div class=\"btn-group btn-group-sm\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Starts with' | translate }}\"\n data-cy=\"search-input--search-starts-with\"\n (click)=\"onFilter(term + '*')\"\n >\n {{ 'Starts with' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Contains' | translate }}\"\n data-cy=\"search-input--search-contains\"\n (click)=\"onFilter('*' + term + '*')\"\n >\n {{ 'Contains' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Ends with' | translate }}\"\n data-cy=\"search-input--search-ends-with\"\n (click)=\"onFilter('*' + term)\"\n >\n {{ 'Ends with' | translate }}\n </button>\n </div>\n </div>\n </c8y-li>\n\n <!-- Recent search -->\n <c8y-li\n class=\"p-l-24 p-r-24\"\n *ngIf=\"term.length === 0 && recentSearchResults.length > 0\"\n [selectable]=\"false\"\n >\n <div class=\"legend form-block\">\n <span translate>Recent search views</span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n *ngFor=\"let result of term.length === 0 ? recentSearchResults : []\"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i \n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n >\n </i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Recently registered devices -->\n <c8y-li\n *ngIf=\"term.length === 0 && (recentlyRegisteredResults$ | async)?.data?.length > 0 && !groupsOnly\"\n class=\"p-l-24 p-r-24\"\n [selectable]=\"false\"\n >\n <div class=\"legend form-block\">\n <span translate>Recently registered devices</span>\n </div>\n </c8y-li>\n <c8y-li\n *c8yFor=\"\n let result of (term.length === 0 && !groupsOnly) ? recentlyRegisteredResults$ : { data: [] };\n loadMore: 'none';\n \"\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i \n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\" \n >\n </i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Search results -->\n <c8y-li *ngIf=\"term.length !== 0\" class=\"p-l-24 p-r-24\" [selectable]=\"false\">\n <div class=\"legend form-block\">\n <span translate>Search results</span>\n </div>\n </c8y-li>\n <c8y-li\n *c8yFor=\"\n let result of results$;\n loadMore: 'auto';\n notFound: notFoundTemplate;\n loadingTemplate: loading;\n loadNextLabel: 'Find more\u2026'\n \"\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n (click)=\"open($event, result, result.name)\"\n [title]=\"result.name\"\n data-cy=\"search-input--search-results\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i \n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n >\n </i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- No search results found entry -->\n <ng-template #notFoundTemplate>\n <c8y-li *ngIf=\"noMatch\" class=\"p-16 c8y-empty-state\" data-cy=\"search-input--empty-state\" [selectable]=\"false\">\n <c8y-li-icon [icon]=\"'search'\"></c8y-li-icon>\n <p><strong translate>No match found.</strong></p>\n <small translate *ngIf=\"mode === 'search'\">\n Try to filter or open the asset grid to show all devices and groups.\n </small>\n <small translate *ngIf=\"mode === 'select'\">Try to rephrase your search word.</small>\n </c8y-li>\n </ng-template>\n\n <!-- loading bar first entries -->\n <c8y-li *ngIf=\"isLoading\" class=\"p-t-32 p-b-0\" style=\"position: relative\">\n <div class=\"spinner\" style=\"right: 0\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n </div>\n </c8y-li>\n\n <!-- loading bar for loading more entries (inventory roles) -->\n <ng-template #loading>\n <c8y-li class=\"text-center p-t-32 p-b-0\" style=\"position: relative\">\n <div class=\"spinner\" style=\"right: 0\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n </div>\n </c8y-li>\n </ng-template>\n\n <!-- more filter possibilities -->\n <c8y-li\n class=\"m-t-24 bg-level-2 p-t-16 p-b-16 p-l-24 p-r-24 sticky-bottom\"\n [selectable]=\"false\"\n *ngIf=\"mode === 'search'\"\n >\n <div class=\"d-flex a-i-center\">\n <i c8yIcon=\"info-circle\" class=\"text-info m-r-4\"></i>\n <p translate class=\"m-r-8\">Need more filter possibilities?</p>\n <button\n class=\"m-l-16 btn btn-default btn-sm\"\n title=\"{{ 'Go to the asset data table' | translate }}\"\n data-cy=\"search-input--asset-table-btn\"\n type=\"button\"\n (mousedown)=\"onOpenAssetTable()\"\n >\n {{ 'Go to the asset data table' | translate }}\n </button>\n </div>\n </c8y-li>\n </c8y-typeahead>\n </form>\n</ng-template>\n" }]
|
|
206
206
|
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.InventoryService }, { type: i3.InventorySearchService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { mode: [{
|
|
207
207
|
type: Input
|
|
208
208
|
}], enableCustomTemplatePlaceholder: [{
|
|
@@ -233,4 +233,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
233
233
|
type: HostListener,
|
|
234
234
|
args: ['document:keydown', ['$event']]
|
|
235
235
|
}] } });
|
|
236
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc2VhcmNoL3NlYXJjaC1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL3NlYXJjaC9zZWFyY2gtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFrQixnQkFBZ0IsRUFBdUIsTUFBTSxhQUFhLENBQUM7QUFDcEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQWlCLE1BQU0sTUFBTSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTXBFLE1BQU0sT0FBTyxvQkFBb0I7SUFtRS9CLFlBQ1UsTUFBYyxFQUNkLFNBQTJCLEVBQzNCLHNCQUE4QyxFQUM5QyxFQUFxQjtRQUhyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtR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LE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNuQyxDQUFDOztpSEF4T1Usb0JBQW9CO3FHQUFwQixvQkFBb0IsbWRBNkRwQixrQkFBa0IsNklDbkYvQixnMlFBeU9BOzJGRG5OYSxvQkFBb0I7a0JBSmhDLFNBQVM7K0JBQ0Usa0JBQWtCO2lNQUs1QixJQUFJO3NCQURILEtBQUs7Z0JBTUcsK0JBQStCO3NCQUF2QyxLQUFLO2dCQU1HLFlBQVk7c0JBQXBCLEtBQUs7Z0JBS0YsZUFBZTtzQkFEbEIsS0FBSztnQkFNRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR04sTUFBTTtzQkFETCxNQUFNO2dCQUlQLE1BQU07c0JBREwsTUFBTTtnQkFJUCxLQUFLO3NCQURKLE1BQU07Z0JBSVAsT0FBTztzQkFETixNQUFNO2dCQTBCQyxTQUFTO3NCQURoQixTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFJeEMsUUFBUTtzQkFEZixTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkF5Q0EsZ0JBQWdCO3NCQUE3RCxZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCwgSW52ZW50b3J5U2VydmljZSwgSVJlc3VsdExpc3QsIFBhZ2luZyB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEJzRHJvcGRvd25EaXJlY3RpdmUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2Ryb3Bkb3duJztcbmltcG9ydCB7IGRlZmVyLCBlbXB0eSwgbWVyZ2UsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCBVbmFyeUZ1bmN0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTWFuYWdlZE9iamVjdFR5cGUgfSBmcm9tICcuLi9jb21tb24vbWFuYWdlZC1vYmplY3QtdHlwZSc7XG5pbXBvcnQgeyBUeXBlYWhlYWRDb21wb25lbnQgfSBmcm9tICcuLi9zZWxlY3QvdHlwZWFoZWFkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnZlbnRvcnlTZWFyY2hTZXJ2aWNlIH0gZnJvbSAnLi9pbnZlbnRvcnktc2VhcmNoLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktc2VhcmNoLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1pbnB1dC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoSW5wdXRDb21wb25lbnQge1xuICBASW5wdXQoKVxuICBtb2RlOiAnc2VhcmNoJyB8ICdzZWxlY3QnID0gJ3NlYXJjaCc7XG5cbiAgLyoqXG4gICAqIFVubG9ja3MgdGhlIGFiaWxpdHkgdG8gcGxhY2UgYSBjdXN0b20gdGVtcGxhdGUgdW5kZXIgdGhlIHNlYXJjaCBpbnB1dC5cbiAgICovXG4gIEBJbnB1dCgpIGVuYWJsZUN1c3RvbVRlbXBsYXRlUGxhY2Vob2xkZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogRXZlbnQsIHdoaWNoIGlzIHVzZWQgdG8gc2V0IGEgbmV3IGV4dGVybmFsIHRlcm0uIFBhc3NpbmcgbnVsbCB3aWxsIHJlLWV4ZWN1dGUgdGhlIHF1ZXJ5IHRvIEJFLlxuICAgKiBUaGlzIGFsbG93cyBuZXcgZmlsdGVycyB0byBiZSBhcHBsaWVkIHRvIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdGVybS5cbiAgICovXG4gIEBJbnB1dCgpIGV4dGVybmFsVGVybTogRXZlbnRFbWl0dGVyPHN0cmluZz47XG4gIC8qKlxuICAgKiBBIGN1c3RvbSBxdWVyeSBzZXR0ZXIgdXNlZCB0byBvdmVycmlkZSB0aGUgc3RhbmRhcmQgcXVlcnkuIEluIG9yZGVyIHRvIG9idGFpbiBkYXRhLlxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGN1c3RvbURhdGFRdWVyeShxdWVyeTogVW5hcnlGdW5jdGlvbjxzdHJpbmcsIE9ic2VydmFibGU8SVJlc3VsdExpc3Q8SU1hbmFnZWRPYmplY3Q+Pj4pIHtcbiAgICBpZiAocXVlcnkpIHtcbiAgICAgIHRoaXMuY3VzdG9tUXVlcnkgPSBxdWVyeTtcbiAgICB9XG4gIH1cbiAgQElucHV0KCkgY29udGFpbmVyOiAnJyB8ICdib2R5JyA9ICcnO1xuXG4gIEBJbnB1dCgpIGdyb3Vwc09ubHk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KClcbiAgZmlsdGVyID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHNlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIEBPdXRwdXQoKVxuICByZXNldCA9IG5ldyBFdmVudEVtaXR0ZXI8SU1hbmFnZWRPYmplY3Q+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPElNYW5hZ2VkT2JqZWN0PigpO1xuXG4gIGRldmljZVR5cGU6IHR5cGVvZiBNYW5hZ2VkT2JqZWN0VHlwZSA9IE1hbmFnZWRPYmplY3RUeXBlO1xuICB0ZXJtID0gJyc7XG4gIHNlbGVjdGVkO1xuXG4gIGN1c3RvbVF1ZXJ5OiAodGV4dDogc3RyaW5nKSA9PiBPYnNlcnZhYmxlPElSZXN1bHRMaXN0PElNYW5hZ2VkT2JqZWN0Pj47XG4gIHJlc3VsdHMkOiBPYnNlcnZhYmxlPElSZXN1bHRMaXN0PElNYW5hZ2VkT2JqZWN0Pj47XG4gIHJlY2VudFNlYXJjaFJlc3VsdHM6IElNYW5hZ2VkT2JqZWN0W10gPSBbXTtcbiAgcmVjZW50bHlSZWdpc3RlcmVkUmVzdWx0cyQ6IE9ic2VydmFibGU8SVJlc3VsdExpc3Q8SU1hbmFnZWRPYmplY3Q+PjtcbiAgaXNMb2FkaW5nID0gZmFsc2U7XG4gIG5vTWF0Y2ggPSBmYWxzZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IFJFQ0VOVF9TRUFSQ0hfU1RPUkFHRV9LRVkgPSAncmVjZW50X3NlYXJjaF92aWV3JztcbiAgcHJpdmF0ZSByZWFkb25seSBNQVhfUkVDRU5UX1NFQVJDSF9SRVNVTFRTID0gNTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0ZJTFRFUjogb2JqZWN0ID0ge1xuICAgIHdpdGhUb3RhbFBhZ2VzOiB0cnVlLFxuICAgIHBhZ2VTaXplOiA1LFxuICAgIHdpdGhDaGlsZHJlbjogZmFsc2VcbiAgfTtcbiAgcHJpdmF0ZSByZWFkb25seSBLRVlDT0RFX0VOVEVSID0gJ0VudGVyJztcbiAgcHJpdmF0ZSByZWFkb25seSBLRVlDT0RFX0VTQyA9ICdFc2NhcGUnO1xuICBwcml2YXRlIG9uRGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIEBWaWV3Q2hpbGQoVHlwZWFoZWFkQ29tcG9uZW50LCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcHJpdmF0ZSB0eXBlYWhlYWQ6IFR5cGVhaGVhZENvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKCdzZWFyY2hEcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBwcml2YXRlIGRyb3Bkb3duOiBCc0Ryb3Bkb3duRGlyZWN0aXZlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnk6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnlTZWFyY2hTZXJ2aWNlOiBJbnZlbnRvcnlTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCByZWNlbnRTZWFyY2hJZHMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuUkVDRU5UX1NFQVJDSF9TVE9SQUdFX0tFWSkpO1xuICAgIGlmIChyZWNlbnRTZWFyY2hJZHMgJiYgcmVjZW50U2VhcmNoSWRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5pbnZlbnRvcnkubGlzdCh7IGlkczogcmVjZW50U2VhcmNoSWRzLmpvaW4oJywnKSB9KTtcbiAgICAgIHRoaXMucmVjZW50U2VhcmNoUmVzdWx0cyA9IHRoaXMuZ3JvdXBzT25seVxuICAgICAgICA/IHRoaXMuaW52ZW50b3J5U2VhcmNoU2VydmljZS5maWx0ZXJPbmx5R3JvdXBzKGRhdGEpXG4gICAgICAgIDogZGF0YTtcbiAgICAgIHRoaXMucmVjZW50bHlSZWdpc3RlcmVkUmVzdWx0cyQgPSBkZWZlcigoKSA9PlxuICAgICAgICB0aGlzLmludmVudG9yeS5saXN0KHtcbiAgICAgICAgICBxOiAnJG9yZGVyYnk9Y3JlYXRpb25UaW1lIGRlc2MnLFxuICAgICAgICAgIC4uLnRoaXMuREVGQVVMVF9GSUxURVJcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICh0aGlzLm1vZGUgPT09ICdzZWxlY3QnKSB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICB0aGlzLnN1YnNjcmliZU9uU2VhcmNoKCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5leHRlcm5hbFRlcm0pIHtcbiAgICAgIHRoaXMuZXh0ZXJuYWxUZXJtLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpLnN1YnNjcmliZSh0ZXJtID0+IHtcbiAgICAgICAgaWYgKHRlcm0gPT09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLnR5cGVhaGVhZC5vblNlYXJjaC5lbWl0KHRoaXMudGVybSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudHlwZWFoZWFkLm9uU2VhcmNoLmVtaXQodGVybSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSkgb25LZXlkb3duSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChldmVudC5rZXkgPT09IHRoaXMuS0VZQ09ERV9FU0MpIHtcbiAgICAgIHRoaXMuaGlkZURyb3Bkb3duKCk7XG4gICAgfVxuICB9XG5cbiAgb25PcGVuQ2hhbmdlKGlzT3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChpc09wZW4pIHtcbiAgICAgIC8vIG5lZWRzIHRvIHJlcXVlc3QgYW4gYW5pbWF0aW9uIGZyYW1lIGFzXG4gICAgICAvLyBvdGhlcndpc2UgdGhlIHR5cGVhaGVhZCBpcyB1bmRlZmluZWRcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc3Vic2NyaWJlT25TZWFyY2goKTtcbiAgICAgICAgdGhpcy50eXBlYWhlYWQuZHJvcGRvd24uc2hvdygpO1xuICAgICAgICB0aGlzLnR5cGVhaGVhZC5zZWFyY2hDb250cm9sLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG9wZW4oZXZlbnQ6IEV2ZW50LCBtbzogSU1hbmFnZWRPYmplY3QsIHRlcm0/KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3QgaXNBbHJlYWR5UmVjZW50ID0gdGhpcy5yZWNlbnRTZWFyY2hSZXN1bHRzLmZpbmQoKHsgaWQgfSkgPT4gaWQgPT09IG1vLmlkKTtcbiAgICBpZiAoIWlzQWxyZWFkeVJlY2VudCkge1xuICAgICAgdGhpcy5yZWNlbnRTZWFyY2hSZXN1bHRzLnVuc2hpZnQobW8pO1xuICAgICAgdGhpcy5yZWNlbnRTZWFyY2hSZXN1bHRzID0gdGhpcy5yZWNlbnRTZWFyY2hSZXN1bHRzLnNsaWNlKDAsIHRoaXMuTUFYX1JFQ0VOVF9TRUFSQ0hfUkVTVUxUUyk7XG4gICAgfVxuICAgIGNvbnN0IHJlY2VudFNlYXJjaElkcyA9IHRoaXMucmVjZW50U2VhcmNoUmVzdWx0cy5tYXAoKHsgaWQgfSkgPT4gaWQpO1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuUkVDRU5UX1NFQVJDSF9TVE9SQUdFX0tFWSwgSlNPTi5zdHJpbmdpZnkocmVjZW50U2VhcmNoSWRzKSk7XG4gICAgaWYgKHRlcm0pIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQgPSBtbztcbiAgICAgIHRoaXMudGVybSA9IHRlcm07XG4gICAgfVxuICAgIHRoaXMub25DbGljay5lbWl0KG1vKTtcbiAgICB0aGlzLmhpZGVEcm9wZG93bigpO1xuICB9XG5cbiAgb25SZXNldChzdGF0dXM6IHsgaWNvbjogc3RyaW5nOyAkZXZlbnQ6IE1vdXNlRXZlbnQgfSkge1xuICAgIHN0YXR1cy4kZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5yZXNldC5lbWl0KHRoaXMuc2VsZWN0ZWQpO1xuICAgIHRoaXMudHlwZWFoZWFkLm9uU2VhcmNoLmVtaXQoJycpO1xuICAgIHRoaXMuc2VsZWN0ZWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy50eXBlYWhlYWQuc2VhcmNoQ29udHJvbC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBrZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gdGhpcy5LRVlDT0RFX0VOVEVSKSB7XG4gICAgICAvLyBlbnRlciBoaXQgY2FuIGJlIGZhc3RlciB0aGVuIHR5cGVhaGVhZCBkZWJvdW5jZSxcbiAgICAgIC8vIHRoZXJlZm9yZSB3ZSB0YWtlIHRoZSB0ZXJtIGZyb20gdGhlIERPTSBlbGVtZW50XG4gICAgICAvLyBpdHNlbGY6XG4gICAgICBjb25zdCBzZWFyY2hUZXJtID0gKGV2ZW50LnRhcmdldCBhcyBhbnkpLnZhbHVlO1xuICAgICAgdGhpcy5vblNlYXJjaChzZWFyY2hUZXJtKTtcbiAgICB9XG4gIH1cblxuICBvblNlYXJjaChzZWFyY2g6IHN0cmluZykge1xuICAgIHRoaXMuc2VhcmNoLmVtaXQoc2VhcmNoKTtcbiAgICB0aGlzLmhpZGVEcm9wZG93bigpO1xuICB9XG5cbiAgb25GaWx0ZXIoc2VhcmNoOiBzdHJpbmcpIHtcbiAgICB0aGlzLmZpbHRlci5lbWl0KHNlYXJjaCk7XG4gICAgdGhpcy5oaWRlRHJvcGRvd24oKTtcbiAgfVxuXG4gIG9uT3BlbkFzc2V0VGFibGUoKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnL2Fzc2V0c2VhcmNoJyk7XG4gICAgdGhpcy5oaWRlRHJvcGRvd24oKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLm9uRGVzdHJveSQpIHtcbiAgICAgIHRoaXMub25EZXN0cm95JC5uZXh0KCk7XG4gICAgICB0aGlzLm9uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhpZGVEcm9wZG93bigpIHtcbiAgICBpZiAodGhpcy5kcm9wZG93bikge1xuICAgICAgdGhpcy5kcm9wZG93bi5oaWRlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHlwZWFoZWFkICYmIHRoaXMudHlwZWFoZWFkLmRyb3Bkb3duKSB7XG4gICAgICB0aGlzLnR5cGVhaGVhZC5kcm9wZG93bi5oaWRlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVPblNlYXJjaCgpIHtcbiAgICBpZiAoIXRoaXMucmVzdWx0cyQpIHtcbiAgICAgIHRoaXMucmVzdWx0cyQgPSB0aGlzLnR5cGVhaGVhZC5vblNlYXJjaC5waXBlKFxuICAgICAgICB0YXAodGVybSA9PiB0aGlzLm9uVHlwaW5nU3RhcnRlZCh0ZXJtKSksXG4gICAgICAgIHN3aXRjaE1hcCh0ZXJtID0+IHRoaXMubWVyZ2VSZXF1ZXN0KHRlcm0pKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1lcmdlUmVxdWVzdCh0ZXJtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPElSZXN1bHRMaXN0PElNYW5hZ2VkT2JqZWN0Pj4ge1xuICAgIHJldHVybiBtZXJnZShcbiAgICAgIG9mKHsgZGF0YTogW10gfSBhcyBJUmVzdWx0TGlzdDxJTWFuYWdlZE9iamVjdD4pLFxuICAgICAgdGhpcy5oYW5kbGVRdWVyeSh0ZXJtKS5waXBlKHRhcCgoeyBkYXRhLCBwYWdpbmcgfSkgPT4gdGhpcy5vbkxvYWRpbmdEb25lKGRhdGEsIHBhZ2luZykpKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVF1ZXJ5KHRlcm06IHN0cmluZykge1xuICAgIGlmICghdGVybSkge1xuICAgICAgcmV0dXJuIGVtcHR5KCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmN1c3RvbVF1ZXJ5KSB7XG4gICAgICByZXR1cm4gZGVmZXIoKCkgPT4gdGhpcy5jdXN0b21RdWVyeSh0ZXJtKSk7XG4gICAgfVxuICAgIHJldHVybiBkZWZlcigoKSA9PlxuICAgICAgdGhpcy5ncm91cHNPbmx5XG4gICAgICAgID8gdGhpcy5pbnZlbnRvcnlTZWFyY2hTZXJ2aWNlLnNlYXJjaEdyb3Vwcyh0ZXJtKVxuICAgICAgICA6IHRoaXMuaW52ZW50b3J5U2VhcmNoU2VydmljZS5zZWFyY2godGVybSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkxvYWRpbmdEb25lKGRhdGE6IElNYW5hZ2VkT2JqZWN0W10sIHBhZ2luZzogUGFnaW5nPElNYW5hZ2VkT2JqZWN0Pikge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5ub01hdGNoID0gcGFnaW5nICYmIHBhZ2luZy5uZXh0UGFnZSA9PT0gbnVsbCAmJiBkYXRhLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIHByaXZhdGUgb25UeXBpbmdTdGFydGVkKHRlcm0pIHtcbiAgICB0aGlzLm5vTWF0Y2ggPSBmYWxzZTtcbiAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdGVybS5sZW5ndGggPiAwO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiZHJvcGRvd25cIlxuICBkcm9wZG93blxuICAjc2VhcmNoRHJvcGRvd249XCJicy1kcm9wZG93blwiXG4gIFtpbnNpZGVDbGlja109XCJ0cnVlXCJcbiAgKGlzT3BlbkNoYW5nZSk9XCJvbk9wZW5DaGFuZ2UoJGV2ZW50KVwiXG4gICpuZ0lmPVwibW9kZSA9PT0gJ3NlYXJjaCdcIlxuICBbY2RrVHJhcEZvY3VzXT1cInNlYXJjaERyb3Bkb3duLmlzT3BlblwiXG4+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cIm1haW4taGVhZGVyLWJ1dHRvbiBkcm9wZG93bi10b2dnbGUgYzh5LWRyb3Bkb3duXCJcbiAgICBkcm9wZG93blRvZ2dsZVxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIFt0aXRsZV09XCInU2VhcmNoJyB8IHRyYW5zbGF0ZVwiXG4gICAgZGF0YS1jeT1cInNlYXJjaC1pbnB1dC0tc2VhcmNoLWJ0blwiXG4gID5cbiAgICA8aSBjOHlJY29uPVwic2VhcmNoXCIgY2xhc3M9XCJpY29uLTJ4XCI+PC9pPlxuICA8L2J1dHRvbj5cblxuICA8ZGl2XG4gICAgaWQ9XCJzZWFyY2hEcm9wZG93blwiXG4gICAgKmRyb3Bkb3duTWVudVxuICAgIGNsYXNzPVwic2VhcmNoLWhlYWRlci1tZW51IGRyb3Bkb3duLW1lbnUgZHJvcGRvd24tbWVudS1yaWdodFwiXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9ybVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwic2VhcmNoLWhlYWRlci1pbmxpbmVcIiAqbmdJZj1cIm1vZGUgPT09ICdzZWxlY3QnXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb3JtXCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjZm9ybT5cbiAgPGZvcm0gW25nQ2xhc3NdPVwieyAnYzh5LXNlYXJjaC1mb3JtJzogbW9kZSA9PT0gJ3NlYXJjaCcgfVwiIG5vdmFsaWRhdGUgI3NlYXJjaEZvcm09XCJuZ0Zvcm1cIj5cbiAgICA8Yzh5LXR5cGVhaGVhZFxuICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFwiXG4gICAgICBwbGFjZWhvbGRlcj1cInt7ICdTZWFyY2ggZm9yIGdyb3VwcyBvciBhc3NldHPigKYnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIChrZXlkb3duKT1cImtleURvd24oJGV2ZW50KVwiXG4gICAgICAob25JY29uQ2xpY2spPVwib25SZXNldCgkZXZlbnQpXCJcbiAgICAgIFtpY29uXT1cInRlcm0gPyAndGltZXMnIDogJ3NlYXJjaCdcIlxuICAgICAgW2FsbG93RnJlZUVudHJpZXNdPVwiZmFsc2VcIlxuICAgICAgW2NvbnRhaW5lcl09XCJjb250YWluZXJcIlxuICAgICAgbmFtZT1cInNlbGVjdGVkXCJcbiAgICAgIHRpdGxlPVwiU2VhcmNoXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiZW5hYmxlQ3VzdG9tVGVtcGxhdGVQbGFjZWhvbGRlciAmJiBtb2RlID09PSAnc2VhcmNoJ1wiXG4gICAgICAgIGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW0gcC1sLTI0IHAtci0yNCBwLWItOCBzZXBhcmF0b3ItYm90dG9tIHN0aWNreS10b3AgcC10LTRcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBmaWx0ZXIgYnV0dG9ucyAtLT5cbiAgICAgIDxjOHktbGkgKm5nSWY9XCJ0ZXJtLmxlbmd0aCAhPT0gMFwiIGNsYXNzPVwicC1sLTE2IHAtci0xNlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgKm5nSWY9XCJtb2RlID09PSAnc2VhcmNoJ1wiPlxuICAgICAgICAgIDxwIGNsYXNzPVwibS1yLTQgdGV4dC1tdXRlZFwiPlxuICAgICAgICAgICAgPGVtIHRyYW5zbGF0ZT5TZWFyY2hpbmcgYnkgZXhhY3QgbWF0Y2guIENsaWNrIGZvciBvdGhlciBzZWFyY2ggb3B0aW9uczo8L2VtPlxuICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIGJ0bi1ncm91cC1zbVwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgICAgICAgICB0aXRsZT1cInt7ICdTdGFydHMgd2l0aCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICBkYXRhLWN5PVwic2VhcmNoLWlucHV0LS1zZWFyY2gtc3RhcnRzLXdpdGhcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25GaWx0ZXIodGVybSArICcqJylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAnU3RhcnRzIHdpdGgnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQ29udGFpbnMnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgZGF0YS1jeT1cInNlYXJjaC1pbnB1dC0tc2VhcmNoLWNvbnRhaW5zXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRmlsdGVyKCcqJyArIHRlcm0gKyAnKicpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ0NvbnRhaW5zJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0VuZHMgd2l0aCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICBkYXRhLWN5PVwic2VhcmNoLWlucHV0LS1zZWFyY2gtZW5kcy13aXRoXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRmlsdGVyKCcqJyArIHRlcm0pXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ0VuZHMgd2l0aCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYzh5LWxpPlxuXG4gICAgICA8IS0tIFJlY2VudCBzZWFyY2ggLS0+XG4gICAgICA8Yzh5LWxpXG4gICAgICAgICpuZ0lmPVwidGVybS5sZW5ndGggPT09IDAgJiYgcmVjZW50U2VhcmNoUmVzdWx0cy5sZW5ndGggPiAwXCJcbiAgICAgICAgW3NlbGVjdGFibGVdPVwiZmFsc2VcIlxuICAgICAgICBjbGFzcz1cInAtbC0yNCBwLXItMjRcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kIGZvcm0tYmxvY2tcIj5cbiAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+UmVjZW50IHNlYXJjaCB2aWV3czwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2M4eS1saT5cbiAgICAgIDxjOHktbGlcbiAgICAgICAgKm5nRm9yPVwibGV0IHJlc3VsdCBvZiB0ZXJtLmxlbmd0aCA9PT0gMCA/IHJlY2VudFNlYXJjaFJlc3VsdHMgOiBbXVwiXG4gICAgICAgIGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW0tLWxpbmsgbS1sLTE2IG0tci0xNlwiXG4gICAgICAgIChjbGljayk9XCJvcGVuKCRldmVudCwgcmVzdWx0LCByZXN1bHQubmFtZSlcIlxuICAgICAgPlxuICAgICAgICA8Yzh5LWxpLWljb24+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlc3VsdCB8IHNob3VsZFNob3dNbzogZGV2aWNlVHlwZS5ERVZJQ0U7IGVsc2UgZ3JvdXBcIj5cbiAgICAgICAgICAgIDxkZXZpY2Utc3RhdHVzIFttb109XCJyZXN1bHRcIj48L2RldmljZS1zdGF0dXM+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNncm91cD5cbiAgICAgICAgICAgIDxpIFtjOHlJY29uXT1cInJlc3VsdCB8IGdldEdyb3VwSWNvblwiIGNsYXNzPVwiYzh5LWljb24tZHVvY29sb3JcIj48L2k+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9jOHktbGktaWNvbj5cbiAgICAgICAge3sgcmVzdWx0Lm5hbWUgfHwgJy0tJyB9fVxuICAgICAgPC9jOHktbGk+XG5cbiAgICAgIDwhLS0gUmVjZW50bHkgcmVnaXN0ZXJlZCBkZXZpY2VzIC0tPlxuICAgICAgPGM4eS1saVxuICAgICAgICAqbmdJZj1cInRlcm0ubGVuZ3RoID09PSAwICYmIChyZWNlbnRseVJlZ2lzdGVyZWRSZXN1bHRzJCB8IGFzeW5jKT8uZGF0YT8ubGVuZ3RoID4gMCAmJiAhZ3JvdXBzT25seVwiXG4gICAgICAgIGNsYXNzPVwicC1sLTI0IHAtci0yNFwiXG4gICAgICAgIFtzZWxlY3RhYmxlXT1cImZhbHNlXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZCBmb3JtLWJsb2NrXCI+XG4gICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPlJlY2VudGx5IHJlZ2lzdGVyZWQgZGV2aWNlczwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2M4eS1saT5cbiAgICAgIDxjOHktbGlcbiAgICAgICAgKmM4eUZvcj1cIlxuICAgICAgICAgIGxldCByZXN1bHQgb2YgKHRlcm0ubGVuZ3RoID09PSAwICYmICFncm91cHNPbmx5KSA/IHJlY2VudGx5UmVnaXN0ZXJlZFJlc3VsdHMkIDogeyBkYXRhOiBbXSB9O1xuICAgICAgICAgIGxvYWRNb3JlOiAnbm9uZSc7XG4gICAgICAgIFwiXG4gICAgICAgIGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW0tLWxpbmsgbS1sLTE2IG0tci0xNlwiXG4gICAgICAgIChjbGljayk9XCJvcGVuKCRldmVudCwgcmVzdWx0LCByZXN1bHQubmFtZSlcIlxuICAgICAgPlxuICAgICAgICA8Yzh5LWxpLWljb24+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlc3VsdCB8IHNob3VsZFNob3dNbzogZGV2aWNlVHlwZS5ERVZJQ0U7IGVsc2UgZ3JvdXBcIj5cbiAgICAgICAgICAgIDxkZXZpY2Utc3RhdHVzIFttb109XCJyZXN1bHRcIj48L2RldmljZS1zdGF0dXM+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNncm91cD5cbiAgICAgICAgICAgIDxpIFtjOHlJY29uXT1cInJlc3VsdCB8IGdldEdyb3VwSWNvblwiIGNsYXNzPVwiYzh5LWljb24tZHVvY29sb3JcIj48L2k+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9jOHktbGktaWNvbj5cbiAgICAgICAge3sgcmVzdWx0Lm5hbWUgfHwgJy0tJyB9fVxuICAgICAgPC9jOHktbGk+XG5cbiAgICAgIDwhLS0gU2VhcmNoIHJlc3VsdHMgLS0+XG4gICAgICA8Yzh5LWxpICpuZ0lmPVwidGVybS5sZW5ndGggIT09IDBcIiBjbGFzcz1cInAtbC0yNCBwLXItMjRcIiBbc2VsZWN0YWJsZV09XCJmYWxzZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kIGZvcm0tYmxvY2tcIj5cbiAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+U2VhcmNoIHJlc3VsdHM8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9jOHktbGk+XG4gICAgICA8Yzh5LWxpXG4gICAgICAgICpjOHlGb3I9XCJcbiAgICAgICAgICBsZXQgcmVzdWx0IG9mIHJlc3VsdHMkO1xuICAgICAgICAgIGxvYWRNb3JlOiAnYXV0byc7XG4gICAgICAgICAgbm90Rm91bmQ6IG5vdEZvdW5kVGVtcGxhdGU7XG4gICAgICAgICAgbG9hZGluZ1RlbXBsYXRlOiBsb2FkaW5nO1xuICAgICAgICAgIGxvYWROZXh0TGFiZWw6ICdGaW5kIG1vcmXigKYnXG4gICAgICAgIFwiXG4gICAgICAgIGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW0tLWxpbmsgbS1sLTE2IG0tci0xNlwiXG4gICAgICAgIChjbGljayk9XCJvcGVuKCRldmVudCwgcmVzdWx0LCByZXN1bHQubmFtZSlcIlxuICAgICAgICBbdGl0bGVdPVwicmVzdWx0Lm5hbWVcIlxuICAgICAgICBkYXRhLWN5PVwic2VhcmNoLWlucHV0LS1zZWFyY2gtcmVzdWx0c1wiXG4gICAgICA+XG4gICAgICAgIDxjOHktbGktaWNvbj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVzdWx0IHwgc2hvdWxkU2hvd01vOiBkZXZpY2VUeXBlLkRFVklDRTsgZWxzZSBncm91cFwiPlxuICAgICAgICAgICAgPGRldmljZS1zdGF0dXMgW21vXT1cInJlc3VsdFwiPjwvZGV2aWNlLXN0YXR1cz5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2dyb3VwPlxuICAgICAgICAgICAgPGkgW2M4eUljb25dPVwicmVzdWx0IHwgZ2V0R3JvdXBJY29uXCIgY2xhc3M9XCJjOHktaWNvbi1kdW9jb2xvclwiPjwvaT5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2M4eS1saS1pY29uPlxuICAgICAgICB7eyByZXN1bHQubmFtZSB8fCAnLS0nIH19XG4gICAgICA8L2M4eS1saT5cblxuICAgICAgPCEtLSBObyBzZWFyY2ggcmVzdWx0cyBmb3VuZCBlbnRyeSAtLT5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjbm90Rm91bmRUZW1wbGF0ZT5cbiAgICAgICAgPGM4eS1saSAqbmdJZj1cIm5vTWF0Y2hcIiBjbGFzcz1cInAtMTYgYzh5LWVtcHR5LXN0YXRlXCIgZGF0YS1jeT1cInNlYXJjaC1pbnB1dC0tZW1wdHktc3RhdGVcIiBbc2VsZWN0YWJsZV09XCJmYWxzZVwiPlxuICAgICAgICAgIDxjOHktbGktaWNvbiBbaWNvbl09XCInc2VhcmNoJ1wiPjwvYzh5LWxpLWljb24+XG4gICAgICAgICAgPHA+PHN0cm9uZyB0cmFuc2xhdGU+Tm8gbWF0Y2ggZm91bmQuPC9zdHJvbmc+PC9wPlxuICAgICAgICAgIDxzbWFsbCB0cmFuc2xhdGUgKm5nSWY9XCJtb2RlID09PSAnc2VhcmNoJ1wiPlxuICAgICAgICAgICAgVHJ5IHRvIGZpbHRlciBvciBvcGVuIHRoZSBhc3NldCBncmlkIHRvIHNob3cgYWxsIGRldmljZXMgYW5kIGdyb3Vwcy5cbiAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgIDxzbWFsbCB0cmFuc2xhdGUgKm5nSWY9XCJtb2RlID09PSAnc2VsZWN0J1wiPlRyeSB0byByZXBocmFzZSB5b3VyIHNlYXJjaCB3b3JkLjwvc21hbGw+XG4gICAgICAgIDwvYzh5LWxpPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPCEtLSBsb2FkaW5nIGJhciBmaXJzdCBlbnRyaWVzIC0tPlxuICAgICAgPGM4eS1saSAqbmdJZj1cImlzTG9hZGluZ1wiIGNsYXNzPVwicC10LTMyIHAtYi0wXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXJcIiBzdHlsZT1cInJpZ2h0OiAwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlY3QxXCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlY3QyXCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlY3QzXCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlY3Q0XCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlY3Q1XCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9jOHktbGk+XG5cbiAgICAgIDwhLS0gbG9hZGluZyBiYXIgZm9yIGxvYWRpbmcgbW9yZSBlbnRyaWVzIChpbnZlbnRvcnkgcm9sZXMpIC0tPlxuICAgICAgPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICAgICAgICA8Yzh5LWxpIGNsYXNzPVwidGV4dC1jZW50ZXIgcC10LTMyIHAtYi0wXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lclwiIHN0eWxlPVwicmlnaHQ6IDBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWN0MVwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlY3QyXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVjdDNcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWN0NFwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlY3Q1XCI+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYzh5LWxpPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPCEtLSBtb3JlIGZpbHRlciBwb3NzaWJpbGl0aWVzIC0tPlxuICAgICAgPGM4eS1saVxuICAgICAgICBjbGFzcz1cIm0tdC0yNCBiZy1sZXZlbC0yIHAtdC0xNiBwLWItMTYgcC1sLTI0IHAtci0yNCBzdGlja3ktYm90dG9tXCJcbiAgICAgICAgW3NlbGVjdGFibGVdPVwiZmFsc2VcIlxuICAgICAgICAqbmdJZj1cIm1vZGUgPT09ICdzZWFyY2gnXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhLWktY2VudGVyXCI+XG4gICAgICAgICAgPGkgYzh5SWNvbj1cImluZm8tY2lyY2xlXCIgY2xhc3M9XCJ0ZXh0LWluZm8gbS1yLTRcIj48L2k+XG4gICAgICAgICAgPHAgdHJhbnNsYXRlIGNsYXNzPVwibS1yLThcIj5OZWVkIG1vcmUgZmlsdGVyIHBvc3NpYmlsaXRpZXM/PC9wPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHRpdGxlPVwie3sgJ0dvIHRvIHRoZSBhc3NldCBkYXRhIHRhYmxlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICBkYXRhLWN5PVwic2VhcmNoLWlucHV0LS1hc3NldC10YWJsZS1idG5cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cIm0tbC0xNiBidG4gYnRuLWRlZmF1bHQgYnRuLXNtXCJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25PcGVuQXNzZXRUYWJsZSgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnR28gdG8gdGhlIGFzc2V0IGRhdGEgdGFibGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9jOHktbGk+XG4gICAgPC9jOHktdHlwZWFoZWFkPlxuICA8L2Zvcm0+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
236
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc2VhcmNoL3NlYXJjaC1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL3NlYXJjaC9zZWFyY2gtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFrQixnQkFBZ0IsRUFBdUIsTUFBTSxhQUFhLENBQUM7QUFDcEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQWlCLE1BQU0sTUFBTSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTXBFLE1BQU0sT0FBTyxvQkFBb0I7SUFtRS9CLFlBQ1UsTUFBYyxFQUNkLFNBQTJCLEVBQzNCLHNCQUE4QyxFQUM5QyxFQUFxQjtRQUhyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtR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LE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNuQyxDQUFDOztpSEF4T1Usb0JBQW9CO3FHQUFwQixvQkFBb0IsbWRBNkRwQixrQkFBa0IsNklDbkYvQixvbVJBK1BBOzJGRHpPYSxvQkFBb0I7a0JBSmhDLFNBQVM7K0JBQ0Usa0JBQWtCO2lNQUs1QixJQUFJO3NCQURILEtBQUs7Z0JBTUcsK0JBQStCO3NCQUF2QyxLQUFLO2dCQU1HLFlBQVk7c0JBQXBCLEtBQUs7Z0JBS0YsZUFBZTtzQkFEbEIsS0FBSztnQkFNRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR04sTUFBTTtzQkFETCxNQUFNO2dCQUlQLE1BQU07c0JBREwsTUFBTTtnQkFJUCxLQUFLO3NCQURKLE1BQU07Z0JBSVAsT0FBTztzQkFETixNQUFNO2dCQTBCQyxTQUFTO3NCQURoQixTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFJeEMsUUFBUTtzQkFEZixTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkF5Q0EsZ0JBQWdCO3NCQUE3RCxZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCwgSW52ZW50b3J5U2VydmljZSwgSVJlc3VsdExpc3QsIFBhZ2luZyB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEJzRHJvcGRvd25EaXJlY3RpdmUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2Ryb3Bkb3duJztcbmltcG9ydCB7IGRlZmVyLCBlbXB0eSwgbWVyZ2UsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCBVbmFyeUZ1bmN0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTWFuYWdlZE9iamVjdFR5cGUgfSBmcm9tICcuLi9jb21tb24vbWFuYWdlZC1vYmplY3QtdHlwZSc7XG5pbXBvcnQgeyBUeXBlYWhlYWRDb21wb25lbnQgfSBmcm9tICcuLi9zZWxlY3QvdHlwZWFoZWFkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnZlbnRvcnlTZWFyY2hTZXJ2aWNlIH0gZnJvbSAnLi9pbnZlbnRvcnktc2VhcmNoLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktc2VhcmNoLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1pbnB1dC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoSW5wdXRDb21wb25lbnQge1xuICBASW5wdXQoKVxuICBtb2RlOiAnc2VhcmNoJyB8ICdzZWxlY3QnID0gJ3NlYXJjaCc7XG5cbiAgLyoqXG4gICAqIFVubG9ja3MgdGhlIGFiaWxpdHkgdG8gcGxhY2UgYSBjdXN0b20gdGVtcGxhdGUgdW5kZXIgdGhlIHNlYXJjaCBpbnB1dC5cbiAgICovXG4gIEBJbnB1dCgpIGVuYWJsZUN1c3RvbVRlbXBsYXRlUGxhY2Vob2xkZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogRXZlbnQsIHdoaWNoIGlzIHVzZWQgdG8gc2V0IGEgbmV3IGV4dGVybmFsIHRlcm0uIFBhc3NpbmcgbnVsbCB3aWxsIHJlLWV4ZWN1dGUgdGhlIHF1ZXJ5IHRvIEJFLlxuICAgKiBUaGlzIGFsbG93cyBuZXcgZmlsdGVycyB0byBiZSBhcHBsaWVkIHRvIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdGVybS5cbiAgICovXG4gIEBJbnB1dCgpIGV4dGVybmFsVGVybTogRXZlbnRFbWl0dGVyPHN0cmluZz47XG4gIC8qKlxuICAgKiBBIGN1c3RvbSBxdWVyeSBzZXR0ZXIgdXNlZCB0byBvdmVycmlkZSB0aGUgc3RhbmRhcmQgcXVlcnkuIEluIG9yZGVyIHRvIG9idGFpbiBkYXRhLlxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGN1c3RvbURhdGFRdWVyeShxdWVyeTogVW5hcnlGdW5jdGlvbjxzdHJpbmcsIE9ic2VydmFibGU8SVJlc3VsdExpc3Q8SU1hbmFnZWRPYmplY3Q+Pj4pIHtcbiAgICBpZiAocXVlcnkpIHtcbiAgICAgIHRoaXMuY3VzdG9tUXVlcnkgPSBxdWVyeTtcbiAgICB9XG4gIH1cbiAgQElucHV0KCkgY29udGFpbmVyOiAnJyB8ICdib2R5JyA9ICcnO1xuXG4gIEBJbnB1dCgpIGdyb3Vwc09ubHk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KClcbiAgZmlsdGVyID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHNlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIEBPdXRwdXQoKVxuICByZXNldCA9IG5ldyBFdmVudEVtaXR0ZXI8SU1hbmFnZWRPYmplY3Q+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPElNYW5hZ2VkT2JqZWN0PigpO1xuXG4gIGRldmljZVR5cGU6IHR5cGVvZiBNYW5hZ2VkT2JqZWN0VHlwZSA9IE1hbmFnZWRPYmplY3RUeXBlO1xuICB0ZXJtID0gJyc7XG4gIHNlbGVjdGVkO1xuXG4gIGN1c3RvbVF1ZXJ5OiAodGV4dDogc3RyaW5nKSA9PiBPYnNlcnZhYmxlPElSZXN1bHRMaXN0PElNYW5hZ2VkT2JqZWN0Pj47XG4gIHJlc3VsdHMkOiBPYnNlcnZhYmxlPElSZXN1bHRMaXN0PElNYW5hZ2VkT2JqZWN0Pj47XG4gIHJlY2VudFNlYXJjaFJlc3VsdHM6IElNYW5hZ2VkT2JqZWN0W10gPSBbXTtcbiAgcmVjZW50bHlSZWdpc3RlcmVkUmVzdWx0cyQ6IE9ic2VydmFibGU8SVJlc3VsdExpc3Q8SU1hbmFnZWRPYmplY3Q+PjtcbiAgaXNMb2FkaW5nID0gZmFsc2U7XG4gIG5vTWF0Y2ggPSBmYWxzZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IFJFQ0VOVF9TRUFSQ0hfU1RPUkFHRV9LRVkgPSAncmVjZW50X3NlYXJjaF92aWV3JztcbiAgcHJpdmF0ZSByZWFkb25seSBNQVhfUkVDRU5UX1NFQVJDSF9SRVNVTFRTID0gNTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0ZJTFRFUjogb2JqZWN0ID0ge1xuICAgIHdpdGhUb3RhbFBhZ2VzOiB0cnVlLFxuICAgIHBhZ2VTaXplOiA1LFxuICAgIHdpdGhDaGlsZHJlbjogZmFsc2VcbiAgfTtcbiAgcHJpdmF0ZSByZWFkb25seSBLRVlDT0RFX0VOVEVSID0gJ0VudGVyJztcbiAgcHJpdmF0ZSByZWFkb25seSBLRVlDT0RFX0VTQyA9ICdFc2NhcGUnO1xuICBwcml2YXRlIG9uRGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIEBWaWV3Q2hpbGQoVHlwZWFoZWFkQ29tcG9uZW50LCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcHJpdmF0ZSB0eXBlYWhlYWQ6IFR5cGVhaGVhZENvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKCdzZWFyY2hEcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBwcml2YXRlIGRyb3Bkb3duOiBCc0Ryb3Bkb3duRGlyZWN0aXZlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnk6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnlTZWFyY2hTZXJ2aWNlOiBJbnZlbnRvcnlTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCByZWNlbnRTZWFyY2hJZHMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuUkVDRU5UX1NFQVJDSF9TVE9SQUdFX0tFWSkpO1xuICAgIGlmIChyZWNlbnRTZWFyY2hJZHMgJiYgcmVjZW50U2VhcmNoSWRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5pbnZlbnRvcnkubGlzdCh7IGlkczogcmVjZW50U2VhcmNoSWRzLmpvaW4oJywnKSB9KTtcbiAgICAgIHRoaXMucmVjZW50U2VhcmNoUmVzdWx0cyA9IHRoaXMuZ3JvdXBzT25seVxuICAgICAgICA/IHRoaXMuaW52ZW50b3J5U2VhcmNoU2VydmljZS5maWx0ZXJPbmx5R3JvdXBzKGRhdGEpXG4gICAgICAgIDogZGF0YTtcbiAgICAgIHRoaXMucmVjZW50bHlSZWdpc3RlcmVkUmVzdWx0cyQgPSBkZWZlcigoKSA9PlxuICAgICAgICB0aGlzLmludmVudG9yeS5saXN0KHtcbiAgICAgICAgICBxOiAnJG9yZGVyYnk9Y3JlYXRpb25UaW1lIGRlc2MnLFxuICAgICAgICAgIC4uLnRoaXMuREVGQVVMVF9GSUxURVJcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICh0aGlzLm1vZGUgPT09ICdzZWxlY3QnKSB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICB0aGlzLnN1YnNjcmliZU9uU2VhcmNoKCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5leHRlcm5hbFRlcm0pIHtcbiAgICAgIHRoaXMuZXh0ZXJuYWxUZXJtLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpLnN1YnNjcmliZSh0ZXJtID0+IHtcbiAgICAgICAgaWYgKHRlcm0gPT09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLnR5cGVhaGVhZC5vblNlYXJjaC5lbWl0KHRoaXMudGVybSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudHlwZWFoZWFkLm9uU2VhcmNoLmVtaXQodGVybSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSkgb25LZXlkb3duSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChldmVudC5rZXkgPT09IHRoaXMuS0VZQ09ERV9FU0MpIHtcbiAgICAgIHRoaXMuaGlkZURyb3Bkb3duKCk7XG4gICAgfVxuICB9XG5cbiAgb25PcGVuQ2hhbmdlKGlzT3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChpc09wZW4pIHtcbiAgICAgIC8vIG5lZWRzIHRvIHJlcXVlc3QgYW4gYW5pbWF0aW9uIGZyYW1lIGFzXG4gICAgICAvLyBvdGhlcndpc2UgdGhlIHR5cGVhaGVhZCBpcyB1bmRlZmluZWRcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc3Vic2NyaWJlT25TZWFyY2goKTtcbiAgICAgICAgdGhpcy50eXBlYWhlYWQuZHJvcGRvd24uc2hvdygpO1xuICAgICAgICB0aGlzLnR5cGVhaGVhZC5zZWFyY2hDb250cm9sLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG9wZW4oZXZlbnQ6IEV2ZW50LCBtbzogSU1hbmFnZWRPYmplY3QsIHRlcm0/KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3QgaXNBbHJlYWR5UmVjZW50ID0gdGhpcy5yZWNlbnRTZWFyY2hSZXN1bHRzLmZpbmQoKHsgaWQgfSkgPT4gaWQgPT09IG1vLmlkKTtcbiAgICBpZiAoIWlzQWxyZWFkeVJlY2VudCkge1xuICAgICAgdGhpcy5yZWNlbnRTZWFyY2hSZXN1bHRzLnVuc2hpZnQobW8pO1xuICAgICAgdGhpcy5yZWNlbnRTZWFyY2hSZXN1bHRzID0gdGhpcy5yZWNlbnRTZWFyY2hSZXN1bHRzLnNsaWNlKDAsIHRoaXMuTUFYX1JFQ0VOVF9TRUFSQ0hfUkVTVUxUUyk7XG4gICAgfVxuICAgIGNvbnN0IHJlY2VudFNlYXJjaElkcyA9IHRoaXMucmVjZW50U2VhcmNoUmVzdWx0cy5tYXAoKHsgaWQgfSkgPT4gaWQpO1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuUkVDRU5UX1NFQVJDSF9TVE9SQUdFX0tFWSwgSlNPTi5zdHJpbmdpZnkocmVjZW50U2VhcmNoSWRzKSk7XG4gICAgaWYgKHRlcm0pIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQgPSBtbztcbiAgICAgIHRoaXMudGVybSA9IHRlcm07XG4gICAgfVxuICAgIHRoaXMub25DbGljay5lbWl0KG1vKTtcbiAgICB0aGlzLmhpZGVEcm9wZG93bigpO1xuICB9XG5cbiAgb25SZXNldChzdGF0dXM6IHsgaWNvbjogc3RyaW5nOyAkZXZlbnQ6IE1vdXNlRXZlbnQgfSkge1xuICAgIHN0YXR1cy4kZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5yZXNldC5lbWl0KHRoaXMuc2VsZWN0ZWQpO1xuICAgIHRoaXMudHlwZWFoZWFkLm9uU2VhcmNoLmVtaXQoJycpO1xuICAgIHRoaXMuc2VsZWN0ZWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy50eXBlYWhlYWQuc2VhcmNoQ29udHJvbC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBrZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gdGhpcy5LRVlDT0RFX0VOVEVSKSB7XG4gICAgICAvLyBlbnRlciBoaXQgY2FuIGJlIGZhc3RlciB0aGVuIHR5cGVhaGVhZCBkZWJvdW5jZSxcbiAgICAgIC8vIHRoZXJlZm9yZSB3ZSB0YWtlIHRoZSB0ZXJtIGZyb20gdGhlIERPTSBlbGVtZW50XG4gICAgICAvLyBpdHNlbGY6XG4gICAgICBjb25zdCBzZWFyY2hUZXJtID0gKGV2ZW50LnRhcmdldCBhcyBhbnkpLnZhbHVlO1xuICAgICAgdGhpcy5vblNlYXJjaChzZWFyY2hUZXJtKTtcbiAgICB9XG4gIH1cblxuICBvblNlYXJjaChzZWFyY2g6IHN0cmluZykge1xuICAgIHRoaXMuc2VhcmNoLmVtaXQoc2VhcmNoKTtcbiAgICB0aGlzLmhpZGVEcm9wZG93bigpO1xuICB9XG5cbiAgb25GaWx0ZXIoc2VhcmNoOiBzdHJpbmcpIHtcbiAgICB0aGlzLmZpbHRlci5lbWl0KHNlYXJjaCk7XG4gICAgdGhpcy5oaWRlRHJvcGRvd24oKTtcbiAgfVxuXG4gIG9uT3BlbkFzc2V0VGFibGUoKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnL2Fzc2V0c2VhcmNoJyk7XG4gICAgdGhpcy5oaWRlRHJvcGRvd24oKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLm9uRGVzdHJveSQpIHtcbiAgICAgIHRoaXMub25EZXN0cm95JC5uZXh0KCk7XG4gICAgICB0aGlzLm9uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhpZGVEcm9wZG93bigpIHtcbiAgICBpZiAodGhpcy5kcm9wZG93bikge1xuICAgICAgdGhpcy5kcm9wZG93bi5oaWRlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHlwZWFoZWFkICYmIHRoaXMudHlwZWFoZWFkLmRyb3Bkb3duKSB7XG4gICAgICB0aGlzLnR5cGVhaGVhZC5kcm9wZG93bi5oaWRlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVPblNlYXJjaCgpIHtcbiAgICBpZiAoIXRoaXMucmVzdWx0cyQpIHtcbiAgICAgIHRoaXMucmVzdWx0cyQgPSB0aGlzLnR5cGVhaGVhZC5vblNlYXJjaC5waXBlKFxuICAgICAgICB0YXAodGVybSA9PiB0aGlzLm9uVHlwaW5nU3RhcnRlZCh0ZXJtKSksXG4gICAgICAgIHN3aXRjaE1hcCh0ZXJtID0+IHRoaXMubWVyZ2VSZXF1ZXN0KHRlcm0pKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1lcmdlUmVxdWVzdCh0ZXJtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPElSZXN1bHRMaXN0PElNYW5hZ2VkT2JqZWN0Pj4ge1xuICAgIHJldHVybiBtZXJnZShcbiAgICAgIG9mKHsgZGF0YTogW10gfSBhcyBJUmVzdWx0TGlzdDxJTWFuYWdlZE9iamVjdD4pLFxuICAgICAgdGhpcy5oYW5kbGVRdWVyeSh0ZXJtKS5waXBlKHRhcCgoeyBkYXRhLCBwYWdpbmcgfSkgPT4gdGhpcy5vbkxvYWRpbmdEb25lKGRhdGEsIHBhZ2luZykpKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVF1ZXJ5KHRlcm06IHN0cmluZykge1xuICAgIGlmICghdGVybSkge1xuICAgICAgcmV0dXJuIGVtcHR5KCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmN1c3RvbVF1ZXJ5KSB7XG4gICAgICByZXR1cm4gZGVmZXIoKCkgPT4gdGhpcy5jdXN0b21RdWVyeSh0ZXJtKSk7XG4gICAgfVxuICAgIHJldHVybiBkZWZlcigoKSA9PlxuICAgICAgdGhpcy5ncm91cHNPbmx5XG4gICAgICAgID8gdGhpcy5pbnZlbnRvcnlTZWFyY2hTZXJ2aWNlLnNlYXJjaEdyb3Vwcyh0ZXJtKVxuICAgICAgICA6IHRoaXMuaW52ZW50b3J5U2VhcmNoU2VydmljZS5zZWFyY2godGVybSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkxvYWRpbmdEb25lKGRhdGE6IElNYW5hZ2VkT2JqZWN0W10sIHBhZ2luZzogUGFnaW5nPElNYW5hZ2VkT2JqZWN0Pikge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5ub01hdGNoID0gcGFnaW5nICYmIHBhZ2luZy5uZXh0UGFnZSA9PT0gbnVsbCAmJiBkYXRhLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIHByaXZhdGUgb25UeXBpbmdTdGFydGVkKHRlcm0pIHtcbiAgICB0aGlzLm5vTWF0Y2ggPSBmYWxzZTtcbiAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdGVybS5sZW5ndGggPiAwO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiZHJvcGRvd25cIlxuICBkcm9wZG93blxuICAjc2VhcmNoRHJvcGRvd249XCJicy1kcm9wZG93blwiXG4gIFtpbnNpZGVDbGlja109XCJ0cnVlXCJcbiAgKGlzT3BlbkNoYW5nZSk9XCJvbk9wZW5DaGFuZ2UoJGV2ZW50KVwiXG4gICpuZ0lmPVwibW9kZSA9PT0gJ3NlYXJjaCdcIlxuICBbY2RrVHJhcEZvY3VzXT1cInNlYXJjaERyb3Bkb3duLmlzT3BlblwiXG4+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cIm1haW4taGVhZGVyLWJ1dHRvbiBkcm9wZG93bi10b2dnbGUgYzh5LWRyb3Bkb3duXCJcbiAgICBbdGl0bGVdPVwiJ1NlYXJjaCcgfCB0cmFuc2xhdGVcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIGRyb3Bkb3duVG9nZ2xlXG4gICAgZGF0YS1jeT1cInNlYXJjaC1pbnB1dC0tc2VhcmNoLWJ0blwiXG4gID5cbiAgICA8aVxuICAgICAgY2xhc3M9XCJpY29uLTJ4XCJcbiAgICAgIGM4eUljb249XCJzZWFyY2hcIlxuICAgID48L2k+XG4gIDwvYnV0dG9uPlxuXG4gIDxkaXZcbiAgICBjbGFzcz1cInNlYXJjaC1oZWFkZXItbWVudSBkcm9wZG93bi1tZW51IGRyb3Bkb3duLW1lbnUtcmlnaHRcIlxuICAgIGlkPVwic2VhcmNoRHJvcGRvd25cIlxuICAgICpkcm9wZG93bk1lbnVcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb3JtXCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgXG4gIGNsYXNzPVwic2VhcmNoLWhlYWRlci1pbmxpbmVcIiBcbiAgKm5nSWY9XCJtb2RlID09PSAnc2VsZWN0J1wiXG4+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb3JtXCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjZm9ybT5cbiAgPGZvcm0gXG4gICAgW25nQ2xhc3NdPVwieyAnYzh5LXNlYXJjaC1mb3JtJzogbW9kZSA9PT0gJ3NlYXJjaCcgfVwiIFxuICAgIG5vdmFsaWRhdGUgXG4gICAgI3NlYXJjaEZvcm09XCJuZ0Zvcm1cIlxuICA+XG4gICAgPGM4eS10eXBlYWhlYWRcbiAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRcIlxuICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnU2VhcmNoIGZvciBncm91cHMgb3IgYXNzZXRz4oCmJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAoa2V5ZG93bik9XCJrZXlEb3duKCRldmVudClcIlxuICAgICAgKG9uSWNvbkNsaWNrKT1cIm9uUmVzZXQoJGV2ZW50KVwiXG4gICAgICBbaWNvbl09XCJ0ZXJtID8gJ3RpbWVzJyA6ICdzZWFyY2gnXCJcbiAgICAgIFthbGxvd0ZyZWVFbnRyaWVzXT1cImZhbHNlXCJcbiAgICAgIFtjb250YWluZXJdPVwiY29udGFpbmVyXCJcbiAgICAgIG5hbWU9XCJzZWxlY3RlZFwiXG4gICAgICB0aXRsZT1cIlNlYXJjaFwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImM4eS1saXN0X19pdGVtIHAtbC0yNCBwLXItMjQgcC1iLTggc2VwYXJhdG9yLWJvdHRvbSBzdGlja3ktdG9wIHAtdC00XCJcbiAgICAgICAgKm5nSWY9XCJlbmFibGVDdXN0b21UZW1wbGF0ZVBsYWNlaG9sZGVyICYmIG1vZGUgPT09ICdzZWFyY2gnXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gZmlsdGVyIGJ1dHRvbnMgLS0+XG4gICAgICA8Yzh5LWxpICpuZ0lmPVwidGVybS5sZW5ndGggIT09IDBcIiBjbGFzcz1cInAtbC0xNiBwLXItMTZcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiICpuZ0lmPVwibW9kZSA9PT0gJ3NlYXJjaCdcIj5cbiAgICAgICAgICA8cCBjbGFzcz1cIm0tci00IHRleHQtbXV0ZWRcIj5cbiAgICAgICAgICAgIDxlbSB0cmFuc2xhdGU+U2VhcmNoaW5nIGJ5IGV4YWN0IG1hdGNoLiBDbGljayBmb3Igb3RoZXIgc2VhcmNoIG9wdGlvbnM6PC9lbT5cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cCBidG4tZ3JvdXAtc21cIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnU3RhcnRzIHdpdGgnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgZGF0YS1jeT1cInNlYXJjaC1pbnB1dC0tc2VhcmNoLXN0YXJ0cy13aXRoXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRmlsdGVyKHRlcm0gKyAnKicpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ1N0YXJ0cyB3aXRoJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0NvbnRhaW5zJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIGRhdGEtY3k9XCJzZWFyY2gtaW5wdXQtLXNlYXJjaC1jb250YWluc1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkZpbHRlcignKicgKyB0ZXJtICsgJyonKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7ICdDb250YWlucycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICB0aXRsZT1cInt7ICdFbmRzIHdpdGgnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgZGF0YS1jeT1cInNlYXJjaC1pbnB1dC0tc2VhcmNoLWVuZHMtd2l0aFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkZpbHRlcignKicgKyB0ZXJtKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7ICdFbmRzIHdpdGgnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2M4eS1saT5cblxuICAgICAgPCEtLSBSZWNlbnQgc2VhcmNoIC0tPlxuICAgICAgPGM4eS1saVxuICAgICAgICBjbGFzcz1cInAtbC0yNCBwLXItMjRcIlxuICAgICAgICAqbmdJZj1cInRlcm0ubGVuZ3RoID09PSAwICYmIHJlY2VudFNlYXJjaFJlc3VsdHMubGVuZ3RoID4gMFwiXG4gICAgICAgIFtzZWxlY3RhYmxlXT1cImZhbHNlXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZCBmb3JtLWJsb2NrXCI+XG4gICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPlJlY2VudCBzZWFyY2ggdmlld3M8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9jOHktbGk+XG4gICAgICA8Yzh5LWxpXG4gICAgICAgIGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW0tLWxpbmsgbS1sLTE2IG0tci0xNlwiXG4gICAgICAgICpuZ0Zvcj1cImxldCByZXN1bHQgb2YgdGVybS5sZW5ndGggPT09IDAgPyByZWNlbnRTZWFyY2hSZXN1bHRzIDogW11cIlxuICAgICAgICAoY2xpY2spPVwib3BlbigkZXZlbnQsIHJlc3VsdCwgcmVzdWx0Lm5hbWUpXCJcbiAgICAgID5cbiAgICAgICAgPGM4eS1saS1pY29uPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXN1bHQgfCBzaG91bGRTaG93TW86IGRldmljZVR5cGUuREVWSUNFOyBlbHNlIGdyb3VwXCI+XG4gICAgICAgICAgICA8ZGV2aWNlLXN0YXR1cyBbbW9dPVwicmVzdWx0XCI+PC9kZXZpY2Utc3RhdHVzPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZ3JvdXA+XG4gICAgICAgICAgICA8aSBcbiAgICAgICAgICAgICAgY2xhc3M9XCJjOHktaWNvbi1kdW9jb2xvclwiXG4gICAgICAgICAgICAgIFtjOHlJY29uXT1cInJlc3VsdCB8IGdldEdyb3VwSWNvbiB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9pPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvYzh5LWxpLWljb24+XG4gICAgICAgIHt7IHJlc3VsdC5uYW1lIHx8ICctLScgfX1cbiAgICAgIDwvYzh5LWxpPlxuXG4gICAgICA8IS0tIFJlY2VudGx5IHJlZ2lzdGVyZWQgZGV2aWNlcyAtLT5cbiAgICAgIDxjOHktbGlcbiAgICAgICAgKm5nSWY9XCJ0ZXJtLmxlbmd0aCA9PT0gMCAmJiAocmVjZW50bHlSZWdpc3RlcmVkUmVzdWx0cyQgfCBhc3luYyk/LmRhdGE/Lmxlbmd0aCA+IDAgJiYgIWdyb3Vwc09ubHlcIlxuICAgICAgICBjbGFzcz1cInAtbC0yNCBwLXItMjRcIlxuICAgICAgICBbc2VsZWN0YWJsZV09XCJmYWxzZVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQgZm9ybS1ibG9ja1wiPlxuICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5SZWNlbnRseSByZWdpc3RlcmVkIGRldmljZXM8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9jOHktbGk+XG4gICAgICA8Yzh5LWxpXG4gICAgICAgICpjOHlGb3I9XCJcbiAgICAgICAgICBsZXQgcmVzdWx0IG9mICh0ZXJtLmxlbmd0aCA9PT0gMCAmJiAhZ3JvdXBzT25seSkgPyByZWNlbnRseVJlZ2lzdGVyZWRSZXN1bHRzJCA6IHsgZGF0YTogW10gfTtcbiAgICAgICAgICBsb2FkTW9yZTogJ25vbmUnO1xuICAgICAgICBcIlxuICAgICAgICBjbGFzcz1cImM4eS1saXN0X19pdGVtLS1saW5rIG0tbC0xNiBtLXItMTZcIlxuICAgICAgICAoY2xpY2spPVwib3BlbigkZXZlbnQsIHJlc3VsdCwgcmVzdWx0Lm5hbWUpXCJcbiAgICAgID5cbiAgICAgICAgPGM4eS1saS1pY29uPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXN1bHQgfCBzaG91bGRTaG93TW86IGRldmljZVR5cGUuREVWSUNFOyBlbHNlIGdyb3VwXCI+XG4gICAgICAgICAgICA8ZGV2aWNlLXN0YXR1cyBbbW9dPVwicmVzdWx0XCI+PC9kZXZpY2Utc3RhdHVzPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZ3JvdXA+XG4gICAgICAgICAgICA8aSBcbiAgICAgICAgICAgICAgY2xhc3M9XCJjOHktaWNvbi1kdW9jb2xvclwiXG4gICAgICAgICAgICAgIFtjOHlJY29uXT1cInJlc3VsdCB8IGdldEdyb3VwSWNvbiB8IGFzeW5jXCIgXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvaT5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2M4eS1saS1pY29uPlxuICAgICAgICB7eyByZXN1bHQubmFtZSB8fCAnLS0nIH19XG4gICAgICA8L2M4eS1saT5cblxuICAgICAgPCEtLSBTZWFyY2ggcmVzdWx0cyAtLT5cbiAgICAgIDxjOHktbGkgKm5nSWY9XCJ0ZXJtLmxlbmd0aCAhPT0gMFwiIGNsYXNzPVwicC1sLTI0IHAtci0yNFwiIFtzZWxlY3RhYmxlXT1cImZhbHNlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQgZm9ybS1ibG9ja1wiPlxuICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5TZWFyY2ggcmVzdWx0czwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2M4eS1saT5cbiAgICAgIDxjOHktbGlcbiAgICAgICAgKmM4eUZvcj1cIlxuICAgICAgICAgIGxldCByZXN1bHQgb2YgcmVzdWx0cyQ7XG4gICAgICAgICAgbG9hZE1vcmU6ICdhdXRvJztcbiAgICAgICAgICBub3RGb3VuZDogbm90Rm91bmRUZW1wbGF0ZTtcbiAgICAgICAgICBsb2FkaW5nVGVtcGxhdGU6IGxvYWRpbmc7XG4gICAgICAgICAgbG9hZE5leHRMYWJlbDogJ0ZpbmQgbW9yZeKApidcbiAgICAgICAgXCJcbiAgICAgICAgY2xhc3M9XCJjOHktbGlzdF9faXRlbS0tbGluayBtLWwtMTYgbS1yLTE2XCJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW4oJGV2ZW50LCByZXN1bHQsIHJlc3VsdC5uYW1lKVwiXG4gICAgICAgIFt0aXRsZV09XCJyZXN1bHQubmFtZVwiXG4gICAgICAgIGRhdGEtY3k9XCJzZWFyY2gtaW5wdXQtLXNlYXJjaC1yZXN1bHRzXCJcbiAgICAgID5cbiAgICAgICAgPGM4eS1saS1pY29uPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXN1bHQgfCBzaG91bGRTaG93TW86IGRldmljZVR5cGUuREVWSUNFOyBlbHNlIGdyb3VwXCI+XG4gICAgICAgICAgICA8ZGV2aWNlLXN0YXR1cyBbbW9dPVwicmVzdWx0XCI+PC9kZXZpY2Utc3RhdHVzPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZ3JvdXA+XG4gICAgICAgICAgICA8aSBcbiAgICAgICAgICAgICAgY2xhc3M9XCJjOHktaWNvbi1kdW9jb2xvclwiXG4gICAgICAgICAgICAgIFtjOHlJY29uXT1cInJlc3VsdCB8IGdldEdyb3VwSWNvbiB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9pPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvYzh5LWxpLWljb24+XG4gICAgICAgIHt7IHJlc3VsdC5uYW1lIHx8ICctLScgfX1cbiAgICAgIDwvYzh5LWxpPlxuXG4gICAgICA8IS0tIE5vIHNlYXJjaCByZXN1bHRzIGZvdW5kIGVudHJ5IC0tPlxuICAgICAgPG5nLXRlbXBsYXRlICNub3RGb3VuZFRlbXBsYXRlPlxuICAgICAgICA8Yzh5LWxpICpuZ0lmPVwibm9NYXRjaFwiIGNsYXNzPVwicC0xNiBjOHktZW1wdHktc3RhdGVcIiBkYXRhLWN5PVwic2VhcmNoLWlucHV0LS1lbXB0eS1zdGF0ZVwiIFtzZWxlY3RhYmxlXT1cImZhbHNlXCI+XG4gICAgICAgICAgPGM4eS1saS1pY29uIFtpY29uXT1cIidzZWFyY2gnXCI+PC9jOHktbGktaWNvbj5cbiAgICAgICAgICA8cD48c3Ryb25nIHRyYW5zbGF0ZT5ObyBtYXRjaCBmb3VuZC48L3N0cm9uZz48L3A+XG4gICAgICAgICAgPHNtYWxsIHRyYW5zbGF0ZSAqbmdJZj1cIm1vZGUgPT09ICdzZWFyY2gnXCI+XG4gICAgICAgICAgICBUcnkgdG8gZmlsdGVyIG9yIG9wZW4gdGhlIGFzc2V0IGdyaWQgdG8gc2hvdyBhbGwgZGV2aWNlcyBhbmQgZ3JvdXBzLlxuICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgPHNtYWxsIHRyYW5zbGF0ZSAqbmdJZj1cIm1vZGUgPT09ICdzZWxlY3QnXCI+VHJ5IHRvIHJlcGhyYXNlIHlvdXIgc2VhcmNoIHdvcmQuPC9zbWFsbD5cbiAgICAgICAgPC9jOHktbGk+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8IS0tIGxvYWRpbmcgYmFyIGZpcnN0IGVudHJpZXMgLS0+XG4gICAgICA8Yzh5LWxpICpuZ0lmPVwiaXNMb2FkaW5nXCIgY2xhc3M9XCJwLXQtMzIgcC1iLTBcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lclwiIHN0eWxlPVwicmlnaHQ6IDBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVjdDFcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVjdDJcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVjdDNcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVjdDRcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVjdDVcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2M4eS1saT5cblxuICAgICAgPCEtLSBsb2FkaW5nIGJhciBmb3IgbG9hZGluZyBtb3JlIGVudHJpZXMgKGludmVudG9yeSByb2xlcykgLS0+XG4gICAgICA8bmctdGVtcGxhdGUgI2xvYWRpbmc+XG4gICAgICAgIDxjOHktbGkgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwLXQtMzIgcC1iLTBcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyXCIgc3R5bGU9XCJyaWdodDogMFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlY3QxXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVjdDJcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWN0M1wiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlY3Q0XCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVjdDVcIj48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9jOHktbGk+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8IS0tIG1vcmUgZmlsdGVyIHBvc3NpYmlsaXRpZXMgLS0+XG4gICAgICA8Yzh5LWxpXG4gICAgICAgIGNsYXNzPVwibS10LTI0IGJnLWxldmVsLTIgcC10LTE2IHAtYi0xNiBwLWwtMjQgcC1yLTI0IHN0aWNreS1ib3R0b21cIlxuICAgICAgICBbc2VsZWN0YWJsZV09XCJmYWxzZVwiXG4gICAgICAgICpuZ0lmPVwibW9kZSA9PT0gJ3NlYXJjaCdcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGEtaS1jZW50ZXJcIj5cbiAgICAgICAgICA8aSBjOHlJY29uPVwiaW5mby1jaXJjbGVcIiBjbGFzcz1cInRleHQtaW5mbyBtLXItNFwiPjwvaT5cbiAgICAgICAgICA8cCB0cmFuc2xhdGUgY2xhc3M9XCJtLXItOFwiPk5lZWQgbW9yZSBmaWx0ZXIgcG9zc2liaWxpdGllcz88L3A+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJtLWwtMTYgYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zbVwiXG4gICAgICAgICAgICB0aXRsZT1cInt7ICdHbyB0byB0aGUgYXNzZXQgZGF0YSB0YWJsZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgZGF0YS1jeT1cInNlYXJjaC1pbnB1dC0tYXNzZXQtdGFibGUtYnRuXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvbk9wZW5Bc3NldFRhYmxlKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICdHbyB0byB0aGUgYXNzZXQgZGF0YSB0YWJsZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2M4eS1saT5cbiAgICA8L2M4eS10eXBlYWhlYWQ+XG4gIDwvZm9ybT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -10,9 +10,9 @@ export class AssetTypeCellRendererComponent {
|
|
|
10
10
|
this.context = context;
|
|
11
11
|
this.assetNodeService = assetNodeService;
|
|
12
12
|
}
|
|
13
|
-
ngOnInit() {
|
|
13
|
+
async ngOnInit() {
|
|
14
14
|
this.isAnyGroup = this.assetNodeService.isAnyGroup(this.context.item);
|
|
15
|
-
this.groupIcon = this.assetNodeService.icon(this.context.item);
|
|
15
|
+
this.groupIcon = await this.assetNodeService.icon(this.context.item);
|
|
16
16
|
this.isDevice = this.assetNodeService.isDevice(this.context.item);
|
|
17
17
|
this.isAsset = this.assetNodeService.isAsset(this.context.item);
|
|
18
18
|
this.iconTitle = this.getIconTitle(this.groupIcon);
|
|
@@ -43,4 +43,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
43
43
|
type: Component,
|
|
44
44
|
args: [{ template: "<device-status class=\"m-l-8\" [mo]=\"context.item\" *ngIf=\"isDevice\"></device-status>\n<i\n [c8yIcon]=\"groupIcon\"\n title=\"{{ iconTitle | translate }}\"\n class=\"m-l-8 c8y-icon-duocolor\"\n *ngIf=\"isAnyGroup || !isDevice\"\n></i>\n" }]
|
|
45
45
|
}], ctorParameters: function () { return [{ type: i1.CellRendererContext }, { type: i2.AssetNodeService }]; } });
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtdHlwZS5jZWxsLXJlbmRlcmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NlYXJjaC9jb2x1bW5zL2Fzc2V0LXR5cGUuY2VsbC1yZW5kZXJlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zZWFyY2gvY29sdW1ucy9hc3NldC10eXBlLmNlbGwtcmVuZGVyZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7O0FBS3hFLE1BQU0sT0FBTyw4QkFBOEI7SUFNekMsWUFBbUIsT0FBNEIsRUFBWSxnQkFBa0M7UUFBMUUsWUFBTyxHQUFQLE9BQU8sQ0FBcUI7UUFBWSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO0lBQUcsQ0FBQztJQUVqRyxLQUFLLENBQUMsUUFBUTtRQUNaLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU8sWUFBWSxDQUFDLElBQVk7UUFDL0IsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQy9CO1FBRUQsUUFBUSxJQUFJLEVBQUU7WUFDWixLQUFLLFdBQVc7Z0JBQ2QsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDMUIsS0FBSyxpQkFBaUI7Z0JBQ3BCLE9BQU8sT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ2hDLEtBQUssMkJBQTJCO2dCQUM5QixPQUFPLHVCQUF1QixDQUFDO1lBQ2pDLEtBQUssa0JBQWtCO2dCQUNyQixPQUFPLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNqQyxLQUFLLFVBQVU7Z0JBQ2IsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDM0I7Z0JBQ0UsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDM0I7SUFDSCxDQUFDOzsySEFuQ1UsOEJBQThCOytHQUE5Qiw4QkFBOEIsb0RDUDNDLHFQQU9BOzJGREFhLDhCQUE4QjtrQkFIMUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDZWxsUmVuZGVyZXJDb250ZXh0LCBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBc3NldE5vZGVTZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9hc3NldHMtbmF2aWdhdG9yJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9hc3NldC10eXBlLmNlbGwtcmVuZGVyZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEFzc2V0VHlwZUNlbGxSZW5kZXJlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGdyb3VwSWNvbjogc3RyaW5nO1xuICBpc0FueUdyb3VwOiBib29sZWFuO1xuICBpc0RldmljZTogYm9vbGVhbjtcbiAgaXNBc3NldDogYm9vbGVhbjtcbiAgaWNvblRpdGxlOiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb250ZXh0OiBDZWxsUmVuZGVyZXJDb250ZXh0LCBwcm90ZWN0ZWQgYXNzZXROb2RlU2VydmljZTogQXNzZXROb2RlU2VydmljZSkge31cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlzQW55R3JvdXAgPSB0aGlzLmFzc2V0Tm9kZVNlcnZpY2UuaXNBbnlHcm91cCh0aGlzLmNvbnRleHQuaXRlbSk7XG4gICAgdGhpcy5ncm91cEljb24gPSBhd2FpdCB0aGlzLmFzc2V0Tm9kZVNlcnZpY2UuaWNvbih0aGlzLmNvbnRleHQuaXRlbSk7XG4gICAgdGhpcy5pc0RldmljZSA9IHRoaXMuYXNzZXROb2RlU2VydmljZS5pc0RldmljZSh0aGlzLmNvbnRleHQuaXRlbSk7XG4gICAgdGhpcy5pc0Fzc2V0ID0gdGhpcy5hc3NldE5vZGVTZXJ2aWNlLmlzQXNzZXQodGhpcy5jb250ZXh0Lml0ZW0pO1xuICAgIHRoaXMuaWNvblRpdGxlID0gdGhpcy5nZXRJY29uVGl0bGUodGhpcy5ncm91cEljb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJY29uVGl0bGUoaWNvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5pc0Fzc2V0KSB7XG4gICAgICByZXR1cm4gdGhpcy5jb250ZXh0Lml0ZW0udHlwZTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGljb24pIHtcbiAgICAgIGNhc2UgJ2M4eS1ncm91cCc6XG4gICAgICAgIHJldHVybiBnZXR0ZXh0KCdHcm91cCcpO1xuICAgICAgY2FzZSAnYzh5LWdyb3VwLXNtYXJ0JzpcbiAgICAgICAgcmV0dXJuIGdldHRleHQoJ1NtYXJ0IGdyb3VwJyk7XG4gICAgICBjYXNlICdjOHktZ3JvdXAtcmVtb3RlLWluYWN0aXZlJzpcbiAgICAgICAgcmV0dXJuICdJbmFjdGl2ZSByZW1vdGUgZ3JvdXAnO1xuICAgICAgY2FzZSAnYzh5LWdyb3VwLXJlbW90ZSc6XG4gICAgICAgIHJldHVybiBnZXR0ZXh0KCdSZW1vdGUgZ3JvdXAnKTtcbiAgICAgIGNhc2UgJ2V4Y2hhbmdlJzpcbiAgICAgICAgcmV0dXJuIGdldHRleHQoJ0RldmljZScpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGdldHRleHQoJ0Fzc2V0Jyk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGV2aWNlLXN0YXR1cyBjbGFzcz1cIm0tbC04XCIgW21vXT1cImNvbnRleHQuaXRlbVwiICpuZ0lmPVwiaXNEZXZpY2VcIj48L2RldmljZS1zdGF0dXM+XG48aVxuICBbYzh5SWNvbl09XCJncm91cEljb25cIlxuICB0aXRsZT1cInt7IGljb25UaXRsZSB8IHRyYW5zbGF0ZSB9fVwiXG4gIGNsYXNzPVwibS1sLTggYzh5LWljb24tZHVvY29sb3JcIlxuICAqbmdJZj1cImlzQW55R3JvdXAgfHwgIWlzRGV2aWNlXCJcbj48L2k+XG4iXX0=
|
|
@@ -10,12 +10,12 @@ export class AssetTypeCellRendererComponent {
|
|
|
10
10
|
this.context = context;
|
|
11
11
|
this.assetNodeService = assetNodeService;
|
|
12
12
|
}
|
|
13
|
-
ngOnInit() {
|
|
13
|
+
async ngOnInit() {
|
|
14
14
|
this.isAnyGroup = this.assetNodeService.isAnyGroup(this.context.item);
|
|
15
15
|
this.groupIcon = this.assetNodeService.icon(this.context.item);
|
|
16
16
|
this.isDevice = this.assetNodeService.isDevice(this.context.item);
|
|
17
17
|
this.isAsset = this.assetNodeService.isAsset(this.context.item);
|
|
18
|
-
this.iconTitle = this.getIconTitle(this.groupIcon);
|
|
18
|
+
this.iconTitle = this.getIconTitle(await this.groupIcon);
|
|
19
19
|
}
|
|
20
20
|
getIconTitle(icon) {
|
|
21
21
|
if (this.isAsset) {
|
|
@@ -38,9 +38,9 @@ export class AssetTypeCellRendererComponent {
|
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
AssetTypeCellRendererComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AssetTypeCellRendererComponent, deps: [{ token: i1.CellRendererContext }, { token: i2.AssetNodeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
41
|
-
AssetTypeCellRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: AssetTypeCellRendererComponent, selector: "ng-component", ngImport: i0, template: "<device-status class=\"m-l-8\" [mo]=\"context.item\" *ngIf=\"isDevice\"></device-status>\n<i\n [c8yIcon]=\"groupIcon\"\n title=\"{{ iconTitle | translate }}\"\n class=\"m-l-8 c8y-icon-duocolor\"\n *ngIf=\"isAnyGroup || !isDevice\"\n></i>\n", dependencies: [{ kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.DeviceStatusComponent, selector: "device-status", inputs: ["mo"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }] });
|
|
41
|
+
AssetTypeCellRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: AssetTypeCellRendererComponent, selector: "ng-component", ngImport: i0, template: "<device-status class=\"m-l-8\" [mo]=\"context.item\" *ngIf=\"isDevice\"></device-status>\n<i\n [c8yIcon]=\"groupIcon | async\"\n title=\"{{ iconTitle | translate }}\"\n class=\"m-l-8 c8y-icon-duocolor\"\n *ngIf=\"isAnyGroup || !isDevice\"\n></i>\n", dependencies: [{ kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.DeviceStatusComponent, selector: "device-status", inputs: ["mo"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] });
|
|
42
42
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AssetTypeCellRendererComponent, decorators: [{
|
|
43
43
|
type: Component,
|
|
44
|
-
args: [{ template: "<device-status class=\"m-l-8\" [mo]=\"context.item\" *ngIf=\"isDevice\"></device-status>\n<i\n [c8yIcon]=\"groupIcon\"\n title=\"{{ iconTitle | translate }}\"\n class=\"m-l-8 c8y-icon-duocolor\"\n *ngIf=\"isAnyGroup || !isDevice\"\n></i>\n" }]
|
|
44
|
+
args: [{ template: "<device-status class=\"m-l-8\" [mo]=\"context.item\" *ngIf=\"isDevice\"></device-status>\n<i\n [c8yIcon]=\"groupIcon | async\"\n title=\"{{ iconTitle | translate }}\"\n class=\"m-l-8 c8y-icon-duocolor\"\n *ngIf=\"isAnyGroup || !isDevice\"\n></i>\n" }]
|
|
45
45
|
}], ctorParameters: function () { return [{ type: i1.CellRendererContext }, { type: i2.AssetNodeService }]; } });
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtdHlwZS5jZWxsLXJlbmRlcmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3N1Yi1hc3NldHMvY29sdW1ucy9hc3NldC10eXBlLmNlbGwtcmVuZGVyZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vc3ViLWFzc2V0cy9jb2x1bW5zL2Fzc2V0LXR5cGUuY2VsbC1yZW5kZXJlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7Ozs7QUFLeEUsTUFBTSxPQUFPLDhCQUE4QjtJQU16QyxZQUFtQixPQUE0QixFQUFZLGdCQUFrQztRQUExRSxZQUFPLEdBQVAsT0FBTyxDQUFxQjtRQUFZLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7SUFBRyxDQUFDO0lBRWpHLEtBQUssQ0FBQyxRQUFRO1FBQ1osSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFTyxZQUFZLENBQUMsSUFBWTtRQUMvQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDL0I7UUFFRCxRQUFRLElBQUksRUFBRTtZQUNaLEtBQUssV0FBVztnQkFDZCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMxQixLQUFLLGlCQUFpQjtnQkFDcEIsT0FBTyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDaEMsS0FBSywyQkFBMkI7Z0JBQzlCLE9BQU8sdUJBQXVCLENBQUM7WUFDakMsS0FBSyxrQkFBa0I7Z0JBQ3JCLE9BQU8sT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ2pDLEtBQUssVUFBVTtnQkFDYixPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMzQjtnQkFDRSxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUMzQjtJQUNILENBQUM7OzJIQW5DVSw4QkFBOEI7K0dBQTlCLDhCQUE4QixvRENQM0MsNlBBT0E7MkZEQWEsOEJBQThCO2tCQUgxQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENlbGxSZW5kZXJlckNvbnRleHQsIGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEFzc2V0Tm9kZVNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2Fzc2V0cy1uYXZpZ2F0b3InO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL2Fzc2V0LXR5cGUuY2VsbC1yZW5kZXJlci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQXNzZXRUeXBlQ2VsbFJlbmRlcmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZ3JvdXBJY29uOiBQcm9taXNlPHN0cmluZz47XG4gIGlzQW55R3JvdXA6IGJvb2xlYW47XG4gIGlzRGV2aWNlOiBib29sZWFuO1xuICBpc0Fzc2V0OiBib29sZWFuO1xuICBpY29uVGl0bGU6IHN0cmluZztcbiAgY29uc3RydWN0b3IocHVibGljIGNvbnRleHQ6IENlbGxSZW5kZXJlckNvbnRleHQsIHByb3RlY3RlZCBhc3NldE5vZGVTZXJ2aWNlOiBBc3NldE5vZGVTZXJ2aWNlKSB7fVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaXNBbnlHcm91cCA9IHRoaXMuYXNzZXROb2RlU2VydmljZS5pc0FueUdyb3VwKHRoaXMuY29udGV4dC5pdGVtKTtcbiAgICB0aGlzLmdyb3VwSWNvbiA9IHRoaXMuYXNzZXROb2RlU2VydmljZS5pY29uKHRoaXMuY29udGV4dC5pdGVtKTtcbiAgICB0aGlzLmlzRGV2aWNlID0gdGhpcy5hc3NldE5vZGVTZXJ2aWNlLmlzRGV2aWNlKHRoaXMuY29udGV4dC5pdGVtKTtcbiAgICB0aGlzLmlzQXNzZXQgPSB0aGlzLmFzc2V0Tm9kZVNlcnZpY2UuaXNBc3NldCh0aGlzLmNvbnRleHQuaXRlbSk7XG4gICAgdGhpcy5pY29uVGl0bGUgPSB0aGlzLmdldEljb25UaXRsZShhd2FpdCB0aGlzLmdyb3VwSWNvbik7XG4gIH1cblxuICBwcml2YXRlIGdldEljb25UaXRsZShpY29uOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmlzQXNzZXQpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnRleHQuaXRlbS50eXBlO1xuICAgIH1cblxuICAgIHN3aXRjaCAoaWNvbikge1xuICAgICAgY2FzZSAnYzh5LWdyb3VwJzpcbiAgICAgICAgcmV0dXJuIGdldHRleHQoJ0dyb3VwJyk7XG4gICAgICBjYXNlICdjOHktZ3JvdXAtc21hcnQnOlxuICAgICAgICByZXR1cm4gZ2V0dGV4dCgnU21hcnQgZ3JvdXAnKTtcbiAgICAgIGNhc2UgJ2M4eS1ncm91cC1yZW1vdGUtaW5hY3RpdmUnOlxuICAgICAgICByZXR1cm4gJ0luYWN0aXZlIHJlbW90ZSBncm91cCc7XG4gICAgICBjYXNlICdjOHktZ3JvdXAtcmVtb3RlJzpcbiAgICAgICAgcmV0dXJuIGdldHRleHQoJ1JlbW90ZSBncm91cCcpO1xuICAgICAgY2FzZSAnZXhjaGFuZ2UnOlxuICAgICAgICByZXR1cm4gZ2V0dGV4dCgnRGV2aWNlJyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZ2V0dGV4dCgnQXNzZXQnKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkZXZpY2Utc3RhdHVzIGNsYXNzPVwibS1sLThcIiBbbW9dPVwiY29udGV4dC5pdGVtXCIgKm5nSWY9XCJpc0RldmljZVwiPjwvZGV2aWNlLXN0YXR1cz5cbjxpXG4gIFtjOHlJY29uXT1cImdyb3VwSWNvbiB8IGFzeW5jXCJcbiAgdGl0bGU9XCJ7eyBpY29uVGl0bGUgfCB0cmFuc2xhdGUgfX1cIlxuICBjbGFzcz1cIm0tbC04IGM4eS1pY29uLWR1b2NvbG9yXCJcbiAgKm5nSWY9XCJpc0FueUdyb3VwIHx8ICFpc0RldmljZVwiXG4+PC9pPlxuIl19
|
|
@@ -38,7 +38,7 @@ export class GroupInfoComponent {
|
|
|
38
38
|
this.canEdit = this.smartGroupsService.isSmartGroupV2(this.group)
|
|
39
39
|
? this.subAssetsService.canEditSmartGroup()
|
|
40
40
|
: await this.subAssetsService.canEditGroup(this.group);
|
|
41
|
-
this.groupIcon = this.assetNodeService.icon(this.group);
|
|
41
|
+
this.groupIcon = await this.assetNodeService.icon(this.group);
|
|
42
42
|
this.smartGroupFilter = this.group.c8y_DeviceQueryString;
|
|
43
43
|
this.label = this.assetNodeService.isAsset(this.group) ? this.group.type : gettext('Group');
|
|
44
44
|
this.setHintMsg();
|
|
@@ -114,4 +114,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
114
114
|
}], groupChange: [{
|
|
115
115
|
type: Output
|
|
116
116
|
}] } });
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtaW5mby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zdWItYXNzZXRzL2dyb3VwLWluZm8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3ViLWFzc2V0cy9ncm91cC1pbmZvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkYsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7O0FBTXhELE1BQU0sT0FBTyxrQkFBa0I7SUF1QjdCLFlBQ1UsU0FBMkIsRUFDM0IsZ0JBQWtDLEVBQ2xDLGtCQUFzQyxFQUN0QyxZQUEwQixFQUMxQixTQUEyQixFQUMzQixZQUEwQixFQUMxQixnQkFBa0M7UUFObEMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUE1QmxDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFPM0QsbUJBQWMsR0FHVjtZQUNGLElBQUksRUFBRSxFQUFFO1lBQ1IsU0FBUyxFQUFFLEVBQUU7U0FDZCxDQUFDO1FBRU0sY0FBUyxHQUFHLE9BQU8sQ0FDekIsOEVBQThFLENBQy9FLENBQUM7UUFDTSxlQUFVLEdBQUcsT0FBTyxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDN0Msc0JBQWlCLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFVNUQsQ0FBQztJQUVKLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBc0I7UUFDdEMsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQ2pCLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUN2QyxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUMvRCxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixFQUFFO2dCQUMzQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDO1lBQ3pELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDNUYsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQXFDO1FBQ2hELElBQUk7WUFDRixNQUFNLFlBQVksR0FBWSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3RSxNQUFNLFlBQVksR0FBRyxZQUFZO2dCQUMvQixDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDO2dCQUMzQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRXpDLElBQUksQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDO1lBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUNuRDtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMzQztJQUNILENBQUM7SUFFTyxVQUFVO1FBQ2hCLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU87WUFDL0IsQ0FBQyxDQUFDLEdBQUcsbUJBQW1CLElBQUksb0JBQW9CLEVBQUU7WUFDbEQsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDckIsQ0FBQztJQUVPLEtBQUssQ0FBQyxXQUFXLENBQUMsWUFBcUM7UUFDN0QsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDMUIsTUFBTSxLQUFLLEdBQTRCLEVBQUUsRUFBRSxFQUFFLEdBQUcsWUFBWSxFQUFFLENBQUM7UUFFL0QsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDbkQsQ0FBQztJQUVPLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFxQztRQUNsRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUMxQixNQUFNLEVBQUUscUJBQXFCLEVBQUUsR0FBRyxZQUFZLENBQUM7UUFDL0MsTUFBTSxLQUFLLEdBQTRCLEVBQUUsRUFBRSxFQUFFLEdBQUcsWUFBWSxFQUFFLENBQUM7UUFFL0QsSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQzFCLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7U0FDM0Q7UUFFRCxJQUFJO1lBQ0YsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUN2Qix5RUFBeUUsQ0FDMUUsQ0FBQztZQUNGLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQzVDLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsT0FBTyxFQUFFO2dCQUNoRSxFQUFFLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQztnQkFDbkIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUM7YUFDMUIsQ0FBQyxDQUFDO1lBRUgsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMscUJBQXFCLENBQUMsQ0FBQztTQUNyRDtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDcEI7UUFDRCxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzVELENBQUM7SUFFTyxLQUFLLENBQUMsaUJBQWlCLENBQUMsS0FBYTtRQUMzQyxJQUFJO1lBQ0YsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDNUIsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNuQztRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDcEI7SUFDSCxDQUFDOzsrR0FsSFUsa0JBQWtCO21HQUFsQixrQkFBa0IsZ0pDWC9CLCs4UEFtTEE7MkZEeEthLGtCQUFrQjtrQkFKOUIsU0FBUzsrQkFDRSxnQkFBZ0I7MlJBSWpCLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QsIEludmVudG9yeVNlcnZpY2UsIFNtYXJ0R3JvdXBzU2VydmljZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSwgZ2V0dGV4dCwgTW9kYWxTZXJ2aWNlLCBTdGF0dXMgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEFzc2V0Tm9kZVNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2Fzc2V0cy1uYXZpZ2F0b3InO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU3ViQXNzZXRzU2VydmljZSB9IGZyb20gJy4vc3ViLWFzc2V0cy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWdyb3VwLWluZm8nLFxuICB0ZW1wbGF0ZVVybDogJy4vZ3JvdXAtaW5mby5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgR3JvdXBJbmZvQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgZ3JvdXA6IElNYW5hZ2VkT2JqZWN0O1xuICBAT3V0cHV0KCkgZ3JvdXBDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPElNYW5hZ2VkT2JqZWN0PigpO1xuICBjYW5FZGl0OiBib29sZWFuO1xuICBncm91cEljb246IHN0cmluZztcbiAgc21hcnRHcm91cEZpbHRlcjogc3RyaW5nO1xuICBmaWx0ZXJIaW50TXNnOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG5cbiAgZ3JvdXBJbmZvTW9kZWw6IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgYzh5X05vdGVzOiBzdHJpbmc7XG4gIH0gPSB7XG4gICAgbmFtZTogJycsXG4gICAgYzh5X05vdGVzOiAnJ1xuICB9O1xuXG4gIHByaXZhdGUgZmlsdGVyTXNnID0gZ2V0dGV4dChcbiAgICAnU21hcnQgZ3JvdXBzIGFyZSBncm91cHMgZHluYW1pY2FsbHkgY29uc3RydWN0ZWQgYmFzZWQgb24gZmlsdGVyaW5nIGNyaXRlcmlhLidcbiAgKTtcbiAgcHJpdmF0ZSBjYW5FZGl0TXNnID0gZ2V0dGV4dCgnWW91IGNhbiBlZGl0IHRoZSBmaWx0ZXIgaGVyZS4nKTtcbiAgcHJpdmF0ZSByZWFkb25seSBHUk9VUF9VUERBVEVEX01TRyA9IGdldHRleHQoJ0dyb3VwIHVwZGF0ZWQuJyk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnk6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdWJBc3NldHNTZXJ2aWNlOiBTdWJBc3NldHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgc21hcnRHcm91cHNTZXJ2aWNlOiBTbWFydEdyb3Vwc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXNzZXROb2RlU2VydmljZTogQXNzZXROb2RlU2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLmdyb3VwKSB7XG4gICAgICBjb25zdCB7IG5hbWUsIGM4eV9Ob3RlcyB9ID0gdGhpcy5ncm91cDtcbiAgICAgIHRoaXMuZ3JvdXBJbmZvTW9kZWwgPSB7IG5hbWUsIGM4eV9Ob3RlcyB9O1xuICAgICAgdGhpcy5jYW5FZGl0ID0gdGhpcy5zbWFydEdyb3Vwc1NlcnZpY2UuaXNTbWFydEdyb3VwVjIodGhpcy5ncm91cClcbiAgICAgICAgPyB0aGlzLnN1YkFzc2V0c1NlcnZpY2UuY2FuRWRpdFNtYXJ0R3JvdXAoKVxuICAgICAgICA6IGF3YWl0IHRoaXMuc3ViQXNzZXRzU2VydmljZS5jYW5FZGl0R3JvdXAodGhpcy5ncm91cCk7XG4gICAgICB0aGlzLmdyb3VwSWNvbiA9IHRoaXMuYXNzZXROb2RlU2VydmljZS5pY29uKHRoaXMuZ3JvdXApO1xuICAgICAgdGhpcy5zbWFydEdyb3VwRmlsdGVyID0gdGhpcy5ncm91cC5jOHlfRGV2aWNlUXVlcnlTdHJpbmc7XG4gICAgICB0aGlzLmxhYmVsID0gdGhpcy5hc3NldE5vZGVTZXJ2aWNlLmlzQXNzZXQodGhpcy5ncm91cCkgPyB0aGlzLmdyb3VwLnR5cGUgOiBnZXR0ZXh0KCdHcm91cCcpO1xuICAgICAgdGhpcy5zZXRIaW50TXNnKCk7XG4gICAgfVxuICB9XG5cbiAgaXNTbWFydEdyb3VwKCkge1xuICAgIHJldHVybiB0aGlzLnN1YkFzc2V0c1NlcnZpY2UuaXNTbWFydEdyb3VwKHRoaXMuZ3JvdXApO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlKHBhcnRpYWxHcm91cDogUGFydGlhbDxJTWFuYWdlZE9iamVjdD4pIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgaXNTbWFydEdyb3VwOiBib29sZWFuID0gdGhpcy5zdWJBc3NldHNTZXJ2aWNlLmlzU21hcnRHcm91cCh0aGlzLmdyb3VwKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRHcm91cCA9IGlzU21hcnRHcm91cFxuICAgICAgICA/IGF3YWl0IHRoaXMudXBkYXRlU21hcnRHcm91cChwYXJ0aWFsR3JvdXApXG4gICAgICAgIDogYXdhaXQgdGhpcy51cGRhdGVHcm91cChwYXJ0aWFsR3JvdXApO1xuXG4gICAgICB0aGlzLmdyb3VwID0gdXBkYXRlZEdyb3VwO1xuICAgICAgdGhpcy5ncm91cENoYW5nZS5lbWl0KHRoaXMuZ3JvdXApO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2Vzcyh0aGlzLkdST1VQX1VQREFURURfTVNHKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRIaW50TXNnKCkge1xuICAgIGNvbnN0IGZpbHRlck1zZ1RyYW5zbGF0ZWQgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHRoaXMuZmlsdGVyTXNnKTtcbiAgICBjb25zdCBjYW5FZGl0TXNnVHJhbnNsYXRlZCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQodGhpcy5jYW5FZGl0TXNnKTtcbiAgICB0aGlzLmZpbHRlckhpbnRNc2cgPSB0aGlzLmNhbkVkaXRcbiAgICAgID8gYCR7ZmlsdGVyTXNnVHJhbnNsYXRlZH0gJHtjYW5FZGl0TXNnVHJhbnNsYXRlZH1gXG4gICAgICA6IHRoaXMuZmlsdGVyTXNnO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVHcm91cChwYXJ0aWFsR3JvdXA6IFBhcnRpYWw8SU1hbmFnZWRPYmplY3Q+KSB7XG4gICAgY29uc3QgeyBpZCB9ID0gdGhpcy5ncm91cDtcbiAgICBjb25zdCBncm91cDogUGFydGlhbDxJTWFuYWdlZE9iamVjdD4gPSB7IGlkLCAuLi5wYXJ0aWFsR3JvdXAgfTtcblxuICAgIHJldHVybiAoYXdhaXQgdGhpcy5pbnZlbnRvcnkudXBkYXRlKGdyb3VwKSkuZGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlU21hcnRHcm91cChwYXJ0aWFsR3JvdXA6IFBhcnRpYWw8SU1hbmFnZWRPYmplY3Q+KSB7XG4gICAgY29uc3QgeyBpZCB9ID0gdGhpcy5ncm91cDtcbiAgICBjb25zdCB7IGM4eV9EZXZpY2VRdWVyeVN0cmluZyB9ID0gcGFydGlhbEdyb3VwO1xuICAgIGNvbnN0IGdyb3VwOiBQYXJ0aWFsPElNYW5hZ2VkT2JqZWN0PiA9IHsgaWQsIC4uLnBhcnRpYWxHcm91cCB9O1xuXG4gICAgaWYgKCFjOHlfRGV2aWNlUXVlcnlTdHJpbmcpIHtcbiAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5zbWFydEdyb3Vwc1NlcnZpY2UudXBkYXRlKGdyb3VwKSkuZGF0YTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgbW9kYWxCb2R5ID0gZ2V0dGV4dChcbiAgICAgICAgJ1lvdSBhcmUgYWJvdXQgdG8gY2hhbmdlIHRoZSBzbWFydCBncm91cCBmaWx0ZXIuIERvIHlvdSB3YW50IHRvIHByb2NlZWQ/J1xuICAgICAgKTtcbiAgICAgIGNvbnN0IHRpdGxlID0gZ2V0dGV4dCgnU21hcnQgZ3JvdXAgZmlsdGVyJyk7XG4gICAgICBhd2FpdCB0aGlzLm1vZGFsU2VydmljZS5jb25maXJtKHRpdGxlLCBtb2RhbEJvZHksIFN0YXR1cy5XQVJOSU5HLCB7XG4gICAgICAgIG9rOiBnZXR0ZXh0KCdTYXZlJyksXG4gICAgICAgIGNhbmNlbDogZ2V0dGV4dCgnQ2FuY2VsJylcbiAgICAgIH0pO1xuXG4gICAgICBhd2FpdCB0aGlzLmlzUXVlcnlFeGVjdXRhYmxlKGM4eV9EZXZpY2VRdWVyeVN0cmluZyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IEVycm9yKGVycm9yKTtcbiAgICB9XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLnNtYXJ0R3JvdXBzU2VydmljZS51cGRhdGUoZ3JvdXApKS5kYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBpc1F1ZXJ5RXhlY3V0YWJsZShxdWVyeTogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGZpbHRlciA9IHsgcTogcXVlcnkgfTtcbiAgICAgIGF3YWl0IHRoaXMuaW52ZW50b3J5Lmxpc3QoZmlsdGVyKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgRXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImJnLWxldmVsLTEgc2VwYXJhdG9yLWJvdHRvbVwiPlxuICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9jayBwLXQtMjQgcC1iLTI0IGxhcmdlLXBhZGRpbmdcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1mbGV4LTcwXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgY29sLTFcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJjOHktaWNvbi1kdW9jb2xvciBpY29uLTQ4XCIgW2M4eUljb25dPVwiZ3JvdXBJY29uXCI+PC9pPlxuICAgICAgICA8cD5cbiAgICAgICAgICA8c21hbGwgY2xhc3M9XCJsYWJlbCBsYWJlbC1pbmZvXCIgKm5nSWY9XCJncm91cC5jOHlfSXNEeW5hbWljR3JvdXBcIj5cbiAgICAgICAgICAgIHt7ICdTbWFydCBncm91cCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgIDxzbWFsbFxuICAgICAgICAgICAgY2xhc3M9XCJsYWJlbCBsYWJlbC1pbmZvIHRleHQtdHJ1bmNhdGUgZC1pbmxpbmUtYmxvY2tcIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eyBsYWJlbCB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAqbmdJZj1cIiFncm91cC5jOHlfSXNEeW5hbWljR3JvdXAgJiYgIWdyb3VwLmNvbV9jdW11bG9jaXR5X21vZGVsX0FnZW50XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBsYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgPHNtYWxsIGNsYXNzPVwibGFiZWwgbGFiZWwtaW5mb1wiICpuZ0lmPVwiZ3JvdXAuY29tX2N1bXVsb2NpdHlfbW9kZWxfQWdlbnRcIj5cbiAgICAgICAgICAgIHt7ICdSZW1vdGUgZ3JvdXAnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3cgY29sLTEwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWZsZXgtODBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTlcIj5cbiAgICAgICAgICAgIDxmb3JtICNncm91cE5hbWVGb3JtPVwibmdGb3JtXCI+XG4gICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cCBjbGFzcz1cImZvcm0tZ3JvdXAtbGcgbS1iLTBcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZ3JvdXBOYW1lXCIgY2xhc3M9XCJzci1vbmx5XCIgdHJhbnNsYXRlPk5hbWU8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwiIWNhbkVkaXRcIiBjbGFzcz1cImZvcm0tY29udHJvbC1zdGF0aWNcIj57eyBncm91cEluZm9Nb2RlbC5uYW1lIH19PC9wPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjYW5FZGl0XCIgY2xhc3M9XCJpbnB1dC1ncm91cCBpbnB1dC1ncm91cC1sZyBpbnB1dC1ncm91cC1lZGl0YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImdyb3VwSW5mb01vZGVsLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgZ3JvdXBJbmZvTW9kZWwubmFtZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiZ3JvdXBOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInt7IGdyb3VwSW5mb01vZGVsLm5hbWUubGVuZ3RoICsgMiB9fVwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4gTXkgZ3JvdXAnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMjU0XCJcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgYzh5UHJvZHVjdEV4cGVyaWVuY2VcbiAgICAgICAgICAgICAgICAgICAgW2FjdGlvbk5hbWVdPVwiJ2dyb3VwSW5mbzpFZGl0TmFtZSdcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1idG5cIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZSh7IG5hbWU6IGdyb3VwSW5mb01vZGVsLm5hbWUgfSk7IGdyb3VwTmFtZUZvcm0uZm9ybS5tYXJrQXNQcmlzdGluZSgpXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnU2F2ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJncm91cE5hbWVGb3JtLmZvcm0uaW52YWxpZFwiXG4gICAgICAgICAgICAgICAgICAgICAgYzh5UHJvZHVjdEV4cGVyaWVuY2VcbiAgICAgICAgICAgICAgICAgICAgICBbYWN0aW9uTmFtZV09XCInZ3JvdXBJbmZvOkVkaXRlZE5hbWVTYXZlZCdcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICA8Zm9ybSAjZ3JvdXBEZXNjcmlwdGlvbkZvcm09XCJuZ0Zvcm1cIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImRlc2NyaXB0aW9uXCIgY2xhc3M9XCJzci1vbmx5XCIgdHJhbnNsYXRlPkRlc2NyaXB0aW9uPC9sYWJlbD5cbiAgICAgICAgICAgICAgPHAgKm5nSWY9XCIhY2FuRWRpdFwiIGNsYXNzPVwiZm9ybS1jb250cm9sLXN0YXRpY1wiPnt7IGdyb3VwSW5mb01vZGVsLmM4eV9Ob3RlcyB9fTwvcD5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNhbkVkaXRcIiBjbGFzcz1cImlucHV0LWdyb3VwIGlucHV0LWdyb3VwLWVkaXRhYmxlXCI+XG4gICAgICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBuby1yZXNpemVcIlxuICAgICAgICAgICAgICAgICAgYzh5LXRleHRhcmVhLWF1dG9yZXNpemVcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZ3JvdXBJbmZvTW9kZWwuYzh5X05vdGVzXCJcbiAgICAgICAgICAgICAgICAgIGlkPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgbmFtZT1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3tcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBJbmZvTW9kZWwuYzh5X05vdGVzXG4gICAgICAgICAgICAgICAgICAgICAgPyBncm91cEluZm9Nb2RlbC5jOHlfTm90ZXNcbiAgICAgICAgICAgICAgICAgICAgICA6ICgnZS5nLiBNeSBkZXNjcmlwdGlvbicgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICAgICAgICBjb2xzPVwie3sgZ3JvdXBJbmZvTW9kZWwuYzh5X05vdGVzID8gZ3JvdXBJbmZvTW9kZWwuYzh5X05vdGVzLmxlbmd0aCA6IDI1IH19XCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4gTXkgZGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgICAgICAgICAgICAgICBbYWN0aW9uTmFtZV09XCInZ3JvdXBJbmZvOkVkaXREZXNjcmlwdGlvbidcIlxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXgtaGVpZ2h0OiA3MHB4ICFpbXBvcnRhbnRcIlxuICAgICAgICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtYnRuXCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICB1cGRhdGUoeyBjOHlfTm90ZXM6IGdyb3VwSW5mb01vZGVsLmM4eV9Ob3RlcyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICBncm91cERlc2NyaXB0aW9uRm9ybS5mb3JtLm1hcmtBc1ByaXN0aW5lKClcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdTYXZlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ3JvdXBEZXNjcmlwdGlvbkZvcm0uZm9ybS5pbnZhbGlkXCJcbiAgICAgICAgICAgICAgICAgICAgYzh5UHJvZHVjdEV4cGVyaWVuY2VcbiAgICAgICAgICAgICAgICAgICAgW2FjdGlvbk5hbWVdPVwiJ2dyb3VwSW5mbzpFZGl0ZWREZXNjcmlwdGlvblNhdmVkJ1wiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdTYXZlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9mb3JtPlxuXG4gICAgICAgICAgICA8Zm9ybSAjc21hcnRHcm91cEZpbHRlckZvcm09XCJuZ0Zvcm1cIiAqbmdJZj1cImlzU21hcnRHcm91cCgpXCI+XG4gICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cCBjbGFzcz1cIm0tYi0wIG0tdC04XCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibS1iLTAgdGV4dC1ub3dyYXBcIj5cbiAgICAgICAgICAgICAgICAgIHt7ICdTbWFydCBncm91cCBmaWx0ZXInIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWhlbHAgYnRuLWhlbHAtLXNtIG0tci00XCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgcG9wb3Zlcj1cInt7IGZpbHRlckhpbnRNc2cgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgICAgICAgICAgPHAgKm5nSWY9XCIhY2FuRWRpdFwiIGNsYXNzPVwiZm9ybS1jb250cm9sLXN0YXRpY1wiPlxuICAgICAgICAgICAgICAgICAge3sgc21hcnRHcm91cEZpbHRlciB9fVxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY2FuRWRpdFwiIGNsYXNzPVwiaW5wdXQtZ3JvdXAgaW5wdXQtZ3JvdXAtZWRpdGFibGVcIj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzbWFydEdyb3VwRmlsdGVyXCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cImZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJ7eyAoc21hcnRHcm91cEZpbHRlciB8fCAnJykubGVuZ3RoICsgMiB9fVwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4nIHwgdHJhbnNsYXRlIH19ICRmaWx0ZXI9KGlkIGVxICcxMionKVwiXG4gICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aD1cIjI1NFwiXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1NtYXJ0IGdyb3VwIGZpbHRlcicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1idG5cIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZSh7IGM4eV9EZXZpY2VRdWVyeVN0cmluZzogc21hcnRHcm91cEZpbHRlciB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNtYXJ0R3JvdXBGaWx0ZXJGb3JtLmZvcm0ubWFya0FzUHJpc3RpbmUoKVxuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic21hcnRHcm91cEZpbHRlckZvcm0uZm9ybS5pbnZhbGlkXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdTYXZlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3dcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3QtdW5zdHlsZWQgc21hbGxcIj5cbiAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicC10LTQgcC1iLTQgZC1mbGV4IHNlcGFyYXRvci10b3AtYm90dG9tIHRleHQtbm93cmFwXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwic21hbGwgbS1iLTAgbS1yLThcIj57eyAnQ3JlYXRlZCcgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibS1sLWF1dG9cIj57eyBncm91cC5jcmVhdGlvblRpbWUgfCBjOHlEYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJwLXQtNCBwLWItNCBkLWZsZXggc2VwYXJhdG9yLWJvdHRvbSB0ZXh0LW5vd3JhcFwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInNtYWxsIG0tYi0wIG0tci04XCI+e3sgJ0xhc3QgdXBkYXRlZCcgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibS1sLWF1dG9cIj57eyBncm91cC5sYXN0VXBkYXRlZCB8IGM4eURhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZ3JvdXAuY29tX2N1bXVsb2NpdHlfbW9kZWxfQWdlbnRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicC10LTQgcC1iLTQgZC1mbGV4IHNlcGFyYXRvci1ib3R0b20gdGV4dC1ub3dyYXBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwic21hbGwgbS1iLTAgbS1yLThcIj57eyAnU3RhdHVzJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtLWwtYXV0b1wiICpuZ0lmPVwiZ3JvdXAuYzh5X0Jyb2tlclNvdXJjZVwiPlxuICAgICAgICAgICAgICAgICAge3sgZ3JvdXAuYzh5X0Jyb2tlclNvdXJjZS5zdGF0dXMgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtLWwtYXV0b1wiICpuZ0lmPVwiIWdyb3VwLmM4eV9Ccm9rZXJTb3VyY2VcIj5cbiAgICAgICAgICAgICAgICAgIHt7ICdPZmZsaW5lJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtaW5mby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zdWItYXNzZXRzL2dyb3VwLWluZm8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3ViLWFzc2V0cy9ncm91cC1pbmZvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkYsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7O0FBTXhELE1BQU0sT0FBTyxrQkFBa0I7SUF1QjdCLFlBQ1UsU0FBMkIsRUFDM0IsZ0JBQWtDLEVBQ2xDLGtCQUFzQyxFQUN0QyxZQUEwQixFQUMxQixTQUEyQixFQUMzQixZQUEwQixFQUMxQixnQkFBa0M7UUFObEMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUE1QmxDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFPM0Qs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Q3JEO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNwQjtRQUNELE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDNUQsQ0FBQztJQUVPLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxLQUFhO1FBQzNDLElBQUk7WUFDRixNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUM1QixNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ25DO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNwQjtJQUNILENBQUM7OytHQWxIVSxrQkFBa0I7bUdBQWxCLGtCQUFrQixnSkNYL0IsKzhQQW1MQTsyRkR4S2Esa0JBQWtCO2tCQUo5QixTQUFTOytCQUNFLGdCQUFnQjsyUkFJakIsS0FBSztzQkFBYixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCwgSW52ZW50b3J5U2VydmljZSwgU21hcnRHcm91cHNTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlLCBnZXR0ZXh0LCBNb2RhbFNlcnZpY2UsIFN0YXR1cyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQXNzZXROb2RlU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvYXNzZXRzLW5hdmlnYXRvcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBTdWJBc3NldHNTZXJ2aWNlIH0gZnJvbSAnLi9zdWItYXNzZXRzLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZ3JvdXAtaW5mbycsXG4gIHRlbXBsYXRlVXJsOiAnLi9ncm91cC1pbmZvLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBHcm91cEluZm9Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBncm91cDogSU1hbmFnZWRPYmplY3Q7XG4gIEBPdXRwdXQoKSBncm91cENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8SU1hbmFnZWRPYmplY3Q+KCk7XG4gIGNhbkVkaXQ6IGJvb2xlYW47XG4gIGdyb3VwSWNvbjogc3RyaW5nO1xuICBzbWFydEdyb3VwRmlsdGVyOiBzdHJpbmc7XG4gIGZpbHRlckhpbnRNc2c6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcblxuICBncm91cEluZm9Nb2RlbDoge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBjOHlfTm90ZXM6IHN0cmluZztcbiAgfSA9IHtcbiAgICBuYW1lOiAnJyxcbiAgICBjOHlfTm90ZXM6ICcnXG4gIH07XG5cbiAgcHJpdmF0ZSBmaWx0ZXJNc2cgPSBnZXR0ZXh0KFxuICAgICdTbWFydCBncm91cHMgYXJlIGdyb3VwcyBkeW5hbWljYWxseSBjb25zdHJ1Y3RlZCBiYXNlZCBvbiBmaWx0ZXJpbmcgY3JpdGVyaWEuJ1xuICApO1xuICBwcml2YXRlIGNhbkVkaXRNc2cgPSBnZXR0ZXh0KCdZb3UgY2FuIGVkaXQgdGhlIGZpbHRlciBoZXJlLicpO1xuICBwcml2YXRlIHJlYWRvbmx5IEdST1VQX1VQREFURURfTVNHID0gZ2V0dGV4dCgnR3JvdXAgdXBkYXRlZC4nKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGludmVudG9yeTogSW52ZW50b3J5U2VydmljZSxcbiAgICBwcml2YXRlIHN1YkFzc2V0c1NlcnZpY2U6IFN1YkFzc2V0c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzbWFydEdyb3Vwc1NlcnZpY2U6IFNtYXJ0R3JvdXBzU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhc3NldE5vZGVTZXJ2aWNlOiBBc3NldE5vZGVTZXJ2aWNlXG4gICkge31cblxuICBhc3luYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMuZ3JvdXApIHtcbiAgICAgIGNvbnN0IHsgbmFtZSwgYzh5X05vdGVzIH0gPSB0aGlzLmdyb3VwO1xuICAgICAgdGhpcy5ncm91cEluZm9Nb2RlbCA9IHsgbmFtZSwgYzh5X05vdGVzIH07XG4gICAgICB0aGlzLmNhbkVkaXQgPSB0aGlzLnNtYXJ0R3JvdXBzU2VydmljZS5pc1NtYXJ0R3JvdXBWMih0aGlzLmdyb3VwKVxuICAgICAgICA/IHRoaXMuc3ViQXNzZXRzU2VydmljZS5jYW5FZGl0U21hcnRHcm91cCgpXG4gICAgICAgIDogYXdhaXQgdGhpcy5zdWJBc3NldHNTZXJ2aWNlLmNhbkVkaXRHcm91cCh0aGlzLmdyb3VwKTtcbiAgICAgIHRoaXMuZ3JvdXBJY29uID0gYXdhaXQgdGhpcy5hc3NldE5vZGVTZXJ2aWNlLmljb24odGhpcy5ncm91cCk7XG4gICAgICB0aGlzLnNtYXJ0R3JvdXBGaWx0ZXIgPSB0aGlzLmdyb3VwLmM4eV9EZXZpY2VRdWVyeVN0cmluZztcbiAgICAgIHRoaXMubGFiZWwgPSB0aGlzLmFzc2V0Tm9kZVNlcnZpY2UuaXNBc3NldCh0aGlzLmdyb3VwKSA/IHRoaXMuZ3JvdXAudHlwZSA6IGdldHRleHQoJ0dyb3VwJyk7XG4gICAgICB0aGlzLnNldEhpbnRNc2coKTtcbiAgICB9XG4gIH1cblxuICBpc1NtYXJ0R3JvdXAoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3ViQXNzZXRzU2VydmljZS5pc1NtYXJ0R3JvdXAodGhpcy5ncm91cCk7XG4gIH1cblxuICBhc3luYyB1cGRhdGUocGFydGlhbEdyb3VwOiBQYXJ0aWFsPElNYW5hZ2VkT2JqZWN0Pikge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBpc1NtYXJ0R3JvdXA6IGJvb2xlYW4gPSB0aGlzLnN1YkFzc2V0c1NlcnZpY2UuaXNTbWFydEdyb3VwKHRoaXMuZ3JvdXApO1xuICAgICAgY29uc3QgdXBkYXRlZEdyb3VwID0gaXNTbWFydEdyb3VwXG4gICAgICAgID8gYXdhaXQgdGhpcy51cGRhdGVTbWFydEdyb3VwKHBhcnRpYWxHcm91cClcbiAgICAgICAgOiBhd2FpdCB0aGlzLnVwZGF0ZUdyb3VwKHBhcnRpYWxHcm91cCk7XG5cbiAgICAgIHRoaXMuZ3JvdXAgPSB1cGRhdGVkR3JvdXA7XG4gICAgICB0aGlzLmdyb3VwQ2hhbmdlLmVtaXQodGhpcy5ncm91cCk7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKHRoaXMuR1JPVVBfVVBEQVRFRF9NU0cpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEhpbnRNc2coKSB7XG4gICAgY29uc3QgZmlsdGVyTXNnVHJhbnNsYXRlZCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQodGhpcy5maWx0ZXJNc2cpO1xuICAgIGNvbnN0IGNhbkVkaXRNc2dUcmFuc2xhdGVkID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCh0aGlzLmNhbkVkaXRNc2cpO1xuICAgIHRoaXMuZmlsdGVySGludE1zZyA9IHRoaXMuY2FuRWRpdFxuICAgICAgPyBgJHtmaWx0ZXJNc2dUcmFuc2xhdGVkfSAke2NhbkVkaXRNc2dUcmFuc2xhdGVkfWBcbiAgICAgIDogdGhpcy5maWx0ZXJNc2c7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZUdyb3VwKHBhcnRpYWxHcm91cDogUGFydGlhbDxJTWFuYWdlZE9iamVjdD4pIHtcbiAgICBjb25zdCB7IGlkIH0gPSB0aGlzLmdyb3VwO1xuICAgIGNvbnN0IGdyb3VwOiBQYXJ0aWFsPElNYW5hZ2VkT2JqZWN0PiA9IHsgaWQsIC4uLnBhcnRpYWxHcm91cCB9O1xuXG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmludmVudG9yeS51cGRhdGUoZ3JvdXApKS5kYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVTbWFydEdyb3VwKHBhcnRpYWxHcm91cDogUGFydGlhbDxJTWFuYWdlZE9iamVjdD4pIHtcbiAgICBjb25zdCB7IGlkIH0gPSB0aGlzLmdyb3VwO1xuICAgIGNvbnN0IHsgYzh5X0RldmljZVF1ZXJ5U3RyaW5nIH0gPSBwYXJ0aWFsR3JvdXA7XG4gICAgY29uc3QgZ3JvdXA6IFBhcnRpYWw8SU1hbmFnZWRPYmplY3Q+ID0geyBpZCwgLi4ucGFydGlhbEdyb3VwIH07XG5cbiAgICBpZiAoIWM4eV9EZXZpY2VRdWVyeVN0cmluZykge1xuICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLnNtYXJ0R3JvdXBzU2VydmljZS51cGRhdGUoZ3JvdXApKS5kYXRhO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBtb2RhbEJvZHkgPSBnZXR0ZXh0KFxuICAgICAgICAnWW91IGFyZSBhYm91dCB0byBjaGFuZ2UgdGhlIHNtYXJ0IGdyb3VwIGZpbHRlci4gRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nXG4gICAgICApO1xuICAgICAgY29uc3QgdGl0bGUgPSBnZXR0ZXh0KCdTbWFydCBncm91cCBmaWx0ZXInKTtcbiAgICAgIGF3YWl0IHRoaXMubW9kYWxTZXJ2aWNlLmNvbmZpcm0odGl0bGUsIG1vZGFsQm9keSwgU3RhdHVzLldBUk5JTkcsIHtcbiAgICAgICAgb2s6IGdldHRleHQoJ1NhdmUnKSxcbiAgICAgICAgY2FuY2VsOiBnZXR0ZXh0KCdDYW5jZWwnKVxuICAgICAgfSk7XG5cbiAgICAgIGF3YWl0IHRoaXMuaXNRdWVyeUV4ZWN1dGFibGUoYzh5X0RldmljZVF1ZXJ5U3RyaW5nKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgRXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuc21hcnRHcm91cHNTZXJ2aWNlLnVwZGF0ZShncm91cCkpLmRhdGE7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGlzUXVlcnlFeGVjdXRhYmxlKHF1ZXJ5OiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZmlsdGVyID0geyBxOiBxdWVyeSB9O1xuICAgICAgYXdhaXQgdGhpcy5pbnZlbnRvcnkubGlzdChmaWx0ZXIpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBFcnJvcihlcnJvcik7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYmctbGV2ZWwtMSBzZXBhcmF0b3ItYm90dG9tXCI+XG4gIDxkaXYgY2xhc3M9XCJjYXJkLWJsb2NrIHAtdC0yNCBwLWItMjQgbGFyZ2UtcGFkZGluZ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWZsZXgtNzBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBjb2wtMVwiPlxuICAgICAgICA8aSBjbGFzcz1cImM4eS1pY29uLWR1b2NvbG9yIGljb24tNDhcIiBbYzh5SWNvbl09XCJncm91cEljb25cIj48L2k+XG4gICAgICAgIDxwPlxuICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImxhYmVsIGxhYmVsLWluZm9cIiAqbmdJZj1cImdyb3VwLmM4eV9Jc0R5bmFtaWNHcm91cFwiPlxuICAgICAgICAgICAge3sgJ1NtYXJ0IGdyb3VwJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgPHNtYWxsXG4gICAgICAgICAgICBjbGFzcz1cImxhYmVsIGxhYmVsLWluZm8gdGV4dC10cnVuY2F0ZSBkLWlubGluZS1ibG9ja1wiXG4gICAgICAgICAgICB0aXRsZT1cInt7IGxhYmVsIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICpuZ0lmPVwiIWdyb3VwLmM4eV9Jc0R5bmFtaWNHcm91cCAmJiAhZ3JvdXAuY29tX2N1bXVsb2NpdHlfbW9kZWxfQWdlbnRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICA8c21hbGwgY2xhc3M9XCJsYWJlbCBsYWJlbC1pbmZvXCIgKm5nSWY9XCJncm91cC5jb21fY3VtdWxvY2l0eV9tb2RlbF9BZ2VudFwiPlxuICAgICAgICAgICAge3sgJ1JlbW90ZSBncm91cCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3JvdyBjb2wtMTBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtZmxleC04MFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiPlxuICAgICAgICAgICAgPGZvcm0gI2dyb3VwTmFtZUZvcm09XCJuZ0Zvcm1cIj5cbiAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwIGNsYXNzPVwiZm9ybS1ncm91cC1sZyBtLWItMFwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJncm91cE5hbWVcIiBjbGFzcz1cInNyLW9ubHlcIiB0cmFuc2xhdGU+TmFtZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPHAgKm5nSWY9XCIhY2FuRWRpdFwiIGNsYXNzPVwiZm9ybS1jb250cm9sLXN0YXRpY1wiPnt7IGdyb3VwSW5mb01vZGVsLm5hbWUgfX08L3A+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNhbkVkaXRcIiBjbGFzcz1cImlucHV0LWdyb3VwIGlucHV0LWdyb3VwLWxnIGlucHV0LWdyb3VwLWVkaXRhYmxlXCI+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZ3JvdXBJbmZvTW9kZWwubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyBncm91cEluZm9Nb2RlbC5uYW1lIH19XCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJncm91cE5hbWVcIlxuICAgICAgICAgICAgICAgICAgICBzaXplPVwie3sgZ3JvdXBJbmZvTW9kZWwubmFtZS5sZW5ndGggKyAyIH19XCJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZS5nLiBNeSBncm91cCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIyNTRcIlxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgICAgICAgICAgICAgICAgICBbYWN0aW9uTmFtZV09XCInZ3JvdXBJbmZvOkVkaXROYW1lJ1wiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWJ0blwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlKHsgbmFtZTogZ3JvdXBJbmZvTW9kZWwubmFtZSB9KTsgZ3JvdXBOYW1lRm9ybS5mb3JtLm1hcmtBc1ByaXN0aW5lKClcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdTYXZlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdyb3VwTmFtZUZvcm0uZm9ybS5pbnZhbGlkXCJcbiAgICAgICAgICAgICAgICAgICAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgICAgICAgICAgICAgICAgICAgIFthY3Rpb25OYW1lXT1cIidncm91cEluZm86RWRpdGVkTmFtZVNhdmVkJ1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7eyAnU2F2ZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgIDxmb3JtICNncm91cERlc2NyaXB0aW9uRm9ybT1cIm5nRm9ybVwiPlxuICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZGVzY3JpcHRpb25cIiBjbGFzcz1cInNyLW9ubHlcIiB0cmFuc2xhdGU+RGVzY3JpcHRpb248L2xhYmVsPlxuICAgICAgICAgICAgICA8cCAqbmdJZj1cIiFjYW5FZGl0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wtc3RhdGljXCI+e3sgZ3JvdXBJbmZvTW9kZWwuYzh5X05vdGVzIH19PC9wPlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY2FuRWRpdFwiIGNsYXNzPVwiaW5wdXQtZ3JvdXAgaW5wdXQtZ3JvdXAtZWRpdGFibGVcIj5cbiAgICAgICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIG5vLXJlc2l6ZVwiXG4gICAgICAgICAgICAgICAgICBjOHktdGV4dGFyZWEtYXV0b3Jlc2l6ZVxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJncm91cEluZm9Nb2RlbC5jOHlfTm90ZXNcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICBuYW1lPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7e1xuICAgICAgICAgICAgICAgICAgICBncm91cEluZm9Nb2RlbC5jOHlfTm90ZXNcbiAgICAgICAgICAgICAgICAgICAgICA/IGdyb3VwSW5mb01vZGVsLmM4eV9Ob3Rlc1xuICAgICAgICAgICAgICAgICAgICAgIDogKCdlLmcuIE15IGRlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgICAgIGNvbHM9XCJ7eyBncm91cEluZm9Nb2RlbC5jOHlfTm90ZXMgPyBncm91cEluZm9Nb2RlbC5jOHlfTm90ZXMubGVuZ3RoIDogMjUgfX1cIlxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZS5nLiBNeSBkZXNjcmlwdGlvbicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgYzh5UHJvZHVjdEV4cGVyaWVuY2VcbiAgICAgICAgICAgICAgICAgIFthY3Rpb25OYW1lXT1cIidncm91cEluZm86RWRpdERlc2NyaXB0aW9uJ1wiXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cIm1heC1oZWlnaHQ6IDcwcHggIWltcG9ydGFudFwiXG4gICAgICAgICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1idG5cIj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZSh7IGM4eV9Ob3RlczogZ3JvdXBJbmZvTW9kZWwuYzh5X05vdGVzIH0pO1xuICAgICAgICAgICAgICAgICAgICAgIGdyb3VwRGVzY3JpcHRpb25Gb3JtLmZvcm0ubWFya0FzUHJpc3RpbmUoKVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJncm91cERlc2NyaXB0aW9uRm9ybS5mb3JtLmludmFsaWRcIlxuICAgICAgICAgICAgICAgICAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgICAgICAgICAgICAgICAgICBbYWN0aW9uTmFtZV09XCInZ3JvdXBJbmZvOkVkaXRlZERlc2NyaXB0aW9uU2F2ZWQnXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Zvcm0+XG5cbiAgICAgICAgICAgIDxmb3JtICNzbWFydEdyb3VwRmlsdGVyRm9ybT1cIm5nRm9ybVwiICpuZ0lmPVwiaXNTbWFydEdyb3VwKClcIj5cbiAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwIGNsYXNzPVwibS1iLTAgbS10LThcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtLWItMCB0ZXh0LW5vd3JhcFwiPlxuICAgICAgICAgICAgICAgICAge3sgJ1NtYXJ0IGdyb3VwIGZpbHRlcicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4taGVscCBidG4taGVscC0tc20gbS1yLTRcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBwb3BvdmVyPVwie3sgZmlsdGVySGludE1zZyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwiZm9jdXNcIlxuICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgICAgICAgICA8cCAqbmdJZj1cIiFjYW5FZGl0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wtc3RhdGljXCI+XG4gICAgICAgICAgICAgICAgICB7eyBzbWFydEdyb3VwRmlsdGVyIH19XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjYW5FZGl0XCIgY2xhc3M9XCJpbnB1dC1ncm91cCBpbnB1dC1ncm91cC1lZGl0YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNtYXJ0R3JvdXBGaWx0ZXJcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZmlsdGVyXCJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInt7IChzbWFydEdyb3VwRmlsdGVyIHx8ICcnKS5sZW5ndGggKyAyIH19XCJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZS5nLicgfCB0cmFuc2xhdGUgfX0gJGZpbHRlcj0oaWQgZXEgJzEyKicpXCJcbiAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMjU0XCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnU21hcnQgZ3JvdXAgZmlsdGVyJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWJ0blwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlKHsgYzh5X0RldmljZVF1ZXJ5U3RyaW5nOiBzbWFydEdyb3VwRmlsdGVyIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgc21hcnRHcm91cEZpbHRlckZvcm0uZm9ybS5tYXJrQXNQcmlzdGluZSgpXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnU2F2ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzbWFydEdyb3VwRmlsdGVyRm9ybS5mb3JtLmludmFsaWRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvd1wiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC11bnN0eWxlZCBzbWFsbFwiPlxuICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJwLXQtNCBwLWItNCBkLWZsZXggc2VwYXJhdG9yLXRvcC1ib3R0b20gdGV4dC1ub3dyYXBcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJzbWFsbCBtLWItMCBtLXItOFwiPnt7ICdDcmVhdGVkJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtLWwtYXV0b1wiPnt7IGdyb3VwLmNyZWF0aW9uVGltZSB8IGM4eURhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaSBjbGFzcz1cInAtdC00IHAtYi00IGQtZmxleCBzZXBhcmF0b3ItYm90dG9tIHRleHQtbm93cmFwXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwic21hbGwgbS1iLTAgbS1yLThcIj57eyAnTGFzdCB1cGRhdGVkJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtLWwtYXV0b1wiPnt7IGdyb3VwLmxhc3RVcGRhdGVkIHwgYzh5RGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJncm91cC5jb21fY3VtdWxvY2l0eV9tb2RlbF9BZ2VudFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwLXQtNCBwLWItNCBkLWZsZXggc2VwYXJhdG9yLWJvdHRvbSB0ZXh0LW5vd3JhcFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJzbWFsbCBtLWItMCBtLXItOFwiPnt7ICdTdGF0dXMnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm0tbC1hdXRvXCIgKm5nSWY9XCJncm91cC5jOHlfQnJva2VyU291cmNlXCI+XG4gICAgICAgICAgICAgICAgICB7eyBncm91cC5jOHlfQnJva2VyU291cmNlLnN0YXR1cyB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm0tbC1hdXRvXCIgKm5nSWY9XCIhZ3JvdXAuYzh5X0Jyb2tlclNvdXJjZVwiPlxuICAgICAgICAgICAgICAgICAge3sgJ09mZmxpbmUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -384,9 +384,11 @@ class AssetNode extends NavigatorNode {
|
|
|
384
384
|
});
|
|
385
385
|
}
|
|
386
386
|
updateIcon(open) {
|
|
387
|
-
this
|
|
388
|
-
|
|
389
|
-
|
|
387
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
388
|
+
this.icon = yield this.service.icon(
|
|
389
|
+
// if it's root we are going to pass a fake mo to get the same icon as groups
|
|
390
|
+
this.root ? { c8y_IsDeviceGroup: {} } : this.mo, open);
|
|
391
|
+
});
|
|
390
392
|
}
|
|
391
393
|
}
|
|
392
394
|
AssetNode.NAME = 'AssetNode';
|