@eo-sdk/client 8.10.0-rc.1 → 8.10.2

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.
@@ -51,9 +51,9 @@ export class BpmService {
51
51
  * @param types List of dms object types to fetch executable processes for
52
52
  * @returns List of executable processes
53
53
  */
54
- getExecutableProcesses(types) {
54
+ getExecutableProcesses(types, useCached) {
55
55
  if (this.capabilities.hasCapability('bpm')) {
56
- return this.fetchExecutableProcesses(types);
56
+ return (!!this.executableProcesses && useCached) ? observableOf(this.executableProcesses) : this.fetchExecutableProcesses(types);
57
57
  }
58
58
  else {
59
59
  return observableOf([]);
@@ -78,7 +78,7 @@ export class BpmService {
78
78
  if (types) {
79
79
  uri += `&type=${types.join(',')}`;
80
80
  }
81
- return this.backend.get(uri).pipe(map(res => res));
81
+ return this.backend.get(uri).pipe(map(res => res), tap(res => this.executableProcesses = res));
82
82
  }
83
83
  /**
84
84
  * Getter for a processes file. The file of a process contains
@@ -247,4 +247,4 @@ BpmService.ctorParameters = () => [
247
247
  { type: EventService },
248
248
  { type: InboxService }
249
249
  ];
250
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnBtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2UvYnBtL2JwbS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLElBQUksa0JBQWtCLEVBQUUsRUFBRSxJQUFJLFlBQVksRUFBYyxhQUFhLEVBQUUsVUFBVSxJQUFJLG9CQUFvQixFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3ZJLE9BQU8sRUFBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUV6RSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBK0IsT0FBTyxFQUFFLFFBQVEsRUFBaUIsTUFBTSx1QkFBdUIsQ0FBQztBQUV0RyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFFbkU7Ozs7Ozs7OztHQVNHO0FBRUgsTUFBTSxPQUFPLFVBQVU7SUFTckIsWUFBb0IsWUFBaUMsRUFDM0MsT0FBdUIsRUFDdkIsWUFBMEIsRUFDMUIsWUFBMEI7UUFIaEIsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQzNDLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBVDVCLHVCQUFrQixHQUFHLElBQUksYUFBYSxDQUFZLENBQUMsQ0FBQyxDQUFDO1FBQzdEOztXQUVHO1FBQ0gsa0JBQWEsR0FBMEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBTTlFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFlBQVksQ0FBQyxPQUFlLElBQUk7UUFDOUIsT0FBTyxJQUFJLENBQUMsT0FBTzthQUNoQixPQUFPLENBQUMsc0JBQXNCLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDaEUsSUFBSSxDQUNILEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNoRSxHQUFHLENBQUMsQ0FBQyxTQUFvQixFQUFFLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7WUFDOUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEQsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHNCQUFzQixDQUFDLEtBQWdCO1FBQ3JDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDMUMsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDN0M7YUFBTTtZQUNMLE9BQU8sWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsbUNBQW1DLENBQUMsVUFBdUI7UUFDekQsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssd0JBQXdCLENBQUMsS0FBZ0I7UUFDL0MsSUFBSSxHQUFHLEdBQUcsK0NBQStDLENBQUM7UUFDMUQsSUFBSSxLQUFLLEVBQUU7WUFDVCxHQUFHLElBQUksU0FBUyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7U0FDbkM7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUEwQixDQUFDLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGNBQWMsQ0FBQyxTQUFpQjtRQUM5QixPQUFPLElBQUksQ0FBQyxPQUFPO2FBQ2hCLE9BQU8sQ0FBQyxZQUFZLFNBQVMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3BFLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzdCLE9BQU87Z0JBQ0wsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTO2dCQUNmLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztnQkFDZCxXQUFXLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDL0MsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNO2dCQUNoQixPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU87Z0JBQ2xCLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTztnQkFDbEIsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO2FBQ2IsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDLENBQ0osQ0FBQztJQUNOLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxXQUFXLENBQUMsU0FBaUIsRUFBRSxNQUFjLEVBQUUsT0FBYTtRQUMxRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUMsQ0FBQztRQUM5RCxNQUFNLEtBQUssR0FBRztZQUNaLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLFNBQVMsSUFBSSxNQUFNLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNuRixJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQztTQUMvQixDQUFDO1FBQ0YsT0FBTyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQ25DLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNSLE1BQU0sRUFBRSxHQUFHLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxZQUFZLENBQUMsSUFBYztRQUN6QixNQUFNLEVBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ3pDLE1BQU0sT0FBTyxHQUFHLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUMsQ0FBQztRQUN2QyxNQUFNLE1BQU0sR0FBRyxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBQyxDQUFDO1FBRW5ELE9BQU8sSUFBSSxDQUFDLE9BQU87YUFDaEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLFNBQVMsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFBRSxPQUFPLENBQUM7YUFDN0UsSUFBSSxDQUNILFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUNoRCxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsZUFBZSxDQUFDLElBQWMsRUFBRSxNQUF1QjtRQUNyRCxNQUFNLE1BQU0sR0FBRyxFQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBQyxDQUFDO1FBQ3BELE1BQU0sT0FBTyxHQUFHO1lBQ2QsTUFBTSxFQUFFLE1BQU07WUFDZCxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDbkIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1NBQ2hCLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxPQUFPO2FBQ2hCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGdCQUFnQixJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFBRSxPQUFPLENBQUM7YUFDdkYsSUFBSSxDQUNILEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUN2RCxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsWUFBWSxDQUFDLElBQWM7UUFDekIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsRUFBRSxPQUFPLENBQUM7YUFDdEUsSUFBSSxDQUNILFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQzFELENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGNBQWMsQ0FBQyxJQUFjO1FBQzNCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUM1RSxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUMxRCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsWUFBWSxDQUFDLG1CQUEyQixFQUFFLElBQVMsRUFBRSxRQUFzQztRQUN6RixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHlCQUF5QixtQkFBbUIsRUFBRSxFQUFFO1lBQ3ZFLElBQUksRUFBRSxJQUFJO1lBQ1YsUUFBUSxFQUFFLFFBQVE7U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsaUJBQWlCLENBQUMsU0FBaUI7UUFDakMsT0FBTyxJQUFJLENBQUMsT0FBTzthQUNoQixPQUFPLENBQUMsZ0JBQWdCLFNBQVMsVUFBVSxDQUFDO2FBQzVDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxpQkFBaUIsQ0FBQyxTQUFpQixFQUFFLFVBQWtCLEVBQUUsaUJBQXlCO1FBQ2hGLE9BQU8sSUFBSSxDQUFDLE9BQU87YUFDaEIsR0FBRyxDQUFDLFlBQVksU0FBUyxTQUFTLGlCQUFpQixlQUFlLFVBQVUsRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNoSCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsZUFBZSxDQUFDLFNBQWlCLEVBQUUsVUFBa0IsRUFBRSxRQUFxQjtRQUMxRSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDakIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3JCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQzFCLFlBQVksU0FBUyxTQUFTLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLGVBQWUsVUFBVSxFQUFFLEVBQ2pGLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sa0JBQWtCLENBQUMsS0FBSyxDQUFDO2FBQzdCLElBQUksQ0FDSCxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FDeEQsQ0FBQztJQUNOLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILDRCQUE0QixDQUFDLFFBQWtCLEVBQUUsU0FBb0I7UUFDbkUsSUFBSSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssZUFBZSxDQUFDLElBQUksRUFBRTtZQUMxSSxJQUFJLFFBQXFCLENBQUM7WUFDMUIsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDeEIsOERBQThEO2dCQUM5RCxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDbkQsUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMvRTtpQkFBTTtnQkFDTCxRQUFRLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQzthQUMvQjtZQUNELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDeEU7YUFBTTtZQUNMLE9BQU8sb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDdEM7SUFDSCxDQUFDOzs7WUEzUEYsVUFBVTs7O1lBZkgsbUJBQW1CO1lBTG5CLGNBQWM7WUFJZCxZQUFZO1lBRFosWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Zm9ya0pvaW4gYXMgb2JzZXJ2YWJsZUZvcmtKb2luLCBvZiBhcyBvYnNlcnZhYmxlT2YsIE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIHRocm93RXJyb3IgYXMgb2JzZXJ2YWJsZVRocm93RXJyb3J9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge21lcmdlTWFwLCB0YXAsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1V0aWxzfSBmcm9tICcuLi8uLi91dGlsL3V0aWxzJztcclxuaW1wb3J0IHtCYWNrZW5kU2VydmljZX0gZnJvbSAnLi4vYmFja2VuZC9iYWNrZW5kLnNlcnZpY2UnO1xyXG5pbXBvcnQge1dvcmtJdGVtSGlzdG9yeUVudHJ5fSBmcm9tICcuLi8uLi9tb2RlbC93b3JrLWl0ZW0taGlzdG9yeS5tb2RlbCc7XHJcbmltcG9ydCB7RG1zT2JqZWN0fSBmcm9tICcuLi8uLi9tb2RlbC9kbXMtb2JqZWN0Lm1vZGVsJztcclxuaW1wb3J0IHtJbmJveFNlcnZpY2V9IGZyb20gJy4uL2luYm94L2luYm94LnNlcnZpY2UnO1xyXG5pbXBvcnQge0V2ZW50U2VydmljZX0gZnJvbSAnLi4vZXZlbnRzL2V2ZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQge0NhcGFiaWxpdGllc1NlcnZpY2V9IGZyb20gJy4uL2NhcGFiaWxpdGllcy9jYXBhYmlsaXRpZXMuc2VydmljZSc7XHJcbmltcG9ydCB7RXhlY3V0YWJsZVByb2Nlc3MsIEZpbGVFbnRyeSwgUHJvY2VzcywgV29ya0l0ZW0sIFdvcmtJdGVtQWN0aW9ufSBmcm9tICcuLi8uLi9tb2RlbC9icG0ubW9kZWwnO1xyXG5pbXBvcnQge0NsaXBib2FyZH0gZnJvbSAnLi4vY2xpcGJvYXJkL2NsaXBib2FyZC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge0NsaXBib2FyZEFjdGlvbn0gZnJvbSAnLi4vY2xpcGJvYXJkL2NsaXBib2FyZC1hY3Rpb24uZW51bSc7XHJcblxyXG4vKipcclxuICogYEJwbVNlcnZpY2VgIGhhbmRsZXMgaW50ZXJhY3Rpb24gcmVsYXRlZCB0byBCUE0gdGFza3MuXHJcbiAqXHJcbiAqIFRoZSBtYWluIHBhcnRzIHByb3ZpZGVkIGFuZCB1c2VkIGJ5IHRoaXMgc2VydmljZSBhcmUgUHJvY2Vzc2VzIGFuZCBXb3JrSXRlbXMuXHJcbiAqIFByb2Nlc3NlcyBhcmUgZGVmaW5lZCBvbiB0aGUgYmFja2VuZCBzaWRlLiBUaGV5IGRlc2NyaWJlIGEgc2V0IG9mIHRhc2tzIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBieSB0aGUgcHJvY2Vzcy5cclxuICogVGFza3MgdGhhdCByZXF1aXJlIHVzZXIgaW50ZXJhY3Rpb24gYXJlIHJlZmVycmVkIHRvIGFzIFdvcmtJdGVtcy5cclxuICpcclxuICogUHJvY2Vzc2VzIGNhbiBiZSByZWxhdGVkIHRvIGEgc3BlY2lhbCBvYmplY3QgdHlwZSwgYnV0IHRoZXkgZG9uJ3QgaGF2ZSB0by4gSW4gYWRkaXRpb24gdG8gdGhhdCB0aGV5IGNhbiByZWZlclxyXG4gKiB0byBkbXMgb2JqZWN0cy5cclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEJwbVNlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIHByb2Nlc3NJdGVtczogUHJvY2Vzc1tdO1xyXG4gIHByaXZhdGUgcHJvY2Vzc0l0ZW1zU291cmNlID0gbmV3IFJlcGxheVN1YmplY3Q8UHJvY2Vzc1tdPigxKTtcclxuICAvKipcclxuICAgKiBMb25nIHRlcm0gb2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgY3VycmVudCBwcm9jZXNzZXNcclxuICAgKi9cclxuICBwcm9jZXNzSXRlbXMkOiBPYnNlcnZhYmxlPFByb2Nlc3NbXT4gPSB0aGlzLnByb2Nlc3NJdGVtc1NvdXJjZS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjYXBhYmlsaXRpZXM6IENhcGFiaWxpdGllc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgaW5ib3hTZXJ2aWNlOiBJbmJveFNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlIGFsbCBwcm9jZXNzZXMgb2YgdGhlIGN1cnJlbnQgdXNlci5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBzaXplIE1heGltdW0gbnVtYmVyIG9mIHByb2Nlc3NlcyB0byBiZSBmZXRjaGVkXHJcbiAgICogQHJldHVybnMgTGlzdCBvZiBQcm9jZXNzZXNcclxuICAgKi9cclxuICBnZXRQcm9jZXNzZXMoc2l6ZTogbnVtYmVyID0gMTAwMCk6IE9ic2VydmFibGU8UHJvY2Vzc1tdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5nZXRKc29uKGAvcHJvY2Vzcy91c2VyP3NpemU9JHtzaXplfWAsIHRoaXMuYmFja2VuZC5nZXRCcG1CYXNlKCkpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcChyZXNwb25zZSA9PiByZXNwb25zZS5jb250ZW50Lm1hcChpdGVtID0+IG5ldyBQcm9jZXNzKGl0ZW0pKSksXHJcbiAgICAgICAgdGFwKChwcm9jZXNzZXM6IFByb2Nlc3NbXSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wcm9jZXNzSXRlbXMgPSBwcm9jZXNzZXM7XHJcbiAgICAgICAgICB0aGlzLnByb2Nlc3NJdGVtc1NvdXJjZS5uZXh0KHRoaXMucHJvY2Vzc0l0ZW1zKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0dGVyIGZvciB0aGUgZXhlY3V0YWJsZSBQcm9jZXNzZXMuIElmIHR5cGVzIGFyZSBwcm92aWRlZCwgeW91J2xsIGdldFxyXG4gICAqIG9ubHkgdGhlIHByb2Nlc3NlcyB0aGF0IGFyZSBleGVjdXRhYmxlIGZvciBhbGwgb2YgdGhlbVxyXG4gICAqIEBwYXJhbSB0eXBlcyBMaXN0IG9mIGRtcyBvYmplY3QgdHlwZXMgdG8gZmV0Y2ggZXhlY3V0YWJsZSBwcm9jZXNzZXMgZm9yXHJcbiAgICogQHJldHVybnMgTGlzdCBvZiBleGVjdXRhYmxlIHByb2Nlc3Nlc1xyXG4gICAqL1xyXG4gIGdldEV4ZWN1dGFibGVQcm9jZXNzZXModHlwZXM/OiBzdHJpbmdbXSk6IE9ic2VydmFibGU8RXhlY3V0YWJsZVByb2Nlc3NbXT4ge1xyXG4gICAgaWYgKHRoaXMuY2FwYWJpbGl0aWVzLmhhc0NhcGFiaWxpdHkoJ2JwbScpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZldGNoRXhlY3V0YWJsZVByb2Nlc3Nlcyh0eXBlcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gb2JzZXJ2YWJsZU9mKFtdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgZXhlY3V0YWJsZSBQcm9jZXNzZXMgZm9yIGEgZ2l2ZW4gc2V0IG9mIGRtcyBvYmplY3QuWW91J2xsIGdldFxyXG4gICAqIG9ubHkgdGhlIHByb2Nlc3NlcyB0aGF0IGFyZSBleGVjdXRhYmxlIGZvciBhbGwgb2YgdGhlbS5cclxuICAgKiBAcGFyYW0gZG1zT2JqZWN0cyBMaXN0IG9mIGRtcyBvYmplY3RzIHRvIGZldGNoIGV4ZWN1dGFibGUgcHJvY2Vzc2VzIGZvclxyXG4gICAqIEByZXR1cm5zIExpc3Qgb2YgZXhlY3V0YWJsZSBwcm9jZXNzZXNcclxuICAgKi9cclxuICBnZXRFeGVjdXRhYmxlUHJvY2Vzc2VzRm9yRG1zT2JqZWN0cyhkbXNPYmplY3RzOiBEbXNPYmplY3RbXSk6IE9ic2VydmFibGU8RXhlY3V0YWJsZVByb2Nlc3NbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0RXhlY3V0YWJsZVByb2Nlc3NlcyhkbXNPYmplY3RzLm1hcChvID0+IG8udHlwZU5hbWUpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgZXhlY3V0YWJsZSBQcm9jZXNzZXMgZnJvbSB0aGUgYmFja2VuZC5cclxuICAgKiBAcGFyYW0gdHlwZXMgTGlzdCBvZiBkbXMgb2JqZWN0IHR5cGVzIHRvIGZldGNoIGV4ZWN1dGFibGUgcHJvY2Vzc2VzIGZvclxyXG4gICAqIEByZXR1cm5zIExpc3Qgb2YgZXhlY3V0YWJsZSBwcm9jZXNzZXNcclxuICAgKi9cclxuICBwcml2YXRlIGZldGNoRXhlY3V0YWJsZVByb2Nlc3Nlcyh0eXBlcz86IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxFeGVjdXRhYmxlUHJvY2Vzc1tdPiB7XHJcbiAgICBsZXQgdXJpID0gJy9icG0vcHJvY2Vzcy9leGVjdXRhYmxlP2Zvcm09dHJ1ZSZmaWVsZHM9dHJ1ZSc7XHJcbiAgICBpZiAodHlwZXMpIHtcclxuICAgICAgdXJpICs9IGAmdHlwZT0ke3R5cGVzLmpvaW4oJywnKX1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXQodXJpKS5waXBlKG1hcChyZXMgPT4gcmVzIGFzIEV4ZWN1dGFibGVQcm9jZXNzW10pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHRlciBmb3IgYSBwcm9jZXNzZXMgZmlsZS4gVGhlIGZpbGUgb2YgYSBwcm9jZXNzIGNvbnRhaW5zXHJcbiAgICogZG1zIG9iamVjdHMgYXR0YWNoZWQgdG8gdGhlIHByb2Nlc3MuXHJcbiAgICogQHBhcmFtIHByb2Nlc3NJZCBJRCBvZiB0aGUgcHJvY2VzcyB0byBmZXRjaCBhdHRhY2hlZCBvYmplY3RzIGZvclxyXG4gICAqL1xyXG4gIGdldFByb2Nlc3NGaWxlKHByb2Nlc3NJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxGaWxlRW50cnlbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAuZ2V0SnNvbihgL3Byb2Nlc3MvJHtwcm9jZXNzSWR9L2ZpbGVgLCB0aGlzLmJhY2tlbmQuZ2V0QnBtQmFzZSgpKS5waXBlKFxyXG4gICAgICAgIG1hcChyZXMgPT4gcmVzLmNvbnRlbnQubWFwKGkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWQ6IGkuZWxlbWVudGlkLFxyXG4gICAgICAgICAgICB0aXRsZTogaS50aXRsZSxcclxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGkuZGVzY3JpcHRpb24gPyBpLmRlc2NyaXB0aW9uIDogJycsXHJcbiAgICAgICAgICAgIGljb25pZDogaS5pY29uaWQsXHJcbiAgICAgICAgICAgIGNyZWF0b3I6IGkuY3JlYXRvcixcclxuICAgICAgICAgICAgYWRkdGltZTogaS5hZGR0aW1lLFxyXG4gICAgICAgICAgICB0eXBlOiBpLnR5cGVcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSkpXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSB3b3JrIGl0ZW0uXHJcbiAgICogQHBhcmFtIHByb2Nlc3NJZCBJRCBvZiB0aGUgcGFyZW50IHByb2Nlc3NcclxuICAgKiBAcGFyYW0gaXRlbUlkIElEIG9mIHRoZSB3b3JrIGl0ZW0gaXRzZWxmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyB0byBiZSBhZGRlZCB0byB0aGUgYmFja2VuZCBjYWxsXHJcbiAgICogQHJldHVybnMgYSBXb3JrSXRlbVxyXG4gICAqL1xyXG4gIGdldFdvcmtJdGVtKHByb2Nlc3NJZDogc3RyaW5nLCBpdGVtSWQ6IHN0cmluZywgb3B0aW9ucz86IGFueSk6IE9ic2VydmFibGU8V29ya0l0ZW0+IHtcclxuICAgIGNvbnN0IHBhcmFtcyA9IG9wdGlvbnMgPyBvcHRpb25zIDoge2Zvcm06IHRydWUsIGZpZWxkczogdHJ1ZX07XHJcbiAgICBjb25zdCB0YXNrcyA9IFtcclxuICAgICAgdGhpcy5iYWNrZW5kLmdldEpzb24oVXRpbHMuYnVpbGRVcmkoYC9icG0vcHJvY2Vzcy8ke3Byb2Nlc3NJZH0vJHtpdGVtSWR9YCwgcGFyYW1zKSksXHJcbiAgICAgIHRoaXMuZ2V0UHJvY2Vzc0ZpbGUocHJvY2Vzc0lkKVxyXG4gICAgXTtcclxuICAgIHJldHVybiBvYnNlcnZhYmxlRm9ya0pvaW4odGFza3MpLnBpcGUoXHJcbiAgICAgIG1hcChyZXMgPT4ge1xyXG4gICAgICAgIGNvbnN0IHdpID0gbmV3IFdvcmtJdGVtKHJlc1swXSk7XHJcbiAgICAgICAgd2kuc2V0RmlsZShyZXNbMV0pO1xyXG4gICAgICAgIHJldHVybiB3aTtcclxuICAgICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2F2ZXMgYSB3b3JrIGl0ZW0uXHJcbiAgICogQHBhcmFtIGl0ZW0gVGhlIHdvcmsgaXRlbSB0byBiZSBzYXZlZFxyXG4gICAqIEByZXR1cm5zIFRoZSB1cGRhdGVkIFdvcmtJdGVtXHJcbiAgICovXHJcbiAgc2F2ZVdvcmtJdGVtKGl0ZW06IFdvcmtJdGVtKTogT2JzZXJ2YWJsZTxXb3JrSXRlbT4ge1xyXG4gICAgY29uc3Qge2lkLCBwcm9jZXNzSWQsIGZpbGUsIGRhdGF9ID0gaXRlbTtcclxuICAgIGNvbnN0IHBheWxvYWQgPSB7Y29udGVudHM6IGZpbGUsIGRhdGF9O1xyXG4gICAgY29uc3QgcGFyYW1zID0ge2tlZXBsb2NrOiB0cnVlLCBpc2F1dG9sb2NrOiBmYWxzZX07XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAucG9zdChVdGlscy5idWlsZFVyaShgL2JwbS9wcm9jZXNzLyR7cHJvY2Vzc0lkfS8ke2lkfS9zYXZlYCwgcGFyYW1zKSwgcGF5bG9hZClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWVyZ2VNYXAoKCkgPT4gdGhpcy5nZXRXb3JrSXRlbShwcm9jZXNzSWQsIGlkKSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZvcndhcmRzIGEgd29yayBpdGVtLiBJZiBhIFdvcmtJdGVtIHByb3ZpZGVzIGRpZmZlcmVudCBhY3Rpb25zIChAbGluayBXb3JrSXRlbUFjdGlvbilcclxuICAgKiB5b3UgY2FuIHByb3ZpZGUgdGhlIHNlbGVjdGVkIGFjdGlvbiB0b28uXHJcbiAgICogQHBhcmFtIGl0ZW0gVGhlIHdvcmsgaXRlbSB0byBiZSBmb3J3YXJkZWRcclxuICAgKiBAcGFyYW0gYWN0aW9uIEFjdGlvbiB1c2VkIGZvciBmb3J3YXJkaW5nXHJcbiAgICovXHJcbiAgZm9yd2FyZFdvcmtJdGVtKGl0ZW06IFdvcmtJdGVtLCBhY3Rpb24/OiBXb3JrSXRlbUFjdGlvbik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBwYXJhbXMgPSB7a2VlcGxvY2s6IGZhbHNlLCBpc2F1dG9sb2NrOiBmYWxzZX07XHJcbiAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICBhY3Rpb246IGFjdGlvbixcclxuICAgICAgY29udGVudHM6IGl0ZW0uZmlsZSxcclxuICAgICAgZGF0YTogaXRlbS5kYXRhXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAucG9zdChVdGlscy5idWlsZFVyaShgL2JwbS9wcm9jZXNzLyR7aXRlbS5wcm9jZXNzSWR9LyR7aXRlbS5pZH0vc2F2ZWAsIHBhcmFtcyksIHBheWxvYWQpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLmluYm94U2VydmljZS51cGRhdGVJbmJveEl0ZW1zKGl0ZW0uaWQpKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9ja3MgYSBXb3JrSXRlbSBmb3IgdGhlIGN1cnJlbnQgdXNlciAocGVyc29uYWxpemF0aW9uKSwgbWVhbmluZyB0aGF0IHRoZVxyXG4gICAqIGN1cnJlbnQgdXNlciBpcyBub3cgaW4gY2hhcmdlIG9mIGZ1bGZpbGxpbmcgdGhlIFdvcmtJdGVtIHRhc2suXHJcbiAgICogQHBhcmFtIGl0ZW0gVGhlIFdvcmtJdGVtIHRvIGJlIGxvY2tlZFxyXG4gICAqIEByZXR1cm5zIFRoZSB1cGRhdGVkIFdvcmtJdGVtXHJcbiAgICovXHJcbiAgbG9ja1dvcmtJdGVtKGl0ZW06IFdvcmtJdGVtKTogT2JzZXJ2YWJsZTxXb3JrSXRlbT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wdXQoYC9icG0vcHJvY2Vzcy8ke2l0ZW0ucHJvY2Vzc0lkfS8ke2l0ZW0uaWR9L2xvY2tgKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtZXJnZU1hcCgoKSA9PiB0aGlzLmdldFdvcmtJdGVtKGl0ZW0ucHJvY2Vzc0lkLCBpdGVtLmlkKSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbGVhc2VzIHRoZSBsb2NrIGZvciBhIFdvcmtJdGVtLlxyXG4gICAqIEBwYXJhbSBpdGVtIFRoZSB3b3JrIGl0ZW0gdG8gYmUgdW5sb2NrZWRcclxuICAgKiBAcmV0dXJucyBUaGUgdXBkYXRlZCBXb3JrSXRlbVxyXG4gICAqL1xyXG4gIHVubG9ja1dvcmtJdGVtKGl0ZW06IFdvcmtJdGVtKTogT2JzZXJ2YWJsZTxXb3JrSXRlbT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5kZWwoYC9icG0vcHJvY2Vzcy8ke2l0ZW0ucHJvY2Vzc0lkfS8ke2l0ZW0uaWR9L2xvY2tgKS5waXBlKFxyXG4gICAgICBtZXJnZU1hcCgoKSA9PiB0aGlzLmdldFdvcmtJdGVtKGl0ZW0ucHJvY2Vzc0lkLCBpdGVtLmlkKSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTdGFydHMgYW4gZXhlY3V0YWJsZSBwcm9jZXNzLlxyXG4gICAqIEBwYXJhbSBleGVjdXRhYmxlUHJvY2Vzc0lkIElEIG9mIHRoZSBleGVjdXRhYmxlIFByb2Nlc3MgdG8gYmUgc3RhcnRlZFxyXG4gICAqIEBwYXJhbSBkYXRhIERhdGEgdG8gYmUgcGFzc2VkIHRvIHRoZSBwcm9jZXNzIChzaW1wbGUgb2JqZWN0IG9mIGtleS92YWx1ZSBwYWlycylcclxuICAgKiBAcGFyYW0gY29udGVudHMgT2JqZWN0cyB0byBiZSBhdHRhY2hlZCB0byB0aGUgcHJvY2VzcyAocHJvY2Vzcy5maWxlKS5cclxuICAgKi9cclxuICBzdGFydFByb2Nlc3MoZXhlY3V0YWJsZVByb2Nlc3NJZDogc3RyaW5nLCBkYXRhOiBhbnksIGNvbnRlbnRzOiB7aWQ6IHN0cmluZywgdHlwZTogc3RyaW5nfVtdKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQucG9zdChgL2JwbS9wcm9jZXNzLz9tb2RlbGlkPSR7ZXhlY3V0YWJsZVByb2Nlc3NJZH1gLCB7XHJcbiAgICAgIGRhdGE6IGRhdGEsXHJcbiAgICAgIGNvbnRlbnRzOiBjb250ZW50c1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBoaXN0b3J5IGZvciBhIHByb2Nlc3MuIFdoaWNoIGVudHJpZXMgYXJlIHJldHVybmVkIGRlcGVuZHMgb24gdGhlXHJcbiAgICogcGVybWlzc2lvbnMgb2YgdGhlIGN1cnJlbnQgdXNlci5cclxuICAgKiBAcGFyYW0gcHJvY2Vzc0lkIFRoZSBJRCBvZiB0aGUgcHJvY2VzcyB0byBmZXRjaCBoaXN0b3J5IGZvclxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8V29ya0l0ZW1IaXN0b3J5RW50cnlbXT5cclxuICAgKi9cclxuICBnZXRQcm9jZXNzSGlzdG9yeShwcm9jZXNzSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8V29ya0l0ZW1IaXN0b3J5RW50cnlbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAuZ2V0SnNvbihgL2JwbS9wcm9jZXNzLyR7cHJvY2Vzc0lkfS9oaXN0b3J5YClcclxuICAgICAgLnBpcGUobWFwKHJlcyA9PiByZXMgJiYgcmVzLmxlbmd0aCA/IHJlcy5tYXAoaXRlbSA9PiBuZXcgV29ya0l0ZW1IaXN0b3J5RW50cnkoaXRlbSkpIDogW10pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZXMgYSBjb250ZW50IGZyb20gdGhlIHdvcmsgaXRlbXMgZmlsZS5cclxuICAgKiBAcGFyYW0gcHJvY2Vzc0lkIFRoZSBJRCBvZiB0aGUgcHJvY2VzcyB0byByZW1vdmUgdGhlIGl0ZW0gZnJvbVxyXG4gICAqIEBwYXJhbSB3b3JrSXRlbUlkIFRoZSBJRCBvZiB0aGUgd29yayBpdGVtIGNvbnRhaW5pbmcgdGhlIGZpbGUgZWxlbWVudCB0byBiZSByZW1vdmVkXHJcbiAgICogQHBhcmFtIHdvcmtJdGVtQ29udGVudElkIFRoZSB0aGUgSUQgb2YgdGhlIGZpbGUgZWxlbWVudCB0byBiZSByZW1vdmVkXHJcbiAgICovXHJcbiAgcmVtb3ZlRmlsZUVsZW1lbnQocHJvY2Vzc0lkOiBzdHJpbmcsIHdvcmtJdGVtSWQ6IHN0cmluZywgd29ya0l0ZW1Db250ZW50SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5kZWwoYC9wcm9jZXNzLyR7cHJvY2Vzc0lkfS9maWxlLyR7d29ya0l0ZW1Db250ZW50SWR9P2FjdGl2aXR5aWQ9JHt3b3JrSXRlbUlkfWAsIHRoaXMuYmFja2VuZC5nZXRCcG1CYXNlKCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIGNvbnRlbnRzIHRvIGEgd29yayBpdGVtcyBmaWxlLlxyXG4gICAqIEBwYXJhbSBwcm9jZXNzSWQgVGhlIElEIG9mIHRoZSBwcm9jZXNzXHJcbiAgICogQHBhcmFtIHdvcmtJdGVtSWQgVGhlIElEIG9mIHRoZSBhY3Rpdml0eVxyXG4gICAqIEBwYXJhbSBlbGVtZW50cyBUaGUgRWxlbWVudHMgdG8gYmUgYWRkZWRcclxuICAgKiBAcmV0dXJucyBUaGUgdXBkYXRlZCBXb3JrSXRlbVxyXG4gICAqL1xyXG4gIGFkZEZpbGVFbGVtZW50cyhwcm9jZXNzSWQ6IHN0cmluZywgd29ya0l0ZW1JZDogc3RyaW5nLCBlbGVtZW50czogRG1zT2JqZWN0W10pOiBPYnNlcnZhYmxlPFdvcmtJdGVtPiB7XHJcbiAgICBjb25zdCB0YXNrcyA9IFtdO1xyXG4gICAgZWxlbWVudHMuZm9yRWFjaCgoZSkgPT4ge1xyXG4gICAgICB0YXNrcy5wdXNoKHRoaXMuYmFja2VuZC5wb3N0KFxyXG4gICAgICAgIGAvcHJvY2Vzcy8ke3Byb2Nlc3NJZH0vZmlsZS8ke2UuaWR9P3R5cGU9JHtlLnR5cGUubmFtZX0mYWN0aXZpdHlpZD0ke3dvcmtJdGVtSWR9YCxcclxuICAgICAgICB7fSwgdGhpcy5iYWNrZW5kLmdldEJwbUJhc2UoKSkpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gb2JzZXJ2YWJsZUZvcmtKb2luKHRhc2tzKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtZXJnZU1hcCgoKSA9PiB0aGlzLmdldFdvcmtJdGVtKHByb2Nlc3NJZCwgd29ya0l0ZW1JZCkpXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGQgYSBvYmplY3RzIGZyb20gdGhlIGNsaXBib2FyZCB0byBhIFdvcmtJdGVtLlxyXG4gICAqIEBwYXJhbSB3b3JrSXRlbSBUaGUgd29ya0l0ZW0gdG8gYWRkIHRoZSBvYmplY3RzIHRvXHJcbiAgICogQHBhcmFtIGNsaXBib2FyZCBDbGlwYm9hcmQgb2JqZWN0IGhvbGRpbmcgdXNlciBzZWxlY3RlZCBvYmplY3RzXHJcbiAgICogQHJldHVybnMgVGhlIHVwZGF0ZWQgV29ya0l0ZW1cclxuICAgKi9cclxuICBhZGRGaWxlRWxlbWVudHNGcm9tQ2xpcGJvYXJkKHdvcmtJdGVtOiBXb3JrSXRlbSwgY2xpcGJvYXJkOiBDbGlwYm9hcmQpOiBPYnNlcnZhYmxlPFdvcmtJdGVtPiB7XHJcbiAgICBpZiAoKHdvcmtJdGVtICYmIHdvcmtJdGVtLmZpbGVFbnRyeVBlcm1pc3Npb25zLmFkZCkgJiYgY2xpcGJvYXJkICYmIGNsaXBib2FyZC5lbGVtZW50cy5sZW5ndGggJiYgY2xpcGJvYXJkLmFjdGlvbiA9PT0gQ2xpcGJvYXJkQWN0aW9uLkNPUFkpIHtcclxuICAgICAgbGV0IGNvbnRlbnRzOiBEbXNPYmplY3RbXTtcclxuICAgICAgaWYgKHdvcmtJdGVtLmZpbGUubGVuZ3RoKSB7XHJcbiAgICAgICAgLy8gb25seSBhZGQgaXRlbXMgdGhhdCBhcmUgbm90IGFscmVhZHkgcGFydCBvZiB0aGUgYXR0YWNobWVudHNcclxuICAgICAgICBjb25zdCBhdHRhY2htZW50SWRzID0gd29ya0l0ZW0uZmlsZS5tYXAoZSA9PiBlLmlkKTtcclxuICAgICAgICBjb250ZW50cyA9IGNsaXBib2FyZC5lbGVtZW50cy5maWx0ZXIoZSA9PiBhdHRhY2htZW50SWRzLmluZGV4T2YoZS5pZCkgPT09IC0xKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb250ZW50cyA9IGNsaXBib2FyZC5lbGVtZW50cztcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdGhpcy5hZGRGaWxlRWxlbWVudHMod29ya0l0ZW0ucHJvY2Vzc0lkLCB3b3JrSXRlbS5pZCwgY29udGVudHMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKCdlcnJvcicpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
250
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnBtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2UvYnBtL2JwbS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLElBQUksa0JBQWtCLEVBQUUsRUFBRSxJQUFJLFlBQVksRUFBYyxhQUFhLEVBQUUsVUFBVSxJQUFJLG9CQUFvQixFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3ZJLE9BQU8sRUFBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUV6RSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBK0IsT0FBTyxFQUFFLFFBQVEsRUFBaUIsTUFBTSx1QkFBdUIsQ0FBQztBQUV0RyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFFbkU7Ozs7Ozs7OztHQVNHO0FBRUgsTUFBTSxPQUFPLFVBQVU7SUFVckIsWUFBb0IsWUFBaUMsRUFDM0MsT0FBdUIsRUFDdkIsWUFBMEIsRUFDMUIsWUFBMEI7UUFIaEIsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQzNDLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLGlC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RTtZQUMxSSxJQUFJLFFBQXFCLENBQUM7WUFDMUIsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDeEIsOERBQThEO2dCQUM5RCxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDbkQsUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMvRTtpQkFBTTtnQkFDTCxRQUFRLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQzthQUMvQjtZQUNELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDeEU7YUFBTTtZQUNMLE9BQU8sb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDdEM7SUFDSCxDQUFDOzs7WUEvUEYsVUFBVTs7O1lBZkgsbUJBQW1CO1lBTG5CLGNBQWM7WUFJZCxZQUFZO1lBRFosWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Zm9ya0pvaW4gYXMgb2JzZXJ2YWJsZUZvcmtKb2luLCBvZiBhcyBvYnNlcnZhYmxlT2YsIE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIHRocm93RXJyb3IgYXMgb2JzZXJ2YWJsZVRocm93RXJyb3J9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge21lcmdlTWFwLCB0YXAsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1V0aWxzfSBmcm9tICcuLi8uLi91dGlsL3V0aWxzJztcclxuaW1wb3J0IHtCYWNrZW5kU2VydmljZX0gZnJvbSAnLi4vYmFja2VuZC9iYWNrZW5kLnNlcnZpY2UnO1xyXG5pbXBvcnQge1dvcmtJdGVtSGlzdG9yeUVudHJ5fSBmcm9tICcuLi8uLi9tb2RlbC93b3JrLWl0ZW0taGlzdG9yeS5tb2RlbCc7XHJcbmltcG9ydCB7RG1zT2JqZWN0fSBmcm9tICcuLi8uLi9tb2RlbC9kbXMtb2JqZWN0Lm1vZGVsJztcclxuaW1wb3J0IHtJbmJveFNlcnZpY2V9IGZyb20gJy4uL2luYm94L2luYm94LnNlcnZpY2UnO1xyXG5pbXBvcnQge0V2ZW50U2VydmljZX0gZnJvbSAnLi4vZXZlbnRzL2V2ZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQge0NhcGFiaWxpdGllc1NlcnZpY2V9IGZyb20gJy4uL2NhcGFiaWxpdGllcy9jYXBhYmlsaXRpZXMuc2VydmljZSc7XHJcbmltcG9ydCB7RXhlY3V0YWJsZVByb2Nlc3MsIEZpbGVFbnRyeSwgUHJvY2VzcywgV29ya0l0ZW0sIFdvcmtJdGVtQWN0aW9ufSBmcm9tICcuLi8uLi9tb2RlbC9icG0ubW9kZWwnO1xyXG5pbXBvcnQge0NsaXBib2FyZH0gZnJvbSAnLi4vY2xpcGJvYXJkL2NsaXBib2FyZC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge0NsaXBib2FyZEFjdGlvbn0gZnJvbSAnLi4vY2xpcGJvYXJkL2NsaXBib2FyZC1hY3Rpb24uZW51bSc7XHJcblxyXG4vKipcclxuICogYEJwbVNlcnZpY2VgIGhhbmRsZXMgaW50ZXJhY3Rpb24gcmVsYXRlZCB0byBCUE0gdGFza3MuXHJcbiAqXHJcbiAqIFRoZSBtYWluIHBhcnRzIHByb3ZpZGVkIGFuZCB1c2VkIGJ5IHRoaXMgc2VydmljZSBhcmUgUHJvY2Vzc2VzIGFuZCBXb3JrSXRlbXMuXHJcbiAqIFByb2Nlc3NlcyBhcmUgZGVmaW5lZCBvbiB0aGUgYmFja2VuZCBzaWRlLiBUaGV5IGRlc2NyaWJlIGEgc2V0IG9mIHRhc2tzIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBieSB0aGUgcHJvY2Vzcy5cclxuICogVGFza3MgdGhhdCByZXF1aXJlIHVzZXIgaW50ZXJhY3Rpb24gYXJlIHJlZmVycmVkIHRvIGFzIFdvcmtJdGVtcy5cclxuICpcclxuICogUHJvY2Vzc2VzIGNhbiBiZSByZWxhdGVkIHRvIGEgc3BlY2lhbCBvYmplY3QgdHlwZSwgYnV0IHRoZXkgZG9uJ3QgaGF2ZSB0by4gSW4gYWRkaXRpb24gdG8gdGhhdCB0aGV5IGNhbiByZWZlclxyXG4gKiB0byBkbXMgb2JqZWN0cy5cclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEJwbVNlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIGV4ZWN1dGFibGVQcm9jZXNzZXM6IEV4ZWN1dGFibGVQcm9jZXNzW107XHJcbiAgcHJpdmF0ZSBwcm9jZXNzSXRlbXM6IFByb2Nlc3NbXTtcclxuICBwcml2YXRlIHByb2Nlc3NJdGVtc1NvdXJjZSA9IG5ldyBSZXBsYXlTdWJqZWN0PFByb2Nlc3NbXT4oMSk7XHJcbiAgLyoqXHJcbiAgICogTG9uZyB0ZXJtIG9ic2VydmFibGUgZW1pdHRpbmcgdGhlIGN1cnJlbnQgcHJvY2Vzc2VzXHJcbiAgICovXHJcbiAgcHJvY2Vzc0l0ZW1zJDogT2JzZXJ2YWJsZTxQcm9jZXNzW10+ID0gdGhpcy5wcm9jZXNzSXRlbXNTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2FwYWJpbGl0aWVzOiBDYXBhYmlsaXRpZXNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kU2VydmljZSxcclxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGluYm94U2VydmljZTogSW5ib3hTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZSBhbGwgcHJvY2Vzc2VzIG9mIHRoZSBjdXJyZW50IHVzZXIuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gc2l6ZSBNYXhpbXVtIG51bWJlciBvZiBwcm9jZXNzZXMgdG8gYmUgZmV0Y2hlZFxyXG4gICAqIEByZXR1cm5zIExpc3Qgb2YgUHJvY2Vzc2VzXHJcbiAgICovXHJcbiAgZ2V0UHJvY2Vzc2VzKHNpemU6IG51bWJlciA9IDEwMDApOiBPYnNlcnZhYmxlPFByb2Nlc3NbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAuZ2V0SnNvbihgL3Byb2Nlc3MvdXNlcj9zaXplPSR7c2l6ZX1gLCB0aGlzLmJhY2tlbmQuZ2V0QnBtQmFzZSgpKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAocmVzcG9uc2UgPT4gcmVzcG9uc2UuY29udGVudC5tYXAoaXRlbSA9PiBuZXcgUHJvY2VzcyhpdGVtKSkpLFxyXG4gICAgICAgIHRhcCgocHJvY2Vzc2VzOiBQcm9jZXNzW10pID0+IHtcclxuICAgICAgICAgIHRoaXMucHJvY2Vzc0l0ZW1zID0gcHJvY2Vzc2VzO1xyXG4gICAgICAgICAgdGhpcy5wcm9jZXNzSXRlbXNTb3VyY2UubmV4dCh0aGlzLnByb2Nlc3NJdGVtcyk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHRlciBmb3IgdGhlIGV4ZWN1dGFibGUgUHJvY2Vzc2VzLiBJZiB0eXBlcyBhcmUgcHJvdmlkZWQsIHlvdSdsbCBnZXRcclxuICAgKiBvbmx5IHRoZSBwcm9jZXNzZXMgdGhhdCBhcmUgZXhlY3V0YWJsZSBmb3IgYWxsIG9mIHRoZW1cclxuICAgKiBAcGFyYW0gdHlwZXMgTGlzdCBvZiBkbXMgb2JqZWN0IHR5cGVzIHRvIGZldGNoIGV4ZWN1dGFibGUgcHJvY2Vzc2VzIGZvclxyXG4gICAqIEByZXR1cm5zIExpc3Qgb2YgZXhlY3V0YWJsZSBwcm9jZXNzZXNcclxuICAgKi9cclxuICBnZXRFeGVjdXRhYmxlUHJvY2Vzc2VzKHR5cGVzPzogc3RyaW5nW10sIHVzZUNhY2hlZD86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEV4ZWN1dGFibGVQcm9jZXNzW10+IHtcclxuICAgIGlmICh0aGlzLmNhcGFiaWxpdGllcy5oYXNDYXBhYmlsaXR5KCdicG0nKSkge1xyXG4gICAgICByZXR1cm4gKCEhdGhpcy5leGVjdXRhYmxlUHJvY2Vzc2VzICYmIHVzZUNhY2hlZCkgPyBvYnNlcnZhYmxlT2YodGhpcy5leGVjdXRhYmxlUHJvY2Vzc2VzKSA6IHRoaXMuZmV0Y2hFeGVjdXRhYmxlUHJvY2Vzc2VzKHR5cGVzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBvYnNlcnZhYmxlT2YoW10pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyBleGVjdXRhYmxlIFByb2Nlc3NlcyBmb3IgYSBnaXZlbiBzZXQgb2YgZG1zIG9iamVjdC5Zb3UnbGwgZ2V0XHJcbiAgICogb25seSB0aGUgcHJvY2Vzc2VzIHRoYXQgYXJlIGV4ZWN1dGFibGUgZm9yIGFsbCBvZiB0aGVtLlxyXG4gICAqIEBwYXJhbSBkbXNPYmplY3RzIExpc3Qgb2YgZG1zIG9iamVjdHMgdG8gZmV0Y2ggZXhlY3V0YWJsZSBwcm9jZXNzZXMgZm9yXHJcbiAgICogQHJldHVybnMgTGlzdCBvZiBleGVjdXRhYmxlIHByb2Nlc3Nlc1xyXG4gICAqL1xyXG4gIGdldEV4ZWN1dGFibGVQcm9jZXNzZXNGb3JEbXNPYmplY3RzKGRtc09iamVjdHM6IERtc09iamVjdFtdKTogT2JzZXJ2YWJsZTxFeGVjdXRhYmxlUHJvY2Vzc1tdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRFeGVjdXRhYmxlUHJvY2Vzc2VzKGRtc09iamVjdHMubWFwKG8gPT4gby50eXBlTmFtZSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyBleGVjdXRhYmxlIFByb2Nlc3NlcyBmcm9tIHRoZSBiYWNrZW5kLlxyXG4gICAqIEBwYXJhbSB0eXBlcyBMaXN0IG9mIGRtcyBvYmplY3QgdHlwZXMgdG8gZmV0Y2ggZXhlY3V0YWJsZSBwcm9jZXNzZXMgZm9yXHJcbiAgICogQHJldHVybnMgTGlzdCBvZiBleGVjdXRhYmxlIHByb2Nlc3Nlc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgZmV0Y2hFeGVjdXRhYmxlUHJvY2Vzc2VzKHR5cGVzPzogc3RyaW5nW10pOiBPYnNlcnZhYmxlPEV4ZWN1dGFibGVQcm9jZXNzW10+IHtcclxuICAgIGxldCB1cmkgPSAnL2JwbS9wcm9jZXNzL2V4ZWN1dGFibGU/Zm9ybT10cnVlJmZpZWxkcz10cnVlJztcclxuICAgIGlmICh0eXBlcykge1xyXG4gICAgICB1cmkgKz0gYCZ0eXBlPSR7dHlwZXMuam9pbignLCcpfWA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldCh1cmkpLnBpcGUoXHJcbiAgICAgIG1hcChyZXMgPT4gcmVzIGFzIEV4ZWN1dGFibGVQcm9jZXNzW10pLFxyXG4gICAgICB0YXAocmVzID0+IHRoaXMuZXhlY3V0YWJsZVByb2Nlc3NlcyA9IHJlcylcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHRlciBmb3IgYSBwcm9jZXNzZXMgZmlsZS4gVGhlIGZpbGUgb2YgYSBwcm9jZXNzIGNvbnRhaW5zXHJcbiAgICogZG1zIG9iamVjdHMgYXR0YWNoZWQgdG8gdGhlIHByb2Nlc3MuXHJcbiAgICogQHBhcmFtIHByb2Nlc3NJZCBJRCBvZiB0aGUgcHJvY2VzcyB0byBmZXRjaCBhdHRhY2hlZCBvYmplY3RzIGZvclxyXG4gICAqL1xyXG4gIGdldFByb2Nlc3NGaWxlKHByb2Nlc3NJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxGaWxlRW50cnlbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAuZ2V0SnNvbihgL3Byb2Nlc3MvJHtwcm9jZXNzSWR9L2ZpbGVgLCB0aGlzLmJhY2tlbmQuZ2V0QnBtQmFzZSgpKS5waXBlKFxyXG4gICAgICAgIG1hcChyZXMgPT4gcmVzLmNvbnRlbnQubWFwKGkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWQ6IGkuZWxlbWVudGlkLFxyXG4gICAgICAgICAgICB0aXRsZTogaS50aXRsZSxcclxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGkuZGVzY3JpcHRpb24gPyBpLmRlc2NyaXB0aW9uIDogJycsXHJcbiAgICAgICAgICAgIGljb25pZDogaS5pY29uaWQsXHJcbiAgICAgICAgICAgIGNyZWF0b3I6IGkuY3JlYXRvcixcclxuICAgICAgICAgICAgYWRkdGltZTogaS5hZGR0aW1lLFxyXG4gICAgICAgICAgICB0eXBlOiBpLnR5cGVcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSkpXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSB3b3JrIGl0ZW0uXHJcbiAgICogQHBhcmFtIHByb2Nlc3NJZCBJRCBvZiB0aGUgcGFyZW50IHByb2Nlc3NcclxuICAgKiBAcGFyYW0gaXRlbUlkIElEIG9mIHRoZSB3b3JrIGl0ZW0gaXRzZWxmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyB0byBiZSBhZGRlZCB0byB0aGUgYmFja2VuZCBjYWxsXHJcbiAgICogQHJldHVybnMgYSBXb3JrSXRlbVxyXG4gICAqL1xyXG4gIGdldFdvcmtJdGVtKHByb2Nlc3NJZDogc3RyaW5nLCBpdGVtSWQ6IHN0cmluZywgb3B0aW9ucz86IGFueSk6IE9ic2VydmFibGU8V29ya0l0ZW0+IHtcclxuICAgIGNvbnN0IHBhcmFtcyA9IG9wdGlvbnMgPyBvcHRpb25zIDoge2Zvcm06IHRydWUsIGZpZWxkczogdHJ1ZX07XHJcbiAgICBjb25zdCB0YXNrcyA9IFtcclxuICAgICAgdGhpcy5iYWNrZW5kLmdldEpzb24oVXRpbHMuYnVpbGRVcmkoYC9icG0vcHJvY2Vzcy8ke3Byb2Nlc3NJZH0vJHtpdGVtSWR9YCwgcGFyYW1zKSksXHJcbiAgICAgIHRoaXMuZ2V0UHJvY2Vzc0ZpbGUocHJvY2Vzc0lkKVxyXG4gICAgXTtcclxuICAgIHJldHVybiBvYnNlcnZhYmxlRm9ya0pvaW4odGFza3MpLnBpcGUoXHJcbiAgICAgIG1hcChyZXMgPT4ge1xyXG4gICAgICAgIGNvbnN0IHdpID0gbmV3IFdvcmtJdGVtKHJlc1swXSk7XHJcbiAgICAgICAgd2kuc2V0RmlsZShyZXNbMV0pO1xyXG4gICAgICAgIHJldHVybiB3aTtcclxuICAgICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2F2ZXMgYSB3b3JrIGl0ZW0uXHJcbiAgICogQHBhcmFtIGl0ZW0gVGhlIHdvcmsgaXRlbSB0byBiZSBzYXZlZFxyXG4gICAqIEByZXR1cm5zIFRoZSB1cGRhdGVkIFdvcmtJdGVtXHJcbiAgICovXHJcbiAgc2F2ZVdvcmtJdGVtKGl0ZW06IFdvcmtJdGVtKTogT2JzZXJ2YWJsZTxXb3JrSXRlbT4ge1xyXG4gICAgY29uc3Qge2lkLCBwcm9jZXNzSWQsIGZpbGUsIGRhdGF9ID0gaXRlbTtcclxuICAgIGNvbnN0IHBheWxvYWQgPSB7Y29udGVudHM6IGZpbGUsIGRhdGF9O1xyXG4gICAgY29uc3QgcGFyYW1zID0ge2tlZXBsb2NrOiB0cnVlLCBpc2F1dG9sb2NrOiBmYWxzZX07XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAucG9zdChVdGlscy5idWlsZFVyaShgL2JwbS9wcm9jZXNzLyR7cHJvY2Vzc0lkfS8ke2lkfS9zYXZlYCwgcGFyYW1zKSwgcGF5bG9hZClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWVyZ2VNYXAoKCkgPT4gdGhpcy5nZXRXb3JrSXRlbShwcm9jZXNzSWQsIGlkKSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZvcndhcmRzIGEgd29yayBpdGVtLiBJZiBhIFdvcmtJdGVtIHByb3ZpZGVzIGRpZmZlcmVudCBhY3Rpb25zIChAbGluayBXb3JrSXRlbUFjdGlvbilcclxuICAgKiB5b3UgY2FuIHByb3ZpZGUgdGhlIHNlbGVjdGVkIGFjdGlvbiB0b28uXHJcbiAgICogQHBhcmFtIGl0ZW0gVGhlIHdvcmsgaXRlbSB0byBiZSBmb3J3YXJkZWRcclxuICAgKiBAcGFyYW0gYWN0aW9uIEFjdGlvbiB1c2VkIGZvciBmb3J3YXJkaW5nXHJcbiAgICovXHJcbiAgZm9yd2FyZFdvcmtJdGVtKGl0ZW06IFdvcmtJdGVtLCBhY3Rpb24/OiBXb3JrSXRlbUFjdGlvbik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBwYXJhbXMgPSB7a2VlcGxvY2s6IGZhbHNlLCBpc2F1dG9sb2NrOiBmYWxzZX07XHJcbiAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICBhY3Rpb246IGFjdGlvbixcclxuICAgICAgY29udGVudHM6IGl0ZW0uZmlsZSxcclxuICAgICAgZGF0YTogaXRlbS5kYXRhXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAucG9zdChVdGlscy5idWlsZFVyaShgL2JwbS9wcm9jZXNzLyR7aXRlbS5wcm9jZXNzSWR9LyR7aXRlbS5pZH0vc2F2ZWAsIHBhcmFtcyksIHBheWxvYWQpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLmluYm94U2VydmljZS51cGRhdGVJbmJveEl0ZW1zKGl0ZW0uaWQpKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9ja3MgYSBXb3JrSXRlbSBmb3IgdGhlIGN1cnJlbnQgdXNlciAocGVyc29uYWxpemF0aW9uKSwgbWVhbmluZyB0aGF0IHRoZVxyXG4gICAqIGN1cnJlbnQgdXNlciBpcyBub3cgaW4gY2hhcmdlIG9mIGZ1bGZpbGxpbmcgdGhlIFdvcmtJdGVtIHRhc2suXHJcbiAgICogQHBhcmFtIGl0ZW0gVGhlIFdvcmtJdGVtIHRvIGJlIGxvY2tlZFxyXG4gICAqIEByZXR1cm5zIFRoZSB1cGRhdGVkIFdvcmtJdGVtXHJcbiAgICovXHJcbiAgbG9ja1dvcmtJdGVtKGl0ZW06IFdvcmtJdGVtKTogT2JzZXJ2YWJsZTxXb3JrSXRlbT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wdXQoYC9icG0vcHJvY2Vzcy8ke2l0ZW0ucHJvY2Vzc0lkfS8ke2l0ZW0uaWR9L2xvY2tgKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtZXJnZU1hcCgoKSA9PiB0aGlzLmdldFdvcmtJdGVtKGl0ZW0ucHJvY2Vzc0lkLCBpdGVtLmlkKSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbGVhc2VzIHRoZSBsb2NrIGZvciBhIFdvcmtJdGVtLlxyXG4gICAqIEBwYXJhbSBpdGVtIFRoZSB3b3JrIGl0ZW0gdG8gYmUgdW5sb2NrZWRcclxuICAgKiBAcmV0dXJucyBUaGUgdXBkYXRlZCBXb3JrSXRlbVxyXG4gICAqL1xyXG4gIHVubG9ja1dvcmtJdGVtKGl0ZW06IFdvcmtJdGVtKTogT2JzZXJ2YWJsZTxXb3JrSXRlbT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5kZWwoYC9icG0vcHJvY2Vzcy8ke2l0ZW0ucHJvY2Vzc0lkfS8ke2l0ZW0uaWR9L2xvY2tgKS5waXBlKFxyXG4gICAgICBtZXJnZU1hcCgoKSA9PiB0aGlzLmdldFdvcmtJdGVtKGl0ZW0ucHJvY2Vzc0lkLCBpdGVtLmlkKSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTdGFydHMgYW4gZXhlY3V0YWJsZSBwcm9jZXNzLlxyXG4gICAqIEBwYXJhbSBleGVjdXRhYmxlUHJvY2Vzc0lkIElEIG9mIHRoZSBleGVjdXRhYmxlIFByb2Nlc3MgdG8gYmUgc3RhcnRlZFxyXG4gICAqIEBwYXJhbSBkYXRhIERhdGEgdG8gYmUgcGFzc2VkIHRvIHRoZSBwcm9jZXNzIChzaW1wbGUgb2JqZWN0IG9mIGtleS92YWx1ZSBwYWlycylcclxuICAgKiBAcGFyYW0gY29udGVudHMgT2JqZWN0cyB0byBiZSBhdHRhY2hlZCB0byB0aGUgcHJvY2VzcyAocHJvY2Vzcy5maWxlKS5cclxuICAgKi9cclxuICBzdGFydFByb2Nlc3MoZXhlY3V0YWJsZVByb2Nlc3NJZDogc3RyaW5nLCBkYXRhOiBhbnksIGNvbnRlbnRzOiB7aWQ6IHN0cmluZywgdHlwZTogc3RyaW5nfVtdKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQucG9zdChgL2JwbS9wcm9jZXNzLz9tb2RlbGlkPSR7ZXhlY3V0YWJsZVByb2Nlc3NJZH1gLCB7XHJcbiAgICAgIGRhdGE6IGRhdGEsXHJcbiAgICAgIGNvbnRlbnRzOiBjb250ZW50c1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBoaXN0b3J5IGZvciBhIHByb2Nlc3MuIFdoaWNoIGVudHJpZXMgYXJlIHJldHVybmVkIGRlcGVuZHMgb24gdGhlXHJcbiAgICogcGVybWlzc2lvbnMgb2YgdGhlIGN1cnJlbnQgdXNlci5cclxuICAgKiBAcGFyYW0gcHJvY2Vzc0lkIFRoZSBJRCBvZiB0aGUgcHJvY2VzcyB0byBmZXRjaCBoaXN0b3J5IGZvclxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8V29ya0l0ZW1IaXN0b3J5RW50cnlbXT5cclxuICAgKi9cclxuICBnZXRQcm9jZXNzSGlzdG9yeShwcm9jZXNzSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8V29ya0l0ZW1IaXN0b3J5RW50cnlbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAuZ2V0SnNvbihgL2JwbS9wcm9jZXNzLyR7cHJvY2Vzc0lkfS9oaXN0b3J5YClcclxuICAgICAgLnBpcGUobWFwKHJlcyA9PiByZXMgJiYgcmVzLmxlbmd0aCA/IHJlcy5tYXAoaXRlbSA9PiBuZXcgV29ya0l0ZW1IaXN0b3J5RW50cnkoaXRlbSkpIDogW10pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZXMgYSBjb250ZW50IGZyb20gdGhlIHdvcmsgaXRlbXMgZmlsZS5cclxuICAgKiBAcGFyYW0gcHJvY2Vzc0lkIFRoZSBJRCBvZiB0aGUgcHJvY2VzcyB0byByZW1vdmUgdGhlIGl0ZW0gZnJvbVxyXG4gICAqIEBwYXJhbSB3b3JrSXRlbUlkIFRoZSBJRCBvZiB0aGUgd29yayBpdGVtIGNvbnRhaW5pbmcgdGhlIGZpbGUgZWxlbWVudCB0byBiZSByZW1vdmVkXHJcbiAgICogQHBhcmFtIHdvcmtJdGVtQ29udGVudElkIFRoZSB0aGUgSUQgb2YgdGhlIGZpbGUgZWxlbWVudCB0byBiZSByZW1vdmVkXHJcbiAgICovXHJcbiAgcmVtb3ZlRmlsZUVsZW1lbnQocHJvY2Vzc0lkOiBzdHJpbmcsIHdvcmtJdGVtSWQ6IHN0cmluZywgd29ya0l0ZW1Db250ZW50SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5kZWwoYC9wcm9jZXNzLyR7cHJvY2Vzc0lkfS9maWxlLyR7d29ya0l0ZW1Db250ZW50SWR9P2FjdGl2aXR5aWQ9JHt3b3JrSXRlbUlkfWAsIHRoaXMuYmFja2VuZC5nZXRCcG1CYXNlKCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIGNvbnRlbnRzIHRvIGEgd29yayBpdGVtcyBmaWxlLlxyXG4gICAqIEBwYXJhbSBwcm9jZXNzSWQgVGhlIElEIG9mIHRoZSBwcm9jZXNzXHJcbiAgICogQHBhcmFtIHdvcmtJdGVtSWQgVGhlIElEIG9mIHRoZSBhY3Rpdml0eVxyXG4gICAqIEBwYXJhbSBlbGVtZW50cyBUaGUgRWxlbWVudHMgdG8gYmUgYWRkZWRcclxuICAgKiBAcmV0dXJucyBUaGUgdXBkYXRlZCBXb3JrSXRlbVxyXG4gICAqL1xyXG4gIGFkZEZpbGVFbGVtZW50cyhwcm9jZXNzSWQ6IHN0cmluZywgd29ya0l0ZW1JZDogc3RyaW5nLCBlbGVtZW50czogRG1zT2JqZWN0W10pOiBPYnNlcnZhYmxlPFdvcmtJdGVtPiB7XHJcbiAgICBjb25zdCB0YXNrcyA9IFtdO1xyXG4gICAgZWxlbWVudHMuZm9yRWFjaCgoZSkgPT4ge1xyXG4gICAgICB0YXNrcy5wdXNoKHRoaXMuYmFja2VuZC5wb3N0KFxyXG4gICAgICAgIGAvcHJvY2Vzcy8ke3Byb2Nlc3NJZH0vZmlsZS8ke2UuaWR9P3R5cGU9JHtlLnR5cGUubmFtZX0mYWN0aXZpdHlpZD0ke3dvcmtJdGVtSWR9YCxcclxuICAgICAgICB7fSwgdGhpcy5iYWNrZW5kLmdldEJwbUJhc2UoKSkpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gb2JzZXJ2YWJsZUZvcmtKb2luKHRhc2tzKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtZXJnZU1hcCgoKSA9PiB0aGlzLmdldFdvcmtJdGVtKHByb2Nlc3NJZCwgd29ya0l0ZW1JZCkpXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGQgYSBvYmplY3RzIGZyb20gdGhlIGNsaXBib2FyZCB0byBhIFdvcmtJdGVtLlxyXG4gICAqIEBwYXJhbSB3b3JrSXRlbSBUaGUgd29ya0l0ZW0gdG8gYWRkIHRoZSBvYmplY3RzIHRvXHJcbiAgICogQHBhcmFtIGNsaXBib2FyZCBDbGlwYm9hcmQgb2JqZWN0IGhvbGRpbmcgdXNlciBzZWxlY3RlZCBvYmplY3RzXHJcbiAgICogQHJldHVybnMgVGhlIHVwZGF0ZWQgV29ya0l0ZW1cclxuICAgKi9cclxuICBhZGRGaWxlRWxlbWVudHNGcm9tQ2xpcGJvYXJkKHdvcmtJdGVtOiBXb3JrSXRlbSwgY2xpcGJvYXJkOiBDbGlwYm9hcmQpOiBPYnNlcnZhYmxlPFdvcmtJdGVtPiB7XHJcbiAgICBpZiAoKHdvcmtJdGVtICYmIHdvcmtJdGVtLmZpbGVFbnRyeVBlcm1pc3Npb25zLmFkZCkgJiYgY2xpcGJvYXJkICYmIGNsaXBib2FyZC5lbGVtZW50cy5sZW5ndGggJiYgY2xpcGJvYXJkLmFjdGlvbiA9PT0gQ2xpcGJvYXJkQWN0aW9uLkNPUFkpIHtcclxuICAgICAgbGV0IGNvbnRlbnRzOiBEbXNPYmplY3RbXTtcclxuICAgICAgaWYgKHdvcmtJdGVtLmZpbGUubGVuZ3RoKSB7XHJcbiAgICAgICAgLy8gb25seSBhZGQgaXRlbXMgdGhhdCBhcmUgbm90IGFscmVhZHkgcGFydCBvZiB0aGUgYXR0YWNobWVudHNcclxuICAgICAgICBjb25zdCBhdHRhY2htZW50SWRzID0gd29ya0l0ZW0uZmlsZS5tYXAoZSA9PiBlLmlkKTtcclxuICAgICAgICBjb250ZW50cyA9IGNsaXBib2FyZC5lbGVtZW50cy5maWx0ZXIoZSA9PiBhdHRhY2htZW50SWRzLmluZGV4T2YoZS5pZCkgPT09IC0xKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb250ZW50cyA9IGNsaXBib2FyZC5lbGVtZW50cztcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdGhpcy5hZGRGaWxlRWxlbWVudHMod29ya0l0ZW0ucHJvY2Vzc0lkLCB3b3JrSXRlbS5pZCwgY29udGVudHMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKCdlcnJvcicpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -250,7 +250,7 @@ export class SystemService {
250
250
  */
251
251
  fetchSystemDefinition(user) {
252
252
  const fetches = [
253
- this.backend.getJson('/system/type/list?elements=true'),
253
+ this.backend.getJson('/system/type/list?elements=true&basetypes=true'),
254
254
  this.backend.getJson('/system/cs/list?elements=true')
255
255
  ];
256
256
  return observableForkJoin(fetches)
@@ -346,4 +346,4 @@ SystemService.ctorParameters = () => [
346
346
  { type: EventService },
347
347
  { type: AppCacheService }
348
348
  ];
349
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2Uvc3lzdGVtL3N5c3RlbS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLElBQUksa0JBQWtCLEVBQUUsRUFBRSxFQUFjLGFBQWEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVuRixPQUFPLEVBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0QsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN4QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFFekQsT0FBTyxLQUFLLGNBQWMsTUFBTSxRQUFRLENBQUM7QUFDekMsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBRXZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFNUM7O0dBRUc7QUFDSCxNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUM7QUFFOUI7O0dBRUc7QUFFSCxNQUFNLE9BQU8sYUFBYTtJQVd4QixZQUFvQixPQUF1QixFQUN2QixNQUFjLEVBQ2QsWUFBMEIsRUFDMUIsUUFBeUI7UUFIekIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFD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R0FBRyxLQUFrQixDQUFDLENBQUMsQ0FDdEQsQ0FBQztTQUNMO0lBQ0gsQ0FBQzs7O1lBdFdGLFVBQVU7OztZQXJCSCxjQUFjO1lBRWQsTUFBTTtZQVFOLFlBQVk7WUFUWixlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtmb3JrSm9pbiBhcyBvYnNlcnZhYmxlRm9ya0pvaW4sIG9mLCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0fSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7Y2F0Y2hFcnJvciwgdGFwLCBtYXAsIHN3aXRjaE1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0lPcmdhbml6YXRpb25PYmplY3RzfSBmcm9tICcuLi8uLi9pbnRlcmZhY2Uvb3JnYW5pemF0aW9uLW9iamVjdHMuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtCYWNrZW5kU2VydmljZX0gZnJvbSAnLi4vYmFja2VuZC9iYWNrZW5kLnNlcnZpY2UnO1xyXG5pbXBvcnQge0FwcENhY2hlU2VydmljZX0gZnJvbSAnLi4vY2FjaGUvYXBwLWNhY2hlLnNlcnZpY2UnO1xyXG5pbXBvcnQge0xvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL2xvZ2dlcic7XHJcbmltcG9ydCB7T2JqZWN0VHlwZX0gZnJvbSAnLi4vLi4vbW9kZWwvb2JqZWN0LXR5cGUubW9kZWwnO1xyXG5pbXBvcnQge0VvVXNlcn0gZnJvbSAnLi4vLi4vbW9kZWwvZW8tdXNlci5tb2RlbCc7XHJcbmltcG9ydCAqIGFzIG1vbWVudEltcG9ydGVkIGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHtPcmdSb2xlfSBmcm9tICcuLi8uLi9tb2RlbC9vcmcubW9kZWwnO1xyXG5pbXBvcnQge1V0aWxzfSBmcm9tICcuLi8uLi91dGlsL3V0aWxzJztcclxuaW1wb3J0IHtJQ29kZVN5c3RlbX0gZnJvbSAnLi9zeXN0ZW1kZWZpbml0aW9uLmludGVyZmFjZSc7XHJcbmltcG9ydCB7RXZlbnRTZXJ2aWNlfSBmcm9tICcuLi9ldmVudHMvZXZlbnQuc2VydmljZSc7XHJcbmltcG9ydCB7RW5haW9FdmVudH0gZnJvbSAnLi4vZXZlbnRzL2V2ZW50cyc7XHJcblxyXG4vKipcclxuICogQGlnbm9yZVxyXG4gKi9cclxuY29uc3QgbW9tZW50ID0gbW9tZW50SW1wb3J0ZWQ7XHJcblxyXG4vKipcclxuICogQ29sbGVjdGlvbiBvZiBTeXN0ZW0gU2VydmljZXNcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFN5c3RlbVNlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIF9zeXN0ZW07XHJcbiAgcHJpdmF0ZSBzeXN0ZW1Tb3VyY2UgPSBuZXcgUmVwbGF5U3ViamVjdDxhbnk+KCk7XHJcbiAgcHVibGljIHN5c3RlbSQ6IE9ic2VydmFibGU8YW55PiA9IHRoaXMuc3lzdGVtU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAvLyBzZXNzaW9uIGNhY2hlIGZvciBvYmplY3QgdHlwZSBmb3Jtc1xyXG4gIHByaXZhdGUgb2JqZWN0VHlwZUZvcm1zOiBhbnlbXSA9IFtdO1xyXG4gIHByaXZhdGUgdXNlcjogRW9Vc2VyO1xyXG4gIHByaXZhdGUgY2FjaGVkUm9sZXM6IE9yZ1JvbGVbXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmRTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXIsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGFwcENhY2hlOiBBcHBDYWNoZVNlcnZpY2UpIHtcclxuICAgIHRoaXMuZXZlbnRTZXJ2aWNlLm9uKEVuYWlvRXZlbnQuU1lTVEVNX1NUQVRVU19TQ0hFTUFfQ0hBTkdFRCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5mZXRjaFN5c3RlbURlZmluaXRpb24odGhpcy51c2VyKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBzZXQgc3lzdGVtKHMpe1xyXG4gICAgdGhpcy5fc3lzdGVtID0gcztcclxuICB9XHJcblxyXG4gIGdldCBzeXN0ZW0oKXtcclxuICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuX3N5c3RlbSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyBhbGwgT2JqZWN0VHlwZXNcclxuICAgKlxyXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IGNvbnRhaW5pbmcgYWxsIG9iamVjdCB0eXBlc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRPYmplY3RUeXBlcygpOiBPYmplY3RUeXBlW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuc3lzdGVtLnR5cGVzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyBhbiBPYmplY3RUeXBlIGJ5IG5hbWUuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gb2JqZWN0VHlwZU5hbWUgVGhlIG5hbWUgb2YgdGhlIG9iamVjdCB0eXBlXHJcbiAgICogQHJldHVybnMgdGhlIE9iamVjdFR5cGUgbWF0Y2hpbmcgdGhlIGdpdmVuIG5hbWVcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0T2JqZWN0VHlwZShvYmplY3RUeXBlTmFtZTogc3RyaW5nKTogT2JqZWN0VHlwZSB7XHJcbiAgICByZXR1cm4gdGhpcy5zeXN0ZW0udHlwZXMuZmluZCh0ID0+IHQubmFtZSA9PT0gb2JqZWN0VHlwZU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGZvcm0gZWxlbWVudHMgZnJvbSBmb3JtIG1vZGVsLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgaGF2ZSB0byBmZXRjaCB0aGVtXHJcbiAgICogZm9yIGEgc3BlY2lhbCBzaXR1YXRpb24gbGlrZSBTRUFSQ0hcclxuICAgKiBAcGFyYW0gb2JqZWN0VHlwZU5hbWUgT2JqZWN0VHlwZSB0byBmZXRjaCBlbGVtZW50cyBmb3JcclxuICAgKiBAcGFyYW0gc2l0dWF0aW9uIEZvcm0gbW9kZWwgc2l0dWF0aW9uIHRvIGJlIGZldGNoZWRcclxuICAgKiBAcGFyYW0gaXNDb250ZXh0VHlwZSBGbGFnIGluZGljYXRpbmcgdGhhdCB0aGUgZm9ybSBtb2RlbCBzaG91bGQgYmUgZmV0Y2hlZCBmb3IgYSBjb250ZXh0IG1vZGVcclxuICAgKi9cclxuICBnZXRGb3JtRWxlbWVudHNGcm9tRm9ybU1vZGVsKG9iamVjdFR5cGVOYW1lOiBzdHJpbmcsIHNpdHVhdGlvbjogc3RyaW5nLCBpc0NvbnRleHRUeXBlPzogYm9vbGVhbik6IE9ic2VydmFibGU8YW55W10+IHtcclxuICAgIHJldHVybiB0aGlzLmdldE9iamVjdFR5cGVGb3JtKG9iamVjdFR5cGVOYW1lLCBzaXR1YXRpb24sIGlzQ29udGV4dFR5cGUgPyAnQ09OVEVYVCcgOiBudWxsKS5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAobW9kZWwgPT4ge1xyXG4gICAgICAgIGNvbnN0IGVsZW1lbnRzID0gW107XHJcbiAgICAgICAgdGhpcy5wcm9jZXNzRm9ybU1vZGVsRWxlbWVudHMobW9kZWwsIGVsZW1lbnRzKTtcclxuICAgICAgICByZXR1cm4gb2YoZWxlbWVudHMpO1xyXG4gICAgfSkpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByb2Nlc3NGb3JtTW9kZWxFbGVtZW50cyhtb2RlbDogYW55LCBlbGVtZW50czogYW55W10pIHtcclxuICAgIG1vZGVsLmVsZW1lbnRzLmZvckVhY2goZSA9PiB7XHJcbiAgICAgIGlmKGUudHlwZSAhPT0gXCJvMm1Hcm91cFwiICYmIGUudHlwZSAhPT0gXCJvMm1Hcm91cFN0YWNrXCIpIHtcclxuICAgICAgICBlbGVtZW50cy5wdXNoKGUpO1xyXG4gICAgICB9IGVsc2UgaWYoZS5lbGVtZW50cyAmJiBlLmVsZW1lbnRzLmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMucHJvY2Vzc0Zvcm1Nb2RlbEVsZW1lbnRzKGUsIGVsZW1lbnRzKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrcyB3aGV0aGVyIG9yIG5vdCB0aGUgZ2l2ZW4gdHlwZSBpbXBsZW1lbnRzIGEgZ2l2ZW4gc3VwZXJ0eXBlXHJcbiAgICogQHBhcmFtIHR5cGUgVHlwZSB0byBiZSBjaGVja2VkXHJcbiAgICogQHBhcmFtIHN1cGVyVHlwZU5hbWUgTmFtZSBvZiB0aGUgc3VwZXJ0eXBlXHJcbiAgICovXHJcbiAgcHVibGljIGltcGxlbWVudHNUeXBlKHR5cGU6IE9iamVjdFR5cGUsIHN1cGVyVHlwZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHR5cGUubmFtZSA9PT0gc3VwZXJUeXBlTmFtZSB8fCAodHlwZS5pbXBsZW1lbnRzICYmIHR5cGUuaW1wbGVtZW50cy5pbmRleE9mKHN1cGVyVHlwZU5hbWUpICE9PSAtMSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIGEgY29kZXN5c3RlbVxyXG4gICAqXHJcbiAgICogQHBhcmFtIGlkIFRoZSBjb2Rlc3lzdGVtcyBpZFxyXG4gICAqIEByZXR1cm5zIFRoZSBjb2Rlc3lzdGVtIG9iamVjdCBtYXRjaGluZyB0aGUgZ2l2ZW4gaWRcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0Q29kZXN5c3RlbShpZDogc3RyaW5nKTogSUNvZGVTeXN0ZW0ge1xyXG4gICAgcmV0dXJuIHRoaXMuc3lzdGVtLmNvZGVzeXN0ZW1zLmZpbmQodCA9PiB0LmlkID09PSBpZCB8fCB0Lm5hbWUgPT09IGlkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgZm9ybSBtb2RlbCBvZiBhbiBvYmplY3QgdHlwZS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBvYmplY3RUeXBlTmFtZSBUaGUgb2JqZWN0IHR5cGUgbmFtZVxyXG4gICAqIEBwYXJhbSBzaXR1YXRpb24gVGhlIGZvcm0gc2l0dWF0aW9uIHRvIGJlIGZldGNoZWRcclxuICAgKiBAcGFyYW0gbW9kZSBGb3JtIG1vZGUgdG8gZmV0Y2ggKGUuZy4gQ09OVEVYVClcclxuICAgKiBAcmV0dXJucyBUaGUgb2JqZWN0IHR5cGUgZm9ybSBtb2RlbFxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRPYmplY3RUeXBlRm9ybShvYmplY3RUeXBlTmFtZTogc3RyaW5nLCBzaXR1YXRpb246IHN0cmluZywgbW9kZT86IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcblxyXG4gICAgLyoqIGNoZWNrIGlmIHdlIGhhdmUgYSBjYWNoZWQgZm9ybSBmaXJzdCAqL1xyXG4gICAgbGV0IGNhY2hlZEZvcm07XHJcblxyXG4gICAgbGV0IGkgPSAwO1xyXG4gICAgd2hpbGUgKCFjYWNoZWRGb3JtICYmIGkgPCB0aGlzLm9iamVjdFR5cGVGb3Jtcy5sZW5ndGgpIHtcclxuICAgICAgaWYgKHRoaXMub2JqZWN0VHlwZUZvcm1zW2ldLm5hbWUgPT09IG9iamVjdFR5cGVOYW1lICYmXHJcbiAgICAgICAgdGhpcy5vYmplY3RUeXBlRm9ybXNbaV0ubW9kZSA9PT0gbW9kZSAmJlxyXG4gICAgICAgIHRoaXMub2JqZWN0VHlwZUZvcm1zW2ldLnNpdHVhdGlvbiA9PT0gc2l0dWF0aW9uKSB7XHJcbiAgICAgICAgY2FjaGVkRm9ybSA9IHRoaXMub2JqZWN0VHlwZUZvcm1zW2ldO1xyXG4gICAgICB9XHJcbiAgICAgIGkrKztcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2FjaGVkRm9ybSkge1xyXG4gICAgICAvKiogcmV0dXJuIGEgY2xvbmUgb2YgdGhlIGNhY2hlZCBtb2RlbCBhcyBvdGhlcndpc2UgbW9kZWwgY2hhbmdlcyB3aWxsIGJlIGFkZGVkIHRvIHRoZSBjaGFjaGVkIG1vZGVsICovXHJcbiAgICAgIHJldHVybiBvZihfLmNsb25lRGVlcChjYWNoZWRGb3JtKSk7XHJcbiAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgbGV0IHVyaSA9IGAvdWkvZm9ybS8ke29iamVjdFR5cGVOYW1lfT9zaXR1YXRpb249JHtzaXR1YXRpb259YDtcclxuICAgICAgdXJpICs9ICEhbW9kZSA/IGAmZm9ybW1vZGU9JHttb2RlfWAgOiAnJztcclxuXHJcbiAgICAgIC8qKiBmZXRjaCBhbmQgY2FjaGUgdGhlIHJlcXVlc3RlZCBmb3JtLCBpZiBubyBjYWNoZWQgdmVyc2lvbiB3YXMgZm91bmQgKi9cclxuICAgICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXRWaWFUZW1wQ2FjaGUodXJpLCAoKSA9PiB0aGlzLmJhY2tlbmRcclxuICAgICAgICAuZ2V0SnNvbih1cmkpXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICB0YXAoKG1vZGVsKSA9PiB0aGlzLm9iamVjdFR5cGVGb3Jtcy5wdXNoKF8uY2xvbmVEZWVwKG1vZGVsKSkpXHJcbiAgICAgICAgKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIHRoZSBiYWNrZW5kcyBzeXN0ZW0gZGVmaW5pdGlvbiBhbmQgdXBkYXRlcyBzeXN0ZW0kIE9ic2VydmFibGUuXHJcbiAgICogU3Vic2NyaWJlIHRvIHRoZSBzeXN0ZW0kIG9ic2VydmFibGUgaW5zdGVhZCBvZiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24sIG90aGVyd2lzZSB5b3UnbGwgdHJpZ2dlciBmZXRjaGluZyB0aGVcclxuICAgKiBzeXN0ZW0gZGVmaW5pdGlvbiBldmVyeSB0aW1lLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHVzZXIgVGhlIHVzZXIgdG8gbG9hZCB0aGUgc3lzdGVtIGRlZmluaXRpb24gZm9yXHJcbiAgICogQHJldHVybnMgdHJ1ZSB3aGVuIHN1Y2Nlc3NmdWxsXHJcbiAgICovXHJcbiAgcHVibGljIGdldFN5c3RlbURlZmluaXRpb24odXNlcjogRW9Vc2VyKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcblxyXG4gICAgdGhpcy51c2VyID0gdXNlcjtcclxuICAgIC8vIHRvZG86IHRlbXBvcmFyeTogT3JnQ2hhbmdlcyBjb3VsZCBub3QgYmUgcmVjb2duaXplZCBidXQgYWZmZWN0IG9iamVjdCBkZWZpbml0aW9uXHJcbiAgICByZXR1cm4gdGhpcy5mZXRjaFN5c3RlbURlZmluaXRpb24odXNlcik7XHJcblxyXG4gICAgLy8gdG9kbzogZW5hYmxlIGFnYWluIHdoZW4gT3JnQ2hhbmdlcyBhcmUgcmVjb2duaXphYmxlIChETyBOT1QgREVMRVRFISlcclxuICAgIC8vIC8vIGlzIHRoZXJlIGEgY2FjaGVkIHZlcnNpb25cclxuICAgIC8vIHJldHVybiB0aGlzLmFwcENhY2hlXHJcbiAgICAvLyAgIC5nZXRJdGVtKHRoaXMuYXBwQ2FjaGUuU1lTVEVNX0RFRklOSVRJT04pXHJcbiAgICAvLyAgIC5jYXRjaCgoZXJyb3IpID0+IHtcclxuICAgIC8vICAgICB0aGlzLmxvZ2dlci5lcnJvcignRXJyb3IgZmV0Y2hpbmcgY2FjaGVkIHZlcnNpb24gb2Ygc3lzdGVtIGRlZmluaXRpb24uJywgZXJyb3IpO1xyXG4gICAgLy8gICAgIHJldHVybiB0aGlzLmZldGNoU3lzdGVtRGVmaW5pdGlvbih1c2VyKTtcclxuICAgIC8vICAgfSlcclxuICAgIC8vICAgLmZsYXRNYXAoKGNhY2hlZFN5c3RlbURlZmluaXRpb246IGFueSkgPT4ge1xyXG4gICAgLy9cclxuICAgIC8vICAgICAvLyB5ZXM/IHRoZW4gY2hlY2sgaWYgaXQncyB1cCB0byBkYXRlXHJcbiAgICAvLyAgICAgaWYgKGNhY2hlZFN5c3RlbURlZmluaXRpb24pIHtcclxuICAgIC8vXHJcbiAgICAvLyAgICAgICBpZiAoXHJcbiAgICAvLyAgICAgICAgIHVzZXIuc2NoZW1hLnZlcnNpb24gIT09IGNhY2hlZFN5c3RlbURlZmluaXRpb24uaW5mby52ZXJzaW9uIHx8XHJcbiAgICAvLyAgICAgICAgIHVzZXIuaWQgIT09IGNhY2hlZFN5c3RlbURlZmluaXRpb24uaW5mby51c2VyIHx8XHJcbiAgICAvLyAgICAgICAgIHVzZXIuZ2V0U2NoZW1hTG9jYWxlKCkgIT09IGNhY2hlZFN5c3RlbURlZmluaXRpb24uaW5mby5sb2NhbGVcclxuICAgIC8vICAgICAgICkge1xyXG4gICAgLy8gICAgICAgICByZXR1cm4gdGhpcy5mZXRjaFN5c3RlbURlZmluaXRpb24odXNlcik7XHJcbiAgICAvLyAgICAgICB9IGVsc2Uge1xyXG4gICAgLy8gICAgICAgICAvLyBjYWNoZSBpcyB1cCB0byBkYXRlLiByZXR1cm4gdGhlIGNhY2hlZCBvbmVcclxuICAgIC8vICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ1N5c3RlbSBkZWZpbml0aW9uIGlzIHVwIHRvIGRhdGUsIHVzaW5nIGNhY2hlZCB2ZXJzaW9uLicsIGNhY2hlZFN5c3RlbURlZmluaXRpb24pO1xyXG4gICAgLy8gICAgICAgICB0aGlzLnN5c3RlbSA9IGNhY2hlZFN5c3RlbURlZmluaXRpb247XHJcbiAgICAvLyAgICAgICAgIHRoaXMuc3lzdGVtU291cmNlLm5leHQodGhpcy5zeXN0ZW0pO1xyXG4gICAgLy8gICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XHJcbiAgICAvLyAgICAgICB9XHJcbiAgICAvLyAgICAgfSBlbHNlIHtcclxuICAgIC8vICAgICAgIC8vIG5vIGNhY2hlZCBzeXN0ZW1EZWZpbml0aW9uIGZvdW5kXHJcbiAgICAvLyAgICAgICByZXR1cm4gdGhpcy5mZXRjaFN5c3RlbURlZmluaXRpb24odXNlcik7XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSB2YWx1ZSBkZXBlbmRpbmcgb24gYSBnaXZlbiBUeXBlXHJcbiAgICpcclxuICAgKiBAcGFyYW0gc3RyaW5nIHZhbHVlVHlwZVxyXG4gICAqIEByZXR1cm5zIGFueVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXREZWZhdWx0VmFsdWUodmFsdWVUeXBlOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgbGV0IGRlZmF1bHRWYWx1ZTtcclxuICAgIHN3aXRjaCAodmFsdWVUeXBlKSB7XHJcbiAgICAgIGNhc2UgJ0NVUlJFTlRfVVNFUic6IHtcclxuICAgICAgICBkZWZhdWx0VmFsdWUgPSB0aGlzLnVzZXIubmFtZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdDVVJSRU5UX1VTRVJfTkFNRSc6IHtcclxuICAgICAgICBkZWZhdWx0VmFsdWUgPSB0aGlzLnVzZXIudGl0bGU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnQ1VSUkVOVF9EQVRFVElNRSc6IHtcclxuICAgICAgICBkZWZhdWx0VmFsdWUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0NVUlJFTlRfREFURSc6IHtcclxuICAgICAgICBkZWZhdWx0VmFsdWUgPSBtb21lbnQoKS5zdGFydE9mKCdkYXknKS50b0RhdGUoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdZRUFSJzoge1xyXG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IG1vbWVudCgpLnllYXIoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdNT05USCc6IHtcclxuICAgICAgICBkZWZhdWx0VmFsdWUgPSBtb21lbnQoKS5tb250aCgpICsgMTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdEQVknOiB7XHJcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gbW9tZW50KCkuZGF0ZSgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0hPVVInOiB7XHJcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gbW9tZW50KCkuaG91cigpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ01JTlVURSc6IHtcclxuICAgICAgICBkZWZhdWx0VmFsdWUgPSBtb21lbnQoKS5taW51dGUoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdTRUNPTkQnOiB7XHJcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gbW9tZW50KCkuc2Vjb25kKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnV0VFS19PRl9ZRUFSJzoge1xyXG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IG1vbWVudCgpLmlzb1dlZWsoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdGSVJTVF9EQVlfT0ZfV0VFSyc6IHtcclxuICAgICAgICBkZWZhdWx0VmFsdWUgPSBtb21lbnQoKS5zdGFydE9mKCdpc29XZWVrJykudG9EYXRlKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnRklSU1RfREFZX09GX01PTlRIJzoge1xyXG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IG1vbWVudCgpLnN0YXJ0T2YoJ21vbnRoJykudG9EYXRlKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnRklSU1RfREFZX09GX1lFQVInOiB7XHJcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gbW9tZW50KCkuc3RhcnRPZigneWVhcicpLnRvRGF0ZSgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgdGhlIHN5c3RlbSBkZWZpbml0aW9uIGZyb20gdGhlIHNlcnZlci4gUHJvdmlkZWQgcGFyYW1zIGFyZSB1c2VkIGZvciBzdG9yaW5nIHRoZVxyXG4gICAqIHJlY2VudCB2ZXJzaW9uIGluIGNhY2hlLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHVzZXIgVGhlIHVzZXIgdG8gZmV0Y2ggdGhlIHN5c3RlbSBkZWZpbml0aW9uIGZvclxyXG4gICAqIEByZXR1cm4gYm9vbGVhblxyXG4gICAqL1xyXG4gIGZldGNoU3lzdGVtRGVmaW5pdGlvbih1c2VyOiBFb1VzZXIpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuXHJcbiAgICBjb25zdCBmZXRjaGVzID0gW1xyXG4gICAgICB0aGlzLmJhY2tlbmQuZ2V0SnNvbignL3N5c3RlbS90eXBlL2xpc3Q/ZWxlbWVudHM9dHJ1ZScpLFxyXG4gICAgICB0aGlzLmJhY2tlbmQuZ2V0SnNvbignL3N5c3RlbS9jcy9saXN0P2VsZW1lbnRzPXRydWUnKVxyXG4gICAgXTtcclxuXHJcbiAgICByZXR1cm4gb2JzZXJ2YWJsZUZvcmtKb2luKGZldGNoZXMpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGNhdGNoRXJyb3IoVXRpbHMuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignRXJyb3IgZmV0Y2hpbmcgcmVjZW50IHZlcnNpb24gb2Ygc3lzdGVtIGRlZmluaXRpb24gZnJvbSBzZXJ2ZXIuJywgZXJyb3IpO1xyXG4gICAgICAgICAgdGhpcy5zeXN0ZW1Tb3VyY2UuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIHJlY2VudCB2ZXJzaW9uIG9mIHN5c3RlbSBkZWZpbml0aW9uIGZyb20gc2VydmVyLicpO1xyXG4gICAgICAgIH0pKSxcclxuICAgICAgICBtYXAoKGRhdGEpID0+IHtcclxuXHJcbiAgICAgICAgICB0aGlzLm9iamVjdFR5cGVGb3JtcyA9IFtdO1xyXG4gICAgICAgICAgY29uc3Qgc3lzdGVtID0ge1xyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICogaW5mbyBhYm91dCB0aGUgY3VycmVudCBzeXN0ZW0gZGVmaW5pdGlvblxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgaW5mbzoge1xyXG4gICAgICAgICAgICAgIHVzZXI6IHVzZXIuaWQsXHJcbiAgICAgICAgICAgICAgbG9jYWxlOiB1c2VyLmdldFNjaGVtYUxvY2FsZSgpLFxyXG4gICAgICAgICAgICAgIHZlcnNpb246IHVzZXIuc2NoZW1hLnZlcnNpb25cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIHN1cHBvcnRlZCBiYWNrZW5kIGxvY2FsZXNcclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIGxvY2FsZXM6IHVzZXIuc2NoZW1hLnN1cHBvcnRlZExvY2FsZXMsXHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiBvYmplY3QgdHlwZSBkZWZpbml0aW9uc1xyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgdHlwZXM6IFtdLFxyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICogY29kZXN5c3RlbXMgY2FjaGVcclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIGNvZGVzeXN0ZW1zOiBbXVxyXG4gICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICBjb25zdCB0eXBlcyA9IGRhdGFbMF07XHJcbiAgICAgICAgICBzeXN0ZW0udHlwZXMgPSB0eXBlcy5tYXAodCA9PiBuZXcgT2JqZWN0VHlwZSh0KSk7XHJcbiAgICAgICAgICBzeXN0ZW0uY29kZXN5c3RlbXMgPSBkYXRhWzFdO1xyXG5cclxuICAgICAgICAgIHRoaXMuc3lzdGVtID0gc3lzdGVtO1xyXG4gICAgICAgICAgdGhpcy5zeXN0ZW1Tb3VyY2UubmV4dChzeXN0ZW0pO1xyXG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ0ZldGNoZWQgbmV3IHZlcnNpb24gb2Ygc3lzdGVtIGRlZmluaXRpb24gKHVzZXI6ICcgKyB1c2VyLmlkICsgJywgdmVyc2lvbjogJyArIHVzZXIuc2NoZW1hLnZlcnNpb24gKyAnKS4nKTtcclxuICAgICAgICAgIHRoaXMuYXBwQ2FjaGVcclxuICAgICAgICAgICAgLnNldEl0ZW0odGhpcy5hcHBDYWNoZS5TWVNURU1fREVGSU5JVElPTiwgc3lzdGVtKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnQ2FjaGVkIHJlY2VudCB2ZXJzaW9uJyk7XHJcbiAgICAgICAgICAgIH0sIFV0aWxzLmxvZ0Vycm9yKG51bGwsICdFcnJvciBjYWNoaW5nIHJlY2VudCB2ZXJzaW9uIG9mIHN5c3RlbSBkZWZpbml0aW9uLicpKTtcclxuXHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9KSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZSBhbiBvcmdhbml6YXRpb24gb2JqZWN0IGJ5IGl0cyBJRFxyXG4gICAqIEBwYXJhbSBpZCBJRCBvZiBvcmcgb2JqZWN0XHJcbiAgICovXHJcbiAgZ2V0T3JnYW5pemF0aW9uT2JqZWN0QnlJZChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZ2V0SnNvbihgL29yZ2FuaXphdGlvbi9pZC8ke2lkfWApXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIHRoZSBvcmdhbml6YXRpb24gb2JqZWN0IGZvciBhIGdpdmVuIG5hbWUuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSB0byBmZXRjaCBvYmplY3QgZm9yXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICBnZXRPcmdhbml6YXRpb25PYmplY3QobmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmdldE9yZ2FuaXphdGlvbk9iamVjdHMoW25hbWVdKS5waXBlKG1hcChyZXMgPT4gcmVzWzBdKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIGEgY29sbGVjdGlvbiBvZiBvcmdhbml6YXRpb24gb2JqZWN0c1xyXG4gICAqXHJcbiAgICogQHBhcmFtIG5hbWVzIEFycmF5IG9mIG5hbWVzIHRvIGZldGNoIG9iamVjdHMgZm9yXHJcbiAgICogQHJldHVybnMgQSBBcnJheSBvZiBPcmdhbml6YXRpb24gT2JqZWN0c1xyXG4gICAqL1xyXG4gIGdldE9yZ2FuaXphdGlvbk9iamVjdHMobmFtZXM6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxJT3JnYW5pemF0aW9uT2JqZWN0c1tdPiB7XHJcbiAgICBjb25zdCB0b0ZldGNoOiBPYnNlcnZhYmxlPElPcmdhbml6YXRpb25PYmplY3RzPltdID0gbmFtZXMubWFwKG5hbWUgPT4gdGhpcy5iYWNrZW5kLmdldEpzb24oYC9vcmdhbml6YXRpb24vbmFtZS8ke25hbWV9YCkucGlwZShjYXRjaEVycm9yKGVycm9yID0+IG9mKHtpZDogbmFtZSwgYWN0aXZlOiBmYWxzZX0pKSkpO1xyXG4gICAgcmV0dXJuIG9ic2VydmFibGVGb3JrSm9pbih0b0ZldGNoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgYSBjb2xsZWN0aW9uIG9mIG9yZ2FuaXphdGlvbiByb2xlc1xyXG4gICAqXHJcbiAgICogQHJldHVybiBBIEFycmF5IG9mIE9yZ2FuaXphdGlvbiBSb2xlc1xyXG4gICAqL1xyXG4gIGdldFJvbGVzKCk6IE9ic2VydmFibGU8T3JnUm9sZVtdPiB7XHJcbiAgICBpZiAodGhpcy5jYWNoZWRSb2xlcy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIG9mKHRoaXMuY2FjaGVkUm9sZXMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAgIC5nZXQoJy9vcmdhbml6YXRpb24vcm9sZScpXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICBtYXAobyA9PiBvIGFzIE9yZ1JvbGVbXSksXHJcbiAgICAgICAgICB0YXAocm9sZXMgPT4gKHRoaXMuY2FjaGVkUm9sZXMgPSByb2xlcyBhcyBPcmdSb2xlW10pKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
349
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2Uvc3lzdGVtL3N5c3RlbS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLElBQUksa0JBQWtCLEVBQUUsRUFBRSxFQUFjLGFBQWEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVuRixPQUFPLEVBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0QsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN4QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFFekQsT0FBTyxLQUFLLGNBQWMsTUFBTSxRQUFRLENBQUM7QUFDekMsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBRXZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFNUM7O0dBRUc7QUFDSCxNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUM7QUFFOUI7O0dBRUc7QUFFSCxNQUFNLE9BQU8sYUFBYTtJQVd4QixZQUFvQixPQUF1QixFQUN2QixNQUFjLEVBQ2QsWUFBMEIsRUFDMUIsUUFBeUI7UUFIekIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDdkIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBWHJDLGlCQUFZLEdBQUcsSUFBSSxhQUFhLEVBQU8sQ0FBQztRQUN6QyxZQUFPLEdBQW9CLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFbkUsc0NBQXNDO1FBQzlCLG9CQUFlLEdBQVUsRUFBRSxDQUFDO1FBRTVCLGdCQUFXLEdBQWMsRUFBRSxDQUFDO1FBTWxDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDM0UsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QyxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxJQUFJLE1BQU0sQ0FBQyxDQUFDO1FBQ1YsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksY0FBYztRQUNuQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLGFBQWEsQ0FBQyxjQUFzQjtRQUN6QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILDRCQUE0QixDQUFDLGNBQXNCLEVBQUUsU0FBaUIsRUFBRSxhQUF1QjtRQUM3RixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLEVBQUUsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQzdGLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNoQixNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztZQUMvQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ0wsQ0FBQztJQUVPLHdCQUF3QixDQUFDLEtBQVUsRUFBRSxRQUFlO1FBQzFELEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3pCLElBQUcsQ0FBQyxDQUFDLElBQUksS0FBSyxVQUFVLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxlQUFlLEVBQUU7Z0JBQ3RELFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbEI7aUJBQU0sSUFBRyxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO2dCQUN6QyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQzVDO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGNBQWMsQ0FBQyxJQUFnQixFQUFFLGFBQXFCO1FBQzNELE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxhQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0csQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksYUFBYSxDQUFDLEVBQVU7UUFDN0IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksaUJBQWlCLENBQUMsY0FBc0IsRUFBRSxTQUFpQixFQUFFLElBQWE7UUFFL0UsMkNBQTJDO1FBQzNDLElBQUksVUFBVSxDQUFDO1FBRWYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsT0FBTyxDQUFDLFVBQVUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUU7WUFDckQsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxjQUFjO2dCQUNqRCxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJO2dCQUNyQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUU7Z0JBQ2pELFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3RDO1lBQ0QsQ0FBQyxFQUFFLENBQUM7U0FDTDtRQUVELElBQUksVUFBVSxFQUFFO1lBQ2QsdUdBQXVHO1lBQ3ZHLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztTQUNwQzthQUFNO1lBRUwsSUFBSSxHQUFHLEdBQUcsWUFBWSxjQUFjLGNBQWMsU0FBUyxFQUFFLENBQUM7WUFDOUQsR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUV6Qyx5RUFBeUU7WUFDekUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU87aUJBQ3hELE9BQU8sQ0FBQyxHQUFHLENBQUM7aUJBQ1osSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQzlELENBQUMsQ0FBQztTQUNOO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxtQkFBbUIsQ0FBQyxJQUFZO1FBRXJDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLG1GQUFtRjtRQUNuRixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV4Qyx1RUFBdUU7UUFDdkUsK0JBQStCO1FBQy9CLHVCQUF1QjtRQUN2Qiw4Q0FBOEM7UUFDOUMsd0JBQXdCO1FBQ3hCLHVGQUF1RjtRQUN2RiwrQ0FBK0M7UUFDL0MsT0FBTztRQUNQLGdEQUFnRDtRQUNoRCxFQUFFO1FBQ0YsNENBQTRDO1FBQzVDLG9DQUFvQztRQUNwQyxFQUFFO1FBQ0YsYUFBYTtRQUNiLHlFQUF5RTtRQUN6RSwwREFBMEQ7UUFDMUQsd0VBQXdFO1FBQ3hFLFlBQVk7UUFDWixtREFBbUQ7UUFDbkQsaUJBQWlCO1FBQ2pCLHdEQUF3RDtRQUN4RCwrR0FBK0c7UUFDL0csZ0RBQWdEO1FBQ2hELCtDQUErQztRQUMvQywyQkFBMkI7UUFDM0IsVUFBVTtRQUNWLGVBQWU7UUFDZiw0Q0FBNEM7UUFDNUMsaURBQWlEO1FBQ2pELFFBQVE7UUFDUixRQUFRO0lBQ1YsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksZUFBZSxDQUFDLFNBQWlCO1FBQ3RDLElBQUksWUFBWSxDQUFDO1FBQ2pCLFFBQVEsU0FBUyxFQUFFO1lBQ2pCLEtBQUssY0FBYyxDQUFDLENBQUM7Z0JBQ25CLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDOUIsTUFBTTthQUNQO1lBQ0QsS0FBSyxtQkFBbUIsQ0FBQyxDQUFDO2dCQUN4QixZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQy9CLE1BQU07YUFDUDtZQUNELEtBQUssa0JBQWtCLENBQUMsQ0FBQztnQkFDdkIsWUFBWSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQzFCLE1BQU07YUFDUDtZQUNELEtBQUssY0FBYyxDQUFDLENBQUM7Z0JBQ25CLFlBQVksR0FBRyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2hELE1BQU07YUFDUDtZQUNELEtBQUssTUFBTSxDQUFDLENBQUM7Z0JBQ1gsWUFBWSxHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMvQixNQUFNO2FBQ1A7WUFDRCxLQUFLLE9BQU8sQ0FBQyxDQUFDO2dCQUNaLFlBQVksR0FBRyxNQUFNLEVBQUUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ3BDLE1BQU07YUFDUDtZQUNELEtBQUssS0FBSyxDQUFDLENBQUM7Z0JBQ1YsWUFBWSxHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMvQixNQUFNO2FBQ1A7WUFDRCxLQUFLLE1BQU0sQ0FBQyxDQUFDO2dCQUNYLFlBQVksR0FBRyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDL0IsTUFBTTthQUNQO1lBQ0QsS0FBSyxRQUFRLENBQUMsQ0FBQztnQkFDYixZQUFZLEdBQUcsTUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2pDLE1BQU07YUFDUDtZQUNELEtBQUssUUFBUSxDQUFDLENBQUM7Z0JBQ2IsWUFBWSxHQUFHLE1BQU0sRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNqQyxNQUFNO2FBQ1A7WUFDRCxLQUFLLGNBQWMsQ0FBQyxDQUFDO2dCQUNuQixZQUFZLEdBQUcsTUFBTSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2xDLE1BQU07YUFDUDtZQUNELEtBQUssbUJBQW1CLENBQUMsQ0FBQztnQkFDeEIsWUFBWSxHQUFHLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDcEQsTUFBTTthQUNQO1lBQ0QsS0FBSyxvQkFBb0IsQ0FBQyxDQUFDO2dCQUN6QixZQUFZLEdBQUcsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNsRCxNQUFNO2FBQ1A7WUFDRCxLQUFLLG1CQUFtQixDQUFDLENBQUM7Z0JBQ3hCLFlBQVksR0FBRyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2pELE1BQU07YUFDUDtTQUNGO1FBRUQsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILHFCQUFxQixDQUFDLElBQVk7UUFFaEMsTUFBTSxPQUFPLEdBQUc7WUFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxnREFBZ0QsQ0FBQztZQUN0RSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQywrQkFBK0IsQ0FBQztTQUN0RCxDQUFDO1FBRUYsT0FBTyxrQkFBa0IsQ0FBQyxPQUFPLENBQUM7YUFDL0IsSUFBSSxDQUNILFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsaUVBQWlFLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDNUYsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsaUVBQWlFLENBQUMsQ0FBQztRQUM3RixDQUFDLENBQUMsQ0FBQyxFQUNILEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBRVgsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7WUFDMUIsTUFBTSxNQUFNLEdBQUc7Z0JBQ2I7O21CQUVHO2dCQUNILElBQUksRUFBRTtvQkFDSixJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUU7b0JBQ2IsTUFBTSxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUU7b0JBQzlCLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87aUJBQzdCO2dCQUNEOzttQkFFRztnQkFDSCxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0I7Z0JBQ3JDOzttQkFFRztnQkFDSCxLQUFLLEVBQUUsRUFBRTtnQkFDVDs7bUJBRUc7Z0JBQ0gsV0FBVyxFQUFFLEVBQUU7YUFDaEIsQ0FBQztZQUVGLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QixNQUFNLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pELE1BQU0sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTdCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGtEQUFrRCxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQzdILElBQUksQ0FBQyxRQUFRO2lCQUNWLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixFQUFFLE1BQU0sQ0FBQztpQkFDaEQsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBQzdDLENBQUMsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxvREFBb0QsQ0FBQyxDQUFDLENBQUM7WUFFakYsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVEOzs7T0FHRztJQUNILHlCQUF5QixDQUFDLEVBQVU7UUFDbEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUN2RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxxQkFBcUIsQ0FBQyxJQUFZO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxzQkFBc0IsQ0FBQyxLQUFlO1FBQ3BDLE1BQU0sT0FBTyxHQUF1QyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsc0JBQXNCLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkwsT0FBTyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFO1lBQzNCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUM3QjthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUMsT0FBTztpQkFDaEIsR0FBRyxDQUFDLG9CQUFvQixDQUFDO2lCQUN6QixJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBYyxDQUFDLEVBQ3hCLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFrQixDQUFDLENBQUMsQ0FDdEQsQ0FBQztTQUNMO0lBQ0gsQ0FBQzs7O1lBdFdGLFVBQVU7OztZQXJCSCxjQUFjO1lBRWQsTUFBTTtZQVFOLFlBQVk7WUFUWixlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtmb3JrSm9pbiBhcyBvYnNlcnZhYmxlRm9ya0pvaW4sIG9mLCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0fSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7Y2F0Y2hFcnJvciwgdGFwLCBtYXAsIHN3aXRjaE1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0lPcmdhbml6YXRpb25PYmplY3RzfSBmcm9tICcuLi8uLi9pbnRlcmZhY2Uvb3JnYW5pemF0aW9uLW9iamVjdHMuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtCYWNrZW5kU2VydmljZX0gZnJvbSAnLi4vYmFja2VuZC9iYWNrZW5kLnNlcnZpY2UnO1xyXG5pbXBvcnQge0FwcENhY2hlU2VydmljZX0gZnJvbSAnLi4vY2FjaGUvYXBwLWNhY2hlLnNlcnZpY2UnO1xyXG5pbXBvcnQge0xvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL2xvZ2dlcic7XHJcbmltcG9ydCB7T2JqZWN0VHlwZX0gZnJvbSAnLi4vLi4vbW9kZWwvb2JqZWN0LXR5cGUubW9kZWwnO1xyXG5pbXBvcnQge0VvVXNlcn0gZnJvbSAnLi4vLi4vbW9kZWwvZW8tdXNlci5tb2RlbCc7XHJcbmltcG9ydCAqIGFzIG1vbWVudEltcG9ydGVkIGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHtPcmdSb2xlfSBmcm9tICcuLi8uLi9tb2RlbC9vcmcubW9kZWwnO1xyXG5pbXBvcnQge1V0aWxzfSBmcm9tICcuLi8uLi91dGlsL3V0aWxzJztcclxuaW1wb3J0IHtJQ29kZVN5c3RlbX0gZnJvbSAnLi9zeXN0ZW1kZWZpbml0aW9uLmludGVyZmFjZSc7XHJcbmltcG9ydCB7RXZlbnRTZXJ2aWNlfSBmcm9tICcuLi9ldmVudHMvZXZlbnQuc2VydmljZSc7XHJcbmltcG9ydCB7RW5haW9FdmVudH0gZnJvbSAnLi4vZXZlbnRzL2V2ZW50cyc7XHJcblxyXG4vKipcclxuICogQGlnbm9yZVxyXG4gKi9cclxuY29uc3QgbW9tZW50ID0gbW9tZW50SW1wb3J0ZWQ7XHJcblxyXG4vKipcclxuICogQ29sbGVjdGlvbiBvZiBTeXN0ZW0gU2VydmljZXNcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFN5c3RlbVNlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIF9zeXN0ZW07XHJcbiAgcHJpdmF0ZSBzeXN0ZW1Tb3VyY2UgPSBuZXcgUmVwbGF5U3ViamVjdDxhbnk+KCk7XHJcbiAgcHVibGljIHN5c3RlbSQ6IE9ic2VydmFibGU8YW55PiA9IHRoaXMuc3lzdGVtU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAvLyBzZXNzaW9uIGNhY2hlIGZvciBvYmplY3QgdHlwZSBmb3Jtc1xyXG4gIHByaXZhdGUgb2JqZWN0VHlwZUZvcm1zOiBhbnlbXSA9IFtdO1xyXG4gIHByaXZhdGUgdXNlcjogRW9Vc2VyO1xyXG4gIHByaXZhdGUgY2FjaGVkUm9sZXM6IE9yZ1JvbGVbXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmRTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXIsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGFwcENhY2hlOiBBcHBDYWNoZVNlcnZpY2UpIHtcclxuICAgIHRoaXMuZXZlbnRTZXJ2aWNlLm9uKEVuYWlvRXZlbnQuU1lTVEVNX1NUQVRVU19TQ0hFTUFfQ0hBTkdFRCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5mZXRjaFN5c3RlbURlZmluaXRpb24odGhpcy51c2VyKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBzZXQgc3lzdGVtKHMpe1xyXG4gICAgdGhpcy5fc3lzdGVtID0gcztcclxuICB9XHJcblxyXG4gIGdldCBzeXN0ZW0oKXtcclxuICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuX3N5c3RlbSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyBhbGwgT2JqZWN0VHlwZXNcclxuICAgKlxyXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IGNvbnRhaW5pbmcgYWxsIG9iamVjdCB0eXBlc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRPYmplY3RUeXBlcygpOiBPYmplY3RUeXBlW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuc3lzdGVtLnR5cGVzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyBhbiBPYmplY3RUeXBlIGJ5IG5hbWUuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gb2JqZWN0VHlwZU5hbWUgVGhlIG5hbWUgb2YgdGhlIG9iamVjdCB0eXBlXHJcbiAgICogQHJldHVybnMgdGhlIE9iamVjdFR5cGUgbWF0Y2hpbmcgdGhlIGdpdmVuIG5hbWVcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0T2JqZWN0VHlwZShvYmplY3RUeXBlTmFtZTogc3RyaW5nKTogT2JqZWN0VHlwZSB7XHJcbiAgICByZXR1cm4gdGhpcy5zeXN0ZW0udHlwZXMuZmluZCh0ID0+IHQubmFtZSA9PT0gb2JqZWN0VHlwZU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGZvcm0gZWxlbWVudHMgZnJvbSBmb3JtIG1vZGVsLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgaGF2ZSB0byBmZXRjaCB0aGVtXHJcbiAgICogZm9yIGEgc3BlY2lhbCBzaXR1YXRpb24gbGlrZSBTRUFSQ0hcclxuICAgKiBAcGFyYW0gb2JqZWN0VHlwZU5hbWUgT2JqZWN0VHlwZSB0byBmZXRjaCBlbGVtZW50cyBmb3JcclxuICAgKiBAcGFyYW0gc2l0dWF0aW9uIEZvcm0gbW9kZWwgc2l0dWF0aW9uIHRvIGJlIGZldGNoZWRcclxuICAgKiBAcGFyYW0gaXNDb250ZXh0VHlwZSBGbGFnIGluZGljYXRpbmcgdGhhdCB0aGUgZm9ybSBtb2RlbCBzaG91bGQgYmUgZmV0Y2hlZCBmb3IgYSBjb250ZXh0IG1vZGVcclxuICAgKi9cclxuICBnZXRGb3JtRWxlbWVudHNGcm9tRm9ybU1vZGVsKG9iamVjdFR5cGVOYW1lOiBzdHJpbmcsIHNpdHVhdGlvbjogc3RyaW5nLCBpc0NvbnRleHRUeXBlPzogYm9vbGVhbik6IE9ic2VydmFibGU8YW55W10+IHtcclxuICAgIHJldHVybiB0aGlzLmdldE9iamVjdFR5cGVGb3JtKG9iamVjdFR5cGVOYW1lLCBzaXR1YXRpb24sIGlzQ29udGV4dFR5cGUgPyAnQ09OVEVYVCcgOiBudWxsKS5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAobW9kZWwgPT4ge1xyXG4gICAgICAgIGNvbnN0IGVsZW1lbnRzID0gW107XHJcbiAgICAgICAgdGhpcy5wcm9jZXNzRm9ybU1vZGVsRWxlbWVudHMobW9kZWwsIGVsZW1lbnRzKTtcclxuICAgICAgICByZXR1cm4gb2YoZWxlbWVudHMpO1xyXG4gICAgfSkpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByb2Nlc3NGb3JtTW9kZWxFbGVtZW50cyhtb2RlbDogYW55LCBlbGVtZW50czogYW55W10pIHtcclxuICAgIG1vZGVsLmVsZW1lbnRzLmZvckVhY2goZSA9PiB7XHJcbiAgICAgIGlmKGUudHlwZSAhPT0gXCJvMm1Hcm91cFwiICYmIGUudHlwZSAhPT0gXCJvMm1Hcm91cFN0YWNrXCIpIHtcclxuICAgICAgICBlbGVtZW50cy5wdXNoKGUpO1xyXG4gICAgICB9IGVsc2UgaWYoZS5lbGVtZW50cyAmJiBlLmVsZW1lbnRzLmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMucHJvY2Vzc0Zvcm1Nb2RlbEVsZW1lbnRzKGUsIGVsZW1lbnRzKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrcyB3aGV0aGVyIG9yIG5vdCB0aGUgZ2l2ZW4gdHlwZSBpbXBsZW1lbnRzIGEgZ2l2ZW4gc3VwZXJ0eXBlXHJcbiAgICogQHBhcmFtIHR5cGUgVHlwZSB0byBiZSBjaGVja2VkXHJcbiAgICogQHBhcmFtIHN1cGVyVHlwZU5hbWUgTmFtZSBvZiB0aGUgc3VwZXJ0eXBlXHJcbiAgICovXHJcbiAgcHVibGljIGltcGxlbWVudHNUeXBlKHR5cGU6IE9iamVjdFR5cGUsIHN1cGVyVHlwZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHR5cGUubmFtZSA9PT0gc3VwZXJUeXBlTmFtZSB8fCAodHlwZS5pbXBsZW1lbnRzICYmIHR5cGUuaW1wbGVtZW50cy5pbmRleE9mKHN1cGVyVHlwZU5hbWUpICE9PSAtMSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIGEgY29kZXN5c3RlbVxyXG4gICAqXHJcbiAgICogQHBhcmFtIGlkIFRoZSBjb2Rlc3lzdGVtcyBpZFxyXG4gICAqIEByZXR1cm5zIFRoZSBjb2Rlc3lzdGVtIG9iamVjdCBtYXRjaGluZyB0aGUgZ2l2ZW4gaWRcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0Q29kZXN5c3RlbShpZDogc3RyaW5nKTogSUNvZGVTeXN0ZW0ge1xyXG4gICAgcmV0dXJuIHRoaXMuc3lzdGVtLmNvZGVzeXN0ZW1zLmZpbmQodCA9PiB0LmlkID09PSBpZCB8fCB0Lm5hbWUgPT09IGlkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgZm9ybSBtb2RlbCBvZiBhbiBvYmplY3QgdHlwZS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBvYmplY3RUeXBlTmFtZSBUaGUgb2JqZWN0IHR5cGUgbmFtZVxyXG4gICAqIEBwYXJhbSBzaXR1YXRpb24gVGhlIGZvcm0gc2l0dWF0aW9uIHRvIGJlIGZldGNoZWRcclxuICAgKiBAcGFyYW0gbW9kZSBGb3JtIG1vZGUgdG8gZmV0Y2ggKGUuZy4gQ09OVEVYVClcclxuICAgKiBAcmV0dXJucyBUaGUgb2JqZWN0IHR5cGUgZm9ybSBtb2RlbFxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRPYmplY3RUeXBlRm9ybShvYmplY3RUeXBlTmFtZTogc3RyaW5nLCBzaXR1YXRpb246IHN0cmluZywgbW9kZT86IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcblxyXG4gICAgLyoqIGNoZWNrIGlmIHdlIGhhdmUgYSBjYWNoZWQgZm9ybSBmaXJzdCAqL1xyXG4gICAgbGV0IGNhY2hlZEZvcm07XHJcblxyXG4gICAgbGV0IGkgPSAwO1xyXG4gICAgd2hpbGUgKCFjYWNoZWRGb3JtICYmIGkgPCB0aGlzLm9iamVjdFR5cGVGb3Jtcy5sZW5ndGgpIHtcclxuICAgICAgaWYgKHRoaXMub2JqZWN0VHlwZUZvcm1zW2ldLm5hbWUgPT09IG9iamVjdFR5cGVOYW1lICYmXHJcbiAgICAgICAgdGhpcy5vYmplY3RUeXBlRm9ybXNbaV0ubW9kZSA9PT0gbW9kZSAmJlxyXG4gICAgICAgIHRoaXMub2JqZWN0VHlwZUZvcm1zW2ldLnNpdHVhdGlvbiA9PT0gc2l0dWF0aW9uKSB7XHJcbiAgICAgICAgY2FjaGVkRm9ybSA9IHRoaXMub2JqZWN0VHlwZUZvcm1zW2ldO1xyXG4gICAgICB9XHJcbiAgICAgIGkrKztcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2FjaGVkRm9ybSkge1xyXG4gICAgICAvKiogcmV0dXJuIGEgY2xvbmUgb2YgdGhlIGNhY2hlZCBtb2RlbCBhcyBvdGhlcndpc2UgbW9kZWwgY2hhbmdlcyB3aWxsIGJlIGFkZGVkIHRvIHRoZSBjaGFjaGVkIG1vZGVsICovXHJcbiAgICAgIHJldHVybiBvZihfLmNsb25lRGVlcChjYWNoZWRGb3JtKSk7XHJcbiAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgbGV0IHVyaSA9IGAvdWkvZm9ybS8ke29iamVjdFR5cGVOYW1lfT9zaXR1YXRpb249JHtzaXR1YXRpb259YDtcclxuICAgICAgdXJpICs9ICEhbW9kZSA/IGAmZm9ybW1vZGU9JHttb2RlfWAgOiAnJztcclxuXHJcbiAgICAgIC8qKiBmZXRjaCBhbmQgY2FjaGUgdGhlIHJlcXVlc3RlZCBmb3JtLCBpZiBubyBjYWNoZWQgdmVyc2lvbiB3YXMgZm91bmQgKi9cclxuICAgICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXRWaWFUZW1wQ2FjaGUodXJpLCAoKSA9PiB0aGlzLmJhY2tlbmRcclxuICAgICAgICAuZ2V0SnNvbih1cmkpXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICB0YXAoKG1vZGVsKSA9PiB0aGlzLm9iamVjdFR5cGVGb3Jtcy5wdXNoKF8uY2xvbmVEZWVwKG1vZGVsKSkpXHJcbiAgICAgICAgKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIHRoZSBiYWNrZW5kcyBzeXN0ZW0gZGVmaW5pdGlvbiBhbmQgdXBkYXRlcyBzeXN0ZW0kIE9ic2VydmFibGUuXHJcbiAgICogU3Vic2NyaWJlIHRvIHRoZSBzeXN0ZW0kIG9ic2VydmFibGUgaW5zdGVhZCBvZiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24sIG90aGVyd2lzZSB5b3UnbGwgdHJpZ2dlciBmZXRjaGluZyB0aGVcclxuICAgKiBzeXN0ZW0gZGVmaW5pdGlvbiBldmVyeSB0aW1lLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHVzZXIgVGhlIHVzZXIgdG8gbG9hZCB0aGUgc3lzdGVtIGRlZmluaXRpb24gZm9yXHJcbiAgICogQHJldHVybnMgdHJ1ZSB3aGVuIHN1Y2Nlc3NmdWxsXHJcbiAgICovXHJcbiAgcHVibGljIGdldFN5c3RlbURlZmluaXRpb24odXNlcjogRW9Vc2VyKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcblxyXG4gICAgdGhpcy51c2VyID0gdXNlcjtcclxuICAgIC8vIHRvZG86IHRlbXBvcmFyeTogT3JnQ2hhbmdlcyBjb3VsZCBub3QgYmUgcmVjb2duaXplZCBidXQgYWZmZWN0IG9iamVjdCBkZWZpbml0aW9uXHJcbiAgICByZXR1cm4gdGhpcy5mZXRjaFN5c3RlbURlZmluaXRpb24odXNlcik7XHJcblxyXG4gICAgLy8gdG9kbzogZW5hYmxlIGFnYWluIHdoZW4gT3JnQ2hhbmdlcyBhcmUgcmVjb2duaXphYmxlIChETyBOT1QgREVMRVRFISlcclxuICAgIC8vIC8vIGlzIHRoZXJlIGEgY2FjaGVkIHZlcnNpb25cclxuICAgIC8vIHJldHVybiB0aGlzLmFwcENhY2hlXHJcbiAgICAvLyAgIC5nZXRJdGVtKHRoaXMuYXBwQ2FjaGUuU1lTVEVNX0RFRklOSVRJT04pXHJcbiAgICAvLyAgIC5jYXRjaCgoZXJyb3IpID0+IHtcclxuICAgIC8vICAgICB0aGlzLmxvZ2dlci5lcnJvcignRXJyb3IgZmV0Y2hpbmcgY2FjaGVkIHZlcnNpb24gb2Ygc3lzdGVtIGRlZmluaXRpb24uJywgZXJyb3IpO1xyXG4gICAgLy8gICAgIHJldHVybiB0aGlzLmZldGNoU3lzdGVtRGVmaW5pdGlvbih1c2VyKTtcclxuICAgIC8vICAgfSlcclxuICAgIC8vICAgLmZsYXRNYXAoKGNhY2hlZFN5c3RlbURlZmluaXRpb246IGFueSkgPT4ge1xyXG4gICAgLy9cclxuICAgIC8vICAgICAvLyB5ZXM/IHRoZW4gY2hlY2sgaWYgaXQncyB1cCB0byBkYXRlXHJcbiAgICAvLyAgICAgaWYgKGNhY2hlZFN5c3RlbURlZmluaXRpb24pIHtcclxuICAgIC8vXHJcbiAgICAvLyAgICAgICBpZiAoXHJcbiAgICAvLyAgICAgICAgIHVzZXIuc2NoZW1hLnZlcnNpb24gIT09IGNhY2hlZFN5c3RlbURlZmluaXRpb24uaW5mby52ZXJzaW9uIHx8XHJcbiAgICAvLyAgICAgICAgIHVzZXIuaWQgIT09IGNhY2hlZFN5c3RlbURlZmluaXRpb24uaW5mby51c2VyIHx8XHJcbiAgICAvLyAgICAgICAgIHVzZXIuZ2V0U2NoZW1hTG9jYWxlKCkgIT09IGNhY2hlZFN5c3RlbURlZmluaXRpb24uaW5mby5sb2NhbGVcclxuICAgIC8vICAgICAgICkge1xyXG4gICAgLy8gICAgICAgICByZXR1cm4gdGhpcy5mZXRjaFN5c3RlbURlZmluaXRpb24odXNlcik7XHJcbiAgICAvLyAgICAgICB9IGVsc2Uge1xyXG4gICAgLy8gICAgICAgICAvLyBjYWNoZSBpcyB1cCB0byBkYXRlLiByZXR1cm4gdGhlIGNhY2hlZCBvbmVcclxuICAgIC8vICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ1N5c3RlbSBkZWZpbml0aW9uIGlzIHVwIHRvIGRhdGUsIHVzaW5nIGNhY2hlZCB2ZXJzaW9uLicsIGNhY2hlZFN5c3RlbURlZmluaXRpb24pO1xyXG4gICAgLy8gICAgICAgICB0aGlzLnN5c3RlbSA9IGNhY2hlZFN5c3RlbURlZmluaXRpb247XHJcbiAgICAvLyAgICAgICAgIHRoaXMuc3lzdGVtU291cmNlLm5leHQodGhpcy5zeXN0ZW0pO1xyXG4gICAgLy8gICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XHJcbiAgICAvLyAgICAgICB9XHJcbiAgICAvLyAgICAgfSBlbHNlIHtcclxuICAgIC8vICAgICAgIC8vIG5vIGNhY2hlZCBzeXN0ZW1EZWZpbml0aW9uIGZvdW5kXHJcbiAgICAvLyAgICAgICByZXR1cm4gdGhpcy5mZXRjaFN5c3RlbURlZmluaXRpb24odXNlcik7XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSB2YWx1ZSBkZXBlbmRpbmcgb24gYSBnaXZlbiBUeXBlXHJcbiAgICpcclxuICAgKiBAcGFyYW0gc3RyaW5nIHZhbHVlVHlwZVxyXG4gICAqIEByZXR1cm5zIGFueVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXREZWZhdWx0VmFsdWUodmFsdWVUeXBlOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgbGV0IGRlZmF1bHRWYWx1ZTtcclxuICAgIHN3aXRjaCAodmFsdWVUeXBlKSB7XHJcbiAgICAgIGNhc2UgJ0NVUlJFTlRfVVNFUic6IHtcclxuICAgICAgICBkZWZhdWx0VmFsdWUgPSB0aGlzLnVzZXIubmFtZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdDVVJSRU5UX1VTRVJfTkFNRSc6IHtcclxuICAgICAgICBkZWZhdWx0VmFsdWUgPSB0aGlzLnVzZXIudGl0bGU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnQ1VSUkVOVF9EQVRFVElNRSc6IHtcclxuICAgICAgICBkZWZhdWx0VmFsdWUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0NVUlJFTlRfREFURSc6IHtcclxuICAgICAgICBkZWZhdWx0VmFsdWUgPSBtb21lbnQoKS5zdGFydE9mKCdkYXknKS50b0RhdGUoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdZRUFSJzoge1xyXG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IG1vbWVudCgpLnllYXIoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdNT05USCc6IHtcclxuICAgICAgICBkZWZhdWx0VmFsdWUgPSBtb21lbnQoKS5tb250aCgpICsgMTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdEQVknOiB7XHJcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gbW9tZW50KCkuZGF0ZSgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0hPVVInOiB7XHJcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gbW9tZW50KCkuaG91cigpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ01JTlVURSc6IHtcclxuICAgICAgICBkZWZhdWx0VmFsdWUgPSBtb21lbnQoKS5taW51dGUoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdTRUNPTkQnOiB7XHJcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gbW9tZW50KCkuc2Vjb25kKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnV0VFS19PRl9ZRUFSJzoge1xyXG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IG1vbWVudCgpLmlzb1dlZWsoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdGSVJTVF9EQVlfT0ZfV0VFSyc6IHtcclxuICAgICAgICBkZWZhdWx0VmFsdWUgPSBtb21lbnQoKS5zdGFydE9mKCdpc29XZWVrJykudG9EYXRlKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnRklSU1RfREFZX09GX01PTlRIJzoge1xyXG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IG1vbWVudCgpLnN0YXJ0T2YoJ21vbnRoJykudG9EYXRlKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnRklSU1RfREFZX09GX1lFQVInOiB7XHJcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gbW9tZW50KCkuc3RhcnRPZigneWVhcicpLnRvRGF0ZSgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgdGhlIHN5c3RlbSBkZWZpbml0aW9uIGZyb20gdGhlIHNlcnZlci4gUHJvdmlkZWQgcGFyYW1zIGFyZSB1c2VkIGZvciBzdG9yaW5nIHRoZVxyXG4gICAqIHJlY2VudCB2ZXJzaW9uIGluIGNhY2hlLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHVzZXIgVGhlIHVzZXIgdG8gZmV0Y2ggdGhlIHN5c3RlbSBkZWZpbml0aW9uIGZvclxyXG4gICAqIEByZXR1cm4gYm9vbGVhblxyXG4gICAqL1xyXG4gIGZldGNoU3lzdGVtRGVmaW5pdGlvbih1c2VyOiBFb1VzZXIpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuXHJcbiAgICBjb25zdCBmZXRjaGVzID0gW1xyXG4gICAgICB0aGlzLmJhY2tlbmQuZ2V0SnNvbignL3N5c3RlbS90eXBlL2xpc3Q/ZWxlbWVudHM9dHJ1ZSZiYXNldHlwZXM9dHJ1ZScpLFxyXG4gICAgICB0aGlzLmJhY2tlbmQuZ2V0SnNvbignL3N5c3RlbS9jcy9saXN0P2VsZW1lbnRzPXRydWUnKVxyXG4gICAgXTtcclxuXHJcbiAgICByZXR1cm4gb2JzZXJ2YWJsZUZvcmtKb2luKGZldGNoZXMpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGNhdGNoRXJyb3IoVXRpbHMuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignRXJyb3IgZmV0Y2hpbmcgcmVjZW50IHZlcnNpb24gb2Ygc3lzdGVtIGRlZmluaXRpb24gZnJvbSBzZXJ2ZXIuJywgZXJyb3IpO1xyXG4gICAgICAgICAgdGhpcy5zeXN0ZW1Tb3VyY2UuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIHJlY2VudCB2ZXJzaW9uIG9mIHN5c3RlbSBkZWZpbml0aW9uIGZyb20gc2VydmVyLicpO1xyXG4gICAgICAgIH0pKSxcclxuICAgICAgICBtYXAoKGRhdGEpID0+IHtcclxuXHJcbiAgICAgICAgICB0aGlzLm9iamVjdFR5cGVGb3JtcyA9IFtdO1xyXG4gICAgICAgICAgY29uc3Qgc3lzdGVtID0ge1xyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICogaW5mbyBhYm91dCB0aGUgY3VycmVudCBzeXN0ZW0gZGVmaW5pdGlvblxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgaW5mbzoge1xyXG4gICAgICAgICAgICAgIHVzZXI6IHVzZXIuaWQsXHJcbiAgICAgICAgICAgICAgbG9jYWxlOiB1c2VyLmdldFNjaGVtYUxvY2FsZSgpLFxyXG4gICAgICAgICAgICAgIHZlcnNpb246IHVzZXIuc2NoZW1hLnZlcnNpb25cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIHN1cHBvcnRlZCBiYWNrZW5kIGxvY2FsZXNcclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIGxvY2FsZXM6IHVzZXIuc2NoZW1hLnN1cHBvcnRlZExvY2FsZXMsXHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiBvYmplY3QgdHlwZSBkZWZpbml0aW9uc1xyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgdHlwZXM6IFtdLFxyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICogY29kZXN5c3RlbXMgY2FjaGVcclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIGNvZGVzeXN0ZW1zOiBbXVxyXG4gICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICBjb25zdCB0eXBlcyA9IGRhdGFbMF07XHJcbiAgICAgICAgICBzeXN0ZW0udHlwZXMgPSB0eXBlcy5tYXAodCA9PiBuZXcgT2JqZWN0VHlwZSh0KSk7XHJcbiAgICAgICAgICBzeXN0ZW0uY29kZXN5c3RlbXMgPSBkYXRhWzFdO1xyXG5cclxuICAgICAgICAgIHRoaXMuc3lzdGVtID0gc3lzdGVtO1xyXG4gICAgICAgICAgdGhpcy5zeXN0ZW1Tb3VyY2UubmV4dChzeXN0ZW0pO1xyXG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ0ZldGNoZWQgbmV3IHZlcnNpb24gb2Ygc3lzdGVtIGRlZmluaXRpb24gKHVzZXI6ICcgKyB1c2VyLmlkICsgJywgdmVyc2lvbjogJyArIHVzZXIuc2NoZW1hLnZlcnNpb24gKyAnKS4nKTtcclxuICAgICAgICAgIHRoaXMuYXBwQ2FjaGVcclxuICAgICAgICAgICAgLnNldEl0ZW0odGhpcy5hcHBDYWNoZS5TWVNURU1fREVGSU5JVElPTiwgc3lzdGVtKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnQ2FjaGVkIHJlY2VudCB2ZXJzaW9uJyk7XHJcbiAgICAgICAgICAgIH0sIFV0aWxzLmxvZ0Vycm9yKG51bGwsICdFcnJvciBjYWNoaW5nIHJlY2VudCB2ZXJzaW9uIG9mIHN5c3RlbSBkZWZpbml0aW9uLicpKTtcclxuXHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9KSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZSBhbiBvcmdhbml6YXRpb24gb2JqZWN0IGJ5IGl0cyBJRFxyXG4gICAqIEBwYXJhbSBpZCBJRCBvZiBvcmcgb2JqZWN0XHJcbiAgICovXHJcbiAgZ2V0T3JnYW5pemF0aW9uT2JqZWN0QnlJZChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZ2V0SnNvbihgL29yZ2FuaXphdGlvbi9pZC8ke2lkfWApXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIHRoZSBvcmdhbml6YXRpb24gb2JqZWN0IGZvciBhIGdpdmVuIG5hbWUuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSB0byBmZXRjaCBvYmplY3QgZm9yXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICBnZXRPcmdhbml6YXRpb25PYmplY3QobmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmdldE9yZ2FuaXphdGlvbk9iamVjdHMoW25hbWVdKS5waXBlKG1hcChyZXMgPT4gcmVzWzBdKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIGEgY29sbGVjdGlvbiBvZiBvcmdhbml6YXRpb24gb2JqZWN0c1xyXG4gICAqXHJcbiAgICogQHBhcmFtIG5hbWVzIEFycmF5IG9mIG5hbWVzIHRvIGZldGNoIG9iamVjdHMgZm9yXHJcbiAgICogQHJldHVybnMgQSBBcnJheSBvZiBPcmdhbml6YXRpb24gT2JqZWN0c1xyXG4gICAqL1xyXG4gIGdldE9yZ2FuaXphdGlvbk9iamVjdHMobmFtZXM6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxJT3JnYW5pemF0aW9uT2JqZWN0c1tdPiB7XHJcbiAgICBjb25zdCB0b0ZldGNoOiBPYnNlcnZhYmxlPElPcmdhbml6YXRpb25PYmplY3RzPltdID0gbmFtZXMubWFwKG5hbWUgPT4gdGhpcy5iYWNrZW5kLmdldEpzb24oYC9vcmdhbml6YXRpb24vbmFtZS8ke25hbWV9YCkucGlwZShjYXRjaEVycm9yKGVycm9yID0+IG9mKHtpZDogbmFtZSwgYWN0aXZlOiBmYWxzZX0pKSkpO1xyXG4gICAgcmV0dXJuIG9ic2VydmFibGVGb3JrSm9pbih0b0ZldGNoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgYSBjb2xsZWN0aW9uIG9mIG9yZ2FuaXphdGlvbiByb2xlc1xyXG4gICAqXHJcbiAgICogQHJldHVybiBBIEFycmF5IG9mIE9yZ2FuaXphdGlvbiBSb2xlc1xyXG4gICAqL1xyXG4gIGdldFJvbGVzKCk6IE9ic2VydmFibGU8T3JnUm9sZVtdPiB7XHJcbiAgICBpZiAodGhpcy5jYWNoZWRSb2xlcy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIG9mKHRoaXMuY2FjaGVkUm9sZXMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAgIC5nZXQoJy9vcmdhbml6YXRpb24vcm9sZScpXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICBtYXAobyA9PiBvIGFzIE9yZ1JvbGVbXSksXHJcbiAgICAgICAgICB0YXAocm9sZXMgPT4gKHRoaXMuY2FjaGVkUm9sZXMgPSByb2xlcyBhcyBPcmdSb2xlW10pKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1452,7 +1452,7 @@ class SystemService {
1452
1452
  */
1453
1453
  fetchSystemDefinition(user) {
1454
1454
  const fetches = [
1455
- this.backend.getJson('/system/type/list?elements=true'),
1455
+ this.backend.getJson('/system/type/list?elements=true&basetypes=true'),
1456
1456
  this.backend.getJson('/system/cs/list?elements=true')
1457
1457
  ];
1458
1458
  return forkJoin(fetches)
@@ -2725,9 +2725,9 @@ class BpmService {
2725
2725
  * @param types List of dms object types to fetch executable processes for
2726
2726
  * @returns List of executable processes
2727
2727
  */
2728
- getExecutableProcesses(types) {
2728
+ getExecutableProcesses(types, useCached) {
2729
2729
  if (this.capabilities.hasCapability('bpm')) {
2730
- return this.fetchExecutableProcesses(types);
2730
+ return (!!this.executableProcesses && useCached) ? of(this.executableProcesses) : this.fetchExecutableProcesses(types);
2731
2731
  }
2732
2732
  else {
2733
2733
  return of([]);
@@ -2752,7 +2752,7 @@ class BpmService {
2752
2752
  if (types) {
2753
2753
  uri += `&type=${types.join(',')}`;
2754
2754
  }
2755
- return this.backend.get(uri).pipe(map(res => res));
2755
+ return this.backend.get(uri).pipe(map(res => res), tap(res => this.executableProcesses = res));
2756
2756
  }
2757
2757
  /**
2758
2758
  * Getter for a processes file. The file of a process contains