@recursyve/nestjs-data-filter 9.4.0-beta.0 → 9.4.1

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.
Files changed (60) hide show
  1. package/lib/adapters/default-access-control.adapter.js +3 -3
  2. package/lib/adapters/default-export.adapter.js +3 -3
  3. package/lib/adapters/default-translate.adapter.js +3 -3
  4. package/lib/data-filter.repository.d.ts +1 -3
  5. package/lib/data-filter.repository.js +11 -14
  6. package/lib/data-filter.service.d.ts +4 -4
  7. package/lib/data-filter.service.js +9 -10
  8. package/lib/filter/base-filter.d.ts +0 -3
  9. package/lib/filter/base-filter.js +1 -19
  10. package/lib/filter/controllers/dynamic-filter.controller.js +2 -2
  11. package/lib/filter/controllers/filter.controller.js +2 -2
  12. package/lib/filter/decorators/inject-filter.decorator.d.ts +1 -1
  13. package/lib/filter/filter.factory.d.ts +1 -2
  14. package/lib/filter/filter.factory.js +3 -3
  15. package/lib/filter/filter.provider.js +2 -3
  16. package/lib/filter/filter.service.d.ts +2 -3
  17. package/lib/filter/filter.service.js +26 -17
  18. package/lib/filter/filters/date-time.filter.js +5 -12
  19. package/lib/filter/filters/filter.d.ts +0 -3
  20. package/lib/filter/filters/filter.js +5 -8
  21. package/lib/filter/filters/geo-bounds.filter.js +3 -2
  22. package/lib/filter/filters/geo-localization.filter.js +2 -2
  23. package/lib/filter/filters/group.filter.d.ts +0 -3
  24. package/lib/filter/filters/group.filter.js +2 -9
  25. package/lib/filter/filters/options.filter.d.ts +46 -0
  26. package/lib/filter/filters/options.filter.js +111 -0
  27. package/lib/filter/filters/select.filter.d.ts +3 -1
  28. package/lib/filter/filters/select.filter.js +2 -2
  29. package/lib/filter/guards/filter-query.guard.js +3 -3
  30. package/lib/filter/interceptors/data-file-download.interceptor.js +3 -3
  31. package/lib/filter/models/filter-configuration-search.model.d.ts +2 -0
  32. package/lib/filter/models/filter-configuration-search.model.js +1 -1
  33. package/lib/filter/operators.js +2 -2
  34. package/lib/filter/order-rules/enum.order-rule.js +3 -2
  35. package/lib/filter/order-rules/if.order-rule.js +3 -2
  36. package/lib/filter/order-rules/is-null.order-rule.js +3 -2
  37. package/lib/filter/order-rules/order-rule.d.ts +0 -3
  38. package/lib/filter/order-rules/order-rule.js +2 -5
  39. package/lib/filter/type.js +2 -2
  40. package/lib/index.js +5 -6
  41. package/lib/models/attributes.model.d.ts +1 -8
  42. package/lib/models/attributes.model.js +11 -21
  43. package/lib/models/count.model.d.ts +4 -11
  44. package/lib/models/count.model.js +14 -25
  45. package/lib/models/custom-attributes.model.d.ts +2 -6
  46. package/lib/models/custom-attributes.model.js +1 -5
  47. package/lib/models/data-filter.model.d.ts +2 -9
  48. package/lib/models/data-filter.model.js +30 -40
  49. package/lib/models/distance.model.d.ts +3 -10
  50. package/lib/models/distance.model.js +18 -29
  51. package/lib/models/export-types.model.js +2 -2
  52. package/lib/models/sum.model.d.ts +3 -10
  53. package/lib/models/sum.model.js +8 -19
  54. package/lib/scanners/data-filter.scanner.js +3 -3
  55. package/lib/scanners/sequelize-model.scanner.d.ts +2 -4
  56. package/lib/scanners/sequelize-model.scanner.js +10 -18
  57. package/lib/sequelize.utils.d.ts +3 -0
  58. package/lib/sequelize.utils.js +18 -1
  59. package/lib/services/data-filter-validation.service.js +3 -3
  60. package/package.json +1 -1
@@ -14,9 +14,9 @@ let DefaultAccessControlAdapter = class DefaultAccessControlAdapter extends acce
14
14
  return access_control_adapter_1.AccessControlResources.fromIds([]);
15
15
  }
16
16
  };
17
- exports.DefaultAccessControlAdapter = DefaultAccessControlAdapter;
18
- exports.DefaultAccessControlAdapter = DefaultAccessControlAdapter = __decorate([
17
+ DefaultAccessControlAdapter = __decorate([
19
18
  (0, common_1.Injectable)()
20
19
  ], DefaultAccessControlAdapter);
20
+ exports.DefaultAccessControlAdapter = DefaultAccessControlAdapter;
21
21
 
22
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9hZGFwdGVycy9kZWZhdWx0LWFjY2Vzcy1jb250cm9sLmFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsMkNBQTRDO0FBRTVDLHFFQUF3RjtBQUdqRixJQUFNLDJCQUEyQixHQUFqQyxNQUFNLDJCQUE0QixTQUFRLDZDQUFvQjtJQUMxRCxLQUFLLENBQUMsWUFBWSxDQUFRLEtBQWUsRUFBRSxJQUFXO1FBQ3pELE9BQU8sK0NBQXNCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7Q0FDSixDQUFBO0FBSlksa0VBQTJCO3NDQUEzQiwyQkFBMkI7SUFEdkMsSUFBQSxtQkFBVSxHQUFFO0dBQ0EsMkJBQTJCLENBSXZDIiwiZmlsZSI6ImxpYi9hZGFwdGVycy9kZWZhdWx0LWFjY2Vzcy1jb250cm9sLmFkYXB0ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBuZXN0anMvY29tbW9uXCI7XG5pbXBvcnQgeyBNIH0gZnJvbSBcIi4uL3NlcXVlbGl6ZS51dGlsc1wiO1xuaW1wb3J0IHsgQWNjZXNzQ29udHJvbEFkYXB0ZXIsIEFjY2Vzc0NvbnRyb2xSZXNvdXJjZXMgfSBmcm9tIFwiLi9hY2Nlc3MtY29udHJvbC5hZGFwdGVyXCI7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEZWZhdWx0QWNjZXNzQ29udHJvbEFkYXB0ZXIgZXh0ZW5kcyBBY2Nlc3NDb250cm9sQWRhcHRlciB7XG4gICAgcHVibGljIGFzeW5jIGdldFJlc291cmNlczxVc2Vycz4obW9kZWw6IHR5cGVvZiBNLCB1c2VyOiBVc2Vycyk6IFByb21pc2U8QWNjZXNzQ29udHJvbFJlc291cmNlcz4ge1xuICAgICAgICByZXR1cm4gQWNjZXNzQ29udHJvbFJlc291cmNlcy5mcm9tSWRzKFtdKTtcbiAgICB9XG59XG4iXX0=
22
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9hZGFwdGVycy9kZWZhdWx0LWFjY2Vzcy1jb250cm9sLmFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsMkNBQTRDO0FBRTVDLHFFQUF3RjtBQUdqRixJQUFNLDJCQUEyQixHQUFqQyxNQUFNLDJCQUE0QixTQUFRLDZDQUFvQjtJQUMxRCxLQUFLLENBQUMsWUFBWSxDQUFRLEtBQWUsRUFBRSxJQUFXO1FBQ3pELE9BQU8sK0NBQXNCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7Q0FDSixDQUFBO0FBSlksMkJBQTJCO0lBRHZDLElBQUEsbUJBQVUsR0FBRTtHQUNBLDJCQUEyQixDQUl2QztBQUpZLGtFQUEyQiIsImZpbGUiOiJsaWIvYWRhcHRlcnMvZGVmYXVsdC1hY2Nlc3MtY29udHJvbC5hZGFwdGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAbmVzdGpzL2NvbW1vblwiO1xuaW1wb3J0IHsgTSB9IGZyb20gXCIuLi9zZXF1ZWxpemUudXRpbHNcIjtcbmltcG9ydCB7IEFjY2Vzc0NvbnRyb2xBZGFwdGVyLCBBY2Nlc3NDb250cm9sUmVzb3VyY2VzIH0gZnJvbSBcIi4vYWNjZXNzLWNvbnRyb2wuYWRhcHRlclwiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGVmYXVsdEFjY2Vzc0NvbnRyb2xBZGFwdGVyIGV4dGVuZHMgQWNjZXNzQ29udHJvbEFkYXB0ZXIge1xuICAgIHB1YmxpYyBhc3luYyBnZXRSZXNvdXJjZXM8VXNlcnM+KG1vZGVsOiB0eXBlb2YgTSwgdXNlcjogVXNlcnMpOiBQcm9taXNlPEFjY2Vzc0NvbnRyb2xSZXNvdXJjZXM+IHtcbiAgICAgICAgcmV0dXJuIEFjY2Vzc0NvbnRyb2xSZXNvdXJjZXMuZnJvbUlkcyhbXSk7XG4gICAgfVxufVxuIl19
@@ -20,9 +20,9 @@ let DefaultExportAdapter = class DefaultExportAdapter extends export_adapter_1.E
20
20
  throw new Error("DataFilter doesn't provide a default Zip export. To enable it, add a custom ExportAdapter");
21
21
  }
22
22
  };
23
- exports.DefaultExportAdapter = DefaultExportAdapter;
24
- exports.DefaultExportAdapter = DefaultExportAdapter = __decorate([
23
+ DefaultExportAdapter = __decorate([
25
24
  (0, common_1.Injectable)()
26
25
  ], DefaultExportAdapter);
26
+ exports.DefaultExportAdapter = DefaultExportAdapter;
27
27
 
28
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9hZGFwdGVycy9kZWZhdWx0LWV4cG9ydC5hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLDJDQUE0QztBQUM1QyxxREFBNkQ7QUFHdEQsSUFBTSxvQkFBb0IsR0FBMUIsTUFBTSxvQkFBcUIsU0FBUSw4QkFBYTtJQUM1QyxZQUFZLENBQUMsUUFBZ0IsRUFBRSxJQUFnQixFQUFFLE9BQWE7UUFDakUsTUFBTSxJQUFJLEtBQUssQ0FBQyw0RkFBNEYsQ0FBQyxDQUFDO0lBQ2xILENBQUM7SUFFTSxXQUFXLENBQUMsUUFBZ0IsRUFBRSxJQUFnQixFQUFFLE9BQWE7UUFDaEUsTUFBTSxJQUFJLEtBQUssQ0FBQywyRkFBMkYsQ0FBQyxDQUFDO0lBQ2pILENBQUM7SUFFRCxXQUFXLENBQUMsUUFBZ0IsRUFBRSxJQUFnQixFQUFFLE9BQWE7UUFDekQsTUFBTSxJQUFJLEtBQUssQ0FBQywyRkFBMkYsQ0FBQyxDQUFDO0lBQ2pILENBQUM7Q0FDSixDQUFBO0FBWlksb0RBQW9COytCQUFwQixvQkFBb0I7SUFEaEMsSUFBQSxtQkFBVSxHQUFFO0dBQ0Esb0JBQW9CLENBWWhDIiwiZmlsZSI6ImxpYi9hZGFwdGVycy9kZWZhdWx0LWV4cG9ydC5hZGFwdGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAbmVzdGpzL2NvbW1vblwiO1xuaW1wb3J0IHsgRXhwb3J0QWRhcHRlciwgRXhwb3J0RGF0YSB9IGZyb20gXCIuL2V4cG9ydC5hZGFwdGVyXCI7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEZWZhdWx0RXhwb3J0QWRhcHRlciBleHRlbmRzIEV4cG9ydEFkYXB0ZXIge1xuICAgIHB1YmxpYyBleHBvcnRBc0h0bWwobGFuZ3VhZ2U6IHN0cmluZywgZGF0YTogRXhwb3J0RGF0YSwgb3B0aW9ucz86IGFueSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkRhdGFGaWx0ZXIgZG9lc24ndCBwcm92aWRlIGEgZGVmYXVsdCBIVE1MIGV4cG9ydC4gVG8gZW5hYmxlIGl0LCBhZGQgYSBjdXN0b20gRXhwb3J0QWRhcHRlclwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZXhwb3J0QXNQZGYobGFuZ3VhZ2U6IHN0cmluZywgZGF0YTogRXhwb3J0RGF0YSwgb3B0aW9ucz86IGFueSk6IFByb21pc2U8QnVmZmVyPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkRhdGFGaWx0ZXIgZG9lc24ndCBwcm92aWRlIGEgZGVmYXVsdCBQREYgZXhwb3J0LiBUbyBlbmFibGUgaXQsIGFkZCBhIGN1c3RvbSBFeHBvcnRBZGFwdGVyXCIpO1xuICAgIH1cblxuICAgIGV4cG9ydEFzWmlwKGxhbmd1YWdlOiBzdHJpbmcsIGRhdGE6IEV4cG9ydERhdGEsIG9wdGlvbnM/OiBhbnkpOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEYXRhRmlsdGVyIGRvZXNuJ3QgcHJvdmlkZSBhIGRlZmF1bHQgWmlwIGV4cG9ydC4gVG8gZW5hYmxlIGl0LCBhZGQgYSBjdXN0b20gRXhwb3J0QWRhcHRlclwiKTtcbiAgICB9XG59XG4iXX0=
28
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9hZGFwdGVycy9kZWZhdWx0LWV4cG9ydC5hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLDJDQUE0QztBQUM1QyxxREFBNkQ7QUFHdEQsSUFBTSxvQkFBb0IsR0FBMUIsTUFBTSxvQkFBcUIsU0FBUSw4QkFBYTtJQUM1QyxZQUFZLENBQUMsUUFBZ0IsRUFBRSxJQUFnQixFQUFFLE9BQWE7UUFDakUsTUFBTSxJQUFJLEtBQUssQ0FBQyw0RkFBNEYsQ0FBQyxDQUFDO0lBQ2xILENBQUM7SUFFTSxXQUFXLENBQUMsUUFBZ0IsRUFBRSxJQUFnQixFQUFFLE9BQWE7UUFDaEUsTUFBTSxJQUFJLEtBQUssQ0FBQywyRkFBMkYsQ0FBQyxDQUFDO0lBQ2pILENBQUM7SUFFRCxXQUFXLENBQUMsUUFBZ0IsRUFBRSxJQUFnQixFQUFFLE9BQWE7UUFDekQsTUFBTSxJQUFJLEtBQUssQ0FBQywyRkFBMkYsQ0FBQyxDQUFDO0lBQ2pILENBQUM7Q0FDSixDQUFBO0FBWlksb0JBQW9CO0lBRGhDLElBQUEsbUJBQVUsR0FBRTtHQUNBLG9CQUFvQixDQVloQztBQVpZLG9EQUFvQiIsImZpbGUiOiJsaWIvYWRhcHRlcnMvZGVmYXVsdC1leHBvcnQuYWRhcHRlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQG5lc3Rqcy9jb21tb25cIjtcbmltcG9ydCB7IEV4cG9ydEFkYXB0ZXIsIEV4cG9ydERhdGEgfSBmcm9tIFwiLi9leHBvcnQuYWRhcHRlclwiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGVmYXVsdEV4cG9ydEFkYXB0ZXIgZXh0ZW5kcyBFeHBvcnRBZGFwdGVyIHtcbiAgICBwdWJsaWMgZXhwb3J0QXNIdG1sKGxhbmd1YWdlOiBzdHJpbmcsIGRhdGE6IEV4cG9ydERhdGEsIG9wdGlvbnM/OiBhbnkpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEYXRhRmlsdGVyIGRvZXNuJ3QgcHJvdmlkZSBhIGRlZmF1bHQgSFRNTCBleHBvcnQuIFRvIGVuYWJsZSBpdCwgYWRkIGEgY3VzdG9tIEV4cG9ydEFkYXB0ZXJcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGV4cG9ydEFzUGRmKGxhbmd1YWdlOiBzdHJpbmcsIGRhdGE6IEV4cG9ydERhdGEsIG9wdGlvbnM/OiBhbnkpOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEYXRhRmlsdGVyIGRvZXNuJ3QgcHJvdmlkZSBhIGRlZmF1bHQgUERGIGV4cG9ydC4gVG8gZW5hYmxlIGl0LCBhZGQgYSBjdXN0b20gRXhwb3J0QWRhcHRlclwiKTtcbiAgICB9XG5cbiAgICBleHBvcnRBc1ppcChsYW5ndWFnZTogc3RyaW5nLCBkYXRhOiBFeHBvcnREYXRhLCBvcHRpb25zPzogYW55KTogUHJvbWlzZTxCdWZmZXI+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRGF0YUZpbHRlciBkb2Vzbid0IHByb3ZpZGUgYSBkZWZhdWx0IFppcCBleHBvcnQuIFRvIGVuYWJsZSBpdCwgYWRkIGEgY3VzdG9tIEV4cG9ydEFkYXB0ZXJcIik7XG4gICAgfVxufVxuIl19
@@ -14,9 +14,9 @@ let DefaultTranslateAdapter = class DefaultTranslateAdapter extends translate_ad
14
14
  return key;
15
15
  }
16
16
  };
