@netgrif/components-core 6.4.0 → 6.5.0-rc.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 (90) hide show
  1. package/commons/schema.d.ts +3 -0
  2. package/esm2020/assets/i18n/de.json +4 -2
  3. package/esm2020/assets/i18n/en.json +4 -2
  4. package/esm2020/assets/i18n/sk.json +4 -2
  5. package/esm2020/commons/schema.mjs +1 -1
  6. package/esm2020/lib/admin/role-assignment/abstract-role-assignment.component.mjs +11 -2
  7. package/esm2020/lib/admin/role-assignment/services/ProcessList.mjs +5 -2
  8. package/esm2020/lib/admin/role-assignment-ldap-group/abstract-ldap-group-role-assignment.component.mjs +11 -2
  9. package/esm2020/lib/admin/user-invite/abstract-user-invite.component.mjs +16 -3
  10. package/esm2020/lib/allowed-nets/services/factory/allowed-nets-service-factory.mjs +4 -1
  11. package/esm2020/lib/changed-fields/services/changed-fields.service.mjs +2 -2
  12. package/esm2020/lib/configuration/configuration.service.mjs +2 -2
  13. package/esm2020/lib/dialog/components/confirm-dialog/confirm-dialog.component.mjs +2 -2
  14. package/esm2020/lib/event/public-api.mjs +2 -1
  15. package/esm2020/lib/event/services/event.service.mjs +4 -4
  16. package/esm2020/lib/header/services/overflow.service.mjs +2 -2
  17. package/esm2020/lib/logger/services/log-publisher.service.mjs +2 -2
  18. package/esm2020/lib/navigation/breadcrumbs/abstract-breadcrumbs.component.mjs +3 -3
  19. package/esm2020/lib/navigation/dashboard/abstract-dashboard.component.mjs +228 -0
  20. package/esm2020/lib/navigation/model/group-navigation-constants.mjs +27 -19
  21. package/esm2020/lib/navigation/model/navigation-configs.mjs +2 -2
  22. package/esm2020/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.mjs +104 -348
  23. package/esm2020/lib/navigation/navigation-double-drawer/service/double-drawer-navigation.service.mjs +458 -0
  24. package/esm2020/lib/navigation/navigation-double-drawer/util/double-drawer-utils.mjs +43 -0
  25. package/esm2020/lib/navigation/public-api.mjs +4 -1
  26. package/esm2020/lib/navigation/service/uri.service.mjs +2 -2
  27. package/esm2020/lib/navigation/utility/filter-extraction.service.mjs +16 -5
  28. package/esm2020/lib/navigation/utility/navigation-item-task-utility-methods.mjs +13 -1
  29. package/esm2020/lib/panel/task-panel/abstract-task-panel.component.mjs +3 -3
  30. package/esm2020/lib/resources/engine-endpoint/petri-net-resource.service.mjs +12 -1
  31. package/esm2020/lib/resources/interface/petri-net-request-body.mjs +1 -1
  32. package/esm2020/lib/resources/resource-provider.service.mjs +6 -6
  33. package/esm2020/lib/routing/redirect-service/redirect.service.mjs +6 -3
  34. package/esm2020/lib/search/models/category/case/case-dataset.mjs +2 -2
  35. package/esm2020/lib/search/models/operator/operator.mjs +2 -2
  36. package/esm2020/lib/search/models/operator/substring.mjs +2 -2
  37. package/esm2020/lib/search/search-service/search.service.mjs +2 -2
  38. package/esm2020/lib/task/services/task-data.service.mjs +4 -4
  39. package/esm2020/lib/task-content/model/subgrid.mjs +2 -2
  40. package/esm2020/lib/task-content/services/field-converter.service.mjs +2 -2
  41. package/esm2020/lib/task-content/services/task-content.service.mjs +4 -4
  42. package/esm2020/lib/toolbar/abstract-toolbar.component.mjs +48 -11
  43. package/esm2020/lib/toolbar/public-api.mjs +2 -1
  44. package/esm2020/lib/toolbar/toolbar-config.mjs +2 -0
  45. package/esm2020/lib/user/services/user-comparator.service.mjs +2 -2
  46. package/esm2020/lib/utility/contains.pipe.mjs +2 -2
  47. package/esm2020/lib/utility/navigation-item-task-filter-factory.mjs +4 -3
  48. package/esm2020/lib/utility/navigation-item-task-search-categories-factory.mjs +4 -1
  49. package/esm2020/lib/view/abstract/view-with-headers.mjs +1 -1
  50. package/esm2020/lib/view/public-api.mjs +2 -1
  51. package/esm2020/lib/view/task-view/abstract-single-task-view.component.mjs +9 -26
  52. package/esm2020/lib/view/task-view/abstract-tabbed-single-task-view.component.mjs +32 -0
  53. package/esm2020/lib/view/workflow-view/abstract-workflow-view.component.mjs +14 -1
  54. package/esm2020/lib/view/workflow-view/workflow-view.service.mjs +17 -2
  55. package/fesm2015/netgrif-components-core.mjs +1064 -434
  56. package/fesm2015/netgrif-components-core.mjs.map +1 -1
  57. package/fesm2020/netgrif-components-core.mjs +1041 -426
  58. package/fesm2020/netgrif-components-core.mjs.map +1 -1
  59. package/lib/admin/role-assignment/abstract-role-assignment.component.d.ts +4 -1
  60. package/lib/admin/role-assignment/services/ProcessList.d.ts +1 -1
  61. package/lib/admin/role-assignment-ldap-group/abstract-ldap-group-role-assignment.component.d.ts +4 -1
  62. package/lib/admin/user-invite/abstract-user-invite.component.d.ts +9 -3
  63. package/lib/allowed-nets/services/factory/allowed-nets-service-factory.d.ts +1 -1
  64. package/lib/event/public-api.d.ts +1 -0
  65. package/lib/navigation/dashboard/abstract-dashboard.component.d.ts +73 -0
  66. package/lib/navigation/model/group-navigation-constants.d.ts +27 -19
  67. package/lib/navigation/model/navigation-configs.d.ts +1 -0
  68. package/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.d.ts +22 -57
  69. package/lib/navigation/navigation-double-drawer/service/double-drawer-navigation.service.d.ts +137 -0
  70. package/lib/navigation/navigation-double-drawer/util/double-drawer-utils.d.ts +16 -0
  71. package/lib/navigation/public-api.d.ts +3 -0
  72. package/lib/navigation/utility/filter-extraction.service.d.ts +3 -2
  73. package/lib/navigation/utility/navigation-item-task-utility-methods.d.ts +6 -0
  74. package/lib/resources/engine-endpoint/petri-net-resource.service.d.ts +8 -0
  75. package/lib/resources/interface/petri-net-request-body.d.ts +1 -0
  76. package/lib/toolbar/abstract-toolbar.component.d.ts +16 -6
  77. package/lib/toolbar/public-api.d.ts +1 -0
  78. package/lib/toolbar/toolbar-config.d.ts +11 -0
  79. package/lib/utility/navigation-item-task-filter-factory.d.ts +3 -1
  80. package/lib/utility/navigation-item-task-search-categories-factory.d.ts +1 -1
  81. package/lib/view/abstract/view-with-headers.d.ts +1 -1
  82. package/lib/view/public-api.d.ts +1 -0
  83. package/lib/view/task-view/abstract-single-task-view.component.d.ts +5 -16
  84. package/lib/view/task-view/abstract-tabbed-single-task-view.component.d.ts +15 -0
  85. package/lib/view/workflow-view/abstract-workflow-view.component.d.ts +5 -2
  86. package/lib/view/workflow-view/workflow-view.service.d.ts +2 -0
  87. package/package.json +1 -1
  88. package/src/assets/i18n/de.json +4 -2
  89. package/src/assets/i18n/en.json +4 -2
  90. package/src/assets/i18n/sk.json +4 -2
