@techextensor/tab-core-utility 2.2.107 → 2.2.108

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.
@@ -125,12 +125,21 @@ export class TabGetService {
125
125
  */
126
126
  data.WhereClause.Filters.forEach((filter) => {
127
127
  // filter.ValueType is 1 (literal)
128
- if (filter.Value && filter.ValueType == 1) {
128
+ if (filter.Value && filter.ValueType == FilterValueType.Literal) {
129
129
  filter.Value = filter.Value.replace(/{{([^}]+)}}/g, (match, key) => {
130
130
  const value = parameters[key];
131
131
  return value !== undefined ? value : null;
132
132
  });
133
133
  }
134
+ // if valueType = 2 (Parameters)
135
+ // then we need to replace the value with parameters and change the valueType to 1 (Literal)
136
+ else if (filter.ValueType == FilterValueType.Parameter) {
137
+ filter.Value = filter.Value.replace(/([^}]+)/g, (match, key) => {
138
+ const value = parameters[key];
139
+ return value !== undefined ? value : null;
140
+ });
141
+ filter.ValueType = FilterValueType.Literal;
142
+ }
134
143
  });
135
144
  (data?.WhereClause?.Filters || []).forEach((element) => {
136
145
  if (element.ValueType === FilterValueType.Parameter &&
@@ -354,4 +363,4 @@ export class TabGetService {
354
363
  type: Injectable,
355
364
  args: [{ providedIn: 'root' }]
356
365
  }], null, null); })();