17
- exports.DefaultTranslateAdapter = DefaultTranslateAdapter;
18
- exports.DefaultTranslateAdapter = DefaultTranslateAdapter = __decorate([
17
+ DefaultTranslateAdapter = __decorate([
19
18
  (0, common_1.Injectable)()
20
19
  ], DefaultTranslateAdapter);
20
+ exports.DefaultTranslateAdapter = DefaultTranslateAdapter;
21
21
 
22
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9hZGFwdGVycy9kZWZhdWx0LXRyYW5zbGF0ZS5hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLDJDQUE0QztBQUM1QywyREFBdUQ7QUFHaEQsSUFBTSx1QkFBdUIsR0FBN0IsTUFBTSx1QkFBd0IsU0FBUSxvQ0FBZ0I7SUFDbEQsS0FBSyxDQUFDLGNBQWMsQ0FBQyxRQUFnQixFQUFFLEdBQVc7UUFDckQsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0NBQ0osQ0FBQTtBQUpZLDBEQUF1QjtrQ0FBdkIsdUJBQXVCO0lBRG5DLElBQUEsbUJBQVUsR0FBRTtHQUNBLHVCQUF1QixDQUluQyIsImZpbGUiOiJsaWIvYWRhcHRlcnMvZGVmYXVsdC10cmFuc2xhdGUuYWRhcHRlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQG5lc3Rqcy9jb21tb25cIjtcbmltcG9ydCB7IFRyYW5zbGF0ZUFkYXB0ZXIgfSBmcm9tIFwiLi90cmFuc2xhdGUuYWRhcHRlclwiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGVmYXVsdFRyYW5zbGF0ZUFkYXB0ZXIgZXh0ZW5kcyBUcmFuc2xhdGVBZGFwdGVyIHtcbiAgICBwdWJsaWMgYXN5bmMgZ2V0VHJhbnNsYXRpb24obGFuZ3VhZ2U6IHN0cmluZywga2V5OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4ga2V5O1xuICAgIH1cbn1cbiJdfQ==
22
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9hZGFwdGVycy9kZWZhdWx0LXRyYW5zbGF0ZS5hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLDJDQUE0QztBQUM1QywyREFBdUQ7QUFHaEQsSUFBTSx1QkFBdUIsR0FBN0IsTUFBTSx1QkFBd0IsU0FBUSxvQ0FBZ0I7SUFDbEQsS0FBSyxDQUFDLGNBQWMsQ0FBQyxRQUFnQixFQUFFLEdBQVc7UUFDckQsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0NBQ0osQ0FBQTtBQUpZLHVCQUF1QjtJQURuQyxJQUFBLG1CQUFVLEdBQUU7R0FDQSx1QkFBdUIsQ0FJbkM7QUFKWSwwREFBdUIiLCJmaWxlIjoibGliL2FkYXB0ZXJzL2RlZmF1bHQtdHJhbnNsYXRlLmFkYXB0ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBuZXN0anMvY29tbW9uXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVBZGFwdGVyIH0gZnJvbSBcIi4vdHJhbnNsYXRlLmFkYXB0ZXJcIjtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERlZmF1bHRUcmFuc2xhdGVBZGFwdGVyIGV4dGVuZHMgVHJhbnNsYXRlQWRhcHRlciB7XG4gICAgcHVibGljIGFzeW5jIGdldFRyYW5zbGF0aW9uKGxhbmd1YWdlOiBzdHJpbmcsIGtleTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIGtleTtcbiAgICB9XG59XG4iXX0=
@@ -10,7 +10,6 @@ import { DataFilterUserModel } from "./models/user.model";
10
10
  import { DataFilterScanner } from "./scanners/data-filter.scanner";
11
11
  import { SequelizeModelScanner } from "./scanners/sequelize-model.scanner";
12
12
  import { M } from "./sequelize.utils";
13
- import { DialectFormatterService } from "./services/dialect-formatter.service";
14
13
  export declare class DataFilterRepository<Data> {
15
14
  private dataDef;
16
15
  private dataFilterScanner;
@@ -18,11 +17,10 @@ export declare class DataFilterRepository<Data> {
18
17
  private accessControlAdapter;
19
18
  private translateService;
20
19
  private exportAdapter;
21
- private dialectFormatterService;
22
20
  private _config;
23
21
  private _definitions;
24
22
  get model(): typeof M;
25
- constructor(dataDef: any, dataFilterScanner: DataFilterScanner, sequelizeModelScanner: SequelizeModelScanner, accessControlAdapter: AccessControlAdapter, translateService: TranslateAdapter, exportAdapter: ExportAdapter, dialectFormatterService: DialectFormatterService);
23
+ constructor(dataDef: any, dataFilterScanner: DataFilterScanner, sequelizeModelScanner: SequelizeModelScanner, accessControlAdapter: AccessControlAdapter, translateService: TranslateAdapter, exportAdapter: ExportAdapter);
26
24
  findByPk(identifier: Identifier, options?: FindOptions, conditions?: object): Promise<Data | null>;
27
25
  findByPkFromUser(user: DataFilterUserModel, identifier: Identifier, conditions?: object): Promise<Data | null>;
28
26
  findOne(options?: FindOptions, conditions?: object): Promise<Data | null>;
@@ -17,21 +17,19 @@ const export_types_model_1 = require("./models/export-types.model");
17
17
  const data_filter_scanner_1 = require("./scanners/data-filter.scanner");
18
18
  const sequelize_model_scanner_1 = require("./scanners/sequelize-model.scanner");
19
19
  const sequelize_utils_1 = require("./sequelize.utils");
20
- const dialect_formatter_service_1 = require("./services/dialect-formatter.service");
21
20
  const csv_utils_1 = require("./utils/csv.utils");
22
21
  const xlsx_utils_1 = require("./utils/xlsx.utils");
23
22
  let DataFilterRepository = class DataFilterRepository {
24
23
  get model() {
25
24
  return this._config.model;
26
25
  }
27
- constructor(dataDef, dataFilterScanner, sequelizeModelScanner, accessControlAdapter, translateService, exportAdapter, dialectFormatterService) {
26
+ constructor(dataDef, dataFilterScanner, sequelizeModelScanner, accessControlAdapter, translateService, exportAdapter) {
28
27
  this.dataDef = dataDef;
29
28
  this.dataFilterScanner = dataFilterScanner;
30
29
  this.sequelizeModelScanner = sequelizeModelScanner;
31
30
  this.accessControlAdapter = accessControlAdapter;
32
31
  this.translateService = translateService;
33
32
  this.exportAdapter = exportAdapter;
34
- this.dialectFormatterService = dialectFormatterService;
35
33
  this.init();
36
34
  }
37
35
  async findByPk(identifier, options, conditions) {
@@ -121,8 +119,8 @@ let DataFilterRepository = class DataFilterRepository {
121
119
  return [];
122
120
  }
123
121
  const path = x.path.transformPathConfig(conditions);
124
- const attributes = x.withContext(this.dialectFormatterService).transformAttributesConfig(conditions);
125
- const additionalIncludes = x.withContext(this.dialectFormatterService).transformIncludesConfig(conditions);
122
+ const attributes = x.transformAttributesConfig(conditions);
123
+ const additionalIncludes = x.transformIncludesConfig(conditions);
126
124
  return this.sequelizeModelScanner.getIncludes(this.model, path, additionalIncludes, attributes);
127
125
  }),
128
126
  ...this._config.getCustomAttributesIncludes().map(x => this.sequelizeModelScanner.getIncludes(this.model, {
@@ -136,7 +134,7 @@ let DataFilterRepository = class DataFilterRepository {
136
134
  nestedIncludes.push(options.include);
137
135
  }
138
136
  options.include = sequelize_utils_1.SequelizeUtils.reduceIncludes(nestedIncludes);
139
- const generatedAttributes = this._config.withContext(this.dialectFormatterService).transformAttributesConfig(conditions);
137
+ const generatedAttributes = this._config.transformAttributesConfig(conditions);
140
138
  if (generatedAttributes) {
141
139
  if (options.attributes) {
142
140
  options.attributes = sequelize_utils_1.SequelizeUtils.mergeAttributes(options.attributes, generatedAttributes);
@@ -170,8 +168,8 @@ let DataFilterRepository = class DataFilterRepository {
170
168
  return [];
171
169
  }
172
170
  const path = x.path.transformPathConfig(conditions);
173
- const attributes = x.withContext(this.dialectFormatterService).transformAttributesConfig(conditions);
174
- const additionalIncludes = x.withContext(this.dialectFormatterService).transformIncludesConfig(conditions);
171
+ const attributes = x.transformAttributesConfig(conditions);
172
+ const additionalIncludes = x.transformIncludesConfig(conditions);
175
173
  return this.sequelizeModelScanner.getIncludes(this.model, path, additionalIncludes, attributes);
176
174
  }),
177
175
  ...this._config.getCustomAttributesIncludes().map(x => {
@@ -223,7 +221,7 @@ let DataFilterRepository = class DataFilterRepository {
223
221
  continue;
224
222
  }
225
223
  const attr = definition.ignoreInSearch ? [] : (_a = definition.searchableAttributes) !== null && _a !== void 0 ? _a : definition.attributes;
226
- const additionalIncludes = definition.withContext(this.dialectFormatterService).transformIncludesConfig({});
224
+ const additionalIncludes = definition.transformIncludesConfig({});
227
225
  attributes.push(...this.sequelizeModelScanner.getAttributes(this.model, definition.path, additionalIncludes, attr));
228
226
  }
229
227
  return attributes;
@@ -388,15 +386,14 @@ let DataFilterRepository = class DataFilterRepository {
388
386
  return where;
389
387
  }
390
388
  };
391
- exports.DataFilterRepository = DataFilterRepository;
392
- exports.DataFilterRepository = DataFilterRepository = __decorate([
389
+ DataFilterRepository = __decorate([
393
390
  (0, common_1.Injectable)(),
394
391
  __metadata("design:paramtypes", [Object, data_filter_scanner_1.DataFilterScanner,
395
392
  sequelize_model_scanner_1.SequelizeModelScanner,
396
393
  adapters_1.AccessControlAdapter,
397
394
  adapters_1.TranslateAdapter,
398
- adapters_1.ExportAdapter,
399
- dialect_formatter_service_1.DialectFormatterService])
395
+ adapters_1.ExportAdapter])
400
396
  ], DataFilterRepository);
397
+ exports.DataFilterRepository = DataFilterRepository;
401
398
 
402
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9kYXRhLWZpbHRlci5yZXBvc2l0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLDJDQUE0QztBQUM1Qyx5Q0FBaUg7QUFHakgseUNBQW1GO0FBSW5GLG9FQUEwRDtBQUsxRCx3RUFBbUU7QUFDbkUsZ0ZBQTJFO0FBQzNFLHVEQUFzRDtBQUN0RCxvRkFBK0U7QUFDL0UsaURBQTZDO0FBQzdDLG1EQUErQztBQUd4QyxJQUFNLG9CQUFvQixHQUExQixNQUFNLG9CQUFvQjtJQUk3QixJQUFXLEtBQUs7UUFDWixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBaUIsQ0FBQztJQUMxQyxDQUFDO0lBRUQsWUFDWSxPQUFZLEVBQ1osaUJBQW9DLEVBQ3BDLHFCQUE0QyxFQUM1QyxvQkFBMEMsRUFDMUMsZ0JBQWtDLEVBQ2xDLGFBQTRCLEVBQzVCLHVCQUFnRDtRQU5oRCxZQUFPLEdBQVAsT0FBTyxDQUFLO1FBQ1osc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1Qiw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBRXhELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRU0sS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFzQixFQUFFLE9BQXFCLEVBQUUsVUFBbUI7UUFDcEYsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3BHLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0Qs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QUFFLEVBQUUsRUFBRSxTQUFTLENBQUMsR0FBRyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDbEU7YUFBTSxJQUFJLFNBQVMsQ0FBQyxLQUFLLEVBQUU7WUFDeEIsT0FBTztnQkFDSCxDQUFDLGNBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDTixLQUFLO29CQUNMLFNBQVMsQ0FBQyxLQUFLO2lCQUNsQjthQUNKLENBQUM7U0FDTDtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7Q0FDSixDQUFBO0FBdGNZLG9EQUFvQjsrQkFBcEIsb0JBQW9CO0lBRGhDLElBQUEsbUJBQVUsR0FBRTs2Q0FXc0IsdUNBQWlCO1FBQ2IsK0NBQXFCO1FBQ3RCLCtCQUFvQjtRQUN4QiwyQkFBZ0I7UUFDbkIsd0JBQWE7UUFDSCxtREFBdUI7R0FmbkQsb0JBQW9CLENBc2NoQyIsImZpbGUiOiJsaWIvZGF0YS1maWx0ZXIucmVwb3NpdG9yeS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQG5lc3Rqcy9jb21tb25cIjtcbmltcG9ydCB7IEZpbmRPcHRpb25zLCBJZGVudGlmaWVyLCBJbmNsdWRlYWJsZSwgSW5jbHVkZU9wdGlvbnMsIE1vZGVsLCBPcCwgVXRpbHMsIFdoZXJlT3B0aW9ucyB9IGZyb20gXCJzZXF1ZWxpemVcIjtcbmltcG9ydCB7IEdyb3VwT3B0aW9uIH0gZnJvbSBcInNlcXVlbGl6ZS90eXBlcy9tb2RlbFwiO1xuaW1wb3J0IHsgQ29sLCBGbiB9IGZyb20gXCJzZXF1ZWxpemUvdHlwZXMvdXRpbHNcIjtcbmltcG9ydCB7IEFjY2Vzc0NvbnRyb2xBZGFwdGVyLCBFeHBvcnRBZGFwdGVyLCBUcmFuc2xhdGVBZGFwdGVyIH0gZnJvbSBcIi4vYWRhcHRlcnNcIjtcbmltcG9ydCB7IEF0dHJpYnV0ZXNDb25maWcgfSBmcm9tIFwiLi9tb2RlbHMvYXR0cmlidXRlcy5tb2RlbFwiO1xuaW1wb3J0IHsgQ3VzdG9tQXR0cmlidXRlc0NvbmZpZyB9IGZyb20gXCIuL21vZGVscy9jdXN0b20tYXR0cmlidXRlcy5tb2RlbFwiO1xuaW1wb3J0IHsgRGF0YUZpbHRlckNvbmZpZyB9IGZyb20gXCIuL21vZGVscy9kYXRhLWZpbHRlci5tb2RlbFwiO1xuaW1wb3J0IHsgRXhwb3J0VHlwZXMgfSBmcm9tIFwiLi9tb2RlbHMvZXhwb3J0LXR5cGVzLm1vZGVsXCI7XG5pbXBvcnQgeyBPcmRlck1vZGVsIH0gZnJvbSBcIi4vbW9kZWxzL2ZpbHRlci5tb2RlbFwiO1xuaW1wb3J0IHsgUGF0aE1vZGVsIH0gZnJvbSBcIi4vbW9kZWxzL3BhdGgubW9kZWxcIjtcbmltcG9ydCB7IFNlYXJjaEF0dHJpYnV0ZXNNb2RlbCB9IGZyb20gXCIuL21vZGVscy9zZWFyY2gtYXR0cmlidXRlcy5tb2RlbFwiO1xuaW1wb3J0IHsgRGF0YUZpbHRlclVzZXJNb2RlbCB9IGZyb20gXCIuL21vZGVscy91c2VyLm1vZGVsXCI7XG5pbXBvcnQgeyBEYXRhRmlsdGVyU2Nhbm5lciB9IGZyb20gXCIuL3NjYW5uZXJzL2RhdGEtZmlsdGVyLnNjYW5uZXJcIjtcbmltcG9ydCB7IFNlcXVlbGl6ZU1vZGVsU2Nhbm5lciB9IGZyb20gXCIuL3NjYW5uZXJzL3NlcXVlbGl6ZS1tb2RlbC5zY2FubmVyXCI7XG5pbXBvcnQgeyBNLCBTZXF1ZWxpemVVdGlscyB9IGZyb20gXCIuL3NlcXVlbGl6ZS51dGlsc1wiO1xuaW1wb3J0IHsgRGlhbGVjdEZvcm1hdHRlclNlcnZpY2UgfSBmcm9tIFwiLi9zZXJ2aWNlcy9kaWFsZWN0LWZvcm1hdHRlci5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBDc3ZVdGlscyB9IGZyb20gXCIuL3V0aWxzL2Nzdi51dGlsc1wiO1xuaW1wb3J0IHsgWGxzeFV0aWxzIH0gZnJvbSBcIi4vdXRpbHMveGxzeC51dGlsc1wiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGF0YUZpbHRlclJlcG9zaXRvcnk8RGF0YT4ge1xuICAgIHByaXZhdGUgX2NvbmZpZzogRGF0YUZpbHRlckNvbmZpZztcbiAgICBwcml2YXRlIF9kZWZpbml0aW9uczogQXR0cmlidXRlc0NvbmZpZ1tdO1xuXG4gICAgcHVibGljIGdldCBtb2RlbCgpOiB0eXBlb2YgTSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb25maWcubW9kZWwgYXMgdHlwZW9mIE07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZGF0YURlZjogYW55LFxuICAgICAgICBwcml2YXRlIGRhdGFGaWx0ZXJTY2FubmVyOiBEYXRhRmlsdGVyU2Nhbm5lcixcbiAgICAgICAgcHJpdmF0ZSBzZXF1ZWxpemVNb2RlbFNjYW5uZXI6IFNlcXVlbGl6ZU1vZGVsU2Nhbm5lcixcbiAgICAgICAgcHJpdmF0ZSBhY2Nlc3NDb250cm9sQWRhcHRlcjogQWNjZXNzQ29udHJvbEFkYXB0ZXIsXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlQWRhcHRlcixcbiAgICAgICAgcHJpdmF0ZSBleHBvcnRBZGFwdGVyOiBFeHBvcnRBZGFwdGVyLFxuICAgICAgICBwcml2YXRlIGRpYWxlY3RGb3JtYXR0ZXJTZXJ2aWNlOiBEaWFsZWN0Rm9ybWF0dGVyU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLmluaXQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZmluZEJ5UGsoaWRlbnRpZmllcjogSWRlbnRpZmllciwgb3B0aW9ucz86IEZpbmRPcHRpb25zLCBjb25kaXRpb25zPzogb2JqZWN0KTogUHJvbWlzZTxEYXRhIHwgbnVsbD4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLm1vZGVsLmZpbmRCeVBrKGlkZW50aWZpZXIsIHRoaXMuZ2VuZXJhdGVGaW5kT3B0aW9ucyhvcHRpb25zLCBjb25kaXRpb25zKSk7XG4gICAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5yZWR1Y2VPYmplY3QocmVzdWx0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZmluZEJ5UGtGcm9tVXNlcih1c2VyOiBEYXRhRmlsdGVyVXNlck1vZGVsLCBpZGVudGlmaWVyOiBJZGVudGlmaWVyLCBjb25kaXRpb25zPzogb2JqZWN0KTogUHJvbWlzZTxEYXRhIHwgbnVsbD4ge1xuICAgICAgICBjb25zdCByZXNvdXJjZXMgPSBhd2FpdCB0aGlzLmFjY2Vzc0NvbnRyb2xBZGFwdGVyLmdldFJlc291cmNlcyh0aGlzLl9jb25maWcubW9kZWwgYXMgYW55LCB1c2VyKTtcbiAgICAgICAgaWYgKHJlc291cmNlcy5pZHM/LmluY2x1ZGVzKGlkZW50aWZpZXIgYXMgbnVtYmVyKSB8fCByZXNvdXJjZXMuYWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5maW5kQnlQayhpZGVudGlmaWVyLCB7fSwgY29uZGl0aW9ucyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVzb3VyY2VzLmlkcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5maW5kT25lKHtcbiAgICAgICAgICAgIHdoZXJlOiB7XG4gICAgICAgICAgICAgICAgW09wLmFuZF06IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgW3RoaXMuX2NvbmZpZy5tb2RlbC5wcmltYXJ5S2V5QXR0cmlidXRlXTogaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXMud2hlcmUgPz8ge31cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIGNvbmRpdGlvbnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBmaW5kT25lKG9wdGlvbnM/OiBGaW5kT3B0aW9ucywgY29uZGl0aW9ucz86IG9iamVjdCk6IFByb21pc2U8RGF0YSB8IG51bGw+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5tb2RlbC5maW5kT25lKHRoaXMuZ2VuZXJhdGVGaW5kT3B0aW9ucyhvcHRpb25zLCBjb25kaXRpb25zKSk7XG4gICAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5yZWR1Y2VPYmplY3QocmVzdWx0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZmluZE9uZUZyb21Vc2VyKHVzZXI6IERhdGFGaWx0ZXJVc2VyTW9kZWwsIG9wdGlvbnM6IEZpbmRPcHRpb25zID0ge30sIGNvbmRpdGlvbnM/OiBvYmplY3QpOiBQcm9taXNlPERhdGEgfCBudWxsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmRPbmUoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgICAgICB3aGVyZTogYXdhaXQgdGhpcy5tZXJnZUFjY2Vzc0NvbnRyb2xDb25kaXRpb24ob3B0aW9ucy53aGVyZSA/PyB7fSwgdXNlcilcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb25kaXRpb25zXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGZpbmRBbGwob3B0aW9ucz86IEZpbmRPcHRpb25zLCBjb25kaXRpb25zPzogb2JqZWN0KTogUHJvbWlzZTxEYXRhW10+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5tb2RlbC5maW5kQWxsKHRoaXMuZ2VuZXJhdGVGaW5kT3B0aW9ucyhvcHRpb25zLCBjb25kaXRpb25zKSk7XG4gICAgICAgIGlmICghcmVzdWx0Py5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQgYXMgdW5rbm93biBhcyBEYXRhW107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdC5tYXAoeCA9PiB0aGlzLnJlZHVjZU9iamVjdCh4KSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGZpbmRBbGxGcm9tVXNlcih1c2VyOiBEYXRhRmlsdGVyVXNlck1vZGVsLCBvcHRpb25zPzogRmluZE9wdGlvbnMsIGNvbmRpdGlvbnM/OiBvYmplY3QpOiBQcm9taXNlPERhdGFbXT4ge1xuICAgICAgICBvcHRpb25zID0gb3B0aW9ucyA/PyB7fTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZmluZEFsbChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgICAgIHdoZXJlOiBhd2FpdCB0aGlzLm1lcmdlQWNjZXNzQ29udHJvbENvbmRpdGlvbihvcHRpb25zLndoZXJlID8/IHt9LCB1c2VyKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbmRpdGlvbnNcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY291bnQod2hlcmU/OiBXaGVyZU9wdGlvbnMsIGNvbmRpdGlvbnM/OiBvYmplY3QpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5nZW5lcmF0ZUZpbmRPcHRpb25zKHsgd2hlcmUgfSwgY29uZGl0aW9ucyk7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZGVsLmNvdW50KG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZWFyY2goc2VhcmNoOiBzdHJpbmcsIG9wdGlvbnM/OiBGaW5kT3B0aW9ucywgY29uZGl0aW9ucz86IG9iamVjdCk6IFByb21pc2U8RGF0YVtdPiB7XG4gICAgICAgIGNvbnN0IGZpbmRPcHRpb25zID0gdGhpcy5nZW5lcmF0ZUZpbmRPcHRpb25zKG9wdGlvbnMsIGNvbmRpdGlvbnMpO1xuICAgICAgICB0aGlzLmFkZFNlYXJjaENvbmRpdGlvbihzZWFyY2gsIGZpbmRPcHRpb25zKTtcblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLm1vZGVsLmZpbmRBbGwoZmluZE9wdGlvbnMpO1xuICAgICAgICBpZiAoIXJlc3VsdD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0IGFzIHVua25vd24gYXMgRGF0YVtdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQubWFwKHggPT4gdGhpcy5yZWR1Y2VPYmplY3QoeCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZWFyY2hGcm9tVXNlcih1c2VyOiBEYXRhRmlsdGVyVXNlck1vZGVsLCBzZWFyY2g6IHN0cmluZywgb3B0aW9ucz86IEZpbmRPcHRpb25zLCBjb25kaXRpb25zPzogb2JqZWN0KTogUHJvbWlzZTxEYXRhW10+IHtcbiAgICAgICAgY29uc3QgZmluZE9wdGlvbnMgPSB0aGlzLmdlbmVyYXRlRmluZE9wdGlvbnMob3B0aW9ucywgY29uZGl0aW9ucyk7XG4gICAgICAgIHRoaXMuYWRkU2VhcmNoQ29uZGl0aW9uKHNlYXJjaCwgZmluZE9wdGlvbnMpO1xuXG4gICAgICAgIGZpbmRPcHRpb25zLndoZXJlID0gYXdhaXQgdGhpcy5tZXJnZUFjY2Vzc0NvbnRyb2xDb25kaXRpb24oZmluZE9wdGlvbnMud2hlcmUsIHVzZXIpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLm1vZGVsLmZpbmRBbGwoZmluZE9wdGlvbnMpO1xuICAgICAgICBpZiAoIXJlc3VsdD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0IGFzIHVua25vd24gYXMgRGF0YVtdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQubWFwKHggPT4gdGhpcy5yZWR1Y2VPYmplY3QoeCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZW5lcmF0ZUZpbmRPcHRpb25zKG9wdGlvbnM/OiBGaW5kT3B0aW9ucywgY29uZGl0aW9ucz86IG9iamVjdCk6IEZpbmRPcHRpb25zIHtcbiAgICAgICAgb3B0aW9ucyA/Pz0ge307XG5cbiAgICAgICAgY29uc3QgbmVzdGVkSW5jbHVkZXM6IEFycmF5PEluY2x1ZGVPcHRpb25zIHwgSW5jbHVkZU9wdGlvbnNbXT4gPSBbXG4gICAgICAgICAgICAuLi50aGlzLl9kZWZpbml0aW9ucy5tYXAoeCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF4LnBhdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBwYXRoID0geC5wYXRoLnRyYW5zZm9ybVBhdGhDb25maWcoY29uZGl0aW9ucyk7XG4gICAgICAgICAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHgud2l0aENvbnRleHQodGhpcy5kaWFsZWN0Rm9ybWF0dGVyU2VydmljZSkudHJhbnNmb3JtQXR0cmlidXRlc0NvbmZpZyhjb25kaXRpb25zKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGRpdGlvbmFsSW5jbHVkZXMgPSB4LndpdGhDb250ZXh0KHRoaXMuZGlhbGVjdEZvcm1hdHRlclNlcnZpY2UpLnRyYW5zZm9ybUluY2x1ZGVzQ29uZmlnKGNvbmRpdGlvbnMpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNlcXVlbGl6ZU1vZGVsU2Nhbm5lci5nZXRJbmNsdWRlcyh0aGlzLm1vZGVsLCBwYXRoLCBhZGRpdGlvbmFsSW5jbHVkZXMsIGF0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAuLi50aGlzLl9jb25maWcuZ2V0Q3VzdG9tQXR0cmlidXRlc0luY2x1ZGVzKCkubWFwKHggPT4gdGhpcy5zZXF1ZWxpemVNb2RlbFNjYW5uZXIuZ2V0SW5jbHVkZXModGhpcy5tb2RlbCwge1xuICAgICAgICAgICAgICAgIHBhdGg6IHgucGF0aCxcbiAgICAgICAgICAgICAgICBwYXJhbm9pZDogeC5wYXJhbm9pZCxcbiAgICAgICAgICAgICAgICBzdWJRdWVyeTogeC5zdWJRdWVyeSxcbiAgICAgICAgICAgICAgICB3aGVyZTogeC53aGVyZSA/IFNlcXVlbGl6ZVV0aWxzLmdlbmVyYXRlV2hlcmVDb25kaXRpb25zKHgud2hlcmUsIGNvbmRpdGlvbnMpIDogdW5kZWZpbmVkXG4gICAgICAgICAgICB9LCBbXSwgeC5hdHRyaWJ1dGVzKSlcbiAgICAgICAgXTtcbiAgICAgICAgaWYgKG9wdGlvbnMuaW5jbHVkZSkge1xuICAgICAgICAgICAgbmVzdGVkSW5jbHVkZXMucHVzaChvcHRpb25zLmluY2x1ZGUgYXMgSW5jbHVkZU9wdGlvbnMgfCBJbmNsdWRlT3B0aW9uc1tdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG9wdGlvbnMuaW5jbHVkZSA9IFNlcXVlbGl6ZVV0aWxzLnJlZHVjZUluY2x1ZGVzKG5lc3RlZEluY2x1ZGVzKTtcblxuICAgICAgICBjb25zdCBnZW5lcmF0ZWRBdHRyaWJ1dGVzID0gdGhpcy5fY29uZmlnLndpdGhDb250ZXh0KHRoaXMuZGlhbGVjdEZvcm1hdHRlclNlcnZpY2UpLnRyYW5zZm9ybUF0dHJpYnV0ZXNDb25maWcoY29uZGl0aW9ucyk7XG4gICAgICAgIGlmIChnZW5lcmF0ZWRBdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5hdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5hdHRyaWJ1dGVzID0gU2VxdWVsaXplVXRpbHMubWVyZ2VBdHRyaWJ1dGVzKG9wdGlvbnMuYXR0cmlidXRlcywgZ2VuZXJhdGVkQXR0cmlidXRlcyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMuYXR0cmlidXRlcyA9IGdlbmVyYXRlZEF0dHJpYnV0ZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2VuZXJhdGVPcmRlckluY2x1ZGUob3JkZXI6IE9yZGVyTW9kZWwsIGNvbmRpdGlvbnM/OiBvYmplY3QpOiBJbmNsdWRlT3B0aW9uc1tdIHtcbiAgICAgICAgaWYgKCFvcmRlciB8fCAhb3JkZXIuY29sdW1uIHx8IG9yZGVyLmRpcmVjdGlvbiA9PT0gXCJcIikge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY3VzdG9tQXR0ciA9IHRoaXMuZ2V0Q3VzdG9tQXR0cmlidXRlKG9yZGVyLmNvbHVtbik7XG4gICAgICAgIGlmIChjdXN0b21BdHRyKSB7XG4gICAgICAgICAgICBpZiAoIWN1c3RvbUF0dHIuY29uZmlnLnBhdGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlcXVlbGl6ZU1vZGVsU2Nhbm5lci5nZXRJbmNsdWRlcyh0aGlzLm1vZGVsLCB7XG4gICAgICAgICAgICAgICAgcGF0aDogY3VzdG9tQXR0ci5jb25maWcucGF0aCxcbiAgICAgICAgICAgICAgICB3aGVyZTogY3VzdG9tQXR0ci5jb25maWcud2hlcmUgPyBTZXF1ZWxpemVVdGlscy5nZW5lcmF0ZVdoZXJlQ29uZGl0aW9ucyhjdXN0b21BdHRyLmNvbmZpZy53aGVyZSwgY29uZGl0aW9ucykgOiB1bmRlZmluZWRcbiAgICAgICAgICAgIH0sIFtdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnNlcXVlbGl6ZU1vZGVsU2Nhbm5lci5nZXRPcmRlckluY2x1ZGVzKHRoaXMubW9kZWwsIG9yZGVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2VuZXJhdGVTZWFyY2hJbmNsdWRlKGNvbmRpdGlvbnM/OiBvYmplY3QpOiBJbmNsdWRlYWJsZVtdIHtcbiAgICAgICAgY29uc3QgbmVzdGVkSW5jbHVkZXM6IEFycmF5PEluY2x1ZGVPcHRpb25zIHwgSW5jbHVkZU9wdGlvbnNbXT4gPSBbXG4gICAgICAgICAgICAuLi50aGlzLl9kZWZpbml0aW9ucy5tYXAoeCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF4LnBhdGggfHwgeC5wYXRoLnNlcGFyYXRlIHx8IHguaWdub3JlSW5TZWFyY2gpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBwYXRoID0geC5wYXRoLnRyYW5zZm9ybVBhdGhDb25maWcoY29uZGl0aW9ucyk7XG4gICAgICAgICAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHgud2l0aENvbnRleHQodGhpcy5kaWFsZWN0Rm9ybWF0dGVyU2VydmljZSkudHJhbnNmb3JtQXR0cmlidXRlc0NvbmZpZyhjb25kaXRpb25zKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGRpdGlvbmFsSW5jbHVkZXMgPSB4LndpdGhDb250ZXh0KHRoaXMuZGlhbGVjdEZvcm1hdHRlclNlcnZpY2UpLnRyYW5zZm9ybUluY2x1ZGVzQ29uZmlnKGNvbmRpdGlvbnMpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNlcXVlbGl6ZU1vZGVsU2Nhbm5lci5nZXRJbmNsdWRlcyh0aGlzLm1vZGVsLCBwYXRoLCBhZGRpdGlvbmFsSW5jbHVkZXMsIGF0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAuLi50aGlzLl9jb25maWcuZ2V0Q3VzdG9tQXR0cmlidXRlc0luY2x1ZGVzKCkubWFwKHggPT4ge1xuICAgICAgICAgICAgICAgIGlmICgheC5wYXRoIHx8IHguc2VwYXJhdGUgfHwgeC5pZ25vcmVJblNlYXJjaCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VxdWVsaXplTW9kZWxTY2FubmVyLmdldEluY2x1ZGVzKHRoaXMubW9kZWwsIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogeC5wYXRoLFxuICAgICAgICAgICAgICAgICAgICBwYXJhbm9pZDogeC5wYXJhbm9pZCxcbiAgICAgICAgICAgICAgICAgICAgc3ViUXVlcnk6IHguc3ViUXVlcnksXG4gICAgICAgICAgICAgICAgICAgIHdoZXJlOiB4LndoZXJlID8gU2VxdWVsaXplVXRpbHMuZ2VuZXJhdGVXaGVyZUNvbmRpdGlvbnMoeC53aGVyZSwgY29uZGl0aW9ucykgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICB9LCBbXSwgeC5hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgIF07XG5cbiAgICAgICAgcmV0dXJuIFNlcXVlbGl6ZVV0aWxzLnJlZHVjZUluY2x1ZGVzKG5lc3RlZEluY2x1ZGVzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVkdWNlT2JqZWN0KHJlc3VsdDogYW55KTogRGF0YSB7XG4gICAgICAgIGNvbnN0IHIgPSByZXN1bHQgaW5zdGFuY2VvZiBNb2RlbCA/IHJlc3VsdC50b0pTT04oKSA6IHJlc3VsdDtcbiAgICAgICAgY29uc3QgZGF0YSA9IG5ldyB0aGlzLmRhdGFEZWYucHJvdG90eXBlLmNvbnN0cnVjdG9yKHt9LCB7IGlzTmV3UmVjb3JkOiBmYWxzZSB9KTtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihkYXRhLCByKTtcbiAgICAgICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBNb2RlbCkge1xuICAgICAgICAgICAgKGRhdGEgYXMgYW55KS5kYXRhVmFsdWVzID0ge1xuICAgICAgICAgICAgICAgIC4uLnJcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGRlZiBvZiB0aGlzLl9kZWZpbml0aW9ucykge1xuICAgICAgICAgICAgaWYgKGRlZi5wYXRoKSB7XG4gICAgICAgICAgICAgICAgZGF0YVtkZWYua2V5XSA9IFNlcXVlbGl6ZVV0aWxzLnJlZHVjZU1vZGVsRnJvbVBhdGgocmVzdWx0LCBkZWYucGF0aC5wYXRoKTtcbiAgICAgICAgICAgICAgICBpZiAoZGF0YSBpbnN0YW5jZW9mIE1vZGVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGEuc2V0RGF0YVZhbHVlKGRlZi5rZXkgYXMgYW55LCBTZXF1ZWxpemVVdGlscy5yZWR1Y2VNb2RlbEZyb21QYXRoKHJlc3VsdCwgZGVmLnBhdGgucGF0aCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGF0YVtkZWYua2V5XSA9IHJlc3VsdFtkZWYua2V5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTZWFyY2hBdHRyaWJ1dGVzKCk6IFNlYXJjaEF0dHJpYnV0ZXNNb2RlbFtdIHtcbiAgICAgICAgY29uc3QgYXR0cmlidXRlczogU2VhcmNoQXR0cmlidXRlc01vZGVsW10gPSBbXTtcbiAgICAgICAgY29uc3QgbW9kZWxBdHRyID0gdGhpcy5fY29uZmlnLmdldFNlYXJjaGFibGVBdHRyaWJ1dGVzKCk7XG4gICAgICAgIGF0dHJpYnV0ZXMucHVzaChcbiAgICAgICAgICAgIC4uLm1vZGVsQXR0ci5tYXAoYSA9PiAoe1xuICAgICAgICAgICAgICAgIG5hbWU6IGEsXG4gICAgICAgICAgICAgICAga2V5OiBhLFxuICAgICAgICAgICAgICAgIGlzSnNvbjogU2VxdWVsaXplVXRpbHMuaXNDb2x1bW5Kc29uKHRoaXMubW9kZWwsIGEpXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgKTtcblxuICAgICAgICBmb3IgKGNvbnN0IGRlZmluaXRpb24gb2YgdGhpcy5fZGVmaW5pdGlvbnMpIHtcbiAgICAgICAgICAgIGlmICghZGVmaW5pdGlvbi5wYXRoKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGF0dHIgPSBkZWZpbml0aW9uLmlnbm9yZUluU2VhcmNoID8gW10gOiBkZWZpbml0aW9uLnNlYXJjaGFibGVBdHRyaWJ1dGVzID8/IGRlZmluaXRpb24uYXR0cmlidXRlcztcbiAgICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWxJbmNsdWRlcyA9IGRlZmluaXRpb24ud2l0aENvbnRleHQodGhpcy5kaWFsZWN0Rm9ybWF0dGVyU2VydmljZSkudHJhbnNmb3JtSW5jbHVkZXNDb25maWcoe30pO1xuICAgICAgICAgICAgYXR0cmlidXRlcy5wdXNoKFxuICAgICAgICAgICAgICAgIC4uLnRoaXMuc2VxdWVsaXplTW9kZWxTY2FubmVyLmdldEF0dHJpYnV0ZXMoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9kZWwsXG4gICAgICAgICAgICAgICAgICAgIGRlZmluaXRpb24ucGF0aCBhcyBQYXRoTW9kZWwsXG4gICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxJbmNsdWRlcyxcbiAgICAgICAgICAgICAgICAgICAgYXR0clxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXR0cmlidXRlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzQ3VzdG9tQXR0cmlidXRlKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLl9jb25maWcuY3VzdG9tQXR0cmlidXRlcy5maW5kKCh4KSA9PiB4LmNvbmZpZy5uYW1lID09PSBuYW1lKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q3VzdG9tQXR0cmlidXRlKG5hbWU6IHN0cmluZyk6IEN1c3RvbUF0dHJpYnV0ZXNDb25maWcge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlnLmN1c3RvbUF0dHJpYnV0ZXMuZmluZCgoeCkgPT4geC5jb25maWcubmFtZSA9PT0gbmFtZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEN1c3RvbUF0dHJpYnV0ZUdyb3VwQnkoKTogKHN0cmluZyB8IEZuIHwgQ29sKVtdIHtcbiAgICAgICAgY29uc3QgZ3JvdXA6IEdyb3VwT3B0aW9uID0gW107XG5cbiAgICAgICAgY29uc3Qgc2hvdWxkR3JvdXBCeSA9IHRoaXMuX2NvbmZpZy5jdXN0b21BdHRyaWJ1dGVzLnNvbWUoKGF0dHJpYnV0ZSkgPT4gYXR0cmlidXRlLnNob3VsZEdyb3VwQnkoKSk7XG4gICAgICAgIGlmIChzaG91bGRHcm91cEJ5KSB7XG4gICAgICAgICAgICBncm91cC5wdXNoKFwiaWRcIik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZ3JvdXA7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGRvd25sb2FkRGF0YShkYXRhOiBEYXRhW10sIHR5cGU6IEV4cG9ydFR5cGVzLCBsYW5nOiBzdHJpbmcsIG9wdGlvbnM/OiBhbnkpOiBQcm9taXNlPEJ1ZmZlciB8IHN0cmluZz47XG4gICAgcHVibGljIGFzeW5jIGRvd25sb2FkRGF0YShoZWFkZXJzOiBzdHJpbmdbXSwgZGF0YTogYW55W10sIHR5cGU6IEV4cG9ydFR5cGVzLCBsYW5nOiBzdHJpbmcsIG9wdGlvbnM/OiBhbnkpOiBQcm9taXNlPEJ1ZmZlciB8IHN0cmluZz47XG4gICAgcHVibGljIGFzeW5jIGRvd25sb2FkRGF0YShcbiAgICAgICAgZGF0YU9ySGVhZGVyczogRGF0YVtdIHwgc3RyaW5nW10sXG4gICAgICAgIHR5cGVPckRhdGE6IEV4cG9ydFR5cGVzIHwgYW55W10sXG4gICAgICAgIGxhbmdPclR5cGU6IHN0cmluZyB8IEV4cG9ydFR5cGVzLFxuICAgICAgICBvcHRpb25zT3JMYW5nPzogYW55IHwgc3RyaW5nLFxuICAgICAgICBvcHRpb25zPzogYW55XG4gICAgKTogUHJvbWlzZTxCdWZmZXIgfCBzdHJpbmc+IHtcbiAgICAgICAgbGV0IHR5cGU6IEV4cG9ydFR5cGVzO1xuICAgICAgICBsZXQgaGVhZGVyczogc3RyaW5nW107XG4gICAgICAgIGxldCBkYXRhOiBhbnlbXTtcbiAgICAgICAgbGV0IGxhbmc6IHN0cmluZztcblxuICAgICAgICBpZiAodHlwZW9mIHR5cGVPckRhdGEgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHR5cGUgPSB0eXBlT3JEYXRhO1xuICAgICAgICAgICAgbGFuZyA9IGxhbmdPclR5cGU7XG4gICAgICAgICAgICBoZWFkZXJzID0gYXdhaXQgdGhpcy5nZXRFeHBvcnRzSGVhZGVyKGxhbmcsIHRoaXMuX2NvbmZpZy5leHBvcnRDb2x1bW5zID8/IFtdKTtcbiAgICAgICAgICAgIGRhdGEgPSBhd2FpdCB0aGlzLmdldEV4cG9ydERhdGEoZGF0YU9ySGVhZGVycyBhcyBEYXRhW10pO1xuICAgICAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnNPckxhbmc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsYW5nID0gb3B0aW9uc09yTGFuZyBhcyBzdHJpbmc7XG4gICAgICAgICAgICBoZWFkZXJzID0gYXdhaXQgdGhpcy5nZXRFeHBvcnRzSGVhZGVyKGxhbmcsIGRhdGFPckhlYWRlcnMgYXMgc3RyaW5nW10pO1xuICAgICAgICAgICAgZGF0YSA9IHR5cGVPckRhdGE7XG4gICAgICAgICAgICB0eXBlID0gbGFuZ09yVHlwZSBhcyBFeHBvcnRUeXBlcztcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgY2FzZSBFeHBvcnRUeXBlcy5YTFNYOlxuICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmRvd25sb2FkWGxzeChoZWFkZXJzLCBkYXRhKTtcbiAgICAgICAgICAgIGNhc2UgRXhwb3J0VHlwZXMuSFRNTDpcbiAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5kb3dubG9hZEh0bWwoaGVhZGVycywgZGF0YSwgbGFuZywgb3B0aW9ucyk7XG4gICAgICAgICAgICBjYXNlIEV4cG9ydFR5cGVzLkNTVjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5kb3dubG9hZENzdihoZWFkZXJzLCBkYXRhKTtcbiAgICAgICAgICAgIGNhc2UgRXhwb3J0VHlwZXMuUERGOlxuICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmRvd25sb2FkUGRmKGhlYWRlcnMsIGRhdGEsIG9wdGlvbnMpO1xuICAgICAgICAgICAgY2FzZSBFeHBvcnRUeXBlcy5aSVA6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZG93bmxvYWRaaXAoaGVhZGVycywgZGF0YSwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZG93bmxvYWRYbHN4KGhlYWRlcnM6IHN0cmluZ1tdLCBkYXRhOiBhbnlbXSk6IFByb21pc2U8QnVmZmVyPiB7XG4gICAgICAgIHJldHVybiBYbHN4VXRpbHMuYXJyYXlUb1hsc3hCdWZmZXIoXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgdGhpcy5fY29uZmlnLm1vZGVsLmdldFRhYmxlTmFtZSgpIGFzIHN0cmluZyxcbiAgICAgICAgICAgIGhlYWRlcnNcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZG93bmxvYWRIdG1sKGhlYWRlcnM6IHN0cmluZ1tdLCBkYXRhOiBhbnlbXSwgbGFuZzogc3RyaW5nLCBvcHRpb25zPzogYW55KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXhwb3J0QWRhcHRlci5leHBvcnRBc0h0bWwobGFuZywge1xuICAgICAgICAgICAgdGl0bGU6IHRoaXMuX2NvbmZpZy5tb2RlbC5nZXRUYWJsZU5hbWUoKSBhcyBzdHJpbmcsXG4gICAgICAgICAgICBjb2x1bW5zOiBoZWFkZXJzLFxuICAgICAgICAgICAgZGF0YTogZGF0YVxuICAgICAgICB9LCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZG93bmxvYWRDc3YoaGVhZGVyczogc3RyaW5nW10sIGRhdGE6IGFueVtdKTogUHJvbWlzZTxCdWZmZXI+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IENzdlV0aWxzLmFycmF5VG9Dc3ZCdWZmZXIoZGF0YSwgaGVhZGVycyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGRvd25sb2FkUGRmKGhlYWRlcnM6IHN0cmluZ1tdLCBkYXRhOiBhbnlbXSwgbGFuZzogc3RyaW5nLCBvcHRpb25zPzogYW55KTogUHJvbWlzZTxCdWZmZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXhwb3J0QWRhcHRlci5leHBvcnRBc1BkZihsYW5nLCB7XG4gICAgICAgICAgICB0aXRsZTogdGhpcy5fY29uZmlnLm1vZGVsLmdldFRhYmxlTmFtZSgpIGFzIHN0cmluZyxcbiAgICAgICAgICAgIGNvbHVtbnM6IGhlYWRlcnMsXG4gICAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgIH0sIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBkb3dubG9hZFppcChoZWFkZXJzOiBzdHJpbmdbXSwgZGF0YTogYW55W10sIGxhbmc6IHN0cmluZywgb3B0aW9ucz86IGFueSk6IFByb21pc2U8QnVmZmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmV4cG9ydEFkYXB0ZXIuZXhwb3J0QXNaaXAobGFuZywge1xuICAgICAgICAgICAgdGl0bGU6IHRoaXMuX2NvbmZpZy5tb2RlbC5nZXRUYWJsZU5hbWUoKSBhcyBzdHJpbmcsXG4gICAgICAgICAgICBjb2x1bW5zOiBoZWFkZXJzLFxuICAgICAgICAgICAgZGF0YTogZGF0YVxuICAgICAgICB9LCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXQoKSB7XG4gICAgICAgIHRoaXMuX2NvbmZpZyA9IHRoaXMuZGF0YUZpbHRlclNjYW5uZXIuZ2V0RGF0YUZpbHRlcih0aGlzLmRhdGFEZWYpO1xuICAgICAgICB0aGlzLl9kZWZpbml0aW9ucyA9IHRoaXMuZGF0YUZpbHRlclNjYW5uZXIuZ2V0QXR0cmlidXRlcyh0aGlzLmRhdGFEZWYpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRTZWFyY2hDb25kaXRpb24oc2VhcmNoOiBzdHJpbmcsIG9wdGlvbnM6IEZpbmRPcHRpb25zKTogdm9pZCB7XG4gICAgICAgIGlmICghc2VhcmNoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzZWFyY2hJbmNsdWRlID0gdGhpcy5nZW5lcmF0ZVNlYXJjaEluY2x1ZGUoe30pO1xuICAgICAgICBvcHRpb25zLmluY2x1ZGUgPSBTZXF1ZWxpemVVdGlscy5tZXJnZUluY2x1ZGVzKFxuICAgICAgICAgICAgb3B0aW9ucy5pbmNsdWRlIGFzIEluY2x1ZGVPcHRpb25zIHwgSW5jbHVkZU9wdGlvbnNbXSxcbiAgICAgICAgICAgIHNlYXJjaEluY2x1ZGUgYXMgSW5jbHVkZU9wdGlvbnNbXVxuICAgICAgICApO1xuXG4gICAgICAgIGlmICghb3B0aW9ucy53aGVyZSkge1xuICAgICAgICAgICAgb3B0aW9ucy53aGVyZSA9IHsgW09wLmFuZF06IFtdIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvcHRpb25zLndoZXJlID0geyBbT3AuYW5kXTogW29wdGlvbnMud2hlcmVdIH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB3aGVyZSA9IG9wdGlvbnMud2hlcmU7XG4gICAgICAgIGNvbnN0IGdlbmVyYXRlRmllbGRzT2JqZWN0ID0gc2VhcmNoVmFsdWUgPT5cbiAgICAgICAgICAgIHRoaXMuZ2V0U2VhcmNoQXR0cmlidXRlcygpXG4gICAgICAgICAgICAgICAgLm1hcChhID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGEuaXNKc29uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IGEubGl0ZXJhbEtleSA/PyBgXFxgJHt0aGlzLm1vZGVsLm5hbWV9XFxgLlxcYCR7YS5rZXl9XFxgYDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgKiBsaXRlcmFsIGZ1bmN0aW9uIGlzIG5vdCB3b3JraW5nIG9mIHNvbWUgcmVhc29uLi4uXG4gICAgICAgICAgICAgICAgICAgICAgICAgKiBUaGlzIGlzIHRoZSBlcXVpdmFsZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5tb2RlbC5zZXF1ZWxpemUuZXNjYXBlKGAlJHtzZWFyY2hWYWx1ZS50b1VwcGVyQ2FzZSgpfSVgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgVXRpbHMuTGl0ZXJhbChgVVBQRVIoSlNPTl9FWFRSQUNUKCR7ZmllbGR9LCAnJCcpKSBMSUtFICR7dmFsdWV9YCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFthLmtleV06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbT3AubGlrZV06IGAlJHtzZWFyY2hWYWx1ZX0lYFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pLmZpbHRlcih4ID0+ICEheCk7XG5cbiAgICAgICAgY29uc3QgdG9rZW5zID0gc2VhcmNoLnNwbGl0KFwiIFwiKTtcbiAgICAgICAgd2hlcmVbT3AuYW5kXS5wdXNoKFxuICAgICAgICAgICAgdG9rZW5zLm1hcCh0ID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBbT3Aub3JdOiBnZW5lcmF0ZUZpZWxkc09iamVjdCh0KVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RXhwb3J0c0hlYWRlcihsYW5nOiBzdHJpbmcsIGhlYWRlcnM6IHN0cmluZ1tdLCB0cmFuc2xhdGVTZXJ2aWNlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoaGVhZGVycy5tYXAoeCA9PiB0cmFuc2xhdGVTZXJ2aWNlLmdldFRyYW5zbGF0aW9uKGxhbmcsIGBleHBvcnRzLiR7eH1gKSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RXhwb3J0RGF0YShkYXRhOiBEYXRhW10pOiBvYmplY3RbXSB7XG4gICAgICAgIHJldHVybiBkYXRhLm1hcCh4ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgICAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgdGhpcy5fY29uZmlnLmV4cG9ydENvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBbdmFsdWUsIHByb3BdID0gdGhpcy5nZXRFeHBvcnRWYWx1ZSh4LCBrZXkpO1xuICAgICAgICAgICAgICAgIHJlc3VsdFtgJHtpKyt9OiR7cHJvcH1gXSA9IHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRFeHBvcnRWYWx1ZShkYXRhOiBEYXRhLCBwYXRoOiBzdHJpbmcpOiBbdW5rbm93biwgc3RyaW5nXSB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBwYXRoLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgaWYgKGtleXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBrZXlzLnBvcCgpO1xuICAgICAgICAgICAgcmV0dXJuIFtkYXRhW2tleV0sIGtleV07XG4gICAgICAgIH1cblxuICAgICAgICBsZXQga2V5OiBzdHJpbmc7XG4gICAgICAgIHdoaWxlIChrZXlzLmxlbmd0aCkge1xuICAgICAgICAgICAga2V5ID0ga2V5cy5zaGlmdCgpO1xuICAgICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgICAgICBkYXRhID0gZGF0YVtrZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtkYXRhLCBrZXldO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgbWVyZ2VBY2Nlc3NDb250cm9sQ29uZGl0aW9uKHdoZXJlOiBXaGVyZU9wdGlvbnMsIHVzZXI6IERhdGFGaWx0ZXJVc2VyTW9kZWwpOiBQcm9taXNlPFdoZXJlT3B0aW9ucz4ge1xuICAgICAgICBjb25zdCByZXNvdXJjZXMgPSBhd2FpdCB0aGlzLmFjY2Vzc0NvbnRyb2xBZGFwdGVyLmdldFJlc291cmNlcyh0aGlzLl9jb25maWcubW9kZWwgYXMgYW55LCB1c2VyKTtcbiAgICAgICAgaWYgKHJlc291cmNlcy5pZHMpIHtcbiAgICAgICAgICAgIHJldHVybiBTZXF1ZWxpemVVdGlscy5tZXJnZVdoZXJlKHsgaWQ6IHJlc291cmNlcy5pZHMgfSwgd2hlcmUpO1xuICAgICAgICB9IGVsc2UgaWYgKHJlc291cmNlcy53aGVyZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBbT3AuYW5kXTogW1xuICAgICAgICAgICAgICAgICAgICB3aGVyZSxcbiAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzLndoZXJlXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB3aGVyZTtcbiAgICB9XG59XG4iXX0=
399
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9kYXRhLWZpbHRlci5yZXBvc2l0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLDJDQUE0QztBQUM1Qyx5Q0FBaUg7QUFHakgseUNBQW1GO0FBSW5GLG9FQUEwRDtBQUsxRCx3RUFBbUU7QUFDbkUsZ0ZBQTJFO0FBQzNFLHVEQUFzRDtBQUN0RCxpREFBNkM7QUFDN0MsbURBQStDO0FBR3hDLElBQU0sb0JBQW9CLEdBQTFCLE1BQU0sb0JBQW9CO0lBSTdCLElBQVcsS0FBSztRQUNaLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFpQixDQUFDO0lBQzFDLENBQUM7SUFFRCxZQUNZLE9BQVksRUFDWixpQkFBb0MsRUFDcEMscUJBQTRDLEVBQzVDLG9CQUEwQyxFQUMxQyxnQkFBa0MsRUFDbEMsYUFBNEI7UUFMNUIsWUFBTyxHQUFQLE9BQU8sQ0FBSztRQUNaLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1Qyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFFcEMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQXNCLEVBQUUsT0FBcUIsRUFBRSxVQUFtQjtRQUNwRixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDcEcsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFDRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVNLEtB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O1FBQ2IsK0NBQXFCO1FBQ3RCLCtCQUFvQjtRQUN4QiwyQkFBZ0I7UUFDbkIsd0JBQWE7R0FkL0Isb0JBQW9CLENBcWNoQztBQXJjWSxvREFBb0IiLCJmaWxlIjoibGliL2RhdGEtZmlsdGVyLnJlcG9zaXRvcnkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBuZXN0anMvY29tbW9uXCI7XG5pbXBvcnQgeyBGaW5kT3B0aW9ucywgSWRlbnRpZmllciwgSW5jbHVkZWFibGUsIEluY2x1ZGVPcHRpb25zLCBNb2RlbCwgT3AsIFV0aWxzLCBXaGVyZU9wdGlvbnMgfSBmcm9tIFwic2VxdWVsaXplXCI7XG5pbXBvcnQgeyBHcm91cE9wdGlvbiB9IGZyb20gXCJzZXF1ZWxpemUvdHlwZXMvbW9kZWxcIjtcbmltcG9ydCB7IENvbCwgRm4gfSBmcm9tIFwic2VxdWVsaXplL3R5cGVzL3V0aWxzXCI7XG5pbXBvcnQgeyBBY2Nlc3NDb250cm9sQWRhcHRlciwgRXhwb3J0QWRhcHRlciwgVHJhbnNsYXRlQWRhcHRlciB9IGZyb20gXCIuL2FkYXB0ZXJzXCI7XG5pbXBvcnQgeyBBdHRyaWJ1dGVzQ29uZmlnIH0gZnJvbSBcIi4vbW9kZWxzL2F0dHJpYnV0ZXMubW9kZWxcIjtcbmltcG9ydCB7IEN1c3RvbUF0dHJpYnV0ZXNDb25maWcgfSBmcm9tIFwiLi9tb2RlbHMvY3VzdG9tLWF0dHJpYnV0ZXMubW9kZWxcIjtcbmltcG9ydCB7IERhdGFGaWx0ZXJDb25maWcgfSBmcm9tIFwiLi9tb2RlbHMvZGF0YS1maWx0ZXIubW9kZWxcIjtcbmltcG9ydCB7IEV4cG9ydFR5cGVzIH0gZnJvbSBcIi4vbW9kZWxzL2V4cG9ydC10eXBlcy5tb2RlbFwiO1xuaW1wb3J0IHsgT3JkZXJNb2RlbCB9IGZyb20gXCIuL21vZGVscy9maWx0ZXIubW9kZWxcIjtcbmltcG9ydCB7IFBhdGhNb2RlbCB9IGZyb20gXCIuL21vZGVscy9wYXRoLm1vZGVsXCI7XG5pbXBvcnQgeyBTZWFyY2hBdHRyaWJ1dGVzTW9kZWwgfSBmcm9tIFwiLi9tb2RlbHMvc2VhcmNoLWF0dHJpYnV0ZXMubW9kZWxcIjtcbmltcG9ydCB7IERhdGFGaWx0ZXJVc2VyTW9kZWwgfSBmcm9tIFwiLi9tb2RlbHMvdXNlci5tb2RlbFwiO1xuaW1wb3J0IHsgRGF0YUZpbHRlclNjYW5uZXIgfSBmcm9tIFwiLi9zY2FubmVycy9kYXRhLWZpbHRlci5zY2FubmVyXCI7XG5pbXBvcnQgeyBTZXF1ZWxpemVNb2RlbFNjYW5uZXIgfSBmcm9tIFwiLi9zY2FubmVycy9zZXF1ZWxpemUtbW9kZWwuc2Nhbm5lclwiO1xuaW1wb3J0IHsgTSwgU2VxdWVsaXplVXRpbHMgfSBmcm9tIFwiLi9zZXF1ZWxpemUudXRpbHNcIjtcbmltcG9ydCB7IENzdlV0aWxzIH0gZnJvbSBcIi4vdXRpbHMvY3N2LnV0aWxzXCI7XG5pbXBvcnQgeyBYbHN4VXRpbHMgfSBmcm9tIFwiLi91dGlscy94bHN4LnV0aWxzXCI7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEYXRhRmlsdGVyUmVwb3NpdG9yeTxEYXRhPiB7XG4gICAgcHJpdmF0ZSBfY29uZmlnOiBEYXRhRmlsdGVyQ29uZmlnO1xuICAgIHByaXZhdGUgX2RlZmluaXRpb25zOiBBdHRyaWJ1dGVzQ29uZmlnW107XG5cbiAgICBwdWJsaWMgZ2V0IG1vZGVsKCk6IHR5cGVvZiBNIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpZy5tb2RlbCBhcyB0eXBlb2YgTTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBkYXRhRGVmOiBhbnksXG4gICAgICAgIHByaXZhdGUgZGF0YUZpbHRlclNjYW5uZXI6IERhdGFGaWx0ZXJTY2FubmVyLFxuICAgICAgICBwcml2YXRlIHNlcXVlbGl6ZU1vZGVsU2Nhbm5lcjogU2VxdWVsaXplTW9kZWxTY2FubmVyLFxuICAgICAgICBwcml2YXRlIGFjY2Vzc0NvbnRyb2xBZGFwdGVyOiBBY2Nlc3NDb250cm9sQWRhcHRlcixcbiAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVBZGFwdGVyLFxuICAgICAgICBwcml2YXRlIGV4cG9ydEFkYXB0ZXI6IEV4cG9ydEFkYXB0ZXJcbiAgICApIHtcbiAgICAgICAgdGhpcy5pbml0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGZpbmRCeVBrKGlkZW50aWZpZXI6IElkZW50aWZpZXIsIG9wdGlvbnM/OiBGaW5kT3B0aW9ucywgY29uZGl0aW9ucz86IG9iamVjdCk6IFByb21pc2U8RGF0YSB8IG51bGw+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5tb2RlbC5maW5kQnlQayhpZGVudGlmaWVyLCB0aGlzLmdlbmVyYXRlRmluZE9wdGlvbnMob3B0aW9ucywgY29uZGl0aW9ucykpO1xuICAgICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucmVkdWNlT2JqZWN0KHJlc3VsdCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGZpbmRCeVBrRnJvbVVzZXIodXNlcjogRGF0YUZpbHRlclVzZXJNb2RlbCwgaWRlbnRpZmllcjogSWRlbnRpZmllciwgY29uZGl0aW9ucz86IG9iamVjdCk6IFByb21pc2U8RGF0YSB8IG51bGw+IHtcbiAgICAgICAgY29uc3QgcmVzb3VyY2VzID0gYXdhaXQgdGhpcy5hY2Nlc3NDb250cm9sQWRhcHRlci5nZXRSZXNvdXJjZXModGhpcy5fY29uZmlnLm1vZGVsIGFzIGFueSwgdXNlcik7XG4gICAgICAgIGlmIChyZXNvdXJjZXMuaWRzPy5pbmNsdWRlcyhpZGVudGlmaWVyIGFzIG51bWJlcikgfHwgcmVzb3VyY2VzLmFsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZmluZEJ5UGsoaWRlbnRpZmllciwge30sIGNvbmRpdGlvbnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlc291cmNlcy5pZHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZmluZE9uZSh7XG4gICAgICAgICAgICB3aGVyZToge1xuICAgICAgICAgICAgICAgIFtPcC5hbmRdOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aGlzLl9jb25maWcubW9kZWwucHJpbWFyeUtleUF0dHJpYnV0ZV06IGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzLndoZXJlID8/IHt9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfVxuICAgICAgICB9LCBjb25kaXRpb25zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZmluZE9uZShvcHRpb25zPzogRmluZE9wdGlvbnMsIGNvbmRpdGlvbnM/OiBvYmplY3QpOiBQcm9taXNlPERhdGEgfCBudWxsPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMubW9kZWwuZmluZE9uZSh0aGlzLmdlbmVyYXRlRmluZE9wdGlvbnMob3B0aW9ucywgY29uZGl0aW9ucykpO1xuICAgICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucmVkdWNlT2JqZWN0KHJlc3VsdCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGZpbmRPbmVGcm9tVXNlcih1c2VyOiBEYXRhRmlsdGVyVXNlck1vZGVsLCBvcHRpb25zOiBGaW5kT3B0aW9ucyA9IHt9LCBjb25kaXRpb25zPzogb2JqZWN0KTogUHJvbWlzZTxEYXRhIHwgbnVsbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5maW5kT25lKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICAgICAgd2hlcmU6IGF3YWl0IHRoaXMubWVyZ2VBY2Nlc3NDb250cm9sQ29uZGl0aW9uKG9wdGlvbnMud2hlcmUgPz8ge30sIHVzZXIpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29uZGl0aW9uc1xuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBmaW5kQWxsKG9wdGlvbnM/OiBGaW5kT3B0aW9ucywgY29uZGl0aW9ucz86IG9iamVjdCk6IFByb21pc2U8RGF0YVtdPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMubW9kZWwuZmluZEFsbCh0aGlzLmdlbmVyYXRlRmluZE9wdGlvbnMob3B0aW9ucywgY29uZGl0aW9ucykpO1xuICAgICAgICBpZiAoIXJlc3VsdD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0IGFzIHVua25vd24gYXMgRGF0YVtdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQubWFwKHggPT4gdGhpcy5yZWR1Y2VPYmplY3QoeCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBmaW5kQWxsRnJvbVVzZXIodXNlcjogRGF0YUZpbHRlclVzZXJNb2RlbCwgb3B0aW9ucz86IEZpbmRPcHRpb25zLCBjb25kaXRpb25zPzogb2JqZWN0KTogUHJvbWlzZTxEYXRhW10+IHtcbiAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgPz8ge307XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmZpbmRBbGwoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgICAgICB3aGVyZTogYXdhaXQgdGhpcy5tZXJnZUFjY2Vzc0NvbnRyb2xDb25kaXRpb24ob3B0aW9ucy53aGVyZSA/PyB7fSwgdXNlcilcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb25kaXRpb25zXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNvdW50KHdoZXJlPzogV2hlcmVPcHRpb25zLCBjb25kaXRpb25zPzogb2JqZWN0KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuZ2VuZXJhdGVGaW5kT3B0aW9ucyh7IHdoZXJlIH0sIGNvbmRpdGlvbnMpO1xuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbC5jb3VudChvcHRpb25zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2VhcmNoKHNlYXJjaDogc3RyaW5nLCBvcHRpb25zPzogRmluZE9wdGlvbnMsIGNvbmRpdGlvbnM/OiBvYmplY3QpOiBQcm9taXNlPERhdGFbXT4ge1xuICAgICAgICBjb25zdCBmaW5kT3B0aW9ucyA9IHRoaXMuZ2VuZXJhdGVGaW5kT3B0aW9ucyhvcHRpb25zLCBjb25kaXRpb25zKTtcbiAgICAgICAgdGhpcy5hZGRTZWFyY2hDb25kaXRpb24oc2VhcmNoLCBmaW5kT3B0aW9ucyk7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5tb2RlbC5maW5kQWxsKGZpbmRPcHRpb25zKTtcbiAgICAgICAgaWYgKCFyZXN1bHQ/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCBhcyB1bmtub3duIGFzIERhdGFbXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0Lm1hcCh4ID0+IHRoaXMucmVkdWNlT2JqZWN0KHgpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2VhcmNoRnJvbVVzZXIodXNlcjogRGF0YUZpbHRlclVzZXJNb2RlbCwgc2VhcmNoOiBzdHJpbmcsIG9wdGlvbnM/OiBGaW5kT3B0aW9ucywgY29uZGl0aW9ucz86IG9iamVjdCk6IFByb21pc2U8RGF0YVtdPiB7XG4gICAgICAgIGNvbnN0IGZpbmRPcHRpb25zID0gdGhpcy5nZW5lcmF0ZUZpbmRPcHRpb25zKG9wdGlvbnMsIGNvbmRpdGlvbnMpO1xuICAgICAgICB0aGlzLmFkZFNlYXJjaENvbmRpdGlvbihzZWFyY2gsIGZpbmRPcHRpb25zKTtcblxuICAgICAgICBmaW5kT3B0aW9ucy53aGVyZSA9IGF3YWl0IHRoaXMubWVyZ2VBY2Nlc3NDb250cm9sQ29uZGl0aW9uKGZpbmRPcHRpb25zLndoZXJlLCB1c2VyKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5tb2RlbC5maW5kQWxsKGZpbmRPcHRpb25zKTtcbiAgICAgICAgaWYgKCFyZXN1bHQ/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCBhcyB1bmtub3duIGFzIERhdGFbXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0Lm1hcCh4ID0+IHRoaXMucmVkdWNlT2JqZWN0KHgpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2VuZXJhdGVGaW5kT3B0aW9ucyhvcHRpb25zPzogRmluZE9wdGlvbnMsIGNvbmRpdGlvbnM/OiBvYmplY3QpOiBGaW5kT3B0aW9ucyB7XG4gICAgICAgIG9wdGlvbnMgPz89IHt9O1xuXG4gICAgICAgIGNvbnN0IG5lc3RlZEluY2x1ZGVzOiBBcnJheTxJbmNsdWRlT3B0aW9ucyB8IEluY2x1ZGVPcHRpb25zW10+ID0gW1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmaW5pdGlvbnMubWFwKHggPT4ge1xuICAgICAgICAgICAgICAgIGlmICgheC5wYXRoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgcGF0aCA9IHgucGF0aC50cmFuc2Zvcm1QYXRoQ29uZmlnKGNvbmRpdGlvbnMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB4LnRyYW5zZm9ybUF0dHJpYnV0ZXNDb25maWcoY29uZGl0aW9ucyk7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRkaXRpb25hbEluY2x1ZGVzID0geC50cmFuc2Zvcm1JbmNsdWRlc0NvbmZpZyhjb25kaXRpb25zKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXF1ZWxpemVNb2RlbFNjYW5uZXIuZ2V0SW5jbHVkZXModGhpcy5tb2RlbCwgcGF0aCwgYWRkaXRpb25hbEluY2x1ZGVzLCBhdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgLi4udGhpcy5fY29uZmlnLmdldEN1c3RvbUF0dHJpYnV0ZXNJbmNsdWRlcygpLm1hcCh4ID0+IHRoaXMuc2VxdWVsaXplTW9kZWxTY2FubmVyLmdldEluY2x1ZGVzKHRoaXMubW9kZWwsIHtcbiAgICAgICAgICAgICAgICBwYXRoOiB4LnBhdGgsXG4gICAgICAgICAgICAgICAgcGFyYW5vaWQ6IHgucGFyYW5vaWQsXG4gICAgICAgICAgICAgICAgc3ViUXVlcnk6IHguc3ViUXVlcnksXG4gICAgICAgICAgICAgICAgd2hlcmU6IHgud2hlcmUgPyBTZXF1ZWxpemVVdGlscy5nZW5lcmF0ZVdoZXJlQ29uZGl0aW9ucyh4LndoZXJlLCBjb25kaXRpb25zKSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgfSwgW10sIHguYXR0cmlidXRlcykpXG4gICAgICAgIF07XG4gICAgICAgIGlmIChvcHRpb25zLmluY2x1ZGUpIHtcbiAgICAgICAgICAgIG5lc3RlZEluY2x1ZGVzLnB1c2gob3B0aW9ucy5pbmNsdWRlIGFzIEluY2x1ZGVPcHRpb25zIHwgSW5jbHVkZU9wdGlvbnNbXSk7XG4gICAgICAgIH1cblxuICAgICAgICBvcHRpb25zLmluY2x1ZGUgPSBTZXF1ZWxpemVVdGlscy5yZWR1Y2VJbmNsdWRlcyhuZXN0ZWRJbmNsdWRlcyk7XG5cbiAgICAgICAgY29uc3QgZ2VuZXJhdGVkQXR0cmlidXRlcyA9IHRoaXMuX2NvbmZpZy50cmFuc2Zvcm1BdHRyaWJ1dGVzQ29uZmlnKGNvbmRpdGlvbnMpO1xuICAgICAgICBpZiAoZ2VuZXJhdGVkQXR0cmlidXRlcykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYXR0cmlidXRlcykge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMuYXR0cmlidXRlcyA9IFNlcXVlbGl6ZVV0aWxzLm1lcmdlQXR0cmlidXRlcyhvcHRpb25zLmF0dHJpYnV0ZXMsIGdlbmVyYXRlZEF0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zLmF0dHJpYnV0ZXMgPSBnZW5lcmF0ZWRBdHRyaWJ1dGVzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdlbmVyYXRlT3JkZXJJbmNsdWRlKG9yZGVyOiBPcmRlck1vZGVsLCBjb25kaXRpb25zPzogb2JqZWN0KTogSW5jbHVkZU9wdGlvbnNbXSB7XG4gICAgICAgIGlmICghb3JkZXIgfHwgIW9yZGVyLmNvbHVtbiB8fCBvcmRlci5kaXJlY3Rpb24gPT09IFwiXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGN1c3RvbUF0dHIgPSB0aGlzLmdldEN1c3RvbUF0dHJpYnV0ZShvcmRlci5jb2x1bW4pO1xuICAgICAgICBpZiAoY3VzdG9tQXR0cikge1xuICAgICAgICAgICAgaWYgKCFjdXN0b21BdHRyLmNvbmZpZy5wYXRoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXF1ZWxpemVNb2RlbFNjYW5uZXIuZ2V0SW5jbHVkZXModGhpcy5tb2RlbCwge1xuICAgICAgICAgICAgICAgIHBhdGg6IGN1c3RvbUF0dHIuY29uZmlnLnBhdGgsXG4gICAgICAgICAgICAgICAgd2hlcmU6IGN1c3RvbUF0dHIuY29uZmlnLndoZXJlID8gU2VxdWVsaXplVXRpbHMuZ2VuZXJhdGVXaGVyZUNvbmRpdGlvbnMoY3VzdG9tQXR0ci5jb25maWcud2hlcmUsIGNvbmRpdGlvbnMpIDogdW5kZWZpbmVkXG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5zZXF1ZWxpemVNb2RlbFNjYW5uZXIuZ2V0T3JkZXJJbmNsdWRlcyh0aGlzLm1vZGVsLCBvcmRlcik7XG4gICAgfVxuXG4gICAgcHVibGljIGdlbmVyYXRlU2VhcmNoSW5jbHVkZShjb25kaXRpb25zPzogb2JqZWN0KTogSW5jbHVkZWFibGVbXSB7XG4gICAgICAgIGNvbnN0IG5lc3RlZEluY2x1ZGVzOiBBcnJheTxJbmNsdWRlT3B0aW9ucyB8IEluY2x1ZGVPcHRpb25zW10+ID0gW1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmaW5pdGlvbnMubWFwKHggPT4ge1xuICAgICAgICAgICAgICAgIGlmICgheC5wYXRoIHx8IHgucGF0aC5zZXBhcmF0ZSB8fCB4Lmlnbm9yZUluU2VhcmNoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgcGF0aCA9IHgucGF0aC50cmFuc2Zvcm1QYXRoQ29uZmlnKGNvbmRpdGlvbnMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB4LnRyYW5zZm9ybUF0dHJpYnV0ZXNDb25maWcoY29uZGl0aW9ucyk7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRkaXRpb25hbEluY2x1ZGVzID0geC50cmFuc2Zvcm1JbmNsdWRlc0NvbmZpZyhjb25kaXRpb25zKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXF1ZWxpemVNb2RlbFNjYW5uZXIuZ2V0SW5jbHVkZXModGhpcy5tb2RlbCwgcGF0aCwgYWRkaXRpb25hbEluY2x1ZGVzLCBhdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgLi4udGhpcy5fY29uZmlnLmdldEN1c3RvbUF0dHJpYnV0ZXNJbmNsdWRlcygpLm1hcCh4ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXgucGF0aCB8fCB4LnNlcGFyYXRlIHx8IHguaWdub3JlSW5TZWFyY2gpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNlcXVlbGl6ZU1vZGVsU2Nhbm5lci5nZXRJbmNsdWRlcyh0aGlzLm1vZGVsLCB7XG4gICAgICAgICAgICAgICAgICAgIHBhdGg6IHgucGF0aCxcbiAgICAgICAgICAgICAgICAgICAgcGFyYW5vaWQ6IHgucGFyYW5vaWQsXG4gICAgICAgICAgICAgICAgICAgIHN1YlF1ZXJ5OiB4LnN1YlF1ZXJ5LFxuICAgICAgICAgICAgICAgICAgICB3aGVyZTogeC53aGVyZSA/IFNlcXVlbGl6ZVV0aWxzLmdlbmVyYXRlV2hlcmVDb25kaXRpb25zKHgud2hlcmUsIGNvbmRpdGlvbnMpIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgfSwgW10sIHguYXR0cmlidXRlcyk7XG4gICAgICAgICAgICB9KVxuICAgICAgICBdO1xuXG4gICAgICAgIHJldHVybiBTZXF1ZWxpemVVdGlscy5yZWR1Y2VJbmNsdWRlcyhuZXN0ZWRJbmNsdWRlcyk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZHVjZU9iamVjdChyZXN1bHQ6IGFueSk6IERhdGEge1xuICAgICAgICBjb25zdCByID0gcmVzdWx0IGluc3RhbmNlb2YgTW9kZWwgPyByZXN1bHQudG9KU09OKCkgOiByZXN1bHQ7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBuZXcgdGhpcy5kYXRhRGVmLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcih7fSwgeyBpc05ld1JlY29yZDogZmFsc2UgfSk7XG4gICAgICAgIE9iamVjdC5hc3NpZ24oZGF0YSwgcik7XG4gICAgICAgIGlmIChkYXRhIGluc3RhbmNlb2YgTW9kZWwpIHtcbiAgICAgICAgICAgIChkYXRhIGFzIGFueSkuZGF0YVZhbHVlcyA9IHtcbiAgICAgICAgICAgICAgICAuLi5yXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBkZWYgb2YgdGhpcy5fZGVmaW5pdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChkZWYucGF0aCkge1xuICAgICAgICAgICAgICAgIGRhdGFbZGVmLmtleV0gPSBTZXF1ZWxpemVVdGlscy5yZWR1Y2VNb2RlbEZyb21QYXRoKHJlc3VsdCwgZGVmLnBhdGgucGF0aCk7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBNb2RlbCkge1xuICAgICAgICAgICAgICAgICAgICBkYXRhLnNldERhdGFWYWx1ZShkZWYua2V5IGFzIGFueSwgU2VxdWVsaXplVXRpbHMucmVkdWNlTW9kZWxGcm9tUGF0aChyZXN1bHQsIGRlZi5wYXRoLnBhdGgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRhdGFbZGVmLmtleV0gPSByZXN1bHRbZGVmLmtleV07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U2VhcmNoQXR0cmlidXRlcygpOiBTZWFyY2hBdHRyaWJ1dGVzTW9kZWxbXSB7XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZXM6IFNlYXJjaEF0dHJpYnV0ZXNNb2RlbFtdID0gW107XG4gICAgICAgIGNvbnN0IG1vZGVsQXR0ciA9IHRoaXMuX2NvbmZpZy5nZXRTZWFyY2hhYmxlQXR0cmlidXRlcygpO1xuICAgICAgICBhdHRyaWJ1dGVzLnB1c2goXG4gICAgICAgICAgICAuLi5tb2RlbEF0dHIubWFwKGEgPT4gKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBhLFxuICAgICAgICAgICAgICAgIGtleTogYSxcbiAgICAgICAgICAgICAgICBpc0pzb246IFNlcXVlbGl6ZVV0aWxzLmlzQ29sdW1uSnNvbih0aGlzLm1vZGVsLCBhKVxuICAgICAgICAgICAgfSkpXG4gICAgICAgICk7XG5cbiAgICAgICAgZm9yIChjb25zdCBkZWZpbml0aW9uIG9mIHRoaXMuX2RlZmluaXRpb25zKSB7XG4gICAgICAgICAgICBpZiAoIWRlZmluaXRpb24ucGF0aCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBhdHRyID0gZGVmaW5pdGlvbi5pZ25vcmVJblNlYXJjaCA/IFtdIDogZGVmaW5pdGlvbi5zZWFyY2hhYmxlQXR0cmlidXRlcyA/PyBkZWZpbml0aW9uLmF0dHJpYnV0ZXM7XG4gICAgICAgICAgICBjb25zdCBhZGRpdGlvbmFsSW5jbHVkZXMgPSBkZWZpbml0aW9uLnRyYW5zZm9ybUluY2x1ZGVzQ29uZmlnKHt9KTtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMucHVzaChcbiAgICAgICAgICAgICAgICAuLi50aGlzLnNlcXVlbGl6ZU1vZGVsU2Nhbm5lci5nZXRBdHRyaWJ1dGVzKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLFxuICAgICAgICAgICAgICAgICAgICBkZWZpbml0aW9uLnBhdGggYXMgUGF0aE1vZGVsLFxuICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsSW5jbHVkZXMsXG4gICAgICAgICAgICAgICAgICAgIGF0dHJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gICAgcHVibGljIGhhc0N1c3RvbUF0dHJpYnV0ZShuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fY29uZmlnLmN1c3RvbUF0dHJpYnV0ZXMuZmluZCgoeCkgPT4geC5jb25maWcubmFtZSA9PT0gbmFtZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEN1c3RvbUF0dHJpYnV0ZShuYW1lOiBzdHJpbmcpOiBDdXN0b21BdHRyaWJ1dGVzQ29uZmlnIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpZy5jdXN0b21BdHRyaWJ1dGVzLmZpbmQoKHgpID0+IHguY29uZmlnLm5hbWUgPT09IG5hbWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDdXN0b21BdHRyaWJ1dGVHcm91cEJ5KCk6IChzdHJpbmcgfCBGbiB8IENvbClbXSB7XG4gICAgICAgIGNvbnN0IGdyb3VwOiBHcm91cE9wdGlvbiA9IFtdO1xuXG4gICAgICAgIGNvbnN0IHNob3VsZEdyb3VwQnkgPSB0aGlzLl9jb25maWcuY3VzdG9tQXR0cmlidXRlcy5zb21lKChhdHRyaWJ1dGUpID0+IGF0dHJpYnV0ZS5zaG91bGRHcm91cEJ5KCkpO1xuICAgICAgICBpZiAoc2hvdWxkR3JvdXBCeSkge1xuICAgICAgICAgICAgZ3JvdXAucHVzaChcImlkXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdyb3VwO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBkb3dubG9hZERhdGEoZGF0YTogRGF0YVtdLCB0eXBlOiBFeHBvcnRUeXBlcywgbGFuZzogc3RyaW5nLCBvcHRpb25zPzogYW55KTogUHJvbWlzZTxCdWZmZXIgfCBzdHJpbmc+O1xuICAgIHB1YmxpYyBhc3luYyBkb3dubG9hZERhdGEoaGVhZGVyczogc3RyaW5nW10sIGRhdGE6IGFueVtdLCB0eXBlOiBFeHBvcnRUeXBlcywgbGFuZzogc3RyaW5nLCBvcHRpb25zPzogYW55KTogUHJvbWlzZTxCdWZmZXIgfCBzdHJpbmc+O1xuICAgIHB1YmxpYyBhc3luYyBkb3dubG9hZERhdGEoXG4gICAgICAgIGRhdGFPckhlYWRlcnM6IERhdGFbXSB8IHN0cmluZ1tdLFxuICAgICAgICB0eXBlT3JEYXRhOiBFeHBvcnRUeXBlcyB8IGFueVtdLFxuICAgICAgICBsYW5nT3JUeXBlOiBzdHJpbmcgfCBFeHBvcnRUeXBlcyxcbiAgICAgICAgb3B0aW9uc09yTGFuZz86IGFueSB8IHN0cmluZyxcbiAgICAgICAgb3B0aW9ucz86IGFueVxuICAgICk6IFByb21pc2U8QnVmZmVyIHwgc3RyaW5nPiB7XG4gICAgICAgIGxldCB0eXBlOiBFeHBvcnRUeXBlcztcbiAgICAgICAgbGV0IGhlYWRlcnM6IHN0cmluZ1tdO1xuICAgICAgICBsZXQgZGF0YTogYW55W107XG4gICAgICAgIGxldCBsYW5nOiBzdHJpbmc7XG5cbiAgICAgICAgaWYgKHR5cGVvZiB0eXBlT3JEYXRhID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICB0eXBlID0gdHlwZU9yRGF0YTtcbiAgICAgICAgICAgIGxhbmcgPSBsYW5nT3JUeXBlO1xuICAgICAgICAgICAgaGVhZGVycyA9IGF3YWl0IHRoaXMuZ2V0RXhwb3J0c0hlYWRlcihsYW5nLCB0aGlzLl9jb25maWcuZXhwb3J0Q29sdW1ucyA/PyBbXSk7XG4gICAgICAgICAgICBkYXRhID0gYXdhaXQgdGhpcy5nZXRFeHBvcnREYXRhKGRhdGFPckhlYWRlcnMgYXMgRGF0YVtdKTtcbiAgICAgICAgICAgIG9wdGlvbnMgPSBvcHRpb25zT3JMYW5nO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGFuZyA9IG9wdGlvbnNPckxhbmcgYXMgc3RyaW5nO1xuICAgICAgICAgICAgaGVhZGVycyA9IGF3YWl0IHRoaXMuZ2V0RXhwb3J0c0hlYWRlcihsYW5nLCBkYXRhT3JIZWFkZXJzIGFzIHN0cmluZ1tdKTtcbiAgICAgICAgICAgIGRhdGEgPSB0eXBlT3JEYXRhO1xuICAgICAgICAgICAgdHlwZSA9IGxhbmdPclR5cGUgYXMgRXhwb3J0VHlwZXM7XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgRXhwb3J0VHlwZXMuWExTWDpcbiAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5kb3dubG9hZFhsc3goaGVhZGVycywgZGF0YSk7XG4gICAgICAgICAgICBjYXNlIEV4cG9ydFR5cGVzLkhUTUw6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZG93bmxvYWRIdG1sKGhlYWRlcnMsIGRhdGEsIGxhbmcsIG9wdGlvbnMpO1xuICAgICAgICAgICAgY2FzZSBFeHBvcnRUeXBlcy5DU1Y6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZG93bmxvYWRDc3YoaGVhZGVycywgZGF0YSk7XG4gICAgICAgICAgICBjYXNlIEV4cG9ydFR5cGVzLlBERjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5kb3dubG9hZFBkZihoZWFkZXJzLCBkYXRhLCBvcHRpb25zKTtcbiAgICAgICAgICAgIGNhc2UgRXhwb3J0VHlwZXMuWklQOlxuICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmRvd25sb2FkWmlwKGhlYWRlcnMsIGRhdGEsIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGRvd25sb2FkWGxzeChoZWFkZXJzOiBzdHJpbmdbXSwgZGF0YTogYW55W10pOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICAgICAgICByZXR1cm4gWGxzeFV0aWxzLmFycmF5VG9YbHN4QnVmZmVyKFxuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIHRoaXMuX2NvbmZpZy5tb2RlbC5nZXRUYWJsZU5hbWUoKSBhcyBzdHJpbmcsXG4gICAgICAgICAgICBoZWFkZXJzXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGRvd25sb2FkSHRtbChoZWFkZXJzOiBzdHJpbmdbXSwgZGF0YTogYW55W10sIGxhbmc6IHN0cmluZywgb3B0aW9ucz86IGFueSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmV4cG9ydEFkYXB0ZXIuZXhwb3J0QXNIdG1sKGxhbmcsIHtcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLl9jb25maWcubW9kZWwuZ2V0VGFibGVOYW1lKCkgYXMgc3RyaW5nLFxuICAgICAgICAgICAgY29sdW1uczogaGVhZGVycyxcbiAgICAgICAgICAgIGRhdGE6IGRhdGFcbiAgICAgICAgfSwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGRvd25sb2FkQ3N2KGhlYWRlcnM6IHN0cmluZ1tdLCBkYXRhOiBhbnlbXSk6IFByb21pc2U8QnVmZmVyPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCBDc3ZVdGlscy5hcnJheVRvQ3N2QnVmZmVyKGRhdGEsIGhlYWRlcnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBkb3dubG9hZFBkZihoZWFkZXJzOiBzdHJpbmdbXSwgZGF0YTogYW55W10sIGxhbmc6IHN0cmluZywgb3B0aW9ucz86IGFueSk6IFByb21pc2U8QnVmZmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmV4cG9ydEFkYXB0ZXIuZXhwb3J0QXNQZGYobGFuZywge1xuICAgICAgICAgICAgdGl0bGU6IHRoaXMuX2NvbmZpZy5tb2RlbC5nZXRUYWJsZU5hbWUoKSBhcyBzdHJpbmcsXG4gICAgICAgICAgICBjb2x1bW5zOiBoZWFkZXJzLFxuICAgICAgICAgICAgZGF0YTogZGF0YVxuICAgICAgICB9LCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZG93bmxvYWRaaXAoaGVhZGVyczogc3RyaW5nW10sIGRhdGE6IGFueVtdLCBsYW5nOiBzdHJpbmcsIG9wdGlvbnM/OiBhbnkpOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5leHBvcnRBZGFwdGVyLmV4cG9ydEFzWmlwKGxhbmcsIHtcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLl9jb25maWcubW9kZWwuZ2V0VGFibGVOYW1lKCkgYXMgc3RyaW5nLFxuICAgICAgICAgICAgY29sdW1uczogaGVhZGVycyxcbiAgICAgICAgICAgIGRhdGE6IGRhdGFcbiAgICAgICAgfSwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0KCkge1xuICAgICAgICB0aGlzLl9jb25maWcgPSB0aGlzLmRhdGFGaWx0ZXJTY2FubmVyLmdldERhdGFGaWx0ZXIodGhpcy5kYXRhRGVmKTtcbiAgICAgICAgdGhpcy5fZGVmaW5pdGlvbnMgPSB0aGlzLmRhdGFGaWx0ZXJTY2FubmVyLmdldEF0dHJpYnV0ZXModGhpcy5kYXRhRGVmKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkU2VhcmNoQ29uZGl0aW9uKHNlYXJjaDogc3RyaW5nLCBvcHRpb25zOiBGaW5kT3B0aW9ucyk6IHZvaWQge1xuICAgICAgICBpZiAoIXNlYXJjaCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2VhcmNoSW5jbHVkZSA9IHRoaXMuZ2VuZXJhdGVTZWFyY2hJbmNsdWRlKHt9KTtcbiAgICAgICAgb3B0aW9ucy5pbmNsdWRlID0gU2VxdWVsaXplVXRpbHMubWVyZ2VJbmNsdWRlcyhcbiAgICAgICAgICAgIG9wdGlvbnMuaW5jbHVkZSBhcyBJbmNsdWRlT3B0aW9ucyB8IEluY2x1ZGVPcHRpb25zW10sXG4gICAgICAgICAgICBzZWFyY2hJbmNsdWRlIGFzIEluY2x1ZGVPcHRpb25zW11cbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoIW9wdGlvbnMud2hlcmUpIHtcbiAgICAgICAgICAgIG9wdGlvbnMud2hlcmUgPSB7IFtPcC5hbmRdOiBbXSB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3B0aW9ucy53aGVyZSA9IHsgW09wLmFuZF06IFtvcHRpb25zLndoZXJlXSB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgd2hlcmUgPSBvcHRpb25zLndoZXJlO1xuICAgICAgICBjb25zdCBnZW5lcmF0ZUZpZWxkc09iamVjdCA9IHNlYXJjaFZhbHVlID0+XG4gICAgICAgICAgICB0aGlzLmdldFNlYXJjaEF0dHJpYnV0ZXMoKVxuICAgICAgICAgICAgICAgIC5tYXAoYSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhLmlzSnNvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGQgPSBhLmxpdGVyYWxLZXkgPz8gYFxcYCR7dGhpcy5tb2RlbC5uYW1lfVxcYC5cXGAke2Eua2V5fVxcYGA7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICogbGl0ZXJhbCBmdW5jdGlvbiBpcyBub3Qgd29ya2luZyBvZiBzb21lIHJlYXNvbi4uLlxuICAgICAgICAgICAgICAgICAgICAgICAgICogVGhpcyBpcyB0aGUgZXF1aXZhbGVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMubW9kZWwuc2VxdWVsaXplLmVzY2FwZShgJSR7c2VhcmNoVmFsdWUudG9VcHBlckNhc2UoKX0lYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFV0aWxzLkxpdGVyYWwoYFVQUEVSKEpTT05fRVhUUkFDVCgke2ZpZWxkfSwgJyQnKSkgTElLRSAke3ZhbHVlfWApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBbYS5rZXldOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW09wLmxpa2VdOiBgJSR7c2VhcmNoVmFsdWV9JWBcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KS5maWx0ZXIoeCA9PiAhIXgpO1xuXG4gICAgICAgIGNvbnN0IHRva2VucyA9IHNlYXJjaC5zcGxpdChcIiBcIik7XG4gICAgICAgIHdoZXJlW09wLmFuZF0ucHVzaChcbiAgICAgICAgICAgIHRva2Vucy5tYXAodCA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgW09wLm9yXTogZ2VuZXJhdGVGaWVsZHNPYmplY3QodClcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEV4cG9ydHNIZWFkZXIobGFuZzogc3RyaW5nLCBoZWFkZXJzOiBzdHJpbmdbXSwgdHJhbnNsYXRlU2VydmljZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZSk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKGhlYWRlcnMubWFwKHggPT4gdHJhbnNsYXRlU2VydmljZS5nZXRUcmFuc2xhdGlvbihsYW5nLCBgZXhwb3J0cy4ke3h9YCkpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEV4cG9ydERhdGEoZGF0YTogRGF0YVtdKTogb2JqZWN0W10ge1xuICAgICAgICByZXR1cm4gZGF0YS5tYXAoeCA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICAgICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIHRoaXMuX2NvbmZpZy5leHBvcnRDb2x1bW5zKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgW3ZhbHVlLCBwcm9wXSA9IHRoaXMuZ2V0RXhwb3J0VmFsdWUoeCwga2V5KTtcbiAgICAgICAgICAgICAgICByZXN1bHRbYCR7aSsrfToke3Byb3B9YF0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RXhwb3J0VmFsdWUoZGF0YTogRGF0YSwgcGF0aDogc3RyaW5nKTogW3Vua25vd24sIHN0cmluZ10ge1xuICAgICAgICBjb25zdCBrZXlzID0gcGF0aC5zcGxpdChcIi5cIik7XG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0ga2V5cy5wb3AoKTtcbiAgICAgICAgICAgIHJldHVybiBbZGF0YVtrZXldLCBrZXldO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGtleTogc3RyaW5nO1xuICAgICAgICB3aGlsZSAoa2V5cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGtleSA9IGtleXMuc2hpZnQoKTtcbiAgICAgICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgZGF0YSA9IGRhdGFba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbZGF0YSwga2V5XTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIG1lcmdlQWNjZXNzQ29udHJvbENvbmRpdGlvbih3aGVyZTogV2hlcmVPcHRpb25zLCB1c2VyOiBEYXRhRmlsdGVyVXNlck1vZGVsKTogUHJvbWlzZTxXaGVyZU9wdGlvbnM+IHtcbiAgICAgICAgY29uc3QgcmVzb3VyY2VzID0gYXdhaXQgdGhpcy5hY2Nlc3NDb250cm9sQWRhcHRlci5nZXRSZXNvdXJjZXModGhpcy5fY29uZmlnLm1vZGVsIGFzIGFueSwgdXNlcik7XG4gICAgICAgIGlmIChyZXNvdXJjZXMuaWRzKSB7XG4gICAgICAgICAgICByZXR1cm4gU2VxdWVsaXplVXRpbHMubWVyZ2VXaGVyZSh7IGlkOiByZXNvdXJjZXMuaWRzIH0sIHdoZXJlKTtcbiAgICAgICAgfSBlbHNlIGlmIChyZXNvdXJjZXMud2hlcmUpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgW09wLmFuZF06IFtcbiAgICAgICAgICAgICAgICAgICAgd2hlcmUsXG4gICAgICAgICAgICAgICAgICAgIHJlc291cmNlcy53aGVyZVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gd2hlcmU7XG4gICAgfVxufVxuIl19
@@ -1,16 +1,16 @@
1
1
  import { Type } from "@nestjs/common";
2
- import { AccessControlAdapter, ExportAdapter, TranslateAdapter } from "./adapters";
2
+ import { AccessControlAdapter } from "./adapters";
3
+ import { ExportAdapter } from "./adapters";
4
+ import { TranslateAdapter } from "./adapters";
3
5
  import { DataFilterRepository } from "./data-filter.repository";
4
6
  import { DataFilterScanner } from "./scanners/data-filter.scanner";
5
7
  import { SequelizeModelScanner } from "./scanners/sequelize-model.scanner";
6
- import { DialectFormatterService } from "./services/dialect-formatter.service";
7
8
  export declare class DataFilterService {
8
9
  private dataFilterScanner;
9
10
  private sequelizeModelScanner;
10
11
  private accessControlAdapter;
11
12
  private translateAdapter;
12
13
  private exportAdapter;
13
- private dialectFormatterService;
14
- constructor(dataFilterScanner: DataFilterScanner, sequelizeModelScanner: SequelizeModelScanner, accessControlAdapter: AccessControlAdapter, translateAdapter: TranslateAdapter, exportAdapter: ExportAdapter, dialectFormatterService: DialectFormatterService);
14
+ constructor(dataFilterScanner: DataFilterScanner, sequelizeModelScanner: SequelizeModelScanner, accessControlAdapter: AccessControlAdapter, translateAdapter: TranslateAdapter, exportAdapter: ExportAdapter);
15
15
  for<T>(data: Type<T>): DataFilterRepository<T>;
16
16
  }
@@ -12,32 +12,31 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.DataFilterService = void 0;
13
13
  const common_1 = require("@nestjs/common");
14
14
  const adapters_1 = require("./adapters");
15
+ const adapters_2 = require("./adapters");
16
+ const adapters_3 = require("./adapters");
15
17
  const data_filter_repository_1 = require("./data-filter.repository");
16
18
  const data_filter_scanner_1 = require("./scanners/data-filter.scanner");
17
19
  const sequelize_model_scanner_1 = require("./scanners/sequelize-model.scanner");
18
- const dialect_formatter_service_1 = require("./services/dialect-formatter.service");
19
20
  let DataFilterService = class DataFilterService {
20
- constructor(dataFilterScanner, sequelizeModelScanner, accessControlAdapter, translateAdapter, exportAdapter, dialectFormatterService) {
21
+ constructor(dataFilterScanner, sequelizeModelScanner, accessControlAdapter, translateAdapter, exportAdapter) {
21
22
  this.dataFilterScanner = dataFilterScanner;
22
23
  this.sequelizeModelScanner = sequelizeModelScanner;
23
24
  this.accessControlAdapter = accessControlAdapter;
24
25
  this.translateAdapter = translateAdapter;
25
26
  this.exportAdapter = exportAdapter;
26
- this.dialectFormatterService = dialectFormatterService;
27
27
  }
28
28
  for(data) {
29
- return new data_filter_repository_1.DataFilterRepository(data, this.dataFilterScanner, this.sequelizeModelScanner, this.accessControlAdapter, this.translateAdapter, this.exportAdapter, this.dialectFormatterService);
29
+ return new data_filter_repository_1.DataFilterRepository(data, this.dataFilterScanner, this.sequelizeModelScanner, this.accessControlAdapter, this.translateAdapter, this.exportAdapter);
30
30
  }
31
31
  };
32
- exports.DataFilterService = DataFilterService;
33
- exports.DataFilterService = DataFilterService = __decorate([
32
+ DataFilterService = __decorate([
34
33
  (0, common_1.Injectable)(),
35
34
  __metadata("design:paramtypes", [data_filter_scanner_1.DataFilterScanner,
36
35
  sequelize_model_scanner_1.SequelizeModelScanner,
37
36
  adapters_1.AccessControlAdapter,
38
- adapters_1.TranslateAdapter,
39
- adapters_1.ExportAdapter,
40
- dialect_formatter_service_1.DialectFormatterService])
37
+ adapters_3.TranslateAdapter,
38
+ adapters_2.ExportAdapter])
41
39
  ], DataFilterService);
40
+ exports.DataFilterService = DataFilterService;
42
41
 
43
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9kYXRhLWZpbHRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLDJDQUFrRDtBQUNsRCx5Q0FBbUY7QUFDbkYscUVBQWdFO0FBQ2hFLHdFQUFtRTtBQUNuRSxnRkFBMkU7QUFDM0Usb0ZBQStFO0FBR3hFLElBQU0saUJBQWlCLEdBQXZCLE1BQU0saUJBQWlCO0lBQzFCLFlBQ1ksaUJBQW9DLEVBQ3BDLHFCQUE0QyxFQUM1QyxvQkFBMEMsRUFDMUMsZ0JBQWtDLEVBQ2xDLGFBQTRCLEVBQzVCLHVCQUFnRDtRQUxoRCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDNUMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7SUFDekQsQ0FBQztJQUVHLEdBQUcsQ0FBSSxJQUFhO1FBQ3ZCLE9BQU8sSUFBSSw2Q0FBb0IsQ0FDM0IsSUFBSSxFQUNKLElBQUksQ0FBQyxpQkFBaUIsRUFDdEIsSUFBSSxDQUFDLHFCQUFxQixFQUMxQixJQUFJLENBQUMsb0JBQW9CLEVBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsRUFDckIsSUFBSSxDQUFDLGFBQWEsRUFDbEIsSUFBSSxDQUFDLHVCQUF1QixDQUMvQixDQUFDO0lBQ04sQ0FBQztDQUNKLENBQUE7QUFyQlksOENBQWlCOzRCQUFqQixpQkFBaUI7SUFEN0IsSUFBQSxtQkFBVSxHQUFFO3FDQUdzQix1Q0FBaUI7UUFDYiwrQ0FBcUI7UUFDdEIsK0JBQW9CO1FBQ3hCLDJCQUFnQjtRQUNuQix3QkFBYTtRQUNILG1EQUF1QjtHQVBuRCxpQkFBaUIsQ0FxQjdCIiwiZmlsZSI6ImxpYi9kYXRhLWZpbHRlci5zZXJ2aWNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgVHlwZSB9IGZyb20gXCJAbmVzdGpzL2NvbW1vblwiO1xuaW1wb3J0IHsgQWNjZXNzQ29udHJvbEFkYXB0ZXIsIEV4cG9ydEFkYXB0ZXIsIFRyYW5zbGF0ZUFkYXB0ZXIgfSBmcm9tIFwiLi9hZGFwdGVyc1wiO1xuaW1wb3J0IHsgRGF0YUZpbHRlclJlcG9zaXRvcnkgfSBmcm9tIFwiLi9kYXRhLWZpbHRlci5yZXBvc2l0b3J5XCI7XG5pbXBvcnQgeyBEYXRhRmlsdGVyU2Nhbm5lciB9IGZyb20gXCIuL3NjYW5uZXJzL2RhdGEtZmlsdGVyLnNjYW5uZXJcIjtcbmltcG9ydCB7IFNlcXVlbGl6ZU1vZGVsU2Nhbm5lciB9IGZyb20gXCIuL3NjYW5uZXJzL3NlcXVlbGl6ZS1tb2RlbC5zY2FubmVyXCI7XG5pbXBvcnQgeyBEaWFsZWN0Rm9ybWF0dGVyU2VydmljZSB9IGZyb20gXCIuL3NlcnZpY2VzL2RpYWxlY3QtZm9ybWF0dGVyLnNlcnZpY2VcIjtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERhdGFGaWx0ZXJTZXJ2aWNlIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBkYXRhRmlsdGVyU2Nhbm5lcjogRGF0YUZpbHRlclNjYW5uZXIsXG4gICAgICAgIHByaXZhdGUgc2VxdWVsaXplTW9kZWxTY2FubmVyOiBTZXF1ZWxpemVNb2RlbFNjYW5uZXIsXG4gICAgICAgIHByaXZhdGUgYWNjZXNzQ29udHJvbEFkYXB0ZXI6IEFjY2Vzc0NvbnRyb2xBZGFwdGVyLFxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZUFkYXB0ZXI6IFRyYW5zbGF0ZUFkYXB0ZXIsXG4gICAgICAgIHByaXZhdGUgZXhwb3J0QWRhcHRlcjogRXhwb3J0QWRhcHRlcixcbiAgICAgICAgcHJpdmF0ZSBkaWFsZWN0Rm9ybWF0dGVyU2VydmljZTogRGlhbGVjdEZvcm1hdHRlclNlcnZpY2VcbiAgICApIHt9XG5cbiAgICBwdWJsaWMgZm9yPFQ+KGRhdGE6IFR5cGU8VD4pOiBEYXRhRmlsdGVyUmVwb3NpdG9yeTxUPiB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0YUZpbHRlclJlcG9zaXRvcnk8VD4oXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgdGhpcy5kYXRhRmlsdGVyU2Nhbm5lcixcbiAgICAgICAgICAgIHRoaXMuc2VxdWVsaXplTW9kZWxTY2FubmVyLFxuICAgICAgICAgICAgdGhpcy5hY2Nlc3NDb250cm9sQWRhcHRlcixcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlQWRhcHRlcixcbiAgICAgICAgICAgIHRoaXMuZXhwb3J0QWRhcHRlcixcbiAgICAgICAgICAgIHRoaXMuZGlhbGVjdEZvcm1hdHRlclNlcnZpY2VcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
42
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9kYXRhLWZpbHRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLDJDQUFrRDtBQUNsRCx5Q0FBa0Q7QUFDbEQseUNBQTJDO0FBQzNDLHlDQUE4QztBQUM5QyxxRUFBZ0U7QUFDaEUsd0VBQW1FO0FBQ25FLGdGQUEyRTtBQUdwRSxJQUFNLGlCQUFpQixHQUF2QixNQUFNLGlCQUFpQjtJQUMxQixZQUNZLGlCQUFvQyxFQUNwQyxxQkFBNEMsRUFDNUMsb0JBQTBDLEVBQzFDLGdCQUFrQyxFQUNsQyxhQUE0QjtRQUo1QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDNUMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQ3JDLENBQUM7SUFFRyxHQUFHLENBQUksSUFBYTtRQUN2QixPQUFPLElBQUksNkNBQW9CLENBQzNCLElBQUksRUFDSixJQUFJLENBQUMsaUJBQWlCLEVBQ3RCLElBQUksQ0FBQyxxQkFBcUIsRUFDMUIsSUFBSSxDQUFDLG9CQUFvQixFQUN6QixJQUFJLENBQUMsZ0JBQWdCLEVBQ3JCLElBQUksQ0FBQyxhQUFhLENBQ3JCLENBQUM7SUFDTixDQUFDO0NBQ0osQ0FBQTtBQW5CWSxpQkFBaUI7SUFEN0IsSUFBQSxtQkFBVSxHQUFFO3FDQUdzQix1Q0FBaUI7UUFDYiwrQ0FBcUI7UUFDdEIsK0JBQW9CO1FBQ3hCLDJCQUFnQjtRQUNuQix3QkFBYTtHQU4vQixpQkFBaUIsQ0FtQjdCO0FBbkJZLDhDQUFpQiIsImZpbGUiOiJsaWIvZGF0YS1maWx0ZXIuc2VydmljZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFR5cGUgfSBmcm9tIFwiQG5lc3Rqcy9jb21tb25cIjtcbmltcG9ydCB7IEFjY2Vzc0NvbnRyb2xBZGFwdGVyIH0gZnJvbSBcIi4vYWRhcHRlcnNcIjtcbmltcG9ydCB7IEV4cG9ydEFkYXB0ZXIgfSBmcm9tIFwiLi9hZGFwdGVyc1wiO1xuaW1wb3J0IHsgVHJhbnNsYXRlQWRhcHRlciB9IGZyb20gXCIuL2FkYXB0ZXJzXCI7XG5pbXBvcnQgeyBEYXRhRmlsdGVyUmVwb3NpdG9yeSB9IGZyb20gXCIuL2RhdGEtZmlsdGVyLnJlcG9zaXRvcnlcIjtcbmltcG9ydCB7IERhdGFGaWx0ZXJTY2FubmVyIH0gZnJvbSBcIi4vc2Nhbm5lcnMvZGF0YS1maWx0ZXIuc2Nhbm5lclwiO1xuaW1wb3J0IHsgU2VxdWVsaXplTW9kZWxTY2FubmVyIH0gZnJvbSBcIi4vc2Nhbm5lcnMvc2VxdWVsaXplLW1vZGVsLnNjYW5uZXJcIjtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERhdGFGaWx0ZXJTZXJ2aWNlIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBkYXRhRmlsdGVyU2Nhbm5lcjogRGF0YUZpbHRlclNjYW5uZXIsXG4gICAgICAgIHByaXZhdGUgc2VxdWVsaXplTW9kZWxTY2FubmVyOiBTZXF1ZWxpemVNb2RlbFNjYW5uZXIsXG4gICAgICAgIHByaXZhdGUgYWNjZXNzQ29udHJvbEFkYXB0ZXI6IEFjY2Vzc0NvbnRyb2xBZGFwdGVyLFxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZUFkYXB0ZXI6IFRyYW5zbGF0ZUFkYXB0ZXIsXG4gICAgICAgIHByaXZhdGUgZXhwb3J0QWRhcHRlcjogRXhwb3J0QWRhcHRlclxuICAgICkge31cblxuICAgIHB1YmxpYyBmb3I8VD4oZGF0YTogVHlwZTxUPik6IERhdGFGaWx0ZXJSZXBvc2l0b3J5PFQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRhRmlsdGVyUmVwb3NpdG9yeTxUPihcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICB0aGlzLmRhdGFGaWx0ZXJTY2FubmVyLFxuICAgICAgICAgICAgdGhpcy5zZXF1ZWxpemVNb2RlbFNjYW5uZXIsXG4gICAgICAgICAgICB0aGlzLmFjY2Vzc0NvbnRyb2xBZGFwdGVyLFxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVBZGFwdGVyLFxuICAgICAgICAgICAgdGhpcy5leHBvcnRBZGFwdGVyXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
@@ -1,20 +1,17 @@
1
1
  import { Type } from "@nestjs/common";
2
2
  import { TranslateAdapter } from "../adapters/translate.adapter";
3
- import { DialectFormatterService } from "../services/dialect-formatter.service";
4
3
  import { DefaultFilterDefinition } from "./filters/default.filter";
5
4
  import { FilterConfig, FilterModel } from "./models";
6
5
  import { ExportTypes } from "../models/export-types.model";
7
6
  import { DefaultOrderRule } from "./order-rules/default.order-rule";
8
7
  export declare abstract class BaseFilter<T> implements FilterModel<T> {
9
8
  private _translateService;
10
- private _dialectFormatterService;
11
9
  [name: string]: FilterConfig | unknown;
12
10
  abstract dataDefinition: Type<T>;
13
11
  exportDataDefinition?: Type<T>;
14
12
  defaultFilter?: DefaultFilterDefinition;
15
13
  defaultOrderRule?: DefaultOrderRule;
16
14
  set translateService(translateService: TranslateAdapter);
17
- set dialectFormatterService(dialectFormatterService: DialectFormatterService);
18
15
  get translateService(): TranslateAdapter;
19
16
  getExportedFieldsKeys(type?: ExportTypes): Promise<string[]>;
20
17
  getExportedFields(value: T, lang?: string, type?: ExportTypes): Promise<any[]>;
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BaseFilter = void 0;
4
4
  const filters_1 = require("./filters");
5
- const order_rule_1 = require("./order-rules/order-rule");
6
5
  class BaseFilter {
7
6
  set translateService(translateService) {
8
7
  this._translateService = translateService;
@@ -18,23 +17,6 @@ class BaseFilter {
18
17
  }
19
18
  }
20
19
  }
21
- set dialectFormatterService(dialectFormatterService) {
22
- this._dialectFormatterService = dialectFormatterService;
23
- for (const key in this) {
24
- if (!this.hasOwnProperty(key) || key === "dataDefinition") {
25
- continue;
26
- }
27
- if (filters_1.Filter.validate(this[key])) {
28
- this[key].dialectFormatterService = dialectFormatterService;
29
- }
30
- if (filters_1.GroupFilter.validate(this[key])) {
31
- this[key].dialectFormatterService = dialectFormatterService;
32
- }
33
- if (order_rule_1.OrderRule.validate(this[key])) {
34
- this[key].dialectFormatterService = dialectFormatterService;
35
- }
36
- }
37
- }
38
20
  get translateService() {
39
21
  return this._translateService;
40
22
  }
@@ -47,4 +29,4 @@ class BaseFilter {
47
29
  }
48
30
  exports.BaseFilter = BaseFilter;
49
31
 
50
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9maWx0ZXIvYmFzZS1maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0EsdUNBQXlGO0FBS3pGLHlEQUEwRTtBQUUxRSxNQUFzQixVQUFVO0lBVTVCLElBQVcsZ0JBQWdCLENBQUMsZ0JBQWtDO1FBQzFELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztRQUUxQyxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtZQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEtBQUssZ0JBQWdCLEVBQUU7Z0JBQ3ZELFNBQVM7YUFDWjtZQUVELElBQUksZ0JBQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBcUIsQ0FBQyxFQUFFO2dCQUMvQyxJQUFJLENBQUMsR0FBRyxDQUFZLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7YUFDN0Q7WUFDRCxJQUFJLHFCQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQTBCLENBQUMsRUFBRTtnQkFDekQsSUFBSSxDQUFDLEdBQUcsQ0FBaUIsQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQzthQUNsRTtTQUNKO0lBQ0wsQ0FBQztJQUVELElBQVcsdUJBQXVCLENBQUMsdUJBQWdEO1FBQy9FLElBQUksQ0FBQyx3QkFBd0IsR0FBRyx1QkFBdUIsQ0FBQztRQUV4RCxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtZQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEtBQUssZ0JBQWdCLEVBQUU7Z0JBQ3ZELFNBQVM7YUFDWjtZQUVELElBQUksZ0JBQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBcUIsQ0FBQyxFQUFFO2dCQUMvQyxJQUFJLENBQUMsR0FBRyxDQUFZLENBQUMsdUJBQXVCLEdBQUcsdUJBQXVCLENBQUM7YUFDM0U7WUFDRCxJQUFJLHFCQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQTBCLENBQUMsRUFBRTtnQkFDekQsSUFBSSxDQUFDLEdBQUcsQ0FBaUIsQ0FBQyx1QkFBdUIsR0FBRyx1QkFBdUIsQ0FBQzthQUNoRjtZQUNELElBQUksc0JBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBd0IsQ0FBQyxFQUFFO2dCQUNyRCxJQUFJLENBQUMsR0FBRyxDQUFlLENBQUMsdUJBQXVCLEdBQUcsdUJBQXVCLENBQUM7YUFDOUU7U0FDSjtJQUNMLENBQUM7SUFDRCxJQUFXLGdCQUFnQjtRQUN2QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNsQyxDQUFDO0lBRU0sS0FBSyxDQUFDLHFCQUFxQixDQUFDLElBQWtCO1FBQ2pELE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVNLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxLQUFRLEVBQUUsSUFBYSxFQUFFLElBQWtCO1FBQ3RFLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztDQUNKO0FBekRELGdDQXlEQyIsImZpbGUiOiJsaWIvZmlsdGVyL2Jhc2UtZmlsdGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gXCJAbmVzdGpzL2NvbW1vblwiO1xuaW1wb3J0IHsgVHJhbnNsYXRlQWRhcHRlciB9IGZyb20gXCIuLi9hZGFwdGVycy90cmFuc2xhdGUuYWRhcHRlclwiO1xuaW1wb3J0IHsgRGlhbGVjdEZvcm1hdHRlclNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvZGlhbGVjdC1mb3JtYXR0ZXIuc2VydmljZVwiO1xuaW1wb3J0IHsgRmlsdGVyLCBGaWx0ZXJEZWZpbml0aW9uLCBHcm91cEZpbHRlciwgR3JvdXBGaWx0ZXJEZWZpbml0aW9uIH0gZnJvbSBcIi4vZmlsdGVyc1wiO1xuaW1wb3J0IHsgRGVmYXVsdEZpbHRlckRlZmluaXRpb24gfSBmcm9tIFwiLi9maWx0ZXJzL2RlZmF1bHQuZmlsdGVyXCI7XG5pbXBvcnQgeyBGaWx0ZXJDb25maWcsIEZpbHRlck1vZGVsIH0gZnJvbSBcIi4vbW9kZWxzXCI7XG5pbXBvcnQgeyBFeHBvcnRUeXBlcyB9IGZyb20gXCIuLi9tb2RlbHMvZXhwb3J0LXR5cGVzLm1vZGVsXCI7XG5pbXBvcnQgeyBEZWZhdWx0T3JkZXJSdWxlIH0gZnJvbSBcIi4vb3JkZXItcnVsZXMvZGVmYXVsdC5vcmRlci1ydWxlXCI7XG5pbXBvcnQgeyBPcmRlclJ1bGUsIE9yZGVyUnVsZURlZmluaXRpb24gfSBmcm9tIFwiLi9vcmRlci1ydWxlcy9vcmRlci1ydWxlXCI7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlRmlsdGVyPFQ+IGltcGxlbWVudHMgRmlsdGVyTW9kZWw8VD4ge1xuICAgIHByaXZhdGUgX3RyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZUFkYXB0ZXI7XG4gICAgcHJpdmF0ZSBfZGlhbGVjdEZvcm1hdHRlclNlcnZpY2U6IERpYWxlY3RGb3JtYXR0ZXJTZXJ2aWNlO1xuXG4gICAgW25hbWU6IHN0cmluZ106IEZpbHRlckNvbmZpZyB8IHVua25vd247XG4gICAgcHVibGljIGFic3RyYWN0IGRhdGFEZWZpbml0aW9uOiBUeXBlPFQ+O1xuICAgIHB1YmxpYyBleHBvcnREYXRhRGVmaW5pdGlvbj86IFR5cGU8VD47XG4gICAgcHVibGljIGRlZmF1bHRGaWx0ZXI/OiBEZWZhdWx0RmlsdGVyRGVmaW5pdGlvbjtcbiAgICBwdWJsaWMgZGVmYXVsdE9yZGVyUnVsZT86IERlZmF1bHRPcmRlclJ1bGU7XG5cbiAgICBwdWJsaWMgc2V0IHRyYW5zbGF0ZVNlcnZpY2UodHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlQWRhcHRlcikge1xuICAgICAgICB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlID0gdHJhbnNsYXRlU2VydmljZTtcblxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaGFzT3duUHJvcGVydHkoa2V5KSB8fCBrZXkgPT09IFwiZGF0YURlZmluaXRpb25cIikge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoRmlsdGVyLnZhbGlkYXRlKHRoaXNba2V5XSBhcyBGaWx0ZXJEZWZpbml0aW9uKSkge1xuICAgICAgICAgICAgICAgICh0aGlzW2tleV0gYXMgRmlsdGVyKS50cmFuc2xhdGVTZXJ2aWNlID0gdHJhbnNsYXRlU2VydmljZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChHcm91cEZpbHRlci52YWxpZGF0ZSh0aGlzW2tleV0gYXMgR3JvdXBGaWx0ZXJEZWZpbml0aW9uKSkge1xuICAgICAgICAgICAgICAgICh0aGlzW2tleV0gYXMgR3JvdXBGaWx0ZXIpLnRyYW5zbGF0ZVNlcnZpY2UgPSB0cmFuc2xhdGVTZXJ2aWNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBkaWFsZWN0Rm9ybWF0dGVyU2VydmljZShkaWFsZWN0Rm9ybWF0dGVyU2VydmljZTogRGlhbGVjdEZvcm1hdHRlclNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5fZGlhbGVjdEZvcm1hdHRlclNlcnZpY2UgPSBkaWFsZWN0Rm9ybWF0dGVyU2VydmljZTtcblxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaGFzT3duUHJvcGVydHkoa2V5KSB8fCBrZXkgPT09IFwiZGF0YURlZmluaXRpb25cIikge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoRmlsdGVyLnZhbGlkYXRlKHRoaXNba2V5XSBhcyBGaWx0ZXJEZWZpbml0aW9uKSkge1xuICAgICAgICAgICAgICAgICh0aGlzW2tleV0gYXMgRmlsdGVyKS5kaWFsZWN0Rm9ybWF0dGVyU2VydmljZSA9IGRpYWxlY3RGb3JtYXR0ZXJTZXJ2aWNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKEdyb3VwRmlsdGVyLnZhbGlkYXRlKHRoaXNba2V5XSBhcyBHcm91cEZpbHRlckRlZmluaXRpb24pKSB7XG4gICAgICAgICAgICAgICAgKHRoaXNba2V5XSBhcyBHcm91cEZpbHRlcikuZGlhbGVjdEZvcm1hdHRlclNlcnZpY2UgPSBkaWFsZWN0Rm9ybWF0dGVyU2VydmljZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChPcmRlclJ1bGUudmFsaWRhdGUodGhpc1trZXldIGFzIE9yZGVyUnVsZURlZmluaXRpb24pKSB7XG4gICAgICAgICAgICAgICAgKHRoaXNba2V5XSBhcyBPcmRlclJ1bGUpLmRpYWxlY3RGb3JtYXR0ZXJTZXJ2aWNlID0gZGlhbGVjdEZvcm1hdHRlclNlcnZpY2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHVibGljIGdldCB0cmFuc2xhdGVTZXJ2aWNlKCk6IFRyYW5zbGF0ZUFkYXB0ZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlU2VydmljZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0RXhwb3J0ZWRGaWVsZHNLZXlzKHR5cGU/OiBFeHBvcnRUeXBlcyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRFeHBvcnRlZEZpZWxkcyh2YWx1ZTogVCwgbGFuZz86IHN0cmluZywgdHlwZT86IEV4cG9ydFR5cGVzKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxufVxuIl19
32
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9maWx0ZXIvYmFzZS1maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsdUNBQXlGO0FBTXpGLE1BQXNCLFVBQVU7SUFTNUIsSUFBVyxnQkFBZ0IsQ0FBQyxnQkFBa0M7UUFDMUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDO1FBRTFDLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsS0FBSyxnQkFBZ0IsRUFBRTtnQkFDdkQsU0FBUzthQUNaO1lBRUQsSUFBSSxnQkFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFxQixDQUFDLEVBQUU7Z0JBQy9DLElBQUksQ0FBQyxHQUFHLENBQVksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQzthQUM3RDtZQUNELElBQUkscUJBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBMEIsQ0FBQyxFQUFFO2dCQUN6RCxJQUFJLENBQUMsR0FBRyxDQUFpQixDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO2FBQ2xFO1NBQ0o7SUFDTCxDQUFDO0lBQ0QsSUFBVyxnQkFBZ0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDbEMsQ0FBQztJQUVNLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxJQUFrQjtRQUNqRCxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFTSxLQUFLLENBQUMsaUJBQWlCLENBQUMsS0FBUSxFQUFFLElBQWEsRUFBRSxJQUFrQjtRQUN0RSxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7Q0FDSjtBQXBDRCxnQ0FvQ0MiLCJmaWxlIjoibGliL2ZpbHRlci9iYXNlLWZpbHRlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tIFwiQG5lc3Rqcy9jb21tb25cIjtcbmltcG9ydCB7IFRyYW5zbGF0ZUFkYXB0ZXIgfSBmcm9tIFwiLi4vYWRhcHRlcnMvdHJhbnNsYXRlLmFkYXB0ZXJcIjtcbmltcG9ydCB7IEZpbHRlciwgRmlsdGVyRGVmaW5pdGlvbiwgR3JvdXBGaWx0ZXIsIEdyb3VwRmlsdGVyRGVmaW5pdGlvbiB9IGZyb20gXCIuL2ZpbHRlcnNcIjtcbmltcG9ydCB7IERlZmF1bHRGaWx0ZXJEZWZpbml0aW9uIH0gZnJvbSBcIi4vZmlsdGVycy9kZWZhdWx0LmZpbHRlclwiO1xuaW1wb3J0IHsgRmlsdGVyQ29uZmlnLCBGaWx0ZXJNb2RlbCB9IGZyb20gXCIuL21vZGVsc1wiO1xuaW1wb3J0IHsgRXhwb3J0VHlwZXMgfSBmcm9tIFwiLi4vbW9kZWxzL2V4cG9ydC10eXBlcy5tb2RlbFwiO1xuaW1wb3J0IHsgRGVmYXVsdE9yZGVyUnVsZSB9IGZyb20gXCIuL29yZGVyLXJ1bGVzL2RlZmF1bHQub3JkZXItcnVsZVwiO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUZpbHRlcjxUPiBpbXBsZW1lbnRzIEZpbHRlck1vZGVsPFQ+IHtcbiAgICBwcml2YXRlIF90cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVBZGFwdGVyO1xuXG4gICAgW25hbWU6IHN0cmluZ106IEZpbHRlckNvbmZpZyB8IHVua25vd247XG4gICAgcHVibGljIGFic3RyYWN0IGRhdGFEZWZpbml0aW9uOiBUeXBlPFQ+O1xuICAgIHB1YmxpYyBleHBvcnREYXRhRGVmaW5pdGlvbj86IFR5cGU8VD47XG4gICAgcHVibGljIGRlZmF1bHRGaWx0ZXI/OiBEZWZhdWx0RmlsdGVyRGVmaW5pdGlvbjtcbiAgICBwdWJsaWMgZGVmYXVsdE9yZGVyUnVsZT86IERlZmF1bHRPcmRlclJ1bGU7XG5cbiAgICBwdWJsaWMgc2V0IHRyYW5zbGF0ZVNlcnZpY2UodHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlQWRhcHRlcikge1xuICAgICAgICB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlID0gdHJhbnNsYXRlU2VydmljZTtcblxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaGFzT3duUHJvcGVydHkoa2V5KSB8fCBrZXkgPT09IFwiZGF0YURlZmluaXRpb25cIikge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoRmlsdGVyLnZhbGlkYXRlKHRoaXNba2V5XSBhcyBGaWx0ZXJEZWZpbml0aW9uKSkge1xuICAgICAgICAgICAgICAgICh0aGlzW2tleV0gYXMgRmlsdGVyKS50cmFuc2xhdGVTZXJ2aWNlID0gdHJhbnNsYXRlU2VydmljZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChHcm91cEZpbHRlci52YWxpZGF0ZSh0aGlzW2tleV0gYXMgR3JvdXBGaWx0ZXJEZWZpbml0aW9uKSkge1xuICAgICAgICAgICAgICAgICh0aGlzW2tleV0gYXMgR3JvdXBGaWx0ZXIpLnRyYW5zbGF0ZVNlcnZpY2UgPSB0cmFuc2xhdGVTZXJ2aWNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgdHJhbnNsYXRlU2VydmljZSgpOiBUcmFuc2xhdGVBZGFwdGVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2U7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEV4cG9ydGVkRmllbGRzS2V5cyh0eXBlPzogRXhwb3J0VHlwZXMpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0RXhwb3J0ZWRGaWVsZHModmFsdWU6IFQsIGxhbmc/OiBzdHJpbmcsIHR5cGU/OiBFeHBvcnRUeXBlcyk6IFByb21pc2U8YW55W10+IHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbn1cbiJdfQ==
@@ -57,7 +57,6 @@ class DynamicFilterController {
57
57
  return this.userUserDeserializer.deserializeUser(req);
58
58
  }
59
59
  }
60
- exports.DynamicFilterController = DynamicFilterController;
61
60
  __decorate([
62
61
  (0, common_1.Inject)(),
63
62
  (0, common_1.Optional)(),
@@ -120,5 +119,6 @@ __decorate([
120
119
  __metadata("design:paramtypes", [Object, Object]),
121
120
  __metadata("design:returntype", Promise)
122
121
  ], DynamicFilterController.prototype, "searchFilterConfigValues", null);
122
+ exports.DynamicFilterController = DynamicFilterController;
123
123
 
124
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9maWx0ZXIvY29udHJvbGxlcnMvZHluYW1pYy1maWx0ZXIuY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0Fhd0I7QUFDeEIsNkJBQTRGO0FBQzVGLDZDQUErQztBQUMvQyx1REFBdUQ7QUFJdkQscUVBQWdFO0FBQ2hFLG1HQUE2RjtBQUs3RixNQUFzQix1QkFBdUI7SUFRekMsWUFBeUMsYUFBa0M7UUFBbEMsa0JBQWEsR0FBYixhQUFhLENBQXFCO0lBQUcsQ0FBQztJQUt4RSxBQUFNLEtBQUQsQ0FBQyxNQUFNLENBQVMsS0FBdUIsRUFBUyxHQUFRO1FBQ2hFLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN4QyxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUlNLEFBQU0sS0FBRCxDQUFDLFdBQVcsQ0FBUyxLQUF1QixFQUFTLEdBQVE7UUFDckUsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FB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LElBQUEsWUFBRyxFQUFDLGtCQUFrQixDQUFDO0lBRW5CLFdBQUEsSUFBQSxjQUFLLEdBQUUsQ0FBQTtJQUNQLFdBQUEsSUFBQSxZQUFHLEdBQUUsQ0FBQTs7Ozt3RUFHVDtBQUdZO0lBRFosSUFBQSxZQUFHLEVBQUMscUJBQXFCLENBQUM7SUFFdEIsV0FBQSxJQUFBLGNBQUssR0FBRSxDQUFBO0lBQ1AsV0FBQSxJQUFBLFlBQUcsR0FBRSxDQUFBOzs7O3VFQUdUIiwiZmlsZSI6ImxpYi9maWx0ZXIvY29udHJvbGxlcnMvZHluYW1pYy1maWx0ZXIuY29udHJvbGxlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQm9keSxcbiAgICBHZXQsXG4gICAgSHR0cENvZGUsXG4gICAgSHR0cFN0YXR1cyxcbiAgICBJbmplY3QsXG4gICAgT3B0aW9uYWwsXG4gICAgUGFyYW0sXG4gICAgUG9zdCxcbiAgICBRdWVyeSxcbiAgICBSZXEsXG4gICAgVXNlR3VhcmRzLFxuICAgIFVzZUludGVyY2VwdG9yc1xufSBmcm9tIFwiQG5lc3Rqcy9jb21tb25cIjtcbmltcG9ydCB7IEV4cG9ydFR5cGVzLCBGaWx0ZXJRdWVyeU1vZGVsLCBGaWx0ZXJSZXN1bHRNb2RlbCwgU2VsZWN0RmlsdGVyVmFsdWUgfSBmcm9tIFwiLi4vLi5cIjtcbmltcG9ydCB7IEZJTFRFUl9PUFRJT04gfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRcIjtcbmltcG9ydCB7IFVzZXJEZXNlcmlhbGl6ZXIgfSBmcm9tIFwiLi4vLi4vZGVzZXJpYWxpemVyc1wiO1xuaW1wb3J0IHsgRGF0YUZpbHRlclVzZXJNb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvdXNlci5tb2RlbFwiO1xuaW1wb3J0IHsgRmlsdGVyT3B0aW9uQ29uZmlnIH0gZnJvbSBcIi4uL2ZpbHRlci5jb25maWdcIjtcbmltcG9ydCB7IEZpbHRlclNlcnZpY2UgfSBmcm9tIFwiLi4vZmlsdGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7IEZpbHRlclF1ZXJ5R3VhcmQgfSBmcm9tIFwiLi4vZ3VhcmRzL2ZpbHRlci1xdWVyeS5ndWFyZFwiO1xuaW1wb3J0IHsgRGF0YUZpbGVEb3dubG9hZEludGVyY2VwdG9yIH0gZnJvbSBcIi4uL2ludGVyY2VwdG9ycy9kYXRhLWZpbGUtZG93bmxvYWQuaW50ZXJjZXB0b3JcIjtcbmltcG9ydCB7IEZpbHRlckNvbmZpZ3VyYXRpb25TZWFyY2hNb2RlbCB9IGZyb20gXCIuLi9tb2RlbHMvZmlsdGVyLWNvbmZpZ3VyYXRpb24tc2VhcmNoLm1vZGVsXCI7XG5pbXBvcnQgeyBGaWx0ZXJDb25maWd1cmF0aW9uTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxzL2ZpbHRlci1jb25maWd1cmF0aW9uLm1vZGVsXCI7XG5pbXBvcnQgeyBGaWx0ZXJSZXNvdXJjZVZhbHVlTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxzL2ZpbHRlci1yZXNvdXJjZS12YWx1ZS5tb2RlbFwiO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRHluYW1pY0ZpbHRlckNvbnRyb2xsZXI8RGF0YT4ge1xuICAgIEBJbmplY3QoKVxuICAgIEBPcHRpb25hbCgpXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyVXNlckRlc2VyaWFsaXplcjogVXNlckRlc2VyaWFsaXplcjxEYXRhRmlsdGVyVXNlck1vZGVsPjtcblxuICAgIEBJbmplY3QoRklMVEVSX09QVElPTilcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbjogRmlsdGVyT3B0aW9uQ29uZmlnO1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZWFkb25seSBmaWx0ZXJTZXJ2aWNlOiBGaWx0ZXJTZXJ2aWNlPERhdGE+KSB7fVxuXG4gICAgQFBvc3QoXCJmaWx0ZXJcIilcbiAgICBASHR0cENvZGUoSHR0cFN0YXR1cy5PSylcbiAgICBAVXNlR3VhcmRzKEZpbHRlclF1ZXJ5R3VhcmQpXG4gICAgcHVibGljIGFzeW5jIGZpbHRlcihAQm9keSgpIHF1ZXJ5OiBGaWx0ZXJRdWVyeU1vZGVsLCBAUmVxKCkgcmVxOiBhbnkpOiBQcm9taXNlPEZpbHRlclJlc3VsdE1vZGVsPERhdGE+PiB7XG4gICAgICAgIHF1ZXJ5ID0gdGhpcy50cmFuc2Zvcm1RdWVyeShxdWVyeSwgcmVxKTtcbiAgICAgICAgY29uc3QgdXNlciA9IGF3YWl0IHRoaXMuZ2V0VXNlcihyZXEpO1xuICAgICAgICByZXR1cm4gdXNlciA/IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXIodXNlciwgcXVlcnkpIDogdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlcihxdWVyeSk7XG4gICAgfVxuXG4gICAgQFBvc3QoXCJmaWx0ZXItY291bnRcIilcbiAgICBASHR0cENvZGUoSHR0cFN0YXR1cy5PSylcbiAgICBwdWJsaWMgYXN5bmMgZmlsdGVyQ291bnQoQEJvZHkoKSBxdWVyeTogRmlsdGVyUXVlcnlNb2RlbCwgQFJlcSgpIHJlcTogYW55KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICAgICAgcXVlcnkgPSB0aGlzLnRyYW5zZm9ybVF1ZXJ5KHF1ZXJ5LCByZXEpO1xuICAgICAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5nZXRVc2VyKHJlcSk7XG4gICAgICAgIHJldHVybiB1c2VyID8gdGhpcy5maWx0ZXJTZXJ2aWNlLmNvdW50KHVzZXIsIHF1ZXJ5KSA6IHRoaXMuZmlsdGVyU2VydmljZS5jb3VudChxdWVyeSk7XG4gICAgfVxuXG4gICAgQFBvc3QoXCJkb3dubG9hZC86dHlwZVwiKVxuICAgIEBIdHRwQ29kZShIdHRwU3RhdHVzLk9LKVxuICAgIEBVc2VJbnRlcmNlcHRvcnMoRGF0YUZpbGVEb3dubG9hZEludGVyY2VwdG9yKVxuICAgIHB1YmxpYyBhc3luYyBkb3dubG9hZERhdGEoXG4gICAgICAgIEBCb2R5KCkgcXVlcnk6IEZpbHRlclF1ZXJ5TW9kZWwsXG4gICAgICAgIEBQYXJhbShcInR5cGVcIikgdHlwZTogRXhwb3J0VHlwZXMsXG4gICAgICAgIEBSZXEoKSByZXE6IGFueVxuICAgICk6IFByb21pc2U8QnVmZmVyIHwgc3RyaW5nPiB7XG4gICAgICAgIHF1ZXJ5ID0gdGhpcy50cmFuc2Zvcm1RdWVyeShxdWVyeSwgcmVxKTtcbiAgICAgICAgY29uc3QgdXNlciA9IGF3YWl0IHRoaXMuZ2V0VXNlcihyZXEpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLmRvd25sb2FkRGF0YSh1c2VyLCB0eXBlLCBxdWVyeSk7XG4gICAgfVxuXG4gICAgQEdldChcImZpbHRlci9jb25maWdcIilcbiAgICBwdWJsaWMgYXN5bmMgZ2V0RmlsdGVyQ29uZmlnKEBSZXEoKSByZXE6IGFueSk6IFByb21pc2U8RmlsdGVyQ29uZmlndXJhdGlvbk1vZGVsW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZmlsdGVyU2VydmljZS5nZXRDb25maWcocmVxLCBhd2FpdCB0aGlzLmdldFVzZXIocmVxKSA/PyB7fSBhcyBEYXRhRmlsdGVyVXNlck1vZGVsKTtcbiAgICB9XG5cbiAgICBAR2V0KFwiZmlsdGVyL2NvbmZpZy9pZFwiKVxuICAgIHB1YmxpYyBhc3luYyBzZWFyY2hGaWx0ZXJSZXNvdXJjZVZhbHVlKFxuICAgICAgICBAUXVlcnkoKSBzZWFyY2g6IEZpbHRlclJlc291cmNlVmFsdWVNb2RlbCxcbiAgICAgICAgQFJlcSgpIHJlcTogYW55XG4gICAgKTogUHJvbWlzZTxTZWxlY3RGaWx0ZXJWYWx1ZSB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZmlsdGVyU2VydmljZS5maW5kUmVzb3VyY2VWYWx1ZUJ5SWQocmVxLCBzZWFyY2gsIGF3YWl0IHRoaXMuZ2V0VXNlcihyZXEpID8/IHt9IGFzIERhdGFGaWx0ZXJVc2VyTW9kZWwpO1xuICAgIH1cblxuICAgIEBHZXQoXCJmaWx0ZXIvY29uZmlnL3ZhbHVlXCIpXG4gICAgcHVibGljIGFzeW5jIHNlYXJjaEZpbHRlckNvbmZpZ1ZhbHVlcyhcbiAgICAgICAgQFF1ZXJ5KCkgc2VhcmNoOiBGaWx0ZXJDb25maWd1cmF0aW9uU2VhcmNoTW9kZWwsXG4gICAgICAgIEBSZXEoKSByZXE6IGFueVxuICAgICk6IFByb21pc2U8U2VsZWN0RmlsdGVyVmFsdWVbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLnNlYXJjaENvbmZpZ1ZhbHVlcyhyZXEsIHNlYXJjaCwgYXdhaXQgdGhpcy5nZXRVc2VyKHJlcSkgPz8ge30gYXMgRGF0YUZpbHRlclVzZXJNb2RlbCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIGdldFVzZXIocmVxOiBhbnkpOiBQcm9taXNlPERhdGFGaWx0ZXJVc2VyTW9kZWw+IHtcbiAgICAgICAgaWYgKCF0aGlzLnVzZXJVc2VyRGVzZXJpYWxpemVyIHx8IHRoaXMub3B0aW9uLmRpc2FibGVBY2Nlc3NDb250cm9sKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnVzZXJVc2VyRGVzZXJpYWxpemVyLmRlc2VyaWFsaXplVXNlcihyZXEpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCB0cmFuc2Zvcm1RdWVyeShxdWVyeTogRmlsdGVyUXVlcnlNb2RlbCwgcmVxOiBhbnkpOiBGaWx0ZXJRdWVyeU1vZGVsO1xufVxuIl19
124
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9maWx0ZXIvY29udHJvbGxlcnMvZHluYW1pYy1maWx0ZXIuY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0Fhd0I7QUFDeEIsNkJBQTRGO0FBQzVGLDZDQUErQztBQUMvQyx1REFBdUQ7QUFJdkQscUVBQWdFO0FBQ2hFLG1HQUE2RjtBQUs3RixNQUFzQix1QkFBdUI7SUFRekMsWUFBeUMsYUFBa0M7UUFBbEMsa0JBQWEsR0FBYixhQUFhLENBQXFCO0lBQUcsQ0FBQztJQUt4RSxBQUFNLEtBQUQsQ0FBQyxNQUFNLENBQVMsS0FBdUIsRUFBUyxHQUFRO1FBQ2hFLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN4QyxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUlNLEFBQU0sS0FBRCxDQUFDLFdBQVcsQ0FBUyxLQUF1QixFQUFTLEdBQVE7UUFDckUsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FB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a0JBQWtCLENBQUM7SUFFbkIsV0FBQSxJQUFBLGNBQUssR0FBRSxDQUFBO0lBQ1AsV0FBQSxJQUFBLFlBQUcsR0FBRSxDQUFBOzs7O3dFQUdUO0FBR1k7SUFEWixJQUFBLFlBQUcsRUFBQyxxQkFBcUIsQ0FBQztJQUV0QixXQUFBLElBQUEsY0FBSyxHQUFFLENBQUE7SUFDUCxXQUFBLElBQUEsWUFBRyxHQUFFLENBQUE7Ozs7dUVBR1Q7QUEzREwsMERBc0VDIiwiZmlsZSI6ImxpYi9maWx0ZXIvY29udHJvbGxlcnMvZHluYW1pYy1maWx0ZXIuY29udHJvbGxlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQm9keSxcbiAgICBHZXQsXG4gICAgSHR0cENvZGUsXG4gICAgSHR0cFN0YXR1cyxcbiAgICBJbmplY3QsXG4gICAgT3B0aW9uYWwsXG4gICAgUGFyYW0sXG4gICAgUG9zdCxcbiAgICBRdWVyeSxcbiAgICBSZXEsXG4gICAgVXNlR3VhcmRzLFxuICAgIFVzZUludGVyY2VwdG9yc1xufSBmcm9tIFwiQG5lc3Rqcy9jb21tb25cIjtcbmltcG9ydCB7IEV4cG9ydFR5cGVzLCBGaWx0ZXJRdWVyeU1vZGVsLCBGaWx0ZXJSZXN1bHRNb2RlbCwgU2VsZWN0RmlsdGVyVmFsdWUgfSBmcm9tIFwiLi4vLi5cIjtcbmltcG9ydCB7IEZJTFRFUl9PUFRJT04gfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRcIjtcbmltcG9ydCB7IFVzZXJEZXNlcmlhbGl6ZXIgfSBmcm9tIFwiLi4vLi4vZGVzZXJpYWxpemVyc1wiO1xuaW1wb3J0IHsgRGF0YUZpbHRlclVzZXJNb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvdXNlci5tb2RlbFwiO1xuaW1wb3J0IHsgRmlsdGVyT3B0aW9uQ29uZmlnIH0gZnJvbSBcIi4uL2ZpbHRlci5jb25maWdcIjtcbmltcG9ydCB7IEZpbHRlclNlcnZpY2UgfSBmcm9tIFwiLi4vZmlsdGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7IEZpbHRlclF1ZXJ5R3VhcmQgfSBmcm9tIFwiLi4vZ3VhcmRzL2ZpbHRlci1xdWVyeS5ndWFyZFwiO1xuaW1wb3J0IHsgRGF0YUZpbGVEb3dubG9hZEludGVyY2VwdG9yIH0gZnJvbSBcIi4uL2ludGVyY2VwdG9ycy9kYXRhLWZpbGUtZG93bmxvYWQuaW50ZXJjZXB0b3JcIjtcbmltcG9ydCB7IEZpbHRlckNvbmZpZ3VyYXRpb25TZWFyY2hNb2RlbCB9IGZyb20gXCIuLi9tb2RlbHMvZmlsdGVyLWNvbmZpZ3VyYXRpb24tc2VhcmNoLm1vZGVsXCI7XG5pbXBvcnQgeyBGaWx0ZXJDb25maWd1cmF0aW9uTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxzL2ZpbHRlci1jb25maWd1cmF0aW9uLm1vZGVsXCI7XG5pbXBvcnQgeyBGaWx0ZXJSZXNvdXJjZVZhbHVlTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxzL2ZpbHRlci1yZXNvdXJjZS12YWx1ZS5tb2RlbFwiO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRHluYW1pY0ZpbHRlckNvbnRyb2xsZXI8RGF0YT4ge1xuICAgIEBJbmplY3QoKVxuICAgIEBPcHRpb25hbCgpXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyVXNlckRlc2VyaWFsaXplcjogVXNlckRlc2VyaWFsaXplcjxEYXRhRmlsdGVyVXNlck1vZGVsPjtcblxuICAgIEBJbmplY3QoRklMVEVSX09QVElPTilcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbjogRmlsdGVyT3B0aW9uQ29uZmlnO1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZWFkb25seSBmaWx0ZXJTZXJ2aWNlOiBGaWx0ZXJTZXJ2aWNlPERhdGE+KSB7fVxuXG4gICAgQFBvc3QoXCJmaWx0ZXJcIilcbiAgICBASHR0cENvZGUoSHR0cFN0YXR1cy5PSylcbiAgICBAVXNlR3VhcmRzKEZpbHRlclF1ZXJ5R3VhcmQpXG4gICAgcHVibGljIGFzeW5jIGZpbHRlcihAQm9keSgpIHF1ZXJ5OiBGaWx0ZXJRdWVyeU1vZGVsLCBAUmVxKCkgcmVxOiBhbnkpOiBQcm9taXNlPEZpbHRlclJlc3VsdE1vZGVsPERhdGE+PiB7XG4gICAgICAgIHF1ZXJ5ID0gdGhpcy50cmFuc2Zvcm1RdWVyeShxdWVyeSwgcmVxKTtcbiAgICAgICAgY29uc3QgdXNlciA9IGF3YWl0IHRoaXMuZ2V0VXNlcihyZXEpO1xuICAgICAgICByZXR1cm4gdXNlciA/IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXIodXNlciwgcXVlcnkpIDogdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlcihxdWVyeSk7XG4gICAgfVxuXG4gICAgQFBvc3QoXCJmaWx0ZXItY291bnRcIilcbiAgICBASHR0cENvZGUoSHR0cFN0YXR1cy5PSylcbiAgICBwdWJsaWMgYXN5bmMgZmlsdGVyQ291bnQoQEJvZHkoKSBxdWVyeTogRmlsdGVyUXVlcnlNb2RlbCwgQFJlcSgpIHJlcTogYW55KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICAgICAgcXVlcnkgPSB0aGlzLnRyYW5zZm9ybVF1ZXJ5KHF1ZXJ5LCByZXEpO1xuICAgICAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5nZXRVc2VyKHJlcSk7XG4gICAgICAgIHJldHVybiB1c2VyID8gdGhpcy5maWx0ZXJTZXJ2aWNlLmNvdW50KHVzZXIsIHF1ZXJ5KSA6IHRoaXMuZmlsdGVyU2VydmljZS5jb3VudChxdWVyeSk7XG4gICAgfVxuXG4gICAgQFBvc3QoXCJkb3dubG9hZC86dHlwZVwiKVxuICAgIEBIdHRwQ29kZShIdHRwU3RhdHVzLk9LKVxuICAgIEBVc2VJbnRlcmNlcHRvcnMoRGF0YUZpbGVEb3dubG9hZEludGVyY2VwdG9yKVxuICAgIHB1YmxpYyBhc3luYyBkb3dubG9hZERhdGEoXG4gICAgICAgIEBCb2R5KCkgcXVlcnk6IEZpbHRlclF1ZXJ5TW9kZWwsXG4gICAgICAgIEBQYXJhbShcInR5cGVcIikgdHlwZTogRXhwb3J0VHlwZXMsXG4gICAgICAgIEBSZXEoKSByZXE6IGFueVxuICAgICk6IFByb21pc2U8QnVmZmVyIHwgc3RyaW5nPiB7XG4gICAgICAgIHF1ZXJ5ID0gdGhpcy50cmFuc2Zvcm1RdWVyeShxdWVyeSwgcmVxKTtcbiAgICAgICAgY29uc3QgdXNlciA9IGF3YWl0IHRoaXMuZ2V0VXNlcihyZXEpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLmRvd25sb2FkRGF0YSh1c2VyLCB0eXBlLCBxdWVyeSk7XG4gICAgfVxuXG4gICAgQEdldChcImZpbHRlci9jb25maWdcIilcbiAgICBwdWJsaWMgYXN5bmMgZ2V0RmlsdGVyQ29uZmlnKEBSZXEoKSByZXE6IGFueSk6IFByb21pc2U8RmlsdGVyQ29uZmlndXJhdGlvbk1vZGVsW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZmlsdGVyU2VydmljZS5nZXRDb25maWcocmVxLCBhd2FpdCB0aGlzLmdldFVzZXIocmVxKSA/PyB7fSBhcyBEYXRhRmlsdGVyVXNlck1vZGVsKTtcbiAgICB9XG5cbiAgICBAR2V0KFwiZmlsdGVyL2NvbmZpZy9pZFwiKVxuICAgIHB1YmxpYyBhc3luYyBzZWFyY2hGaWx0ZXJSZXNvdXJjZVZhbHVlKFxuICAgICAgICBAUXVlcnkoKSBzZWFyY2g6IEZpbHRlclJlc291cmNlVmFsdWVNb2RlbCxcbiAgICAgICAgQFJlcSgpIHJlcTogYW55XG4gICAgKTogUHJvbWlzZTxTZWxlY3RGaWx0ZXJWYWx1ZSB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZmlsdGVyU2VydmljZS5maW5kUmVzb3VyY2VWYWx1ZUJ5SWQocmVxLCBzZWFyY2gsIGF3YWl0IHRoaXMuZ2V0VXNlcihyZXEpID8/IHt9IGFzIERhdGFGaWx0ZXJVc2VyTW9kZWwpO1xuICAgIH1cblxuICAgIEBHZXQoXCJmaWx0ZXIvY29uZmlnL3ZhbHVlXCIpXG4gICAgcHVibGljIGFzeW5jIHNlYXJjaEZpbHRlckNvbmZpZ1ZhbHVlcyhcbiAgICAgICAgQFF1ZXJ5KCkgc2VhcmNoOiBGaWx0ZXJDb25maWd1cmF0aW9uU2VhcmNoTW9kZWwsXG4gICAgICAgIEBSZXEoKSByZXE6IGFueVxuICAgICk6IFByb21pc2U8U2VsZWN0RmlsdGVyVmFsdWVbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLnNlYXJjaENvbmZpZ1ZhbHVlcyhyZXEsIHNlYXJjaCwgYXdhaXQgdGhpcy5nZXRVc2VyKHJlcSkgPz8ge30gYXMgRGF0YUZpbHRlclVzZXJNb2RlbCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIGdldFVzZXIocmVxOiBhbnkpOiBQcm9taXNlPERhdGFGaWx0ZXJVc2VyTW9kZWw+IHtcbiAgICAgICAgaWYgKCF0aGlzLnVzZXJVc2VyRGVzZXJpYWxpemVyIHx8IHRoaXMub3B0aW9uLmRpc2FibGVBY2Nlc3NDb250cm9sKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnVzZXJVc2VyRGVzZXJpYWxpemVyLmRlc2VyaWFsaXplVXNlcihyZXEpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCB0cmFuc2Zvcm1RdWVyeShxdWVyeTogRmlsdGVyUXVlcnlNb2RlbCwgcmVxOiBhbnkpOiBGaWx0ZXJRdWVyeU1vZGVsO1xufVxuIl19