@@ -148,7 +148,7 @@ export class Subgrid {
148
148
  * @returns the base identifier, if it already is unique. A unique variation on the base identifier if it is already in use.
149
149
  */
150
150
  assureUniqueness(identifier) {
151
- const alphaNumIdentifier = 'x' + identifier.replace(/[^0-9a-z]/gi, '');
151
+ const alphaNumIdentifier = 'x' + identifier?.replace(/[^0-9a-z]/gi, '');
152
152
  if (!this._existingIdentifiers.has(alphaNumIdentifier)) {
153
153
  this._existingIdentifiers.add(alphaNumIdentifier);
154
154
  return alphaNumIdentifier;
@@ -232,4 +232,4 @@ export class Subgrid {
232
232
  }
233
233
  }
234
234
  }
235
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViZ3JpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvdGFzay1jb250ZW50L21vZGVsL3N1YmdyaWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBSTVELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFHckM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sT0FBTztJQTZCaEI7Ozs7T0FJRztJQUNILFlBQTBCLFNBQWlCLEVBQVMsSUFBWSxFQUFZLHFCQUFrRDtRQUFwRyxjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQVMsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFZLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBNkI7UUE3QjlIOztXQUVHO1FBQ08sYUFBUSxHQUFzQyxFQUFFLENBQUM7UUFLM0Q7O1dBRUc7UUFDTyxVQUFLLEdBQXlCLEVBQUUsQ0FBQztRQUMzQzs7V0FFRztRQUNPLHVCQUFrQixHQUF3QixJQUFJLG1CQUFtQixFQUFFLENBQUM7UUFDOUU7O1dBRUc7UUFDTyx5QkFBb0IsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO1FBVy9DLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLGVBQWUsQ0FBb0MsRUFBRSxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQztJQUN4QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxPQUFPO1FBQ1YsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2xDLElBQUksSUFBSSxDQUFDLHNCQUFzQixLQUFLLFNBQVMsRUFBRTtZQUMzQyxN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Q0FBQyxRQUFRLEVBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQy9ELENBQUMsRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDN0M7YUFBTTtZQUNILFFBQVEsRUFBRSxDQUFDO1NBQ2Q7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RhdGFmaWVsZEdyaWRMYXlvdXRFbGVtZW50fSBmcm9tICcuL2RhdGFmaWVsZC1ncmlkLWxheW91dC1lbGVtZW50JztcbmltcG9ydCB7SW5jcmVtZW50aW5nQ291bnRlcn0gZnJvbSAnLi4vLi4vdXRpbGl0eS9pbmNyZW1lbnRpbmctY291bnRlcic7XG5pbXBvcnQge1Rhc2tFbGVtZW50VHlwZX0gZnJvbSAnLi90YXNrLWNvbnRlbnQtZWxlbWVudC10eXBlJztcbmltcG9ydCB7RGF0YUZpZWxkfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy9tb2RlbHMvYWJzdHJhY3QtZGF0YS1maWVsZCc7XG5pbXBvcnQge0ZpZWxkVHlwZVJlc291cmNlfSBmcm9tICcuL2ZpZWxkLXR5cGUtcmVzb3VyY2UnO1xuaW1wb3J0IHtEYXRhR3JvdXB9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvZGF0YS1ncm91cHMnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBc3luY1JlbmRlcmluZ0NvbmZpZ3VyYXRpb259IGZyb20gJy4vYXN5bmMtcmVuZGVyaW5nLWNvbmZpZ3VyYXRpb24nO1xuXG4vKipcbiAqIEEgY29uZmlndXJhdGlvbiBmb3Igb25lIHN1YmdyaWQgLSBhIGJhc2ljIGxheW91dGluZyB1bml0XG4gKi9cbmV4cG9ydCBjbGFzcyBTdWJncmlkIHtcbiAgICAvKipcbiAgICAgKiB0aGUgY3NzIGBncmlkQXJlYXNgIGNvbmZpZ3VyYXRpb24sIHRoYXQgZGV0ZXJtaW5lcyB0aGUgbGF5b3V0IG9mIHRoZSBncmlkcyBjb250ZW50XG4gICAgICovXG4gICAgZ3JpZEFyZWFzOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIGVsZW1lbnRzIHRoYXQgYXJlIGNvbnRhaW5lZCBpbiB0aGUgc3ViZ3JpZFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfY29udGVudDogQXJyYXk8RGF0YWZpZWxkR3JpZExheW91dEVsZW1lbnQ+ID0gW107XG4gICAgLyoqXG4gICAgICogVGhlIGVsZW1lbnRzIHRoYXQgYXJlIGNvbnRhaW5lZCBpbiB0aGUgc3ViZ3JpZCBhbmQgaGF2ZSBhbHJlYWR5IGJlZW4gcmVuZGVyZWQgdG8gdGhlIHVzZXJcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX3JlbmRlcmVkQ29udGVudCQ6IEJlaGF2aW9yU3ViamVjdDxBcnJheTxEYXRhZmllbGRHcmlkTGF5b3V0RWxlbWVudD4+O1xuICAgIC8qKlxuICAgICAqIEEgMkQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdyaWQgZWxlbWVudCBJRHNcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2dyaWQ6IEFycmF5PEFycmF5PHN0cmluZz4+ID0gW107XG4gICAgLyoqXG4gICAgICogQ291bnRlciB0byBhc3N1cmUgZWxlbWVudCBJRCB1bmlxdWVuZXNzXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9ydW5uaW5nVGl0bGVDb3VudDogSW5jcmVtZW50aW5nQ291bnRlciA9IG5ldyBJbmNyZW1lbnRpbmdDb3VudGVyKCk7XG4gICAgLyoqXG4gICAgICogR3JpZCBhcmVhIGlkZW50aWZpZXJzIHRoYXQgYXJlIGFscmVhZHkgaW4gdXNlXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9leGlzdGluZ0lkZW50aWZpZXJzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgcHJvdGVjdGVkIF9hc3luY1JlbmRlcmluZ1RpbWVvdXQ6IG51bWJlcjtcbiAgICBwcm90ZWN0ZWQgX2tlcHRFbGVtZW50czogQXJyYXk8RGF0YWZpZWxkR3JpZExheW91dEVsZW1lbnQ+O1xuICAgIHByb3RlY3RlZCBfbmV3RWxlbWVudHM6IEFycmF5PERhdGFmaWVsZEdyaWRMYXlvdXRFbGVtZW50PjtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBzdWJncmlkSWQgYSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgc3ViZ3JpZCBpbiB0aGUgdGFzayBsYXlvdXRcbiAgICAgKiBAcGFyYW0gY29scyBOdW1iZXIgb2YgY29sdW1ucyBvZiB0aGUgc3ViZ3JpZFxuICAgICAqIEBwYXJhbSBfYXN5bmNSZW5kZXJpbmdDb25maWcgY29uZmlndXJhdGlvbiBvYmplY3QgZm9yIGFzeW5jIHJlbmRlcmluZyBvZiBkYXRhIGZpZWxkc1xuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihwdWJsaWMgc3ViZ3JpZElkOiBzdHJpbmcsIHB1YmxpYyBjb2xzOiBudW1iZXIsIHByb3RlY3RlZCBfYXN5bmNSZW5kZXJpbmdDb25maWc6IEFzeW5jUmVuZGVyaW5nQ29uZmlndXJhdGlvbikge1xuICAgICAgICB0aGlzLl9yZW5kZXJlZENvbnRlbnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcnJheTxEYXRhZmllbGRHcmlkTGF5b3V0RWxlbWVudD4+KFtdKTtcbiAgICB9XG5cbiAgICBnZXQgY29udGVudCgpOiBBcnJheTxEYXRhZmllbGRHcmlkTGF5b3V0RWxlbWVudD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVuZGVyZWRDb250ZW50JC52YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wbGV0ZXMgdGhlIHVuZGVybHlpbmcgc3RyZWFtIGFuZCBjbGVhcnMgYW55IHJ1bm5pbmcgdGltZW91dHNcbiAgICAgKi9cbiAgICBwdWJsaWMgZGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5fcmVuZGVyZWRDb250ZW50JC5jb21wbGV0ZSgpO1xuICAgICAgICBpZiAodGhpcy5fYXN5bmNSZW5kZXJpbmdUaW1lb3V0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5fYXN5bmNSZW5kZXJpbmdUaW1lb3V0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIHRoZSBjb2x1bW5zIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBncmlkIGxheW91dFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRHcmlkQ29sdW1ucygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ3JlcGVhdCgnICsgdGhpcy5jb2xzICsgJywgMWZyKSc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFJ1bm5pbmdUaXRsZUNvdW50KCk6IEluY3JlbWVudGluZ0NvdW50ZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnVubmluZ1RpdGxlQ291bnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYSB7QGxpbmsgRGF0YUZpZWxkfSBpbnRvIGEge0BsaW5rIERhdGFmaWVsZEdyaWRMYXlvdXRFbGVtZW50fSBhbmQgYWRkcyBpdCB0byB0aGUgY29udGVudCBvZiB0aGlzIHN1YmdyaWQuXG4gICAgICpcbiAgICAgKiBCZXdhcmUgdGhhdCB0aGlzIG1ldGhvZCBET0VTIE5PVCBhZGQgdGhlIGVsZW1lbnQgaW50byB0aGUgcmVzdWx0aW5nIGdyaWQuIFRoaXMgbXVzdCBiZSBkb25lIGluZGVwZW5kZW50bHkgYnkgY2FsbGluZyB0aGVcbiAgICAgKiBbYWRkUm93XXtAbGluayBTdWJncmlkI2FkZFJvd30gbWV0aG9kLlxuICAgICAqIEBwYXJhbSBmaWVsZCB0aGUgZmllbGQgdGhhdCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIHN1YmdyaWRcbiAgICAgKiBAcGFyYW0gdHlwZSB0aGUgdHlwZSBvZiB0aGUgZmllbGRcbiAgICAgKiBAcmV0dXJucyB0aGUgY3JlYXRlZCBncmlkIGVsZW1lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRmllbGQoZmllbGQ6IERhdGFGaWVsZDx1bmtub3duPiwgdHlwZTogRmllbGRUeXBlUmVzb3VyY2UpOiBEYXRhZmllbGRHcmlkTGF5b3V0RWxlbWVudCB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmZpZWxkRWxlbWVudChmaWVsZCwgdHlwZSk7XG4gICAgICAgIHRoaXMuYWRkRWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYSB7QGxpbmsgRGF0YUdyb3VwfSBpbnRvIGEge0BsaW5rIERhdGFmaWVsZEdyaWRMYXlvdXRFbGVtZW50fSBhbmQgYWRkcyBpdCB0byB0aGUgY29udGVudCBvZiB0aGlzIHN1YmdyaWQuXG4gICAgICpcbiAgICAgKiBCZXdhcmUgdGhhdCB0aGlzIG1ldGhvZCBET0VTIE5PVCBhZGQgdGhlIGVsZW1lbnQgaW50byB0aGUgcmVzdWx0aW5nIGdyaWQuIFRoaXMgbXVzdCBiZSBkb25lIGluZGVwZW5kZW50bHkgYnkgY2FsbGluZyB0aGVcbiAgICAgKiBbYWRkUm93XXtAbGluayBTdWJncmlkI2FkZFJvd30gbWV0aG9kLlxuICAgICAqIEBwYXJhbSBkYXRhR3JvdXAgdGhlIGRhdGEgZ3JvdXAgd2hvc2UgdGl0bGUgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBncmlkXG4gICAgICogQHJldHVybnMgdGhlIGNyZWF0ZWQgZ3JpZCBlbGVtZW50XG4gICAgICovXG4gICAgcHVibGljIGFkZFRpdGxlKGRhdGFHcm91cDogRGF0YUdyb3VwKTogRGF0YWZpZWxkR3JpZExheW91dEVsZW1lbnQge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5ncm91cFRpdGxlRWxlbWVudChkYXRhR3JvdXApO1xuICAgICAgICB0aGlzLmFkZEVsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgIHJldHVybiBlbGVtZW50O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhZGRFbGVtZW50KGVsZW1lbnQ6IERhdGFmaWVsZEdyaWRMYXlvdXRFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvbnRlbnQucHVzaChlbGVtZW50KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGEgcm93IG9mIENTUyBgZ3JpZEFyZWFJZGBzIGludG8gdGhlIGdyaWQgdGhhdCBpcyBoZWxkIGluIHRoaXMgc3ViZ3JpZC5cbiAgICAgKiBAcGFyYW0gcm93IHRoZSBmaWVsZCBJZHMuIFRoZSB3aWR0aCBvZiB0aGUgcm93IHNob3VsZCBtYXRjaCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgb2YgdGhlIGdyaWQuIElmIG5vdCBhbiBlcnJvciBpcyB0aHJvd24uXG4gICAgICovXG4gICAgcHVibGljIGFkZFJvdyhyb3c6IEFycmF5PHN0cmluZz4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHJvdy5sZW5ndGggIT09IHRoaXMuY29scykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgcHJvdmlkZWQgZ3JpZCBsYXlvdXQgcm93ICcke0pTT04uc3RyaW5naWZ5KHJvdylcbiAgICAgICAgICAgIH0nIGRvZXMgbm90IG1hdGNoIHRoZSBudW1iZXIgb2YgY29sdW1ucyBvZiB0aGlzIHN1YmdyaWQgKCR7dGhpcy5jb2xzfSlgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9ncmlkLnB1c2gocm93KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyB0aGUgcHJvdmlkZWQgY29uZmlndXJhdGlvbiBpbnRvIGRhdGEgdGhhdCBjYW4gYmUgZmVkIGludG8gQ1NTIGdyaWQgbGF5b3V0XG4gICAgICovXG4gICAgcHVibGljIGZpbmFsaXplKCkge1xuICAgICAgICB0aGlzLmZpbGxFbXB0eVNwYWNlKCk7XG4gICAgICAgIHRoaXMuY3JlYXRlR3JpZEFyZWFzU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmlsbHMgZW1wdHkgdGlsZXMgaW4gdGhlIGdyaWQgd2l0aCBibGFuayBlbGVtZW50c1xuICAgICAqL1xuICAgIHByb3RlY3RlZCBmaWxsRW1wdHlTcGFjZSgpIHtcbiAgICAgICAgY29uc3QgcnVubmluZ0JsYW5rc0NvdW50ID0gbmV3IEluY3JlbWVudGluZ0NvdW50ZXIoKTtcbiAgICAgICAgdGhpcy5fZ3JpZC5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvdy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChyb3dbaV0gIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBmaWxsZXIgPSB0aGlzLmZpbGxlckVsZW1lbnQocnVubmluZ0JsYW5rc0NvdW50KTtcbiAgICAgICAgICAgICAgICByb3dbaV0gPSBmaWxsZXIuZ3JpZEFyZWFJZDtcbiAgICAgICAgICAgICAgICB0aGlzLl9jb250ZW50LnB1c2goZmlsbGVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGZpZWxkIHRoZSBmaWVsZCB3aG9zZSByZXByZXNlbnRhdGlvbiBzaG91bGQgYmUgY3JlYXRlZFxuICAgICAqIEBwYXJhbSB0eXBlIHRoZSB0eXBlIG9mIHRoZSBkYXRhIGZpZWxkXG4gICAgICogQHJldHVybnMgYW4gb2JqZWN0IHRoYXQgcmVwcmVzZW50cyB0aGUgcHJvdmlkZWQgZGF0YSBmaWVsZCBpbiB0aGUgbGF5b3V0XG4gICAgICovXG4gICAgcHJvdGVjdGVkIGZpZWxkRWxlbWVudChmaWVsZDogRGF0YUZpZWxkPHVua25vd24+LCB0eXBlOiBGaWVsZFR5cGVSZXNvdXJjZSk6IERhdGFmaWVsZEdyaWRMYXlvdXRFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHtncmlkQXJlYUlkOiB0aGlzLmFzc3VyZVVuaXF1ZW5lc3MoZmllbGQuc3RyaW5nSWQpLCB0eXBlLCBpdGVtOiBmaWVsZH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGZpbGxlckNvdW50ZXIgdGhlIGNvdW50ZXIgdGhhdCBpcyB1c2VkIHRvIHRyYWNrIHRoZSBudW1iZXIgb2YgYWxyZWFkeSBjcmVhdGVkIGZpbGxlciBlbGVtZW50c1xuICAgICAqIEByZXR1cm5zIGEgZmlsbGVyIGVsZW1lbnQgb2JqZWN0IHdpdGggYSB1bmlxdWUgSUQuIFRoZSBwcm92aWRlZCBjb3VudGVyIGlzIGluY3JlbWVudGVkIGJ5IG9uZS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZmlsbGVyRWxlbWVudChmaWxsZXJDb3VudGVyOiBJbmNyZW1lbnRpbmdDb3VudGVyKTogRGF0YWZpZWxkR3JpZExheW91dEVsZW1lbnQge1xuICAgICAgICByZXR1cm4ge2dyaWRBcmVhSWQ6IHRoaXMuYXNzdXJlVW5pcXVlbmVzcygnYmxhbmsnICsgZmlsbGVyQ291bnRlci5uZXh0KCkpLCB0eXBlOiBUYXNrRWxlbWVudFR5cGUuQkxBTkt9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBkYXRhR3JvdXAgdGhlIGRhdGEgZ3JvdXAgd2hvc2UgdGl0bGUgZWxlbWVudCBzaG91bGQgYmUgY3JlYXRlZFxuICAgICAqIEByZXR1cm5zIGFuIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgYSB0aXRsZSBlbGVtZW50IG9mIHRoZSBwcm92aWRlZCBkYXRhIGdyb3VwLiBUaGUgcHJvdmlkZWQgY291bnRlciBpcyBpbmNyZW1lbnRlZCBieSBvbmUuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdyb3VwVGl0bGVFbGVtZW50KGRhdGFHcm91cDogRGF0YUdyb3VwKTogRGF0YWZpZWxkR3JpZExheW91dEVsZW1lbnQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IGRhdGFHcm91cC50aXRsZSxcbiAgICAgICAgICAgIGdyaWRBcmVhSWQ6IHRoaXMuYXNzdXJlVW5pcXVlbmVzcygnZ3JvdXAnICsgdGhpcy5fcnVubmluZ1RpdGxlQ291bnQubmV4dCgpKSxcbiAgICAgICAgICAgIHR5cGU6IFRhc2tFbGVtZW50VHlwZS5EQVRBX0dST1VQX1RJVExFXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXNzdXJlcyB0aGF0IHRoZSBwcm92aWRlZCBpZGVudGlmaWVyIHdpbGwgYmUgdW5pcXVlLlxuICAgICAqIEBwYXJhbSBpZGVudGlmaWVyIHRoZSBiYXNlIGZvciB0aGUgaWRlbnRpZmllclxuICAgICAqIEByZXR1cm5zIHRoZSBiYXNlIGlkZW50aWZpZXIsIGlmIGl0IGFscmVhZHkgaXMgdW5pcXVlLiBBIHVuaXF1ZSB2YXJpYXRpb24gb24gdGhlIGJhc2UgaWRlbnRpZmllciBpZiBpdCBpcyBhbHJlYWR5IGluIHVzZS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYXNzdXJlVW5pcXVlbmVzcyhpZGVudGlmaWVyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBhbHBoYU51bUlkZW50aWZpZXIgPSAneCcgKyBpZGVudGlmaWVyLnJlcGxhY2UoL1teMC05YS16XS9naSwgJycpO1xuICAgICAgICBpZiAoIXRoaXMuX2V4aXN0aW5nSWRlbnRpZmllcnMuaGFzKGFscGhhTnVtSWRlbnRpZmllcikpIHtcbiAgICAgICAgICAgIHRoaXMuX2V4aXN0aW5nSWRlbnRpZmllcnMuYWRkKGFscGhhTnVtSWRlbnRpZmllcik7XG4gICAgICAgICAgICByZXR1cm4gYWxwaGFOdW1JZGVudGlmaWVyO1xuICAgICAgICB9XG4gICAgICAgIGxldCB2YXJpYXRpb247XG4gICAgICAgIGNvbnN0IGNvdW50ZXIgPSBuZXcgSW5jcmVtZW50aW5nQ291bnRlcigpO1xuICAgICAgICBkbyB7XG4gICAgICAgICAgICB2YXJpYXRpb24gPSBgeCR7Y291bnRlci5uZXh0KCl9JHthbHBoYU51bUlkZW50aWZpZXJ9YDtcbiAgICAgICAgfSB3aGlsZSAodGhpcy5fZXhpc3RpbmdJZGVudGlmaWVycy5oYXModmFyaWF0aW9uKSk7XG4gICAgICAgIHRoaXMuX2V4aXN0aW5nSWRlbnRpZmllcnMuYWRkKHZhcmlhdGlvbik7XG4gICAgICAgIHJldHVybiB2YXJpYXRpb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSm9pbnMgdGhlIGdyaWQgb2YgZWxlbWVudCBpbnRvIGEgc3RyaW5nIGFjY2VwdGVkIGJ5IGBbZ2RBcmVhc11gIGlucHV0IHByb3BlcnR5IG9mIEFuZ3VsYXIgZmxleCBsYXlvdXRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgY3JlYXRlR3JpZEFyZWFzU3RyaW5nKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmdyaWRBcmVhcyA9IHRoaXMuX2dyaWQubWFwKHJvdyA9PiByb3cuam9pbignICcpKS5qb2luKCcgfCAnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNYXJrcyBhbGwgY29udGFpbmVkIGVsZW1lbnRzIGFzIGtlcHQgYW5kIGRpc3BsYXlzIHRoZW0uXG4gICAgICovXG4gICAgcHVibGljIGRpc3BsYXlBbGxGaWVsZHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2tlcHRFbGVtZW50cyA9IFsuLi50aGlzLl9jb250ZW50XTtcbiAgICAgICAgdGhpcy5fbmV3RWxlbWVudHMgPSBbXTtcbiAgICAgICAgdGhpcy5fcmVuZGVyZWRDb250ZW50JC5uZXh0KHRoaXMuX2tlcHRFbGVtZW50cyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyB3aGljaCBlbGVtZW50cyBmcm9tIHRoZSBwcm92aWRlZCBzdWJncmlkIGFyZSBjb250YWluZWQgaW4gdGhpcyBzdWJncmlkLlxuICAgICAqIE1hcmtzIHRoZXNlIGVsZW1lbnRzIGFzIGtlcHQgYW5kIGRpc3BsYXlzIHRoZW0uIE1hcmtzIHRoZSByZW1haW5pbmcgZWxlbWVudHMgYXMgbmV3LlxuICAgICAqXG4gICAgICogTmV3IGVsZW1lbnRzIGNhbiBiZSBkaXNwbGF5ZWQgYXN5bmNocm9ub3VzbHkgb3ZlciB0aW1lIGJ5IGNhbGxpbmcgdGhlXG4gICAgICogW3JlbmRlckNvbnRlbnRPdmVyVGltZV17QGxpbmsgU3ViZ3JpZCNyZW5kZXJDb250ZW50T3ZlclRpbWV9IG1ldGhvZC5cbiAgICAgKiBAcGFyYW0gc3ViZ3JpZCB0aGUgXCJwcmV2aW91c1wiIHN1YmdyaWQgdGhhdCBpcyB1c2VkIHRvIGNvbXB1dGUgdGhlIGVsZW1lbnQgXCJkaWZmZXJlbmNlXCJcbiAgICAgKi9cbiAgICBwdWJsaWMgZGV0ZXJtaW5lS2VwdEZpZWxkcyhzdWJncmlkOiBTdWJncmlkKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2tlcHRFbGVtZW50cyA9IFtdO1xuICAgICAgICB0aGlzLl9uZXdFbGVtZW50cyA9IFtdO1xuXG4gICAgICAgIHRoaXMuX2NvbnRlbnQuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgIGlmIChzdWJncmlkLmNvbnRlbnQuc29tZShlbCA9PiBlbC5ncmlkQXJlYUlkID09PSBlbGVtZW50LmdyaWRBcmVhSWQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fa2VwdEVsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX25ld0VsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3JlbmRlcmVkQ29udGVudCQubmV4dCh0aGlzLl9rZXB0RWxlbWVudHMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIElmIGVsZW1lbnRzIGFyZSBub3Qgc29ydGVkIGludG8gbmV3IGFuZCBrZXB0LCBtYXJrcyBhbGwgZWxlbWVudHMgYXMgbmV3LlxuICAgICAqIFRoZSBbZGV0ZXJtaW5lS2VwdEZpZWxkc117QGxpbmsgU3ViZ3JpZCNkZXRlcm1pbmVLZXB0RmllbGRzfSBtZXRob2QgY2FuIGJlIHVzZWQgdG8gbWFyayBlbGVtZW50cyBhcyBrZXB0LlxuICAgICAqXG4gICAgICogVGhlbiBwdXNoZXMgdGhlIG5ldyBlbGVtZW50cyB3aXRoIHRoZSBrZXB0IGVsZW1lbnRzIGludG8gdGhlIG91dHB1dCBhcnJheSBvdmVyIHRpbWUgYXMgc3BlY2lmaWVkIGJ5IHRoZVxuICAgICAqIHtAbGluayBBc3luY1JlbmRlcmluZ0NvbmZpZ3VyYXRpb259IHByb3ZpZGVkIGluIHRoZSBzdWJncmlkcyBjb25zdHJ1Y3Rvci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYWxsYmFjayB0aGUgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgb25jZSBhbGwgbmV3IGVsZW1lbnRzIHdlcmUgcHVzaGVkIGludG8gdGhlIG91dHB1dCBhcnJheVxuICAgICAqIEBwYXJhbSBmaXJzdCB3aGV0aGVyIHRoaXMgaXMgdGhlIGZpcnN0IHN1YmdyaWQgdGhhdCBzaSByZW5kZXJlZC4gSWYgdGhpcyBpcyB0aGUgZmlyc3Qgc3ViZ3JpZCB0aGVuIG9uIHRoZSBpbml0aWFsIHJlbmRlcmluZyBvZlxuICAgICAqIGVsZW1lbnRzIGEgYmF0Y2ggb2YgbmV3IGZpZWxkcyBhbG9uZ3NpZGUgdGhlIGxvYWRlciBlbGVtZW50cyBpcyBkaXNwbGF5ZWQgc28gdGhhdCBzb21lIGNvbnRlbnQgaXMgaW1tZWRpYXRlbHkgYXZhaWxhYmxlLlxuICAgICAqIE90aGVyd2lzZSBUaGUgaW5pdGlhbCBiYXRjaCBjb250YWlucyBvbmx5IGxvYWRlciBlbGVtZW50cy4gQmVpbmcgZmlyc3QgZWZmZWN0aXZlbHkgc2hvcnRlbnMgdGhlIHJlbmRlcmluZyBieSBvbmUgYmF0Y2gsIHNpbmNlIHRoZVxuICAgICAqIGZpcnN0IGxvYWRlci1vbmx5IGJhdGNoIGlzIHNraXBwZWQuXG4gICAgICovXG4gICAgcHVibGljIHJlbmRlckNvbnRlbnRPdmVyVGltZShjYWxsYmFjazogKCkgPT4gdm9pZCwgZmlyc3Q9IGZhbHNlKSB7XG4gICAgICAgIGlmICh0aGlzLl9uZXdFbGVtZW50cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLl9uZXdFbGVtZW50cyA9IEFycmF5LmZyb20odGhpcy5fY29udGVudCk7XG4gICAgICAgICAgICB0aGlzLl9rZXB0RWxlbWVudHMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNwcmVhZEZpZWxkUmVuZGVyaW5nT3ZlclRpbWUoY2FsbGJhY2ssIGZpcnN0ID8gMSA6IDApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzcHJlYWRGaWVsZFJlbmRlcmluZ092ZXJUaW1lKGNhbGxiYWNrOiAoKSA9PiB2b2lkLCBpdGVyYXRpb24gPSAwKSB7XG4gICAgICAgIHRoaXMuX2FzeW5jUmVuZGVyaW5nVGltZW91dCA9IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgZmllbGRzSW5DdXJyZW50SXRlcmF0aW9uID0gdGhpcy5fbmV3RWxlbWVudHMuc2xpY2UoMCwgaXRlcmF0aW9uICogdGhpcy5fYXN5bmNSZW5kZXJpbmdDb25maWcuYmF0Y2hTaXplKTtcbiAgICAgICAgY29uc3QgcGxhY2Vob2xkZXJzSW5DdXJyZW50SXRlcmF0aW9uID0gdGhpcy5fbmV3RWxlbWVudHMuc2xpY2UoaXRlcmF0aW9uICogdGhpcy5fYXN5bmNSZW5kZXJpbmdDb25maWcuYmF0Y2hTaXplLFxuICAgICAgICAgICAgaXRlcmF0aW9uICogdGhpcy5fYXN5bmNSZW5kZXJpbmdDb25maWcuYmF0Y2hTaXplICsgdGhpcy5fYXN5bmNSZW5kZXJpbmdDb25maWcubnVtYmVyT2ZQbGFjZWhvbGRlcnMpO1xuXG4gICAgICAgIGZpZWxkc0luQ3VycmVudEl0ZXJhdGlvbi5wdXNoKFxuICAgICAgICAgICAgLi4ucGxhY2Vob2xkZXJzSW5DdXJyZW50SXRlcmF0aW9uLm1hcChmaWVsZCA9PiAoe2dyaWRBcmVhSWQ6IGZpZWxkLmdyaWRBcmVhSWQsIHR5cGU6IFRhc2tFbGVtZW50VHlwZS5MT0FERVJ9KSkpO1xuXG4gICAgICAgIHRoaXMuX3JlbmRlcmVkQ29udGVudCQubmV4dChbLi4udGhpcy5fa2VwdEVsZW1lbnRzLCAuLi5maWVsZHNJbkN1cnJlbnRJdGVyYXRpb25dKTtcbiAgICAgICAgaWYgKHRoaXMuX2FzeW5jUmVuZGVyaW5nQ29uZmlnLmJhdGNoU2l6ZSAqIGl0ZXJhdGlvbiA8IHRoaXMuX25ld0VsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5fYXN5bmNSZW5kZXJpbmdUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc3ByZWFkRmllbGRSZW5kZXJpbmdPdmVyVGltZShjYWxsYmFjaywgaXRlcmF0aW9uICsgMSk7XG4gICAgICAgICAgICB9LCB0aGlzLl9hc3luY1JlbmRlcmluZ0NvbmZpZy5iYXRjaERlbGF5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
235
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViZ3JpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvdGFzay1jb250ZW50L21vZGVsL3N1YmdyaWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBSTVELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFHckM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sT0FBTztJQTZCaEI7Ozs7T0FJRztJQUNILFlBQTBCLFNBQWlCLEVBQVMsSUFBWSxFQUFZLHFCQUFrRDtRQUFwRyxjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQVMsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFZLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBNkI7UUE3QjlIOztXQUVHO1FBQ08sYUFBUSxHQUFzQyxFQUFFLENBQUM7UUFLM0Q7O1dBRUc7UUFDTyxVQUFLLEdBQXlCLEVBQUUsQ0FBQztRQUMzQzs7V0FFRztRQUNPLHVCQUFrQixHQUF3QixJQUFJLG1CQUFtQixFQUFFLENBQUM7UUFDOUU7O1dBRUc7UUFDTyx5QkFBb0IsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO1FBVy9DLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLGVBQWUsQ0FBb0MsRUFBRSxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQztJQUN4QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxPQUFPO1FBQ1YsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2xDLElBQUksSUFBSSxDQUFDLHNCQUFzQixLQUFLLFNBQVMsRUFBRTtZQUMzQyxN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Q0FBQyxRQUFRLEVBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQy9ELENBQUMsRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDN0M7YUFBTTtZQUNILFFBQVEsRUFBRSxDQUFDO1NBQ2Q7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RhdGFmaWVsZEdyaWRMYXlvdXRFbGVtZW50fSBmcm9tICcuL2RhdGFmaWVsZC1ncmlkLWxheW91dC1lbGVtZW50JztcbmltcG9ydCB7SW5jcmVtZW50aW5nQ291bnRlcn0gZnJvbSAnLi4vLi4vdXRpbGl0eS9pbmNyZW1lbnRpbmctY291bnRlcic7XG5pbXBvcnQge1Rhc2tFbGVtZW50VHlwZX0gZnJvbSAnLi90YXNrLWNvbnRlbnQtZWxlbWVudC10eXBlJztcbmltcG9ydCB7RGF0YUZpZWxkfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy9tb2RlbHMvYWJzdHJhY3QtZGF0YS1maWVsZCc7XG5pbXBvcnQge0ZpZWxkVHlwZVJlc291cmNlfSBmcm9tICcuL2ZpZWxkLXR5cGUtcmVzb3VyY2UnO1xuaW1wb3J0IHtEYXRhR3JvdXB9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvZGF0YS1ncm91cHMnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBc3luY1JlbmRlcmluZ0NvbmZpZ3VyYXRpb259IGZyb20gJy4vYXN5bmMtcmVuZGVyaW5nLWNvbmZpZ3VyYXRpb24nO1xuXG4vKipcbiAqIEEgY29uZmlndXJhdGlvbiBmb3Igb25lIHN1YmdyaWQgLSBhIGJhc2ljIGxheW91dGluZyB1bml0XG4gKi9cbmV4cG9ydCBjbGFzcyBTdWJncmlkIHtcbiAgICAvKipcbiAgICAgKiB0aGUgY3NzIGBncmlkQXJlYXNgIGNvbmZpZ3VyYXRpb24sIHRoYXQgZGV0ZXJtaW5lcyB0aGUgbGF5b3V0IG9mIHRoZSBncmlkcyBjb250ZW50XG4gICAgICovXG4gICAgZ3JpZEFyZWFzOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIGVsZW1lbnRzIHRoYXQgYXJlIGNvbnRhaW5lZCBpbiB0aGUgc3ViZ3JpZFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfY29udGVudDogQXJyYXk8RGF0YWZpZWxkR3JpZExheW91dEVsZW1lbnQ+ID0gW107XG4gICAgLyoqXG4gICAgICogVGhlIGVsZW1lbnRzIHRoYXQgYXJlIGNvbnRhaW5lZCBpbiB0aGUgc3ViZ3JpZCBhbmQgaGF2ZSBhbHJlYWR5IGJlZW4gcmVuZGVyZWQgdG8gdGhlIHVzZXJcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX3JlbmRlcmVkQ29udGVudCQ6IEJlaGF2aW9yU3ViamVjdDxBcnJheTxEYXRhZmllbGRHcmlkTGF5b3V0RWxlbWVudD4+O1xuICAgIC8qKlxuICAgICAqIEEgMkQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdyaWQgZWxlbWVudCBJRHNcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2dyaWQ6IEFycmF5PEFycmF5PHN0cmluZz4+ID0gW107XG4gICAgLyoqXG4gICAgICogQ291bnRlciB0byBhc3N1cmUgZWxlbWVudCBJRCB1bmlxdWVuZXNzXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9ydW5uaW5nVGl0bGVDb3VudDogSW5jcmVtZW50aW5nQ291bnRlciA9IG5ldyBJbmNyZW1lbnRpbmdDb3VudGVyKCk7XG4gICAgLyoqXG4gICAgICogR3JpZCBhcmVhIGlkZW50aWZpZXJzIHRoYXQgYXJlIGFscmVhZHkgaW4gdXNlXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9leGlzdGluZ0lkZW50aWZpZXJzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgcHJvdGVjdGVkIF9hc3luY1JlbmRlcmluZ1RpbWVvdXQ6IG51bWJlcjtcbiAgICBwcm90ZWN0ZWQgX2tlcHRFbGVtZW50czogQXJyYXk8RGF0YWZpZWxkR3JpZExheW91dEVsZW1lbnQ+O1xuICAgIHByb3RlY3RlZCBfbmV3RWxlbWVudHM6IEFycmF5PERhdGFmaWVsZEdyaWRMYXlvdXRFbGVtZW50PjtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBzdWJncmlkSWQgYSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgc3ViZ3JpZCBpbiB0aGUgdGFzayBsYXlvdXRcbiAgICAgKiBAcGFyYW0gY29scyBOdW1iZXIgb2YgY29sdW1ucyBvZiB0aGUgc3ViZ3JpZFxuICAgICAqIEBwYXJhbSBfYXN5bmNSZW5kZXJpbmdDb25maWcgY29uZmlndXJhdGlvbiBvYmplY3QgZm9yIGFzeW5jIHJlbmRlcmluZyBvZiBkYXRhIGZpZWxkc1xuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihwdWJsaWMgc3ViZ3JpZElkOiBzdHJpbmcsIHB1YmxpYyBjb2xzOiBudW1iZXIsIHByb3RlY3RlZCBfYXN5bmNSZW5kZXJpbmdDb25maWc6IEFzeW5jUmVuZGVyaW5nQ29uZmlndXJhdGlvbikge1xuICAgICAgICB0aGlzLl9yZW5kZXJlZENvbnRlbnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcnJheTxEYXRhZmllbGRHcmlkTGF5b3V0RWxlbWVudD4+KFtdKTtcbiAgICB9XG5cbiAgICBnZXQgY29udGVudCgpOiBBcnJheTxEYXRhZmllbGRHcmlkTGF5b3V0RWxlbWVudD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVuZGVyZWRDb250ZW50JC52YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wbGV0ZXMgdGhlIHVuZGVybHlpbmcgc3RyZWFtIGFuZCBjbGVhcnMgYW55IHJ1bm5pbmcgdGltZW91dHNcbiAgICAgKi9cbiAgICBwdWJsaWMgZGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5fcmVuZGVyZWRDb250ZW50JC5jb21wbGV0ZSgpO1xuICAgICAgICBpZiAodGhpcy5fYXN5bmNSZW5kZXJpbmdUaW1lb3V0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5fYXN5bmNSZW5kZXJpbmdUaW1lb3V0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIHRoZSBjb2x1bW5zIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBncmlkIGxheW91dFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRHcmlkQ29sdW1ucygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ3JlcGVhdCgnICsgdGhpcy5jb2xzICsgJywgMWZyKSc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFJ1bm5pbmdUaXRsZUNvdW50KCk6IEluY3JlbWVudGluZ0NvdW50ZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnVubmluZ1RpdGxlQ291bnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYSB7QGxpbmsgRGF0YUZpZWxkfSBpbnRvIGEge0BsaW5rIERhdGFmaWVsZEdyaWRMYXlvdXRFbGVtZW50fSBhbmQgYWRkcyBpdCB0byB0aGUgY29udGVudCBvZiB0aGlzIHN1YmdyaWQuXG4gICAgICpcbiAgICAgKiBCZXdhcmUgdGhhdCB0aGlzIG1ldGhvZCBET0VTIE5PVCBhZGQgdGhlIGVsZW1lbnQgaW50byB0aGUgcmVzdWx0aW5nIGdyaWQuIFRoaXMgbXVzdCBiZSBkb25lIGluZGVwZW5kZW50bHkgYnkgY2FsbGluZyB0aGVcbiAgICAgKiBbYWRkUm93XXtAbGluayBTdWJncmlkI2FkZFJvd30gbWV0aG9kLlxuICAgICAqIEBwYXJhbSBmaWVsZCB0aGUgZmllbGQgdGhhdCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIHN1YmdyaWRcbiAgICAgKiBAcGFyYW0gdHlwZSB0aGUgdHlwZSBvZiB0aGUgZmllbGRcbiAgICAgKiBAcmV0dXJucyB0aGUgY3JlYXRlZCBncmlkIGVsZW1lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRmllbGQoZmllbGQ6IERhdGFGaWVsZDx1bmtub3duPiwgdHlwZTogRmllbGRUeXBlUmVzb3VyY2UpOiBEYXRhZmllbGRHcmlkTGF5b3V0RWxlbWVudCB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmZpZWxkRWxlbWVudChmaWVsZCwgdHlwZSk7XG4gICAgICAgIHRoaXMuYWRkRWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYSB7QGxpbmsgRGF0YUdyb3VwfSBpbnRvIGEge0BsaW5rIERhdGFmaWVsZEdyaWRMYXlvdXRFbGVtZW50fSBhbmQgYWRkcyBpdCB0byB0aGUgY29udGVudCBvZiB0aGlzIHN1YmdyaWQuXG4gICAgICpcbiAgICAgKiBCZXdhcmUgdGhhdCB0aGlzIG1ldGhvZCBET0VTIE5PVCBhZGQgdGhlIGVsZW1lbnQgaW50byB0aGUgcmVzdWx0aW5nIGdyaWQuIFRoaXMgbXVzdCBiZSBkb25lIGluZGVwZW5kZW50bHkgYnkgY2FsbGluZyB0aGVcbiAgICAgKiBbYWRkUm93XXtAbGluayBTdWJncmlkI2FkZFJvd30gbWV0aG9kLlxuICAgICAqIEBwYXJhbSBkYXRhR3JvdXAgdGhlIGRhdGEgZ3JvdXAgd2hvc2UgdGl0bGUgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBncmlkXG4gICAgICogQHJldHVybnMgdGhlIGNyZWF0ZWQgZ3JpZCBlbGVtZW50XG4gICAgICovXG4gICAgcHVibGljIGFkZFRpdGxlKGRhdGFHcm91cDogRGF0YUdyb3VwKTogRGF0YWZpZWxkR3JpZExheW91dEVsZW1lbnQge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5ncm91cFRpdGxlRWxlbWVudChkYXRhR3JvdXApO1xuICAgICAgICB0aGlzLmFkZEVsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgIHJldHVybiBlbGVtZW50O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhZGRFbGVtZW50KGVsZW1lbnQ6IERhdGFmaWVsZEdyaWRMYXlvdXRFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvbnRlbnQucHVzaChlbGVtZW50KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGEgcm93IG9mIENTUyBgZ3JpZEFyZWFJZGBzIGludG8gdGhlIGdyaWQgdGhhdCBpcyBoZWxkIGluIHRoaXMgc3ViZ3JpZC5cbiAgICAgKiBAcGFyYW0gcm93IHRoZSBmaWVsZCBJZHMuIFRoZSB3aWR0aCBvZiB0aGUgcm93IHNob3VsZCBtYXRjaCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgb2YgdGhlIGdyaWQuIElmIG5vdCBhbiBlcnJvciBpcyB0aHJvd24uXG4gICAgICovXG4gICAgcHVibGljIGFkZFJvdyhyb3c6IEFycmF5PHN0cmluZz4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHJvdy5sZW5ndGggIT09IHRoaXMuY29scykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgcHJvdmlkZWQgZ3JpZCBsYXlvdXQgcm93ICcke0pTT04uc3RyaW5naWZ5KHJvdylcbiAgICAgICAgICAgIH0nIGRvZXMgbm90IG1hdGNoIHRoZSBudW1iZXIgb2YgY29sdW1ucyBvZiB0aGlzIHN1YmdyaWQgKCR7dGhpcy5jb2xzfSlgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9ncmlkLnB1c2gocm93KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyB0aGUgcHJvdmlkZWQgY29uZmlndXJhdGlvbiBpbnRvIGRhdGEgdGhhdCBjYW4gYmUgZmVkIGludG8gQ1NTIGdyaWQgbGF5b3V0XG4gICAgICovXG4gICAgcHVibGljIGZpbmFsaXplKCkge1xuICAgICAgICB0aGlzLmZpbGxFbXB0eVNwYWNlKCk7XG4gICAgICAgIHRoaXMuY3JlYXRlR3JpZEFyZWFzU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmlsbHMgZW1wdHkgdGlsZXMgaW4gdGhlIGdyaWQgd2l0aCBibGFuayBlbGVtZW50c1xuICAgICAqL1xuICAgIHByb3RlY3RlZCBmaWxsRW1wdHlTcGFjZSgpIHtcbiAgICAgICAgY29uc3QgcnVubmluZ0JsYW5rc0NvdW50ID0gbmV3IEluY3JlbWVudGluZ0NvdW50ZXIoKTtcbiAgICAgICAgdGhpcy5fZ3JpZC5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvdy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChyb3dbaV0gIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBmaWxsZXIgPSB0aGlzLmZpbGxlckVsZW1lbnQocnVubmluZ0JsYW5rc0NvdW50KTtcbiAgICAgICAgICAgICAgICByb3dbaV0gPSBmaWxsZXIuZ3JpZEFyZWFJZDtcbiAgICAgICAgICAgICAgICB0aGlzLl9jb250ZW50LnB1c2goZmlsbGVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGZpZWxkIHRoZSBmaWVsZCB3aG9zZSByZXByZXNlbnRhdGlvbiBzaG91bGQgYmUgY3JlYXRlZFxuICAgICAqIEBwYXJhbSB0eXBlIHRoZSB0eXBlIG9mIHRoZSBkYXRhIGZpZWxkXG4gICAgICogQHJldHVybnMgYW4gb2JqZWN0IHRoYXQgcmVwcmVzZW50cyB0aGUgcHJvdmlkZWQgZGF0YSBmaWVsZCBpbiB0aGUgbGF5b3V0XG4gICAgICovXG4gICAgcHJvdGVjdGVkIGZpZWxkRWxlbWVudChmaWVsZDogRGF0YUZpZWxkPHVua25vd24+LCB0eXBlOiBGaWVsZFR5cGVSZXNvdXJjZSk6IERhdGFmaWVsZEdyaWRMYXlvdXRFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHtncmlkQXJlYUlkOiB0aGlzLmFzc3VyZVVuaXF1ZW5lc3MoZmllbGQuc3RyaW5nSWQpLCB0eXBlLCBpdGVtOiBmaWVsZH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGZpbGxlckNvdW50ZXIgdGhlIGNvdW50ZXIgdGhhdCBpcyB1c2VkIHRvIHRyYWNrIHRoZSBudW1iZXIgb2YgYWxyZWFkeSBjcmVhdGVkIGZpbGxlciBlbGVtZW50c1xuICAgICAqIEByZXR1cm5zIGEgZmlsbGVyIGVsZW1lbnQgb2JqZWN0IHdpdGggYSB1bmlxdWUgSUQuIFRoZSBwcm92aWRlZCBjb3VudGVyIGlzIGluY3JlbWVudGVkIGJ5IG9uZS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZmlsbGVyRWxlbWVudChmaWxsZXJDb3VudGVyOiBJbmNyZW1lbnRpbmdDb3VudGVyKTogRGF0YWZpZWxkR3JpZExheW91dEVsZW1lbnQge1xuICAgICAgICByZXR1cm4ge2dyaWRBcmVhSWQ6IHRoaXMuYXNzdXJlVW5pcXVlbmVzcygnYmxhbmsnICsgZmlsbGVyQ291bnRlci5uZXh0KCkpLCB0eXBlOiBUYXNrRWxlbWVudFR5cGUuQkxBTkt9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBkYXRhR3JvdXAgdGhlIGRhdGEgZ3JvdXAgd2hvc2UgdGl0bGUgZWxlbWVudCBzaG91bGQgYmUgY3JlYXRlZFxuICAgICAqIEByZXR1cm5zIGFuIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgYSB0aXRsZSBlbGVtZW50IG9mIHRoZSBwcm92aWRlZCBkYXRhIGdyb3VwLiBUaGUgcHJvdmlkZWQgY291bnRlciBpcyBpbmNyZW1lbnRlZCBieSBvbmUuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdyb3VwVGl0bGVFbGVtZW50KGRhdGFHcm91cDogRGF0YUdyb3VwKTogRGF0YWZpZWxkR3JpZExheW91dEVsZW1lbnQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IGRhdGFHcm91cC50aXRsZSxcbiAgICAgICAgICAgIGdyaWRBcmVhSWQ6IHRoaXMuYXNzdXJlVW5pcXVlbmVzcygnZ3JvdXAnICsgdGhpcy5fcnVubmluZ1RpdGxlQ291bnQubmV4dCgpKSxcbiAgICAgICAgICAgIHR5cGU6IFRhc2tFbGVtZW50VHlwZS5EQVRBX0dST1VQX1RJVExFXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXNzdXJlcyB0aGF0IHRoZSBwcm92aWRlZCBpZGVudGlmaWVyIHdpbGwgYmUgdW5pcXVlLlxuICAgICAqIEBwYXJhbSBpZGVudGlmaWVyIHRoZSBiYXNlIGZvciB0aGUgaWRlbnRpZmllclxuICAgICAqIEByZXR1cm5zIHRoZSBiYXNlIGlkZW50aWZpZXIsIGlmIGl0IGFscmVhZHkgaXMgdW5pcXVlLiBBIHVuaXF1ZSB2YXJpYXRpb24gb24gdGhlIGJhc2UgaWRlbnRpZmllciBpZiBpdCBpcyBhbHJlYWR5IGluIHVzZS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYXNzdXJlVW5pcXVlbmVzcyhpZGVudGlmaWVyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBhbHBoYU51bUlkZW50aWZpZXIgPSAneCcgKyBpZGVudGlmaWVyPy5yZXBsYWNlKC9bXjAtOWEtel0vZ2ksICcnKTtcbiAgICAgICAgaWYgKCF0aGlzLl9leGlzdGluZ0lkZW50aWZpZXJzLmhhcyhhbHBoYU51bUlkZW50aWZpZXIpKSB7XG4gICAgICAgICAgICB0aGlzLl9leGlzdGluZ0lkZW50aWZpZXJzLmFkZChhbHBoYU51bUlkZW50aWZpZXIpO1xuICAgICAgICAgICAgcmV0dXJuIGFscGhhTnVtSWRlbnRpZmllcjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgdmFyaWF0aW9uO1xuICAgICAgICBjb25zdCBjb3VudGVyID0gbmV3IEluY3JlbWVudGluZ0NvdW50ZXIoKTtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgdmFyaWF0aW9uID0gYHgke2NvdW50ZXIubmV4dCgpfSR7YWxwaGFOdW1JZGVudGlmaWVyfWA7XG4gICAgICAgIH0gd2hpbGUgKHRoaXMuX2V4aXN0aW5nSWRlbnRpZmllcnMuaGFzKHZhcmlhdGlvbikpO1xuICAgICAgICB0aGlzLl9leGlzdGluZ0lkZW50aWZpZXJzLmFkZCh2YXJpYXRpb24pO1xuICAgICAgICByZXR1cm4gdmFyaWF0aW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEpvaW5zIHRoZSBncmlkIG9mIGVsZW1lbnQgaW50byBhIHN0cmluZyBhY2NlcHRlZCBieSBgW2dkQXJlYXNdYCBpbnB1dCBwcm9wZXJ0eSBvZiBBbmd1bGFyIGZsZXggbGF5b3V0XG4gICAgICovXG4gICAgcHJvdGVjdGVkIGNyZWF0ZUdyaWRBcmVhc1N0cmluZygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ncmlkQXJlYXMgPSB0aGlzLl9ncmlkLm1hcChyb3cgPT4gcm93LmpvaW4oJyAnKSkuam9pbignIHwgJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWFya3MgYWxsIGNvbnRhaW5lZCBlbGVtZW50cyBhcyBrZXB0IGFuZCBkaXNwbGF5cyB0aGVtLlxuICAgICAqL1xuICAgIHB1YmxpYyBkaXNwbGF5QWxsRmllbGRzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9rZXB0RWxlbWVudHMgPSBbLi4udGhpcy5fY29udGVudF07XG4gICAgICAgIHRoaXMuX25ld0VsZW1lbnRzID0gW107XG4gICAgICAgIHRoaXMuX3JlbmRlcmVkQ29udGVudCQubmV4dCh0aGlzLl9rZXB0RWxlbWVudHMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgd2hpY2ggZWxlbWVudHMgZnJvbSB0aGUgcHJvdmlkZWQgc3ViZ3JpZCBhcmUgY29udGFpbmVkIGluIHRoaXMgc3ViZ3JpZC5cbiAgICAgKiBNYXJrcyB0aGVzZSBlbGVtZW50cyBhcyBrZXB0IGFuZCBkaXNwbGF5cyB0aGVtLiBNYXJrcyB0aGUgcmVtYWluaW5nIGVsZW1lbnRzIGFzIG5ldy5cbiAgICAgKlxuICAgICAqIE5ldyBlbGVtZW50cyBjYW4gYmUgZGlzcGxheWVkIGFzeW5jaHJvbm91c2x5IG92ZXIgdGltZSBieSBjYWxsaW5nIHRoZVxuICAgICAqIFtyZW5kZXJDb250ZW50T3ZlclRpbWVde0BsaW5rIFN1YmdyaWQjcmVuZGVyQ29udGVudE92ZXJUaW1lfSBtZXRob2QuXG4gICAgICogQHBhcmFtIHN1YmdyaWQgdGhlIFwicHJldmlvdXNcIiBzdWJncmlkIHRoYXQgaXMgdXNlZCB0byBjb21wdXRlIHRoZSBlbGVtZW50IFwiZGlmZmVyZW5jZVwiXG4gICAgICovXG4gICAgcHVibGljIGRldGVybWluZUtlcHRGaWVsZHMoc3ViZ3JpZDogU3ViZ3JpZCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9rZXB0RWxlbWVudHMgPSBbXTtcbiAgICAgICAgdGhpcy5fbmV3RWxlbWVudHMgPSBbXTtcblxuICAgICAgICB0aGlzLl9jb250ZW50LmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICBpZiAoc3ViZ3JpZC5jb250ZW50LnNvbWUoZWwgPT4gZWwuZ3JpZEFyZWFJZCA9PT0gZWxlbWVudC5ncmlkQXJlYUlkKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2tlcHRFbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9uZXdFbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9yZW5kZXJlZENvbnRlbnQkLm5leHQodGhpcy5fa2VwdEVsZW1lbnRzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJZiBlbGVtZW50cyBhcmUgbm90IHNvcnRlZCBpbnRvIG5ldyBhbmQga2VwdCwgbWFya3MgYWxsIGVsZW1lbnRzIGFzIG5ldy5cbiAgICAgKiBUaGUgW2RldGVybWluZUtlcHRGaWVsZHNde0BsaW5rIFN1YmdyaWQjZGV0ZXJtaW5lS2VwdEZpZWxkc30gbWV0aG9kIGNhbiBiZSB1c2VkIHRvIG1hcmsgZWxlbWVudHMgYXMga2VwdC5cbiAgICAgKlxuICAgICAqIFRoZW4gcHVzaGVzIHRoZSBuZXcgZWxlbWVudHMgd2l0aCB0aGUga2VwdCBlbGVtZW50cyBpbnRvIHRoZSBvdXRwdXQgYXJyYXkgb3ZlciB0aW1lIGFzIHNwZWNpZmllZCBieSB0aGVcbiAgICAgKiB7QGxpbmsgQXN5bmNSZW5kZXJpbmdDb25maWd1cmF0aW9ufSBwcm92aWRlZCBpbiB0aGUgc3ViZ3JpZHMgY29uc3RydWN0b3IuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2FsbGJhY2sgdGhlIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIG9uY2UgYWxsIG5ldyBlbGVtZW50cyB3ZXJlIHB1c2hlZCBpbnRvIHRoZSBvdXRwdXQgYXJyYXlcbiAgICAgKiBAcGFyYW0gZmlyc3Qgd2hldGhlciB0aGlzIGlzIHRoZSBmaXJzdCBzdWJncmlkIHRoYXQgc2kgcmVuZGVyZWQuIElmIHRoaXMgaXMgdGhlIGZpcnN0IHN1YmdyaWQgdGhlbiBvbiB0aGUgaW5pdGlhbCByZW5kZXJpbmcgb2ZcbiAgICAgKiBlbGVtZW50cyBhIGJhdGNoIG9mIG5ldyBmaWVsZHMgYWxvbmdzaWRlIHRoZSBsb2FkZXIgZWxlbWVudHMgaXMgZGlzcGxheWVkIHNvIHRoYXQgc29tZSBjb250ZW50IGlzIGltbWVkaWF0ZWx5IGF2YWlsYWJsZS5cbiAgICAgKiBPdGhlcndpc2UgVGhlIGluaXRpYWwgYmF0Y2ggY29udGFpbnMgb25seSBsb2FkZXIgZWxlbWVudHMuIEJlaW5nIGZpcnN0IGVmZmVjdGl2ZWx5IHNob3J0ZW5zIHRoZSByZW5kZXJpbmcgYnkgb25lIGJhdGNoLCBzaW5jZSB0aGVcbiAgICAgKiBmaXJzdCBsb2FkZXItb25seSBiYXRjaCBpcyBza2lwcGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyByZW5kZXJDb250ZW50T3ZlclRpbWUoY2FsbGJhY2s6ICgpID0+IHZvaWQsIGZpcnN0PSBmYWxzZSkge1xuICAgICAgICBpZiAodGhpcy5fbmV3RWxlbWVudHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5fbmV3RWxlbWVudHMgPSBBcnJheS5mcm9tKHRoaXMuX2NvbnRlbnQpO1xuICAgICAgICAgICAgdGhpcy5fa2VwdEVsZW1lbnRzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zcHJlYWRGaWVsZFJlbmRlcmluZ092ZXJUaW1lKGNhbGxiYWNrLCBmaXJzdCA/IDEgOiAwKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc3ByZWFkRmllbGRSZW5kZXJpbmdPdmVyVGltZShjYWxsYmFjazogKCkgPT4gdm9pZCwgaXRlcmF0aW9uID0gMCkge1xuICAgICAgICB0aGlzLl9hc3luY1JlbmRlcmluZ1RpbWVvdXQgPSB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGZpZWxkc0luQ3VycmVudEl0ZXJhdGlvbiA9IHRoaXMuX25ld0VsZW1lbnRzLnNsaWNlKDAsIGl0ZXJhdGlvbiAqIHRoaXMuX2FzeW5jUmVuZGVyaW5nQ29uZmlnLmJhdGNoU2l6ZSk7XG4gICAgICAgIGNvbnN0IHBsYWNlaG9sZGVyc0luQ3VycmVudEl0ZXJhdGlvbiA9IHRoaXMuX25ld0VsZW1lbnRzLnNsaWNlKGl0ZXJhdGlvbiAqIHRoaXMuX2FzeW5jUmVuZGVyaW5nQ29uZmlnLmJhdGNoU2l6ZSxcbiAgICAgICAgICAgIGl0ZXJhdGlvbiAqIHRoaXMuX2FzeW5jUmVuZGVyaW5nQ29uZmlnLmJhdGNoU2l6ZSArIHRoaXMuX2FzeW5jUmVuZGVyaW5nQ29uZmlnLm51bWJlck9mUGxhY2Vob2xkZXJzKTtcblxuICAgICAgICBmaWVsZHNJbkN1cnJlbnRJdGVyYXRpb24ucHVzaChcbiAgICAgICAgICAgIC4uLnBsYWNlaG9sZGVyc0luQ3VycmVudEl0ZXJhdGlvbi5tYXAoZmllbGQgPT4gKHtncmlkQXJlYUlkOiBmaWVsZC5ncmlkQXJlYUlkLCB0eXBlOiBUYXNrRWxlbWVudFR5cGUuTE9BREVSfSkpKTtcblxuICAgICAgICB0aGlzLl9yZW5kZXJlZENvbnRlbnQkLm5leHQoWy4uLnRoaXMuX2tlcHRFbGVtZW50cywgLi4uZmllbGRzSW5DdXJyZW50SXRlcmF0aW9uXSk7XG4gICAgICAgIGlmICh0aGlzLl9hc3luY1JlbmRlcmluZ0NvbmZpZy5iYXRjaFNpemUgKiBpdGVyYXRpb24gPCB0aGlzLl9uZXdFbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuX2FzeW5jUmVuZGVyaW5nVGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNwcmVhZEZpZWxkUmVuZGVyaW5nT3ZlclRpbWUoY2FsbGJhY2ssIGl0ZXJhdGlvbiArIDEpO1xuICAgICAgICAgICAgfSwgdGhpcy5fYXN5bmNSZW5kZXJpbmdDb25maWcuYmF0Y2hEZWxheSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -33,7 +33,7 @@ export class FieldConverterService {
33
33
  case FieldTypeResource.BOOLEAN:
34
34
  return new BooleanField(item.stringId, item.name, item.value, item.behavior, item.placeholder, item.description, item.layout, item.validations, item.component, item.parentTaskId);
35
35
  case FieldTypeResource.TEXT:
36
- if (this.textFieldNames.includes(item.component?.name)) {
36
+ if (this.textFieldNames?.includes(item.component?.name)) {
37
37
  return new TextAreaField(item.stringId, item.name, this.resolveTextValue(item, item.value), item.behavior, item.placeholder, item.description, item.layout, item.validations, item.component, item.parentTaskId);
38
38
  }
39
39
  return new TextField(item.stringId, item.name, this.resolveTextValue(item, item.value), item.behavior, item.placeholder, item.description, item.layout, item.validations, item.component, item.parentTaskId);
@@ -305,4 +305,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
305
305
  providedIn: 'root'
306
306
  }]
307
307
  }], ctorParameters: function () { return []; } });
