@c8y/ngx-components 1020.14.0 → 1020.14.7
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/alarms/alarm-details.service.d.ts.map +1 -1
- package/api/data.module.d.ts.map +1 -1
- package/core/plugins/plugins-resolve.service.d.ts.map +1 -1
- package/ecosystem/shared/ecosystem.service.d.ts.map +1 -1
- package/esm2022/alarms/alarm-details.service.mjs +7 -4
- package/esm2022/api/data.module.mjs +28 -3
- package/esm2022/core/plugins/plugins-resolve.service.mjs +4 -4
- package/esm2022/device-shell/shell/shell.component.mjs +3 -3
- package/esm2022/ecosystem/shared/ecosystem.service.mjs +19 -13
- package/esm2022/repository/configuration/list/configuration-detail.component.mjs +13 -6
- package/esm2022/repository/configuration/list/configuration-list.component.mjs +2 -3
- package/esm2022/repository/shared/repository.service.mjs +6 -6
- package/fesm2022/c8y-ngx-components-alarms.mjs +6 -3
- package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-api.mjs +27 -2
- package/fesm2022/c8y-ngx-components-api.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-shell.mjs +2 -2
- package/fesm2022/c8y-ngx-components-device-shell.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +18 -12
- package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-configuration.mjs +12 -6
- package/fesm2022/c8y-ngx-components-repository-configuration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-shared.mjs +5 -5
- package/fesm2022/c8y-ngx-components-repository-shared.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +3 -3
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/locales/locales.pot +8 -2
- package/package.json +1 -1
- package/repository/configuration/list/configuration-detail.component.d.ts +1 -5
- package/repository/configuration/list/configuration-detail.component.d.ts.map +1 -1
- package/repository/configuration/list/configuration-list.component.d.ts +1 -1
- package/repository/configuration/list/configuration-list.component.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alarm-details.service.d.ts","sourceRoot":"","sources":["../../alarms/alarm-details.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAwB,MAAM,aAAa,CAAC;AAChG,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;;AAGnE,qBAGa,mBAAmB;IAO5B,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,WAAW;IAPrB,QAAQ,CAAC,2BAA2B,mBAAmB;IACvD,QAAQ,CAAC,iCAAiC,sCAAsC;IAEhF,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAY;gBAGnC,YAAY,EAAE,eAAe,EAC7B,WAAW,EAAE,WAAW;IAGlC;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,iBAAiB,CAAC,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,MAAM;IAmB5E;;;;;;;;;;;;;;;;;OAiBG;IACH,kBAAkB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,MAAM,GAAG,IAAI;IAa3D;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,UAAU,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,MAAM,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"alarm-details.service.d.ts","sourceRoot":"","sources":["../../alarms/alarm-details.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAwB,MAAM,aAAa,CAAC;AAChG,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;;AAGnE,qBAGa,mBAAmB;IAO5B,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,WAAW;IAPrB,QAAQ,CAAC,2BAA2B,mBAAmB;IACvD,QAAQ,CAAC,iCAAiC,sCAAsC;IAEhF,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAY;gBAGnC,YAAY,EAAE,eAAe,EAC7B,WAAW,EAAE,WAAW;IAGlC;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,iBAAiB,CAAC,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,MAAM;IAmB5E;;;;;;;;;;;;;;;;;OAiBG;IACH,kBAAkB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,MAAM,GAAG,IAAI;IAa3D;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,UAAU,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,MAAM,GAAG,IAAI;IAwBnD;;;;;;;;;;;;OAYG;IACG,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAS/E,0CAA0C,IAAI,OAAO;yCAzJ1C,mBAAmB;6CAAnB,mBAAmB;CAyK/B"}
|
package/api/data.module.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.module.d.ts","sourceRoot":"","sources":["../../api/data.module.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"data.module.d.ts","sourceRoot":"","sources":["../../api/data.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,mBAAmB,EAGnB,QAAQ,EAKT,MAAM,eAAe,CAAC;;AAqDvB,qBAGa,UAAU;IACrB,MAAM,CAAC,SAAS,IAAI,QAAQ,EAAE;IAG9B,MAAM,CAAC,OAAO,IAAI,mBAAmB,CAAC,UAAU,CAAC;yCAJtC,UAAU;0CAAV,UAAU;0CAAV,UAAU;CAUtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugins-resolve.service.d.ts","sourceRoot":"","sources":["../../../core/plugins/plugins-resolve.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,WAAW,EAAE,mBAAmB,EAAE,IAAI,EAAkB,MAAM,eAAe,CAAC;AACnG,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAmB,UAAU,EAAW,MAAM,MAAM,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;;AAa5C,qBAGa,qBAAqB;IAkG9B,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,QAAQ;IApGlB;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,wBAAwB,EAAE,GAAG,wBAAwB;IAelF,MAAM,CAAC,aAAa,CAClB,mBAAmB,EAAE,wBAAwB,EAC7C,eAAe,CAAC,EAAE,wBAAwB,GACzC,wBAAwB;IAkC3B;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC,mBAAmB,CAAC,CAAC;IAC5C;;OAEG;IACH,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IAC3B;;OAEG;IACH,cAAc,EAAE,UAAU,CAAC;QACzB,cAAc,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QACrD,SAAS,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;KACjC,CAAC,CAAC;IACH,iBAAiB,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IACvC,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,eAAe,CAGlB;IACL,OAAO,CAAC,kBAAkB,CAAuC;gBAGvD,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,mBAAmB;IAcvC;;;;OAIG;IACH,oBAAoB,CAAC,aAAa,EAAE,KAAK,CAAC;QAAE,OAAO,MAAC;QAAC,IAAI,MAAA;KAAE,CAAC;IAM5D;;;OAGG;IACH,sBAAsB,CAAC,aAAa,EAAE,KAAK,CAAC;QAAE,OAAO,MAAC;QAAC,IAAI,MAAA;KAAE,CAAC;IAU9D,UAAU,CAAC,CAAC,GAAG,OAAO,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAchE;;OAEG;IACH,YAAY;IAIZ,mBAAmB;IAInB;;;;;OAKG;IACG,WAAW,CAAC,OAAO,EAAE,wBAAwB;IA6BnD;;;;;;;;;;;;;;;;;;OAkBG;IACH,cAAc,CAAC,SAAS,EAAE,wBAAwB,EAAE,GAAG,wBAAwB;IAI/E;;OAEG;IACH,oBAAoB;IAIpB;;;OAGG;IACH,cAAc;YAeA,sBAAsB;YAatB,gBAAgB;IAgB9B,OAAO,CAAC,eAAe;YAeT,mBAAmB;yCArStB,qBAAqB;6CAArB,qBAAqB;
|
|
1
|
+
{"version":3,"file":"plugins-resolve.service.d.ts","sourceRoot":"","sources":["../../../core/plugins/plugins-resolve.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,WAAW,EAAE,mBAAmB,EAAE,IAAI,EAAkB,MAAM,eAAe,CAAC;AACnG,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAmB,UAAU,EAAW,MAAM,MAAM,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;;AAa5C,qBAGa,qBAAqB;IAkG9B,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,QAAQ;IApGlB;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,wBAAwB,EAAE,GAAG,wBAAwB;IAelF,MAAM,CAAC,aAAa,CAClB,mBAAmB,EAAE,wBAAwB,EAC7C,eAAe,CAAC,EAAE,wBAAwB,GACzC,wBAAwB;IAkC3B;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC,mBAAmB,CAAC,CAAC;IAC5C;;OAEG;IACH,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IAC3B;;OAEG;IACH,cAAc,EAAE,UAAU,CAAC;QACzB,cAAc,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QACrD,SAAS,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;KACjC,CAAC,CAAC;IACH,iBAAiB,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IACvC,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,eAAe,CAGlB;IACL,OAAO,CAAC,kBAAkB,CAAuC;gBAGvD,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,mBAAmB;IAcvC;;;;OAIG;IACH,oBAAoB,CAAC,aAAa,EAAE,KAAK,CAAC;QAAE,OAAO,MAAC;QAAC,IAAI,MAAA;KAAE,CAAC;IAM5D;;;OAGG;IACH,sBAAsB,CAAC,aAAa,EAAE,KAAK,CAAC;QAAE,OAAO,MAAC;QAAC,IAAI,MAAA;KAAE,CAAC;IAU9D,UAAU,CAAC,CAAC,GAAG,OAAO,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAchE;;OAEG;IACH,YAAY;IAIZ,mBAAmB;IAInB;;;;;OAKG;IACG,WAAW,CAAC,OAAO,EAAE,wBAAwB;IA6BnD;;;;;;;;;;;;;;;;;;OAkBG;IACH,cAAc,CAAC,SAAS,EAAE,wBAAwB,EAAE,GAAG,wBAAwB;IAI/E;;OAEG;IACH,oBAAoB;IAIpB;;;OAGG;IACH,cAAc;YAeA,sBAAsB;YAatB,gBAAgB;IAgB9B,OAAO,CAAC,eAAe;YAeT,mBAAmB;yCArStB,qBAAqB;6CAArB,qBAAqB;CA+TjC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ecosystem.service.d.ts","sourceRoot":"","sources":["../../../ecosystem/shared/ecosystem.service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ecosystem.service.d.ts","sourceRoot":"","sources":["../../../ecosystem/shared/ecosystem.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -100,14 +100,17 @@ export class AlarmDetailsService {
|
|
|
100
100
|
if (!auditLog || auditLog.length === 0) {
|
|
101
101
|
return null;
|
|
102
102
|
}
|
|
103
|
+
let latestClearedAuditTime = null;
|
|
103
104
|
for (const auditLogItem of auditLog) {
|
|
104
105
|
const changes = Array.from(auditLogItem.changes || []);
|
|
105
|
-
const clearedStatusChange = changes.find(
|
|
106
|
+
const clearedStatusChange = changes.find(change => change.attribute === this.STATUS_ATTRIBUTE && change.newValue === AlarmStatus.CLEARED);
|
|
106
107
|
if (clearedStatusChange) {
|
|
107
|
-
|
|
108
|
+
if (!latestClearedAuditTime || auditLogItem.creationTime > latestClearedAuditTime) {
|
|
109
|
+
latestClearedAuditTime = auditLogItem.creationTime;
|
|
110
|
+
}
|
|
108
111
|
}
|
|
109
112
|
}
|
|
110
|
-
return auditLog[0].creationTime;
|
|
113
|
+
return latestClearedAuditTime || auditLog[0].creationTime;
|
|
111
114
|
}
|
|
112
115
|
/**
|
|
113
116
|
* Retrieves a specified application based on the provided application key.
|
|
@@ -147,4 +150,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
|
|
|
147
150
|
providedIn: 'root'
|
|
148
151
|
}]
|
|
149
152
|
}], ctorParameters: () => [{ type: i1.AppStateService }, { type: i1.Permissions }] });
|
|
150
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm0tZGV0YWlscy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYWxhcm1zL2FsYXJtLWRldGFpbHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBK0MsV0FBVyxFQUFXLE1BQU0sYUFBYSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFLeEQsTUFBTSxPQUFPLG1CQUFtQjtJQU05QixZQUNVLFlBQTZCLEVBQzdCLFdBQXdCO1FBRHhCLGlCQUFZLEdBQVosWUFBWSxDQUFpQjtRQUM3QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQVB6QixnQ0FBMkIsR0FBRyxlQUFlLENBQUM7UUFDOUMsc0NBQWlDLEdBQUcsa0NBQWtDLENBQUM7UUFFL0QscUJBQWdCLEdBQUcsUUFBUSxDQUFDO0lBSzFDLENBQUM7SUFFSjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Bd0JHO0lBQ0gsaUJBQWlCLENBQUMsTUFBdUIsRUFBRSxRQUF3QjtRQUNqRSxJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFFMUIsSUFBSSxNQUFNLEtBQUssV0FBVyxDQUFDLFlBQVksSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUMzRSxPQUFPLGNBQWMsQ0FBQztRQUN4QixDQUFDO1FBRUQsY0FBYyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFbEMsT0FBTyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsR0FBRyxFQUFFLFlBQVksRUFBRSxFQUFFO1lBQ2hELE1BQU0sT0FB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LHFCQUFxQjtnQkFDakMsV0FBVyxDQUFDLHlCQUF5QjtnQkFDckMsV0FBVyxDQUFDLDBCQUEwQjthQUN2QztZQUNELENBQUMsV0FBVyxDQUFDLHlCQUF5QixFQUFFLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQztTQUMxRSxDQUFDO1FBRUYsT0FBTyxDQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLGtDQUFrQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xFLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLGtDQUFrQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ25FLENBQUM7SUFDSixDQUFDOzhHQXBLVSxtQkFBbUI7a0hBQW5CLG1CQUFtQixjQUZsQixNQUFNOzsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWxhcm1TdGF0dXNUeXBlLCBJQXBwbGljYXRpb24sIElBdWRpdFJlY29yZCwgQWxhcm1TdGF0dXMsIElDaGFuZ2UgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBBcHBTdGF0ZVNlcnZpY2UsIFBlcm1pc3Npb25zIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgbWFwLCBzaGFyZVJlcGxheSB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBbGFybURldGFpbHNTZXJ2aWNlIHtcbiAgcmVhZG9ubHkgU01BUlRfUlVMRVNfQVBQTElDQVRJT05fS0VZID0gJ3NtYXJ0cnVsZS1rZXknO1xuICByZWFkb25seSBERVZJQ0VfTUFOQUdFTUVOVF9BUFBMSUNBVElPTl9LRVkgPSAnZGV2aWNlbWFuYWdlbWVudC1hcHBsaWNhdGlvbi1rZXknO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgU1RBVFVTX0FUVFJJQlVURSA9ICdzdGF0dXMnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RhdGVTZXJ2aWNlOiBBcHBTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwZXJtaXNzaW9uczogUGVybWlzc2lvbnNcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIHVzZXJuYW1lIG9mIHRoZSB1c2VyIHdobyBhY2tub3dsZWRnZWQgYW4gYWxhcm0gc3RhdHVzLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBjaGVja3MgaWYgdGhlIHByb3ZpZGVkIHN0YXR1cyBpcyBlcXVhbCB0byB0aGUgYWNrbm93bGVkZ2VkXG4gICAqIHN0YXR1cy4gSWYgaXQgaXMgbm90LCBvciBpZiB0aGVcbiAgICogYXVkaXQgbG9nIGlzIGVtcHR5IG9yIHRoZSBmaXJzdCBsb2cgaXRlbSBkb2VzIG5vdCBjb250YWluIGEgdXNlciwgdGhlXG4gICAqIG1ldGhvZCByZXR1cm5zIGEgZGVmYXVsdCB2YWx1ZSAoJy0tJykuXG4gICAqXG4gICAqIElmIHRoZSBzdGF0dXMgaXMgdGhlIGFja25vd2xlZGdlZCBzdGF0dXMgYW5kIHRoZSBhdWRpdCBsb2cgY29udGFpbnMgdmFsaWRcbiAgICogcmVjb3JkcywgdGhlIG1ldGhvZCBpdGVyYXRlcyBvdmVyIHRoZSBhdWRpdCByZWNvcmRzIGluIHJldmVyc2Ugb3JkZXJcbiAgICogKHN0YXJ0aW5nIGZyb20gdGhlIG1vc3QgcmVjZW50KS4gSXQgZmluZHMgdGhlIGZpcnN0IHJlY29yZCB3aGVyZSB0aGVcbiAgICogc3RhdHVzIGF0dHJpYnV0ZSAoZGVmaW5lZCBieSB0aGlzLlNUQVRVU19BVFRSSUJVVEUpIGhhcyBiZWVuIGNoYW5nZWQgdG9cbiAgICogdGhlIGFja25vd2xlZGdlZCBzdGF0dXMuIFRoZSBtZXRob2QgdGhlbiByZXR1cm5zIHRoZSB1c2VybmFtZSBvZiB0aGUgdXNlclxuICAgKiB3aG8gbWFkZSB0aGlzIGNoYW5nZS5cbiAgICpcbiAgICogSWYgbm8gc3VjaCBjaGFuZ2UgaXMgZm91bmQgaW4gdGhlIGF1ZGl0IHJlY29yZHMsIGl0IHJldHVybnMgdGhlIHVzZXJuYW1lXG4gICAqIGZyb20gdGhlIGZpcnN0IHJlY29yZCBvZiB0aGUgYXVkaXQgbG9nLlxuICAgKlxuICAgKiBUaGVyZSBjYW4gYmUgbXVsdGlwbGUgYXVkaXQgbG9ncyB3aXRoIEFDS05PV0xFREdFRCBzdGF0dXMuXG4gICAqXG4gICAqIEBwYXJhbSBzdGF0dXMgLSBUaGUgY3VycmVudCBzdGF0dXMgb2YgdGhlIGFsYXJtLlxuICAgKiBAcGFyYW0gYXVkaXRMb2cgLSBBbiBhcnJheSBvZiBhdWRpdCByZWNvcmRzIHRvIHByb2Nlc3MuXG4gICAqIEByZXR1cm5zIFRoZSB1c2VybmFtZSBvZiB0aGUgdXNlciB3aG8gYWNrbm93bGVkZ2VkIHRoZSBzdGF0dXNcbiAgICogICAgICAgICAgIG9yICctLScgaWYgdGhlIHN0YXR1cyBpcyBub3QgYWNrbm93bGVkZ2VkIG9yIGF1ZGl0IGxvZyBpcyBpbnZhbGlkLlxuICAgKi9cbiAgZ2V0QWNrbm93bGVkZ2VkQnkoc3RhdHVzOiBBbGFybVN0YXR1c1R5cGUsIGF1ZGl0TG9nOiBJQXVkaXRSZWNvcmRbXSk6IHN0cmluZyB7XG4gICAgbGV0IGFja25vd2xlZGdlZEJ5ID0gJy0tJztcblxuICAgIGlmIChzdGF0dXMgIT09IEFsYXJtU3RhdHVzLkFDS05PV0xFREdFRCB8fCAhYXVkaXRMb2cgfHwgIWF1ZGl0TG9nWzBdPy51c2VyKSB7XG4gICAgICByZXR1cm4gYWNrbm93bGVkZ2VkQnk7XG4gICAgfVxuXG4gICAgYWNrbm93bGVkZ2VkQnkgPSBhdWRpdExvZ1swXS51c2VyO1xuXG4gICAgcmV0dXJuIGF1ZGl0TG9nLnJlZHVjZVJpZ2h0KChhY2MsIGF1ZGl0TG9nSXRlbSkgPT4ge1xuICAgICAgY29uc3QgY2hhbmdlcyA9IEFycmF5LmZyb20oYXVkaXRMb2dJdGVtLmNoYW5nZXMgfHwgW10pO1xuICAgICAgY29uc3QgYWNrbm93bGVkZ2VkU3RhdHVzQ2hhbmdlID0gY2hhbmdlcy5maW5kKFxuICAgICAgICAoY2hhbmdlOiBJQ2hhbmdlKSA9PlxuICAgICAgICAgIGNoYW5nZS5hdHRyaWJ1dGUgPT09IHRoaXMuU1RBVFVTX0FUVFJJQlVURSAmJiBjaGFuZ2UubmV3VmFsdWUgPT09IEFsYXJtU3RhdHVzLkFDS05PV0xFREdFRFxuICAgICAgKTtcbiAgICAgIHJldHVybiAoYWNrbm93bGVkZ2VkU3RhdHVzQ2hhbmdlICYmIGF1ZGl0TG9nSXRlbS51c2VyKSB8fCBhY2M7XG4gICAgfSwgYWNrbm93bGVkZ2VkQnkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIGFja25vd2xlZGdlIHRpbWUgZnJvbSBhIGxpc3Qgb2YgYXVkaXQgcmVjb3Jkcy5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgaXRlcmF0ZXMgb3ZlciB0aGUgcHJvdmlkZWQgYXVkaXQgcmVjb3JkcyBpbiByZXZlcnNlIG9yZGVyXG4gICAqIChzdGFydGluZyBmcm9tIHRoZSBtb3N0IHJlY2VudCkgYW5kIGZpbmRzIHRoZSBmaXJzdCByZWNvcmQgd2hlcmUgYVxuICAgKiBzcGVjaWZpYyBzdGF0dXMgYXR0cmlidXRlIChkZWZpbmVkIGJ5IHRoaXMuU1RBVFVTX0FUVFJJQlVURSkgaGFzIGJlZW5cbiAgICogYWNrbm93bGVkZ2VkLiBJdCB0aGVuIHJldHVybnMgdGhlIGNyZWF0aW9uIHRpbWUgb2YgdGhhdCByZWNvcmQuXG4gICAqXG4gICAqIElmIG5vIHN1Y2ggcmVjb3JkIGlzIGZvdW5kLCB0aGUgbWV0aG9kIHJldHVybnMgdGhlIGNyZWF0aW9uIHRpbWUgb2YgdGhlXG4gICAqIGZpcnN0IGF1ZGl0IHJlY29yZC4gSWYgdGhlIGF1ZGl0IHJlY29yZCBsaXN0IGlzIGVtcHR5LCBpdCByZXR1cm5zIG51bGwuXG4gICAqXG4gICAqIFRoZXJlIGNhbiBiZSBtdWx0aXBsZSBhdWRpdCBsb2dzIHdpdGggQUNLTk9XTEVER0VEIHN0YXR1cy5cbiAgICpcbiAgICogQHBhcmFtIGF1ZGl0TG9nIC0gQW4gYXJyYXkgb2YgYXVkaXQgcmVjb3JkcyB0byBwcm9jZXNzLlxuICAgKiBAcmV0dXJucyBUaGUgY3JlYXRpb24gdGltZSBvZiB0aGUgYWNrbm93bGVkZ2VkIHJlY29yZCxcbiAgICogICAgICAgICAgIHRoZSBjcmVhdGlvbiB0aW1lIG9mIHRoZSBmaXJzdCByZWNvcmQgaWYgbm8gYWNrbm93bGVkZ2VkIHJlY29yZCBpcyBmb3VuZCxcbiAgICogICAgICAgICAgIG9yIG51bGwgaWYgdGhlIGF1ZGl0IGxvZyBpcyBlbXB0eS5cbiAgICovXG4gIGdldEFja25vd2xlZGdlVGltZShhdWRpdExvZzogSUF1ZGl0UmVjb3JkW10pOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCBpbml0aWFsVmFsdWUgPSBhdWRpdExvZy5sZW5ndGggPyBhdWRpdExvZ1swXS5jcmVhdGlvblRpbWUgOiBudWxsO1xuXG4gICAgcmV0dXJuIGF1ZGl0TG9nLnJlZHVjZVJpZ2h0KChhY2MsIGF1ZGl0TG9nSXRlbSkgPT4ge1xuICAgICAgY29uc3QgY2hhbmdlcyA9IEFycmF5LmZyb20oYXVkaXRMb2dJdGVtLmNoYW5nZXMgfHwgW10pO1xuICAgICAgY29uc3QgYWNrbm93bGVkZ2VkU3RhdHVzQ2hhbmdlID0gY2hhbmdlcy5maW5kKFxuICAgICAgICAoY2hhbmdlOiBJQ2hhbmdlKSA9PlxuICAgICAgICAgIGNoYW5nZS5hdHRyaWJ1dGUgPT09IHRoaXMuU1RBVFVTX0FUVFJJQlVURSAmJiBjaGFuZ2UubmV3VmFsdWUgPT09IEFsYXJtU3RhdHVzLkFDS05PV0xFREdFRFxuICAgICAgKTtcbiAgICAgIHJldHVybiBhY2tub3dsZWRnZWRTdGF0dXNDaGFuZ2UgPyBhdWRpdExvZ0l0ZW0uY3JlYXRpb25UaW1lIDogYWNjO1xuICAgIH0sIGluaXRpYWxWYWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBlbmQgdGltZSBvZiBhbiBldmVudCBmcm9tIGFuIGF1ZGl0IGxvZy5cbiAgICpcbiAgICogVGhlIG1ldGhvZCBwcm9jZXNzZXMgdGhlIHByb3ZpZGVkIGF1ZGl0IGxvZyB0byBmaW5kIHRoZSBmaXJzdCBpbnN0YW5jZVxuICAgKiAoc3RhcnRpbmcgZnJvbSB0aGUgbW9zdCByZWNlbnQgcmVjb3JkKSB3aGVyZSB0aGUgc3RhdHVzIHdhcyBjaGFuZ2VkIHRvICdDTEVBUkVEJy5cbiAgICogSXQgaXRlcmF0ZXMgb3ZlciB0aGUgYXVkaXQgcmVjb3JkcyBhbmRcbiAgICogY2hlY2tzIHRoZSBjaGFuZ2VzIGluIGVhY2ggcmVjb3JkIHRvIGZpbmQgdGhpcyBzdGF0dXMgY2hhbmdlLlxuICAgKlxuICAgKiBJZiBhIHJlY29yZCB3aXRoIHRoZSBDTEVBUkVEIHN0YXR1cyBpcyBmb3VuZCwgdGhlIG1ldGhvZCByZXR1cm5zIHRoZSBjcmVhdGlvbiB0aW1lXG4gICAqIG9mIHRoYXQgcmVjb3JkLiBJZiB0aGUgZW50aXJlIGF1ZGl0IGxvZyBpcyBwcm9jZXNzZWQgd2l0aG91dCBmaW5kaW5nIGEgQ0xFQVJFRCBzdGF0dXMsXG4gICAqIHRoZSBjcmVhdGlvbiB0aW1lIG9mIHRoZSBmaXJzdCBhdWRpdCBsb2cgcmVjb3JkIGlzIHJldHVybmVkLlxuICAgKlxuICAgKiBJZiB0aGUgYXVkaXQgbG9nIGlzIGVtcHR5IG9yIG51bGwsIHRoZSBtZXRob2QgcmV0dXJucyBudWxsLlxuICAgKlxuICAgKiBUaGVyZSBjYW4gYmUgb25seSBvbmUgYXVkaXQgbG9nIHdpdGggQ0xFQVJFRCBzdGF0dXMuXG4gICAqXG4gICAqIEBwYXJhbSBhdWRpdExvZyAtIEFuIGFycmF5IG9mIGF1ZGl0IHJlY29yZHMgdG8gcHJvY2Vzcy5cbiAgICogQHJldHVybnMgVGhlIGNyZWF0aW9uIHRpbWUgb2YgdGhlIHJlY29yZCB3aXRoIHRoZSBDTEVBUkVEIHN0YXR1cyxcbiAgICogICAgICAgICAgdGhlIGNyZWF0aW9uIHRpbWUgb2YgdGhlIGZpcnN0IHJlY29yZCBpZiBubyBDTEVBUkVEIHN0YXR1cyBpcyBmb3VuZCxcbiAgICogICAgICAgICAgb3IgbnVsbCBpZiB0aGUgYXVkaXQgbG9nIGlzIGVtcHR5IG9yIG51bGwuXG4gICAqL1xuICBnZXRFbmRUaW1lKGF1ZGl0TG9nOiBJQXVkaXRSZWNvcmRbXSk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICghYXVkaXRMb2cgfHwgYXVkaXRMb2cubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGF1ZGl0TG9nSXRlbSBvZiBhdWRpdExvZykge1xuICAgICAgY29uc3QgY2hhbmdlcyA9IEFycmF5LmZyb20oYXVkaXRMb2dJdGVtLmNoYW5nZXMgfHwgW10pO1xuICAgICAgY29uc3QgY2xlYXJlZFN0YXR1c0NoYW5nZSA9IGNoYW5nZXMuZmluZChcbiAgICAgICAgKGNoYW5nZTogSUNoYW5nZSkgPT5cbiAgICAgICAgICBjaGFuZ2UuYXR0cmlidXRlID09PSB0aGlzLlNUQVRVU19BVFRSSUJVVEUgJiYgY2hhbmdlLm5ld1ZhbHVlID09PSBBbGFybVN0YXR1cy5DTEVBUkVEXG4gICAgICApO1xuXG4gICAgICBpZiAoY2xlYXJlZFN0YXR1c0NoYW5nZSkge1xuICAgICAgICByZXR1cm4gYXVkaXRMb2dJdGVtLmNyZWF0aW9uVGltZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYXVkaXRMb2dbMF0uY3JlYXRpb25UaW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBhIHNwZWNpZmllZCBhcHBsaWNhdGlvbiBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgYXBwbGljYXRpb24ga2V5LlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBmaXJzdCBjaGVja3MgaWYgdGhlIHJlcXVlc3RlZCBhcHBsaWNhdGlvbiwgaWRlbnRpZmllZCBieSBpdHMga2V5ICh3aGljaCBjb3VsZCBiZWxvbmcgdG8gRGV2aWNlIE1hbmFnZW1lbnRcbiAgICogb3IgU21hcnQgUnVsZXMgTWljcm9zZXJ2aWNlKSwgaXMgcHJlc2VudCBpbiB0aGUgdXNlcidzIGN1cnJlbnQgYXBwbGljYXRpb25zIGNhY2hlLiBJZiBub3QgZm91bmQgaW4gdGhlIGNhY2hlLFxuICAgKiBpdCBmZXRjaGVzIHRoZSBhcHBsaWNhdGlvbiBmcm9tIHRoZSBsaXN0IG9mIGN1cnJlbnQgdXNlcidzIGFwcGxpY2F0aW9ucywgd2hpY2ggaXMgbWFpbnRhaW5lZCBieSB0aGUgc3RhdGUgc2VydmljZS5cbiAgICpcbiAgICogVGhlIGFwcGxpY2F0aW9uIGlzIHNlYXJjaGVkIGJ5IGl0cyBrZXksIGFuZCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGVpdGhlciByZXNvbHZlcyB0byB0aGUgZm91bmQgYXBwbGljYXRpb25cbiAgICogb3IgdW5kZWZpbmVkIGlmIHRoZSBhcHBsaWNhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQga2V5IGRvZXMgbm90IGV4aXN0LlxuICAgKlxuICAgKiBAcGFyYW0gYXBwbGljYXRpb25LZXkgVGhlIGtleSBvZiB0aGUgYXBwbGljYXRpb24gdG8gcmV0cmlldmUuXG4gICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSByZXF1ZXN0ZWQgYXBwbGljYXRpb24gb3IgdW5kZWZpbmVkIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBub3QgZm91bmQuXG4gICAqL1xuICBhc3luYyBnZXRBcHBsaWNhdGlvbihhcHBsaWNhdGlvbktleTogc3RyaW5nKTogUHJvbWlzZTxJQXBwbGljYXRpb24gfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICB0aGlzLnN0YXRlU2VydmljZS5jdXJyZW50QXBwc09mVXNlci5waXBlKFxuICAgICAgICBtYXAoYXBwcyA9PiBhcHBzLmZpbmQoYXBwID0+IGFwcC5rZXkgPT09IGFwcGxpY2F0aW9uS2V5KSksXG4gICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIGNoZWNrSWZIYXNBbnlSb2xlQWxsb3dpbmdUb0NyZWF0ZVNtYXJ0UnVsZSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBST0xFU19BTExPV0lOR19TTUFSVF9SVUxFX0NSRUFUSU9OID0gW1xuICAgICAgW1xuICAgICAgICBQZXJtaXNzaW9ucy5ST0xFX0lOVkVOVE9SWV9BRE1JTixcbiAgICAgICAgUGVybWlzc2lvbnMuUk9MRV9JTlZFTlRPUllfQ1JFQVRFLFxuICAgICAgICBQZXJtaXNzaW9ucy5ST0xFX01BTkFHRURfT0JKRUNUX0FETUlOLFxuICAgICAgICBQZXJtaXNzaW9ucy5ST0xFX01BTkFHRURfT0JKRUNUX0NSRUFURVxuICAgICAgXSxcbiAgICAgIFtQZXJtaXNzaW9ucy5ST0xFX0NFUF9NQU5BR0VNRU5UX0FETUlOLCBQZXJtaXNzaW9ucy5ST0xFX1NNQVJUUlVMRV9BRE1JTl1cbiAgICBdO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMucGVybWlzc2lvbnMuaGFzQW55Um9sZShST0xFU19BTExPV0lOR19TTUFSVF9SVUxFX0NSRUFUSU9OWzBdKSAmJlxuICAgICAgdGhpcy5wZXJtaXNzaW9ucy5oYXNBbnlSb2xlKFJPTEVTX0FMTE9XSU5HX1NNQVJUX1JVTEVfQ1JFQVRJT05bMV0pXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
153
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm0tZGV0YWlscy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYWxhcm1zL2FsYXJtLWRldGFpbHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBK0MsV0FBVyxFQUFXLE1BQU0sYUFBYSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFLeEQsTUFBTSxPQUFPLG1CQUFtQjtJQU05QixZQUNVLFlBQTZCLEVBQzdCLFdBQXdCO1FBRHhCLGlCQUFZLEdBQVosWUFBWSxDQUFpQjtRQUM3QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQVB6QixnQ0FBMkIsR0FBRyxlQUFlLENBQUM7UUFDOUMsc0NBQWlDLEdBQUcsa0NBQWtDLENBQUM7UUFFL0QscUJBQWdCLEdBQUcsUUFBUSxDQUFDO0lBSzFDLENBQUM7SUFFSjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Bd0JHO0lBQ0gsaUJBQWlCLENBQUMsTUFBdUIsRUFBRSxRQUF3QjtRQUNqRSxJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFFMUIsSUFBSSxNQUFNLEtBQUssV0FBVyxDQUFDLFlBQVksSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUMzRSxPQUFPLGNBQWMsQ0FBQztRQUN4QixDQUFDO1FBRUQsY0FBYyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFbEMsT0FBTyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsR0FBRyxFQUFFLFlBQVksRUFBRSxFQUFFO1lBQ2hELE1BQU0sT0FB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QVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsMENBQTBDO1FBQ3hDLE1BQU0sa0NBQWtDLEdBQUc7WUFDekM7Z0JBQ0UsV0FBVyxDQUFDLG9CQUFvQjtnQkFDaEMsV0FBVyxDQUFDLHFCQUFxQjtnQkFDakMsV0FBVyxDQUFDLHlCQUF5QjtnQkFDckMsV0FBVyxDQUFDLDBCQUEwQjthQUN2QztZQUNELENBQUMsV0FBVyxDQUFDLHlCQUF5QixFQUFFLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQztTQUMxRSxDQUFDO1FBRUYsT0FBTyxDQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLGtDQUFrQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xFLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLGtDQUFrQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ25FLENBQUM7SUFDSixDQUFDOzhHQXhLVSxtQkFBbUI7a0hBQW5CLG1CQUFtQixjQUZsQixNQUFNOzsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWxhcm1TdGF0dXNUeXBlLCBJQXBwbGljYXRpb24sIElBdWRpdFJlY29yZCwgQWxhcm1TdGF0dXMsIElDaGFuZ2UgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBBcHBTdGF0ZVNlcnZpY2UsIFBlcm1pc3Npb25zIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgbWFwLCBzaGFyZVJlcGxheSB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBbGFybURldGFpbHNTZXJ2aWNlIHtcbiAgcmVhZG9ubHkgU01BUlRfUlVMRVNfQVBQTElDQVRJT05fS0VZID0gJ3NtYXJ0cnVsZS1rZXknO1xuICByZWFkb25seSBERVZJQ0VfTUFOQUdFTUVOVF9BUFBMSUNBVElPTl9LRVkgPSAnZGV2aWNlbWFuYWdlbWVudC1hcHBsaWNhdGlvbi1rZXknO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgU1RBVFVTX0FUVFJJQlVURSA9ICdzdGF0dXMnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RhdGVTZXJ2aWNlOiBBcHBTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwZXJtaXNzaW9uczogUGVybWlzc2lvbnNcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIHVzZXJuYW1lIG9mIHRoZSB1c2VyIHdobyBhY2tub3dsZWRnZWQgYW4gYWxhcm0gc3RhdHVzLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBjaGVja3MgaWYgdGhlIHByb3ZpZGVkIHN0YXR1cyBpcyBlcXVhbCB0byB0aGUgYWNrbm93bGVkZ2VkXG4gICAqIHN0YXR1cy4gSWYgaXQgaXMgbm90LCBvciBpZiB0aGVcbiAgICogYXVkaXQgbG9nIGlzIGVtcHR5IG9yIHRoZSBmaXJzdCBsb2cgaXRlbSBkb2VzIG5vdCBjb250YWluIGEgdXNlciwgdGhlXG4gICAqIG1ldGhvZCByZXR1cm5zIGEgZGVmYXVsdCB2YWx1ZSAoJy0tJykuXG4gICAqXG4gICAqIElmIHRoZSBzdGF0dXMgaXMgdGhlIGFja25vd2xlZGdlZCBzdGF0dXMgYW5kIHRoZSBhdWRpdCBsb2cgY29udGFpbnMgdmFsaWRcbiAgICogcmVjb3JkcywgdGhlIG1ldGhvZCBpdGVyYXRlcyBvdmVyIHRoZSBhdWRpdCByZWNvcmRzIGluIHJldmVyc2Ugb3JkZXJcbiAgICogKHN0YXJ0aW5nIGZyb20gdGhlIG1vc3QgcmVjZW50KS4gSXQgZmluZHMgdGhlIGZpcnN0IHJlY29yZCB3aGVyZSB0aGVcbiAgICogc3RhdHVzIGF0dHJpYnV0ZSAoZGVmaW5lZCBieSB0aGlzLlNUQVRVU19BVFRSSUJVVEUpIGhhcyBiZWVuIGNoYW5nZWQgdG9cbiAgICogdGhlIGFja25vd2xlZGdlZCBzdGF0dXMuIFRoZSBtZXRob2QgdGhlbiByZXR1cm5zIHRoZSB1c2VybmFtZSBvZiB0aGUgdXNlclxuICAgKiB3aG8gbWFkZSB0aGlzIGNoYW5nZS5cbiAgICpcbiAgICogSWYgbm8gc3VjaCBjaGFuZ2UgaXMgZm91bmQgaW4gdGhlIGF1ZGl0IHJlY29yZHMsIGl0IHJldHVybnMgdGhlIHVzZXJuYW1lXG4gICAqIGZyb20gdGhlIGZpcnN0IHJlY29yZCBvZiB0aGUgYXVkaXQgbG9nLlxuICAgKlxuICAgKiBUaGVyZSBjYW4gYmUgbXVsdGlwbGUgYXVkaXQgbG9ncyB3aXRoIEFDS05PV0xFREdFRCBzdGF0dXMuXG4gICAqXG4gICAqIEBwYXJhbSBzdGF0dXMgLSBUaGUgY3VycmVudCBzdGF0dXMgb2YgdGhlIGFsYXJtLlxuICAgKiBAcGFyYW0gYXVkaXRMb2cgLSBBbiBhcnJheSBvZiBhdWRpdCByZWNvcmRzIHRvIHByb2Nlc3MuXG4gICAqIEByZXR1cm5zIFRoZSB1c2VybmFtZSBvZiB0aGUgdXNlciB3aG8gYWNrbm93bGVkZ2VkIHRoZSBzdGF0dXNcbiAgICogICAgICAgICAgIG9yICctLScgaWYgdGhlIHN0YXR1cyBpcyBub3QgYWNrbm93bGVkZ2VkIG9yIGF1ZGl0IGxvZyBpcyBpbnZhbGlkLlxuICAgKi9cbiAgZ2V0QWNrbm93bGVkZ2VkQnkoc3RhdHVzOiBBbGFybVN0YXR1c1R5cGUsIGF1ZGl0TG9nOiBJQXVkaXRSZWNvcmRbXSk6IHN0cmluZyB7XG4gICAgbGV0IGFja25vd2xlZGdlZEJ5ID0gJy0tJztcblxuICAgIGlmIChzdGF0dXMgIT09IEFsYXJtU3RhdHVzLkFDS05PV0xFREdFRCB8fCAhYXVkaXRMb2cgfHwgIWF1ZGl0TG9nWzBdPy51c2VyKSB7XG4gICAgICByZXR1cm4gYWNrbm93bGVkZ2VkQnk7XG4gICAgfVxuXG4gICAgYWNrbm93bGVkZ2VkQnkgPSBhdWRpdExvZ1swXS51c2VyO1xuXG4gICAgcmV0dXJuIGF1ZGl0TG9nLnJlZHVjZVJpZ2h0KChhY2MsIGF1ZGl0TG9nSXRlbSkgPT4ge1xuICAgICAgY29uc3QgY2hhbmdlcyA9IEFycmF5LmZyb20oYXVkaXRMb2dJdGVtLmNoYW5nZXMgfHwgW10pO1xuICAgICAgY29uc3QgYWNrbm93bGVkZ2VkU3RhdHVzQ2hhbmdlID0gY2hhbmdlcy5maW5kKFxuICAgICAgICAoY2hhbmdlOiBJQ2hhbmdlKSA9PlxuICAgICAgICAgIGNoYW5nZS5hdHRyaWJ1dGUgPT09IHRoaXMuU1RBVFVTX0FUVFJJQlVURSAmJiBjaGFuZ2UubmV3VmFsdWUgPT09IEFsYXJtU3RhdHVzLkFDS05PV0xFREdFRFxuICAgICAgKTtcbiAgICAgIHJldHVybiAoYWNrbm93bGVkZ2VkU3RhdHVzQ2hhbmdlICYmIGF1ZGl0TG9nSXRlbS51c2VyKSB8fCBhY2M7XG4gICAgfSwgYWNrbm93bGVkZ2VkQnkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIGFja25vd2xlZGdlIHRpbWUgZnJvbSBhIGxpc3Qgb2YgYXVkaXQgcmVjb3Jkcy5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgaXRlcmF0ZXMgb3ZlciB0aGUgcHJvdmlkZWQgYXVkaXQgcmVjb3JkcyBpbiByZXZlcnNlIG9yZGVyXG4gICAqIChzdGFydGluZyBmcm9tIHRoZSBtb3N0IHJlY2VudCkgYW5kIGZpbmRzIHRoZSBmaXJzdCByZWNvcmQgd2hlcmUgYVxuICAgKiBzcGVjaWZpYyBzdGF0dXMgYXR0cmlidXRlIChkZWZpbmVkIGJ5IHRoaXMuU1RBVFVTX0FUVFJJQlVURSkgaGFzIGJlZW5cbiAgICogYWNrbm93bGVkZ2VkLiBJdCB0aGVuIHJldHVybnMgdGhlIGNyZWF0aW9uIHRpbWUgb2YgdGhhdCByZWNvcmQuXG4gICAqXG4gICAqIElmIG5vIHN1Y2ggcmVjb3JkIGlzIGZvdW5kLCB0aGUgbWV0aG9kIHJldHVybnMgdGhlIGNyZWF0aW9uIHRpbWUgb2YgdGhlXG4gICAqIGZpcnN0IGF1ZGl0IHJlY29yZC4gSWYgdGhlIGF1ZGl0IHJlY29yZCBsaXN0IGlzIGVtcHR5LCBpdCByZXR1cm5zIG51bGwuXG4gICAqXG4gICAqIFRoZXJlIGNhbiBiZSBtdWx0aXBsZSBhdWRpdCBsb2dzIHdpdGggQUNLTk9XTEVER0VEIHN0YXR1cy5cbiAgICpcbiAgICogQHBhcmFtIGF1ZGl0TG9nIC0gQW4gYXJyYXkgb2YgYXVkaXQgcmVjb3JkcyB0byBwcm9jZXNzLlxuICAgKiBAcmV0dXJucyBUaGUgY3JlYXRpb24gdGltZSBvZiB0aGUgYWNrbm93bGVkZ2VkIHJlY29yZCxcbiAgICogICAgICAgICAgIHRoZSBjcmVhdGlvbiB0aW1lIG9mIHRoZSBmaXJzdCByZWNvcmQgaWYgbm8gYWNrbm93bGVkZ2VkIHJlY29yZCBpcyBmb3VuZCxcbiAgICogICAgICAgICAgIG9yIG51bGwgaWYgdGhlIGF1ZGl0IGxvZyBpcyBlbXB0eS5cbiAgICovXG4gIGdldEFja25vd2xlZGdlVGltZShhdWRpdExvZzogSUF1ZGl0UmVjb3JkW10pOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCBpbml0aWFsVmFsdWUgPSBhdWRpdExvZy5sZW5ndGggPyBhdWRpdExvZ1swXS5jcmVhdGlvblRpbWUgOiBudWxsO1xuXG4gICAgcmV0dXJuIGF1ZGl0TG9nLnJlZHVjZVJpZ2h0KChhY2MsIGF1ZGl0TG9nSXRlbSkgPT4ge1xuICAgICAgY29uc3QgY2hhbmdlcyA9IEFycmF5LmZyb20oYXVkaXRMb2dJdGVtLmNoYW5nZXMgfHwgW10pO1xuICAgICAgY29uc3QgYWNrbm93bGVkZ2VkU3RhdHVzQ2hhbmdlID0gY2hhbmdlcy5maW5kKFxuICAgICAgICAoY2hhbmdlOiBJQ2hhbmdlKSA9PlxuICAgICAgICAgIGNoYW5nZS5hdHRyaWJ1dGUgPT09IHRoaXMuU1RBVFVTX0FUVFJJQlVURSAmJiBjaGFuZ2UubmV3VmFsdWUgPT09IEFsYXJtU3RhdHVzLkFDS05PV0xFREdFRFxuICAgICAgKTtcbiAgICAgIHJldHVybiBhY2tub3dsZWRnZWRTdGF0dXNDaGFuZ2UgPyBhdWRpdExvZ0l0ZW0uY3JlYXRpb25UaW1lIDogYWNjO1xuICAgIH0sIGluaXRpYWxWYWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBlbmQgdGltZSBvZiBhbiBldmVudCBmcm9tIGFuIGF1ZGl0IGxvZy5cbiAgICpcbiAgICogVGhlIG1ldGhvZCBwcm9jZXNzZXMgdGhlIHByb3ZpZGVkIGF1ZGl0IGxvZyB0byBmaW5kIHRoZSBmaXJzdCBpbnN0YW5jZVxuICAgKiAoc3RhcnRpbmcgZnJvbSB0aGUgbW9zdCByZWNlbnQgcmVjb3JkKSB3aGVyZSB0aGUgc3RhdHVzIHdhcyBjaGFuZ2VkIHRvICdDTEVBUkVEJy5cbiAgICogSXQgaXRlcmF0ZXMgb3ZlciB0aGUgYXVkaXQgcmVjb3JkcyBhbmRcbiAgICogY2hlY2tzIHRoZSBjaGFuZ2VzIGluIGVhY2ggcmVjb3JkIHRvIGZpbmQgdGhpcyBzdGF0dXMgY2hhbmdlLlxuICAgKlxuICAgKiBJZiBhIHJlY29yZCB3aXRoIHRoZSBDTEVBUkVEIHN0YXR1cyBpcyBmb3VuZCwgdGhlIG1ldGhvZCByZXR1cm5zIHRoZSBjcmVhdGlvbiB0aW1lXG4gICAqIG9mIHRoYXQgcmVjb3JkLiBJZiB0aGUgZW50aXJlIGF1ZGl0IGxvZyBpcyBwcm9jZXNzZWQgd2l0aG91dCBmaW5kaW5nIGEgQ0xFQVJFRCBzdGF0dXMsXG4gICAqIHRoZSBjcmVhdGlvbiB0aW1lIG9mIHRoZSBmaXJzdCBhdWRpdCBsb2cgcmVjb3JkIGlzIHJldHVybmVkLlxuICAgKlxuICAgKiBJZiB0aGUgYXVkaXQgbG9nIGlzIGVtcHR5IG9yIG51bGwsIHRoZSBtZXRob2QgcmV0dXJucyBudWxsLlxuICAgKlxuICAgKiBUaGVyZSBjYW4gYmUgb25seSBvbmUgYXVkaXQgbG9nIHdpdGggQ0xFQVJFRCBzdGF0dXMuXG4gICAqXG4gICAqIEBwYXJhbSBhdWRpdExvZyAtIEFuIGFycmF5IG9mIGF1ZGl0IHJlY29yZHMgdG8gcHJvY2Vzcy5cbiAgICogQHJldHVybnMgVGhlIGNyZWF0aW9uIHRpbWUgb2YgdGhlIHJlY29yZCB3aXRoIHRoZSBDTEVBUkVEIHN0YXR1cyxcbiAgICogICAgICAgICAgdGhlIGNyZWF0aW9uIHRpbWUgb2YgdGhlIGZpcnN0IHJlY29yZCBpZiBubyBDTEVBUkVEIHN0YXR1cyBpcyBmb3VuZCxcbiAgICogICAgICAgICAgb3IgbnVsbCBpZiB0aGUgYXVkaXQgbG9nIGlzIGVtcHR5IG9yIG51bGwuXG4gICAqL1xuICBnZXRFbmRUaW1lKGF1ZGl0TG9nOiBJQXVkaXRSZWNvcmRbXSk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICghYXVkaXRMb2cgfHwgYXVkaXRMb2cubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgbGF0ZXN0Q2xlYXJlZEF1ZGl0VGltZSA9IG51bGw7XG5cbiAgICBmb3IgKGNvbnN0IGF1ZGl0TG9nSXRlbSBvZiBhdWRpdExvZykge1xuICAgICAgY29uc3QgY2hhbmdlcyA9IEFycmF5LmZyb20oYXVkaXRMb2dJdGVtLmNoYW5nZXMgfHwgW10pO1xuICAgICAgY29uc3QgY2xlYXJlZFN0YXR1c0NoYW5nZSA9IGNoYW5nZXMuZmluZChcbiAgICAgICAgY2hhbmdlID0+XG4gICAgICAgICAgY2hhbmdlLmF0dHJpYnV0ZSA9PT0gdGhpcy5TVEFUVVNfQVRUUklCVVRFICYmIGNoYW5nZS5uZXdWYWx1ZSA9PT0gQWxhcm1TdGF0dXMuQ0xFQVJFRFxuICAgICAgKTtcblxuICAgICAgaWYgKGNsZWFyZWRTdGF0dXNDaGFuZ2UpIHtcbiAgICAgICAgaWYgKCFsYXRlc3RDbGVhcmVkQXVkaXRUaW1lIHx8IGF1ZGl0TG9nSXRlbS5jcmVhdGlvblRpbWUgPiBsYXRlc3RDbGVhcmVkQXVkaXRUaW1lKSB7XG4gICAgICAgICAgbGF0ZXN0Q2xlYXJlZEF1ZGl0VGltZSA9IGF1ZGl0TG9nSXRlbS5jcmVhdGlvblRpbWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGF0ZXN0Q2xlYXJlZEF1ZGl0VGltZSB8fCBhdWRpdExvZ1swXS5jcmVhdGlvblRpbWU7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIGEgc3BlY2lmaWVkIGFwcGxpY2F0aW9uIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBhcHBsaWNhdGlvbiBrZXkuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGZpcnN0IGNoZWNrcyBpZiB0aGUgcmVxdWVzdGVkIGFwcGxpY2F0aW9uLCBpZGVudGlmaWVkIGJ5IGl0cyBrZXkgKHdoaWNoIGNvdWxkIGJlbG9uZyB0byBEZXZpY2UgTWFuYWdlbWVudFxuICAgKiBvciBTbWFydCBSdWxlcyBNaWNyb3NlcnZpY2UpLCBpcyBwcmVzZW50IGluIHRoZSB1c2VyJ3MgY3VycmVudCBhcHBsaWNhdGlvbnMgY2FjaGUuIElmIG5vdCBmb3VuZCBpbiB0aGUgY2FjaGUsXG4gICAqIGl0IGZldGNoZXMgdGhlIGFwcGxpY2F0aW9uIGZyb20gdGhlIGxpc3Qgb2YgY3VycmVudCB1c2VyJ3MgYXBwbGljYXRpb25zLCB3aGljaCBpcyBtYWludGFpbmVkIGJ5IHRoZSBzdGF0ZSBzZXJ2aWNlLlxuICAgKlxuICAgKiBUaGUgYXBwbGljYXRpb24gaXMgc2VhcmNoZWQgYnkgaXRzIGtleSwgYW5kIHRoaXMgbWV0aG9kIHJldHVybnMgYSBwcm9taXNlIHRoYXQgZWl0aGVyIHJlc29sdmVzIHRvIHRoZSBmb3VuZCBhcHBsaWNhdGlvblxuICAgKiBvciB1bmRlZmluZWQgaWYgdGhlIGFwcGxpY2F0aW9uIHdpdGggdGhlIHNwZWNpZmllZCBrZXkgZG9lcyBub3QgZXhpc3QuXG4gICAqXG4gICAqIEBwYXJhbSBhcHBsaWNhdGlvbktleSBUaGUga2V5IG9mIHRoZSBhcHBsaWNhdGlvbiB0byByZXRyaWV2ZS5cbiAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHJlcXVlc3RlZCBhcHBsaWNhdGlvbiBvciB1bmRlZmluZWQgaWYgdGhlIGFwcGxpY2F0aW9uIGlzIG5vdCBmb3VuZC5cbiAgICovXG4gIGFzeW5jIGdldEFwcGxpY2F0aW9uKGFwcGxpY2F0aW9uS2V5OiBzdHJpbmcpOiBQcm9taXNlPElBcHBsaWNhdGlvbiB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgIHRoaXMuc3RhdGVTZXJ2aWNlLmN1cnJlbnRBcHBzT2ZVc2VyLnBpcGUoXG4gICAgICAgIG1hcChhcHBzID0+IGFwcHMuZmluZChhcHAgPT4gYXBwLmtleSA9PT0gYXBwbGljYXRpb25LZXkpKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgY2hlY2tJZkhhc0FueVJvbGVBbGxvd2luZ1RvQ3JlYXRlU21hcnRSdWxlKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IFJPTEVTX0FMTE9XSU5HX1NNQVJUX1JVTEVfQ1JFQVRJT04gPSBbXG4gICAgICBbXG4gICAgICAgIFBlcm1pc3Npb25zLlJPTEVfSU5WRU5UT1JZX0FETUlOLFxuICAgICAgICBQZXJtaXNzaW9ucy5ST0xFX0lOVkVOVE9SWV9DUkVBVEUsXG4gICAgICAgIFBlcm1pc3Npb25zLlJPTEVfTUFOQUdFRF9PQkpFQ1RfQURNSU4sXG4gICAgICAgIFBlcm1pc3Npb25zLlJPTEVfTUFOQUdFRF9PQkpFQ1RfQ1JFQVRFXG4gICAgICBdLFxuICAgICAgW1Blcm1pc3Npb25zLlJPTEVfQ0VQX01BTkFHRU1FTlRfQURNSU4sIFBlcm1pc3Npb25zLlJPTEVfU01BUlRSVUxFX0FETUlOXVxuICAgIF07XG5cbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5wZXJtaXNzaW9ucy5oYXNBbnlSb2xlKFJPTEVTX0FMTE9XSU5HX1NNQVJUX1JVTEVfQ1JFQVRJT05bMF0pICYmXG4gICAgICB0aGlzLnBlcm1pc3Npb25zLmhhc0FueVJvbGUoUk9MRVNfQUxMT1dJTkdfU01BUlRfUlVMRV9DUkVBVElPTlsxXSlcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
1
|
+
import { inject, Injector, NgModule, Optional, runInInjectionContext, SkipSelf } from '@angular/core';
|
|
2
2
|
import { BasicAuth, FetchClient, Realtime, CookieAuth } from '@c8y/client';
|
|
3
3
|
import { ApiService } from './api.service';
|
|
4
4
|
import * as services from './services';
|
|
@@ -14,7 +14,32 @@ function toProvider(provide) {
|
|
|
14
14
|
if (provide === Realtime) {
|
|
15
15
|
deps = [FetchClient];
|
|
16
16
|
}
|
|
17
|
-
|
|
17
|
+
const depsWithExistingProvider = [
|
|
18
|
+
[provide, new Optional(), new SkipSelf()], // let's see if we can find an existing provider (possibly null)
|
|
19
|
+
...deps
|
|
20
|
+
];
|
|
21
|
+
return {
|
|
22
|
+
provide,
|
|
23
|
+
deps: depsWithExistingProvider,
|
|
24
|
+
useFactory: (...args) => {
|
|
25
|
+
// if there was an existing provider, it would be first in the list and we can return it
|
|
26
|
+
if (args.length && args[0] !== null) {
|
|
27
|
+
return args[0];
|
|
28
|
+
}
|
|
29
|
+
// otherwise we need to drop the first element as it would be null
|
|
30
|
+
const providers = args.slice(1);
|
|
31
|
+
// the other providers are the dependencies we need. They match the order of the deps array
|
|
32
|
+
const existingProviders = deps.map((dep, index) => {
|
|
33
|
+
return { provide: dep, useValue: providers[index] };
|
|
34
|
+
});
|
|
35
|
+
// use this to dependency inject the dependencies and instantiate the class
|
|
36
|
+
return runInInjectionContext(Injector.create({
|
|
37
|
+
providers: [...existingProviders, { provide, useClass: provide, deps: deps }]
|
|
38
|
+
}), () => {
|
|
39
|
+
return inject(provide);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
};
|
|
18
43
|
}
|
|
19
44
|
const providers = Object.keys(services)
|
|
20
45
|
.map(k => toProvider(services[k]))
|
|
@@ -40,4 +65,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
|
|
|
40
65
|
providers
|
|
41
66
|
}]
|
|
42
67
|
}] });
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hcGkvZGF0YS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLE1BQU0sRUFDTixRQUFRLEVBRVIsUUFBUSxFQUNSLFFBQVEsRUFFUixxQkFBcUIsRUFDckIsUUFBUSxFQUdULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDM0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEtBQUssUUFBUSxNQUFNLFlBQVksQ0FBQzs7QUFFdkMsU0FBUyxVQUFVLENBQUksT0FBZ0I7SUFDckMsSUFBSSxJQUFJLEdBQXFELENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3JGLElBQUksT0FBTyxLQUFLLFdBQVcsRUFBRSxDQUFDO1FBQzVCLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFDRCxJQUFJLE9BQU8sS0FBSyxTQUFTLElBQUksT0FBTyxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQ3BELElBQUksR0FBRyxFQUFFLENBQUM7SUFDWixDQUFDO0lBQ0QsSUFBSSxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDekIsSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUNELE1BQU0sd0JBQXdCLEdBQUc7UUFDL0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxRQUFRLEVBQUUsRUFBRSxJQUFJLFFBQVEsRUFBRSxDQUFDLEVBQUUsZ0VBQWdFO1FBQzNHLEdBQUcsSUFBSTtLQUNSLENBQUM7SUFDRixPQUFPO1FBQ0wsT0FBTztRQUNQLElBQUksRUFBRSx3QkFBd0I7UUFDOUIsVUFBVSxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsRUFBRTtZQUN0Qix3RkFBd0Y7WUFDeEYsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDcEMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakIsQ0FBQztZQUVELGtFQUFrRTtZQUNsRSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLDJGQUEyRjtZQUMzRixNQUFNLGlCQUFpQixHQUFvQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUNqRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEQsQ0FBQyxDQUFDLENBQUM7WUFFSCwyRUFBMkU7WUFDM0UsT0FBTyxxQkFBcUIsQ0FDMUIsUUFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDZCxTQUFTLEVBQUUsQ0FBQyxHQUFHLGlCQUFpQixFQUFFLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO2FBQzlFLENBQUMsRUFDRixHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDekIsQ0FBQyxDQUNGLENBQUM7UUFDSixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFNBQVMsR0FBZSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztLQUNoRCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDakMsTUFBTSxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDaEYsV0FBVztBQUlYLE1BQU0sT0FBTyxVQUFVO0lBQ3JCLE1BQU0sQ0FBQyxTQUFTO1FBQ2QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUNELE1BQU0sQ0FBQyxPQUFPO1FBQ1osT0FBTztZQUNMLFFBQVEsRUFBRSxVQUFVO1lBQ3BCLFNBQVM7U0FDVixDQUFDO0lBQ0osQ0FBQzs4R0FUVSxVQUFVOytHQUFWLFVBQVU7K0dBQVYsVUFBVSxhQUZyQixTQUFTOzsyRkFFRSxVQUFVO2tCQUh0QixRQUFRO21CQUFDO29CQUNSLFNBQVM7aUJBQ1YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBpbmplY3QsXG4gIEluamVjdG9yLFxuICBNb2R1bGVXaXRoUHJvdmlkZXJzLFxuICBOZ01vZHVsZSxcbiAgT3B0aW9uYWwsXG4gIFByb3ZpZGVyLFxuICBydW5JbkluamVjdGlvbkNvbnRleHQsXG4gIFNraXBTZWxmLFxuICBUeXBlLFxuICBWYWx1ZVByb3ZpZGVyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFzaWNBdXRoLCBGZXRjaENsaWVudCwgUmVhbHRpbWUsIENvb2tpZUF1dGggfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSAnLi9hcGkuc2VydmljZSc7XG5pbXBvcnQgKiBhcyBzZXJ2aWNlcyBmcm9tICcuL3NlcnZpY2VzJztcblxuZnVuY3Rpb24gdG9Qcm92aWRlcjxUPihwcm92aWRlOiBUeXBlPFQ+KTogUHJvdmlkZXIge1xuICBsZXQgZGVwczogQXJyYXk8VHlwZTxGZXRjaENsaWVudCB8IFJlYWx0aW1lIHwgQ29va2llQXV0aD4+ID0gW0ZldGNoQ2xpZW50LCBSZWFsdGltZV07XG4gIGlmIChwcm92aWRlID09PSBGZXRjaENsaWVudCkge1xuICAgIGRlcHMgPSBbQ29va2llQXV0aF07XG4gIH1cbiAgaWYgKHByb3ZpZGUgPT09IEJhc2ljQXV0aCB8fCBwcm92aWRlID09PSBDb29raWVBdXRoKSB7XG4gICAgZGVwcyA9IFtdO1xuICB9XG4gIGlmIChwcm92aWRlID09PSBSZWFsdGltZSkge1xuICAgIGRlcHMgPSBbRmV0Y2hDbGllbnRdO1xuICB9XG4gIGNvbnN0IGRlcHNXaXRoRXhpc3RpbmdQcm92aWRlciA9IFtcbiAgICBbcHJvdmlkZSwgbmV3IE9wdGlvbmFsKCksIG5ldyBTa2lwU2VsZigpXSwgLy8gbGV0J3Mgc2VlIGlmIHdlIGNhbiBmaW5kIGFuIGV4aXN0aW5nIHByb3ZpZGVyIChwb3NzaWJseSBudWxsKVxuICAgIC4uLmRlcHNcbiAgXTtcbiAgcmV0dXJuIHtcbiAgICBwcm92aWRlLFxuICAgIGRlcHM6IGRlcHNXaXRoRXhpc3RpbmdQcm92aWRlcixcbiAgICB1c2VGYWN0b3J5OiAoLi4uYXJncykgPT4ge1xuICAgICAgLy8gaWYgdGhlcmUgd2FzIGFuIGV4aXN0aW5nIHByb3ZpZGVyLCBpdCB3b3VsZCBiZSBmaXJzdCBpbiB0aGUgbGlzdCBhbmQgd2UgY2FuIHJldHVybiBpdFxuICAgICAgaWYgKGFyZ3MubGVuZ3RoICYmIGFyZ3NbMF0gIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGFyZ3NbMF07XG4gICAgICB9XG5cbiAgICAgIC8vIG90aGVyd2lzZSB3ZSBuZWVkIHRvIGRyb3AgdGhlIGZpcnN0IGVsZW1lbnQgYXMgaXQgd291bGQgYmUgbnVsbFxuICAgICAgY29uc3QgcHJvdmlkZXJzID0gYXJncy5zbGljZSgxKTtcbiAgICAgIC8vIHRoZSBvdGhlciBwcm92aWRlcnMgYXJlIHRoZSBkZXBlbmRlbmNpZXMgd2UgbmVlZC4gVGhleSBtYXRjaCB0aGUgb3JkZXIgb2YgdGhlIGRlcHMgYXJyYXlcbiAgICAgIGNvbnN0IGV4aXN0aW5nUHJvdmlkZXJzOiBWYWx1ZVByb3ZpZGVyW10gPSBkZXBzLm1hcCgoZGVwLCBpbmRleCkgPT4ge1xuICAgICAgICByZXR1cm4geyBwcm92aWRlOiBkZXAsIHVzZVZhbHVlOiBwcm92aWRlcnNbaW5kZXhdIH07XG4gICAgICB9KTtcblxuICAgICAgLy8gdXNlIHRoaXMgdG8gZGVwZW5kZW5jeSBpbmplY3QgdGhlIGRlcGVuZGVuY2llcyBhbmQgaW5zdGFudGlhdGUgdGhlIGNsYXNzXG4gICAgICByZXR1cm4gcnVuSW5JbmplY3Rpb25Db250ZXh0KFxuICAgICAgICBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICAgIHByb3ZpZGVyczogWy4uLmV4aXN0aW5nUHJvdmlkZXJzLCB7IHByb3ZpZGUsIHVzZUNsYXNzOiBwcm92aWRlLCBkZXBzOiBkZXBzIH1dXG4gICAgICAgIH0pLFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGluamVjdChwcm92aWRlKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IHByb3ZpZGVyczogUHJvdmlkZXJbXSA9IE9iamVjdC5rZXlzKHNlcnZpY2VzKVxuICAubWFwKGsgPT4gdG9Qcm92aWRlcihzZXJ2aWNlc1trXSkpXG4gIC5jb25jYXQoW3sgcHJvdmlkZTogQXBpU2VydmljZSwgdXNlQ2xhc3M6IEFwaVNlcnZpY2UsIGRlcHM6IFtGZXRjaENsaWVudF0gfV0pO1xuLy8gQGR5bmFtaWNcbkBOZ01vZHVsZSh7XG4gIHByb3ZpZGVyc1xufSlcbmV4cG9ydCBjbGFzcyBEYXRhTW9kdWxlIHtcbiAgc3RhdGljIHByb3ZpZGVycygpOiBQcm92aWRlcltdIHtcbiAgICByZXR1cm4gcHJvdmlkZXJzO1xuICB9XG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8RGF0YU1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogRGF0YU1vZHVsZSxcbiAgICAgIHByb3ZpZGVyc1xuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -159,7 +159,7 @@ export class PluginsResolveService {
|
|
|
159
159
|
atLeastOneModuleLoadedSuccessfully = true;
|
|
160
160
|
}
|
|
161
161
|
catch (ex) {
|
|
162
|
-
console.warn(`Could not load remote module '
|
|
162
|
+
console.warn(`Could not load remote module '%s' from url:`, moduleName, url);
|
|
163
163
|
}
|
|
164
164
|
}
|
|
165
165
|
// no need to load translations if we were unable to load a single module..
|
|
@@ -258,7 +258,7 @@ export class PluginsResolveService {
|
|
|
258
258
|
await __webpack_init_sharing__('default');
|
|
259
259
|
}
|
|
260
260
|
catch (ex) {
|
|
261
|
-
console.error(`Module
|
|
261
|
+
console.error(`Module %s could not be loaded. Module Federation is not enabled in this application.`, exposedModule, ex);
|
|
262
262
|
}
|
|
263
263
|
const container = window[remoteName];
|
|
264
264
|
// Initialize the container, it may provide shared modules
|
|
@@ -268,7 +268,7 @@ export class PluginsResolveService {
|
|
|
268
268
|
factory = (await container.get(exposedModule))();
|
|
269
269
|
}
|
|
270
270
|
catch (ex) {
|
|
271
|
-
console.error(`Module
|
|
271
|
+
console.error(`Module %s could not be loaded.`, exposedModule, ex);
|
|
272
272
|
}
|
|
273
273
|
return { name: exposedModule, factory };
|
|
274
274
|
}
|
|
@@ -281,4 +281,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
|
|
|
281
281
|
providedIn: 'root'
|
|
282
282
|
}]
|
|
283
283
|
}], ctorParameters: () => [{ type: i1.TranslateService }, { type: i2.FetchClient }, { type: i3.AppStateService }, { type: i0.EnvironmentInjector }] });
|
|
284
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy1yZXNvbHZlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3BsdWdpbnMvcGx1Z2lucy1yZXNvbHZlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQVEsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25HLE9BQU8sRUFBNEIsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7O0FBZXRDLE1BQU0sT0FBTyxxQkFBcUI7SUFDaEM7Ozs7Ozs7Ozs7Ozs7Ozs7O09BaUJHO0lBQ0gsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFtQztRQUNyRCxPQUFPLE1BQU0sQ0FDWCxPQUFPLEVBQ1AsQ0FBQyxVQUFvQyxFQUFFLFFBQWtDLEVBQUUsRUFBRTtZQUMzRSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsYUFBdUIsRUFBRSxpQkFBeUIsRUFBRSxFQUFFO2dCQUN2RSxNQUFNLGNBQWMsR0FBRyxHQUFHLENBQUMsVUFBVSxFQUFFLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUM5RCxVQUFVLENBQUMsaUJBQWlCLENBQUMsR0FBRyxLQUFLLENBQUMsY0FBYyxFQUFF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LE1BQU0sU0FBUyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDbkQsQ0FBQztRQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDWixPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsYUFBYSx1QkFBdUIsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNwRSxDQUFDO1FBQ0QsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDMUMsQ0FBQzs4R0E3VFUscUJBQXFCO2tIQUFyQixxQkFBcUIsY0FGcEIsTUFBTTs7MkZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE5nTW9kdWxlUmVmLCBFbnZpcm9ubWVudEluamVjdG9yLCBUeXBlLCBjcmVhdGVOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zLCBGZXRjaENsaWVudCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IHJlZHVjZSwgZm9yRWFjaCwgZ2V0LCB1bmlvbiwgY2FtZWxDYXNlIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBcHBTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24nO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcblxudHlwZSBTY29wZSA9IHVua25vd247XG50eXBlIEZhY3RvcnkgPSAoKSA9PiBhbnk7XG5cbmRlY2xhcmUgY29uc3QgX193ZWJwYWNrX2luaXRfc2hhcmluZ19fOiAoc2hhcmVTY29wZTogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuZGVjbGFyZSBjb25zdCBfX3dlYnBhY2tfc2hhcmVfc2NvcGVzX186IHsgZGVmYXVsdDogU2NvcGUgfTtcblxuaW50ZXJmYWNlIENvbnRhaW5lciB7XG4gIGluaXQoc2hhcmVTY29wZTogU2NvcGUpOiB2b2lkO1xuICBnZXQobW9kdWxlOiBzdHJpbmcpOiBGYWN0b3J5O1xufVxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUGx1Z2luc1Jlc29sdmVTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIFRha2VzIGEgbGlzdCBvZiByZW1vdGVzIGFuZCB0dXJucyBpdCBpbnRvIGFuIG9iamVjdCBjb250YWluaW5nIHVuaW9uIG9mIGNvcnJlc3BvbmRpbmcgcmVtb3Rlcy5cbiAgICogQHBhcmFtIHJlbW90ZXMgTGlzdCBvZiB0aGUgcmVtb3Rlcy5cbiAgICogQHJldHVybnMgUmV0dXJucyBvYmplY3Qgd2l0aCBtZXJnZWQgcmVtb3Rlcy5cbiAgICpcbiAgICogKipFeGFtcGxlKipcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCByZW1vdGVzQTpBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMgPSB7IGNvbnRleHRQYXRoQTogWydtb2R1bGVBJywgJ21vZHVsZUInXSB9O1xuICAgKiBjb25zdCByZW1vdGVzQjpBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMgPSB7IGNvbnRleHRQYXRoQTogWydtb2R1bGVBJ10sIGNvbnRleHRQYXRoQjogWydtb2R1bGVaJ10gfTtcbiAgICogY29uc3QgbWVyZ2VkUmVtb3RlczpBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMgPSBtZXJnZVJlbW90ZXMoW3JlbW90ZXNBLCByZW1vdGVzQl0pO1xuICAgKiAvLyBSZXN1bHRcbiAgICoge1xuICAgKiAgY29udGV4dFBhdGhBOiBbJ21vZHVsZUEnLCAnbW9kdWxlQiddLFxuICAgKiAgY29udGV4dFBhdGhCOiBbJ21vZHVsZVonXVxuICAgKiB9XG4gICAqXG4gICAqIGBgYFxuICAgKi9cbiAgc3RhdGljIG1lcmdlUmVtb3RlcyhyZW1vdGVzOiBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnNbXSk6IEFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucyB7XG4gICAgcmV0dXJuIHJlZHVjZShcbiAgICAgIHJlbW90ZXMsXG4gICAgICAoYWxsUmVtb3RlczogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zLCBtZlJlbW90ZTogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zKSA9PiB7XG4gICAgICAgIGZvckVhY2gobWZSZW1vdGUsIChyZW1vdGVNb2R1bGVzOiBzdHJpbmdbXSwgcmVtb3RlQ29udGV4dFBhdGg6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRSZW1vdGVzID0gZ2V0KGFsbFJlbW90ZXMsIHJlbW90ZUNvbnRleHRQYXRoLCBbXSk7XG4gICAgICAgICAgYWxsUmVtb3Rlc1tyZW1vdGVDb250ZXh0UGF0aF0gPSB1bmlvbihjdXJyZW50UmVtb3RlcywgcmVtb3RlTW9kdWxlcyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBhbGxSZW1vdGVzO1xuICAgICAgfSxcbiAgICAgIHt9XG4gICAgKTtcbiAgfVxuXG4gIHN0YXRpYyByZW1vdmVSZW1vdGVzKFxuICAgIHJlbW90ZXNUb1JlbW92ZUZyb206IEFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucyxcbiAgICByZW1vdGVzVG9SZW1vdmU/OiBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnNcbiAgKTogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zIHtcbiAgICBjb25zdCBrZXlzVG9SZW1vdmUgPSBPYmplY3Qua2V5cyhyZW1vdGVzVG9SZW1vdmUgfHwge30pO1xuICAgIGlmICgha2V5c1RvUmVtb3ZlLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHJlbW90ZXNUb1JlbW92ZUZyb207XG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnRLZXlzID0gT2JqZWN0LmtleXMocmVtb3Rlc1RvUmVtb3ZlRnJvbSk7XG4gICAgY29uc3Qga2V5c1ByZXNlbnRJbkJvdGggPSBjdXJyZW50S2V5cy5maWx0ZXIoa2V5ID0+IGtleXNUb1JlbW92ZS5pbmNsdWRlcyhrZXkpKTtcbiAgICBpZiAoIWtleXNQcmVzZW50SW5Cb3RoLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHJlbW90ZXNUb1JlbW92ZUZyb207XG4gICAgfVxuICAgIHJlbW90ZXNUb1JlbW92ZUZyb20gPSBjbG9uZURlZXAocmVtb3Rlc1RvUmVtb3ZlRnJvbSk7XG4gICAgZm9yIChjb25zdCByZW1vdGVDb250ZXh0UGF0aCBvZiBrZXlzUHJlc2VudEluQm90aCkge1xuICAgICAgY29uc3QgcmVtb3RlTW9kdWxlc1RvQmVSZW1vdmVkID0gcmVtb3Rlc1RvUmVtb3ZlW3JlbW90ZUNvbnRleHRQYXRoXTtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShyZW1vdGVNb2R1bGVzVG9CZVJlbW92ZWQpIHx8ICFyZW1vdGVNb2R1bGVzVG9CZVJlbW92ZWQ/Lmxlbmd0aCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgbGV0IGN1cnJlbnRNb2R1bGVzID0gcmVtb3Rlc1RvUmVtb3ZlRnJvbVtyZW1vdGVDb250ZXh0UGF0aF07XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY3VycmVudE1vZHVsZXMpIHx8ICFjdXJyZW50TW9kdWxlcz8ubGVuZ3RoKSB7XG4gICAgICAgIGRlbGV0ZSByZW1vdGVzVG9SZW1vdmVGcm9tW3JlbW90ZUNvbnRleHRQYXRoXTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGN1cnJlbnRNb2R1bGVzID0gY3VycmVudE1vZHVsZXMuZmlsdGVyKG1vZHVsZSA9PiAhcmVtb3RlTW9kdWxlc1RvQmVSZW1vdmVkLmluY2x1ZGVzKG1vZHVsZSkpO1xuICAgICAgaWYgKGN1cnJlbnRNb2R1bGVzLmxlbmd0aCkge1xuICAgICAgICByZW1vdGVzVG9SZW1vdmVGcm9tW3JlbW90ZUNvbnRleHRQYXRoXSA9IGN1cnJlbnRNb2R1bGVzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVsZXRlIHJlbW90ZXNUb1JlbW92ZUZyb21bcmVtb3RlQ29udGV4dFBhdGhdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZW1vdGVzVG9SZW1vdmVGcm9tO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIGFsbCBpbmplY3RvcnMgb2YgYWxyZWFkeSBsb2FkZWQgcGx1Z2lucyBvbiBzdWJzY3JpcHRpb24uXG4gICAqL1xuICBpbmplY3RvcnMkOiBPYnNlcnZhYmxlPEVudmlyb25tZW50SW5qZWN0b3I+O1xuICAvKipcbiAgICogRW1pdHMgb25jZSByZW1vdGVQbHVnaW5zIGhhdmUgYmVlbiByZXNvbHZlZC5cbiAgICovXG4gIHJlZnJlc2gkOiBPYnNlcnZhYmxlPHZvaWQ+O1xuICAvKipcbiAgICogRW1pdHMgYWxsIHBsdWdpbiBkZXRhaWxzIG9mIGFscmVhZHkgbG9hZGVkIHBsdWdpbnMgb24gc3Vic2NyaXB0aW9uLlxuICAgKi9cbiAgcGx1Z2luRGV0YWlscyQ6IE9ic2VydmFibGU8e1xuICAgIHJlbW90ZU5nTW9kdWxlOiBOZ01vZHVsZVJlZjx1bmtub3duPiB8IFR5cGU8dW5rbm93bj47XG4gICAgbW9kdWxlUmVmOiBOZ01vZHVsZVJlZjx1bmtub3duPjtcbiAgfT47XG4gIGFsbFBsdWdpbnNMb2FkZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBwcml2YXRlIHVybFJlbW90ZXNDYWNoZTogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zID0gbnVsbDtcbiAgcHJpdmF0ZSByZW1vdGVTY3JpcHRTZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgcHJpdmF0ZSBfaW5qZWN0b3JzJCA9IG5ldyBTdWJqZWN0PEVudmlyb25tZW50SW5qZWN0b3I+KCk7XG4gIHByaXZhdGUgX3JlZnJlc2gkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBfcGx1Z2luRGV0YWlscyQgPSBuZXcgU3ViamVjdDx7XG4gICAgcmVtb3RlTmdNb2R1bGU6IE5nTW9kdWxlUmVmPHVua25vd24+IHwgVHlwZTx1bmtub3duPjtcbiAgICBtb2R1bGVSZWY6IE5nTW9kdWxlUmVmPHVua25vd24+O1xuICB9PigpO1xuICBwcml2YXRlIF9hbGxQbHVnaW5zTG9hZGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGZldGNoQ2xpZW50OiBGZXRjaENsaWVudCxcbiAgICBwcml2YXRlIGFwcFN0YXRlOiBBcHBTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogRW52aXJvbm1lbnRJbmplY3RvclxuICApIHtcbiAgICB0aGlzLmluamVjdG9ycyQgPSB0aGlzLl9pbmplY3RvcnMkLmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICAvLyBub3Qgc3BlY2lmeWluZyB0aGUgYnVmZmVyU2l6ZSBvZiBzaGFyZVJlcGxheSBzbyBhbGwgaW5qZWN0b3JzIGFyZSByZWNlaXZlZCBvbiBzdWJzY3JpcHRpb25cbiAgICAgIHNoYXJlUmVwbGF5KClcbiAgICApO1xuICAgIHRoaXMucmVmcmVzaCQgPSB0aGlzLl9yZWZyZXNoJC5hc09ic2VydmFibGUoKS5waXBlKHNoYXJlUmVwbGF5KDEpKTtcbiAgICB0aGlzLnBsdWdpbkRldGFpbHMkID0gdGhpcy5fcGx1Z2luRGV0YWlscyQuYXNPYnNlcnZhYmxlKCkucGlwZShcbiAgICAgIC8vIG5vdCBzcGVjaWZ5aW5nIHRoZSBidWZmZXJTaXplIG9mIHNoYXJlUmVwbGF5IHNvIGFsbCBkZXRhaWxzIGFyZSByZWNlaXZlZCBvbiBzdWJzY3JpcHRpb25cbiAgICAgIHNoYXJlUmVwbGF5KClcbiAgICApO1xuICAgIHRoaXMuYWxsUGx1Z2luc0xvYWRlZCQgPSB0aGlzLl9hbGxQbHVnaW5zTG9hZGVkJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyBwbHVnaW5zIGJ5IHJlc29sdmluZyB0aGUgcmVtb3RlIE5nTW9kdWxlcyBhbmQgaW5qZWN0aW5nIGl0LiBBbHNvIGF0dGFjaGluZ1xuICAgKiB0aGUgaG9va3Mgb250byB0aGUgcm9vdCBpbmplY3Rvci5cbiAgICogQHBhcmFtIHJlbW90ZU1vZHVsZXMgVGhlIHJlbW90ZSBwbHVnaW5zIHRvIGxvYWQgYXMgZmFjdG9yeSBuYW1lIG1hcHBpbmcgYXJyYXkuXG4gICAqL1xuICByZXNvbHZlUmVtb3RlUGx1Z2lucyhyZW1vdGVNb2R1bGVzOiBBcnJheTx7IGZhY3Rvcnk7IG5hbWUgfT4pIHtcbiAgICB0aGlzLmxvYWRNb2R1bGVzRHluYW1pY2FsbHkocmVtb3RlTW9kdWxlcyk7XG4gICAgdGhpcy5yZWZyZXNoSG9va3MoKTtcbiAgICB0aGlzLm1hcmtQbHVnaW5zQXNMb2FkZWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyBtb2R1bGVzIGFuZCBoYW5kbGVzIGhvb2tpbmcgY29ycmVjdGx5LlxuICAgKiBAcGFyYW0gcmVtb3RlTmdNb2R1bGVzIFRoZSBtb2R1bGVzIHRvIGxvYWQuXG4gICAqL1xuICBsb2FkTW9kdWxlc0R5bmFtaWNhbGx5KHJlbW90ZU1vZHVsZXM6IEFycmF5PHsgZmFjdG9yeTsgbmFtZSB9Pikge1xuICAgIGZvciAoY29uc3QgeyBmYWN0b3J5LCBuYW1lIH0gb2YgcmVtb3RlTW9kdWxlcykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5sb2FkTW9kdWxlKGZhY3RvcnlbbmFtZV0pO1xuICAgICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGxvYWQgJHtuYW1lfWAsIGV4KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBsb2FkTW9kdWxlPFQgPSB1bmtub3duPihyZW1vdGVOZ01vZHVsZTogTmdNb2R1bGVSZWY8VD4gfCBUeXBlPFQ+KSB7XG4gICAgbGV0IG1vZHVsZVJlZjogTmdNb2R1bGVSZWY8VD47XG4gICAgaWYgKHJlbW90ZU5nTW9kdWxlIGluc3RhbmNlb2YgTmdNb2R1bGVSZWYpIHtcbiAgICAgIC8vIEFPVFxuICAgICAgbW9kdWxlUmVmID0gcmVtb3RlTmdNb2R1bGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEpJVFxuICAgICAgbW9kdWxlUmVmID0gY3JlYXRlTmdNb2R1bGUocmVtb3RlTmdNb2R1bGUsIHRoaXMuaW5qZWN0b3IpO1xuICAgIH1cbiAgICB0aGlzLl9pbmplY3RvcnMkLm5leHQobW9kdWxlUmVmLmluamVjdG9yKTtcbiAgICB0aGlzLl9wbHVnaW5EZXRhaWxzJC5uZXh0KHsgbW9kdWxlUmVmLCByZW1vdGVOZ01vZHVsZSB9KTtcbiAgICByZXR1cm4gbW9kdWxlUmVmO1xuICB9XG5cbiAgLyoqXG4gICAqIFdpbGwgcmVmcmVzaCBhbGwgY3VycmVudCByZWdpc3RlcmVkIGhvb2tzLlxuICAgKi9cbiAgcmVmcmVzaEhvb2tzKCkge1xuICAgIHRoaXMuX3JlZnJlc2gkLm5leHQoKTtcbiAgfVxuXG4gIG1hcmtQbHVnaW5zQXNMb2FkZWQoKSB7XG4gICAgdGhpcy5fYWxsUGx1Z2luc0xvYWRlZCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyBhIGxpc3Qgb2YgcmVtb3RlcyBzbyB0aGF0IGEgcGFydGljdWxhciBhcHBsaWNhdGlvbiBjYW4gdXNlIHRoZW0uXG4gICAqIFRoZSByZXF1ZXN0IGlzIG1hZGUgdG8gdGhlIGZvbGxvd2luZyBhZGRyZXNzOiAvYXBwcy88Y29udGV4dFBhdGg+L3JlbW90ZUVudHJ5LmpzXG4gICAqIEBwYXJhbSByZW1vdGVzIExpc3Qgb2YgcmVtb3RlcyB0byBiZSBsb2FkZWQuXG4gICAqIEByZXR1cm5zIFJldHVybnMgdGhlIGxpc3Qgb2YgbG9hZGVkIG1vZHVsZXMgZnJvbSByZW1vdGVzLlxuICAgKi9cbiAgYXN5bmMgbG9hZFJlbW90ZXMocmVtb3RlczogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zKSB7XG4gICAgaWYgKCFyZW1vdGVzKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IHJlbW90ZU1vZHVsZXMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IHBsdWdpbklkIGluIHJlbW90ZXMpIHtcbiAgICAgIGlmIChyZW1vdGVzLmhhc093blByb3BlcnR5KHBsdWdpbklkKSkge1xuICAgICAgICBjb25zdCBtb2R1bGVOYW1lcyA9IHJlbW90ZXNbcGx1Z2luSWRdO1xuICAgICAgICBjb25zdCB1cmwgPSBgL2FwcHMvJHtwbHVnaW5JZH0vcmVtb3RlRW50cnkuanM/bm9jYWNoZT0ke2RhdGUuZ2V0VGltZSgpfWA7XG4gICAgICAgIGxldCBhdExlYXN0T25lTW9kdWxlTG9hZGVkU3VjY2Vzc2Z1bGx5ID0gZmFsc2U7XG4gICAgICAgIGZvciAoY29uc3QgbW9kdWxlTmFtZSBvZiBtb2R1bGVOYW1lcykge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZW1vdGVNb2R1bGVzLnB1c2goYXdhaXQgdGhpcy5sb2FkUmVtb3RlTW9kdWxlKHVybCwgcGx1Z2luSWQsIG1vZHVsZU5hbWUpKTtcbiAgICAgICAgICAgIGF0TGVhc3RPbmVNb2R1bGVMb2FkZWRTdWNjZXNzZnVsbHkgPSB0cnVlO1xuICAgICAgICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYENvdWxkIG5vdCBsb2FkIHJlbW90ZSBtb2R1bGUgJyR7bW9kdWxlTmFtZX0nIGZyb20gdXJsOmAsIHVybCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gbm8gbmVlZCB0byBsb2FkIHRyYW5zbGF0aW9ucyBpZiB3ZSB3ZXJlIHVuYWJsZSB0byBsb2FkIGEgc2luZ2xlIG1vZHVsZS4uXG4gICAgICAgIGlmIChhdExlYXN0T25lTW9kdWxlTG9hZGVkU3VjY2Vzc2Z1bGx5KSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5sb2FkUmVtb3RlVHJhbnNsYXRpb25zKHBsdWdpbklkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVtb3RlTW9kdWxlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBUYWtlcyBhIGxpc3Qgb2YgcmVtb3RlcyBhbmQgdHVybnMgaXQgaW50byBhbiBvYmplY3QgY29udGFpbmluZyB1bmlvbiBvZiBjb3JyZXNwb25kaW5nIHJlbW90ZXMuXG4gICAqIEBwYXJhbSBtZlJlbW90ZXMgTGlzdCBvZiB0aGUgcmVtb3Rlcy5cbiAgICogQHJldHVybnMgUmV0dXJucyBvYmplY3Qgd2l0aCBtZXJnZWQgcmVtb3Rlcy5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBzdGF0aWMgZnVuY3Rpb24gbWVyZ2VSZW1vdGVzIGFzIHRoaXMgaXMgYSBwdXJlIGZ1bmN0aW9uLlxuICAgKlxuICAgKiAqKkV4YW1wbGUqKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHJlbW90ZXNBOkFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucyA9IHsgY29udGV4dFBhdGhBOiBbJ21vZHVsZUEnLCAnbW9kdWxlQiddIH07XG4gICAqIGNvbnN0IHJlbW90ZXNCOkFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucyA9IHsgY29udGV4dFBhdGhBOiBbJ21vZHVsZUEnXSwgY29udGV4dFBhdGhCOiBbJ21vZHVsZVonXSB9O1xuICAgKiBjb25zdCBtZXJnZWRSZW1vdGVzOkFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucyA9IG1lcmdlTUZSZW1vdGVzKFtyZW1vdGVzQSwgcmVtb3Rlc0JdKTtcbiAgICogLy8gUmVzdWx0XG4gICAqIHtcbiAgICogIGNvbnRleHRQYXRoQTogWydtb2R1bGVBJywgJ21vZHVsZUInXSxcbiAgICogIGNvbnRleHRQYXRoQjogWydtb2R1bGVaJ11cbiAgICogfVxuICAgKlxuICAgKiBgYGBcbiAgICovXG4gIG1lcmdlTUZSZW1vdGVzKG1mUmVtb3RlczogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zW10pOiBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMge1xuICAgIHJldHVybiBQbHVnaW5zUmVzb2x2ZVNlcnZpY2UubWVyZ2VSZW1vdGVzKG1mUmVtb3Rlcyk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIFVSTCByZW1vdGVzIGNhY2hlLlxuICAgKi9cbiAgY2xlYXJVUkxSZW1vdGVzQ2FjaGUoKSB7XG4gICAgdGhpcy51cmxSZW1vdGVzQ2FjaGUgPSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgcmVtb3RlcyBsaXN0IGZyb20gdGhlIFVSTC5cbiAgICogQHJldHVybnMgUmV0dXJucyB0aGUgbGlzdCBvZiByZW1vdGVzLlxuICAgKi9cbiAgbG9hZFVybFJlbW90ZXMoKSB7XG4gICAgaWYgKCF0aGlzLnVybFJlbW90ZXNDYWNoZSkge1xuICAgICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcbiAgICAgIGNvbnN0IHJlbW90ZXMgPSBwYXJhbXMuZ2V0KCdyZW1vdGVzJyk7XG4gICAgICBpZiAocmVtb3Rlcykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMudXJsUmVtb3Rlc0NhY2hlID0gSlNPTi5wYXJzZShkZWNvZGVVUklDb21wb25lbnQocmVtb3RlcykpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUud2FybihgRmFpbGVkIHRvIHBhcnNlIHJlbW90ZXM6ICR7ZXJyb3J9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudXJsUmVtb3Rlc0NhY2hlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkUmVtb3RlVHJhbnNsYXRpb25zKHBsdWdpbklkOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBsYW5nIH0gPSB0aGlzLmFwcFN0YXRlLnN0YXRlO1xuICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuZmV0Y2hDbGllbnQuZmV0Y2goYC9hcHBzLyR7cGx1Z2luSWR9LyR7bGFuZ30uanNvbmApO1xuICAgICAgaWYgKHJlc3Auc3RhdHVzIDwgNDAwKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlc3AuanNvbigpO1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc2V0VHJhbnNsYXRpb24obGFuZywgcmVzdWx0W2xhbmddLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgY29uc29sZS53YXJuKGBGYWlsZWQgdG8gbG9hZCB0cmFuc2xhdGlvbnMgZm9yICR7cGx1Z2luSWR9YCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkUmVtb3RlTW9kdWxlKFxuICAgIHJlbW90ZUVudHJ5VXJsOiBzdHJpbmcsXG4gICAgcmVtb3RlQ29udGV4dFBhdGg6IHN0cmluZyxcbiAgICBleHBvc2VkTW9kdWxlOiBzdHJpbmdcbiAgKTogUHJvbWlzZTx7IG5hbWU6IHN0cmluZzsgZmFjdG9yeTogRmFjdG9yeSB9PiB7XG4gICAgaWYgKCF0aGlzLnJlbW90ZVNjcmlwdFNldC5oYXMocmVtb3RlRW50cnlVcmwpKSB7XG4gICAgICB0aGlzLnJlbW90ZVNjcmlwdFNldC5hZGQocmVtb3RlRW50cnlVcmwpO1xuICAgICAgYXdhaXQgdGhpcy5sb2FkUmVtb3RlRW50cnkocmVtb3RlRW50cnlVcmwpO1xuICAgIH1cbiAgICBsZXQgY29udGV4dFBhdGg6IHN0cmluZyA9IHJlbW90ZUNvbnRleHRQYXRoO1xuICAgIGlmIChjb250ZXh0UGF0aC5pbmNsdWRlcygnQCcpKSB7XG4gICAgICBjb250ZXh0UGF0aCA9IHJlbW90ZUNvbnRleHRQYXRoLnNwbGl0KCdAJylbMF07XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCB0aGlzLmxvb2t1cEV4cG9zZWRNb2R1bGUoY2FtZWxDYXNlKGNvbnRleHRQYXRoKSwgZXhwb3NlZE1vZHVsZSk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRSZW1vdGVFbnRyeShyZW1vdGVFbnRyeVVybDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgc2NyaXB0LnNyYyA9IHJlbW90ZUVudHJ5VXJsO1xuXG4gICAgICBzY3JpcHQub25lcnJvciA9IHJlamVjdDtcblxuICAgICAgc2NyaXB0Lm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgcmVzb2x2ZSgpOyAvLyB3aW5kb3cgaXMgdGhlIGdsb2JhbCBuYW1lc3BhY2VcbiAgICAgIH07XG5cbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKHNjcmlwdCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvb2t1cEV4cG9zZWRNb2R1bGUoXG4gICAgcmVtb3RlTmFtZTogc3RyaW5nLFxuICAgIGV4cG9zZWRNb2R1bGU6IHN0cmluZ1xuICApOiBQcm9taXNlPHsgbmFtZTogc3RyaW5nOyBmYWN0b3J5OiBGYWN0b3J5IH0+IHtcbiAgICAvLyBJbml0aWFsaXplcyB0aGUgc2hhcmUgc2NvcGUuIFRoaXMgZmlsbHMgaXQgd2l0aCBrbm93biBwcm92aWRlZCBtb2R1bGVzIGZyb20gdGhpcyBidWlsZCBhbmQgYWxsIHJlbW90ZXNcbiAgICB0cnkge1xuICAgICAgYXdhaXQgX193ZWJwYWNrX2luaXRfc2hhcmluZ19fKCdkZWZhdWx0Jyk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIGBNb2R1bGUgJHtleHBvc2VkTW9kdWxlfSBjb3VsZCBub3QgYmUgbG9hZGVkLiBNb2R1bGUgRmVkZXJhdGlvbiBpcyBub3QgZW5hYmxlZCBpbiB0aGlzIGFwcGxpY2F0aW9uLmAsXG4gICAgICAgIGV4XG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBjb250YWluZXIgPSB3aW5kb3dbcmVtb3RlTmFtZV0gYXMgQ29udGFpbmVyO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgY29udGFpbmVyLCBpdCBtYXkgcHJvdmlkZSBzaGFyZWQgbW9kdWxlc1xuICAgIGxldCBmYWN0b3J5OiBGYWN0b3J5O1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBjb250YWluZXIuaW5pdChfX3dlYnBhY2tfc2hhcmVfc2NvcGVzX18uZGVmYXVsdCk7XG4gICAgICBmYWN0b3J5ID0gKGF3YWl0IGNvbnRhaW5lci5nZXQoZXhwb3NlZE1vZHVsZSkpKCk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYE1vZHVsZSAke2V4cG9zZWRNb2R1bGV9IGNvdWxkIG5vdCBiZSBsb2FkZWQuYCwgZXgpO1xuICAgIH1cbiAgICByZXR1cm4geyBuYW1lOiBleHBvc2VkTW9kdWxlLCBmYWN0b3J5IH07XG4gIH1cbn1cbiJdfQ==
|
|
284
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy1yZXNvbHZlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3BsdWdpbnMvcGx1Z2lucy1yZXNvbHZlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQVEsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25HLE9BQU8sRUFBNEIsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7O0FBZXRDLE1BQU0sT0FBTyxxQkFBcUI7SUFDaEM7Ozs7Ozs7Ozs7Ozs7Ozs7O09BaUJHO0lBQ0gsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFtQztRQUNyRCxPQUFPLE1BQU0sQ0FDWCxPQUFPLEVBQ1AsQ0FBQyxVQUFvQyxFQUFFLFFBQWtDLEVBQUUsRUFBRTtZQUMzRSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsYUFBdUIsRUFBRSxpQkFBeUIsRUFBRSxFQUFFO2dCQUN2RSxNQUFNLGNBQWMsR0FBRyxHQUFHLENBQUMsVUFBVSxFQUFFLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUM5RCxVQUFVLENBQUMsaUJBQWlCLENBQUMsR0FBRyxLQUFLLENBQUMsY0FBYyxFQUFF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LE1BQU0sU0FBUyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDbkQsQ0FBQztRQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDWixPQUFPLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxFQUFFLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNyRSxDQUFDO1FBQ0QsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDMUMsQ0FBQzs4R0E5VFUscUJBQXFCO2tIQUFyQixxQkFBcUIsY0FGcEIsTUFBTTs7MkZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE5nTW9kdWxlUmVmLCBFbnZpcm9ubWVudEluamVjdG9yLCBUeXBlLCBjcmVhdGVOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zLCBGZXRjaENsaWVudCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IHJlZHVjZSwgZm9yRWFjaCwgZ2V0LCB1bmlvbiwgY2FtZWxDYXNlIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBcHBTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24nO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcblxudHlwZSBTY29wZSA9IHVua25vd247XG50eXBlIEZhY3RvcnkgPSAoKSA9PiBhbnk7XG5cbmRlY2xhcmUgY29uc3QgX193ZWJwYWNrX2luaXRfc2hhcmluZ19fOiAoc2hhcmVTY29wZTogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuZGVjbGFyZSBjb25zdCBfX3dlYnBhY2tfc2hhcmVfc2NvcGVzX186IHsgZGVmYXVsdDogU2NvcGUgfTtcblxuaW50ZXJmYWNlIENvbnRhaW5lciB7XG4gIGluaXQoc2hhcmVTY29wZTogU2NvcGUpOiB2b2lkO1xuICBnZXQobW9kdWxlOiBzdHJpbmcpOiBGYWN0b3J5O1xufVxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUGx1Z2luc1Jlc29sdmVTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIFRha2VzIGEgbGlzdCBvZiByZW1vdGVzIGFuZCB0dXJucyBpdCBpbnRvIGFuIG9iamVjdCBjb250YWluaW5nIHVuaW9uIG9mIGNvcnJlc3BvbmRpbmcgcmVtb3Rlcy5cbiAgICogQHBhcmFtIHJlbW90ZXMgTGlzdCBvZiB0aGUgcmVtb3Rlcy5cbiAgICogQHJldHVybnMgUmV0dXJucyBvYmplY3Qgd2l0aCBtZXJnZWQgcmVtb3Rlcy5cbiAgICpcbiAgICogKipFeGFtcGxlKipcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCByZW1vdGVzQTpBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMgPSB7IGNvbnRleHRQYXRoQTogWydtb2R1bGVBJywgJ21vZHVsZUInXSB9O1xuICAgKiBjb25zdCByZW1vdGVzQjpBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMgPSB7IGNvbnRleHRQYXRoQTogWydtb2R1bGVBJ10sIGNvbnRleHRQYXRoQjogWydtb2R1bGVaJ10gfTtcbiAgICogY29uc3QgbWVyZ2VkUmVtb3RlczpBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMgPSBtZXJnZVJlbW90ZXMoW3JlbW90ZXNBLCByZW1vdGVzQl0pO1xuICAgKiAvLyBSZXN1bHRcbiAgICoge1xuICAgKiAgY29udGV4dFBhdGhBOiBbJ21vZHVsZUEnLCAnbW9kdWxlQiddLFxuICAgKiAgY29udGV4dFBhdGhCOiBbJ21vZHVsZVonXVxuICAgKiB9XG4gICAqXG4gICAqIGBgYFxuICAgKi9cbiAgc3RhdGljIG1lcmdlUmVtb3RlcyhyZW1vdGVzOiBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnNbXSk6IEFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucyB7XG4gICAgcmV0dXJuIHJlZHVjZShcbiAgICAgIHJlbW90ZXMsXG4gICAgICAoYWxsUmVtb3RlczogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zLCBtZlJlbW90ZTogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zKSA9PiB7XG4gICAgICAgIGZvckVhY2gobWZSZW1vdGUsIChyZW1vdGVNb2R1bGVzOiBzdHJpbmdbXSwgcmVtb3RlQ29udGV4dFBhdGg6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRSZW1vdGVzID0gZ2V0KGFsbFJlbW90ZXMsIHJlbW90ZUNvbnRleHRQYXRoLCBbXSk7XG4gICAgICAgICAgYWxsUmVtb3Rlc1tyZW1vdGVDb250ZXh0UGF0aF0gPSB1bmlvbihjdXJyZW50UmVtb3RlcywgcmVtb3RlTW9kdWxlcyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBhbGxSZW1vdGVzO1xuICAgICAgfSxcbiAgICAgIHt9XG4gICAgKTtcbiAgfVxuXG4gIHN0YXRpYyByZW1vdmVSZW1vdGVzKFxuICAgIHJlbW90ZXNUb1JlbW92ZUZyb206IEFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucyxcbiAgICByZW1vdGVzVG9SZW1vdmU/OiBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnNcbiAgKTogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zIHtcbiAgICBjb25zdCBrZXlzVG9SZW1vdmUgPSBPYmplY3Qua2V5cyhyZW1vdGVzVG9SZW1vdmUgfHwge30pO1xuICAgIGlmICgha2V5c1RvUmVtb3ZlLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHJlbW90ZXNUb1JlbW92ZUZyb207XG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnRLZXlzID0gT2JqZWN0LmtleXMocmVtb3Rlc1RvUmVtb3ZlRnJvbSk7XG4gICAgY29uc3Qga2V5c1ByZXNlbnRJbkJvdGggPSBjdXJyZW50S2V5cy5maWx0ZXIoa2V5ID0+IGtleXNUb1JlbW92ZS5pbmNsdWRlcyhrZXkpKTtcbiAgICBpZiAoIWtleXNQcmVzZW50SW5Cb3RoLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHJlbW90ZXNUb1JlbW92ZUZyb207XG4gICAgfVxuICAgIHJlbW90ZXNUb1JlbW92ZUZyb20gPSBjbG9uZURlZXAocmVtb3Rlc1RvUmVtb3ZlRnJvbSk7XG4gICAgZm9yIChjb25zdCByZW1vdGVDb250ZXh0UGF0aCBvZiBrZXlzUHJlc2VudEluQm90aCkge1xuICAgICAgY29uc3QgcmVtb3RlTW9kdWxlc1RvQmVSZW1vdmVkID0gcmVtb3Rlc1RvUmVtb3ZlW3JlbW90ZUNvbnRleHRQYXRoXTtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShyZW1vdGVNb2R1bGVzVG9CZVJlbW92ZWQpIHx8ICFyZW1vdGVNb2R1bGVzVG9CZVJlbW92ZWQ/Lmxlbmd0aCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgbGV0IGN1cnJlbnRNb2R1bGVzID0gcmVtb3Rlc1RvUmVtb3ZlRnJvbVtyZW1vdGVDb250ZXh0UGF0aF07XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY3VycmVudE1vZHVsZXMpIHx8ICFjdXJyZW50TW9kdWxlcz8ubGVuZ3RoKSB7XG4gICAgICAgIGRlbGV0ZSByZW1vdGVzVG9SZW1vdmVGcm9tW3JlbW90ZUNvbnRleHRQYXRoXTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGN1cnJlbnRNb2R1bGVzID0gY3VycmVudE1vZHVsZXMuZmlsdGVyKG1vZHVsZSA9PiAhcmVtb3RlTW9kdWxlc1RvQmVSZW1vdmVkLmluY2x1ZGVzKG1vZHVsZSkpO1xuICAgICAgaWYgKGN1cnJlbnRNb2R1bGVzLmxlbmd0aCkge1xuICAgICAgICByZW1vdGVzVG9SZW1vdmVGcm9tW3JlbW90ZUNvbnRleHRQYXRoXSA9IGN1cnJlbnRNb2R1bGVzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVsZXRlIHJlbW90ZXNUb1JlbW92ZUZyb21bcmVtb3RlQ29udGV4dFBhdGhdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZW1vdGVzVG9SZW1vdmVGcm9tO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIGFsbCBpbmplY3RvcnMgb2YgYWxyZWFkeSBsb2FkZWQgcGx1Z2lucyBvbiBzdWJzY3JpcHRpb24uXG4gICAqL1xuICBpbmplY3RvcnMkOiBPYnNlcnZhYmxlPEVudmlyb25tZW50SW5qZWN0b3I+O1xuICAvKipcbiAgICogRW1pdHMgb25jZSByZW1vdGVQbHVnaW5zIGhhdmUgYmVlbiByZXNvbHZlZC5cbiAgICovXG4gIHJlZnJlc2gkOiBPYnNlcnZhYmxlPHZvaWQ+O1xuICAvKipcbiAgICogRW1pdHMgYWxsIHBsdWdpbiBkZXRhaWxzIG9mIGFscmVhZHkgbG9hZGVkIHBsdWdpbnMgb24gc3Vic2NyaXB0aW9uLlxuICAgKi9cbiAgcGx1Z2luRGV0YWlscyQ6IE9ic2VydmFibGU8e1xuICAgIHJlbW90ZU5nTW9kdWxlOiBOZ01vZHVsZVJlZjx1bmtub3duPiB8IFR5cGU8dW5rbm93bj47XG4gICAgbW9kdWxlUmVmOiBOZ01vZHVsZVJlZjx1bmtub3duPjtcbiAgfT47XG4gIGFsbFBsdWdpbnNMb2FkZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBwcml2YXRlIHVybFJlbW90ZXNDYWNoZTogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zID0gbnVsbDtcbiAgcHJpdmF0ZSByZW1vdGVTY3JpcHRTZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgcHJpdmF0ZSBfaW5qZWN0b3JzJCA9IG5ldyBTdWJqZWN0PEVudmlyb25tZW50SW5qZWN0b3I+KCk7XG4gIHByaXZhdGUgX3JlZnJlc2gkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBfcGx1Z2luRGV0YWlscyQgPSBuZXcgU3ViamVjdDx7XG4gICAgcmVtb3RlTmdNb2R1bGU6IE5nTW9kdWxlUmVmPHVua25vd24+IHwgVHlwZTx1bmtub3duPjtcbiAgICBtb2R1bGVSZWY6IE5nTW9kdWxlUmVmPHVua25vd24+O1xuICB9PigpO1xuICBwcml2YXRlIF9hbGxQbHVnaW5zTG9hZGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGZldGNoQ2xpZW50OiBGZXRjaENsaWVudCxcbiAgICBwcml2YXRlIGFwcFN0YXRlOiBBcHBTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogRW52aXJvbm1lbnRJbmplY3RvclxuICApIHtcbiAgICB0aGlzLmluamVjdG9ycyQgPSB0aGlzLl9pbmplY3RvcnMkLmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICAvLyBub3Qgc3BlY2lmeWluZyB0aGUgYnVmZmVyU2l6ZSBvZiBzaGFyZVJlcGxheSBzbyBhbGwgaW5qZWN0b3JzIGFyZSByZWNlaXZlZCBvbiBzdWJzY3JpcHRpb25cbiAgICAgIHNoYXJlUmVwbGF5KClcbiAgICApO1xuICAgIHRoaXMucmVmcmVzaCQgPSB0aGlzLl9yZWZyZXNoJC5hc09ic2VydmFibGUoKS5waXBlKHNoYXJlUmVwbGF5KDEpKTtcbiAgICB0aGlzLnBsdWdpbkRldGFpbHMkID0gdGhpcy5fcGx1Z2luRGV0YWlscyQuYXNPYnNlcnZhYmxlKCkucGlwZShcbiAgICAgIC8vIG5vdCBzcGVjaWZ5aW5nIHRoZSBidWZmZXJTaXplIG9mIHNoYXJlUmVwbGF5IHNvIGFsbCBkZXRhaWxzIGFyZSByZWNlaXZlZCBvbiBzdWJzY3JpcHRpb25cbiAgICAgIHNoYXJlUmVwbGF5KClcbiAgICApO1xuICAgIHRoaXMuYWxsUGx1Z2luc0xvYWRlZCQgPSB0aGlzLl9hbGxQbHVnaW5zTG9hZGVkJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyBwbHVnaW5zIGJ5IHJlc29sdmluZyB0aGUgcmVtb3RlIE5nTW9kdWxlcyBhbmQgaW5qZWN0aW5nIGl0LiBBbHNvIGF0dGFjaGluZ1xuICAgKiB0aGUgaG9va3Mgb250byB0aGUgcm9vdCBpbmplY3Rvci5cbiAgICogQHBhcmFtIHJlbW90ZU1vZHVsZXMgVGhlIHJlbW90ZSBwbHVnaW5zIHRvIGxvYWQgYXMgZmFjdG9yeSBuYW1lIG1hcHBpbmcgYXJyYXkuXG4gICAqL1xuICByZXNvbHZlUmVtb3RlUGx1Z2lucyhyZW1vdGVNb2R1bGVzOiBBcnJheTx7IGZhY3Rvcnk7IG5hbWUgfT4pIHtcbiAgICB0aGlzLmxvYWRNb2R1bGVzRHluYW1pY2FsbHkocmVtb3RlTW9kdWxlcyk7XG4gICAgdGhpcy5yZWZyZXNoSG9va3MoKTtcbiAgICB0aGlzLm1hcmtQbHVnaW5zQXNMb2FkZWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyBtb2R1bGVzIGFuZCBoYW5kbGVzIGhvb2tpbmcgY29ycmVjdGx5LlxuICAgKiBAcGFyYW0gcmVtb3RlTmdNb2R1bGVzIFRoZSBtb2R1bGVzIHRvIGxvYWQuXG4gICAqL1xuICBsb2FkTW9kdWxlc0R5bmFtaWNhbGx5KHJlbW90ZU1vZHVsZXM6IEFycmF5PHsgZmFjdG9yeTsgbmFtZSB9Pikge1xuICAgIGZvciAoY29uc3QgeyBmYWN0b3J5LCBuYW1lIH0gb2YgcmVtb3RlTW9kdWxlcykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5sb2FkTW9kdWxlKGZhY3RvcnlbbmFtZV0pO1xuICAgICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGxvYWQgJHtuYW1lfWAsIGV4KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBsb2FkTW9kdWxlPFQgPSB1bmtub3duPihyZW1vdGVOZ01vZHVsZTogTmdNb2R1bGVSZWY8VD4gfCBUeXBlPFQ+KSB7XG4gICAgbGV0IG1vZHVsZVJlZjogTmdNb2R1bGVSZWY8VD47XG4gICAgaWYgKHJlbW90ZU5nTW9kdWxlIGluc3RhbmNlb2YgTmdNb2R1bGVSZWYpIHtcbiAgICAgIC8vIEFPVFxuICAgICAgbW9kdWxlUmVmID0gcmVtb3RlTmdNb2R1bGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEpJVFxuICAgICAgbW9kdWxlUmVmID0gY3JlYXRlTmdNb2R1bGUocmVtb3RlTmdNb2R1bGUsIHRoaXMuaW5qZWN0b3IpO1xuICAgIH1cbiAgICB0aGlzLl9pbmplY3RvcnMkLm5leHQobW9kdWxlUmVmLmluamVjdG9yKTtcbiAgICB0aGlzLl9wbHVnaW5EZXRhaWxzJC5uZXh0KHsgbW9kdWxlUmVmLCByZW1vdGVOZ01vZHVsZSB9KTtcbiAgICByZXR1cm4gbW9kdWxlUmVmO1xuICB9XG5cbiAgLyoqXG4gICAqIFdpbGwgcmVmcmVzaCBhbGwgY3VycmVudCByZWdpc3RlcmVkIGhvb2tzLlxuICAgKi9cbiAgcmVmcmVzaEhvb2tzKCkge1xuICAgIHRoaXMuX3JlZnJlc2gkLm5leHQoKTtcbiAgfVxuXG4gIG1hcmtQbHVnaW5zQXNMb2FkZWQoKSB7XG4gICAgdGhpcy5fYWxsUGx1Z2luc0xvYWRlZCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyBhIGxpc3Qgb2YgcmVtb3RlcyBzbyB0aGF0IGEgcGFydGljdWxhciBhcHBsaWNhdGlvbiBjYW4gdXNlIHRoZW0uXG4gICAqIFRoZSByZXF1ZXN0IGlzIG1hZGUgdG8gdGhlIGZvbGxvd2luZyBhZGRyZXNzOiAvYXBwcy88Y29udGV4dFBhdGg+L3JlbW90ZUVudHJ5LmpzXG4gICAqIEBwYXJhbSByZW1vdGVzIExpc3Qgb2YgcmVtb3RlcyB0byBiZSBsb2FkZWQuXG4gICAqIEByZXR1cm5zIFJldHVybnMgdGhlIGxpc3Qgb2YgbG9hZGVkIG1vZHVsZXMgZnJvbSByZW1vdGVzLlxuICAgKi9cbiAgYXN5bmMgbG9hZFJlbW90ZXMocmVtb3RlczogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zKSB7XG4gICAgaWYgKCFyZW1vdGVzKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IHJlbW90ZU1vZHVsZXMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IHBsdWdpbklkIGluIHJlbW90ZXMpIHtcbiAgICAgIGlmIChyZW1vdGVzLmhhc093blByb3BlcnR5KHBsdWdpbklkKSkge1xuICAgICAgICBjb25zdCBtb2R1bGVOYW1lcyA9IHJlbW90ZXNbcGx1Z2luSWRdO1xuICAgICAgICBjb25zdCB1cmwgPSBgL2FwcHMvJHtwbHVnaW5JZH0vcmVtb3RlRW50cnkuanM/bm9jYWNoZT0ke2RhdGUuZ2V0VGltZSgpfWA7XG4gICAgICAgIGxldCBhdExlYXN0T25lTW9kdWxlTG9hZGVkU3VjY2Vzc2Z1bGx5ID0gZmFsc2U7XG4gICAgICAgIGZvciAoY29uc3QgbW9kdWxlTmFtZSBvZiBtb2R1bGVOYW1lcykge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZW1vdGVNb2R1bGVzLnB1c2goYXdhaXQgdGhpcy5sb2FkUmVtb3RlTW9kdWxlKHVybCwgcGx1Z2luSWQsIG1vZHVsZU5hbWUpKTtcbiAgICAgICAgICAgIGF0TGVhc3RPbmVNb2R1bGVMb2FkZWRTdWNjZXNzZnVsbHkgPSB0cnVlO1xuICAgICAgICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYENvdWxkIG5vdCBsb2FkIHJlbW90ZSBtb2R1bGUgJyVzJyBmcm9tIHVybDpgLCBtb2R1bGVOYW1lLCB1cmwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIG5vIG5lZWQgdG8gbG9hZCB0cmFuc2xhdGlvbnMgaWYgd2Ugd2VyZSB1bmFibGUgdG8gbG9hZCBhIHNpbmdsZSBtb2R1bGUuLlxuICAgICAgICBpZiAoYXRMZWFzdE9uZU1vZHVsZUxvYWRlZFN1Y2Nlc3NmdWxseSkge1xuICAgICAgICAgIGF3YWl0IHRoaXMubG9hZFJlbW90ZVRyYW5zbGF0aW9ucyhwbHVnaW5JZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlbW90ZU1vZHVsZXM7XG4gIH1cblxuICAvKipcbiAgICogVGFrZXMgYSBsaXN0IG9mIHJlbW90ZXMgYW5kIHR1cm5zIGl0IGludG8gYW4gb2JqZWN0IGNvbnRhaW5pbmcgdW5pb24gb2YgY29ycmVzcG9uZGluZyByZW1vdGVzLlxuICAgKiBAcGFyYW0gbWZSZW1vdGVzIExpc3Qgb2YgdGhlIHJlbW90ZXMuXG4gICAqIEByZXR1cm5zIFJldHVybnMgb2JqZWN0IHdpdGggbWVyZ2VkIHJlbW90ZXMuXG4gICAqIEBkZXByZWNhdGVkIFVzZSB0aGUgc3RhdGljIGZ1bmN0aW9uIG1lcmdlUmVtb3RlcyBhcyB0aGlzIGlzIGEgcHVyZSBmdW5jdGlvbi5cbiAgICpcbiAgICogKipFeGFtcGxlKipcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCByZW1vdGVzQTpBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMgPSB7IGNvbnRleHRQYXRoQTogWydtb2R1bGVBJywgJ21vZHVsZUInXSB9O1xuICAgKiBjb25zdCByZW1vdGVzQjpBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMgPSB7IGNvbnRleHRQYXRoQTogWydtb2R1bGVBJ10sIGNvbnRleHRQYXRoQjogWydtb2R1bGVaJ10gfTtcbiAgICogY29uc3QgbWVyZ2VkUmVtb3RlczpBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMgPSBtZXJnZU1GUmVtb3RlcyhbcmVtb3Rlc0EsIHJlbW90ZXNCXSk7XG4gICAqIC8vIFJlc3VsdFxuICAgKiB7XG4gICAqICBjb250ZXh0UGF0aEE6IFsnbW9kdWxlQScsICdtb2R1bGVCJ10sXG4gICAqICBjb250ZXh0UGF0aEI6IFsnbW9kdWxlWiddXG4gICAqIH1cbiAgICpcbiAgICogYGBgXG4gICAqL1xuICBtZXJnZU1GUmVtb3RlcyhtZlJlbW90ZXM6IEFwcGxpY2F0aW9uUmVtb3RlUGx1Z2luc1tdKTogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zIHtcbiAgICByZXR1cm4gUGx1Z2luc1Jlc29sdmVTZXJ2aWNlLm1lcmdlUmVtb3RlcyhtZlJlbW90ZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyBVUkwgcmVtb3RlcyBjYWNoZS5cbiAgICovXG4gIGNsZWFyVVJMUmVtb3Rlc0NhY2hlKCkge1xuICAgIHRoaXMudXJsUmVtb3Rlc0NhY2hlID0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIHJlbW90ZXMgbGlzdCBmcm9tIHRoZSBVUkwuXG4gICAqIEByZXR1cm5zIFJldHVybnMgdGhlIGxpc3Qgb2YgcmVtb3Rlcy5cbiAgICovXG4gIGxvYWRVcmxSZW1vdGVzKCkge1xuICAgIGlmICghdGhpcy51cmxSZW1vdGVzQ2FjaGUpIHtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgICBjb25zdCByZW1vdGVzID0gcGFyYW1zLmdldCgncmVtb3RlcycpO1xuICAgICAgaWYgKHJlbW90ZXMpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGlzLnVybFJlbW90ZXNDYWNoZSA9IEpTT04ucGFyc2UoZGVjb2RlVVJJQ29tcG9uZW50KHJlbW90ZXMpKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oYEZhaWxlZCB0byBwYXJzZSByZW1vdGVzOiAke2Vycm9yfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnVybFJlbW90ZXNDYWNoZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZFJlbW90ZVRyYW5zbGF0aW9ucyhwbHVnaW5JZDogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgbGFuZyB9ID0gdGhpcy5hcHBTdGF0ZS5zdGF0ZTtcbiAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCB0aGlzLmZldGNoQ2xpZW50LmZldGNoKGAvYXBwcy8ke3BsdWdpbklkfS8ke2xhbmd9Lmpzb25gKTtcbiAgICAgIGlmIChyZXNwLnN0YXR1cyA8IDQwMCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXNwLmpzb24oKTtcbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnNldFRyYW5zbGF0aW9uKGxhbmcsIHJlc3VsdFtsYW5nXSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIGNvbnNvbGUud2FybihgRmFpbGVkIHRvIGxvYWQgdHJhbnNsYXRpb25zIGZvciAke3BsdWdpbklkfWApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZFJlbW90ZU1vZHVsZShcbiAgICByZW1vdGVFbnRyeVVybDogc3RyaW5nLFxuICAgIHJlbW90ZUNvbnRleHRQYXRoOiBzdHJpbmcsXG4gICAgZXhwb3NlZE1vZHVsZTogc3RyaW5nXG4gICk6IFByb21pc2U8eyBuYW1lOiBzdHJpbmc7IGZhY3Rvcnk6IEZhY3RvcnkgfT4ge1xuICAgIGlmICghdGhpcy5yZW1vdGVTY3JpcHRTZXQuaGFzKHJlbW90ZUVudHJ5VXJsKSkge1xuICAgICAgdGhpcy5yZW1vdGVTY3JpcHRTZXQuYWRkKHJlbW90ZUVudHJ5VXJsKTtcbiAgICAgIGF3YWl0IHRoaXMubG9hZFJlbW90ZUVudHJ5KHJlbW90ZUVudHJ5VXJsKTtcbiAgICB9XG4gICAgbGV0IGNvbnRleHRQYXRoOiBzdHJpbmcgPSByZW1vdGVDb250ZXh0UGF0aDtcbiAgICBpZiAoY29udGV4dFBhdGguaW5jbHVkZXMoJ0AnKSkge1xuICAgICAgY29udGV4dFBhdGggPSByZW1vdGVDb250ZXh0UGF0aC5zcGxpdCgnQCcpWzBdO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5sb29rdXBFeHBvc2VkTW9kdWxlKGNhbWVsQ2FzZShjb250ZXh0UGF0aCksIGV4cG9zZWRNb2R1bGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkUmVtb3RlRW50cnkocmVtb3RlRW50cnlVcmw6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICAgIHNjcmlwdC5zcmMgPSByZW1vdGVFbnRyeVVybDtcblxuICAgICAgc2NyaXB0Lm9uZXJyb3IgPSByZWplY3Q7XG5cbiAgICAgIHNjcmlwdC5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgIHJlc29sdmUoKTsgLy8gd2luZG93IGlzIHRoZSBnbG9iYWwgbmFtZXNwYWNlXG4gICAgICB9O1xuXG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZChzY3JpcHQpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb29rdXBFeHBvc2VkTW9kdWxlKFxuICAgIHJlbW90ZU5hbWU6IHN0cmluZyxcbiAgICBleHBvc2VkTW9kdWxlOiBzdHJpbmdcbiAgKTogUHJvbWlzZTx7IG5hbWU6IHN0cmluZzsgZmFjdG9yeTogRmFjdG9yeSB9PiB7XG4gICAgLy8gSW5pdGlhbGl6ZXMgdGhlIHNoYXJlIHNjb3BlLiBUaGlzIGZpbGxzIGl0IHdpdGgga25vd24gcHJvdmlkZWQgbW9kdWxlcyBmcm9tIHRoaXMgYnVpbGQgYW5kIGFsbCByZW1vdGVzXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IF9fd2VicGFja19pbml0X3NoYXJpbmdfXygnZGVmYXVsdCcpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBgTW9kdWxlICVzIGNvdWxkIG5vdCBiZSBsb2FkZWQuIE1vZHVsZSBGZWRlcmF0aW9uIGlzIG5vdCBlbmFibGVkIGluIHRoaXMgYXBwbGljYXRpb24uYCxcbiAgICAgICAgZXhwb3NlZE1vZHVsZSxcbiAgICAgICAgZXhcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IGNvbnRhaW5lciA9IHdpbmRvd1tyZW1vdGVOYW1lXSBhcyBDb250YWluZXI7XG5cbiAgICAvLyBJbml0aWFsaXplIHRoZSBjb250YWluZXIsIGl0IG1heSBwcm92aWRlIHNoYXJlZCBtb2R1bGVzXG4gICAgbGV0IGZhY3Rvcnk6IEZhY3Rvcnk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGNvbnRhaW5lci5pbml0KF9fd2VicGFja19zaGFyZV9zY29wZXNfXy5kZWZhdWx0KTtcbiAgICAgIGZhY3RvcnkgPSAoYXdhaXQgY29udGFpbmVyLmdldChleHBvc2VkTW9kdWxlKSkoKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgY29uc29sZS5lcnJvcihgTW9kdWxlICVzIGNvdWxkIG5vdCBiZSBsb2FkZWQuYCwgZXhwb3NlZE1vZHVsZSwgZXgpO1xuICAgIH1cbiAgICByZXR1cm4geyBuYW1lOiBleHBvc2VkTW9kdWxlLCBmYWN0b3J5IH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -96,10 +96,10 @@ export class DeviceShellComponent {
|
|
|
96
96
|
this.destroyed$.complete();
|
|
97
97
|
}
|
|
98
98
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: DeviceShellComponent, deps: [{ token: i1.DeviceShellService }, { token: i2.OperationRealtimeService }, { token: i2.ManagedObjectRealtimeService }, { token: i3.OperationService }, { token: i4.ActivatedRoute }, { token: i5.BsModalService }, { token: i2.AlertService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
99
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: DeviceShellComponent, selector: "c8y-device-shell", providers: [OperationRealtimeService, ManagedObjectRealtimeService], ngImport: i0, template: "<c8y-action-bar-item [placement]=\"'right'\">\n <c8y-realtime-btn [service]=\"operationRealtime\"></c8y-realtime-btn>\n</c8y-action-bar-item>\n\n<div class=\"card content-fullpage d-grid grid__col--6-6--md\">\n <div class=\"inner-scroll d-flex d-col bg-level-0\">\n <div class=\"card-header large-padding separator sticky-top\">\n <div class=\"card-title\">\n {{ 'Command' | translate }}\n </div>\n </div>\n\n <div class=\"card-block d-flex d-col flex-grow large-padding\">\n <div class=\"d-flex p-b-16\">\n <button\n class=\"btn btn-default btn-sm\"\n type=\"button\"\n (click)=\"getPredefinedCommand()\"\n [title]=\"'Display a list of predefined commands' | translate\"\n data-cy=\"shell--predefined-commands\"\n >\n {{ 'Predefined commands' | translate }}\n </button>\n\n <div class=\"m-l-auto\">\n <device-status [mo]=\"device$ | async\"></device-status>\n </div>\n </div>\n <textarea\n [attr.aria-label]=\"'Commands' | translate\"\n class=\"form-control inner-scroll flex-grow bg-level-2 text-monospace\"\n [(ngModel)]=\"command.text\"\n data-cy=\"shell-component--commands\"\n (ngModelChange)=\"$event || resetSupportedDeliveryTypes()\"\n placeholder=\"{{ 'Add commands or use predefined commands above.' | translate }}\"\n ></textarea>\n </div>\n\n <div class=\"card-footer large-padding separator\">\n <ng-container *ngFor=\"let deliveryType of deliveryTypes\">\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n *ngIf=\"deliveryType.isSupportedByCommand\"\n [disabled]=\"!command?.text || (sendingCommand$ | async)\"\n (click)=\"execute(deliveryType.name)\"\n >\n <span\n [title]=\"\n deliveryType.default\n ? ('Execute' | translate)\n : (executeViaLabel | translate: { deliveryType: deliveryType.name })\n \"\n >\n {{\n deliveryType.default\n ? ('Execute' | translate)\n : (executeViaLabel | translate: { deliveryType: deliveryType.name })\n }}\n </span>\n </button>\n </ng-container>\n </div>\n </div>\n <div class=\"inner-scroll bg-level-1\">\n <div class=\"card-header large-padding separator sticky-top\">\n <div class=\"card-title\">\n {{ 'Operations' | translate }}\n </div>\n </div>\n <div class=\"card-block large-padding\">\n <c8y-operations-timeline\n [operations]=\"operations\"\n [sourceId]=\"device.id\"\n [filterPipe]=\"filterPipe\"\n [bodyTemplate]=\"timelineItemBody\"\n [footerTemplates]=\"[timelineItemFooter]\"\n [propertiesToHide]=\"['c8y_Command']\"\n ></c8y-operations-timeline>\n <ng-template #timelineItemBody let-operation>\n <small>{{ operation.c8y_Command?.text || operation.description }}</small>\n </ng-template>\n <ng-template #timelineItemFooter let-operation>\n <div *ngIf=\"operation.c8y_Command?.text\">\n <div class=\"legend form-block\" translate>Command</div>\n <pre class=\"p-8 text-pre
|
|
99
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: DeviceShellComponent, selector: "c8y-device-shell", providers: [OperationRealtimeService, ManagedObjectRealtimeService], ngImport: i0, template: "<c8y-action-bar-item [placement]=\"'right'\">\n <c8y-realtime-btn [service]=\"operationRealtime\"></c8y-realtime-btn>\n</c8y-action-bar-item>\n\n<div class=\"card content-fullpage d-grid grid__col--6-6--md\">\n <div class=\"inner-scroll d-flex d-col bg-level-0\">\n <div class=\"card-header large-padding separator sticky-top\">\n <div class=\"card-title\">\n {{ 'Command' | translate }}\n </div>\n </div>\n\n <div class=\"card-block d-flex d-col flex-grow large-padding\">\n <div class=\"d-flex p-b-16\">\n <button\n class=\"btn btn-default btn-sm\"\n type=\"button\"\n (click)=\"getPredefinedCommand()\"\n [title]=\"'Display a list of predefined commands' | translate\"\n data-cy=\"shell--predefined-commands\"\n >\n {{ 'Predefined commands' | translate }}\n </button>\n\n <div class=\"m-l-auto\">\n <device-status [mo]=\"device$ | async\"></device-status>\n </div>\n </div>\n <textarea\n [attr.aria-label]=\"'Commands' | translate\"\n class=\"form-control inner-scroll flex-grow bg-level-2 text-monospace\"\n [(ngModel)]=\"command.text\"\n data-cy=\"shell-component--commands\"\n (ngModelChange)=\"$event || resetSupportedDeliveryTypes()\"\n placeholder=\"{{ 'Add commands or use predefined commands above.' | translate }}\"\n ></textarea>\n </div>\n\n <div class=\"card-footer large-padding separator\">\n <ng-container *ngFor=\"let deliveryType of deliveryTypes\">\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n *ngIf=\"deliveryType.isSupportedByCommand\"\n [disabled]=\"!command?.text || (sendingCommand$ | async)\"\n (click)=\"execute(deliveryType.name)\"\n >\n <span\n [title]=\"\n deliveryType.default\n ? ('Execute' | translate)\n : (executeViaLabel | translate: { deliveryType: deliveryType.name })\n \"\n >\n {{\n deliveryType.default\n ? ('Execute' | translate)\n : (executeViaLabel | translate: { deliveryType: deliveryType.name })\n }}\n </span>\n </button>\n </ng-container>\n </div>\n </div>\n <div class=\"inner-scroll bg-level-1\">\n <div class=\"card-header large-padding separator sticky-top\">\n <div class=\"card-title\">\n {{ 'Operations' | translate }}\n </div>\n </div>\n <div class=\"card-block large-padding\">\n <c8y-operations-timeline\n [operations]=\"operations\"\n [sourceId]=\"device.id\"\n [filterPipe]=\"filterPipe\"\n [bodyTemplate]=\"timelineItemBody\"\n [footerTemplates]=\"[timelineItemFooter]\"\n [propertiesToHide]=\"['c8y_Command']\"\n ></c8y-operations-timeline>\n <ng-template #timelineItemBody let-operation>\n <small>{{ operation.c8y_Command?.text || operation.description }}</small>\n </ng-template>\n <ng-template #timelineItemFooter let-operation>\n <div *ngIf=\"operation.c8y_Command?.text\">\n <div class=\"legend form-block\" translate>Command</div>\n <!-- Keep this in a single line since `pre-text` will preserve all whitespaces in the `pre` tag.-->\n <pre class=\"p-8 text-pre\"><code>{{operation.c8y_Command.text}}</code></pre>\n </div>\n <div *ngIf=\"operation.c8y_Command?.result\">\n <div class=\"legend form-block\" translate>Response</div>\n <!-- Keep this in a single line since `pre-text` will preserve all whitespaces in the `pre` tag.-->\n <pre class=\"p-8 text-pre\"><code>{{operation.c8y_Command.result}}</code></pre>\n </div>\n </ng-template>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.DeviceStatusComponent, selector: "device-status, c8y-device-status", inputs: ["mo", "size"] }, { kind: "component", type: i2.RealtimeButtonComponent, selector: "c8y-realtime-btn", inputs: ["service", "label", "title", "disabled"], outputs: ["onToggle"] }, { kind: "component", type: i8.OperationsTimelineComponent, selector: "c8y-operations-timeline", inputs: ["operations", "sourceId", "filterPipe", "bodyTemplate", "footerTemplates", "propertiesToHide"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] }); }
|
|
100
100
|
}
|
|
101
101
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: DeviceShellComponent, decorators: [{
|
|
102
102
|
type: Component,
|
|
103
|
-
args: [{ selector: 'c8y-device-shell', providers: [OperationRealtimeService, ManagedObjectRealtimeService], template: "<c8y-action-bar-item [placement]=\"'right'\">\n <c8y-realtime-btn [service]=\"operationRealtime\"></c8y-realtime-btn>\n</c8y-action-bar-item>\n\n<div class=\"card content-fullpage d-grid grid__col--6-6--md\">\n <div class=\"inner-scroll d-flex d-col bg-level-0\">\n <div class=\"card-header large-padding separator sticky-top\">\n <div class=\"card-title\">\n {{ 'Command' | translate }}\n </div>\n </div>\n\n <div class=\"card-block d-flex d-col flex-grow large-padding\">\n <div class=\"d-flex p-b-16\">\n <button\n class=\"btn btn-default btn-sm\"\n type=\"button\"\n (click)=\"getPredefinedCommand()\"\n [title]=\"'Display a list of predefined commands' | translate\"\n data-cy=\"shell--predefined-commands\"\n >\n {{ 'Predefined commands' | translate }}\n </button>\n\n <div class=\"m-l-auto\">\n <device-status [mo]=\"device$ | async\"></device-status>\n </div>\n </div>\n <textarea\n [attr.aria-label]=\"'Commands' | translate\"\n class=\"form-control inner-scroll flex-grow bg-level-2 text-monospace\"\n [(ngModel)]=\"command.text\"\n data-cy=\"shell-component--commands\"\n (ngModelChange)=\"$event || resetSupportedDeliveryTypes()\"\n placeholder=\"{{ 'Add commands or use predefined commands above.' | translate }}\"\n ></textarea>\n </div>\n\n <div class=\"card-footer large-padding separator\">\n <ng-container *ngFor=\"let deliveryType of deliveryTypes\">\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n *ngIf=\"deliveryType.isSupportedByCommand\"\n [disabled]=\"!command?.text || (sendingCommand$ | async)\"\n (click)=\"execute(deliveryType.name)\"\n >\n <span\n [title]=\"\n deliveryType.default\n ? ('Execute' | translate)\n : (executeViaLabel | translate: { deliveryType: deliveryType.name })\n \"\n >\n {{\n deliveryType.default\n ? ('Execute' | translate)\n : (executeViaLabel | translate: { deliveryType: deliveryType.name })\n }}\n </span>\n </button>\n </ng-container>\n </div>\n </div>\n <div class=\"inner-scroll bg-level-1\">\n <div class=\"card-header large-padding separator sticky-top\">\n <div class=\"card-title\">\n {{ 'Operations' | translate }}\n </div>\n </div>\n <div class=\"card-block large-padding\">\n <c8y-operations-timeline\n [operations]=\"operations\"\n [sourceId]=\"device.id\"\n [filterPipe]=\"filterPipe\"\n [bodyTemplate]=\"timelineItemBody\"\n [footerTemplates]=\"[timelineItemFooter]\"\n [propertiesToHide]=\"['c8y_Command']\"\n ></c8y-operations-timeline>\n <ng-template #timelineItemBody let-operation>\n <small>{{ operation.c8y_Command?.text || operation.description }}</small>\n </ng-template>\n <ng-template #timelineItemFooter let-operation>\n <div *ngIf=\"operation.c8y_Command?.text\">\n <div class=\"legend form-block\" translate>Command</div>\n <pre class=\"p-8 text-pre
|
|
103
|
+
args: [{ selector: 'c8y-device-shell', providers: [OperationRealtimeService, ManagedObjectRealtimeService], template: "<c8y-action-bar-item [placement]=\"'right'\">\n <c8y-realtime-btn [service]=\"operationRealtime\"></c8y-realtime-btn>\n</c8y-action-bar-item>\n\n<div class=\"card content-fullpage d-grid grid__col--6-6--md\">\n <div class=\"inner-scroll d-flex d-col bg-level-0\">\n <div class=\"card-header large-padding separator sticky-top\">\n <div class=\"card-title\">\n {{ 'Command' | translate }}\n </div>\n </div>\n\n <div class=\"card-block d-flex d-col flex-grow large-padding\">\n <div class=\"d-flex p-b-16\">\n <button\n class=\"btn btn-default btn-sm\"\n type=\"button\"\n (click)=\"getPredefinedCommand()\"\n [title]=\"'Display a list of predefined commands' | translate\"\n data-cy=\"shell--predefined-commands\"\n >\n {{ 'Predefined commands' | translate }}\n </button>\n\n <div class=\"m-l-auto\">\n <device-status [mo]=\"device$ | async\"></device-status>\n </div>\n </div>\n <textarea\n [attr.aria-label]=\"'Commands' | translate\"\n class=\"form-control inner-scroll flex-grow bg-level-2 text-monospace\"\n [(ngModel)]=\"command.text\"\n data-cy=\"shell-component--commands\"\n (ngModelChange)=\"$event || resetSupportedDeliveryTypes()\"\n placeholder=\"{{ 'Add commands or use predefined commands above.' | translate }}\"\n ></textarea>\n </div>\n\n <div class=\"card-footer large-padding separator\">\n <ng-container *ngFor=\"let deliveryType of deliveryTypes\">\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n *ngIf=\"deliveryType.isSupportedByCommand\"\n [disabled]=\"!command?.text || (sendingCommand$ | async)\"\n (click)=\"execute(deliveryType.name)\"\n >\n <span\n [title]=\"\n deliveryType.default\n ? ('Execute' | translate)\n : (executeViaLabel | translate: { deliveryType: deliveryType.name })\n \"\n >\n {{\n deliveryType.default\n ? ('Execute' | translate)\n : (executeViaLabel | translate: { deliveryType: deliveryType.name })\n }}\n </span>\n </button>\n </ng-container>\n </div>\n </div>\n <div class=\"inner-scroll bg-level-1\">\n <div class=\"card-header large-padding separator sticky-top\">\n <div class=\"card-title\">\n {{ 'Operations' | translate }}\n </div>\n </div>\n <div class=\"card-block large-padding\">\n <c8y-operations-timeline\n [operations]=\"operations\"\n [sourceId]=\"device.id\"\n [filterPipe]=\"filterPipe\"\n [bodyTemplate]=\"timelineItemBody\"\n [footerTemplates]=\"[timelineItemFooter]\"\n [propertiesToHide]=\"['c8y_Command']\"\n ></c8y-operations-timeline>\n <ng-template #timelineItemBody let-operation>\n <small>{{ operation.c8y_Command?.text || operation.description }}</small>\n </ng-template>\n <ng-template #timelineItemFooter let-operation>\n <div *ngIf=\"operation.c8y_Command?.text\">\n <div class=\"legend form-block\" translate>Command</div>\n <!-- Keep this in a single line since `pre-text` will preserve all whitespaces in the `pre` tag.-->\n <pre class=\"p-8 text-pre\"><code>{{operation.c8y_Command.text}}</code></pre>\n </div>\n <div *ngIf=\"operation.c8y_Command?.result\">\n <div class=\"legend form-block\" translate>Response</div>\n <!-- Keep this in a single line since `pre-text` will preserve all whitespaces in the `pre` tag.-->\n <pre class=\"p-8 text-pre\"><code>{{operation.c8y_Command.result}}</code></pre>\n </div>\n </ng-template>\n </div>\n </div>\n</div>\n" }]
|
|
104
104
|
}], ctorParameters: () => [{ type: i1.DeviceShellService }, { type: i2.OperationRealtimeService }, { type: i2.ManagedObjectRealtimeService }, { type: i3.OperationService }, { type: i4.ActivatedRoute }, { type: i5.BsModalService }, { type: i2.AlertService }] });
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vZGV2aWNlLXNoZWxsL3NoZWxsL3NoZWxsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2RldmljZS1zaGVsbC9zaGVsbC9zaGVsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUEyQyxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4RixPQUFPLEVBQ0wsWUFBWSxFQUNaLE9BQU8sRUFDUCw0QkFBNEIsRUFDNUIsd0JBQXdCLEVBQ3pCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDOUMsT0FBTyxFQUFjLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxlQUFlLEVBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25FLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pFLE9BQU8sRUFBVyxtQkFBbUIsRUFBZ0Isa0JBQWtCLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7Ozs7Ozs7QUFPM0YsTUFBTSxPQUFPLG9CQUFvQjtJQW9CL0IsWUFDUyxPQUEyQixFQUMzQixpQkFBMkMsRUFDMUMsVUFBd0MsRUFDeEMsZ0JBQWtDLEVBQ2xDLEtBQXFCLEVBQ3JCLFlBQTRCLEVBQzVCLFlBQTBCO1FBTjNCLFlBQU8sR0FBUCxPQUFPLENBQW9CO1FBQzNC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QUFNLE1BQU0sR0FBRyxtQkFBbUIsS0FBSyxtQkFBbUIsQ0FBQyxHQUFHLENBQUM7UUFDL0QsSUFBSSxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGtDQUFrQyxDQUFDLENBQUMsQ0FBQztZQUN2RSxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWhDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFFN0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3QixDQUFDOzhHQXhHVSxvQkFBb0I7a0dBQXBCLG9CQUFvQiwyQ0FGcEIsQ0FBQyx3QkFBd0IsRUFBRSw0QkFBNEIsQ0FBQywwQkNuQnJFLHVvSEFtR0E7OzJGRDlFYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0Usa0JBQWtCLGFBRWpCLENBQUMsd0JBQXdCLEVBQUUsNEJBQTRCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCwgSU9wZXJhdGlvbiwgSVJlc3VsdExpc3QsIE9wZXJhdGlvblNlcnZpY2UgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBBbGVydFNlcnZpY2UsXG4gIGdldHRleHQsXG4gIE1hbmFnZWRPYmplY3RSZWFsdGltZVNlcnZpY2UsXG4gIE9wZXJhdGlvblJlYWx0aW1lU2VydmljZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IGluY2x1ZGVzLCBpc0VtcHR5IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJzTW9kYWxSZWYsIEJzTW9kYWxTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIG9mLCBwaXBlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgc3RhcnRXaXRoLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb21tYW5kVGVtcGxhdGVzQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tbWFuZC10ZW1wbGF0ZXMnO1xuaW1wb3J0IHsgQ29tbWFuZCwgQ29tbWFuZERlbGl2ZXJ5VHlwZSwgRGVsaXZlcnlUeXBlLCBEZXZpY2VTaGVsbFNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZGV2aWNlLXNoZWxsJyxcbiAgdGVtcGxhdGVVcmw6ICdzaGVsbC5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW09wZXJhdGlvblJlYWx0aW1lU2VydmljZSwgTWFuYWdlZE9iamVjdFJlYWx0aW1lU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgRGV2aWNlU2hlbGxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIGRldmljZTogSU1hbmFnZWRPYmplY3QgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmVudC5kYXRhLmNvbnRleHREYXRhO1xuICBkZXZpY2UkOiBPYnNlcnZhYmxlPElNYW5hZ2VkT2JqZWN0PiA9IG9mKHt9IGFzIGFueSk7XG4gIGRlbGl2ZXJ5VHlwZXM6IEFycmF5PERlbGl2ZXJ5VHlwZSAmIHsgaXNTdXBwb3J0ZWRCeUNvbW1hbmQ/OiBib29sZWFuIH0+ID0gKFxuICAgIHRoaXMuc2VydmljZS5nZXREZWxpdmVyeVR5cGVzKCkgfHwgW11cbiAgKS5tYXAoZGVsaXZlcnlUeXBlID0+ICh7IC4uLmRlbGl2ZXJ5VHlwZSwgaXNTdXBwb3J0ZWRCeUNvbW1hbmQ6IHRydWUgfSkpO1xuICBjb21tYW5kOiBDb21tYW5kID0ge30gYXMgQ29tbWFuZDtcbiAgc21zRW5hYmxlZCA9IGZhbHNlO1xuICBzZW5kaW5nQ29tbWFuZCQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBvcGVyYXRpb25zOiBJUmVzdWx0TGlzdDxJT3BlcmF0aW9uPjtcbiAgZmlsdGVyUGlwZSA9IHBpcGUoXG4gICAgbWFwKChvcGVyYXRpb25zOiBJT3BlcmF0aW9uW10pID0+XG4gICAgICAob3BlcmF0aW9ucyB8fCBbXSkuZmlsdGVyKChvcGVyYXRpb246IElPcGVyYXRpb24pID0+ICEhb3BlcmF0aW9uLmM4eV9Db21tYW5kKVxuICAgIClcbiAgKTtcblxuICBleGVjdXRlVmlhTGFiZWwgPSBnZXR0ZXh0KCdFeGVjdXRlIHZpYSAoe3tkZWxpdmVyeVR5cGV9fSknKTtcblxuICBwcml2YXRlIGRlc3Ryb3llZCQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBzZXJ2aWNlOiBEZXZpY2VTaGVsbFNlcnZpY2UsXG4gICAgcHVibGljIG9wZXJhdGlvblJlYWx0aW1lOiBPcGVyYXRpb25SZWFsdGltZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtb1JlYWx0aW1lOiBNYW5hZ2VkT2JqZWN0UmVhbHRpbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgb3BlcmF0aW9uU2VydmljZTogT3BlcmF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogQnNNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5zbXNFbmFibGVkID0gYXdhaXQgdGhpcy5zZXJ2aWNlLmNhblNlbmRDb21tYW5kc1ZpYVNNUygpO1xuXG4gICAgdGhpcy5kZXZpY2UkID0gdGhpcy5tb1JlYWx0aW1lLm9uVXBkYXRlJCh0aGlzLmRldmljZS5pZCkucGlwZShzdGFydFdpdGgodGhpcy5kZXZpY2UpKTtcblxuICAgIHRoaXMub3BlcmF0aW9ucyA9IGF3YWl0IHRoaXMub3BlcmF0aW9uU2VydmljZS5saXN0KHtcbiAgICAgIGRldmljZUlkOiB0aGlzLmRldmljZS5pZCxcbiAgICAgIGZyYWdtZW50VHlwZTogJ2M4eV9Db21tYW5kJyxcbiAgICAgIGRhdGVGcm9tOiBuZXcgRGF0ZSgwKS50b0lTT1N0cmluZygpLFxuICAgICAgZGF0ZVRvOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICBwYWdlU2l6ZTogNTAsXG4gICAgICB3aXRoVG90YWxQYWdlczogdHJ1ZSxcbiAgICAgIHJldmVydDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgdGhpcy5vcGVyYXRpb25SZWFsdGltZVxuICAgICAgLm9uQ3JlYXRlJCh0aGlzLmRldmljZS5pZClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKGdldHRleHQoJ0NvbW1hbmQgc2VudC4nKSkpO1xuXG4gICAgdGhpcy5vcGVyYXRpb25SZWFsdGltZVxuICAgICAgLm9uVXBkYXRlJCh0aGlzLmRldmljZS5pZClcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIob3AgPT4gb3AuZmFpbHVyZVJlYXNvbiAhPT0gJ09wZXJhdGlvbiBjYW5jZWxsZWQgYnkgdXNlci4nKSwgLy8gYXZvaWQgZHVwbGljYXRlIGFsZXJ0c1xuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKGdldHRleHQoJ0NvbW1hbmQgc3RhdHVzIHVwZGF0ZWQuJykpKTtcbiAgfVxuXG4gIGdldFByZWRlZmluZWRDb21tYW5kKCkge1xuICAgIGNvbnN0IG1vZGFsOiBCc01vZGFsUmVmPENvbW1hbmRUZW1wbGF0ZXNDb21wb25lbnQ+ID0gdGhpcy5tb2RhbFNlcnZpY2Uuc2hvdyhcbiAgICAgIENvbW1hbmRUZW1wbGF0ZXNDb21wb25lbnQsXG4gICAgICB7XG4gICAgICAgIGFyaWFEZXNjcmliZWRieTogJ21vZGFsLWJvZHknLFxuICAgICAgICBhcmlhTGFiZWxsZWRCeTogJ21vZGFsLXRpdGxlJ1xuICAgICAgfVxuICAgICk7XG4gICAgbW9kYWwuY29udGVudC5vblRlbXBsYXRlU2VsZWN0ZWQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICB0aGlzLmNvbW1hbmQgPSB7IC4uLihyZXN1bHQgYXMgYW55KS5jb21tYW5kVGVtcGxhdGUgfSBhcyBDb21tYW5kO1xuICAgICAgdGhpcy5kZWxpdmVyeVR5cGVzID0gdGhpcy5kZWxpdmVyeVR5cGVzLm1hcChkZWxpdmVyeVR5cGUgPT4gKHtcbiAgICAgICAgLi4uZGVsaXZlcnlUeXBlLFxuICAgICAgICBpc1N1cHBvcnRlZEJ5Q29tbWFuZDpcbiAgICAgICAgICBpc0VtcHR5KHRoaXMuY29tbWFuZC5kZWxpdmVyeVR5cGVzKSB8fFxuICAgICAgICAgIGluY2x1ZGVzKHRoaXMuY29tbWFuZC5kZWxpdmVyeVR5cGVzLCBkZWxpdmVyeVR5cGUubmFtZSlcbiAgICAgIH0pKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlc2V0U3VwcG9ydGVkRGVsaXZlcnlUeXBlcygpOiB2b2lkIHtcbiAgICB0aGlzLmRlbGl2ZXJ5VHlwZXMgPSAodGhpcy5zZXJ2aWNlLmdldERlbGl2ZXJ5VHlwZXMoKSB8fCBbXSkubWFwKGRlbGl2ZXJ5VHlwZSA9PiAoe1xuICAgICAgLi4uZGVsaXZlcnlUeXBlLFxuICAgICAgaXNTdXBwb3J0ZWRCeUNvbW1hbmQ6IHRydWVcbiAgICB9KSk7XG4gIH1cblxuICBhc3luYyBleGVjdXRlKGNvbW1hbmREZWxpdmVyeVR5cGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB1c2VTTVMgPSBjb21tYW5kRGVsaXZlcnlUeXBlID09PSBDb21tYW5kRGVsaXZlcnlUeXBlLlNNUztcbiAgICBpZiAodXNlU01TICYmICF0aGlzLnNtc0VuYWJsZWQpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLndhcm5pbmcoZ2V0dGV4dCgnU01TIHRyYW5zcG9ydCBpcyBub3QgY29uZmlndXJlZC4nKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2VuZGluZ0NvbW1hbmQkLm5leHQodHJ1ZSk7XG5cbiAgICBhd2FpdCB0aGlzLnNlcnZpY2UuY3JlYXRlQ29tbWFuZE9wZXJhdGlvbih0aGlzLmRldmljZS5pZCwgdGhpcy5jb21tYW5kLCBjb21tYW5kRGVsaXZlcnlUeXBlKTtcblxuICAgIHRoaXMuY29tbWFuZC50ZXh0ID0gJyc7XG4gICAgdGhpcy5jb21tYW5kLm5hbWUgPSAnJztcbiAgICB0aGlzLnJlc2V0U3VwcG9ydGVkRGVsaXZlcnlUeXBlcygpO1xuICAgIHRoaXMuc2VuZGluZ0NvbW1hbmQkLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgfVxufVxuIiwiPGM4eS1hY3Rpb24tYmFyLWl0ZW0gW3BsYWNlbWVudF09XCIncmlnaHQnXCI+XG4gIDxjOHktcmVhbHRpbWUtYnRuIFtzZXJ2aWNlXT1cIm9wZXJhdGlvblJlYWx0aW1lXCI+PC9jOHktcmVhbHRpbWUtYnRuPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48ZGl2IGNsYXNzPVwiY2FyZCBjb250ZW50LWZ1bGxwYWdlIGQtZ3JpZCBncmlkX19jb2wtLTYtNi0tbWRcIj5cbiAgPGRpdiBjbGFzcz1cImlubmVyLXNjcm9sbCBkLWZsZXggZC1jb2wgYmctbGV2ZWwtMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBsYXJnZS1wYWRkaW5nIHNlcGFyYXRvciBzdGlja3ktdG9wXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZVwiPlxuICAgICAgICB7eyAnQ29tbWFuZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYmxvY2sgZC1mbGV4IGQtY29sIGZsZXgtZ3JvdyBsYXJnZS1wYWRkaW5nXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IHAtYi0xNlwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNtXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwiZ2V0UHJlZGVmaW5lZENvbW1hbmQoKVwiXG4gICAgICAgICAgW3RpdGxlXT1cIidEaXNwbGF5IGEgbGlzdCBvZiBwcmVkZWZpbmVkIGNvbW1hbmRzJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgZGF0YS1jeT1cInNoZWxsLS1wcmVkZWZpbmVkLWNvbW1hbmRzXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdQcmVkZWZpbmVkIGNvbW1hbmRzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibS1sLWF1dG9cIj5cbiAgICAgICAgICA8ZGV2aWNlLXN0YXR1cyBbbW9dPVwiZGV2aWNlJCB8IGFzeW5jXCI+PC9kZXZpY2Utc3RhdHVzPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHRleHRhcmVhXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0NvbW1hbmRzJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGlubmVyLXNjcm9sbCBmbGV4LWdyb3cgYmctbGV2ZWwtMiB0ZXh0LW1vbm9zcGFjZVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwiY29tbWFuZC50ZXh0XCJcbiAgICAgICAgZGF0YS1jeT1cInNoZWxsLWNvbXBvbmVudC0tY29tbWFuZHNcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCIkZXZlbnQgfHwgcmVzZXRTdXBwb3J0ZWREZWxpdmVyeVR5cGVzKClcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdBZGQgY29tbWFuZHMgb3IgdXNlIHByZWRlZmluZWQgY29tbWFuZHMgYWJvdmUuJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICA+PC90ZXh0YXJlYT5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBsYXJnZS1wYWRkaW5nIHNlcGFyYXRvclwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGVsaXZlcnlUeXBlIG9mIGRlbGl2ZXJ5VHlwZXNcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAqbmdJZj1cImRlbGl2ZXJ5VHlwZS5pc1N1cHBvcnRlZEJ5Q29tbWFuZFwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFjb21tYW5kPy50ZXh0IHx8IChzZW5kaW5nQ29tbWFuZCQgfCBhc3luYylcIlxuICAgICAgICAgIChjbGljayk9XCJleGVjdXRlKGRlbGl2ZXJ5VHlwZS5uYW1lKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICBkZWxpdmVyeVR5cGUuZGVmYXVsdFxuICAgICAgICAgICAgICAgID8gKCdFeGVjdXRlJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgICA6IChleGVjdXRlVmlhTGFiZWwgfCB0cmFuc2xhdGU6IHsgZGVsaXZlcnlUeXBlOiBkZWxpdmVyeVR5cGUubmFtZSB9KVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICBkZWxpdmVyeVR5cGUuZGVmYXVsdFxuICAgICAgICAgICAgICAgID8gKCdFeGVjdXRlJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgICA6IChleGVjdXRlVmlhTGFiZWwgfCB0cmFuc2xhdGU6IHsgZGVsaXZlcnlUeXBlOiBkZWxpdmVyeVR5cGUubmFtZSB9KVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiaW5uZXItc2Nyb2xsIGJnLWxldmVsLTFcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgbGFyZ2UtcGFkZGluZyBzZXBhcmF0b3Igc3RpY2t5LXRvcFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGVcIj5cbiAgICAgICAge3sgJ09wZXJhdGlvbnMnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9jayBsYXJnZS1wYWRkaW5nXCI+XG4gICAgICA8Yzh5LW9wZXJhdGlvbnMtdGltZWxpbmVcbiAgICAgICAgW29wZXJhdGlvbnNdPVwib3BlcmF0aW9uc1wiXG4gICAgICAgIFtzb3VyY2VJZF09XCJkZXZpY2UuaWRcIlxuICAgICAgICBbZmlsdGVyUGlwZV09XCJmaWx0ZXJQaXBlXCJcbiAgICAgICAgW2JvZHlUZW1wbGF0ZV09XCJ0aW1lbGluZUl0ZW1Cb2R5XCJcbiAgICAgICAgW2Zvb3RlclRlbXBsYXRlc109XCJbdGltZWxpbmVJdGVtRm9vdGVyXVwiXG4gICAgICAgIFtwcm9wZXJ0aWVzVG9IaWRlXT1cIlsnYzh5X0NvbW1hbmQnXVwiXG4gICAgICA+PC9jOHktb3BlcmF0aW9ucy10aW1lbGluZT5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjdGltZWxpbmVJdGVtQm9keSBsZXQtb3BlcmF0aW9uPlxuICAgICAgICA8c21hbGw+e3sgb3BlcmF0aW9uLmM4eV9Db21tYW5kPy50ZXh0IHx8IG9wZXJhdGlvbi5kZXNjcmlwdGlvbiB9fTwvc21hbGw+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPG5nLXRlbXBsYXRlICN0aW1lbGluZUl0ZW1Gb290ZXIgbGV0LW9wZXJhdGlvbj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIm9wZXJhdGlvbi5jOHlfQ29tbWFuZD8udGV4dFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQgZm9ybS1ibG9ja1wiIHRyYW5zbGF0ZT5Db21tYW5kPC9kaXY+XG4gICAgICAgICAgPHByZSBjbGFzcz1cInAtOCB0ZXh0LXByZS1saW5lXCI+XG4gICAgICAgICAgICAgIDxjb2RlPnt7b3BlcmF0aW9uLmM4eV9Db21tYW5kLnRleHR9fTwvY29kZT5cbiAgICAgICAgICA8L3ByZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJvcGVyYXRpb24uYzh5X0NvbW1hbmQ/LnJlc3VsdFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQgZm9ybS1ibG9ja1wiIHRyYW5zbGF0ZT5SZXNwb25zZTwvZGl2PlxuICAgICAgICAgIDxwcmUgY2xhc3M9XCJwLTggdGV4dC1wcmUtbGluZVwiPlxuICAgICAgICAgICAgICA8Y29kZT57e29wZXJhdGlvbi5jOHlfQ29tbWFuZC5yZXN1bHR9fTwvY29kZT5cbiAgICAgICAgICA8L3ByZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vZGV2aWNlLXNoZWxsL3NoZWxsL3NoZWxsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2RldmljZS1zaGVsbC9zaGVsbC9zaGVsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUEyQyxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4RixPQUFPLEVBQ0wsWUFBWSxFQUNaLE9BQU8sRUFDUCw0QkFBNEIsRUFDNUIsd0JBQXdCLEVBQ3pCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDOUMsT0FBTyxFQUFjLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxlQUFlLEVBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25FLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pFLE9BQU8sRUFBVyxtQkFBbUIsRUFBZ0Isa0JBQWtCLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7Ozs7Ozs7QUFPM0YsTUFBTSxPQUFPLG9CQUFvQjtJQW9CL0IsWUFDUyxPQUEyQixFQUMzQixpQkFBMkMsRUFDMUMsVUFBd0MsRUFDeEMsZ0JBQWtDLEVBQ2xDLEtBQXFCLEVBQ3JCLFlBQTRCLEVBQzVCLFlBQTBCO1FBTjNCLFlBQU8sR0FBUCxPQUFPLENBQW9CO1FBQzNC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QUFNLE1BQU0sR0FBRyxtQkFBbUIsS0FBSyxtQkFBbUIsQ0FBQyxHQUFHLENBQUM7UUFDL0QsSUFBSSxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGtDQUFrQyxDQUFDLENBQUMsQ0FBQztZQUN2RSxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWhDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFFN0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3QixDQUFDOzhHQXhHVSxvQkFBb0I7a0dBQXBCLG9CQUFvQiwyQ0FGcEIsQ0FBQyx3QkFBd0IsRUFBRSw0QkFBNEIsQ0FBQywwQkNuQnJFLG15SEFpR0E7OzJGRDVFYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0Usa0JBQWtCLGFBRWpCLENBQUMsd0JBQXdCLEVBQUUsNEJBQTRCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCwgSU9wZXJhdGlvbiwgSVJlc3VsdExpc3QsIE9wZXJhdGlvblNlcnZpY2UgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBBbGVydFNlcnZpY2UsXG4gIGdldHRleHQsXG4gIE1hbmFnZWRPYmplY3RSZWFsdGltZVNlcnZpY2UsXG4gIE9wZXJhdGlvblJlYWx0aW1lU2VydmljZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IGluY2x1ZGVzLCBpc0VtcHR5IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJzTW9kYWxSZWYsIEJzTW9kYWxTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIG9mLCBwaXBlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgc3RhcnRXaXRoLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb21tYW5kVGVtcGxhdGVzQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tbWFuZC10ZW1wbGF0ZXMnO1xuaW1wb3J0IHsgQ29tbWFuZCwgQ29tbWFuZERlbGl2ZXJ5VHlwZSwgRGVsaXZlcnlUeXBlLCBEZXZpY2VTaGVsbFNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZGV2aWNlLXNoZWxsJyxcbiAgdGVtcGxhdGVVcmw6ICdzaGVsbC5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW09wZXJhdGlvblJlYWx0aW1lU2VydmljZSwgTWFuYWdlZE9iamVjdFJlYWx0aW1lU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgRGV2aWNlU2hlbGxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIGRldmljZTogSU1hbmFnZWRPYmplY3QgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmVudC5kYXRhLmNvbnRleHREYXRhO1xuICBkZXZpY2UkOiBPYnNlcnZhYmxlPElNYW5hZ2VkT2JqZWN0PiA9IG9mKHt9IGFzIGFueSk7XG4gIGRlbGl2ZXJ5VHlwZXM6IEFycmF5PERlbGl2ZXJ5VHlwZSAmIHsgaXNTdXBwb3J0ZWRCeUNvbW1hbmQ/OiBib29sZWFuIH0+ID0gKFxuICAgIHRoaXMuc2VydmljZS5nZXREZWxpdmVyeVR5cGVzKCkgfHwgW11cbiAgKS5tYXAoZGVsaXZlcnlUeXBlID0+ICh7IC4uLmRlbGl2ZXJ5VHlwZSwgaXNTdXBwb3J0ZWRCeUNvbW1hbmQ6IHRydWUgfSkpO1xuICBjb21tYW5kOiBDb21tYW5kID0ge30gYXMgQ29tbWFuZDtcbiAgc21zRW5hYmxlZCA9IGZhbHNlO1xuICBzZW5kaW5nQ29tbWFuZCQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBvcGVyYXRpb25zOiBJUmVzdWx0TGlzdDxJT3BlcmF0aW9uPjtcbiAgZmlsdGVyUGlwZSA9IHBpcGUoXG4gICAgbWFwKChvcGVyYXRpb25zOiBJT3BlcmF0aW9uW10pID0+XG4gICAgICAob3BlcmF0aW9ucyB8fCBbXSkuZmlsdGVyKChvcGVyYXRpb246IElPcGVyYXRpb24pID0+ICEhb3BlcmF0aW9uLmM4eV9Db21tYW5kKVxuICAgIClcbiAgKTtcblxuICBleGVjdXRlVmlhTGFiZWwgPSBnZXR0ZXh0KCdFeGVjdXRlIHZpYSAoe3tkZWxpdmVyeVR5cGV9fSknKTtcblxuICBwcml2YXRlIGRlc3Ryb3llZCQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBzZXJ2aWNlOiBEZXZpY2VTaGVsbFNlcnZpY2UsXG4gICAgcHVibGljIG9wZXJhdGlvblJlYWx0aW1lOiBPcGVyYXRpb25SZWFsdGltZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtb1JlYWx0aW1lOiBNYW5hZ2VkT2JqZWN0UmVhbHRpbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgb3BlcmF0aW9uU2VydmljZTogT3BlcmF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogQnNNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5zbXNFbmFibGVkID0gYXdhaXQgdGhpcy5zZXJ2aWNlLmNhblNlbmRDb21tYW5kc1ZpYVNNUygpO1xuXG4gICAgdGhpcy5kZXZpY2UkID0gdGhpcy5tb1JlYWx0aW1lLm9uVXBkYXRlJCh0aGlzLmRldmljZS5pZCkucGlwZShzdGFydFdpdGgodGhpcy5kZXZpY2UpKTtcblxuICAgIHRoaXMub3BlcmF0aW9ucyA9IGF3YWl0IHRoaXMub3BlcmF0aW9uU2VydmljZS5saXN0KHtcbiAgICAgIGRldmljZUlkOiB0aGlzLmRldmljZS5pZCxcbiAgICAgIGZyYWdtZW50VHlwZTogJ2M4eV9Db21tYW5kJyxcbiAgICAgIGRhdGVGcm9tOiBuZXcgRGF0ZSgwKS50b0lTT1N0cmluZygpLFxuICAgICAgZGF0ZVRvOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICBwYWdlU2l6ZTogNTAsXG4gICAgICB3aXRoVG90YWxQYWdlczogdHJ1ZSxcbiAgICAgIHJldmVydDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgdGhpcy5vcGVyYXRpb25SZWFsdGltZVxuICAgICAgLm9uQ3JlYXRlJCh0aGlzLmRldmljZS5pZClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKGdldHRleHQoJ0NvbW1hbmQgc2VudC4nKSkpO1xuXG4gICAgdGhpcy5vcGVyYXRpb25SZWFsdGltZVxuICAgICAgLm9uVXBkYXRlJCh0aGlzLmRldmljZS5pZClcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIob3AgPT4gb3AuZmFpbHVyZVJlYXNvbiAhPT0gJ09wZXJhdGlvbiBjYW5jZWxsZWQgYnkgdXNlci4nKSwgLy8gYXZvaWQgZHVwbGljYXRlIGFsZXJ0c1xuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKGdldHRleHQoJ0NvbW1hbmQgc3RhdHVzIHVwZGF0ZWQuJykpKTtcbiAgfVxuXG4gIGdldFByZWRlZmluZWRDb21tYW5kKCkge1xuICAgIGNvbnN0IG1vZGFsOiBCc01vZGFsUmVmPENvbW1hbmRUZW1wbGF0ZXNDb21wb25lbnQ+ID0gdGhpcy5tb2RhbFNlcnZpY2Uuc2hvdyhcbiAgICAgIENvbW1hbmRUZW1wbGF0ZXNDb21wb25lbnQsXG4gICAgICB7XG4gICAgICAgIGFyaWFEZXNjcmliZWRieTogJ21vZGFsLWJvZHknLFxuICAgICAgICBhcmlhTGFiZWxsZWRCeTogJ21vZGFsLXRpdGxlJ1xuICAgICAgfVxuICAgICk7XG4gICAgbW9kYWwuY29udGVudC5vblRlbXBsYXRlU2VsZWN0ZWQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICB0aGlzLmNvbW1hbmQgPSB7IC4uLihyZXN1bHQgYXMgYW55KS5jb21tYW5kVGVtcGxhdGUgfSBhcyBDb21tYW5kO1xuICAgICAgdGhpcy5kZWxpdmVyeVR5cGVzID0gdGhpcy5kZWxpdmVyeVR5cGVzLm1hcChkZWxpdmVyeVR5cGUgPT4gKHtcbiAgICAgICAgLi4uZGVsaXZlcnlUeXBlLFxuICAgICAgICBpc1N1cHBvcnRlZEJ5Q29tbWFuZDpcbiAgICAgICAgICBpc0VtcHR5KHRoaXMuY29tbWFuZC5kZWxpdmVyeVR5cGVzKSB8fFxuICAgICAgICAgIGluY2x1ZGVzKHRoaXMuY29tbWFuZC5kZWxpdmVyeVR5cGVzLCBkZWxpdmVyeVR5cGUubmFtZSlcbiAgICAgIH0pKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlc2V0U3VwcG9ydGVkRGVsaXZlcnlUeXBlcygpOiB2b2lkIHtcbiAgICB0aGlzLmRlbGl2ZXJ5VHlwZXMgPSAodGhpcy5zZXJ2aWNlLmdldERlbGl2ZXJ5VHlwZXMoKSB8fCBbXSkubWFwKGRlbGl2ZXJ5VHlwZSA9PiAoe1xuICAgICAgLi4uZGVsaXZlcnlUeXBlLFxuICAgICAgaXNTdXBwb3J0ZWRCeUNvbW1hbmQ6IHRydWVcbiAgICB9KSk7XG4gIH1cblxuICBhc3luYyBleGVjdXRlKGNvbW1hbmREZWxpdmVyeVR5cGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB1c2VTTVMgPSBjb21tYW5kRGVsaXZlcnlUeXBlID09PSBDb21tYW5kRGVsaXZlcnlUeXBlLlNNUztcbiAgICBpZiAodXNlU01TICYmICF0aGlzLnNtc0VuYWJsZWQpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLndhcm5pbmcoZ2V0dGV4dCgnU01TIHRyYW5zcG9ydCBpcyBub3QgY29uZmlndXJlZC4nKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2VuZGluZ0NvbW1hbmQkLm5leHQodHJ1ZSk7XG5cbiAgICBhd2FpdCB0aGlzLnNlcnZpY2UuY3JlYXRlQ29tbWFuZE9wZXJhdGlvbih0aGlzLmRldmljZS5pZCwgdGhpcy5jb21tYW5kLCBjb21tYW5kRGVsaXZlcnlUeXBlKTtcblxuICAgIHRoaXMuY29tbWFuZC50ZXh0ID0gJyc7XG4gICAgdGhpcy5jb21tYW5kLm5hbWUgPSAnJztcbiAgICB0aGlzLnJlc2V0U3VwcG9ydGVkRGVsaXZlcnlUeXBlcygpO1xuICAgIHRoaXMuc2VuZGluZ0NvbW1hbmQkLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgfVxufVxuIiwiPGM4eS1hY3Rpb24tYmFyLWl0ZW0gW3BsYWNlbWVudF09XCIncmlnaHQnXCI+XG4gIDxjOHktcmVhbHRpbWUtYnRuIFtzZXJ2aWNlXT1cIm9wZXJhdGlvblJlYWx0aW1lXCI+PC9jOHktcmVhbHRpbWUtYnRuPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48ZGl2IGNsYXNzPVwiY2FyZCBjb250ZW50LWZ1bGxwYWdlIGQtZ3JpZCBncmlkX19jb2wtLTYtNi0tbWRcIj5cbiAgPGRpdiBjbGFzcz1cImlubmVyLXNjcm9sbCBkLWZsZXggZC1jb2wgYmctbGV2ZWwtMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBsYXJnZS1wYWRkaW5nIHNlcGFyYXRvciBzdGlja3ktdG9wXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZVwiPlxuICAgICAgICB7eyAnQ29tbWFuZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYmxvY2sgZC1mbGV4IGQtY29sIGZsZXgtZ3JvdyBsYXJnZS1wYWRkaW5nXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IHAtYi0xNlwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNtXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwiZ2V0UHJlZGVmaW5lZENvbW1hbmQoKVwiXG4gICAgICAgICAgW3RpdGxlXT1cIidEaXNwbGF5IGEgbGlzdCBvZiBwcmVkZWZpbmVkIGNvbW1hbmRzJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgZGF0YS1jeT1cInNoZWxsLS1wcmVkZWZpbmVkLWNvbW1hbmRzXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdQcmVkZWZpbmVkIGNvbW1hbmRzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibS1sLWF1dG9cIj5cbiAgICAgICAgICA8ZGV2aWNlLXN0YXR1cyBbbW9dPVwiZGV2aWNlJCB8IGFzeW5jXCI+PC9kZXZpY2Utc3RhdHVzPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHRleHRhcmVhXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0NvbW1hbmRzJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGlubmVyLXNjcm9sbCBmbGV4LWdyb3cgYmctbGV2ZWwtMiB0ZXh0LW1vbm9zcGFjZVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwiY29tbWFuZC50ZXh0XCJcbiAgICAgICAgZGF0YS1jeT1cInNoZWxsLWNvbXBvbmVudC0tY29tbWFuZHNcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCIkZXZlbnQgfHwgcmVzZXRTdXBwb3J0ZWREZWxpdmVyeVR5cGVzKClcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdBZGQgY29tbWFuZHMgb3IgdXNlIHByZWRlZmluZWQgY29tbWFuZHMgYWJvdmUuJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICA+PC90ZXh0YXJlYT5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBsYXJnZS1wYWRkaW5nIHNlcGFyYXRvclwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGVsaXZlcnlUeXBlIG9mIGRlbGl2ZXJ5VHlwZXNcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAqbmdJZj1cImRlbGl2ZXJ5VHlwZS5pc1N1cHBvcnRlZEJ5Q29tbWFuZFwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFjb21tYW5kPy50ZXh0IHx8IChzZW5kaW5nQ29tbWFuZCQgfCBhc3luYylcIlxuICAgICAgICAgIChjbGljayk9XCJleGVjdXRlKGRlbGl2ZXJ5VHlwZS5uYW1lKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICBkZWxpdmVyeVR5cGUuZGVmYXVsdFxuICAgICAgICAgICAgICAgID8gKCdFeGVjdXRlJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgICA6IChleGVjdXRlVmlhTGFiZWwgfCB0cmFuc2xhdGU6IHsgZGVsaXZlcnlUeXBlOiBkZWxpdmVyeVR5cGUubmFtZSB9KVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICBkZWxpdmVyeVR5cGUuZGVmYXVsdFxuICAgICAgICAgICAgICAgID8gKCdFeGVjdXRlJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgICA6IChleGVjdXRlVmlhTGFiZWwgfCB0cmFuc2xhdGU6IHsgZGVsaXZlcnlUeXBlOiBkZWxpdmVyeVR5cGUubmFtZSB9KVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiaW5uZXItc2Nyb2xsIGJnLWxldmVsLTFcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgbGFyZ2UtcGFkZGluZyBzZXBhcmF0b3Igc3RpY2t5LXRvcFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGVcIj5cbiAgICAgICAge3sgJ09wZXJhdGlvbnMnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9jayBsYXJnZS1wYWRkaW5nXCI+XG4gICAgICA8Yzh5LW9wZXJhdGlvbnMtdGltZWxpbmVcbiAgICAgICAgW29wZXJhdGlvbnNdPVwib3BlcmF0aW9uc1wiXG4gICAgICAgIFtzb3VyY2VJZF09XCJkZXZpY2UuaWRcIlxuICAgICAgICBbZmlsdGVyUGlwZV09XCJmaWx0ZXJQaXBlXCJcbiAgICAgICAgW2JvZHlUZW1wbGF0ZV09XCJ0aW1lbGluZUl0ZW1Cb2R5XCJcbiAgICAgICAgW2Zvb3RlclRlbXBsYXRlc109XCJbdGltZWxpbmVJdGVtRm9vdGVyXVwiXG4gICAgICAgIFtwcm9wZXJ0aWVzVG9IaWRlXT1cIlsnYzh5X0NvbW1hbmQnXVwiXG4gICAgICA+PC9jOHktb3BlcmF0aW9ucy10aW1lbGluZT5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjdGltZWxpbmVJdGVtQm9keSBsZXQtb3BlcmF0aW9uPlxuICAgICAgICA8c21hbGw+e3sgb3BlcmF0aW9uLmM4eV9Db21tYW5kPy50ZXh0IHx8IG9wZXJhdGlvbi5kZXNjcmlwdGlvbiB9fTwvc21hbGw+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPG5nLXRlbXBsYXRlICN0aW1lbGluZUl0ZW1Gb290ZXIgbGV0LW9wZXJhdGlvbj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIm9wZXJhdGlvbi5jOHlfQ29tbWFuZD8udGV4dFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQgZm9ybS1ibG9ja1wiIHRyYW5zbGF0ZT5Db21tYW5kPC9kaXY+XG4gICAgICAgICAgPCEtLSBLZWVwIHRoaXMgaW4gYSBzaW5nbGUgbGluZSBzaW5jZSBgcHJlLXRleHRgIHdpbGwgcHJlc2VydmUgYWxsIHdoaXRlc3BhY2VzIGluIHRoZSBgcHJlYCB0YWcuLS0+XG4gICAgICAgICAgPHByZSBjbGFzcz1cInAtOCB0ZXh0LXByZVwiPjxjb2RlPnt7b3BlcmF0aW9uLmM4eV9Db21tYW5kLnRleHR9fTwvY29kZT48L3ByZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJvcGVyYXRpb24uYzh5X0NvbW1hbmQ/LnJlc3VsdFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQgZm9ybS1ibG9ja1wiIHRyYW5zbGF0ZT5SZXNwb25zZTwvZGl2PlxuICAgICAgICAgIDwhLS0gS2VlcCB0aGlzIGluIGEgc2luZ2xlIGxpbmUgc2luY2UgYHByZS10ZXh0YCB3aWxsIHByZXNlcnZlIGFsbCB3aGl0ZXNwYWNlcyBpbiB0aGUgYHByZWAgdGFnLi0tPlxuICAgICAgICAgIDxwcmUgY2xhc3M9XCJwLTggdGV4dC1wcmVcIj48Y29kZT57e29wZXJhdGlvbi5jOHlfQ29tbWFuZC5yZXN1bHR9fTwvY29kZT48L3ByZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|