357
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWdldC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2NydWQvdGFiLWdldC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUV2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLDBCQUEwQixHQUMzQixNQUFNLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBR2pDLE1BQU0sT0FBTyxhQUFhO0lBRDFCO1FBRW1CLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztLQTRZaEQ7SUExWUM7Ozs7T0FJRztJQUNILHFCQUFxQixDQUFDLElBQVM7UUFDN0IsTUFB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QURBLE1BQU07O2lGQUNuQixhQUFhO2NBRHpCLFVBQVU7ZUFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXHJcblxyXG5pbXBvcnQgeyBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2h0dHAtY2xpZW50L2FwaS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRFNRSGVscGVyIH0gZnJvbSAnLi4vaGVscGVycy9jb21tb24vZHNxLmhlbHBlcnMnO1xyXG5pbXBvcnQgeyBnZXRIZWFkZXJzIH0gZnJvbSAnLi4vdXRpbHMvcmVxLXJlcy51dGlsJztcclxuaW1wb3J0IHsgQVBJIH0gZnJvbSAnLi4vY29uc3RhbnRzL2FwaS1jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBnZXRBcHBPYmplY3QgfSBmcm9tICcuLi91dGlscy90YWItYXBwLnV0aWwnO1xyXG5pbXBvcnQgeyBDb21tb24gfSBmcm9tICcuLi9jb25zdGFudHMvY29tbW9uJztcclxuaW1wb3J0IHsgQVBJU2VsZWN0UXVlcnkgfSBmcm9tICcuLi9tb2RlbHMvYXBpLXF1ZXJ5LmNsYXNzJztcclxuaW1wb3J0IHsgRmlsdGVyVmFsdWVUeXBlIH0gZnJvbSAnLi4vZW51bXMvZHNxLmVudW0nO1xyXG5pbXBvcnQgeyBRdWVyeVR5cGUgfSBmcm9tICcuLi9lbnVtcy9xdWVyeS5lbnVtJztcclxuaW1wb3J0IHtcclxuICBBcHBPYmplY3RzQ29uc3RhbnRzLFxyXG4gIERhdGFTb3VyY2VRdWVyaWVzQ29uc3RhbnRzLFxyXG59IGZyb20gJy4uL2NvbnN0YW50cy9hcHAtb2JqZWN0LWNvbnN0YW50cyc7XHJcbmltcG9ydCB7IHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIFRhYkdldFNlcnZpY2Uge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpU2VydmljZSA9IGluamVjdChBcGlTZXJ2aWNlKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRzcUhlbHBlciA9IGluamVjdChEU1FIZWxwZXIpO1xyXG5cclxuICAvKipcclxuICAgKiBFeGVjdXRlIFJBVyBEU1Egd2l0aCBOYW1lXHJcbiAgICogQHBhcmFtIGRhdGEgLSBPYmplY3QgY29udGFpbmluZyBBcHBPYmplY3ROYW1lIGFuZCBEU1FOYW1lXHJcbiAgICogQHJldHVybnMgUmVzcG9uc2UgZnJvbSB0aGUgQVBJXHJcbiAgICovXHJcbiAgZXhlY3V0ZVJBV0RTUVdpdGhOYW1lKGRhdGE6IGFueSk6IGFueSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgaWYgKGhlYWRlcnMpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KFxyXG4gICAgICAgIGAke0FQSS5nZXREU1F9LyR7ZGF0YS5BcHBPYmplY3ROYW1lfS8ke2RhdGEuRFNRTmFtZX1gLFxyXG4gICAgICAgIGRhdGEsXHJcbiAgICAgICAgaGVhZGVyc1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgUmVjb3JkXHJcbiAgICogQHBhcmFtIHBhcmFtcyAtIFBhcmFtZXRlcnMgZm9yIHRoZSByZXF1ZXN0XHJcbiAgICogQHJldHVybnMgUmVzcG9uc2UgZnJvbSB0aGUgQVBJXHJcbiAgICovXHJcbiAgZ2V0UmVjb3JkKHBhcmFtczogYW55KTogYW55IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICBpZiAoaGVhZGVycykge1xyXG4gICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmdldChgJHtBUEkuZ2V0cmVjb3JkfWAsIHBhcmFtcywgaGVhZGVycyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4ZWN1dGUgUmF3IFNRTFxyXG4gICAqIEBwYXJhbSBkYXRhIC0gRGF0YSBmb3IgdGhlIHJlcXVlc3RcclxuICAgKiBAcmV0dXJucyBSZXNwb25zZSBmcm9tIHRoZSBBUElcclxuICAgKi9cclxuICBleGVjdXRlUmF3U3FsKGRhdGE6IGFueSk6IGFueSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgaWYgKGhlYWRlcnMpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KGAke0FQSS5yYXdTUUx9JHtkYXRhfWAsICcnLCBoZWFkZXJzKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IEhpc3RvcnlcclxuICAgKiBAcGFyYW0gYXBwT2JqZWN0SWQgLSBJRCBvZiB0aGUgYXBwbGljYXRpb24gb2JqZWN0XHJcbiAgICogQHBhcmFtIHJlY29yZElkcyAtIEFycmF5IG9mIHJlY29yZCBJRHNcclxuICAgKiBAcmV0dXJucyBSZXNwb25zZSBmcm9tIHRoZSBBUElcclxuICAgKi9cclxuICBnZXRIaXN0b3J5KGFwcE9iamVjdElkOiBzdHJpbmcsIHJlY29yZElkczogc3RyaW5nW10pOiBhbnkge1xyXG4gICAgY29uc3QgZGF0YTogYW55ID0ge307XHJcbiAgICBpZiAoYXBwT2JqZWN0SWQgJiYgcmVjb3JkSWRzKSB7XHJcbiAgICAgIGNvbnN0IGFwcE9iamVjdE5hbWUgPSBnZXRBcHBPYmplY3QoYXBwT2JqZWN0SWQpPy5PYmplY3ROYW1lO1xyXG4gICAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgICBpZiAoYXBwT2JqZWN0TmFtZSAmJiBoZWFkZXJzKSB7XHJcbiAgICAgICAgZGF0YS5PYmplY3ROYW1lID0gYXBwT2JqZWN0TmFtZTtcclxuICAgICAgICBkYXRhLlJlY29yZElkcyA9IHJlY29yZElkcztcclxuICAgICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoYCR7QVBJLmdldEhpc3Rvcnl9YCwgZGF0YSwgaGVhZGVycyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hhbmdlIFBhc3N3b3JkXHJcbiAgICogQHBhcmFtIGRhdGEgLSBEYXRhIGZvciBjaGFuZ2luZyBwYXNzd29yZFxyXG4gICAqIEByZXR1cm5zIFJlc3BvbnNlIGZyb20gdGhlIEFQSVxyXG4gICAqL1xyXG4gIGNoYW5nZVBhc3N3b3JkKGRhdGE6IGFueSk6IGFueSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgaWYgKGhlYWRlcnMpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KGAke0FQSS5jaGFuZ2VQYXNzd29yZH1gLCBkYXRhLCBoZWFkZXJzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlc2V0IFBhc3N3b3JkXHJcbiAgICogQHBhcmFtIGRhdGEgLSBEYXRhIGZvciByZXNldHRpbmcgcGFzc3dvcmRcclxuICAgKiBAcmV0dXJucyBSZXNwb25zZSBmcm9tIHRoZSBBUElcclxuICAgKi9cclxuICByZXNldFBhc3N3b3JkKGRhdGE6IGFueSk6IGFueSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgYXBwbGljYXRpb25Db2RlOiBDb21tb24uYXBwbGljYXRpb25Db2RlLFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoYCR7QVBJLnJlc3RwYXNzd29yZH1gLCBkYXRhLCBoZWFkZXJzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBNSkFZIEltcG9ydFxyXG4gICAqIEBwYXJhbSBkYXRhIC0gRGF0YSBmb3IgUE1KQVkgaW1wb3J0XHJcbiAgICogQHJldHVybnMgUmVzcG9uc2UgZnJvbSB0aGUgQVBJXHJcbiAgICovXHJcbiAgcG1qYXlJbXBvcnQoZGF0YTogYW55KTogYW55IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICBpZiAoaGVhZGVycykge1xyXG4gICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoYCR7QVBJLnBtamF5SW1wb3J0fWAsIGRhdGEsIGhlYWRlcnMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXhlY3V0ZXMgYSBzZWxlY3QgcXVlcnkgd2l0aCBvcHRpb25hbCBwYXJhbWV0ZXJzXHJcbiAgICogQHBhcmFtIGRhdGEgLSBUaGUgc2VsZWN0IHF1ZXJ5IGRhdGFcclxuICAgKiBAcGFyYW0gcGFyYW1ldGVycyAtIE9wdGlvbmFsIHBhcmFtZXRlcnMgdG8gYmUgYXBwbGllZCB0byB0aGUgcXVlcnlcclxuICAgKiBAcmV0dXJucyBSZXN1bHQgb2YgdGhlIHNlbGVjdCBxdWVyeSBleGVjdXRpb25cclxuICAgKi9cclxuICBzZWxlY3RFeGVjdXRvcihkYXRhOiBBUElTZWxlY3RRdWVyeSwgcGFyYW1ldGVycz86IGFueSk6IGFueSB7XHJcbiAgICBpZiAocGFyYW1ldGVycyAmJiBPYmplY3Qua2V5cyhwYXJhbWV0ZXJzKS5sZW5ndGgpIHtcclxuICAgICAgZGF0YS5XaGVyZUNsYXVzZS5GaWx0ZXJMb2dpYyA9IGRhdGEuV2hlcmVDbGF1c2UuRmlsdGVyTG9naWMgfHwgJ1tdJztcclxuICAgICAgZGF0YS5XaGVyZUNsYXVzZS5GaWx0ZXJzID0gZGF0YS5XaGVyZUNsYXVzZS5GaWx0ZXJzIHx8IFtdO1xyXG4gICAgICBkYXRhLldoZXJlQ2xhdXNlLlNRTFF1ZXJ5ID0gZGF0YS5XaGVyZUNsYXVzZS5TUUxRdWVyeSB8fCAnJztcclxuICAgICAgLyoqXHJcbiAgICAgICAqIFJlcGxhY2VzIHZhbHVlcyBmcm9tIHBhcmFtZXRlcnMgaWYgbWF0Y2hlZCBhbmQgaW4gZm9ybWF0IG9mIHt7a2V5fX0uXHJcbiAgICAgICAqIEV4YW1wbGU6IGlmIGZpbHRlci5WYWx1ZSBpcyBcInt7dXNlcklkfX1cIiBhbmRcclxuICAgICAgICogdGhpcy5fdmFsdWUucGFyYW1ldGVycy51c2VySWQgaXMgMTIzLCB0aGVuIGZpbHRlci5WYWx1ZSB3aWxsIGJlIHJlcGxhY2VkIHdpdGhcclxuICAgICAgICogXCIxMjNcIi5cclxuICAgICAgICovXHJcbiAgICAgIGRhdGEuV2hlcmVDbGF1c2UuRmlsdGVycy5mb3JFYWNoKChmaWx0ZXI6IGFueSkgPT4ge1xyXG4gICAgICAgIC8vIGZpbHRlci5WYWx1ZVR5cGUgaXMgMSAobGl0ZXJhbClcclxuICAgICAgICBpZiAoZmlsdGVyLlZhbHVlICYmIGZpbHRlci5WYWx1ZVR5cGUgPT0gMSkge1xyXG4gICAgICAgICAgZmlsdGVyLlZhbHVlID0gZmlsdGVyLlZhbHVlLnJlcGxhY2UoXHJcbiAgICAgICAgICAgIC97eyhbXn1dKyl9fS9nLFxyXG4gICAgICAgICAgICAobWF0Y2g6IHN0cmluZywga2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHBhcmFtZXRlcnNba2V5XTtcclxuICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDogbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICAoZGF0YT8uV2hlcmVDbGF1c2U/LkZpbHRlcnMgfHwgW10pLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGVsZW1lbnQuVmFsdWVUeXBlID09PSBGaWx0ZXJWYWx1ZVR5cGUuUGFyYW1ldGVyICYmXHJcbiAgICAgICAgICBwYXJhbWV0ZXJzW2VsZW1lbnQuRmllbGRJRF1cclxuICAgICAgICApIHtcclxuICAgICAgICAgIGVsZW1lbnQuVmFsdWUgPSBwYXJhbWV0ZXJzW2VsZW1lbnQuRmllbGRJRF07XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmRzcUhlbHBlci5leGVjdXRlUXVlcnkoZGF0YSwgUXVlcnlUeXBlLlNlbGVjdCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFeGVjdXRlcyBhIHNlbGVjdCBxdWVyeSBieSBpdHMgSUQsIHVzaW5nIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHNlbGVjdFF1ZXJ5SWQgLSBUaGUgSUQgb2YgdGhlIHNlbGVjdCBxdWVyeSB0byBiZSBleGVjdXRlZC5cclxuICAgKiBAcGFyYW0gcGFyYW1ldGVycyAtIE9wdGlvbmFsIHBhcmFtZXRlcnMgdG8gYmUgYXBwbGllZCB0byB0aGUgcXVlcnkuXHJcbiAgICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiB0aGUgc2VsZWN0IHF1ZXJ5IGV4ZWN1dGlvbi5cclxuICAgKiBAdGhyb3dzIEFuIGVycm9yIGlmIHRoZSBBUEkgcmVzcG9uc2Ugc3RhdHVzIGNvZGUgaXMgbm90ICcyMDAnLlxyXG4gICAqL1xyXG4gIGV4ZWN1dGVTZWxlY3RRdWVyeUJ5SWQoc2VsZWN0UXVlcnlJZDogc3RyaW5nLCBwYXJhbWV0ZXJzPzogYW55KTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLmV4ZWN1dGVSQVdEU1FXaXRoTmFtZSh7XHJcbiAgICAgIEFwcE9iamVjdE5hbWU6IEFwcE9iamVjdHNDb25zdGFudHMuVEFCRF9RdWVyaWVzLFxyXG4gICAgICBEU1FOYW1lOiBEYXRhU291cmNlUXVlcmllc0NvbnN0YW50cy5EZXRhaWxfVEFCRF9RdWVyaWVzLFxyXG4gICAgICBSZXF0b2tlbnM6IHtcclxuICAgICAgICBJRDogc2VsZWN0UXVlcnlJZCxcclxuICAgICAgfSxcclxuICAgIH0pLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcCgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzLlN0YXR1c0NvZGUgPT09ICcyMDAnKSB7XHJcbiAgICAgICAgICBjb25zdCBDb25maWd1cmF0aW9uID0gSlNPTi5wYXJzZShyZXMuUmVzdWx0WzBdLkNvbmZpZ3VyYXRpb24gfHwgJ3t9Jyk7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RFeGVjdXRvcihDb25maWd1cmF0aW9uLCBwYXJhbWV0ZXJzKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHJlcy5NZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGVzdENvbm5lY3Rpb24oY29ubmVjdGlvbklkOiBhbnksIHBhcmFtcz86IGFueSk6IGFueSB7XHJcbiAgICBpZiAoY29ubmVjdGlvbklkKSB7XHJcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICAgIGlmIChoZWFkZXJzKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5nZXQoXHJcbiAgICAgICAgICBgJHtBUEkudGVzdENvbm5lY3Rpb259JHtjb25uZWN0aW9uSWR9YCxcclxuICAgICAgICAgIHBhcmFtcyxcclxuICAgICAgICAgIGhlYWRlcnNcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbiAgZ2V0UGVyZm9ybVZhbGlkYXRpb24oY29ubmVjdGlvbklkOiBhbnksIHBhcmFtcz86IGFueSk6IGFueSB7XHJcbiAgICBpZiAoY29ubmVjdGlvbklkKSB7XHJcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICAgIGlmIChoZWFkZXJzKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5nZXQoXHJcbiAgICAgICAgICBgJHtBUEkucGVyZm9ybVZhbGlkYXRpb259JHtjb25uZWN0aW9uSWR9YCxcclxuICAgICAgICAgIHBhcmFtcyxcclxuICAgICAgICAgIGhlYWRlcnNcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgdGFiIGNvbXBvbmVudHMgZm9yIHRoZSBnaXZlbiB0ZW5hbnRcclxuICAgKiBAcGFyYW0gY29ubmVjdGlvbklkIFRoZSBJRCBvZiB0aGUgY29ubmVjdGlvblxyXG4gICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgb2YgdGhlIHJlc3BvbnNlIGZyb20gdGhlIEFQSVxyXG4gICAqL1xyXG4gIHNldFRhYkNvbXBvbmVudHNGb3JUZW5hbnQoY29ubmVjdGlvbklkOiBzdHJpbmcsIGRhdGE/OiBhbnkpOiBhbnkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIGlmIChoZWFkZXJzKSB7XHJcbiAgICAgIC8vIFNldCB0aGUgdGFiIGNvbXBvbmVudHMgZm9yIHRoZSB0ZW5hbnRcclxuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KFxyXG4gICAgICAgIC8vIEFQSSBlbmRwb2ludCBmb3Igc2V0dGluZyB0YWIgY29tcG9uZW50c1xyXG4gICAgICAgIGAke0FQSS5zZXRUYWJDb21wb25lbnRzfSR7Y29ubmVjdGlvbklkfWAsXHJcbiAgICAgICAgZGF0YSxcclxuICAgICAgICAvLyBUaGUgaGVhZGVycyBmb3IgdGhlIHJlcXVlc3RcclxuICAgICAgICBoZWFkZXJzXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSBmb3JtIGNvbmZpZ3VyYXRpb24gZm9yIGEgY29tbW9uIGZpbHRlciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgYXBwbGljYXRpb24gb2JqZWN0IElELlxyXG4gICAqIEBwYXJhbSBhcHBPYmplY3RJZCAtIFRoZSBJRCBvZiB0aGUgYXBwbGljYXRpb24gb2JqZWN0LlxyXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBPcHRpb25hbCBwYXJhbWV0ZXJzIGZvciB0aGUgcmVxdWVzdC5cclxuICAgKiBAcmV0dXJucyBUaGUgcmVzcG9uc2UgZnJvbSB0aGUgQVBJIG9yIG51bGwgaWYgaGVhZGVycyBhcmUgdW5hdmFpbGFibGUuXHJcbiAgICovXHJcbiAgZ2V0QnVpbGRGb3JtSU9Gb3JDb21tb25GaWx0ZXIoYXBwT2JqZWN0SWQ6IHN0cmluZywgcGFyYW1zPzogYW55KSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgaWYgKGhlYWRlcnMpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5nZXQoXHJcbiAgICAgICAgYCR7QVBJLkJ1aWxkRm9ybUlPQ29tcG9uZW50c30ke2FwcE9iamVjdElkfSZUeXBlPUNvbW1vbkZpbHRlcmAsXHJcbiAgICAgICAgcGFyYW1zLFxyXG4gICAgICAgIGhlYWRlcnNcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGEgZm9ybSBjb25maWd1cmF0aW9uIGZvciBhIGJ1bGsgdXBkYXRlIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBhcHBsaWNhdGlvbiBvYmplY3QgSUQuXHJcbiAgICogQHBhcmFtIGFwcE9iamVjdElkIC0gVGhlIElEIG9mIHRoZSBhcHBsaWNhdGlvbiBvYmplY3QuXHJcbiAgICogQHBhcmFtIHBhcmFtcyAtIE9wdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHRoZSByZXF1ZXN0LlxyXG4gICAqIEByZXR1cm5zIFRoZSByZXNwb25zZSBmcm9tIHRoZSBBUEkgb3IgbnVsbCBpZiBoZWFkZXJzIGFyZSB1bmF2YWlsYWJsZS5cclxuICAgKi9cclxuICBnZXRCdWlsZEZvcm1JT0ZvckJ1bGtVcGRhdGUoYXBwT2JqZWN0SWQ6IHN0cmluZywgcGFyYW1zPzogYW55KSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgaWYgKGhlYWRlcnMpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5nZXQoXHJcbiAgICAgICAgYCR7QVBJLkJ1aWxkRm9ybUlPQ29tcG9uZW50c30ke2FwcE9iamVjdElkfSZUeXBlPUJ1bGtVcGRhdGVgLFxyXG4gICAgICAgIHBhcmFtcyxcclxuICAgICAgICBoZWFkZXJzXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vIC8qKlxyXG4gIC8vICAqIEdldCBSZXNvdXJjZSBMYW5ndWFnZSBCeSBMYW5ndWFnZSBDb2RlXHJcbiAgLy8gICogQHBhcmFtIGxhbmd1YWdlQ29kZSAtIExhbmd1YWdlIENvZGVcclxuICAvLyAgKiBAcmV0dXJucyBSZXNwb25zZSBmcm9tIHRoZSBBUElcclxuICAvLyAgKi9cclxuICAvLyBnZXRSZXNvdXJjZUxhbmd1YWdlQnlMYW5ndWFnZUNvZGUobGFuZ3VhZ2VDb2RlOiBudW1iZXIpOiBhbnkge1xyXG4gIC8vICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAvLyAgIGlmIChoZWFkZXJzKSB7XHJcbiAgLy8gICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChcclxuICAvLyAgICAgICBgJHtBUEkubGFuZ3VhZ2VSZXNvdXJjZX1gLFxyXG4gIC8vICAgICAgIHsgTGFuZ3VhZ2VDb2RlOiBsYW5ndWFnZUNvZGUgfSxcclxuICAvLyAgICAgICBoZWFkZXJzXHJcbiAgLy8gICAgICk7XHJcbiAgLy8gICB9XHJcbiAgLy8gICByZXR1cm4gbnVsbDtcclxuICAvLyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBTZWFyY2ggRGF0YVxyXG4gICAqIEBwYXJhbSBzZWFyY2hRdWVyeSAtIFNlYXJjaCBRdWVyeSBzdHJpbmdcclxuICAgKiBAcGFyYW0gbGltaXQgLSBMaW1pdCBvZiBzZWFyY2ggcmVzdWx0c1xyXG4gICAqIEByZXR1cm5zIFJlc3BvbnNlIGZyb20gdGhlIEFQSVxyXG4gICAqL1xyXG4gIGdldFNlYXJjaERhdGEoc2VhcmNoUXVlcnk6IHN0cmluZywgbGltaXQ6IG51bWJlciwgcGFyYW1zPzogYW55KTogYW55IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICBpZiAoaGVhZGVycykge1xyXG4gICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmdldChcclxuICAgICAgICBgJHtBUEkuc2VhcmNofT9zZWFyY2hRdWVyeT0ke3NlYXJjaFF1ZXJ5fSZsaW1pdD0ke2xpbWl0fWAsXHJcbiAgICAgICAgcGFyYW1zLFxyXG4gICAgICAgIGhlYWRlcnNcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5zZXJ0IFNjcmVlbiBQZXJmb3JtYW5jZSBTdGF0aXN0aWNzXHJcbiAgICogQHBhcmFtIGRhdGEgLSBEYXRhIHRvIGluc2VydFxyXG4gICAqIEByZXR1cm5zIFJlc3BvbnNlIGZyb20gdGhlIEFQSVxyXG4gICAqL1xyXG4gIGluc2VydFNjcmVlblBlcmZvcm1hbmNlU3RhdGlzdGljcyhkYXRhOiBhbnkpOiBhbnkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIGlmIChoZWFkZXJzKSB7XHJcbiAgICAgIC8vIFNldCB0aGUgdGFiIGNvbXBvbmVudHMgZm9yIHRoZSB0ZW5hbnRcclxuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KFxyXG4gICAgICAgIC8vIEFQSSBlbmRwb2ludCBmb3IgaW5zZXJ0aW5nIHNjcmVlbiBwZXJmb3JtYW5jZSBzdGF0aXN0aWNzXHJcbiAgICAgICAgYCR7QVBJLkluc2VydFNjcmVlblBlcmZvcm1hbmNlQW5hbHl0aWNzfWAsXHJcbiAgICAgICAgZGF0YSxcclxuICAgICAgICAvLyBUaGUgaGVhZGVycyBmb3IgdGhlIHJlcXVlc3RcclxuICAgICAgICBoZWFkZXJzXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4ZWN1dGVzIGFuIEhUVFAgcmVxdWVzdCB3aXRoIHRoZSBzcGVjaWZpZWQgbWV0aG9kLCBVUkwsIGhlYWRlcnMsIGFuZCBib2R5LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGZ1bGxVcmwgLVRoZSBmdWxsIFVSTCBvZiB0aGUgcmVxdWVzdCBjb250YWluaW5nIHRoZSBxdWVyeSBwYXJhbWV0ZXJzLlxyXG4gICAqIEBwYXJhbSBtZXRob2QgLSBUaGUgSFRUUCBtZXRob2QgdG8gYmUgdXNlZCAoJ0dFVCcsICdQT1NUJywgJ1BVVCcsICdERUxFVEUnKS5cclxuICAgKiBAcGFyYW0gaGVhZGVycyAtIFRoZSBoZWFkZXJzIHRvIGluY2x1ZGUgaW4gdGhlIHJlcXVlc3QuXHJcbiAgICogQHBhcmFtIGJvZHkgLSBUaGUgYm9keSBjb250ZW50IGZvciBtZXRob2RzIGxpa2UgUE9TVCBhbmQgUFVULlxyXG4gICAqIEByZXR1cm5zIFRoZSBBUEkgcmVzcG9uc2UgY29ycmVzcG9uZGluZyB0byB0aGUgcmVxdWVzdC5cclxuICAgKi9cclxuICBleGVjdXRlSHR0cFJlcXVlc3QoXHJcbiAgICBmdWxsVXJsOiBhbnksXHJcbiAgICBtZXRob2Q6ICdHRVQnIHwgJ1BPU1QnIHwgJ1BVVCcgfCAnREVMRVRFJyxcclxuICAgIGhlYWRlcnM6IGFueSxcclxuICAgIGJvZHk6IGFueVxyXG4gICk6IGFueSB7XHJcbiAgICBoZWFkZXJzID0ge1xyXG4gICAgICAuLi4oaGVhZGVycyB8fCB7fSksXHJcbiAgICAgICdYLVNraXAtSW50ZXJjZXB0b3InOiAndHJ1ZScsXHJcbiAgICAgICdYLVNraXAtQXV0aCc6ICd0cnVlJyxcclxuICAgICAgJ1gtVHJhY2stQVBJLURldGFpbHMnOiAndHJ1ZScsXHJcbiAgICB9O1xyXG4gICAgaWYgKG1ldGhvZCA9PSAnR0VUJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmdldEJ5VXJsKGZ1bGxVcmwsIHsgaGVhZGVycyB9KTtcclxuICAgIH0gZWxzZSBpZiAobWV0aG9kID09ICdQT1NUJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3RCeVVybChmdWxsVXJsLCBib2R5LCB7IGhlYWRlcnMgfSk7XHJcbiAgICB9IGVsc2UgaWYgKG1ldGhvZCA9PSAnUFVUJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnB1dEJ5VXJsKGZ1bGxVcmwsIGJvZHksIHsgaGVhZGVycyB9KTtcclxuICAgIH0gZWxzZSBpZiAobWV0aG9kID09ICdERUxFVEUnKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZGVsZXRlQnlVcmwoZnVsbFVybCwgeyBoZWFkZXJzIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2VuZXJhdGVzIGFuIEhUVFAgUmVxdWVzdCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgRGF0YVNvdXJjZVF1ZXJ5IG5hbWVcclxuICAgKiBAcGFyYW0gUXVlcnlOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIERhdGFTb3VyY2VRdWVyeVxyXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGdlbmVyYXRlZCBIVFRQIHJlcXVlc3RcclxuICAgKi9cclxuICBnZW5lcmF0ZUh0dHBSZXF1ZXN0KFF1ZXJ5TmFtZTogc3RyaW5nKTogYW55IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICBpZiAoaGVhZGVycykge1xyXG4gICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmdldChcclxuICAgICAgICBgJHtBUEkuR2VuZXJhdGVIdHRwUmVxdWVzdH0/ZHNxTmFtZT0ke1F1ZXJ5TmFtZX1gLFxyXG4gICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICBoZWFkZXJzXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyB0aGUgZGV0YWlsZWQgYW5hbHl0aWNzIG9mIGEgc2NyZWVuJ3MgcGVyZm9ybWFuY2UuXHJcbiAgICogQHBhcmFtIGRhdGEgLSBEYXRhIHRvIGJlIHNlbnQgdG8gdGhlIEFQSVxyXG4gICAqIEByZXR1cm5zIFJlc3BvbnNlIGZyb20gdGhlIEFQSVxyXG4gICAqL1xyXG4gIGdldERldGFpbE9mUGVyZm9ybWFuY2VBbmFseXRpY3MoZGF0YTogYW55KTogYW55IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICBpZiAoaGVhZGVycykge1xyXG4gICAgICAvLyBTZXQgdGhlIHRhYiBjb21wb25lbnRzIGZvciB0aGUgdGVuYW50XHJcbiAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChcclxuICAgICAgICAvLyBBUEkgZW5kcG9pbnQgZm9yIHJldHJpZXZpbmcgdGhlIGRldGFpbGVkIGFuYWx5dGljcyBvZiBhIHNjcmVlbidzIHBlcmZvcm1hbmNlXHJcbiAgICAgICAgYCR7QVBJLkdldERldGFpbE9mUGVyZm9ybWFuY2VBbmFseXRpY3N9YCxcclxuICAgICAgICBkYXRhLFxyXG4gICAgICAgIC8vIFRoZSBoZWFkZXJzIGZvciB0aGUgcmVxdWVzdFxyXG4gICAgICAgIGhlYWRlcnNcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgXHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBzdW1tYXJ5IG9mIHBlcmZvcm1hbmNlIGFuYWx5dGljc1xyXG4gICAqIEBwYXJhbSBkYXRhIC0gRGF0YSB0byBiZSBzZW50IHRvIHRoZSBBUElcclxuICAgKiBAcmV0dXJucyBSZXNwb25zZSBmcm9tIHRoZSBBUElcclxuICAgKi9cclxuICBnZXRTdW1tYXJ5T2ZQZXJmb3JtYW5jZUFuYWx5dGljcyhkYXRhOiBhbnkpOiBhbnkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIGlmIChoZWFkZXJzKSB7XHJcbiAgICAgIC8vIFNldCB0aGUgdGFiIGNvbXBvbmVudHMgZm9yIHRoZSB0ZW5hbnRcclxuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KFxyXG4gICAgICAgIC8vIEFQSSBlbmRwb2ludCBmb3IgaW5zZXJ0aW5nIHNjcmVlbiBwZXJmb3JtYW5jZSBzdGF0aXN0aWNzXHJcbiAgICAgICAgYCR7QVBJLkdldFN1bW1hcnlPZlBlcmZvcm1hbmNlQW5hbHl0aWNzfWAsXHJcbiAgICAgICAgZGF0YSxcclxuICAgICAgICAvLyBUaGUgaGVhZGVycyBmb3IgdGhlIHJlcXVlc3RcclxuICAgICAgICBoZWFkZXJzXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbn1cclxuIl19
366
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWdldC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2NydWQvdGFiLWdldC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUV2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLDBCQUEwQixHQUMzQixNQUFNLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBR2pDLE1BQU0sT0FBTyxhQUFhO0lBRDFCO1FBRW1CLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztLQXNaaEQ7SUFwWkM7Ozs7T0FJRztJQUNILHFCQUFxQixDQUFDLElBQVM7UUFDN0IsTUFB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eEMsSUFBSTtZQUNKLDhCQUE4QjtZQUM5QixPQUFPLENBQ1IsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsZ0NBQWdDLENBQUMsSUFBUztRQUN4QyxNQUFNLE9BQU8sR0FBRyxVQUFVLEVBQUUsQ0FBQztRQUM3QixJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osd0NBQXdDO1lBQ3hDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJO1lBQ3pCLDJEQUEyRDtZQUMzRCxHQUFHLEdBQUcsQ0FBQyxnQ0FBZ0MsRUFBRSxFQUN6QyxJQUFJO1lBQ0osOEJBQThCO1lBQzlCLE9BQU8sQ0FDUixDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs4RUF2WlUsYUFBYTt1RUFBYixhQUFhLFdBQWIsYUFBYSxtQkFEQSxNQUFNOztpRkFDbkIsYUFBYTtjQUR6QixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5cclxuaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9odHRwLWNsaWVudC9hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IERTUUhlbHBlciB9IGZyb20gJy4uL2hlbHBlcnMvY29tbW9uL2RzcS5oZWxwZXJzJztcclxuaW1wb3J0IHsgZ2V0SGVhZGVycyB9IGZyb20gJy4uL3V0aWxzL3JlcS1yZXMudXRpbCc7XHJcbmltcG9ydCB7IEFQSSB9IGZyb20gJy4uL2NvbnN0YW50cy9hcGktY29uc3RhbnRzJztcclxuaW1wb3J0IHsgZ2V0QXBwT2JqZWN0IH0gZnJvbSAnLi4vdXRpbHMvdGFiLWFwcC51dGlsJztcclxuaW1wb3J0IHsgQ29tbW9uIH0gZnJvbSAnLi4vY29uc3RhbnRzL2NvbW1vbic7XHJcbmltcG9ydCB7IEFQSVNlbGVjdFF1ZXJ5IH0gZnJvbSAnLi4vbW9kZWxzL2FwaS1xdWVyeS5jbGFzcyc7XHJcbmltcG9ydCB7IEZpbHRlclZhbHVlVHlwZSB9IGZyb20gJy4uL2VudW1zL2RzcS5lbnVtJztcclxuaW1wb3J0IHsgUXVlcnlUeXBlIH0gZnJvbSAnLi4vZW51bXMvcXVlcnkuZW51bSc7XHJcbmltcG9ydCB7XHJcbiAgQXBwT2JqZWN0c0NvbnN0YW50cyxcclxuICBEYXRhU291cmNlUXVlcmllc0NvbnN0YW50cyxcclxufSBmcm9tICcuLi9jb25zdGFudHMvYXBwLW9iamVjdC1jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBUYWJHZXRTZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IGFwaVNlcnZpY2UgPSBpbmplY3QoQXBpU2VydmljZSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkc3FIZWxwZXIgPSBpbmplY3QoRFNRSGVscGVyKTtcclxuXHJcbiAgLyoqXHJcbiAgICogRXhlY3V0ZSBSQVcgRFNRIHdpdGggTmFtZVxyXG4gICAqIEBwYXJhbSBkYXRhIC0gT2JqZWN0IGNvbnRhaW5pbmcgQXBwT2JqZWN0TmFtZSBhbmQgRFNRTmFtZVxyXG4gICAqIEByZXR1cm5zIFJlc3BvbnNlIGZyb20gdGhlIEFQSVxyXG4gICAqL1xyXG4gIGV4ZWN1dGVSQVdEU1FXaXRoTmFtZShkYXRhOiBhbnkpOiBhbnkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIGlmIChoZWFkZXJzKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChcclxuICAgICAgICBgJHtBUEkuZ2V0RFNRfS8ke2RhdGEuQXBwT2JqZWN0TmFtZX0vJHtkYXRhLkRTUU5hbWV9YCxcclxuICAgICAgICBkYXRhLFxyXG4gICAgICAgIGhlYWRlcnNcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IFJlY29yZFxyXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBQYXJhbWV0ZXJzIGZvciB0aGUgcmVxdWVzdFxyXG4gICAqIEByZXR1cm5zIFJlc3BvbnNlIGZyb20gdGhlIEFQSVxyXG4gICAqL1xyXG4gIGdldFJlY29yZChwYXJhbXM6IGFueSk6IGFueSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgaWYgKGhlYWRlcnMpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5nZXQoYCR7QVBJLmdldHJlY29yZH1gLCBwYXJhbXMsIGhlYWRlcnMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFeGVjdXRlIFJhdyBTUUxcclxuICAgKiBAcGFyYW0gZGF0YSAtIERhdGEgZm9yIHRoZSByZXF1ZXN0XHJcbiAgICogQHJldHVybnMgUmVzcG9uc2UgZnJvbSB0aGUgQVBJXHJcbiAgICovXHJcbiAgZXhlY3V0ZVJhd1NxbChkYXRhOiBhbnkpOiBhbnkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIGlmIChoZWFkZXJzKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChgJHtBUEkucmF3U1FMfSR7ZGF0YX1gLCAnJywgaGVhZGVycyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBIaXN0b3J5XHJcbiAgICogQHBhcmFtIGFwcE9iamVjdElkIC0gSUQgb2YgdGhlIGFwcGxpY2F0aW9uIG9iamVjdFxyXG4gICAqIEBwYXJhbSByZWNvcmRJZHMgLSBBcnJheSBvZiByZWNvcmQgSURzXHJcbiAgICogQHJldHVybnMgUmVzcG9uc2UgZnJvbSB0aGUgQVBJXHJcbiAgICovXHJcbiAgZ2V0SGlzdG9yeShhcHBPYmplY3RJZDogc3RyaW5nLCByZWNvcmRJZHM6IHN0cmluZ1tdKTogYW55IHtcclxuICAgIGNvbnN0IGRhdGE6IGFueSA9IHt9O1xyXG4gICAgaWYgKGFwcE9iamVjdElkICYmIHJlY29yZElkcykge1xyXG4gICAgICBjb25zdCBhcHBPYmplY3ROYW1lID0gZ2V0QXBwT2JqZWN0KGFwcE9iamVjdElkKT8uT2JqZWN0TmFtZTtcclxuICAgICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgICAgaWYgKGFwcE9iamVjdE5hbWUgJiYgaGVhZGVycykge1xyXG4gICAgICAgIGRhdGEuT2JqZWN0TmFtZSA9IGFwcE9iamVjdE5hbWU7XHJcbiAgICAgICAgZGF0YS5SZWNvcmRJZHMgPSByZWNvcmRJZHM7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KGAke0FQSS5nZXRIaXN0b3J5fWAsIGRhdGEsIGhlYWRlcnMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoYW5nZSBQYXNzd29yZFxyXG4gICAqIEBwYXJhbSBkYXRhIC0gRGF0YSBmb3IgY2hhbmdpbmcgcGFzc3dvcmRcclxuICAgKiBAcmV0dXJucyBSZXNwb25zZSBmcm9tIHRoZSBBUElcclxuICAgKi9cclxuICBjaGFuZ2VQYXNzd29yZChkYXRhOiBhbnkpOiBhbnkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIGlmIChoZWFkZXJzKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChgJHtBUEkuY2hhbmdlUGFzc3dvcmR9YCwgZGF0YSwgaGVhZGVycyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXNldCBQYXNzd29yZFxyXG4gICAqIEBwYXJhbSBkYXRhIC0gRGF0YSBmb3IgcmVzZXR0aW5nIHBhc3N3b3JkXHJcbiAgICogQHJldHVybnMgUmVzcG9uc2UgZnJvbSB0aGUgQVBJXHJcbiAgICovXHJcbiAgcmVzZXRQYXNzd29yZChkYXRhOiBhbnkpOiBhbnkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgIGFwcGxpY2F0aW9uQ29kZTogQ29tbW9uLmFwcGxpY2F0aW9uQ29kZSxcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KGAke0FQSS5yZXN0cGFzc3dvcmR9YCwgZGF0YSwgaGVhZGVycyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQTUpBWSBJbXBvcnRcclxuICAgKiBAcGFyYW0gZGF0YSAtIERhdGEgZm9yIFBNSkFZIGltcG9ydFxyXG4gICAqIEByZXR1cm5zIFJlc3BvbnNlIGZyb20gdGhlIEFQSVxyXG4gICAqL1xyXG4gIHBtamF5SW1wb3J0KGRhdGE6IGFueSk6IGFueSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgaWYgKGhlYWRlcnMpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KGAke0FQSS5wbWpheUltcG9ydH1gLCBkYXRhLCBoZWFkZXJzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4ZWN1dGVzIGEgc2VsZWN0IHF1ZXJ5IHdpdGggb3B0aW9uYWwgcGFyYW1ldGVyc1xyXG4gICAqIEBwYXJhbSBkYXRhIC0gVGhlIHNlbGVjdCBxdWVyeSBkYXRhXHJcbiAgICogQHBhcmFtIHBhcmFtZXRlcnMgLSBPcHRpb25hbCBwYXJhbWV0ZXJzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHF1ZXJ5XHJcbiAgICogQHJldHVybnMgUmVzdWx0IG9mIHRoZSBzZWxlY3QgcXVlcnkgZXhlY3V0aW9uXHJcbiAgICovXHJcbiAgc2VsZWN0RXhlY3V0b3IoZGF0YTogQVBJU2VsZWN0UXVlcnksIHBhcmFtZXRlcnM/OiBhbnkpOiBhbnkge1xyXG4gICAgaWYgKHBhcmFtZXRlcnMgJiYgT2JqZWN0LmtleXMocGFyYW1ldGVycykubGVuZ3RoKSB7XHJcbiAgICAgIGRhdGEuV2hlcmVDbGF1c2UuRmlsdGVyTG9naWMgPSBkYXRhLldoZXJlQ2xhdXNlLkZpbHRlckxvZ2ljIHx8ICdbXSc7XHJcbiAgICAgIGRhdGEuV2hlcmVDbGF1c2UuRmlsdGVycyA9IGRhdGEuV2hlcmVDbGF1c2UuRmlsdGVycyB8fCBbXTtcclxuICAgICAgZGF0YS5XaGVyZUNsYXVzZS5TUUxRdWVyeSA9IGRhdGEuV2hlcmVDbGF1c2UuU1FMUXVlcnkgfHwgJyc7XHJcbiAgICAgIC8qKlxyXG4gICAgICAgKiBSZXBsYWNlcyB2YWx1ZXMgZnJvbSBwYXJhbWV0ZXJzIGlmIG1hdGNoZWQgYW5kIGluIGZvcm1hdCBvZiB7e2tleX19LlxyXG4gICAgICAgKiBFeGFtcGxlOiBpZiBmaWx0ZXIuVmFsdWUgaXMgXCJ7e3VzZXJJZH19XCIgYW5kXHJcbiAgICAgICAqIHRoaXMuX3ZhbHVlLnBhcmFtZXRlcnMudXNlcklkIGlzIDEyMywgdGhlbiBmaWx0ZXIuVmFsdWUgd2lsbCBiZSByZXBsYWNlZCB3aXRoXHJcbiAgICAgICAqIFwiMTIzXCIuXHJcbiAgICAgICAqL1xyXG4gICAgICBkYXRhLldoZXJlQ2xhdXNlLkZpbHRlcnMuZm9yRWFjaCgoZmlsdGVyOiBhbnkpID0+IHtcclxuICAgICAgICAvLyBmaWx0ZXIuVmFsdWVUeXBlIGlzIDEgKGxpdGVyYWwpXHJcbiAgICAgICAgaWYgKGZpbHRlci5WYWx1ZSAmJiBmaWx0ZXIuVmFsdWVUeXBlID09IEZpbHRlclZhbHVlVHlwZS5MaXRlcmFsKSB7XHJcbiAgICAgICAgICBmaWx0ZXIuVmFsdWUgPSBmaWx0ZXIuVmFsdWUucmVwbGFjZShcclxuICAgICAgICAgICAgL3t7KFtefV0rKX19L2csXHJcbiAgICAgICAgICAgIChtYXRjaDogc3RyaW5nLCBrZXk6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcGFyYW1ldGVyc1trZXldO1xyXG4gICAgICAgICAgICAgIHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpZiB2YWx1ZVR5cGUgPSAyIChQYXJhbWV0ZXJzKVxyXG4gICAgICAgIC8vIHRoZW4gd2UgbmVlZCB0byByZXBsYWNlIHRoZSB2YWx1ZSB3aXRoIHBhcmFtZXRlcnMgYW5kIGNoYW5nZSB0aGUgdmFsdWVUeXBlIHRvIDEgKExpdGVyYWwpXHJcbiAgICAgICAgZWxzZSBpZiAoZmlsdGVyLlZhbHVlVHlwZSA9PSBGaWx0ZXJWYWx1ZVR5cGUuUGFyYW1ldGVyKSB7XHJcbiAgICAgICAgICBmaWx0ZXIuVmFsdWUgPSBmaWx0ZXIuVmFsdWUucmVwbGFjZShcclxuICAgICAgICAgICAgLyhbXn1dKykvZyxcclxuICAgICAgICAgICAgKG1hdGNoOiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBwYXJhbWV0ZXJzW2tleV07XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBmaWx0ZXIuVmFsdWVUeXBlID0gRmlsdGVyVmFsdWVUeXBlLkxpdGVyYWw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgKGRhdGE/LldoZXJlQ2xhdXNlPy5GaWx0ZXJzIHx8IFtdKS5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBlbGVtZW50LlZhbHVlVHlwZSA9PT0gRmlsdGVyVmFsdWVUeXBlLlBhcmFtZXRlciAmJlxyXG4gICAgICAgICAgcGFyYW1ldGVyc1tlbGVtZW50LkZpZWxkSURdXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBlbGVtZW50LlZhbHVlID0gcGFyYW1ldGVyc1tlbGVtZW50LkZpZWxkSURdO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5kc3FIZWxwZXIuZXhlY3V0ZVF1ZXJ5KGRhdGEsIFF1ZXJ5VHlwZS5TZWxlY3QpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXhlY3V0ZXMgYSBzZWxlY3QgcXVlcnkgYnkgaXRzIElELCB1c2luZyB0aGUgcHJvdmlkZWQgcGFyYW1ldGVycy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBzZWxlY3RRdWVyeUlkIC0gVGhlIElEIG9mIHRoZSBzZWxlY3QgcXVlcnkgdG8gYmUgZXhlY3V0ZWQuXHJcbiAgICogQHBhcmFtIHBhcmFtZXRlcnMgLSBPcHRpb25hbCBwYXJhbWV0ZXJzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHF1ZXJ5LlxyXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIHNlbGVjdCBxdWVyeSBleGVjdXRpb24uXHJcbiAgICogQHRocm93cyBBbiBlcnJvciBpZiB0aGUgQVBJIHJlc3BvbnNlIHN0YXR1cyBjb2RlIGlzIG5vdCAnMjAwJy5cclxuICAgKi9cclxuICBleGVjdXRlU2VsZWN0UXVlcnlCeUlkKHNlbGVjdFF1ZXJ5SWQ6IHN0cmluZywgcGFyYW1ldGVycz86IGFueSk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5leGVjdXRlUkFXRFNRV2l0aE5hbWUoe1xyXG4gICAgICBBcHBPYmplY3ROYW1lOiBBcHBPYmplY3RzQ29uc3RhbnRzLlRBQkRfUXVlcmllcyxcclxuICAgICAgRFNRTmFtZTogRGF0YVNvdXJjZVF1ZXJpZXNDb25zdGFudHMuRGV0YWlsX1RBQkRfUXVlcmllcyxcclxuICAgICAgUmVxdG9rZW5zOiB7XHJcbiAgICAgICAgSUQ6IHNlbGVjdFF1ZXJ5SWQsXHJcbiAgICAgIH0sXHJcbiAgICB9KS5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcy5TdGF0dXNDb2RlID09PSAnMjAwJykge1xyXG4gICAgICAgICAgY29uc3QgQ29uZmlndXJhdGlvbiA9IEpTT04ucGFyc2UocmVzLlJlc3VsdFswXS5Db25maWd1cmF0aW9uIHx8ICd7fScpO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0RXhlY3V0b3IoQ29uZmlndXJhdGlvbiwgcGFyYW1ldGVycyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihyZXMuTWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFRlc3RDb25uZWN0aW9uKGNvbm5lY3Rpb25JZDogYW55LCBwYXJhbXM/OiBhbnkpOiBhbnkge1xyXG4gICAgaWYgKGNvbm5lY3Rpb25JZCkge1xyXG4gICAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgICBpZiAoaGVhZGVycykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZ2V0KFxyXG4gICAgICAgICAgYCR7QVBJLnRlc3RDb25uZWN0aW9ufSR7Y29ubmVjdGlvbklkfWAsXHJcbiAgICAgICAgICBwYXJhbXMsXHJcbiAgICAgICAgICBoZWFkZXJzXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG4gIGdldFBlcmZvcm1WYWxpZGF0aW9uKGNvbm5lY3Rpb25JZDogYW55LCBwYXJhbXM/OiBhbnkpOiBhbnkge1xyXG4gICAgaWYgKGNvbm5lY3Rpb25JZCkge1xyXG4gICAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgICBpZiAoaGVhZGVycykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZ2V0KFxyXG4gICAgICAgICAgYCR7QVBJLnBlcmZvcm1WYWxpZGF0aW9ufSR7Y29ubmVjdGlvbklkfWAsXHJcbiAgICAgICAgICBwYXJhbXMsXHJcbiAgICAgICAgICBoZWFkZXJzXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIHRhYiBjb21wb25lbnRzIGZvciB0aGUgZ2l2ZW4gdGVuYW50XHJcbiAgICogQHBhcmFtIGNvbm5lY3Rpb25JZCBUaGUgSUQgb2YgdGhlIGNvbm5lY3Rpb25cclxuICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIG9mIHRoZSByZXNwb25zZSBmcm9tIHRoZSBBUElcclxuICAgKi9cclxuICBzZXRUYWJDb21wb25lbnRzRm9yVGVuYW50KGNvbm5lY3Rpb25JZDogc3RyaW5nLCBkYXRhPzogYW55KTogYW55IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICBpZiAoaGVhZGVycykge1xyXG4gICAgICAvLyBTZXQgdGhlIHRhYiBjb21wb25lbnRzIGZvciB0aGUgdGVuYW50XHJcbiAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChcclxuICAgICAgICAvLyBBUEkgZW5kcG9pbnQgZm9yIHNldHRpbmcgdGFiIGNvbXBvbmVudHNcclxuICAgICAgICBgJHtBUEkuc2V0VGFiQ29tcG9uZW50c30ke2Nvbm5lY3Rpb25JZH1gLFxyXG4gICAgICAgIGRhdGEsXHJcbiAgICAgICAgLy8gVGhlIGhlYWRlcnMgZm9yIHRoZSByZXF1ZXN0XHJcbiAgICAgICAgaGVhZGVyc1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGEgZm9ybSBjb25maWd1cmF0aW9uIGZvciBhIGNvbW1vbiBmaWx0ZXIgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGFwcGxpY2F0aW9uIG9iamVjdCBJRC5cclxuICAgKiBAcGFyYW0gYXBwT2JqZWN0SWQgLSBUaGUgSUQgb2YgdGhlIGFwcGxpY2F0aW9uIG9iamVjdC5cclxuICAgKiBAcGFyYW0gcGFyYW1zIC0gT3B0aW9uYWwgcGFyYW1ldGVycyBmb3IgdGhlIHJlcXVlc3QuXHJcbiAgICogQHJldHVybnMgVGhlIHJlc3BvbnNlIGZyb20gdGhlIEFQSSBvciBudWxsIGlmIGhlYWRlcnMgYXJlIHVuYXZhaWxhYmxlLlxyXG4gICAqL1xyXG4gIGdldEJ1aWxkRm9ybUlPRm9yQ29tbW9uRmlsdGVyKGFwcE9iamVjdElkOiBzdHJpbmcsIHBhcmFtcz86IGFueSkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIGlmIChoZWFkZXJzKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZ2V0KFxyXG4gICAgICAgIGAke0FQSS5CdWlsZEZvcm1JT0NvbXBvbmVudHN9JHthcHBPYmplY3RJZH0mVHlwZT1Db21tb25GaWx0ZXJgLFxyXG4gICAgICAgIHBhcmFtcyxcclxuICAgICAgICBoZWFkZXJzXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBhIGZvcm0gY29uZmlndXJhdGlvbiBmb3IgYSBidWxrIHVwZGF0ZSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgYXBwbGljYXRpb24gb2JqZWN0IElELlxyXG4gICAqIEBwYXJhbSBhcHBPYmplY3RJZCAtIFRoZSBJRCBvZiB0aGUgYXBwbGljYXRpb24gb2JqZWN0LlxyXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBPcHRpb25hbCBwYXJhbWV0ZXJzIGZvciB0aGUgcmVxdWVzdC5cclxuICAgKiBAcmV0dXJucyBUaGUgcmVzcG9uc2UgZnJvbSB0aGUgQVBJIG9yIG51bGwgaWYgaGVhZGVycyBhcmUgdW5hdmFpbGFibGUuXHJcbiAgICovXHJcbiAgZ2V0QnVpbGRGb3JtSU9Gb3JCdWxrVXBkYXRlKGFwcE9iamVjdElkOiBzdHJpbmcsIHBhcmFtcz86IGFueSkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIGlmIChoZWFkZXJzKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZ2V0KFxyXG4gICAgICAgIGAke0FQSS5CdWlsZEZvcm1JT0NvbXBvbmVudHN9JHthcHBPYmplY3RJZH0mVHlwZT1CdWxrVXBkYXRlYCxcclxuICAgICAgICBwYXJhbXMsXHJcbiAgICAgICAgaGVhZGVyc1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvLyAvKipcclxuICAvLyAgKiBHZXQgUmVzb3VyY2UgTGFuZ3VhZ2UgQnkgTGFuZ3VhZ2UgQ29kZVxyXG4gIC8vICAqIEBwYXJhbSBsYW5ndWFnZUNvZGUgLSBMYW5ndWFnZSBDb2RlXHJcbiAgLy8gICogQHJldHVybnMgUmVzcG9uc2UgZnJvbSB0aGUgQVBJXHJcbiAgLy8gICovXHJcbiAgLy8gZ2V0UmVzb3VyY2VMYW5ndWFnZUJ5TGFuZ3VhZ2VDb2RlKGxhbmd1YWdlQ29kZTogbnVtYmVyKTogYW55IHtcclxuICAvLyAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgLy8gICBpZiAoaGVhZGVycykge1xyXG4gIC8vICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoXHJcbiAgLy8gICAgICAgYCR7QVBJLmxhbmd1YWdlUmVzb3VyY2V9YCxcclxuICAvLyAgICAgICB7IExhbmd1YWdlQ29kZTogbGFuZ3VhZ2VDb2RlIH0sXHJcbiAgLy8gICAgICAgaGVhZGVyc1xyXG4gIC8vICAgICApO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgcmV0dXJuIG51bGw7XHJcbiAgLy8gfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgU2VhcmNoIERhdGFcclxuICAgKiBAcGFyYW0gc2VhcmNoUXVlcnkgLSBTZWFyY2ggUXVlcnkgc3RyaW5nXHJcbiAgICogQHBhcmFtIGxpbWl0IC0gTGltaXQgb2Ygc2VhcmNoIHJlc3VsdHNcclxuICAgKiBAcmV0dXJucyBSZXNwb25zZSBmcm9tIHRoZSBBUElcclxuICAgKi9cclxuICBnZXRTZWFyY2hEYXRhKHNlYXJjaFF1ZXJ5OiBzdHJpbmcsIGxpbWl0OiBudW1iZXIsIHBhcmFtcz86IGFueSk6IGFueSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgaWYgKGhlYWRlcnMpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5nZXQoXHJcbiAgICAgICAgYCR7QVBJLnNlYXJjaH0/c2VhcmNoUXVlcnk9JHtzZWFyY2hRdWVyeX0mbGltaXQ9JHtsaW1pdH1gLFxyXG4gICAgICAgIHBhcmFtcyxcclxuICAgICAgICBoZWFkZXJzXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluc2VydCBTY3JlZW4gUGVyZm9ybWFuY2UgU3RhdGlzdGljc1xyXG4gICAqIEBwYXJhbSBkYXRhIC0gRGF0YSB0byBpbnNlcnRcclxuICAgKiBAcmV0dXJucyBSZXNwb25zZSBmcm9tIHRoZSBBUElcclxuICAgKi9cclxuICBpbnNlcnRTY3JlZW5QZXJmb3JtYW5jZVN0YXRpc3RpY3MoZGF0YTogYW55KTogYW55IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICBpZiAoaGVhZGVycykge1xyXG4gICAgICAvLyBTZXQgdGhlIHRhYiBjb21wb25lbnRzIGZvciB0aGUgdGVuYW50XHJcbiAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChcclxuICAgICAgICAvLyBBUEkgZW5kcG9pbnQgZm9yIGluc2VydGluZyBzY3JlZW4gcGVyZm9ybWFuY2Ugc3RhdGlzdGljc1xyXG4gICAgICAgIGAke0FQSS5JbnNlcnRTY3JlZW5QZXJmb3JtYW5jZUFuYWx5dGljc31gLFxyXG4gICAgICAgIGRhdGEsXHJcbiAgICAgICAgLy8gVGhlIGhlYWRlcnMgZm9yIHRoZSByZXF1ZXN0XHJcbiAgICAgICAgaGVhZGVyc1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFeGVjdXRlcyBhbiBIVFRQIHJlcXVlc3Qgd2l0aCB0aGUgc3BlY2lmaWVkIG1ldGhvZCwgVVJMLCBoZWFkZXJzLCBhbmQgYm9keS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBmdWxsVXJsIC1UaGUgZnVsbCBVUkwgb2YgdGhlIHJlcXVlc3QgY29udGFpbmluZyB0aGUgcXVlcnkgcGFyYW1ldGVycy5cclxuICAgKiBAcGFyYW0gbWV0aG9kIC0gVGhlIEhUVFAgbWV0aG9kIHRvIGJlIHVzZWQgKCdHRVQnLCAnUE9TVCcsICdQVVQnLCAnREVMRVRFJykuXHJcbiAgICogQHBhcmFtIGhlYWRlcnMgLSBUaGUgaGVhZGVycyB0byBpbmNsdWRlIGluIHRoZSByZXF1ZXN0LlxyXG4gICAqIEBwYXJhbSBib2R5IC0gVGhlIGJvZHkgY29udGVudCBmb3IgbWV0aG9kcyBsaWtlIFBPU1QgYW5kIFBVVC5cclxuICAgKiBAcmV0dXJucyBUaGUgQVBJIHJlc3BvbnNlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHJlcXVlc3QuXHJcbiAgICovXHJcbiAgZXhlY3V0ZUh0dHBSZXF1ZXN0KFxyXG4gICAgZnVsbFVybDogYW55LFxyXG4gICAgbWV0aG9kOiAnR0VUJyB8ICdQT1NUJyB8ICdQVVQnIHwgJ0RFTEVURScsXHJcbiAgICBoZWFkZXJzOiBhbnksXHJcbiAgICBib2R5OiBhbnlcclxuICApOiBhbnkge1xyXG4gICAgaGVhZGVycyA9IHtcclxuICAgICAgLi4uKGhlYWRlcnMgfHwge30pLFxyXG4gICAgICAnWC1Ta2lwLUludGVyY2VwdG9yJzogJ3RydWUnLFxyXG4gICAgICAnWC1Ta2lwLUF1dGgnOiAndHJ1ZScsXHJcbiAgICAgICdYLVRyYWNrLUFQSS1EZXRhaWxzJzogJ3RydWUnLFxyXG4gICAgfTtcclxuICAgIGlmIChtZXRob2QgPT0gJ0dFVCcpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5nZXRCeVVybChmdWxsVXJsLCB7IGhlYWRlcnMgfSk7XHJcbiAgICB9IGVsc2UgaWYgKG1ldGhvZCA9PSAnUE9TVCcpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0QnlVcmwoZnVsbFVybCwgYm9keSwgeyBoZWFkZXJzIH0pO1xyXG4gICAgfSBlbHNlIGlmIChtZXRob2QgPT0gJ1BVVCcpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wdXRCeVVybChmdWxsVXJsLCBib2R5LCB7IGhlYWRlcnMgfSk7XHJcbiAgICB9IGVsc2UgaWYgKG1ldGhvZCA9PSAnREVMRVRFJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmRlbGV0ZUJ5VXJsKGZ1bGxVcmwsIHsgaGVhZGVycyB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdlbmVyYXRlcyBhbiBIVFRQIFJlcXVlc3QgYmFzZWQgb24gdGhlIHByb3ZpZGVkIERhdGFTb3VyY2VRdWVyeSBuYW1lXHJcbiAgICogQHBhcmFtIFF1ZXJ5TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBEYXRhU291cmNlUXVlcnlcclxuICAgKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBnZW5lcmF0ZWQgSFRUUCByZXF1ZXN0XHJcbiAgICovXHJcbiAgZ2VuZXJhdGVIdHRwUmVxdWVzdChRdWVyeU5hbWU6IHN0cmluZyk6IGFueSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgaWYgKGhlYWRlcnMpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5nZXQoXHJcbiAgICAgICAgYCR7QVBJLkdlbmVyYXRlSHR0cFJlcXVlc3R9P2RzcU5hbWU9JHtRdWVyeU5hbWV9YCxcclxuICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgaGVhZGVyc1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIGRldGFpbGVkIGFuYWx5dGljcyBvZiBhIHNjcmVlbidzIHBlcmZvcm1hbmNlLlxyXG4gICAqIEBwYXJhbSBkYXRhIC0gRGF0YSB0byBiZSBzZW50IHRvIHRoZSBBUElcclxuICAgKiBAcmV0dXJucyBSZXNwb25zZSBmcm9tIHRoZSBBUElcclxuICAgKi9cclxuICBnZXREZXRhaWxPZlBlcmZvcm1hbmNlQW5hbHl0aWNzKGRhdGE6IGFueSk6IGFueSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgaWYgKGhlYWRlcnMpIHtcclxuICAgICAgLy8gU2V0IHRoZSB0YWIgY29tcG9uZW50cyBmb3IgdGhlIHRlbmFudFxyXG4gICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoXHJcbiAgICAgICAgLy8gQVBJIGVuZHBvaW50IGZvciByZXRyaWV2aW5nIHRoZSBkZXRhaWxlZCBhbmFseXRpY3Mgb2YgYSBzY3JlZW4ncyBwZXJmb3JtYW5jZVxyXG4gICAgICAgIGAke0FQSS5HZXREZXRhaWxPZlBlcmZvcm1hbmNlQW5hbHl0aWNzfWAsXHJcbiAgICAgICAgZGF0YSxcclxuICAgICAgICAvLyBUaGUgaGVhZGVycyBmb3IgdGhlIHJlcXVlc3RcclxuICAgICAgICBoZWFkZXJzXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBzdW1tYXJ5IG9mIHBlcmZvcm1hbmNlIGFuYWx5dGljc1xyXG4gICAqIEBwYXJhbSBkYXRhIC0gRGF0YSB0byBiZSBzZW50IHRvIHRoZSBBUElcclxuICAgKiBAcmV0dXJucyBSZXNwb25zZSBmcm9tIHRoZSBBUElcclxuICAgKi9cclxuICBnZXRTdW1tYXJ5T2ZQZXJmb3JtYW5jZUFuYWx5dGljcyhkYXRhOiBhbnkpOiBhbnkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIGlmIChoZWFkZXJzKSB7XHJcbiAgICAgIC8vIFNldCB0aGUgdGFiIGNvbXBvbmVudHMgZm9yIHRoZSB0ZW5hbnRcclxuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KFxyXG4gICAgICAgIC8vIEFQSSBlbmRwb2ludCBmb3IgaW5zZXJ0aW5nIHNjcmVlbiBwZXJmb3JtYW5jZSBzdGF0aXN0aWNzXHJcbiAgICAgICAgYCR7QVBJLkdldFN1bW1hcnlPZlBlcmZvcm1hbmNlQW5hbHl0aWNzfWAsXHJcbiAgICAgICAgZGF0YSxcclxuICAgICAgICAvLyBUaGUgaGVhZGVycyBmb3IgdGhlIHJlcXVlc3RcclxuICAgICAgICBoZWFkZXJzXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbn1cclxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@techextensor/tab-core-utility",
3
- "version": "2.2.107",
3
+ "version": "2.2.108",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^17.3.0",
6
6
  "@angular/core": "^17.3.0",