308
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtY29udmVydGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL3Rhc2stY29udGVudC9zZXJ2aWNlcy9maWVsZC1jb252ZXJ0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR3pDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQUNsRixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFDekUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBQy9FLE9BQU8sRUFBQyxnQkFBZ0IsRUFBd0IsTUFBTSw4REFBOEQsQ0FBQztBQUNySCxPQUFPLEVBQUMsZ0JBQWdCLEVBQXdCLE1BQU0sOERBQThELENBQUM7QUFDckgsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwwREFBMEQsQ0FBQztBQUN2RixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFDekUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBQy9FLE9BQU8sRUFBQyxTQUFTLEVBQXFCLE1BQU0sZ0RBQWdELENBQUM7QUFDN0YsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMERBQTBELENBQUM7QUFDdkYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHFEQUFxRCxDQUFDO0FBRWxGLE9B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QUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzNFO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVTLGdCQUFnQixDQUFDLEtBQXdCLEVBQUUsS0FBYTtRQUM5RCxJQUFJLEtBQUssQ0FBQyxTQUFTLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxLQUFLLFVBQVUsSUFBSSxLQUFLLEtBQUssRUFBRSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDN0csT0FBTyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDOUI7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRVMsbUJBQW1CLENBQUMsVUFBb0I7UUFDOUMsT0FBTyxVQUFVLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBa0MsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtJQUN2SCxDQUFDO0lBRVMsZUFBZSxDQUFDLFNBQVM7UUFDL0IsT0FBTyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN0RCxDQUFDOzttSEFyU1EscUJBQXFCO3VIQUFyQixxQkFBcUIsY0FGbEIsTUFBTTs0RkFFVCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RGF0YUZpZWxkUmVzb3VyY2V9IGZyb20gJy4uL21vZGVsL3Jlc291cmNlLWludGVyZmFjZSc7XG5pbXBvcnQge0RhdGFGaWVsZH0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvbW9kZWxzL2Fic3RyYWN0LWRhdGEtZmllbGQnO1xuaW1wb3J0IHtCb29sZWFuRmllbGR9IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL2Jvb2xlYW4tZmllbGQvbW9kZWxzL2Jvb2xlYW4tZmllbGQnO1xuaW1wb3J0IHtUZXh0RmllbGR9IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL3RleHQtZmllbGQvbW9kZWxzL3RleHQtZmllbGQnO1xuaW1wb3J0IHtOdW1iZXJGaWVsZH0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvbnVtYmVyLWZpZWxkL21vZGVscy9udW1iZXItZmllbGQnO1xuaW1wb3J0IHtFbnVtZXJhdGlvbkZpZWxkLCBFbnVtZXJhdGlvbkZpZWxkVmFsdWV9IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL2VudW1lcmF0aW9uLWZpZWxkL21vZGVscy9lbnVtZXJhdGlvbi1maWVsZCc7XG5pbXBvcnQge011bHRpY2hvaWNlRmllbGQsIE11bHRpY2hvaWNlRmllbGRWYWx1ZX0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvbXVsdGljaG9pY2UtZmllbGQvbW9kZWxzL211bHRpY2hvaWNlLWZpZWxkJztcbmltcG9ydCB7RGF0ZUZpZWxkfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy9kYXRlLWZpZWxkL21vZGVscy9kYXRlLWZpZWxkJztcbmltcG9ydCB7RGF0ZVRpbWVGaWVsZH0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvZGF0ZS10aW1lLWZpZWxkL21vZGVscy9kYXRlLXRpbWUtZmllbGQnO1xuaW1wb3J0IHtVc2VyRmllbGR9IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL3VzZXItZmllbGQvbW9kZWxzL3VzZXItZmllbGQnO1xuaW1wb3J0IHtCdXR0b25GaWVsZH0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvYnV0dG9uLWZpZWxkL21vZGVscy9idXR0b24tZmllbGQnO1xuaW1wb3J0IHtGaWxlRmllbGQsIEZpbGVVcGxvYWRNSU1FVHlwZX0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvZmlsZS1maWVsZC9tb2RlbHMvZmlsZS1maWVsZCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQge1VzZXJWYWx1ZX0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvdXNlci1maWVsZC9tb2RlbHMvdXNlci12YWx1ZSc7XG5pbXBvcnQge0ZpZWxkVHlwZVJlc291cmNlfSBmcm9tICcuLi9tb2RlbC9maWVsZC10eXBlLXJlc291cmNlJztcbmltcG9ydCB7RmlsZUxpc3RGaWVsZH0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvZmlsZS1saXN0LWZpZWxkL21vZGVscy9maWxlLWxpc3QtZmllbGQnO1xuaW1wb3J0IHtUZXh0QXJlYUZpZWxkfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy90ZXh0LWZpZWxkL21vZGVscy90ZXh0LWFyZWEtZmllbGQnO1xuaW1wb3J0IHtDb21wb25lbnR9IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL21vZGVscy9jb21wb25lbnQnO1xuaW1wb3J0IHtUYXNrUmVmRmllbGR9IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL3Rhc2stcmVmLWZpZWxkL21vZGVsL3Rhc2stcmVmLWZpZWxkJztcbmltcG9ydCB7RHluYW1pY0VudW1lcmF0aW9uRmllbGR9IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL2VudW1lcmF0aW9uLWZpZWxkL21vZGVscy9keW5hbWljLWVudW1lcmF0aW9uLWZpZWxkJztcbmltcG9ydCB7RmlsdGVyRmllbGR9IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL2ZpbHRlci1maWVsZC9tb2RlbHMvZmlsdGVyLWZpZWxkJztcbmltcG9ydCB7STE4bkZpZWxkfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy9pMThuLWZpZWxkL21vZGVscy9pMThuLWZpZWxkJztcbmltcG9ydCB7VXNlckxpc3RGaWVsZH0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvdXNlci1saXN0LWZpZWxkL21vZGVscy91c2VyLWxpc3QtZmllbGQnO1xuaW1wb3J0IHtVc2VyTGlzdFZhbHVlfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy91c2VyLWxpc3QtZmllbGQvbW9kZWxzL3VzZXItbGlzdC12YWx1ZSc7XG5pbXBvcnQge2RlY29kZUJhc2U2NCwgZW5jb2RlQmFzZTY0fSBmcm9tIFwiLi4vLi4vdXRpbGl0eS9iYXNlNjRcIjtcbmltcG9ydCB7Q2FzZVJlZkZpZWxkfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy9jYXNlLXJlZi1maWVsZC9tb2RlbC9jYXNlLXJlZi1maWVsZCc7XG5pbXBvcnQge1N0cmluZ0NvbGxlY3Rpb25GaWVsZH0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvc3RyaW5nLWNvbGxlY3Rpb24tZmllbGQvbW9kZWxzL3N0cmluZy1jb2xsZWN0aW9uLWZpZWxkJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBGaWVsZENvbnZlcnRlclNlcnZpY2Uge1xuICAgIHByaXZhdGUgdGV4dEZpZWxkTmFtZXMgPSBbICdyaWNodGV4dGFyZWEnLCAnaHRtbHRleHRhcmVhJywgJ2VkaXRvcicsICdodG1sRWRpdG9yJyBdXG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9DbGFzcyhpdGVtOiBEYXRhRmllbGRSZXNvdXJjZSk6IERhdGFGaWVsZDxhbnk+IHtcbiAgICAgICAgc3dpdGNoIChpdGVtLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlUmVzb3VyY2UuQk9PTEVBTjpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEJvb2xlYW5GaWVsZChpdGVtLnN0cmluZ0lkLCBpdGVtLm5hbWUsIGl0ZW0udmFsdWUgYXMgYm9vbGVhbiwgaXRlbS5iZWhhdmlvcixcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5wbGFjZWhvbGRlciwgaXRlbS5kZXNjcmlwdGlvbiwgaXRlbS5sYXlvdXQsIGl0ZW0udmFsaWRhdGlvbnMsIGl0ZW0uY29tcG9uZW50LCBpdGVtLnBhcmVudFRhc2tJZCk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZVJlc291cmNlLlRFWFQ6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudGV4dEZpZWxkTmFtZXMuaW5jbHVkZXMoaXRlbS5jb21wb25lbnQ/Lm5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgVGV4dEFyZWFGaWVsZChpdGVtLnN0cmluZ0lkLCBpdGVtLm5hbWUsIHRoaXMucmVzb2x2ZVRleHRWYWx1ZShpdGVtLCBpdGVtLnZhbHVlKSwgaXRlbS5iZWhhdmlvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ucGxhY2Vob2xkZXIsIGl0ZW0uZGVzY3JpcHRpb24sIGl0ZW0ubGF5b3V0LCBpdGVtLnZhbGlkYXRpb25zLCBpdGVtLmNvbXBvbmVudCwgaXRlbS5wYXJlbnRUYXNrSWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFRleHRGaWVsZChpdGVtLnN0cmluZ0lkLCBpdGVtLm5hbWUsIHRoaXMucmVzb2x2ZVRleHRWYWx1ZShpdGVtLCBpdGVtLnZhbHVlKSwgaXRlbS5iZWhhdmlvciwgaXRlbS5wbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5kZXNjcmlwdGlvbiwgaXRlbS5sYXlvdXQsIGl0ZW0udmFsaWRhdGlvbnMsIGl0ZW0uY29tcG9uZW50LCBpdGVtLnBhcmVudFRhc2tJZCk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZVJlc291cmNlLk5VTUJFUjpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE51bWJlckZpZWxkKGl0ZW0uc3RyaW5nSWQsIGl0ZW0ubmFtZSwgaXRlbS52YWx1ZSBhcyBudW1iZXIsIGl0ZW0uYmVoYXZpb3IsIGl0ZW0udmFsaWRhdGlvbnMsIGl0ZW0ucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uZGVzY3JpcHRpb24sIGl0ZW0ubGF5b3V0LCBpdGVtLmZvcm1hdEZpbHRlciwgdGhpcy5yZXNvbHZlTnVtYmVyQ29tcG9uZW50KGl0ZW0pLCBpdGVtLnBhcmVudFRhc2tJZCk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZVJlc291cmNlLkVOVU1FUkFUSU9OOlxuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGVSZXNvdXJjZS5FTlVNRVJBVElPTl9NQVA6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZUVudW1GaWVsZChpdGVtKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlUmVzb3VyY2UuTVVMVElDSE9JQ0U6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBNdWx0aWNob2ljZUZpZWxkKGl0ZW0uc3RyaW5nSWQsIGl0ZW0ubmFtZSwgaXRlbS52YWx1ZSwgdGhpcy5yZXNvbHZlTXVsdGljaG9pY2VDaG9pY2VzKGl0ZW0pLFxuICAgICAgICAgICAgICAgICAgICBpdGVtLmJlaGF2aW9yLCBpdGVtLnBsYWNlaG9sZGVyLCBpdGVtLmRlc2NyaXB0aW9uLCBpdGVtLmxheW91dCwgaXRlbS50eXBlLCBpdGVtLnZhbGlkYXRpb25zLFxuICAgICAgICAgICAgICAgICAgICBpdGVtLmNvbXBvbmVudCwgaXRlbS5wYXJlbnRUYXNrSWQpO1xuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGVSZXNvdXJjZS5NVUxUSUNIT0lDRV9NQVA6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBNdWx0aWNob2ljZUZpZWxkKGl0ZW0uc3RyaW5nSWQsIGl0ZW0ubmFtZSwgaXRlbS52YWx1ZSwgdGhpcy5yZXNvbHZlTXVsdGljaG9pY2VPcHRpb25zKGl0ZW0pLFxuICAgICAgICAgICAgICAgICAgICBpdGVtLmJlaGF2aW9yLCBpdGVtLnBsYWNlaG9sZGVyLCBpdGVtLmRlc2NyaXB0aW9uLCBpdGVtLmxheW91dCxcbiAgICAgICAgICAgICAgICAgICAgaXRlbS50eXBlLCBpdGVtLnZhbGlkYXRpb25zLCBpdGVtLmNvbXBvbmVudCwgaXRlbS5wYXJlbnRUYXNrSWQpO1xuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGVSZXNvdXJjZS5EQVRFOlxuICAgICAgICAgICAgICAgIGxldCBkYXRlO1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGUgPSBtb21lbnQobmV3IERhdGUoaXRlbS52YWx1ZVswXSwgaXRlbS52YWx1ZVsxXSAtIDEsIGl0ZW0udmFsdWVbMl0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlRmllbGQoaXRlbS5zdHJpbmdJZCwgaXRlbS5uYW1lLCBkYXRlLCBpdGVtLmJlaGF2aW9yLCBpdGVtLnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICBpdGVtLmRlc2NyaXB0aW9uLCBpdGVtLmxheW91dCwgaXRlbS52YWxpZGF0aW9ucywgaXRlbS5jb21wb25lbnQsIGl0ZW0ucGFyZW50VGFza0lkKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlUmVzb3VyY2UuREFURV9USU1FOlxuICAgICAgICAgICAgICAgIGxldCBkYXRlVGltZTtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBkYXRlVGltZSA9IG1vbWVudChuZXcgRGF0ZShpdGVtLnZhbHVlWzBdLCBpdGVtLnZhbHVlWzFdIC0gMSwgaXRlbS52YWx1ZVsyXSwgaXRlbS52YWx1ZVszXSwgaXRlbS52YWx1ZVs0XSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERhdGVUaW1lRmllbGQoaXRlbS5zdHJpbmdJZCwgaXRlbS5uYW1lLCBkYXRlVGltZSwgaXRlbS5iZWhhdmlvcixcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5wbGFjZWhvbGRlciwgaXRlbS5kZXNjcmlwdGlvbiwgaXRlbS5sYXlvdXQsIGl0ZW0udmFsaWRhdGlvbnMsIGl0ZW0uY29tcG9uZW50LCBpdGVtLnBhcmVudFRhc2tJZCk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZVJlc291cmNlLlVTRVI6XG4gICAgICAgICAgICAgICAgbGV0IHVzZXI7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0udmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdXNlciA9IG5ldyBVc2VyVmFsdWUoaXRlbS52YWx1ZS5pZCwgaXRlbS52YWx1ZS5uYW1lLCBpdGVtLnZhbHVlLnN1cm5hbWUsIGl0ZW0udmFsdWUuZW1haWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFVzZXJGaWVsZChpdGVtLnN0cmluZ0lkLCBpdGVtLm5hbWUsIGl0ZW0uYmVoYXZpb3IsIHVzZXIsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucm9sZXMsIGl0ZW0ucGxhY2Vob2xkZXIsIGl0ZW0uZGVzY3JpcHRpb24sIGl0ZW0ubGF5b3V0LCBpdGVtLnZhbGlkYXRpb25zLCBpdGVtLmNvbXBvbmVudCwgaXRlbS5wYXJlbnRUYXNrSWQpO1xuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGVSZXNvdXJjZS5VU0VSX0xJU1Q6XG4gICAgICAgICAgICAgICAgbGV0IHVzZXJMaXN0VmFsdWUgPSBuZXcgVXNlckxpc3RWYWx1ZShuZXcgTWFwPHN0cmluZywgVXNlclZhbHVlPigpKTtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBpdGVtLnZhbHVlLnVzZXJWYWx1ZXMuZm9yRWFjaCh1ID0+IHVzZXJMaXN0VmFsdWUuYWRkVXNlclZhbHVlKG5ldyBVc2VyVmFsdWUodS5pZCwgdS5uYW1lLCB1LnN1cm5hbWUsIHUuZW1haWwpKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgVXNlckxpc3RGaWVsZChpdGVtLnN0cmluZ0lkLCBpdGVtLm5hbWUsIGl0ZW0uYmVoYXZpb3IsIHVzZXJMaXN0VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucm9sZXMsIGl0ZW0ucGxhY2Vob2xkZXIsIGl0ZW0uZGVzY3JpcHRpb24sIGl0ZW0ubGF5b3V0LCBpdGVtLnZhbGlkYXRpb25zLCBpdGVtLmNvbXBvbmVudCwgaXRlbS5wYXJlbnRUYXNrSWQpO1xuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGVSZXNvdXJjZS5CVVRUT046XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBCdXR0b25GaWVsZChpdGVtLnN0cmluZ0lkLCBpdGVtLm5hbWUsIGl0ZW0uYmVoYXZpb3IsIGl0ZW0udmFsdWUgYXMgbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICBpdGVtLnBsYWNlaG9sZGVyLCBpdGVtLmRlc2NyaXB0aW9uLCBpdGVtLmxheW91dCwgaXRlbS52YWxpZGF0aW9ucywgaXRlbS5jb21wb25lbnQsIGl0ZW0ucGFyZW50VGFza0lkKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlUmVzb3VyY2UuRklMRTpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVGaWVsZChpdGVtLnN0cmluZ0lkLCBpdGVtLm5hbWUsIGl0ZW0uYmVoYXZpb3IsIGl0ZW0udmFsdWUgPyBpdGVtLnZhbHVlIDoge30sXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucGxhY2Vob2xkZXIsIGl0ZW0uZGVzY3JpcHRpb24sIGl0ZW0ubGF5b3V0LCB0aGlzLnJlc29sdmVCeXRlU2l6ZShpdGVtLmNvbXBvbmVudD8ucHJvcGVydGllcz8ubWF4U2l6ZSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzb2x2ZUFsbG93ZWRUeXBlcyhpdGVtLmNvbXBvbmVudD8ucHJvcGVydGllcz8uYWxsb3dUeXBlcz8uc3BsaXQoXCIsXCIpKSwgaXRlbS52YWxpZGF0aW9ucywgaXRlbS5jb21wb25lbnQsIGl0ZW0ucGFyZW50VGFza0lkKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlUmVzb3VyY2UuRklMRV9MSVNUOlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZUxpc3RGaWVsZChpdGVtLnN0cmluZ0lkLCBpdGVtLm5hbWUsIGl0ZW0uYmVoYXZpb3IsIGl0ZW0udmFsdWUgPyBpdGVtLnZhbHVlIDoge30sXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucGxhY2Vob2xkZXIsIGl0ZW0uZGVzY3JpcHRpb24sIGl0ZW0ubGF5b3V0LCBpdGVtLnZhbGlkYXRpb25zLCB0aGlzLnJlc29sdmVCeXRlU2l6ZShpdGVtLmNvbXBvbmVudD8ucHJvcGVydGllcz8ubWF4U2l6ZSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzb2x2ZUFsbG93ZWRUeXBlcyhpdGVtLmNvbXBvbmVudD8ucHJvcGVydGllcz8uYWxsb3dUeXBlcz8uc3BsaXQoXCIsXCIpKSwgaXRlbS5jb21wb25lbnQsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucGFyZW50VGFza0lkKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlUmVzb3VyY2UuVEFTS19SRUY6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBUYXNrUmVmRmllbGQoaXRlbS5zdHJpbmdJZCwgaXRlbS5uYW1lLCBpdGVtLnZhbHVlID8gaXRlbS52YWx1ZSA6IFtdLCBpdGVtLmJlaGF2aW9yLFxuICAgICAgICAgICAgICAgICAgICBpdGVtLnBsYWNlaG9sZGVyLCBpdGVtLmRlc2NyaXB0aW9uLCBpdGVtLmxheW91dCwgaXRlbS52YWxpZGF0aW9ucywgaXRlbS5jb21wb25lbnQsIGl0ZW0ucGFyZW50VGFza0lkKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlUmVzb3VyY2UuQ0FTRV9SRUY6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDYXNlUmVmRmllbGQoaXRlbS5zdHJpbmdJZCwgaXRlbS5uYW1lLCBpdGVtLnZhbHVlID8gaXRlbS52YWx1ZSA6IFtdLCBpdGVtLmJlaGF2aW9yLFxuICAgICAgICAgICAgICAgICAgICBpdGVtLnBsYWNlaG9sZGVyLCBpdGVtLmRlc2NyaXB0aW9uLCBpdGVtLmxheW91dCwgaXRlbS52YWxpZGF0aW9ucywgaXRlbS5jb21wb25lbnQsIGl0ZW0ucGFyZW50VGFza0lkKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlUmVzb3VyY2UuRklMVEVSOlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRmlsdGVyRmllbGQoaXRlbS5zdHJpbmdJZCwgaXRlbS5uYW1lLCBpdGVtLnZhbHVlID8/ICcnLCBpdGVtLmZpbHRlck1ldGFkYXRhLCBpdGVtLmFsbG93ZWROZXRzLFxuICAgICAgICAgICAgICAgICAgICBpdGVtLmJlaGF2aW9yLCBpdGVtLnBsYWNlaG9sZGVyLCBpdGVtLmRlc2NyaXB0aW9uLCBpdGVtLmxheW91dCwgaXRlbS52YWxpZGF0aW9ucywgaXRlbS5jb21wb25lbnQsIGl0ZW0ucGFyZW50VGFza0lkKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlUmVzb3VyY2UuSTE4TjpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEkxOG5GaWVsZChpdGVtLnN0cmluZ0lkLCBpdGVtLm5hbWUsIGl0ZW0udmFsdWUgPz8ge2RlZmF1bHRWYWx1ZTogJyd9LCBpdGVtLmJlaGF2aW9yLCBpdGVtLnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICBpdGVtLmRlc2NyaXB0aW9uLCBpdGVtLmxheW91dCwgaXRlbS52YWxpZGF0aW9ucywgaXRlbS5jb21wb25lbnQpO1xuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGVSZXNvdXJjZS5TVFJJTkdfQ09MTEVDVElPTjpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFN0cmluZ0NvbGxlY3Rpb25GaWVsZChpdGVtLnN0cmluZ0lkLCBpdGVtLm5hbWUsIGl0ZW0udmFsdWUgPyBpdGVtLnZhbHVlIDogW10sIGl0ZW0uYmVoYXZpb3IsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucGxhY2Vob2xkZXIsIGl0ZW0uZGVzY3JpcHRpb24sIGl0ZW0ubGF5b3V0LCBpdGVtLnZhbGlkYXRpb25zLCBpdGVtLmNvbXBvbmVudCwgaXRlbS5wYXJlbnRUYXNrSWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlc29sdmVUeXBlKGl0ZW06IERhdGFGaWVsZDxhbnk+KTogRmllbGRUeXBlUmVzb3VyY2Uge1xuICAgICAgICBpZiAoaXRlbSBpbnN0YW5jZW9mIEJvb2xlYW5GaWVsZCkge1xuICAgICAgICAgICAgcmV0dXJuIEZpZWxkVHlwZVJlc291cmNlLkJPT0xFQU47XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbSBpbnN0YW5jZW9mIEJ1dHRvbkZpZWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gRmllbGRUeXBlUmVzb3VyY2UuQlVUVE9OO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gaW5zdGFuY2VvZiBUZXh0RmllbGQpIHtcbiAgICAgICAgICAgIHJldHVybiBGaWVsZFR5cGVSZXNvdXJjZS5URVhUO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gaW5zdGFuY2VvZiBOdW1iZXJGaWVsZCkge1xuICAgICAgICAgICAgcmV0dXJuIEZpZWxkVHlwZVJlc291cmNlLk5VTUJFUjtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtIGluc3RhbmNlb2YgRGF0ZUZpZWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gRmllbGRUeXBlUmVzb3VyY2UuREFURTtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtIGluc3RhbmNlb2YgRGF0ZVRpbWVGaWVsZCkge1xuICAgICAgICAgICAgcmV0dXJuIEZpZWxkVHlwZVJlc291cmNlLkRBVEVfVElNRTtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtIGluc3RhbmNlb2YgRmlsZUZpZWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gRmllbGRUeXBlUmVzb3VyY2UuRklMRTtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtIGluc3RhbmNlb2YgRmlsZUxpc3RGaWVsZCkge1xuICAgICAgICAgICAgcmV0dXJuIEZpZWxkVHlwZVJlc291cmNlLkZJTEVfTElTVDtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtIGluc3RhbmNlb2YgVXNlckZpZWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gRmllbGRUeXBlUmVzb3VyY2UuVVNFUjtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtIGluc3RhbmNlb2YgVXNlckxpc3RGaWVsZCkge1xuICAgICAgICAgICAgcmV0dXJuIEZpZWxkVHlwZVJlc291cmNlLlVTRVJfTElTVDtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtIGluc3RhbmNlb2YgVGFza1JlZkZpZWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gRmllbGRUeXBlUmVzb3VyY2UuVEFTS19SRUY7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbSBpbnN0YW5jZW9mIEVudW1lcmF0aW9uRmllbGQgfHwgaXRlbSBpbnN0YW5jZW9mIE11bHRpY2hvaWNlRmllbGQpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtLmZpZWxkVHlwZTtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtIGluc3RhbmNlb2YgRmlsdGVyRmllbGQpIHtcbiAgICAgICAgICAgIHJldHVybiBGaWVsZFR5cGVSZXNvdXJjZS5GSUxURVI7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbSBpbnN0YW5jZW9mIEkxOG5GaWVsZCkge1xuICAgICAgICAgICAgcmV0dXJuIEZpZWxkVHlwZVJlc291cmNlLkkxOE47XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbSBpbnN0YW5jZW9mIENhc2VSZWZGaWVsZCkge1xuICAgICAgICAgICAgcmV0dXJuIEZpZWxkVHlwZVJlc291cmNlLkNBU0VfUkVGO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gaW5zdGFuY2VvZiBTdHJpbmdDb2xsZWN0aW9uRmllbGQpIHtcbiAgICAgICAgICAgIHJldHVybiBGaWVsZFR5cGVSZXNvdXJjZS5TVFJJTkdfQ09MTEVDVElPTjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBmb3JtYXRWYWx1ZUZvckJhY2tlbmQoZmllbGQ6IERhdGFGaWVsZDxhbnk+LCB2YWx1ZTogYW55KTogYW55IHtcbiAgICAgICAgaWYgKHRoaXMucmVzb2x2ZVR5cGUoZmllbGQpID09PSBGaWVsZFR5cGVSZXNvdXJjZS5URVhUICYmIHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yZXNvbHZlVHlwZShmaWVsZCkgPT09IEZpZWxkVHlwZVJlc291cmNlLlRFWFQgJiYgZmllbGQuY29tcG9uZW50ICYmIGZpZWxkLmNvbXBvbmVudC5uYW1lID09PSAncGFzc3dvcmQnKSB7XG4gICAgICAgICAgICByZXR1cm4gZW5jb2RlQmFzZTY0KHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucmVzb2x2ZVR5cGUoZmllbGQpID09PSBGaWVsZFR5cGVSZXNvdXJjZS5EQVRFKSB7XG4gICAgICAgICAgICBpZiAobW9tZW50LmlzTW9tZW50KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yZXNvbHZlVHlwZShmaWVsZCkgPT09IEZpZWxkVHlwZVJlc291cmNlLlVTRVIpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5pZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yZXNvbHZlVHlwZShmaWVsZCkgPT09IEZpZWxkVHlwZVJlc291cmNlLlVTRVJfTElTVCkge1xuICAgICAgICAgICAgcmV0dXJuIFsuLi52YWx1ZS51c2VyVmFsdWVzLmtleXMoKV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucmVzb2x2ZVR5cGUoZmllbGQpID09PSBGaWVsZFR5cGVSZXNvdXJjZS5EQVRFX1RJTUUpIHtcbiAgICAgICAgICAgIGlmIChtb21lbnQuaXNNb21lbnQodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmZvcm1hdCgnREQuTU0uWVlZWSBISDptbTpzcycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVzb2x2ZU51bWJlckNvbXBvbmVudChudW1iZXJGaWVsZDogRGF0YUZpZWxkUmVzb3VyY2UpOiBDb21wb25lbnQge1xuICAgICAgICBsZXQgbnVtYmVyQ29tcG9uZW50ID0ge25hbWU6ICdkZWZhdWx0JywgcHJvcGVydGllczogdW5kZWZpbmVkfTtcbiAgICAgICAgaWYgKG51bWJlckZpZWxkLmNvbXBvbmVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBudW1iZXJDb21wb25lbnQgPSB7XG4gICAgICAgICAgICAgICAgbmFtZTogbnVtYmVyRmllbGQuY29tcG9uZW50Lm5hbWUsXG4gICAgICAgICAgICAgICAgcHJvcGVydGllczogbnVtYmVyRmllbGQuY29tcG9uZW50LnByb3BlcnRpZXNcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bWJlckNvbXBvbmVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXNvbHZlcyBgZW51bWVyYXRpb25gIGFuZCBgZXVudW1lcmF0aW9uX21hcGAgZmllbGRzIGludG8gdGhlaXIgYXBwcm9wcmlhdGUgY2xhc3MgaW5zdGFuY2VzXG4gICAgICogQHBhcmFtIGVudW1GaWVsZCBlbnVtZXJhdGlvbiBmaWVsZCByZXNvdXJjZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZXNvbHZlRW51bUZpZWxkKGVudW1GaWVsZDogRGF0YUZpZWxkUmVzb3VyY2UpOiBFbnVtZXJhdGlvbkZpZWxkIHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGVudW1GaWVsZC50eXBlID09PSBGaWVsZFR5cGVSZXNvdXJjZS5FTlVNRVJBVElPTlxuICAgICAgICAgICAgPyB0aGlzLnJlc29sdmVFbnVtQ2hvaWNlcyhlbnVtRmllbGQpXG4gICAgICAgICAgICA6IHRoaXMucmVzb2x2ZUVudW1PcHRpb25zKGVudW1GaWVsZCk7XG4gICAgICAgIGlmIChlbnVtRmllbGQuY29tcG9uZW50ICYmIGVudW1GaWVsZC5jb21wb25lbnQubmFtZSA9PT0gJ2F1dG9jb21wbGV0ZV9keW5hbWljJykge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEeW5hbWljRW51bWVyYXRpb25GaWVsZChlbnVtRmllbGQuc3RyaW5nSWQsIGVudW1GaWVsZC5uYW1lLCBlbnVtRmllbGQudmFsdWUsIG9wdGlvbnMsXG4gICAgICAgICAgICAgICAgZW51bUZpZWxkLmJlaGF2aW9yLCBlbnVtRmllbGQucGxhY2Vob2xkZXIsIGVudW1GaWVsZC5kZXNjcmlwdGlvbiwgZW51bUZpZWxkLmxheW91dCxcbiAgICAgICAgICAgICAgICBlbnVtRmllbGQudHlwZSwgZW51bUZpZWxkLnZhbGlkYXRpb25zLCBlbnVtRmllbGQuY29tcG9uZW50LCBlbnVtRmllbGQucGFyZW50VGFza0lkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRW51bWVyYXRpb25GaWVsZChlbnVtRmllbGQuc3RyaW5nSWQsIGVudW1GaWVsZC5uYW1lLCBlbnVtRmllbGQudmFsdWUsIG9wdGlvbnMsXG4gICAgICAgICAgICAgICAgZW51bUZpZWxkLmJlaGF2aW9yLCBlbnVtRmllbGQucGxhY2Vob2xkZXIsIGVudW1GaWVsZC5kZXNjcmlwdGlvbiwgZW51bUZpZWxkLmxheW91dCxcbiAgICAgICAgICAgICAgICBlbnVtRmllbGQudHlwZSwgZW51bUZpZWxkLnZhbGlkYXRpb25zLCBlbnVtRmllbGQuY29tcG9uZW50LCBlbnVtRmllbGQucGFyZW50VGFza0lkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBwYXJzZSBlbnVtZXJhdGlvbiBvcHRpb25zIGZyb20gdGhlIGBjaG9pY2VzYCBhdHRyaWJ1dGVcbiAgICAgKiBAcGFyYW0gZW51bUZpZWxkIGVudW1lcmF0aW9uIGZpZWxkIHJlc291cmNlIG9iamVjdCB3aG8ncyBjaG9pY2VzIHdlIHdhbnQgdG8gcmVzb2x2ZVxuICAgICAqIEByZXR1cm5zIHRoZSBvcHRpb25zIGZvciB0aGUgZW51bWVyYXRpb24gZmllbGRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVzb2x2ZUVudW1DaG9pY2VzKGVudW1GaWVsZDogRGF0YUZpZWxkUmVzb3VyY2UpOiBBcnJheTxFbnVtZXJhdGlvbkZpZWxkVmFsdWU+IHtcbiAgICAgICAgY29uc3QgZW51bUNob2ljZXMgPSBbXTtcbiAgICAgICAgaWYgKGVudW1GaWVsZC5jaG9pY2VzIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICAgIGVudW1GaWVsZC5jaG9pY2VzLmZvckVhY2goaXQgPT4ge1xuICAgICAgICAgICAgICAgIGVudW1DaG9pY2VzLnB1c2goe2tleTogaXQsIHZhbHVlOiBpdH0gYXMgRW51bWVyYXRpb25GaWVsZFZhbHVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoZW51bUZpZWxkLmNob2ljZXMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgICAgICBlbnVtQ2hvaWNlcy5wdXNoKHtrZXksIHZhbHVlOiBlbnVtRmllbGQuY2hvaWNlc1trZXldfSBhcyBFbnVtZXJhdGlvbkZpZWxkVmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVudW1DaG9pY2VzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBwYXJzZSBlbnVtZXJhdGlvbiBvcHRpb25zIGZyb20gdGhlIGBvcHRpb25zYCBhdHRyaWJ1dGVcbiAgICAgKiBAcGFyYW0gZW51bUZpZWxkIGVudW1lcmF0aW9uIGZpZWxkIHJlc291cmNlIG9iamVjdCB3aG8ncyBvcHRpb25zIHdlIHdhbnQgdG8gcmVzb2x2ZVxuICAgICAqIEByZXR1cm5zIHRoZSBvcHRpb25zIGZvciB0aGUgZW51bWVyYXRpb24gZmllbGRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVzb2x2ZUVudW1PcHRpb25zKGVudW1GaWVsZDogRGF0YUZpZWxkUmVzb3VyY2UpOiBBcnJheTxFbnVtZXJhdGlvbkZpZWxkVmFsdWU+IHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGVudW1GaWVsZC5vcHRpb25zKS5tYXAoZW50cnkgPT4gKHtrZXk6IGVudHJ5WzBdLCB2YWx1ZTogZW50cnlbMV19KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHBhcnNlIG11bHRpY2hvaWNlIG9wdGlvbnMgZnJvbSB0aGUgYGNob2ljZXNgIGF0dHJpYnV0ZVxuICAgICAqIEBwYXJhbSBtdWx0aUZpZWxkIG11bHRpY2hvaWNlIGZpZWxkIHJlc291cmNlIG9iamVjdCB3aG8ncyBvcHRpb25zIHdlIHdhbnQgdG8gcmVzb2x2ZVxuICAgICAqIEByZXR1cm5zIHRoZSBvcHRpb25zIGZvciB0aGUgbXVsdGljaG9pY2UgZmllbGRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVzb2x2ZU11bHRpY2hvaWNlQ2hvaWNlcyhtdWx0aUZpZWxkOiBEYXRhRmllbGRSZXNvdXJjZSk6IEFycmF5PE11bHRpY2hvaWNlRmllbGRWYWx1ZT4ge1xuICAgICAgICBjb25zdCBjaG9pY2VzTXVsdGk6IEFycmF5PE11bHRpY2hvaWNlRmllbGRWYWx1ZT4gPSBbXTtcbiAgICAgICAgaWYgKG11bHRpRmllbGQuY2hvaWNlcyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICBtdWx0aUZpZWxkLmNob2ljZXMuZm9yRWFjaChpdCA9PiB7XG4gICAgICAgICAgICAgICAgY2hvaWNlc011bHRpLnB1c2goe2tleTogaXQsIHZhbHVlOiBpdH0gYXMgTXVsdGljaG9pY2VGaWVsZFZhbHVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgT2JqZWN0LmtleXMobXVsdGlGaWVsZC5jaG9pY2VzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICAgICAgY2hvaWNlc011bHRpLnB1c2goe2tleSwgdmFsdWU6IG11bHRpRmllbGQuY2hvaWNlc1trZXldfSBhcyBNdWx0aWNob2ljZUZpZWxkVmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNob2ljZXNNdWx0aTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcGFyc2UgZW51bWVyYXRpb24gb3B0aW9ucyBmcm9tIHRoZSBgb3B0aW9uc2AgYXR0cmlidXRlXG4gICAgICogQHBhcmFtIG11bHRpRmllbGQgbXVsdGljaG9pY2UgZmllbGQgcmVzb3VyY2Ugb2JqZWN0IHdobydzIG9wdGlvbnMgd2Ugd2FudCB0byByZXNvbHZlXG4gICAgICogQHJldHVybnMgdGhlIG9wdGlvbnMgZm9yIHRoZSBtdWx0aWNob2ljZSBmaWVsZFxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZXNvbHZlTXVsdGljaG9pY2VPcHRpb25zKG11bHRpRmllbGQ6IERhdGFGaWVsZFJlc291cmNlKTogQXJyYXk8TXVsdGljaG9pY2VGaWVsZFZhbHVlPiB7XG4gICAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyhtdWx0aUZpZWxkLm9wdGlvbnMpLm1hcChlbnRyeSA9PiAoe2tleTogZW50cnlbMF0sIHZhbHVlOiBlbnRyeVsxXX0pKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9ybWF0VmFsdWVGcm9tQmFja2VuZChmaWVsZDogRGF0YUZpZWxkPGFueT4sIHZhbHVlOiBhbnkpOiBhbnkge1xuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucmVzb2x2ZVR5cGUoZmllbGQpID09PSBGaWVsZFR5cGVSZXNvdXJjZS5URVhUICYmIGZpZWxkLmNvbXBvbmVudCAmJiBmaWVsZC5jb21wb25lbnQubmFtZSA9PT0gJ3Bhc3N3b3JkJykge1xuICAgICAgICAgICAgcmV0dXJuIGRlY29kZUJhc2U2NCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucmVzb2x2ZVR5cGUoZmllbGQpID09PSBGaWVsZFR5cGVSZXNvdXJjZS5EQVRFKSB7XG4gICAgICAgICAgICByZXR1cm4gbW9tZW50KG5ldyBEYXRlKHZhbHVlWzBdLCB2YWx1ZVsxXSAtIDEsIHZhbHVlWzJdKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucmVzb2x2ZVR5cGUoZmllbGQpID09PSBGaWVsZFR5cGVSZXNvdXJjZS5VU0VSKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFVzZXJWYWx1ZSh2YWx1ZS5pZCwgdmFsdWUubmFtZSwgdmFsdWUuc3VybmFtZSwgdmFsdWUuZW1haWwpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJlc29sdmVUeXBlKGZpZWxkKSA9PT0gRmllbGRUeXBlUmVzb3VyY2UuREFURV9USU1FKSB7XG4gICAgICAgICAgICByZXR1cm4gbW9tZW50KG5ldyBEYXRlKHZhbHVlWzBdLCB2YWx1ZVsxXSAtIDEsIHZhbHVlWzJdLCB2YWx1ZVszXSwgdmFsdWVbNF0pKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yZXNvbHZlVHlwZShmaWVsZCkgPT09IEZpZWxkVHlwZVJlc291cmNlLk1VTFRJQ0hPSUNFKSB7XG4gICAgICAgICAgICBjb25zdCBhcnJheSA9IFtdO1xuICAgICAgICAgICAgdmFsdWUuZm9yRWFjaCh2ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodi5kZWZhdWx0VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgYXJyYXkucHVzaCh2LmRlZmF1bHRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYXJyYXkucHVzaCh2KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBhcnJheTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yZXNvbHZlVHlwZShmaWVsZCkgPT09IEZpZWxkVHlwZVJlc291cmNlLlVTRVJfTElTVCAmJiAhIXZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFVzZXJMaXN0VmFsdWUobmV3IE1hcCh2YWx1ZS51c2VyVmFsdWVzLm1hcCh2ID0+IFt2LmlkLCB2XSkpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlc29sdmVUZXh0VmFsdWUoZmllbGQ6IERhdGFGaWVsZFJlc291cmNlLCB2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKGZpZWxkLmNvbXBvbmVudCAhPT0gdW5kZWZpbmVkICYmIGZpZWxkLmNvbXBvbmVudC5uYW1lID09PSAncGFzc3dvcmQnICYmIHZhbHVlICE9PSAnJyAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gZGVjb2RlQmFzZTY0KHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlc29sdmVBbGxvd2VkVHlwZXMoYWxsb3dUeXBlczogc3RyaW5nW10pIHtcbiAgICAgICAgcmV0dXJuIGFsbG93VHlwZXM/Lmxlbmd0aCA+IDAgPyAoYWxsb3dUeXBlcy5sZW5ndGggPiAxID8gYWxsb3dUeXBlcyBhcyBGaWxlVXBsb2FkTUlNRVR5cGVbXSA6IGFsbG93VHlwZXNbMF0pIDogbnVsbFxuICAgIH1cblxuICAgIHByb3RlY3RlZCByZXNvbHZlQnl0ZVNpemUoYnl0ZXNTaXplKSB7XG4gICAgICAgIHJldHVybiBieXRlc1NpemUgIT09IHVuZGVmaW5lZCA/IGJ5dGVzU2l6ZSA6IG51bGw7XG4gICAgfVxufVxuIl19
308
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtY29udmVydGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL3Rhc2stY29udGVudC9zZXJ2aWNlcy9maWVsZC1jb252ZXJ0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR3pDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQUNsRixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFDekUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBQy9FLE9BQU8sRUFBQyxnQkFBZ0IsRUFBd0IsTUFBTSw4REFBOEQsQ0FBQztBQUNySCxPQUFPLEVBQUMsZ0JBQWdCLEVBQXdCLE1BQU0sOERBQThELENBQUM7QUFDckgsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwwREFBMEQsQ0FBQztBQUN2RixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFDekUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBQy9FLE9BQU8sRUFBQyxTQUFTLEVBQXFCLE1BQU0sZ0RBQWdELENBQUM7QUFDN0YsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMERBQTBELENBQUM7QUFDdkYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHFEQUFxRCxDQUFDO0FBRWxGLE9B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QUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzNFO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVTLGdCQUFnQixDQUFDLEtBQXdCLEVBQUUsS0FBYTtRQUM5RCxJQUFJLEtBQUssQ0FBQyxTQUFTLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxLQUFLLFVBQVUsSUFBSSxLQUFLLEtBQUssRUFBRSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDN0csT0FBTyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDOUI7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRVMsbUJBQW1CLENBQUMsVUFBb0I7UUFDOUMsT0FBTyxVQUFVLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBa0MsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtJQUN2SCxDQUFDO0lBRVMsZUFBZSxDQUFDLFNBQVM7UUFDL0IsT0FBTyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN0RCxDQUFDOzttSEFyU1EscUJBQXFCO3VIQUFyQixxQkFBcUIsY0FGbEIsTUFBTTs0RkFFVCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RGF0YUZpZWxkUmVzb3VyY2V9IGZyb20gJy4uL21vZGVsL3Jlc291cmNlLWludGVyZmFjZSc7XG5pbXBvcnQge0RhdGFGaWVsZH0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvbW9kZWxzL2Fic3RyYWN0LWRhdGEtZmllbGQnO1xuaW1wb3J0IHtCb29sZWFuRmllbGR9IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL2Jvb2xlYW4tZmllbGQvbW9kZWxzL2Jvb2xlYW4tZmllbGQnO1xuaW1wb3J0IHtUZXh0RmllbGR9IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL3RleHQtZmllbGQvbW9kZWxzL3RleHQtZmllbGQnO1xuaW1wb3J0IHtOdW1iZXJGaWVsZH0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvbnVtYmVyLWZpZWxkL21vZGVscy9udW1iZXItZmllbGQnO1xuaW1wb3J0IHtFbnVtZXJhdGlvbkZpZWxkLCBFbnVtZXJhdGlvbkZpZWxkVmFsdWV9IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL2VudW1lcmF0aW9uLWZpZWxkL21vZGVscy9lbnVtZXJhdGlvbi1maWVsZCc7XG5pbXBvcnQge011bHRpY2hvaWNlRmllbGQsIE11bHRpY2hvaWNlRmllbGRWYWx1ZX0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvbXVsdGljaG9pY2UtZmllbGQvbW9kZWxzL211bHRpY2hvaWNlLWZpZWxkJztcbmltcG9ydCB7RGF0ZUZpZWxkfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy9kYXRlLWZpZWxkL21vZGVscy9kYXRlLWZpZWxkJztcbmltcG9ydCB7RGF0ZVRpbWVGaWVsZH0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvZGF0ZS10aW1lLWZpZWxkL21vZGVscy9kYXRlLXRpbWUtZmllbGQnO1xuaW1wb3J0IHtVc2VyRmllbGR9IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL3VzZXItZmllbGQvbW9kZWxzL3VzZXItZmllbGQnO1xuaW1wb3J0IHtCdXR0b25GaWVsZH0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvYnV0dG9uLWZpZWxkL21vZGVscy9idXR0b24tZmllbGQnO1xuaW1wb3J0IHtGaWxlRmllbGQsIEZpbGVVcGxvYWRNSU1FVHlwZX0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvZmlsZS1maWVsZC9tb2RlbHMvZmlsZS1maWVsZCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQge1VzZXJWYWx1ZX0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvdXNlci1maWVsZC9tb2RlbHMvdXNlci12YWx1ZSc7XG5pbXBvcnQge0ZpZWxkVHlwZVJlc291cmNlfSBmcm9tICcuLi9tb2RlbC9maWVsZC10eXBlLXJlc291cmNlJztcbmltcG9ydCB7RmlsZUxpc3RGaWVsZH0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvZmlsZS1saXN0LWZpZWxkL21vZGVscy9maWxlLWxpc3QtZmllbGQnO1xuaW1wb3J0IHtUZXh0QXJlYUZpZWxkfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy90ZXh0LWZpZWxkL21vZGVscy90ZXh0LWFyZWEtZmllbGQnO1xuaW1wb3J0IHtDb21wb25lbnR9IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL21vZGVscy9jb21wb25lbnQnO1xuaW1wb3J0IHtUYXNrUmVmRmllbGR9IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL3Rhc2stcmVmLWZpZWxkL21vZGVsL3Rhc2stcmVmLWZpZWxkJztcbmltcG9ydCB7RHluYW1pY0VudW1lcmF0aW9uRmllbGR9IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL2VudW1lcmF0aW9uLWZpZWxkL21vZGVscy9keW5hbWljLWVudW1lcmF0aW9uLWZpZWxkJztcbmltcG9ydCB7RmlsdGVyRmllbGR9IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL2ZpbHRlci1maWVsZC9tb2RlbHMvZmlsdGVyLWZpZWxkJztcbmltcG9ydCB7STE4bkZpZWxkfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy9pMThuLWZpZWxkL21vZGVscy9pMThuLWZpZWxkJztcbmltcG9ydCB7VXNlckxpc3RGaWVsZH0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvdXNlci1saXN0LWZpZWxkL21vZGVscy91c2VyLWxpc3QtZmllbGQnO1xuaW1wb3J0IHtVc2VyTGlzdFZhbHVlfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy91c2VyLWxpc3QtZmllbGQvbW9kZWxzL3VzZXItbGlzdC12YWx1ZSc7XG5pbXBvcnQge2RlY29kZUJhc2U2NCwgZW5jb2RlQmFzZTY0fSBmcm9tIFwiLi4vLi4vdXRpbGl0eS9iYXNlNjRcIjtcbmltcG9ydCB7Q2FzZVJlZkZpZWxkfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy9jYXNlLXJlZi1maWVsZC9tb2RlbC9jYXNlLXJlZi1maWVsZCc7XG5pbXBvcnQge1N0cmluZ0NvbGxlY3Rpb25GaWVsZH0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvc3RyaW5nLWNvbGxlY3Rpb24tZmllbGQvbW9kZWxzL3N0cmluZy1jb2xsZWN0aW9uLWZpZWxkJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBGaWVsZENvbnZlcnRlclNlcnZpY2Uge1xuICAgIHByaXZhdGUgdGV4dEZpZWxkTmFtZXMgPSBbICdyaWNodGV4dGFyZWEnLCAnaHRtbHRleHRhcmVhJywgJ2VkaXRvcicsICdodG1sRWRpdG9yJyBdXG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9DbGFzcyhpdGVtOiBEYXRhRmllbGRSZXNvdXJjZSk6IERhdGFGaWVsZDxhbnk+IHtcbiAgICAgICAgc3dpdGNoIChpdGVtLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlUmVzb3VyY2UuQk9PTEVBTjpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEJvb2xlYW5GaWVsZChpdGVtLnN0cmluZ0lkLCBpdGVtLm5hbWUsIGl0ZW0udmFsdWUgYXMgYm9vbGVhbiwgaXRlbS5iZWhhdmlvcixcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5wbGFjZWhvbGRlciwgaXRlbS5kZXNjcmlwdGlvbiwgaXRlbS5sYXlvdXQsIGl0ZW0udmFsaWRhdGlvbnMsIGl0ZW0uY29tcG9uZW50LCBpdGVtLnBhcmVudFRhc2tJZCk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZVJlc291cmNlLlRFWFQ6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudGV4dEZpZWxkTmFtZXM/LmluY2x1ZGVzKGl0ZW0uY29tcG9uZW50Py5uYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFRleHRBcmVhRmllbGQoaXRlbS5zdHJpbmdJZCwgaXRlbS5uYW1lLCB0aGlzLnJlc29sdmVUZXh0VmFsdWUoaXRlbSwgaXRlbS52YWx1ZSksIGl0ZW0uYmVoYXZpb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnBsYWNlaG9sZGVyLCBpdGVtLmRlc2NyaXB0aW9uLCBpdGVtLmxheW91dCwgaXRlbS52YWxpZGF0aW9ucywgaXRlbS5jb21wb25lbnQsIGl0ZW0ucGFyZW50VGFza0lkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBUZXh0RmllbGQoaXRlbS5zdHJpbmdJZCwgaXRlbS5uYW1lLCB0aGlzLnJlc29sdmVUZXh0VmFsdWUoaXRlbSwgaXRlbS52YWx1ZSksIGl0ZW0uYmVoYXZpb3IsIGl0ZW0ucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uZGVzY3JpcHRpb24sIGl0ZW0ubGF5b3V0LCBpdGVtLnZhbGlkYXRpb25zLCBpdGVtLmNvbXBvbmVudCwgaXRlbS5wYXJlbnRUYXNrSWQpO1xuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGVSZXNvdXJjZS5OVU1CRVI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBOdW1iZXJGaWVsZChpdGVtLnN0cmluZ0lkLCBpdGVtLm5hbWUsIGl0ZW0udmFsdWUgYXMgbnVtYmVyLCBpdGVtLmJlaGF2aW9yLCBpdGVtLnZhbGlkYXRpb25zLCBpdGVtLnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICBpdGVtLmRlc2NyaXB0aW9uLCBpdGVtLmxheW91dCwgaXRlbS5mb3JtYXRGaWx0ZXIsIHRoaXMucmVzb2x2ZU51bWJlckNvbXBvbmVudChpdGVtKSwgaXRlbS5wYXJlbnRUYXNrSWQpO1xuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGVSZXNvdXJjZS5FTlVNRVJBVElPTjpcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlUmVzb3VyY2UuRU5VTUVSQVRJT05fTUFQOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlc29sdmVFbnVtRmllbGQoaXRlbSk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZVJlc291cmNlLk1VTFRJQ0hPSUNFOlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTXVsdGljaG9pY2VGaWVsZChpdGVtLnN0cmluZ0lkLCBpdGVtLm5hbWUsIGl0ZW0udmFsdWUsIHRoaXMucmVzb2x2ZU11bHRpY2hvaWNlQ2hvaWNlcyhpdGVtKSxcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5iZWhhdmlvciwgaXRlbS5wbGFjZWhvbGRlciwgaXRlbS5kZXNjcmlwdGlvbiwgaXRlbS5sYXlvdXQsIGl0ZW0udHlwZSwgaXRlbS52YWxpZGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5jb21wb25lbnQsIGl0ZW0ucGFyZW50VGFza0lkKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlUmVzb3VyY2UuTVVMVElDSE9JQ0VfTUFQOlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTXVsdGljaG9pY2VGaWVsZChpdGVtLnN0cmluZ0lkLCBpdGVtLm5hbWUsIGl0ZW0udmFsdWUsIHRoaXMucmVzb2x2ZU11bHRpY2hvaWNlT3B0aW9ucyhpdGVtKSxcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5iZWhhdmlvciwgaXRlbS5wbGFjZWhvbGRlciwgaXRlbS5kZXNjcmlwdGlvbiwgaXRlbS5sYXlvdXQsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udHlwZSwgaXRlbS52YWxpZGF0aW9ucywgaXRlbS5jb21wb25lbnQsIGl0ZW0ucGFyZW50VGFza0lkKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlUmVzb3VyY2UuREFURTpcbiAgICAgICAgICAgICAgICBsZXQgZGF0ZTtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBkYXRlID0gbW9tZW50KG5ldyBEYXRlKGl0ZW0udmFsdWVbMF0sIGl0ZW0udmFsdWVbMV0gLSAxLCBpdGVtLnZhbHVlWzJdKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZUZpZWxkKGl0ZW0uc3RyaW5nSWQsIGl0ZW0ubmFtZSwgZGF0ZSwgaXRlbS5iZWhhdmlvciwgaXRlbS5wbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5kZXNjcmlwdGlvbiwgaXRlbS5sYXlvdXQsIGl0ZW0udmFsaWRhdGlvbnMsIGl0ZW0uY29tcG9uZW50LCBpdGVtLnBhcmVudFRhc2tJZCk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZVJlc291cmNlLkRBVEVfVElNRTpcbiAgICAgICAgICAgICAgICBsZXQgZGF0ZVRpbWU7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0udmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZVRpbWUgPSBtb21lbnQobmV3IERhdGUoaXRlbS52YWx1ZVswXSwgaXRlbS52YWx1ZVsxXSAtIDEsIGl0ZW0udmFsdWVbMl0sIGl0ZW0udmFsdWVbM10sIGl0ZW0udmFsdWVbNF0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlVGltZUZpZWxkKGl0ZW0uc3RyaW5nSWQsIGl0ZW0ubmFtZSwgZGF0ZVRpbWUsIGl0ZW0uYmVoYXZpb3IsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucGxhY2Vob2xkZXIsIGl0ZW0uZGVzY3JpcHRpb24sIGl0ZW0ubGF5b3V0LCBpdGVtLnZhbGlkYXRpb25zLCBpdGVtLmNvbXBvbmVudCwgaXRlbS5wYXJlbnRUYXNrSWQpO1xuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGVSZXNvdXJjZS5VU0VSOlxuICAgICAgICAgICAgICAgIGxldCB1c2VyO1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHVzZXIgPSBuZXcgVXNlclZhbHVlKGl0ZW0udmFsdWUuaWQsIGl0ZW0udmFsdWUubmFtZSwgaXRlbS52YWx1ZS5zdXJuYW1lLCBpdGVtLnZhbHVlLmVtYWlsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBVc2VyRmllbGQoaXRlbS5zdHJpbmdJZCwgaXRlbS5uYW1lLCBpdGVtLmJlaGF2aW9yLCB1c2VyLFxuICAgICAgICAgICAgICAgICAgICBpdGVtLnJvbGVzLCBpdGVtLnBsYWNlaG9sZGVyLCBpdGVtLmRlc2NyaXB0aW9uLCBpdGVtLmxheW91dCwgaXRlbS52YWxpZGF0aW9ucywgaXRlbS5jb21wb25lbnQsIGl0ZW0ucGFyZW50VGFza0lkKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlUmVzb3VyY2UuVVNFUl9MSVNUOlxuICAgICAgICAgICAgICAgIGxldCB1c2VyTGlzdFZhbHVlID0gbmV3IFVzZXJMaXN0VmFsdWUobmV3IE1hcDxzdHJpbmcsIFVzZXJWYWx1ZT4oKSk7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0udmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS52YWx1ZS51c2VyVmFsdWVzLmZvckVhY2godSA9PiB1c2VyTGlzdFZhbHVlLmFkZFVzZXJWYWx1ZShuZXcgVXNlclZhbHVlKHUuaWQsIHUubmFtZSwgdS5zdXJuYW1lLCB1LmVtYWlsKSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFVzZXJMaXN0RmllbGQoaXRlbS5zdHJpbmdJZCwgaXRlbS5uYW1lLCBpdGVtLmJlaGF2aW9yLCB1c2VyTGlzdFZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBpdGVtLnJvbGVzLCBpdGVtLnBsYWNlaG9sZGVyLCBpdGVtLmRlc2NyaXB0aW9uLCBpdGVtLmxheW91dCwgaXRlbS52YWxpZGF0aW9ucywgaXRlbS5jb21wb25lbnQsIGl0ZW0ucGFyZW50VGFza0lkKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlUmVzb3VyY2UuQlVUVE9OOlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQnV0dG9uRmllbGQoaXRlbS5zdHJpbmdJZCwgaXRlbS5uYW1lLCBpdGVtLmJlaGF2aW9yLCBpdGVtLnZhbHVlIGFzIG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5wbGFjZWhvbGRlciwgaXRlbS5kZXNjcmlwdGlvbiwgaXRlbS5sYXlvdXQsIGl0ZW0udmFsaWRhdGlvbnMsIGl0ZW0uY29tcG9uZW50LCBpdGVtLnBhcmVudFRhc2tJZCk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZVJlc291cmNlLkZJTEU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlRmllbGQoaXRlbS5zdHJpbmdJZCwgaXRlbS5uYW1lLCBpdGVtLmJlaGF2aW9yLCBpdGVtLnZhbHVlID8gaXRlbS52YWx1ZSA6IHt9LFxuICAgICAgICAgICAgICAgICAgICBpdGVtLnBsYWNlaG9sZGVyLCBpdGVtLmRlc2NyaXB0aW9uLCBpdGVtLmxheW91dCwgdGhpcy5yZXNvbHZlQnl0ZVNpemUoaXRlbS5jb21wb25lbnQ/LnByb3BlcnRpZXM/Lm1heFNpemUpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc29sdmVBbGxvd2VkVHlwZXMoaXRlbS5jb21wb25lbnQ/LnByb3BlcnRpZXM/LmFsbG93VHlwZXM/LnNwbGl0KFwiLFwiKSksIGl0ZW0udmFsaWRhdGlvbnMsIGl0ZW0uY29tcG9uZW50LCBpdGVtLnBhcmVudFRhc2tJZCk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZVJlc291cmNlLkZJTEVfTElTVDpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVMaXN0RmllbGQoaXRlbS5zdHJpbmdJZCwgaXRlbS5uYW1lLCBpdGVtLmJlaGF2aW9yLCBpdGVtLnZhbHVlID8gaXRlbS52YWx1ZSA6IHt9LFxuICAgICAgICAgICAgICAgICAgICBpdGVtLnBsYWNlaG9sZGVyLCBpdGVtLmRlc2NyaXB0aW9uLCBpdGVtLmxheW91dCwgaXRlbS52YWxpZGF0aW9ucywgdGhpcy5yZXNvbHZlQnl0ZVNpemUoaXRlbS5jb21wb25lbnQ/LnByb3BlcnRpZXM/Lm1heFNpemUpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc29sdmVBbGxvd2VkVHlwZXMoaXRlbS5jb21wb25lbnQ/LnByb3BlcnRpZXM/LmFsbG93VHlwZXM/LnNwbGl0KFwiLFwiKSksIGl0ZW0uY29tcG9uZW50LFxuICAgICAgICAgICAgICAgICAgICBpdGVtLnBhcmVudFRhc2tJZCk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZVJlc291cmNlLlRBU0tfUkVGOlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgVGFza1JlZkZpZWxkKGl0ZW0uc3RyaW5nSWQsIGl0ZW0ubmFtZSwgaXRlbS52YWx1ZSA/IGl0ZW0udmFsdWUgOiBbXSwgaXRlbS5iZWhhdmlvcixcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5wbGFjZWhvbGRlciwgaXRlbS5kZXNjcmlwdGlvbiwgaXRlbS5sYXlvdXQsIGl0ZW0udmFsaWRhdGlvbnMsIGl0ZW0uY29tcG9uZW50LCBpdGVtLnBhcmVudFRhc2tJZCk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZVJlc291cmNlLkNBU0VfUkVGOlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ2FzZVJlZkZpZWxkKGl0ZW0uc3RyaW5nSWQsIGl0ZW0ubmFtZSwgaXRlbS52YWx1ZSA/IGl0ZW0udmFsdWUgOiBbXSwgaXRlbS5iZWhhdmlvcixcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5wbGFjZWhvbGRlciwgaXRlbS5kZXNjcmlwdGlvbiwgaXRlbS5sYXlvdXQsIGl0ZW0udmFsaWRhdGlvbnMsIGl0ZW0uY29tcG9uZW50LCBpdGVtLnBhcmVudFRhc2tJZCk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZVJlc291cmNlLkZJTFRFUjpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbHRlckZpZWxkKGl0ZW0uc3RyaW5nSWQsIGl0ZW0ubmFtZSwgaXRlbS52YWx1ZSA/PyAnJywgaXRlbS5maWx0ZXJNZXRhZGF0YSwgaXRlbS5hbGxvd2VkTmV0cyxcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5iZWhhdmlvciwgaXRlbS5wbGFjZWhvbGRlciwgaXRlbS5kZXNjcmlwdGlvbiwgaXRlbS5sYXlvdXQsIGl0ZW0udmFsaWRhdGlvbnMsIGl0ZW0uY29tcG9uZW50LCBpdGVtLnBhcmVudFRhc2tJZCk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZVJlc291cmNlLkkxOE46XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBJMThuRmllbGQoaXRlbS5zdHJpbmdJZCwgaXRlbS5uYW1lLCBpdGVtLnZhbHVlID8/IHtkZWZhdWx0VmFsdWU6ICcnfSwgaXRlbS5iZWhhdmlvciwgaXRlbS5wbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5kZXNjcmlwdGlvbiwgaXRlbS5sYXlvdXQsIGl0ZW0udmFsaWRhdGlvbnMsIGl0ZW0uY29tcG9uZW50KTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlUmVzb3VyY2UuU1RSSU5HX0NPTExFQ1RJT046XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTdHJpbmdDb2xsZWN0aW9uRmllbGQoaXRlbS5zdHJpbmdJZCwgaXRlbS5uYW1lLCBpdGVtLnZhbHVlID8gaXRlbS52YWx1ZSA6IFtdLCBpdGVtLmJlaGF2aW9yLFxuICAgICAgICAgICAgICAgICAgICBpdGVtLnBsYWNlaG9sZGVyLCBpdGVtLmRlc2NyaXB0aW9uLCBpdGVtLmxheW91dCwgaXRlbS52YWxpZGF0aW9ucywgaXRlbS5jb21wb25lbnQsIGl0ZW0ucGFyZW50VGFza0lkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZXNvbHZlVHlwZShpdGVtOiBEYXRhRmllbGQ8YW55Pik6IEZpZWxkVHlwZVJlc291cmNlIHtcbiAgICAgICAgaWYgKGl0ZW0gaW5zdGFuY2VvZiBCb29sZWFuRmllbGQpIHtcbiAgICAgICAgICAgIHJldHVybiBGaWVsZFR5cGVSZXNvdXJjZS5CT09MRUFOO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gaW5zdGFuY2VvZiBCdXR0b25GaWVsZCkge1xuICAgICAgICAgICAgcmV0dXJuIEZpZWxkVHlwZVJlc291cmNlLkJVVFRPTjtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtIGluc3RhbmNlb2YgVGV4dEZpZWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gRmllbGRUeXBlUmVzb3VyY2UuVEVYVDtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtIGluc3RhbmNlb2YgTnVtYmVyRmllbGQpIHtcbiAgICAgICAgICAgIHJldHVybiBGaWVsZFR5cGVSZXNvdXJjZS5OVU1CRVI7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbSBpbnN0YW5jZW9mIERhdGVGaWVsZCkge1xuICAgICAgICAgICAgcmV0dXJuIEZpZWxkVHlwZVJlc291cmNlLkRBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbSBpbnN0YW5jZW9mIERhdGVUaW1lRmllbGQpIHtcbiAgICAgICAgICAgIHJldHVybiBGaWVsZFR5cGVSZXNvdXJjZS5EQVRFX1RJTUU7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbSBpbnN0YW5jZW9mIEZpbGVGaWVsZCkge1xuICAgICAgICAgICAgcmV0dXJuIEZpZWxkVHlwZVJlc291cmNlLkZJTEU7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbSBpbnN0YW5jZW9mIEZpbGVMaXN0RmllbGQpIHtcbiAgICAgICAgICAgIHJldHVybiBGaWVsZFR5cGVSZXNvdXJjZS5GSUxFX0xJU1Q7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbSBpbnN0YW5jZW9mIFVzZXJGaWVsZCkge1xuICAgICAgICAgICAgcmV0dXJuIEZpZWxkVHlwZVJlc291cmNlLlVTRVI7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbSBpbnN0YW5jZW9mIFVzZXJMaXN0RmllbGQpIHtcbiAgICAgICAgICAgIHJldHVybiBGaWVsZFR5cGVSZXNvdXJjZS5VU0VSX0xJU1Q7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbSBpbnN0YW5jZW9mIFRhc2tSZWZGaWVsZCkge1xuICAgICAgICAgICAgcmV0dXJuIEZpZWxkVHlwZVJlc291cmNlLlRBU0tfUkVGO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gaW5zdGFuY2VvZiBFbnVtZXJhdGlvbkZpZWxkIHx8IGl0ZW0gaW5zdGFuY2VvZiBNdWx0aWNob2ljZUZpZWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbS5maWVsZFR5cGU7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbSBpbnN0YW5jZW9mIEZpbHRlckZpZWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gRmllbGRUeXBlUmVzb3VyY2UuRklMVEVSO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gaW5zdGFuY2VvZiBJMThuRmllbGQpIHtcbiAgICAgICAgICAgIHJldHVybiBGaWVsZFR5cGVSZXNvdXJjZS5JMThOO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gaW5zdGFuY2VvZiBDYXNlUmVmRmllbGQpIHtcbiAgICAgICAgICAgIHJldHVybiBGaWVsZFR5cGVSZXNvdXJjZS5DQVNFX1JFRjtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtIGluc3RhbmNlb2YgU3RyaW5nQ29sbGVjdGlvbkZpZWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gRmllbGRUeXBlUmVzb3VyY2UuU1RSSU5HX0NPTExFQ1RJT047XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZm9ybWF0VmFsdWVGb3JCYWNrZW5kKGZpZWxkOiBEYXRhRmllbGQ8YW55PiwgdmFsdWU6IGFueSk6IGFueSB7XG4gICAgICAgIGlmICh0aGlzLnJlc29sdmVUeXBlKGZpZWxkKSA9PT0gRmllbGRUeXBlUmVzb3VyY2UuVEVYVCAmJiB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucmVzb2x2ZVR5cGUoZmllbGQpID09PSBGaWVsZFR5cGVSZXNvdXJjZS5URVhUICYmIGZpZWxkLmNvbXBvbmVudCAmJiBmaWVsZC5jb21wb25lbnQubmFtZSA9PT0gJ3Bhc3N3b3JkJykge1xuICAgICAgICAgICAgcmV0dXJuIGVuY29kZUJhc2U2NCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJlc29sdmVUeXBlKGZpZWxkKSA9PT0gRmllbGRUeXBlUmVzb3VyY2UuREFURSkge1xuICAgICAgICAgICAgaWYgKG1vbWVudC5pc01vbWVudCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUuZm9ybWF0KCdZWVlZLU1NLUREJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucmVzb2x2ZVR5cGUoZmllbGQpID09PSBGaWVsZFR5cGVSZXNvdXJjZS5VU0VSKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUuaWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucmVzb2x2ZVR5cGUoZmllbGQpID09PSBGaWVsZFR5cGVSZXNvdXJjZS5VU0VSX0xJU1QpIHtcbiAgICAgICAgICAgIHJldHVybiBbLi4udmFsdWUudXNlclZhbHVlcy5rZXlzKCldO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJlc29sdmVUeXBlKGZpZWxkKSA9PT0gRmllbGRUeXBlUmVzb3VyY2UuREFURV9USU1FKSB7XG4gICAgICAgICAgICBpZiAobW9tZW50LmlzTW9tZW50KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5mb3JtYXQoJ0RELk1NLllZWVkgSEg6bW06c3MnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlc29sdmVOdW1iZXJDb21wb25lbnQobnVtYmVyRmllbGQ6IERhdGFGaWVsZFJlc291cmNlKTogQ29tcG9uZW50IHtcbiAgICAgICAgbGV0IG51bWJlckNvbXBvbmVudCA9IHtuYW1lOiAnZGVmYXVsdCcsIHByb3BlcnRpZXM6IHVuZGVmaW5lZH07XG4gICAgICAgIGlmIChudW1iZXJGaWVsZC5jb21wb25lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbnVtYmVyQ29tcG9uZW50ID0ge1xuICAgICAgICAgICAgICAgIG5hbWU6IG51bWJlckZpZWxkLmNvbXBvbmVudC5uYW1lLFxuICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IG51bWJlckZpZWxkLmNvbXBvbmVudC5wcm9wZXJ0aWVzXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudW1iZXJDb21wb25lbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVzb2x2ZXMgYGVudW1lcmF0aW9uYCBhbmQgYGV1bnVtZXJhdGlvbl9tYXBgIGZpZWxkcyBpbnRvIHRoZWlyIGFwcHJvcHJpYXRlIGNsYXNzIGluc3RhbmNlc1xuICAgICAqIEBwYXJhbSBlbnVtRmllbGQgZW51bWVyYXRpb24gZmllbGQgcmVzb3VyY2VcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVzb2x2ZUVudW1GaWVsZChlbnVtRmllbGQ6IERhdGFGaWVsZFJlc291cmNlKTogRW51bWVyYXRpb25GaWVsZCB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSBlbnVtRmllbGQudHlwZSA9PT0gRmllbGRUeXBlUmVzb3VyY2UuRU5VTUVSQVRJT05cbiAgICAgICAgICAgID8gdGhpcy5yZXNvbHZlRW51bUNob2ljZXMoZW51bUZpZWxkKVxuICAgICAgICAgICAgOiB0aGlzLnJlc29sdmVFbnVtT3B0aW9ucyhlbnVtRmllbGQpO1xuICAgICAgICBpZiAoZW51bUZpZWxkLmNvbXBvbmVudCAmJiBlbnVtRmllbGQuY29tcG9uZW50Lm5hbWUgPT09ICdhdXRvY29tcGxldGVfZHluYW1pYycpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRHluYW1pY0VudW1lcmF0aW9uRmllbGQoZW51bUZpZWxkLnN0cmluZ0lkLCBlbnVtRmllbGQubmFtZSwgZW51bUZpZWxkLnZhbHVlLCBvcHRpb25zLFxuICAgICAgICAgICAgICAgIGVudW1GaWVsZC5iZWhhdmlvciwgZW51bUZpZWxkLnBsYWNlaG9sZGVyLCBlbnVtRmllbGQuZGVzY3JpcHRpb24sIGVudW1GaWVsZC5sYXlvdXQsXG4gICAgICAgICAgICAgICAgZW51bUZpZWxkLnR5cGUsIGVudW1GaWVsZC52YWxpZGF0aW9ucywgZW51bUZpZWxkLmNvbXBvbmVudCwgZW51bUZpZWxkLnBhcmVudFRhc2tJZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEVudW1lcmF0aW9uRmllbGQoZW51bUZpZWxkLnN0cmluZ0lkLCBlbnVtRmllbGQubmFtZSwgZW51bUZpZWxkLnZhbHVlLCBvcHRpb25zLFxuICAgICAgICAgICAgICAgIGVudW1GaWVsZC5iZWhhdmlvciwgZW51bUZpZWxkLnBsYWNlaG9sZGVyLCBlbnVtRmllbGQuZGVzY3JpcHRpb24sIGVudW1GaWVsZC5sYXlvdXQsXG4gICAgICAgICAgICAgICAgZW51bUZpZWxkLnR5cGUsIGVudW1GaWVsZC52YWxpZGF0aW9ucywgZW51bUZpZWxkLmNvbXBvbmVudCwgZW51bUZpZWxkLnBhcmVudFRhc2tJZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcGFyc2UgZW51bWVyYXRpb24gb3B0aW9ucyBmcm9tIHRoZSBgY2hvaWNlc2AgYXR0cmlidXRlXG4gICAgICogQHBhcmFtIGVudW1GaWVsZCBlbnVtZXJhdGlvbiBmaWVsZCByZXNvdXJjZSBvYmplY3Qgd2hvJ3MgY2hvaWNlcyB3ZSB3YW50IHRvIHJlc29sdmVcbiAgICAgKiBAcmV0dXJucyB0aGUgb3B0aW9ucyBmb3IgdGhlIGVudW1lcmF0aW9uIGZpZWxkXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlc29sdmVFbnVtQ2hvaWNlcyhlbnVtRmllbGQ6IERhdGFGaWVsZFJlc291cmNlKTogQXJyYXk8RW51bWVyYXRpb25GaWVsZFZhbHVlPiB7XG4gICAgICAgIGNvbnN0IGVudW1DaG9pY2VzID0gW107XG4gICAgICAgIGlmIChlbnVtRmllbGQuY2hvaWNlcyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICBlbnVtRmllbGQuY2hvaWNlcy5mb3JFYWNoKGl0ID0+IHtcbiAgICAgICAgICAgICAgICBlbnVtQ2hvaWNlcy5wdXNoKHtrZXk6IGl0LCB2YWx1ZTogaXR9IGFzIEVudW1lcmF0aW9uRmllbGRWYWx1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGVudW1GaWVsZC5jaG9pY2VzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICAgICAgZW51bUNob2ljZXMucHVzaCh7a2V5LCB2YWx1ZTogZW51bUZpZWxkLmNob2ljZXNba2V5XX0gYXMgRW51bWVyYXRpb25GaWVsZFZhbHVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbnVtQ2hvaWNlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcGFyc2UgZW51bWVyYXRpb24gb3B0aW9ucyBmcm9tIHRoZSBgb3B0aW9uc2AgYXR0cmlidXRlXG4gICAgICogQHBhcmFtIGVudW1GaWVsZCBlbnVtZXJhdGlvbiBmaWVsZCByZXNvdXJjZSBvYmplY3Qgd2hvJ3Mgb3B0aW9ucyB3ZSB3YW50IHRvIHJlc29sdmVcbiAgICAgKiBAcmV0dXJucyB0aGUgb3B0aW9ucyBmb3IgdGhlIGVudW1lcmF0aW9uIGZpZWxkXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlc29sdmVFbnVtT3B0aW9ucyhlbnVtRmllbGQ6IERhdGFGaWVsZFJlc291cmNlKTogQXJyYXk8RW51bWVyYXRpb25GaWVsZFZhbHVlPiB7XG4gICAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyhlbnVtRmllbGQub3B0aW9ucykubWFwKGVudHJ5ID0+ICh7a2V5OiBlbnRyeVswXSwgdmFsdWU6IGVudHJ5WzFdfSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBwYXJzZSBtdWx0aWNob2ljZSBvcHRpb25zIGZyb20gdGhlIGBjaG9pY2VzYCBhdHRyaWJ1dGVcbiAgICAgKiBAcGFyYW0gbXVsdGlGaWVsZCBtdWx0aWNob2ljZSBmaWVsZCByZXNvdXJjZSBvYmplY3Qgd2hvJ3Mgb3B0aW9ucyB3ZSB3YW50IHRvIHJlc29sdmVcbiAgICAgKiBAcmV0dXJucyB0aGUgb3B0aW9ucyBmb3IgdGhlIG11bHRpY2hvaWNlIGZpZWxkXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlc29sdmVNdWx0aWNob2ljZUNob2ljZXMobXVsdGlGaWVsZDogRGF0YUZpZWxkUmVzb3VyY2UpOiBBcnJheTxNdWx0aWNob2ljZUZpZWxkVmFsdWU+IHtcbiAgICAgICAgY29uc3QgY2hvaWNlc011bHRpOiBBcnJheTxNdWx0aWNob2ljZUZpZWxkVmFsdWU+ID0gW107XG4gICAgICAgIGlmIChtdWx0aUZpZWxkLmNob2ljZXMgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgbXVsdGlGaWVsZC5jaG9pY2VzLmZvckVhY2goaXQgPT4ge1xuICAgICAgICAgICAgICAgIGNob2ljZXNNdWx0aS5wdXNoKHtrZXk6IGl0LCB2YWx1ZTogaXR9IGFzIE11bHRpY2hvaWNlRmllbGRWYWx1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKG11bHRpRmllbGQuY2hvaWNlcykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgICAgIGNob2ljZXNNdWx0aS5wdXNoKHtrZXksIHZhbHVlOiBtdWx0aUZpZWxkLmNob2ljZXNba2V5XX0gYXMgTXVsdGljaG9pY2VGaWVsZFZhbHVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjaG9pY2VzTXVsdGk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHBhcnNlIGVudW1lcmF0aW9uIG9wdGlvbnMgZnJvbSB0aGUgYG9wdGlvbnNgIGF0dHJpYnV0ZVxuICAgICAqIEBwYXJhbSBtdWx0aUZpZWxkIG11bHRpY2hvaWNlIGZpZWxkIHJlc291cmNlIG9iamVjdCB3aG8ncyBvcHRpb25zIHdlIHdhbnQgdG8gcmVzb2x2ZVxuICAgICAqIEByZXR1cm5zIHRoZSBvcHRpb25zIGZvciB0aGUgbXVsdGljaG9pY2UgZmllbGRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVzb2x2ZU11bHRpY2hvaWNlT3B0aW9ucyhtdWx0aUZpZWxkOiBEYXRhRmllbGRSZXNvdXJjZSk6IEFycmF5PE11bHRpY2hvaWNlRmllbGRWYWx1ZT4ge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMobXVsdGlGaWVsZC5vcHRpb25zKS5tYXAoZW50cnkgPT4gKHtrZXk6IGVudHJ5WzBdLCB2YWx1ZTogZW50cnlbMV19KSk7XG4gICAgfVxuXG4gICAgcHVibGljIGZvcm1hdFZhbHVlRnJvbUJhY2tlbmQoZmllbGQ6IERhdGFGaWVsZDxhbnk+LCB2YWx1ZTogYW55KTogYW55IHtcbiAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJlc29sdmVUeXBlKGZpZWxkKSA9PT0gRmllbGRUeXBlUmVzb3VyY2UuVEVYVCAmJiBmaWVsZC5jb21wb25lbnQgJiYgZmllbGQuY29tcG9uZW50Lm5hbWUgPT09ICdwYXNzd29yZCcpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWNvZGVCYXNlNjQodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJlc29sdmVUeXBlKGZpZWxkKSA9PT0gRmllbGRUeXBlUmVzb3VyY2UuREFURSkge1xuICAgICAgICAgICAgcmV0dXJuIG1vbWVudChuZXcgRGF0ZSh2YWx1ZVswXSwgdmFsdWVbMV0gLSAxLCB2YWx1ZVsyXSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJlc29sdmVUeXBlKGZpZWxkKSA9PT0gRmllbGRUeXBlUmVzb3VyY2UuVVNFUikge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBVc2VyVmFsdWUodmFsdWUuaWQsIHZhbHVlLm5hbWUsIHZhbHVlLnN1cm5hbWUsIHZhbHVlLmVtYWlsKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yZXNvbHZlVHlwZShmaWVsZCkgPT09IEZpZWxkVHlwZVJlc291cmNlLkRBVEVfVElNRSkge1xuICAgICAgICAgICAgcmV0dXJuIG1vbWVudChuZXcgRGF0ZSh2YWx1ZVswXSwgdmFsdWVbMV0gLSAxLCB2YWx1ZVsyXSwgdmFsdWVbM10sIHZhbHVlWzRdKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucmVzb2x2ZVR5cGUoZmllbGQpID09PSBGaWVsZFR5cGVSZXNvdXJjZS5NVUxUSUNIT0lDRSkge1xuICAgICAgICAgICAgY29uc3QgYXJyYXkgPSBbXTtcbiAgICAgICAgICAgIHZhbHVlLmZvckVhY2godiA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHYuZGVmYXVsdFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGFycmF5LnB1c2godi5kZWZhdWx0VmFsdWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGFycmF5LnB1c2godik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gYXJyYXk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucmVzb2x2ZVR5cGUoZmllbGQpID09PSBGaWVsZFR5cGVSZXNvdXJjZS5VU0VSX0xJU1QgJiYgISF2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBVc2VyTGlzdFZhbHVlKG5ldyBNYXAodmFsdWUudXNlclZhbHVlcy5tYXAodiA9PiBbdi5pZCwgdl0pKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCByZXNvbHZlVGV4dFZhbHVlKGZpZWxkOiBEYXRhRmllbGRSZXNvdXJjZSwgdmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmIChmaWVsZC5jb21wb25lbnQgIT09IHVuZGVmaW5lZCAmJiBmaWVsZC5jb21wb25lbnQubmFtZSA9PT0gJ3Bhc3N3b3JkJyAmJiB2YWx1ZSAhPT0gJycgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGRlY29kZUJhc2U2NCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCByZXNvbHZlQWxsb3dlZFR5cGVzKGFsbG93VHlwZXM6IHN0cmluZ1tdKSB7XG4gICAgICAgIHJldHVybiBhbGxvd1R5cGVzPy5sZW5ndGggPiAwID8gKGFsbG93VHlwZXMubGVuZ3RoID4gMSA/IGFsbG93VHlwZXMgYXMgRmlsZVVwbG9hZE1JTUVUeXBlW10gOiBhbGxvd1R5cGVzWzBdKSA6IG51bGxcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVzb2x2ZUJ5dGVTaXplKGJ5dGVzU2l6ZSkge1xuICAgICAgICByZXR1cm4gYnl0ZXNTaXplICE9PSB1bmRlZmluZWQgPyBieXRlc1NpemUgOiBudWxsO1xuICAgIH1cbn1cbiJdfQ==
@@ -246,11 +246,11 @@ export class TaskContentService {
246
246
  }
247
247
  getReferencedTaskId(changedField, chFields) {
248
248
  return !!this.taskFieldsIndex ?
249
- (Object.keys(this.taskFieldsIndex).find(taskId => taskId !== this.task.stringId && taskId === chFields.taskId && Object.keys(this.taskFieldsIndex[taskId].fields).includes(changedField))
250
- || Object.keys(this.taskFieldsIndex).find(taskId => taskId !== this.task.stringId && Object.keys(this.taskFieldsIndex[taskId].fields).includes(changedField))) : undefined;
249
+ (Object.keys(this.taskFieldsIndex).find(taskId => taskId !== this.task.stringId && taskId === chFields.taskId && Object.keys(this.taskFieldsIndex[taskId].fields)?.includes(changedField))
250
+ || Object.keys(this.taskFieldsIndex).find(taskId => taskId !== this.task.stringId && Object.keys(this.taskFieldsIndex[taskId].fields)?.includes(changedField))) : undefined;
251
251
  }
252
252
  findTaskRefId(taskId, fields) {
253
- let taskRefId = Object.values(fields).find(f => f instanceof TaskRefField && f.value.includes(taskId));
253
+ let taskRefId = Object.values(fields).find(f => f instanceof TaskRefField && f.value?.includes(taskId));
254
254
  if (!taskRefId) {
255
255
  const referencedTaskIds = Object.values(fields).filter(f => f instanceof TaskRefField).map(tr => tr.value);
256
256
  referencedTaskIds.forEach(id => {
@@ -270,4 +270,4 @@ TaskContentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", v
270
270
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TaskContentService, decorators: [{
271
271
  type: Injectable
272
272
  }], ctorParameters: function () { return [{ type: i1.FieldConverterService }, { type: i2.SnackBarService }, { type: i3.TranslateService }, { type: i4.LoggerService }]; } });
273
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1jb250ZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL3Rhc2stY29udGVudC9zZXJ2aWNlcy90YXNrLWNvbnRlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBRXBELE9BQU8sRUFBQyxlQUFlLEVBQWMsYUFBYSxFQUFFLE9BQU8sRUFBUSxNQUFNLE1BQU0sQ0FBQztBQVNoRixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxzRUFBc0UsQ0FBQztBQUs3RyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sdURBQXVELENBQUM7Ozs7OztBQUVuRjs7Ozs7OztHQU9HO0FBRUgsTUFBTSxPQUFnQixrQkFBa0I7SUFlcEMsWUFBZ0Msc0JBQTZDLEVBQzdDLGdCQUFpQyxFQUNqQyxVQUE0QixFQUM1QixPQUFzQjtRQUh0QiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXVCO1FBQzdDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFDakMsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFDNUIsWUFBTyxHQUFQLE9BQU8sQ0FBZTtRQVI1QyxxQkFBZ0IsR0FFdEIsRUFBRSxDQUFDO1FBQ0csOEJBQXlCLEdBQXdDLEVBQUUsQ0FBQztRQU0xRSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksYUFBYSxDQUFtQixDQUFDLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMs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dkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgT25EZXN0cm95fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RGF0YUdyb3VwfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvaW50ZXJmYWNlL2RhdGEtZ3JvdXBzJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0LCB0aW1lcn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1Rhc2t9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvdGFzayc7XG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gJy4uLy4uL2xvZ2dlci9zZXJ2aWNlcy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQge1NuYWNrQmFyU2VydmljZX0gZnJvbSAnLi4vLi4vc25hY2stYmFyL3NlcnZpY2VzL3NuYWNrLWJhci5zZXJ2aWNlJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0VudW1lcmF0aW9uRmllbGQsIEVudW1lcmF0aW9uRmllbGRWYWx1ZX0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvZW51bWVyYXRpb24tZmllbGQvbW9kZWxzL2VudW1lcmF0aW9uLWZpZWxkJztcbmltcG9ydCB7TXVsdGljaG9pY2VGaWVsZH0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvbXVsdGljaG9pY2UtZmllbGQvbW9kZWxzL211bHRpY2hvaWNlLWZpZWxkJztcbmltcG9ydCB7Q2hhbmdlLCBDaGFuZ2VkRmllbGRzfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy9tb2RlbHMvY2hhbmdlZC1maWVsZHMnO1xuaW1wb3J0IHtGaWVsZENvbnZlcnRlclNlcnZpY2V9IGZyb20gJy4vZmllbGQtY29udmVydGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtGaWVsZFR5cGVSZXNvdXJjZX0gZnJvbSAnLi4vbW9kZWwvZmllbGQtdHlwZS1yZXNvdXJjZSc7XG5pbXBvcnQge0R5bmFtaWNFbnVtZXJhdGlvbkZpZWxkfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy9lbnVtZXJhdGlvbi1maWVsZC9tb2RlbHMvZHluYW1pYy1lbnVtZXJhdGlvbi1maWVsZCc7XG5pbXBvcnQge1ZhbGlkYXRpb259IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL21vZGVscy92YWxpZGF0aW9uJztcbmltcG9ydCB7VGFza0V2ZW50T3V0Y29tZX0gZnJvbSAnLi4vLi4vZXZlbnQvbW9kZWwvZXZlbnQtb3V0Y29tZXMvdGFzay1vdXRjb21lcy90YXNrLWV2ZW50LW91dGNvbWUnO1xuaW1wb3J0IHtEYXRhRmllbGR9IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL21vZGVscy9hYnN0cmFjdC1kYXRhLWZpZWxkJztcbmltcG9ydCB7VGFza0ZpZWxkc30gZnJvbSAnLi4vbW9kZWwvdGFzay1maWVsZHMnO1xuaW1wb3J0IHtUYXNrUmVmRmllbGR9IGZyb20gXCIuLi8uLi9kYXRhLWZpZWxkcy90YXNrLXJlZi1maWVsZC9tb2RlbC90YXNrLXJlZi1maWVsZFwiO1xuXG4vKipcbiAqIEFjdHMgYXMgYSBjb21tdW5pY2F0aW9uIGludGVyZmFjZSBiZXR3ZWVuIHRoZSBDb21wb25lbnQgdGhhdCByZW5kZXJzIFRhc2sgY29udGVudCBhbmQgaXQncyBwYXJlbnQgQ29tcG9uZW50LlxuICogQWxzbyBwcm92aWRlcyBzb21lIGdlbmVyYWwgZnVuY3Rpb25hbGl0eSB0aGF0IGlzIG5lZWRlZCB3aGVuIHdvcmtpbmcgd2l0aCB0YXNrIGNvbnRlbnQuXG4gKlxuICogTm90YWJsZSBleGFtcGxlIG9mIGEgcGFyZW50IENvbXBvbmVudCBpcyB0aGUge0BsaW5rIEFic3RyYWN0VGFza1BhbmVsQ29tcG9uZW50fS5cbiAqXG4gKiBOb3RhYmxlIGV4YW1wbGUgb2YgYSB0YXNrIGNvbnRlbnQgcmVuZGVyZXIgaXMgdGhlIHtAbGluayBBYnN0cmFjdFRhc2tDb250ZW50Q29tcG9uZW50fS5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRhc2tDb250ZW50U2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEZST05URU5EX0FDVElPTlNfS0VZID0gJ19mcm9udGVuZF9hY3Rpb25zJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFDVElPTiA9ICdhY3Rpb24nO1xuXG4gICAgJHNob3VsZENyZWF0ZTogUmVwbGF5U3ViamVjdDxBcnJheTxEYXRhR3JvdXA+PjtcbiAgICAkc2hvdWxkQ3JlYXRlQ291bnRlcjogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj47XG4gICAgcHJvdGVjdGVkIF90YXNrOiBUYXNrO1xuICAgIHByb3RlY3RlZCBfdGFza0RhdGFSZWxvYWRSZXF1ZXN0JDogU3ViamVjdDxDaGFuZ2U+O1xuICAgIHByb3RlY3RlZCBfaXNFeHBhbmRpbmckOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj47XG4gICAgcHJvdGVjdGVkIF90YXNrRmllbGRzSW5kZXg6IHtcbiAgICAgICAgW3Rhc2tJZDogc3RyaW5nXTogVGFza0ZpZWxkc1xuICAgIH0gPSB7fTtcbiAgICBwcm90ZWN0ZWQgX3JlZmVyZW5jZWRUYXNrQW5kQ2FzZUlkczogeyBbY2FzZUlkOiBzdHJpbmddOiBBcnJheTxzdHJpbmc+IH0gPSB7fTtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX2ZpZWxkQ29udmVydGVyU2VydmljZTogRmllbGRDb252ZXJ0ZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3NuYWNrQmFyU2VydmljZTogU25hY2tCYXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9sb2dnZXI6IExvZ2dlclNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy4kc2hvdWxkQ3JlYXRlID0gbmV3IFJlcGxheVN1YmplY3Q8QXJyYXk8RGF0YUdyb3VwPj4oMSk7XG4gICAgICAgIHRoaXMuJHNob3VsZENyZWF0ZUNvdW50ZXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG4gICAgICAgIHRoaXMuX2lzRXhwYW5kaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgICAgICB0aGlzLl90YXNrID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLl90YXNrRGF0YVJlbG9hZFJlcXVlc3QkID0gbmV3IFN1YmplY3Q8Q2hhbmdlPigpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuJHNob3VsZENyZWF0ZS5jbG9zZWQpIHtcbiAgICAgICAgICAgIHRoaXMuJHNob3VsZENyZWF0ZS5jb21wbGV0ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3Rhc2tEYXRhUmVsb2FkUmVxdWVzdCQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5faXNFeHBhbmRpbmckLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgdGhlIFRhc2sgb2JqZWN0IGlmIHNldCBhbmQgYHVuZGVmaW5lZGAgb3RoZXJ3aXNlXG4gICAgICovXG4gICAgcHVibGljIGFic3RyYWN0IGdldCB0YXNrKCk6IFRhc2sgfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBTZXR0aW5nIGEgVGFzayBhbHNvIGVtaXRzIGl0IGludG8gdGhlIHN0cmVhbSBhY2Nlc3NpYmxlIGJ5IHRoZSBbdGFzayRde0BsaW5rIFRhc2tDb250ZW50U2VydmljZSN0YXNrJH0gZ2V0dGVyIG1ldGhvZC5cbiAgICAgKiBAcGFyYW0gdGFzayB0aGUgVGFzayB0aGF0IG93bnMgdGhlIGNvbnRlbnQgbWFuYWdlZCBieSB0aGlzIHNlcnZpY2VcbiAgICAgKi9cbiAgICBwdWJsaWMgYWJzdHJhY3Qgc2V0IHRhc2sodGFzazogVGFzayk7XG5cbiAgICAvKipcbiAgICAgKiBTdHJlYW0gcmV0dXJucyBhIHtAbGluayBUYXNrfSBvYmplY3QgZXZlcnkgdGltZSB0aGlzIG9iamVjdCBpcyBzZXQuXG4gICAgICpcbiAgICAgKiBVc2UgW3Rhc2tde0BsaW5rIFRhc2tDb250ZW50U2VydmljZSN0YXNrfSBzZXR0ZXIgbWV0aG9kIHRvIHNldCB0aGUgVGFzay5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0IHRhc2skKCk6IE9ic2VydmFibGU8VGFzaz47XG5cbiAgICAvKipcbiAgICAgKiBTdHJlYW0gdGhhdCBlbWl0cyBldmVyeSB0aW1lIGEgZGF0YSByZWxvYWQgaXMgcmVxdWVzdGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdGFza0RhdGFSZWxvYWRSZXF1ZXN0JCgpOiBPYnNlcnZhYmxlPENoYW5nZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFza0RhdGFSZWxvYWRSZXF1ZXN0JC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cblxuICAgIGdldCB0YXNrRmllbGRzSW5kZXgoKTogeyBbcDogc3RyaW5nXTogVGFza0ZpZWxkcyB9IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Rhc2tGaWVsZHNJbmRleDtcbiAgICB9XG5cbiAgICBzZXQgdGFza0ZpZWxkc0luZGV4KHZhbHVlOiB7IFtwOiBzdHJpbmddOiBUYXNrRmllbGRzIH0pIHtcbiAgICAgICAgdGhpcy5fdGFza0ZpZWxkc0luZGV4ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IHJlZmVyZW5jZWRUYXNrQW5kQ2FzZUlkcygpOiB7IFtwOiBzdHJpbmddOiBBcnJheTxzdHJpbmc+IH0ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVmZXJlbmNlZFRhc2tBbmRDYXNlSWRzO1xuICAgIH1cblxuICAgIHNldCByZWZlcmVuY2VkVGFza0FuZENhc2VJZHModmFsdWU6IHsgW3A6IHN0cmluZ106IEFycmF5PHN0cmluZz4gfSkge1xuICAgICAgICB0aGlzLl9yZWZlcmVuY2VkVGFza0FuZENhc2VJZHMgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBwYW5lbCB0aGF0IHRoZSB0YXNrIGNvbnRlbnQgaXMgY29udGFpbmVkIGluIGlzIGN1cnJlbnRseSBleHBhbmRpbmcuXG4gICAgICpcbiAgICAgKiBJZiB0aGUgdGFzayBjb250ZW50IGlzIG5vdCBjb250YWluZWQgaW4gYSBwYW5lbCwgYGlzRXhwYW5kaW5nYCB3aWxsIGJlIGFsd2F5cyBgZmFsc2VgLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaXNFeHBhbmRpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0V4cGFuZGluZyQudmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hhbmdlcyB0aGUgc3RhdGUgb2YgdGhlIHRhc2sgY29udGVudCB0byBgZXhwYW5kaW5nYC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZXhwYW5zaW9uU3RhcnRlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXNFeHBhbmRpbmckLm5leHQodHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hhbmdlcyB0aGUgc3RhdGUgb2YgdGhlIHRhc2sgY29udGVudCB0byBgbm90IGV4cGFuZGluZ2AuXG4gICAgICovXG4gICAgcHVibGljIGV4cGFuc2lvbkZpbmlzaGVkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pc0V4cGFuZGluZyQubmV4dChmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIHRoZSB2YWxpZGl0eSBvZiBhbGwgZGF0YSBmaWVsZHMgaW4gdGhlIG1hbmFnZWQge0BsaW5rIFRhc2t9LlxuICAgICAqXG4gICAgICogSWYgc29tZSBvZiB0aGUgZmllbGRzIGFyZSBpbnZhbGlkIHRvdWNoZXMgdGhlbSBzbyB0aGVpciB2YWxpZGF0aW9uIGVycm9ycyB3aWxsIGFwcGVhciAoaWYgc2V0KS5cbiAgICAgKiBBIHNuYWNrYmFyIHdpbGwgYWxzbyBiZSBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIsIGluZm9ybWluZyB0aGVtIG9mIHRoZSBmYWN0IHRoYXQgdGhlIGZpZWxkcyBhcmUgaW52YWxpZC5cbiAgICAgKiBAcmV0dXJucyB3aGV0aGVyIHRoZSB0YXNrIGlzIHZhbGlkIG9yIG5vdFxuICAgICAqL1xuICAgIHB1YmxpYyB2YWxpZGF0ZVRhc2tEYXRhKHRhc2tJZD86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuX3Rhc2sgfHwgIXRoaXMuX3Rhc2suZGF0YUdyb3Vwcykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHZhbGlkID0gIXRoaXMuX3Rhc2suZGF0YUdyb3Vwcy5maWx0ZXIoZ3JvdXAgPT4gISFncm91cC5wYXJlbnRUYXNrSWQgJiYgISF0YXNrSWQgPyBncm91cC5wYXJlbnRUYXNrSWQgPT09IHRhc2tJZCA6IHRydWUpLnNvbWUoZ3JvdXAgPT4gZ3JvdXAuZmllbGRzLnNvbWUoZmllbGQgPT4gIWZpZWxkLnZhbGlkICYmICFmaWVsZC5kaXNhYmxlZCkpO1xuICAgICAgICBjb25zdCB2YWxpZERpc2FibGVkID0gIXRoaXMuX3Rhc2suZGF0YUdyb3Vwcy5maWx0ZXIoZ3JvdXAgPT4gISFncm91cC5wYXJlbnRUYXNrSWQgJiYgISF0YXNrSWQgPyBncm91cC5wYXJlbnRUYXNrSWQgPT09IHRhc2tJZCA6IHRydWUpLnNvbWUoZ3JvdXAgPT4gZ3JvdXAuZmllbGRzLnNvbWUoZmllbGQgPT4gIWZpZWxkLnZhbGlkUmVxdWlyZWQgJiYgZmllbGQuZGlzYWJsZWQpKTtcbiAgICAgICAgaWYgKCF2YWxpZCkge1xuICAgICAgICAgICAgdGhpcy5fc25hY2tCYXJTZXJ2aWNlLm9wZW5FcnJvclNuYWNrQmFyKHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCd0YXNrcy5zbmFja2Jhci5pbnZhbGlkRGF0YScpKTtcbiAgICAgICAgICAgIHRoaXMuX3Rhc2suZGF0YUdyb3Vwcy5mb3JFYWNoKGdyb3VwID0+IGdyb3VwLmZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IGZpZWxkLnRvdWNoID0gdHJ1ZSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdmFsaWREaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5fc25hY2tCYXJTZXJ2aWNlLm9wZW5FcnJvclNuYWNrQmFyKHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCd0YXNrcy5zbmFja2Jhci5taXNzaW5nUmVxdWlyZWQnKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbGlkICYmIHZhbGlkRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgaW52YWxpZCBkYXRhIG9mIHRhc2tcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIGFycmF5IG9mIGludmFsaWQgZGF0YWZpZWxkc1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRJbnZhbGlkVGFza0RhdGEoKTogQXJyYXk8RGF0YUZpZWxkPGFueT4+IHtcbiAgICAgICAgY29uc3QgaW52YWxpZEZpZWxkcyA9IFtdO1xuICAgICAgICB0aGlzLl90YXNrLmRhdGFHcm91cHMuZm9yRWFjaChncm91cCA9PiBpbnZhbGlkRmllbGRzLnB1c2goLi4uZ3JvdXAuZmllbGRzLmZpbHRlcihmaWVsZCA9PlxuICAgICAgICAgICAgKCFmaWVsZC52YWxpZCAmJiAhZmllbGQuZGlzYWJsZWQpIHx8ICghZmllbGQudmFsaWRSZXF1aXJlZCAmJiAhZmllbGQuZGlzYWJsZWQpKSkpO1xuICAgICAgICByZXR1cm4gaW52YWxpZEZpZWxkcztcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsaWRhdGVEeW5hbWljRW51bUZpZWxkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuX3Rhc2sgfHwgIXRoaXMuX3Rhc2suZGF0YUdyb3Vwcykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGV4aXN0cyA9IHRoaXMuX3Rhc2suZGF0YUdyb3Vwcy5zb21lKGdyb3VwID0+IGdyb3VwLmZpZWxkcy5zb21lKGZpZWxkID0+IGZpZWxkIGluc3RhbmNlb2YgRHluYW1pY0VudW1lcmF0aW9uRmllbGQpKTtcbiAgICAgICAgaWYgKCFleGlzdHMpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGxldCB2YWxpZCA9IHRydWU7XG4gICAgICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgdGhpcy5fdGFzay5kYXRhR3JvdXBzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGdyb3VwLmZpZWxkcykge1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZCBpbnN0YW5jZW9mIER5bmFtaWNFbnVtZXJhdGlvbkZpZWxkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZC5jaG9pY2VzICE9PSB1bmRlZmluZWQgJiYgZmllbGQuY2hvaWNlcy5sZW5ndGggIT09IDAgJiYgZmllbGQudmFsdWUgIT09ICcnICYmIGZpZWxkLnZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZmllbGQuY2hvaWNlcy5zb21lKGNob2ljZSA9PiBjaG9pY2Uua2V5ID09PSBmaWVsZC52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZC5iZWhhdmlvci5yZXF1aXJlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIXZhbGlkKSB7XG4gICAgICAgICAgICB0aGlzLl9zbmFja0JhclNlcnZpY2Uub3BlbkVycm9yU25hY2tCYXIodGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ3Rhc2tzLnNuYWNrYmFyLm1pc3NpbmdSZXF1aXJlZCcpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsaWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hhbmdlcyB0aGUgYmxvY2tpbmcgc3RhdGUgb2YgYWxsIGZpZWxkcyBpbiB0aGUgbWFuYWdlZCBUYXNrLlxuICAgICAqIEBwYXJhbSBibG9ja2luZ1N0YXRlIHdoZXRoZXIgdGhlIGZpZWxkIHNob3VsZCBiZSBibG9ja2VkIG9yIG5vdFxuICAgICAqL1xuICAgIHB1YmxpYyBibG9ja0ZpZWxkcyhibG9ja2luZ1N0YXRlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl90YXNrICYmIHRoaXMuX3Rhc2suZGF0YUdyb3Vwcykge1xuICAgICAgICAgICAgdGhpcy5fdGFzay5kYXRhR3JvdXBzLmZvckVhY2goZ3JvdXAgPT4ge1xuICAgICAgICAgICAgICAgIGdyb3VwLmZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZmllbGQuYmxvY2sgPSBibG9ja2luZ1N0YXRlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGVhcnMgdGhlIGFzc2lnbmVlLCBzdGFydCBkYXRlIGFuZCBmaW5pc2ggZGF0ZSBmcm9tIHRoZSBtYW5hZ2VkIFRhc2suXG4gICAgICovXG4gICAgcHVibGljIHVwZGF0ZVN0YXRlRGF0YShldmVudE91dGNvbWU6IFRhc2tFdmVudE91dGNvbWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3Rhc2spIHtcbiAgICAgICAgICAgIHRoaXMuX3Rhc2sudXNlciA9IGV2ZW50T3V0Y29tZS50YXNrLnVzZXI7XG4gICAgICAgICAgICB0aGlzLl90YXNrLnN0YXJ0RGF0ZSA9IGV2ZW50T3V0Y29tZS50YXNrLnN0YXJ0RGF0ZTtcbiAgICAgICAgICAgIHRoaXMuX3Rhc2suZmluaXNoRGF0ZSA9IGV2ZW50T3V0Y29tZS50YXNrLmZpbmlzaERhdGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSBwcm9wZXJ0aWVzIG9mIGZpZWxkcyBpbiB0aGUgbWFuYWdlZCB0YXNrIGJhc2VkIG9uIGEgZGVsdGEgb2YgY2hhbmdlcyBmcm9tIHByZXZpb3VzIHN0YXRlLlxuICAgICAqIEBwYXJhbSBjaEZpZWxkcyBvYmplY3QgY29udGFpbmluZyB0aGUgZGVsdGEgb2YgdGhlIGNoYW5nZXMgZnJvbSB0aGUgcHJldmlvdXMgc3RhdGVcbiAgICAgKi9cbiAgICBwdWJsaWMgdXBkYXRlRnJvbUNoYW5nZWRGaWVsZHMoY2hGaWVsZHM6IENoYW5nZWRGaWVsZHMpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl90YXNrIHx8ICF0aGlzLl90YXNrLmRhdGFHcm91cHMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmcm9udGVuZEFjdGlvbnMgPSBjaEZpZWxkcy50YXNrSWQgPT09IHRoaXMudGFzay5zdHJpbmdJZCAmJiBjaEZpZWxkc1tUYXNrQ29udGVudFNlcnZpY2UuRlJPTlRFTkRfQUNUSU9OU19LRVldO1xuICAgICAgICBPYmplY3Qua2V5cyhjaEZpZWxkcykuZm9yRWFjaChjaGFuZ2VkRmllbGQgPT4ge1xuICAgICAgICAgICAgaWYgKGNoRmllbGRzLnRhc2tJZCA9PT0gdGhpcy5fdGFzay5zdHJpbmdJZCAmJiB0aGlzLmlzRmllbGRJblRhc2soY2hGaWVsZHMudGFza0lkLCBjaGFuZ2VkRmllbGQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVGaWVsZChjaEZpZWxkcywgdGhpcy50YXNrRmllbGRzSW5kZXhbY2hGaWVsZHMudGFza0lkXS5maWVsZHNbY2hhbmdlZEZpZWxkXSwgZnJvbnRlbmRBY3Rpb25zKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoISF0aGlzLmdldFJlZmVyZW5jZWRUYXNrSWQoY2hhbmdlZEZpZWxkLCBjaEZpZWxkcykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUZpZWxkKGNoRmllbGRzLCB0aGlzLnRhc2tGaWVsZHNJbmRleFt0aGlzLmdldFJlZmVyZW5jZWRUYXNrSWQoY2hhbmdlZEZpZWxkLCBjaEZpZWxkcyldLmZpZWxkc1tjaGFuZ2VkRmllbGRdLCBmcm9udGVuZEFjdGlvbnMsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLiRzaG91bGRDcmVhdGUubmV4dCh0aGlzLl90YXNrLmRhdGFHcm91cHMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB1cGRhdGVGaWVsZChjaEZpZWxkczogQ2hhbmdlZEZpZWxkcywgZmllbGQ6IERhdGFGaWVsZDxhbnk+LCBmcm9udGVuZEFjdGlvbnM6IENoYW5nZSwgcmVmZXJlbmNlZDogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9maWVsZENvbnZlcnRlclNlcnZpY2UucmVzb2x2ZVR5cGUoZmllbGQpID09PSBGaWVsZFR5cGVSZXNvdXJjZS5UQVNLX1JFRikge1xuICAgICAgICAgICAgdGhpcy5fdGFza0RhdGFSZWxvYWRSZXF1ZXN0JC5uZXh0KGZyb250ZW5kQWN0aW9ucyA/IGZyb250ZW5kQWN0aW9ucyA6IHVuZGVmaW5lZCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1cGRhdGVkRmllbGQgPSBjaEZpZWxkc1tmaWVsZC5zdHJpbmdJZF07XG4gICAgICAgIE9iamVjdC5rZXlzKHVwZGF0ZWRGaWVsZCkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICd0eXBlJzpcbiAgICAgICAgICAgICAgICAgICAgLy8gdHlwZSBpcyBqdXN0IGFuIGluZm9ybWF0aW9uLCBub3QgYW4gdXBkYXRlLiBBIGZpZWxkIGNhbm5vdCBjaGFuZ2UgaXRzIHR5cGVcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBjb250aW51ZSAtIHRoZSBmaWVsZCBkb2VzIG5vdCBuZWVkIHVwZGF0aW5nLCBzaW5jZSBub3RoaW5nIGNoYW5nZWRcbiAgICAgICAgICAgICAgICBjYXNlICd2YWx1ZSc6XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnZhbHVlV2l0aG91dENoYW5nZSh0aGlzLl9maWVsZENvbnZlcnRlclNlcnZpY2UuZm9ybWF0VmFsdWVGcm9tQmFja2VuZChmaWVsZCwgdXBkYXRlZEZpZWxkW2tleV0pKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnYmVoYXZpb3InOlxuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlZmVyZW5jZWQgJiYgdXBkYXRlZEZpZWxkLmJlaGF2aW9yW3RoaXMuX3Rhc2sudHJhbnNpdGlvbklkXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuYmVoYXZpb3IgPSB1cGRhdGVkRmllbGQuYmVoYXZpb3JbdGhpcy5fdGFzay50cmFuc2l0aW9uSWRdO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlZmVyZW5jZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhc2tJZCA9IHRoaXMuZ2V0UmVmZXJlbmNlZFRhc2tJZChmaWVsZC5zdHJpbmdJZCwgY2hGaWVsZHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFza1JlZiA9IHRoaXMuZmluZFRhc2tSZWZJZCh0YXNrSWQsIHRoaXMudGFza0ZpZWxkc0luZGV4W3RoaXMuX3Rhc2suc3RyaW5nSWRdLmZpZWxkcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0cmFuc2l0aW9uSWQgPSB0aGlzLnRhc2tGaWVsZHNJbmRleFt0YXNrSWRdLnRyYW5zaXRpb25JZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIXRyYW5zaXRpb25JZCAmJiB0cmFuc2l0aW9uSWQgIT09ICcnICYmIHVwZGF0ZWRGaWVsZC5iZWhhdmlvclt0cmFuc2l0aW9uSWRdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmJlaGF2aW9yID0gdGFza1JlZi5iZWhhdmlvci5lZGl0YWJsZSA/IHVwZGF0ZWRGaWVsZC5iZWhhdmlvclt0cmFuc2l0aW9uSWRdIDogdGFza1JlZi5iZWhhdmlvcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdjaG9pY2VzJzpcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3Q2hvaWNlczogQXJyYXk8RW51bWVyYXRpb25GaWVsZFZhbHVlPiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBpZiAodXBkYXRlZEZpZWxkLmNob2ljZXMgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZEZpZWxkLmNob2ljZXMuZm9yRWFjaChpdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Q2hvaWNlcy5wdXNoKHtrZXk6IGl0LCB2YWx1ZTogaXR9IGFzIEVudW1lcmF0aW9uRmllbGRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHVwZGF0ZWRGaWVsZC5jaG9pY2VzKS5mb3JFYWNoKGNob2ljZUtleSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Q2hvaWNlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBjaG9pY2VLZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1cGRhdGVkRmllbGQuY2hvaWNlc1tjaG9pY2VLZXldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBhcyBFbnVtZXJhdGlvbkZpZWxkVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKGZpZWxkIGFzIEVudW1lcmF0aW9uRmllbGQgfCBNdWx0aWNob2ljZUZpZWxkKS5jaG9pY2VzID0gbmV3Q2hvaWNlcztcbiAgICAgICAgICAgICAgICAgICAgKGZpZWxkIGFzIEVudW1lcmF0aW9uRmllbGQgfCBNdWx0aWNob2ljZUZpZWxkKS51cGRhdGVDaG9pY2UoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnb3B0aW9ucyc6XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld09wdGlvbnMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXModXBkYXRlZEZpZWxkLm9wdGlvbnMpLmZvckVhY2gob3B0aW9uS2V5ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld09wdGlvbnMucHVzaCh7a2V5OiBvcHRpb25LZXksIHZhbHVlOiB1cGRhdGVkRmllbGQub3B0aW9uc1tvcHRpb25LZXldfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAoZmllbGQgYXMgRW51bWVyYXRpb25GaWVsZCB8IE11bHRpY2hvaWNlRmllbGQpLmNob2ljZXMgPSBuZXdPcHRpb25zO1xuICAgICAgICAgICAgICAgICAgICAoZmllbGQgYXMgRW51bWVyYXRpb25GaWVsZCB8IE11bHRpY2hvaWNlRmllbGQpLnVwZGF0ZUNob2ljZSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd2YWxpZGF0aW9ucyc6XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnJlcGxhY2VWYWxpZGF0aW9ucyh1cGRhdGVkRmllbGQudmFsaWRhdGlvbnMubWFwKGl0ID0+IChpdCBhcyBWYWxpZGF0aW9uKSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBmaWVsZFtrZXldID0gdXBkYXRlZEZpZWxkW2tleV07XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpZWxkLnVwZGF0ZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaXNGaWVsZEluVGFzayh0YXNrSWQ6IHN0cmluZywgY2hhbmdlZEZpZWxkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGFza0lkXG4gICAgICAgICAgICAmJiAhIXRoaXMudGFza0ZpZWxkc0luZGV4W3Rhc2tJZF1cbiAgICAgICAgICAgICYmICEhdGhpcy50YXNrRmllbGRzSW5kZXhbdGFza0lkXS5maWVsZHNcbiAgICAgICAgICAgICYmICEhdGhpcy50YXNrRmllbGRzSW5kZXhbdGFza0lkXS5maWVsZHNbY2hhbmdlZEZpZWxkXVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRSZWZlcmVuY2VkVGFza0lkKGNoYW5nZWRGaWVsZDogc3RyaW5nLCBjaEZpZWxkczogQ2hhbmdlZEZpZWxkcyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAhIXRoaXMudGFza0ZpZWxkc0luZGV4ID9cbiAgICAgICAgICAgIChPYmplY3Qua2V5cyh0aGlzLnRhc2tGaWVsZHNJbmRleCkuZmluZCh0YXNrSWQgPT4gdGFza0lkICE9PSB0aGlzLnRhc2suc3RyaW5nSWQgJiYgdGFza0lkID09PSBjaEZpZWxkcy50YXNrSWQgJiYgT2JqZWN0LmtleXModGhpcy50YXNrRmllbGRzSW5kZXhbdGFza0lkXS5maWVsZHMpLmluY2x1ZGVzKGNoYW5nZWRGaWVsZCkpXG4gICAgICAgICAgICB8fCBPYmplY3Qua2V5cyh0aGlzLnRhc2tGaWVsZHNJbmRleCkuZmluZCh0YXNrSWQgPT4gdGFza0lkICE9PSB0aGlzLnRhc2suc3RyaW5nSWQgJiYgT2JqZWN0LmtleXModGhpcy50YXNrRmllbGRzSW5kZXhbdGFza0lkXS5maWVsZHMpLmluY2x1ZGVzKGNoYW5nZWRGaWVsZCkpKSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZmluZFRhc2tSZWZJZCh0YXNrSWQ6IHN0cmluZywgZmllbGRzOiB7IFtmaWVsZElkOiBzdHJpbmddOiBEYXRhRmllbGQ8YW55Pn0pOiBEYXRhRmllbGQ8YW55PiB7XG4gICAgICAgIGxldCB0YXNrUmVmSWQgPSBPYmplY3QudmFsdWVzKGZpZWxkcykuZmluZChmID0+IGYgaW5zdGFuY2VvZiBUYXNrUmVmRmllbGQgJiYgZi52YWx1ZS5pbmNsdWRlcyh0YXNrSWQpKTtcbiAgICAgICAgaWYgKCF0YXNrUmVmSWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlZmVyZW5jZWRUYXNrSWRzID0gT2JqZWN0LnZhbHVlcyhmaWVsZHMpLmZpbHRlcihmID0+IGYgaW5zdGFuY2VvZiBUYXNrUmVmRmllbGQpLm1hcCh0ciA9PiB0ci52YWx1ZSk7XG4gICAgICAgICAgICByZWZlcmVuY2VkVGFza0lkcy5mb3JFYWNoKGlkID0+IHtcbiAgICAgICAgICAgICAgICB0YXNrUmVmSWQgPSB0aGlzLmZpbmRUYXNrUmVmSWQodGFza0lkLCB0aGlzLnRhc2tGaWVsZHNJbmRleFtpZF0uZmllbGRzKTtcbiAgICAgICAgICAgICAgICBpZiAoISF0YXNrUmVmSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRhc2tSZWZJZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFza1JlZklkXG4gICAgfVxufVxuIl19
273
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1jb250ZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL3Rhc2stY29udGVudC9zZXJ2aWNlcy90YXNrLWNvbnRlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBRXBELE9BQU8sRUFBQyxlQUFlLEVBQWMsYUFBYSxFQUFFLE9BQU8sRUFBUSxNQUFNLE1BQU0sQ0FBQztBQVNoRixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxzRUFBc0UsQ0FBQztBQUs3RyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sdURBQXVELENBQUM7Ozs7OztBQUVuRjs7Ozs7OztHQU9HO0FBRUgsTUFBTSxPQUFnQixrQkFBa0I7SUFlcEMsWUFBZ0Msc0JBQTZDLEVBQzdDLGdCQUFpQyxFQUNqQyxVQUE0QixFQUM1QixPQUFzQjtRQUh0QiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXVCO1FBQzdDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFDakMsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFDNUIsWUFBTyxHQUFQLE9BQU8sQ0FBZTtRQVI1QyxxQkFBZ0IsR0FFdEIsRUFBRSxDQUFDO1FBQ0csOEJBQXlCLEdBQXdDLEVBQUUsQ0FBQztRQU0xRSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksYUFBYSxDQUFtQixDQUFDLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMs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dkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgT25EZXN0cm95fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RGF0YUdyb3VwfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvaW50ZXJmYWNlL2RhdGEtZ3JvdXBzJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0LCB0aW1lcn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1Rhc2t9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvdGFzayc7XG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gJy4uLy4uL2xvZ2dlci9zZXJ2aWNlcy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQge1NuYWNrQmFyU2VydmljZX0gZnJvbSAnLi4vLi4vc25hY2stYmFyL3NlcnZpY2VzL3NuYWNrLWJhci5zZXJ2aWNlJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0VudW1lcmF0aW9uRmllbGQsIEVudW1lcmF0aW9uRmllbGRWYWx1ZX0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvZW51bWVyYXRpb24tZmllbGQvbW9kZWxzL2VudW1lcmF0aW9uLWZpZWxkJztcbmltcG9ydCB7TXVsdGljaG9pY2VGaWVsZH0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvbXVsdGljaG9pY2UtZmllbGQvbW9kZWxzL211bHRpY2hvaWNlLWZpZWxkJztcbmltcG9ydCB7Q2hhbmdlLCBDaGFuZ2VkRmllbGRzfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy9tb2RlbHMvY2hhbmdlZC1maWVsZHMnO1xuaW1wb3J0IHtGaWVsZENvbnZlcnRlclNlcnZpY2V9IGZyb20gJy4vZmllbGQtY29udmVydGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtGaWVsZFR5cGVSZXNvdXJjZX0gZnJvbSAnLi4vbW9kZWwvZmllbGQtdHlwZS1yZXNvdXJjZSc7XG5pbXBvcnQge0R5bmFtaWNFbnVtZXJhdGlvbkZpZWxkfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy9lbnVtZXJhdGlvbi1maWVsZC9tb2RlbHMvZHluYW1pYy1lbnVtZXJhdGlvbi1maWVsZCc7XG5pbXBvcnQge1ZhbGlkYXRpb259IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL21vZGVscy92YWxpZGF0aW9uJztcbmltcG9ydCB7VGFza0V2ZW50T3V0Y29tZX0gZnJvbSAnLi4vLi4vZXZlbnQvbW9kZWwvZXZlbnQtb3V0Y29tZXMvdGFzay1vdXRjb21lcy90YXNrLWV2ZW50LW91dGNvbWUnO1xuaW1wb3J0IHtEYXRhRmllbGR9IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL21vZGVscy9hYnN0cmFjdC1kYXRhLWZpZWxkJztcbmltcG9ydCB7VGFza0ZpZWxkc30gZnJvbSAnLi4vbW9kZWwvdGFzay1maWVsZHMnO1xuaW1wb3J0IHtUYXNrUmVmRmllbGR9IGZyb20gXCIuLi8uLi9kYXRhLWZpZWxkcy90YXNrLXJlZi1maWVsZC9tb2RlbC90YXNrLXJlZi1maWVsZFwiO1xuXG4vKipcbiAqIEFjdHMgYXMgYSBjb21tdW5pY2F0aW9uIGludGVyZmFjZSBiZXR3ZWVuIHRoZSBDb21wb25lbnQgdGhhdCByZW5kZXJzIFRhc2sgY29udGVudCBhbmQgaXQncyBwYXJlbnQgQ29tcG9uZW50LlxuICogQWxzbyBwcm92aWRlcyBzb21lIGdlbmVyYWwgZnVuY3Rpb25hbGl0eSB0aGF0IGlzIG5lZWRlZCB3aGVuIHdvcmtpbmcgd2l0aCB0YXNrIGNvbnRlbnQuXG4gKlxuICogTm90YWJsZSBleGFtcGxlIG9mIGEgcGFyZW50IENvbXBvbmVudCBpcyB0aGUge0BsaW5rIEFic3RyYWN0VGFza1BhbmVsQ29tcG9uZW50fS5cbiAqXG4gKiBOb3RhYmxlIGV4YW1wbGUgb2YgYSB0YXNrIGNvbnRlbnQgcmVuZGVyZXIgaXMgdGhlIHtAbGluayBBYnN0cmFjdFRhc2tDb250ZW50Q29tcG9uZW50fS5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRhc2tDb250ZW50U2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEZST05URU5EX0FDVElPTlNfS0VZID0gJ19mcm9udGVuZF9hY3Rpb25zJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFDVElPTiA9ICdhY3Rpb24nO1xuXG4gICAgJHNob3VsZENyZWF0ZTogUmVwbGF5U3ViamVjdDxBcnJheTxEYXRhR3JvdXA+PjtcbiAgICAkc2hvdWxkQ3JlYXRlQ291bnRlcjogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj47XG4gICAgcHJvdGVjdGVkIF90YXNrOiBUYXNrO1xuICAgIHByb3RlY3RlZCBfdGFza0RhdGFSZWxvYWRSZXF1ZXN0JDogU3ViamVjdDxDaGFuZ2U+O1xuICAgIHByb3RlY3RlZCBfaXNFeHBhbmRpbmckOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj47XG4gICAgcHJvdGVjdGVkIF90YXNrRmllbGRzSW5kZXg6IHtcbiAgICAgICAgW3Rhc2tJZDogc3RyaW5nXTogVGFza0ZpZWxkc1xuICAgIH0gPSB7fTtcbiAgICBwcm90ZWN0ZWQgX3JlZmVyZW5jZWRUYXNrQW5kQ2FzZUlkczogeyBbY2FzZUlkOiBzdHJpbmddOiBBcnJheTxzdHJpbmc+IH0gPSB7fTtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX2ZpZWxkQ29udmVydGVyU2VydmljZTogRmllbGRDb252ZXJ0ZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3NuYWNrQmFyU2VydmljZTogU25hY2tCYXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9sb2dnZXI6IExvZ2dlclNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy4kc2hvdWxkQ3JlYXRlID0gbmV3IFJlcGxheVN1YmplY3Q8QXJyYXk8RGF0YUdyb3VwPj4oMSk7XG4gICAgICAgIHRoaXMuJHNob3VsZENyZWF0ZUNvdW50ZXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG4gICAgICAgIHRoaXMuX2lzRXhwYW5kaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgICAgICB0aGlzLl90YXNrID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLl90YXNrRGF0YVJlbG9hZFJlcXVlc3QkID0gbmV3IFN1YmplY3Q8Q2hhbmdlPigpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuJHNob3VsZENyZWF0ZS5jbG9zZWQpIHtcbiAgICAgICAgICAgIHRoaXMuJHNob3VsZENyZWF0ZS5jb21wbGV0ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3Rhc2tEYXRhUmVsb2FkUmVxdWVzdCQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5faXNFeHBhbmRpbmckLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgdGhlIFRhc2sgb2JqZWN0IGlmIHNldCBhbmQgYHVuZGVmaW5lZGAgb3RoZXJ3aXNlXG4gICAgICovXG4gICAgcHVibGljIGFic3RyYWN0IGdldCB0YXNrKCk6IFRhc2sgfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBTZXR0aW5nIGEgVGFzayBhbHNvIGVtaXRzIGl0IGludG8gdGhlIHN0cmVhbSBhY2Nlc3NpYmxlIGJ5IHRoZSBbdGFzayRde0BsaW5rIFRhc2tDb250ZW50U2VydmljZSN0YXNrJH0gZ2V0dGVyIG1ldGhvZC5cbiAgICAgKiBAcGFyYW0gdGFzayB0aGUgVGFzayB0aGF0IG93bnMgdGhlIGNvbnRlbnQgbWFuYWdlZCBieSB0aGlzIHNlcnZpY2VcbiAgICAgKi9cbiAgICBwdWJsaWMgYWJzdHJhY3Qgc2V0IHRhc2sodGFzazogVGFzayk7XG5cbiAgICAvKipcbiAgICAgKiBTdHJlYW0gcmV0dXJucyBhIHtAbGluayBUYXNrfSBvYmplY3QgZXZlcnkgdGltZSB0aGlzIG9iamVjdCBpcyBzZXQuXG4gICAgICpcbiAgICAgKiBVc2UgW3Rhc2tde0BsaW5rIFRhc2tDb250ZW50U2VydmljZSN0YXNrfSBzZXR0ZXIgbWV0aG9kIHRvIHNldCB0aGUgVGFzay5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0IHRhc2skKCk6IE9ic2VydmFibGU8VGFzaz47XG5cbiAgICAvKipcbiAgICAgKiBTdHJlYW0gdGhhdCBlbWl0cyBldmVyeSB0aW1lIGEgZGF0YSByZWxvYWQgaXMgcmVxdWVzdGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdGFza0RhdGFSZWxvYWRSZXF1ZXN0JCgpOiBPYnNlcnZhYmxlPENoYW5nZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFza0RhdGFSZWxvYWRSZXF1ZXN0JC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cblxuICAgIGdldCB0YXNrRmllbGRzSW5kZXgoKTogeyBbcDogc3RyaW5nXTogVGFza0ZpZWxkcyB9IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Rhc2tGaWVsZHNJbmRleDtcbiAgICB9XG5cbiAgICBzZXQgdGFza0ZpZWxkc0luZGV4KHZhbHVlOiB7IFtwOiBzdHJpbmddOiBUYXNrRmllbGRzIH0pIHtcbiAgICAgICAgdGhpcy5fdGFza0ZpZWxkc0luZGV4ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IHJlZmVyZW5jZWRUYXNrQW5kQ2FzZUlkcygpOiB7IFtwOiBzdHJpbmddOiBBcnJheTxzdHJpbmc+IH0ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVmZXJlbmNlZFRhc2tBbmRDYXNlSWRzO1xuICAgIH1cblxuICAgIHNldCByZWZlcmVuY2VkVGFza0FuZENhc2VJZHModmFsdWU6IHsgW3A6IHN0cmluZ106IEFycmF5PHN0cmluZz4gfSkge1xuICAgICAgICB0aGlzLl9yZWZlcmVuY2VkVGFza0FuZENhc2VJZHMgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBwYW5lbCB0aGF0IHRoZSB0YXNrIGNvbnRlbnQgaXMgY29udGFpbmVkIGluIGlzIGN1cnJlbnRseSBleHBhbmRpbmcuXG4gICAgICpcbiAgICAgKiBJZiB0aGUgdGFzayBjb250ZW50IGlzIG5vdCBjb250YWluZWQgaW4gYSBwYW5lbCwgYGlzRXhwYW5kaW5nYCB3aWxsIGJlIGFsd2F5cyBgZmFsc2VgLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaXNFeHBhbmRpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0V4cGFuZGluZyQudmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hhbmdlcyB0aGUgc3RhdGUgb2YgdGhlIHRhc2sgY29udGVudCB0byBgZXhwYW5kaW5nYC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZXhwYW5zaW9uU3RhcnRlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXNFeHBhbmRpbmckLm5leHQodHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hhbmdlcyB0aGUgc3RhdGUgb2YgdGhlIHRhc2sgY29udGVudCB0byBgbm90IGV4cGFuZGluZ2AuXG4gICAgICovXG4gICAgcHVibGljIGV4cGFuc2lvbkZpbmlzaGVkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pc0V4cGFuZGluZyQubmV4dChmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIHRoZSB2YWxpZGl0eSBvZiBhbGwgZGF0YSBmaWVsZHMgaW4gdGhlIG1hbmFnZWQge0BsaW5rIFRhc2t9LlxuICAgICAqXG4gICAgICogSWYgc29tZSBvZiB0aGUgZmllbGRzIGFyZSBpbnZhbGlkIHRvdWNoZXMgdGhlbSBzbyB0aGVpciB2YWxpZGF0aW9uIGVycm9ycyB3aWxsIGFwcGVhciAoaWYgc2V0KS5cbiAgICAgKiBBIHNuYWNrYmFyIHdpbGwgYWxzbyBiZSBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIsIGluZm9ybWluZyB0aGVtIG9mIHRoZSBmYWN0IHRoYXQgdGhlIGZpZWxkcyBhcmUgaW52YWxpZC5cbiAgICAgKiBAcmV0dXJucyB3aGV0aGVyIHRoZSB0YXNrIGlzIHZhbGlkIG9yIG5vdFxuICAgICAqL1xuICAgIHB1YmxpYyB2YWxpZGF0ZVRhc2tEYXRhKHRhc2tJZD86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuX3Rhc2sgfHwgIXRoaXMuX3Rhc2suZGF0YUdyb3Vwcykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHZhbGlkID0gIXRoaXMuX3Rhc2suZGF0YUdyb3Vwcy5maWx0ZXIoZ3JvdXAgPT4gISFncm91cC5wYXJlbnRUYXNrSWQgJiYgISF0YXNrSWQgPyBncm91cC5wYXJlbnRUYXNrSWQgPT09IHRhc2tJZCA6IHRydWUpLnNvbWUoZ3JvdXAgPT4gZ3JvdXAuZmllbGRzLnNvbWUoZmllbGQgPT4gIWZpZWxkLnZhbGlkICYmICFmaWVsZC5kaXNhYmxlZCkpO1xuICAgICAgICBjb25zdCB2YWxpZERpc2FibGVkID0gIXRoaXMuX3Rhc2suZGF0YUdyb3Vwcy5maWx0ZXIoZ3JvdXAgPT4gISFncm91cC5wYXJlbnRUYXNrSWQgJiYgISF0YXNrSWQgPyBncm91cC5wYXJlbnRUYXNrSWQgPT09IHRhc2tJZCA6IHRydWUpLnNvbWUoZ3JvdXAgPT4gZ3JvdXAuZmllbGRzLnNvbWUoZmllbGQgPT4gIWZpZWxkLnZhbGlkUmVxdWlyZWQgJiYgZmllbGQuZGlzYWJsZWQpKTtcbiAgICAgICAgaWYgKCF2YWxpZCkge1xuICAgICAgICAgICAgdGhpcy5fc25hY2tCYXJTZXJ2aWNlLm9wZW5FcnJvclNuYWNrQmFyKHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCd0YXNrcy5zbmFja2Jhci5pbnZhbGlkRGF0YScpKTtcbiAgICAgICAgICAgIHRoaXMuX3Rhc2suZGF0YUdyb3Vwcy5mb3JFYWNoKGdyb3VwID0+IGdyb3VwLmZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IGZpZWxkLnRvdWNoID0gdHJ1ZSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdmFsaWREaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5fc25hY2tCYXJTZXJ2aWNlLm9wZW5FcnJvclNuYWNrQmFyKHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCd0YXNrcy5zbmFja2Jhci5taXNzaW5nUmVxdWlyZWQnKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbGlkICYmIHZhbGlkRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgaW52YWxpZCBkYXRhIG9mIHRhc2tcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIGFycmF5IG9mIGludmFsaWQgZGF0YWZpZWxkc1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRJbnZhbGlkVGFza0RhdGEoKTogQXJyYXk8RGF0YUZpZWxkPGFueT4+IHtcbiAgICAgICAgY29uc3QgaW52YWxpZEZpZWxkcyA9IFtdO1xuICAgICAgICB0aGlzLl90YXNrLmRhdGFHcm91cHMuZm9yRWFjaChncm91cCA9PiBpbnZhbGlkRmllbGRzLnB1c2goLi4uZ3JvdXAuZmllbGRzLmZpbHRlcihmaWVsZCA9PlxuICAgICAgICAgICAgKCFmaWVsZC52YWxpZCAmJiAhZmllbGQuZGlzYWJsZWQpIHx8ICghZmllbGQudmFsaWRSZXF1aXJlZCAmJiAhZmllbGQuZGlzYWJsZWQpKSkpO1xuICAgICAgICByZXR1cm4gaW52YWxpZEZpZWxkcztcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsaWRhdGVEeW5hbWljRW51bUZpZWxkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuX3Rhc2sgfHwgIXRoaXMuX3Rhc2suZGF0YUdyb3Vwcykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGV4aXN0cyA9IHRoaXMuX3Rhc2suZGF0YUdyb3Vwcy5zb21lKGdyb3VwID0+IGdyb3VwLmZpZWxkcy5zb21lKGZpZWxkID0+IGZpZWxkIGluc3RhbmNlb2YgRHluYW1pY0VudW1lcmF0aW9uRmllbGQpKTtcbiAgICAgICAgaWYgKCFleGlzdHMpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGxldCB2YWxpZCA9IHRydWU7XG4gICAgICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgdGhpcy5fdGFzay5kYXRhR3JvdXBzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGdyb3VwLmZpZWxkcykge1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZCBpbnN0YW5jZW9mIER5bmFtaWNFbnVtZXJhdGlvbkZpZWxkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZC5jaG9pY2VzICE9PSB1bmRlZmluZWQgJiYgZmllbGQuY2hvaWNlcy5sZW5ndGggIT09IDAgJiYgZmllbGQudmFsdWUgIT09ICcnICYmIGZpZWxkLnZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZmllbGQuY2hvaWNlcy5zb21lKGNob2ljZSA9PiBjaG9pY2Uua2V5ID09PSBmaWVsZC52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZC5iZWhhdmlvci5yZXF1aXJlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIXZhbGlkKSB7XG4gICAgICAgICAgICB0aGlzLl9zbmFja0JhclNlcnZpY2Uub3BlbkVycm9yU25hY2tCYXIodGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ3Rhc2tzLnNuYWNrYmFyLm1pc3NpbmdSZXF1aXJlZCcpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsaWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hhbmdlcyB0aGUgYmxvY2tpbmcgc3RhdGUgb2YgYWxsIGZpZWxkcyBpbiB0aGUgbWFuYWdlZCBUYXNrLlxuICAgICAqIEBwYXJhbSBibG9ja2luZ1N0YXRlIHdoZXRoZXIgdGhlIGZpZWxkIHNob3VsZCBiZSBibG9ja2VkIG9yIG5vdFxuICAgICAqL1xuICAgIHB1YmxpYyBibG9ja0ZpZWxkcyhibG9ja2luZ1N0YXRlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl90YXNrICYmIHRoaXMuX3Rhc2suZGF0YUdyb3Vwcykge1xuICAgICAgICAgICAgdGhpcy5fdGFzay5kYXRhR3JvdXBzLmZvckVhY2goZ3JvdXAgPT4ge1xuICAgICAgICAgICAgICAgIGdyb3VwLmZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZmllbGQuYmxvY2sgPSBibG9ja2luZ1N0YXRlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGVhcnMgdGhlIGFzc2lnbmVlLCBzdGFydCBkYXRlIGFuZCBmaW5pc2ggZGF0ZSBmcm9tIHRoZSBtYW5hZ2VkIFRhc2suXG4gICAgICovXG4gICAgcHVibGljIHVwZGF0ZVN0YXRlRGF0YShldmVudE91dGNvbWU6IFRhc2tFdmVudE91dGNvbWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3Rhc2spIHtcbiAgICAgICAgICAgIHRoaXMuX3Rhc2sudXNlciA9IGV2ZW50T3V0Y29tZS50YXNrLnVzZXI7XG4gICAgICAgICAgICB0aGlzLl90YXNrLnN0YXJ0RGF0ZSA9IGV2ZW50T3V0Y29tZS50YXNrLnN0YXJ0RGF0ZTtcbiAgICAgICAgICAgIHRoaXMuX3Rhc2suZmluaXNoRGF0ZSA9IGV2ZW50T3V0Y29tZS50YXNrLmZpbmlzaERhdGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSBwcm9wZXJ0aWVzIG9mIGZpZWxkcyBpbiB0aGUgbWFuYWdlZCB0YXNrIGJhc2VkIG9uIGEgZGVsdGEgb2YgY2hhbmdlcyBmcm9tIHByZXZpb3VzIHN0YXRlLlxuICAgICAqIEBwYXJhbSBjaEZpZWxkcyBvYmplY3QgY29udGFpbmluZyB0aGUgZGVsdGEgb2YgdGhlIGNoYW5nZXMgZnJvbSB0aGUgcHJldmlvdXMgc3RhdGVcbiAgICAgKi9cbiAgICBwdWJsaWMgdXBkYXRlRnJvbUNoYW5nZWRGaWVsZHMoY2hGaWVsZHM6IENoYW5nZWRGaWVsZHMpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl90YXNrIHx8ICF0aGlzLl90YXNrLmRhdGFHcm91cHMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmcm9udGVuZEFjdGlvbnMgPSBjaEZpZWxkcy50YXNrSWQgPT09IHRoaXMudGFzay5zdHJpbmdJZCAmJiBjaEZpZWxkc1tUYXNrQ29udGVudFNlcnZpY2UuRlJPTlRFTkRfQUNUSU9OU19LRVldO1xuICAgICAgICBPYmplY3Qua2V5cyhjaEZpZWxkcykuZm9yRWFjaChjaGFuZ2VkRmllbGQgPT4ge1xuICAgICAgICAgICAgaWYgKGNoRmllbGRzLnRhc2tJZCA9PT0gdGhpcy5fdGFzay5zdHJpbmdJZCAmJiB0aGlzLmlzRmllbGRJblRhc2soY2hGaWVsZHMudGFza0lkLCBjaGFuZ2VkRmllbGQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVGaWVsZChjaEZpZWxkcywgdGhpcy50YXNrRmllbGRzSW5kZXhbY2hGaWVsZHMudGFza0lkXS5maWVsZHNbY2hhbmdlZEZpZWxkXSwgZnJvbnRlbmRBY3Rpb25zKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoISF0aGlzLmdldFJlZmVyZW5jZWRUYXNrSWQoY2hhbmdlZEZpZWxkLCBjaEZpZWxkcykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUZpZWxkKGNoRmllbGRzLCB0aGlzLnRhc2tGaWVsZHNJbmRleFt0aGlzLmdldFJlZmVyZW5jZWRUYXNrSWQoY2hhbmdlZEZpZWxkLCBjaEZpZWxkcyldLmZpZWxkc1tjaGFuZ2VkRmllbGRdLCBmcm9udGVuZEFjdGlvbnMsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLiRzaG91bGRDcmVhdGUubmV4dCh0aGlzLl90YXNrLmRhdGFHcm91cHMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB1cGRhdGVGaWVsZChjaEZpZWxkczogQ2hhbmdlZEZpZWxkcywgZmllbGQ6IERhdGFGaWVsZDxhbnk+LCBmcm9udGVuZEFjdGlvbnM6IENoYW5nZSwgcmVmZXJlbmNlZDogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9maWVsZENvbnZlcnRlclNlcnZpY2UucmVzb2x2ZVR5cGUoZmllbGQpID09PSBGaWVsZFR5cGVSZXNvdXJjZS5UQVNLX1JFRikge1xuICAgICAgICAgICAgdGhpcy5fdGFza0RhdGFSZWxvYWRSZXF1ZXN0JC5uZXh0KGZyb250ZW5kQWN0aW9ucyA/IGZyb250ZW5kQWN0aW9ucyA6IHVuZGVmaW5lZCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1cGRhdGVkRmllbGQgPSBjaEZpZWxkc1tmaWVsZC5zdHJpbmdJZF07XG4gICAgICAgIE9iamVjdC5rZXlzKHVwZGF0ZWRGaWVsZCkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICd0eXBlJzpcbiAgICAgICAgICAgICAgICAgICAgLy8gdHlwZSBpcyBqdXN0IGFuIGluZm9ybWF0aW9uLCBub3QgYW4gdXBkYXRlLiBBIGZpZWxkIGNhbm5vdCBjaGFuZ2UgaXRzIHR5cGVcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBjb250aW51ZSAtIHRoZSBmaWVsZCBkb2VzIG5vdCBuZWVkIHVwZGF0aW5nLCBzaW5jZSBub3RoaW5nIGNoYW5nZWRcbiAgICAgICAgICAgICAgICBjYXNlICd2YWx1ZSc6XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnZhbHVlV2l0aG91dENoYW5nZSh0aGlzLl9maWVsZENvbnZlcnRlclNlcnZpY2UuZm9ybWF0VmFsdWVGcm9tQmFja2VuZChmaWVsZCwgdXBkYXRlZEZpZWxkW2tleV0pKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnYmVoYXZpb3InOlxuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlZmVyZW5jZWQgJiYgdXBkYXRlZEZpZWxkLmJlaGF2aW9yW3RoaXMuX3Rhc2sudHJhbnNpdGlvbklkXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuYmVoYXZpb3IgPSB1cGRhdGVkRmllbGQuYmVoYXZpb3JbdGhpcy5fdGFzay50cmFuc2l0aW9uSWRdO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlZmVyZW5jZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhc2tJZCA9IHRoaXMuZ2V0UmVmZXJlbmNlZFRhc2tJZChmaWVsZC5zdHJpbmdJZCwgY2hGaWVsZHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFza1JlZiA9IHRoaXMuZmluZFRhc2tSZWZJZCh0YXNrSWQsIHRoaXMudGFza0ZpZWxkc0luZGV4W3RoaXMuX3Rhc2suc3RyaW5nSWRdLmZpZWxkcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0cmFuc2l0aW9uSWQgPSB0aGlzLnRhc2tGaWVsZHNJbmRleFt0YXNrSWRdLnRyYW5zaXRpb25JZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIXRyYW5zaXRpb25JZCAmJiB0cmFuc2l0aW9uSWQgIT09ICcnICYmIHVwZGF0ZWRGaWVsZC5iZWhhdmlvclt0cmFuc2l0aW9uSWRdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmJlaGF2aW9yID0gdGFza1JlZi5iZWhhdmlvci5lZGl0YWJsZSA/IHVwZGF0ZWRGaWVsZC5iZWhhdmlvclt0cmFuc2l0aW9uSWRdIDogdGFza1JlZi5iZWhhdmlvcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdjaG9pY2VzJzpcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3Q2hvaWNlczogQXJyYXk8RW51bWVyYXRpb25GaWVsZFZhbHVlPiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBpZiAodXBkYXRlZEZpZWxkLmNob2ljZXMgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZEZpZWxkLmNob2ljZXMuZm9yRWFjaChpdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Q2hvaWNlcy5wdXNoKHtrZXk6IGl0LCB2YWx1ZTogaXR9IGFzIEVudW1lcmF0aW9uRmllbGRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHVwZGF0ZWRGaWVsZC5jaG9pY2VzKS5mb3JFYWNoKGNob2ljZUtleSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Q2hvaWNlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBjaG9pY2VLZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1cGRhdGVkRmllbGQuY2hvaWNlc1tjaG9pY2VLZXldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBhcyBFbnVtZXJhdGlvbkZpZWxkVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKGZpZWxkIGFzIEVudW1lcmF0aW9uRmllbGQgfCBNdWx0aWNob2ljZUZpZWxkKS5jaG9pY2VzID0gbmV3Q2hvaWNlcztcbiAgICAgICAgICAgICAgICAgICAgKGZpZWxkIGFzIEVudW1lcmF0aW9uRmllbGQgfCBNdWx0aWNob2ljZUZpZWxkKS51cGRhdGVDaG9pY2UoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnb3B0aW9ucyc6XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld09wdGlvbnMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXModXBkYXRlZEZpZWxkLm9wdGlvbnMpLmZvckVhY2gob3B0aW9uS2V5ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld09wdGlvbnMucHVzaCh7a2V5OiBvcHRpb25LZXksIHZhbHVlOiB1cGRhdGVkRmllbGQub3B0aW9uc1tvcHRpb25LZXldfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAoZmllbGQgYXMgRW51bWVyYXRpb25GaWVsZCB8IE11bHRpY2hvaWNlRmllbGQpLmNob2ljZXMgPSBuZXdPcHRpb25zO1xuICAgICAgICAgICAgICAgICAgICAoZmllbGQgYXMgRW51bWVyYXRpb25GaWVsZCB8IE11bHRpY2hvaWNlRmllbGQpLnVwZGF0ZUNob2ljZSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd2YWxpZGF0aW9ucyc6XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnJlcGxhY2VWYWxpZGF0aW9ucyh1cGRhdGVkRmllbGQudmFsaWRhdGlvbnMubWFwKGl0ID0+IChpdCBhcyBWYWxpZGF0aW9uKSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBmaWVsZFtrZXldID0gdXBkYXRlZEZpZWxkW2tleV07XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpZWxkLnVwZGF0ZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaXNGaWVsZEluVGFzayh0YXNrSWQ6IHN0cmluZywgY2hhbmdlZEZpZWxkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGFza0lkXG4gICAgICAgICAgICAmJiAhIXRoaXMudGFza0ZpZWxkc0luZGV4W3Rhc2tJZF1cbiAgICAgICAgICAgICYmICEhdGhpcy50YXNrRmllbGRzSW5kZXhbdGFza0lkXS5maWVsZHNcbiAgICAgICAgICAgICYmICEhdGhpcy50YXNrRmllbGRzSW5kZXhbdGFza0lkXS5maWVsZHNbY2hhbmdlZEZpZWxkXVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRSZWZlcmVuY2VkVGFza0lkKGNoYW5nZWRGaWVsZDogc3RyaW5nLCBjaEZpZWxkczogQ2hhbmdlZEZpZWxkcyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAhIXRoaXMudGFza0ZpZWxkc0luZGV4ID9cbiAgICAgICAgICAgIChPYmplY3Qua2V5cyh0aGlzLnRhc2tGaWVsZHNJbmRleCkuZmluZCh0YXNrSWQgPT4gdGFza0lkICE9PSB0aGlzLnRhc2suc3RyaW5nSWQgJiYgdGFza0lkID09PSBjaEZpZWxkcy50YXNrSWQgJiYgT2JqZWN0LmtleXModGhpcy50YXNrRmllbGRzSW5kZXhbdGFza0lkXS5maWVsZHMpPy5pbmNsdWRlcyhjaGFuZ2VkRmllbGQpKVxuICAgICAgICAgICAgfHwgT2JqZWN0LmtleXModGhpcy50YXNrRmllbGRzSW5kZXgpLmZpbmQodGFza0lkID0+IHRhc2tJZCAhPT0gdGhpcy50YXNrLnN0cmluZ0lkICYmIE9iamVjdC5rZXlzKHRoaXMudGFza0ZpZWxkc0luZGV4W3Rhc2tJZF0uZmllbGRzKT8uaW5jbHVkZXMoY2hhbmdlZEZpZWxkKSkpIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBmaW5kVGFza1JlZklkKHRhc2tJZDogc3RyaW5nLCBmaWVsZHM6IHsgW2ZpZWxkSWQ6IHN0cmluZ106IERhdGFGaWVsZDxhbnk+fSk6IERhdGFGaWVsZDxhbnk+IHtcbiAgICAgICAgbGV0IHRhc2tSZWZJZCA9IE9iamVjdC52YWx1ZXMoZmllbGRzKS5maW5kKGYgPT4gZiBpbnN0YW5jZW9mIFRhc2tSZWZGaWVsZCAmJiBmLnZhbHVlPy5pbmNsdWRlcyh0YXNrSWQpKTtcbiAgICAgICAgaWYgKCF0YXNrUmVmSWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlZmVyZW5jZWRUYXNrSWRzID0gT2JqZWN0LnZhbHVlcyhmaWVsZHMpLmZpbHRlcihmID0+IGYgaW5zdGFuY2VvZiBUYXNrUmVmRmllbGQpLm1hcCh0ciA9PiB0ci52YWx1ZSk7XG4gICAgICAgICAgICByZWZlcmVuY2VkVGFza0lkcy5mb3JFYWNoKGlkID0+IHtcbiAgICAgICAgICAgICAgICB0YXNrUmVmSWQgPSB0aGlzLmZpbmRUYXNrUmVmSWQodGFza0lkLCB0aGlzLnRhc2tGaWVsZHNJbmRleFtpZF0uZmllbGRzKTtcbiAgICAgICAgICAgICAgICBpZiAoISF0YXNrUmVmSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRhc2tSZWZJZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFza1JlZklkXG4gICAgfVxufVxuIl19