@smartbit4all/ng-client 6.0.20 → 6.0.22

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.
@@ -21,35 +21,23 @@ export class SmartGridToolbarActionsUtil {
21
21
  static showToolbar(row, columnName) {
22
22
  return !!row.actions && row.actions.length > 0 && !!row.columnActions?.[columnName];
23
23
  }
24
+ // ##### IN ROW ACTIONS
24
25
  static calculateCellToActionMap(rows, serviceToUse, gridId) {
25
- let cellToActionMap = {};
26
+ const cellToActionMap = {};
26
27
  rows.forEach((row) => {
27
28
  if (row?.columnActions && row?.actions) {
28
29
  Object.keys(row.columnActions).forEach((columnName) => {
29
- let key = row.id + columnName;
30
+ const key = row.id + columnName;
30
31
  const actionCodes = row.columnActions[columnName];
31
- const actions = row.actions.filter((action) => action.code && actionCodes.includes(action.code));
32
- const actionModels = actions.map((uiAction) => {
33
- //Add row to uiAction
34
- let _uiAction = { ...uiAction };
35
- _uiAction.params = {
36
- ...uiAction.params,
37
- model: row,
38
- };
39
- // Add gridId and widgetId to uiActionMod
40
- return {
41
- serviceToUse: serviceToUse,
42
- uiAction: _uiAction,
43
- nodeId: row.id,
44
- widgetId: gridId,
45
- };
46
- });
47
- cellToActionMap[key] = actionModels;
32
+ cellToActionMap[key] = row.actions
33
+ .filter((action) => action.code && actionCodes.includes(action.code))
34
+ .map((uiAction) => this.toActionModel(uiAction, row, serviceToUse, gridId));
48
35
  });
49
36
  }
50
37
  });
51
38
  return cellToActionMap;
52
39
  }
40
+ // ##### MENU ACTIONS
53
41
  static calculateMenuActions(row, orderedColumns) {
54
42
  var _columnsToFilter = [
55
43
  ...orderedColumns.map((col) => col.startsWith('data.') ? col.substring('data.'.length) : col),
@@ -61,9 +49,28 @@ export class SmartGridToolbarActionsUtil {
61
49
  .flat();
62
50
  return row.actions?.filter((action) => !columnCodes.includes(action.code)) ?? [];
63
51
  }
52
+ static calculateMenuActionModels(row, orderedColumns, serviceToUse, gridId) {
53
+ return this.calculateMenuActions(row, orderedColumns).map((uiAction) => this.toActionModel(uiAction, row, serviceToUse, gridId));
54
+ }
64
55
  static getActionModelsFromMap(cellToActionMap, row, header) {
65
56
  let key = row.id + header;
66
57
  return cellToActionMap[key];
67
58
  }
59
+ // ##### HELPERS
60
+ static toActionModel(uiAction, row, serviceToUse, gridId) {
61
+ const _uiAction = {
62
+ ...uiAction,
63
+ params: {
64
+ ...uiAction.params,
65
+ model: row,
66
+ },
67
+ };
68
+ return {
69
+ serviceToUse,
70
+ uiAction: _uiAction,
71
+ nodeId: row.id,
72
+ widgetId: gridId,
73
+ };
74
+ }
68
75
  }
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZ3JpZC10b29sYmFyLXV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1ncmlkL3NtYXJ0LWdyaWQtdG9vbGJhci11dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTywyQkFBMkI7YUFDL0IsMkJBQXNCLEdBQUcsNEJBQTRCLENBQUM7SUFFN0QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFZLEVBQUUsY0FBd0I7UUFDcEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLElBQUksR0FBRyxDQUFDLE9BQU8sSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNoRSxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxJQUFJLGdCQUFnQixHQUFHO1lBQ3JCLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQzVCLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQzlEO1lBQ0QsSUFBSSxDQUFDLHNCQUFzQjtTQUM1QixDQUFDO1FBRUYsSUFBSSxxQkFBcUIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDO2FBQzdELE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQy9DLE1BQU0sQ0FDTCxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUNYLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsYUFBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25DLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxFQUNELEVBQXlCLENBQzFCLENBQUM7UUFFSixPQUFPLENBQ0wsR0FBRyxDQUFDLE9BQU87WUFDWCxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQ3RCLE1BQU0sQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQzFFLENBQUM7SUFDSixDQUFDO0lBQ0QsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFZLEVBQUUsVUFBa0I7UUFDakQsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsTUFBTSxDQUFDLHdCQUF3QixDQUM3QixJQUFlLEVBQ2YsWUFBaUIsRUFDakIsTUFBYztRQUVkLElBQUksZUFBZSxHQUEwQixFQUFFLENBQUM7UUFFaEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ25CLElBQUksR0FBRyxFQUFFLGFBQWEsSUFBSSxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUM7Z0JBQ3ZDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO29CQUNwRCxJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLFVBQVUsQ0FBQztvQkFDOUIsTUFBTSxXQUFXLEdBQWEsR0FBRyxDQUFDLGFBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDN0QsTUFBTSxPQUFPLEdBQWUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQzVDLENBQUMsTUFBZ0IsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FDdkUsQ0FBQztvQkFDRixNQUFNLFlBQVksR0FBVSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBa0IsRUFBRSxFQUFFO3dCQUM3RCxxQkFBcUI7d0JBQ3JCLElBQUksU0FBUyxHQUFHLEVBQUUsR0FBRyxRQUFRLEVBQUUsQ0FBQzt3QkFFaEMsU0FBUyxDQUFDLE1BQU0sR0FBRzs0QkFDakIsR0FBRyxRQUFRLENBQUMsTUFBTTs0QkFDbEIsS0FBSyxFQUFFLEdBQUc7eUJBQ1gsQ0FBQzt3QkFFRix5Q0FBeUM7d0JBQ3pDLE9BQU87NEJBQ0wsWUFBWSxFQUFFLFlBQVk7NEJBQzFCLFFBQVEsRUFBRSxTQUFTOzRCQUNuQixNQUFNLEVBQUUsR0FBRyxDQUFDLEVBQUU7NEJBQ2QsUUFBUSxFQUFFLE1BQU07eUJBQ2pCLENBQUM7b0JBQ0osQ0FBQyxDQUFDLENBQUM7b0JBQ0gsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFlBQVksQ0FBQztnQkFDdEMsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO0lBRUQsTUFBTSxDQUFDLG9CQUFvQixDQUFDLEdBQVksRUFBRSxjQUF3QjtRQUNoRSxJQUFJLGdCQUFnQixHQUFHO1lBQ3JCLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQzVCLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQzlEO1lBQ0QsSUFBSSxDQUFDLHNCQUFzQjtTQUM1QixDQUFDO1FBRUYsSUFBSSxXQUFXLEdBQWEsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQzthQUM3RCxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUMvQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxhQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDckMsSUFBSSxFQUFFLENBQUM7UUFFVixPQUFPLEdBQUcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsTUFBZ0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5RixDQUFDO0lBRUQsTUFBTSxDQUFDLHNCQUFzQixDQUMzQixlQUFzQyxFQUN0QyxHQUFZLEVBQ1osTUFBYztRQUVkLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDO1FBQzFCLE9BQU8sZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVaUFjdGlvbiB9IGZyb20gJy4uL3ZpZXctY29udGV4dC9hcGknO1xyXG5pbXBvcnQgeyBHcmlkUm93IH0gZnJvbSAnLi9hcGkvZ3JpZC1hcGknO1xyXG5leHBvcnQgY2xhc3MgU21hcnRHcmlkVG9vbGJhckFjdGlvbnNVdGlsIHtcclxuICBzdGF0aWMgZGVmYXVsdEFjdGlvblRvb2xiYXJJZCA9ICd0b29sYmFyRGVmYXVsdEFjdGlvbkNvbHVtbic7XHJcblxyXG4gIHN0YXRpYyBzaG93TWVudShyb3c6IEdyaWRSb3csIG9yZGVyZWRDb2x1bW5zOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFyb3cuY29sdW1uQWN0aW9ucyAmJiByb3cuYWN0aW9ucyAmJiByb3cuYWN0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBfY29sdW1uc1RvRmlsdGVyID0gW1xyXG4gICAgICAuLi5vcmRlcmVkQ29sdW1ucy5tYXAoKGNvbCkgPT5cclxuICAgICAgICBjb2wuc3RhcnRzV2l0aCgnZGF0YS4nKSA/IGNvbC5zdWJzdHJpbmcoJ2RhdGEuJy5sZW5ndGgpIDogY29sXHJcbiAgICAgICksXHJcbiAgICAgIHRoaXMuZGVmYXVsdEFjdGlvblRvb2xiYXJJZCxcclxuICAgIF07XHJcblxyXG4gICAgdmFyIGZpbHRlcmVkQWN0aW9uQ29sdW1ucyA9IE9iamVjdC5rZXlzKHJvdy5jb2x1bW5BY3Rpb25zIHx8IHt9KVxyXG4gICAgICAuZmlsdGVyKChrZXkpID0+IF9jb2x1bW5zVG9GaWx0ZXIuaW5jbHVkZXMoa2V5KSlcclxuICAgICAgLnJlZHVjZShcclxuICAgICAgICAoYWNjLCBrZXkpID0+IHtcclxuICAgICAgICAgIGFjY1trZXldID0gcm93LmNvbHVtbkFjdGlvbnMhW2tleV07XHJcbiAgICAgICAgICByZXR1cm4gYWNjO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgYW55PlxyXG4gICAgICApO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgIHJvdy5hY3Rpb25zICYmXHJcbiAgICAgIHJvdy5hY3Rpb25zLmxlbmd0aCA+IDAgJiZcclxuICAgICAgT2JqZWN0LnZhbHVlcyhmaWx0ZXJlZEFjdGlvbkNvbHVtbnMpLmZsYXQoKS5sZW5ndGggIT09IHJvdy5hY3Rpb25zLmxlbmd0aFxyXG4gICAgKTtcclxuICB9XHJcbiAgc3RhdGljIHNob3dUb29sYmFyKHJvdzogR3JpZFJvdywgY29sdW1uTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISFyb3cuYWN0aW9ucyAmJiByb3cuYWN0aW9ucy5sZW5ndGggPiAwICYmICEhcm93LmNvbHVtbkFjdGlvbnM/Lltjb2x1bW5OYW1lXTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBjYWxjdWxhdGVDZWxsVG9BY3Rpb25NYXAoXHJcbiAgICByb3dzOiBHcmlkUm93W10sXHJcbiAgICBzZXJ2aWNlVG9Vc2U6IGFueSxcclxuICAgIGdyaWRJZDogc3RyaW5nXHJcbiAgKTogUmVjb3JkPHN0cmluZywgYW55W10+IHtcclxuICAgIGxldCBjZWxsVG9BY3Rpb25NYXA6IFJlY29yZDxzdHJpbmcsIGFueVtdPiA9IHt9O1xyXG5cclxuICAgIHJvd3MuZm9yRWFjaCgocm93KSA9PiB7XHJcbiAgICAgIGlmIChyb3c/LmNvbHVtbkFjdGlvbnMgJiYgcm93Py5hY3Rpb25zKSB7XHJcbiAgICAgICAgT2JqZWN0LmtleXMocm93LmNvbHVtbkFjdGlvbnMpLmZvckVhY2goKGNvbHVtbk5hbWUpID0+IHtcclxuICAgICAgICAgIGxldCBrZXkgPSByb3cuaWQgKyBjb2x1bW5OYW1lO1xyXG4gICAgICAgICAgY29uc3QgYWN0aW9uQ29kZXM6IHN0cmluZ1tdID0gcm93LmNvbHVtbkFjdGlvbnMhW2NvbHVtbk5hbWVdO1xyXG4gICAgICAgICAgY29uc3QgYWN0aW9uczogVWlBY3Rpb25bXSA9IHJvdy5hY3Rpb25zLmZpbHRlcihcclxuICAgICAgICAgICAgKGFjdGlvbjogVWlBY3Rpb24pID0+IGFjdGlvbi5jb2RlICYmIGFjdGlvbkNvZGVzLmluY2x1ZGVzKGFjdGlvbi5jb2RlKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGNvbnN0IGFjdGlvbk1vZGVsczogYW55W10gPSBhY3Rpb25zLm1hcCgodWlBY3Rpb246IFVpQWN0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgIC8vQWRkIHJvdyB0byB1aUFjdGlvblxyXG4gICAgICAgICAgICBsZXQgX3VpQWN0aW9uID0geyAuLi51aUFjdGlvbiB9O1xyXG5cclxuICAgICAgICAgICAgX3VpQWN0aW9uLnBhcmFtcyA9IHtcclxuICAgICAgICAgICAgICAuLi51aUFjdGlvbi5wYXJhbXMsXHJcbiAgICAgICAgICAgICAgbW9kZWw6IHJvdyxcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIC8vIEFkZCBncmlkSWQgYW5kIHdpZGdldElkIHRvIHVpQWN0aW9uTW9kXHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgc2VydmljZVRvVXNlOiBzZXJ2aWNlVG9Vc2UsXHJcbiAgICAgICAgICAgICAgdWlBY3Rpb246IF91aUFjdGlvbixcclxuICAgICAgICAgICAgICBub2RlSWQ6IHJvdy5pZCxcclxuICAgICAgICAgICAgICB3aWRnZXRJZDogZ3JpZElkLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBjZWxsVG9BY3Rpb25NYXBba2V5XSA9IGFjdGlvbk1vZGVscztcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gY2VsbFRvQWN0aW9uTWFwO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNhbGN1bGF0ZU1lbnVBY3Rpb25zKHJvdzogR3JpZFJvdywgb3JkZXJlZENvbHVtbnM6IHN0cmluZ1tdKTogVWlBY3Rpb25bXSB7XHJcbiAgICB2YXIgX2NvbHVtbnNUb0ZpbHRlciA9IFtcclxuICAgICAgLi4ub3JkZXJlZENvbHVtbnMubWFwKChjb2wpID0+XHJcbiAgICAgICAgY29sLnN0YXJ0c1dpdGgoJ2RhdGEuJykgPyBjb2wuc3Vic3RyaW5nKCdkYXRhLicubGVuZ3RoKSA6IGNvbFxyXG4gICAgICApLFxyXG4gICAgICB0aGlzLmRlZmF1bHRBY3Rpb25Ub29sYmFySWQsXHJcbiAgICBdO1xyXG5cclxuICAgIHZhciBjb2x1bW5Db2Rlczogc3RyaW5nW10gPSBPYmplY3Qua2V5cyhyb3cuY29sdW1uQWN0aW9ucyB8fCB7fSlcclxuICAgICAgLmZpbHRlcigoa2V5KSA9PiBfY29sdW1uc1RvRmlsdGVyLmluY2x1ZGVzKGtleSkpXHJcbiAgICAgIC5tYXAoKGtleSkgPT4gcm93LmNvbHVtbkFjdGlvbnMhW2tleV0pXHJcbiAgICAgIC5mbGF0KCk7XHJcblxyXG4gICAgcmV0dXJuIHJvdy5hY3Rpb25zPy5maWx0ZXIoKGFjdGlvbjogVWlBY3Rpb24pID0+ICFjb2x1bW5Db2Rlcy5pbmNsdWRlcyhhY3Rpb24uY29kZSEpKSA/PyBbXTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRBY3Rpb25Nb2RlbHNGcm9tTWFwKFxyXG4gICAgY2VsbFRvQWN0aW9uTWFwOiBSZWNvcmQ8c3RyaW5nLCBhbnlbXT4sXHJcbiAgICByb3c6IEdyaWRSb3csXHJcbiAgICBoZWFkZXI6IHN0cmluZ1xyXG4gICk6IGFueVtdIHtcclxuICAgIGxldCBrZXkgPSByb3cuaWQgKyBoZWFkZXI7XHJcbiAgICByZXR1cm4gY2VsbFRvQWN0aW9uTWFwW2tleV07XHJcbiAgfVxyXG59XHJcbiJdfQ==
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZ3JpZC10b29sYmFyLXV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1ncmlkL3NtYXJ0LWdyaWQtdG9vbGJhci11dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTywyQkFBMkI7YUFDL0IsMkJBQXNCLEdBQUcsNEJBQTRCLENBQUM7SUFFN0QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFZLEVBQUUsY0FBd0I7UUFDcEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLElBQUksR0FBRyxDQUFDLE9BQU8sSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNoRSxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxJQUFJLGdCQUFnQixHQUFHO1lBQ3JCLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQzVCLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQzlEO1lBQ0QsSUFBSSxDQUFDLHNCQUFzQjtTQUM1QixDQUFDO1FBRUYsSUFBSSxxQkFBcUIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDO2FBQzdELE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQy9DLE1BQU0sQ0FDTCxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUNYLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsYUFBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lB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QyxJQUFJLEVBQUUsQ0FBQztJQUM5RixDQUFDO0lBRUQsTUFBTSxDQUFDLHlCQUF5QixDQUM5QixHQUFZLEVBQ1osY0FBd0IsRUFDeEIsWUFBaUIsRUFDakIsTUFBYztRQUVkLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFrQixFQUFFLEVBQUUsQ0FDL0UsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FDeEQsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsc0JBQXNCLENBQzNCLGVBQXNDLEVBQ3RDLEdBQVksRUFDWixNQUFjO1FBRWQsSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUM7UUFDMUIsT0FBTyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELGdCQUFnQjtJQUNSLE1BQU0sQ0FBQyxhQUFhLENBQzFCLFFBQWtCLEVBQ2xCLEdBQVksRUFDWixZQUFpQixFQUNqQixNQUFjO1FBRWQsTUFBTSxTQUFTLEdBQUc7WUFDaEIsR0FBRyxRQUFRO1lBQ1gsTUFBTSxFQUFFO2dCQUNOLEdBQUcsUUFBUSxDQUFDLE1BQU07Z0JBQ2xCLEtBQUssRUFBRSxHQUFHO2FBQ1g7U0FDRixDQUFDO1FBRUYsT0FBTztZQUNMLFlBQVk7WUFDWixRQUFRLEVBQUUsU0FBUztZQUNuQixNQUFNLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDZCxRQUFRLEVBQUUsTUFBTTtTQUNqQixDQUFDO0lBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVpQWN0aW9uIH0gZnJvbSAnLi4vdmlldy1jb250ZXh0L2FwaSc7XHJcbmltcG9ydCB7IEdyaWRSb3cgfSBmcm9tICcuL2FwaS9ncmlkLWFwaSc7XHJcbmV4cG9ydCBjbGFzcyBTbWFydEdyaWRUb29sYmFyQWN0aW9uc1V0aWwge1xyXG4gIHN0YXRpYyBkZWZhdWx0QWN0aW9uVG9vbGJhcklkID0gJ3Rvb2xiYXJEZWZhdWx0QWN0aW9uQ29sdW1uJztcclxuXHJcbiAgc3RhdGljIHNob3dNZW51KHJvdzogR3JpZFJvdywgb3JkZXJlZENvbHVtbnM6IHN0cmluZ1tdKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXJvdy5jb2x1bW5BY3Rpb25zICYmIHJvdy5hY3Rpb25zICYmIHJvdy5hY3Rpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIF9jb2x1bW5zVG9GaWx0ZXIgPSBbXHJcbiAgICAgIC4uLm9yZGVyZWRDb2x1bW5zLm1hcCgoY29sKSA9PlxyXG4gICAgICAgIGNvbC5zdGFydHNXaXRoKCdkYXRhLicpID8gY29sLnN1YnN0cmluZygnZGF0YS4nLmxlbmd0aCkgOiBjb2xcclxuICAgICAgKSxcclxuICAgICAgdGhpcy5kZWZhdWx0QWN0aW9uVG9vbGJhcklkLFxyXG4gICAgXTtcclxuXHJcbiAgICB2YXIgZmlsdGVyZWRBY3Rpb25Db2x1bW5zID0gT2JqZWN0LmtleXMocm93LmNvbHVtbkFjdGlvbnMgfHwge30pXHJcbiAgICAgIC5maWx0ZXIoKGtleSkgPT4gX2NvbHVtbnNUb0ZpbHRlci5pbmNsdWRlcyhrZXkpKVxyXG4gICAgICAucmVkdWNlKFxyXG4gICAgICAgIChhY2MsIGtleSkgPT4ge1xyXG4gICAgICAgICAgYWNjW2tleV0gPSByb3cuY29sdW1uQWN0aW9ucyFba2V5XTtcclxuICAgICAgICAgIHJldHVybiBhY2M7XHJcbiAgICAgICAgfSxcclxuICAgICAgICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+XHJcbiAgICAgICk7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgcm93LmFjdGlvbnMgJiZcclxuICAgICAgcm93LmFjdGlvbnMubGVuZ3RoID4gMCAmJlxyXG4gICAgICBPYmplY3QudmFsdWVzKGZpbHRlcmVkQWN0aW9uQ29sdW1ucykuZmxhdCgpLmxlbmd0aCAhPT0gcm93LmFjdGlvbnMubGVuZ3RoXHJcbiAgICApO1xyXG4gIH1cclxuICBzdGF0aWMgc2hvd1Rvb2xiYXIocm93OiBHcmlkUm93LCBjb2x1bW5OYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIXJvdy5hY3Rpb25zICYmIHJvdy5hY3Rpb25zLmxlbmd0aCA+IDAgJiYgISFyb3cuY29sdW1uQWN0aW9ucz8uW2NvbHVtbk5hbWVdO1xyXG4gIH1cclxuXHJcbiAgLy8gIyMjIyMgSU4gUk9XIEFDVElPTlNcclxuICBzdGF0aWMgY2FsY3VsYXRlQ2VsbFRvQWN0aW9uTWFwKFxyXG4gICAgcm93czogR3JpZFJvd1tdLFxyXG4gICAgc2VydmljZVRvVXNlOiBhbnksXHJcbiAgICBncmlkSWQ6IHN0cmluZ1xyXG4gICk6IFJlY29yZDxzdHJpbmcsIGFueVtdPiB7XHJcbiAgICBjb25zdCBjZWxsVG9BY3Rpb25NYXA6IFJlY29yZDxzdHJpbmcsIGFueVtdPiA9IHt9O1xyXG5cclxuICAgIHJvd3MuZm9yRWFjaCgocm93KSA9PiB7XHJcbiAgICAgIGlmIChyb3c/LmNvbHVtbkFjdGlvbnMgJiYgcm93Py5hY3Rpb25zKSB7XHJcbiAgICAgICAgT2JqZWN0LmtleXMocm93LmNvbHVtbkFjdGlvbnMpLmZvckVhY2goKGNvbHVtbk5hbWUpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGtleSA9IHJvdy5pZCArIGNvbHVtbk5hbWU7XHJcbiAgICAgICAgICBjb25zdCBhY3Rpb25Db2Rlczogc3RyaW5nW10gPSByb3cuY29sdW1uQWN0aW9ucyFbY29sdW1uTmFtZV07XHJcblxyXG4gICAgICAgICAgY2VsbFRvQWN0aW9uTWFwW2tleV0gPSByb3cuYWN0aW9uc1xyXG4gICAgICAgICAgICAuZmlsdGVyKChhY3Rpb246IFVpQWN0aW9uKSA9PiBhY3Rpb24uY29kZSAmJiBhY3Rpb25Db2Rlcy5pbmNsdWRlcyhhY3Rpb24uY29kZSkpXHJcbiAgICAgICAgICAgIC5tYXAoKHVpQWN0aW9uOiBVaUFjdGlvbikgPT4gdGhpcy50b0FjdGlvbk1vZGVsKHVpQWN0aW9uLCByb3csIHNlcnZpY2VUb1VzZSwgZ3JpZElkKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBjZWxsVG9BY3Rpb25NYXA7XHJcbiAgfVxyXG5cclxuICAvLyAjIyMjIyBNRU5VIEFDVElPTlNcclxuICBzdGF0aWMgY2FsY3VsYXRlTWVudUFjdGlvbnMocm93OiBHcmlkUm93LCBvcmRlcmVkQ29sdW1uczogc3RyaW5nW10pOiBVaUFjdGlvbltdIHtcclxuICAgIHZhciBfY29sdW1uc1RvRmlsdGVyID0gW1xyXG4gICAgICAuLi5vcmRlcmVkQ29sdW1ucy5tYXAoKGNvbCkgPT5cclxuICAgICAgICBjb2wuc3RhcnRzV2l0aCgnZGF0YS4nKSA/IGNvbC5zdWJzdHJpbmcoJ2RhdGEuJy5sZW5ndGgpIDogY29sXHJcbiAgICAgICksXHJcbiAgICAgIHRoaXMuZGVmYXVsdEFjdGlvblRvb2xiYXJJZCxcclxuICAgIF07XHJcblxyXG4gICAgdmFyIGNvbHVtbkNvZGVzOiBzdHJpbmdbXSA9IE9iamVjdC5rZXlzKHJvdy5jb2x1bW5BY3Rpb25zIHx8IHt9KVxyXG4gICAgICAuZmlsdGVyKChrZXkpID0+IF9jb2x1bW5zVG9GaWx0ZXIuaW5jbHVkZXMoa2V5KSlcclxuICAgICAgLm1hcCgoa2V5KSA9PiByb3cuY29sdW1uQWN0aW9ucyFba2V5XSlcclxuICAgICAgLmZsYXQoKTtcclxuXHJcbiAgICByZXR1cm4gcm93LmFjdGlvbnM/LmZpbHRlcigoYWN0aW9uOiBVaUFjdGlvbikgPT4gIWNvbHVtbkNvZGVzLmluY2x1ZGVzKGFjdGlvbi5jb2RlISkpID8/IFtdO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNhbGN1bGF0ZU1lbnVBY3Rpb25Nb2RlbHMoXHJcbiAgICByb3c6IEdyaWRSb3csXHJcbiAgICBvcmRlcmVkQ29sdW1uczogc3RyaW5nW10sXHJcbiAgICBzZXJ2aWNlVG9Vc2U6IGFueSxcclxuICAgIGdyaWRJZDogc3RyaW5nXHJcbiAgKTogYW55W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuY2FsY3VsYXRlTWVudUFjdGlvbnMocm93LCBvcmRlcmVkQ29sdW1ucykubWFwKCh1aUFjdGlvbjogVWlBY3Rpb24pID0+XHJcbiAgICAgIHRoaXMudG9BY3Rpb25Nb2RlbCh1aUFjdGlvbiwgcm93LCBzZXJ2aWNlVG9Vc2UsIGdyaWRJZClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0QWN0aW9uTW9kZWxzRnJvbU1hcChcclxuICAgIGNlbGxUb0FjdGlvbk1hcDogUmVjb3JkPHN0cmluZywgYW55W10+LFxyXG4gICAgcm93OiBHcmlkUm93LFxyXG4gICAgaGVhZGVyOiBzdHJpbmdcclxuICApOiBhbnlbXSB7XHJcbiAgICBsZXQga2V5ID0gcm93LmlkICsgaGVhZGVyO1xyXG4gICAgcmV0dXJuIGNlbGxUb0FjdGlvbk1hcFtrZXldO1xyXG4gIH1cclxuXHJcbiAgLy8gIyMjIyMgSEVMUEVSU1xyXG4gIHByaXZhdGUgc3RhdGljIHRvQWN0aW9uTW9kZWwoXHJcbiAgICB1aUFjdGlvbjogVWlBY3Rpb24sXHJcbiAgICByb3c6IEdyaWRSb3csXHJcbiAgICBzZXJ2aWNlVG9Vc2U6IGFueSxcclxuICAgIGdyaWRJZDogc3RyaW5nXHJcbiAgKTogYW55IHtcclxuICAgIGNvbnN0IF91aUFjdGlvbiA9IHtcclxuICAgICAgLi4udWlBY3Rpb24sXHJcbiAgICAgIHBhcmFtczoge1xyXG4gICAgICAgIC4uLnVpQWN0aW9uLnBhcmFtcyxcclxuICAgICAgICBtb2RlbDogcm93LFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBzZXJ2aWNlVG9Vc2UsXHJcbiAgICAgIHVpQWN0aW9uOiBfdWlBY3Rpb24sXHJcbiAgICAgIG5vZGVJZDogcm93LmlkLFxyXG4gICAgICB3aWRnZXRJZDogZ3JpZElkLFxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIl19