@smartbit4all/ng-client 3.3.96 → 3.3.98

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 (152) hide show
  1. package/esm2020/lib/session/api/api/session.service.mjs +1 -1
  2. package/esm2020/lib/session/api/encoder.mjs +1 -1
  3. package/esm2020/lib/session/api/model/accountInfo.mjs +1 -1
  4. package/esm2020/lib/session/api/model/apiError.mjs +1 -1
  5. package/esm2020/lib/session/api/model/authenticationProviderData.mjs +1 -1
  6. package/esm2020/lib/session/api/model/getAuthenticationProvidersResponse.mjs +1 -1
  7. package/esm2020/lib/session/api/model/models.mjs +1 -1
  8. package/esm2020/lib/session/api/model/refreshSessionRequest.mjs +1 -1
  9. package/esm2020/lib/session/api/model/session.mjs +1 -1
  10. package/esm2020/lib/session/api/model/sessionInfoData.mjs +1 -1
  11. package/esm2020/lib/session/api/model/userActivityLog.mjs +1 -1
  12. package/esm2020/lib/session/api/param.mjs +1 -1
  13. package/esm2020/lib/session/api/variables.mjs +1 -1
  14. package/esm2020/lib/smart-component-layout/api/api/api.mjs +1 -1
  15. package/esm2020/lib/smart-component-layout/api/api/default.service.mjs +1 -1
  16. package/esm2020/lib/smart-component-layout/api/api.module.mjs +1 -1
  17. package/esm2020/lib/smart-component-layout/api/configuration.mjs +1 -1
  18. package/esm2020/lib/smart-component-layout/api/encoder.mjs +1 -1
  19. package/esm2020/lib/smart-component-layout/api/index.mjs +1 -1
  20. package/esm2020/lib/smart-component-layout/api/model/componentType.mjs +1 -1
  21. package/esm2020/lib/smart-component-layout/api/model/componentWidgetType.mjs +1 -1
  22. package/esm2020/lib/smart-component-layout/api/model/layoutDirection.mjs +1 -1
  23. package/esm2020/lib/smart-component-layout/api/model/models.mjs +1 -1
  24. package/esm2020/lib/smart-component-layout/api/model/smartComponentLayoutDefinition.mjs +1 -1
  25. package/esm2020/lib/smart-component-layout/api/model/smartComponentWidgetDefinition.mjs +1 -1
  26. package/esm2020/lib/smart-component-layout/api/param.mjs +1 -1
  27. package/esm2020/lib/smart-component-layout/api/variables.mjs +1 -1
  28. package/esm2020/lib/smart-filter-editor/api/api/filter.service.mjs +1 -1
  29. package/esm2020/lib/smart-filter-editor/api/configuration.mjs +1 -1
  30. package/esm2020/lib/smart-filter-editor/api/encoder.mjs +1 -1
  31. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionBuilderApiConfig.mjs +1 -1
  32. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionBuilderField.mjs +1 -1
  33. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionBuilderModel.mjs +1 -1
  34. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionFieldEditor.mjs +1 -1
  35. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionFieldList.mjs +1 -1
  36. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionList.mjs +1 -1
  37. package/esm2020/lib/smart-filter-editor/api/param.mjs +1 -1
  38. package/esm2020/lib/smart-filter-editor/api/variables.mjs +1 -1
  39. package/esm2020/lib/smart-form/api/model/smartWidgetDefinition.mjs +1 -1
  40. package/esm2020/lib/smart-form/api/model/valueChangeMode.mjs +1 -1
  41. package/esm2020/lib/smart-form/services/smartform.layout-definition.service.mjs +2 -1
  42. package/esm2020/lib/smart-form/smartform.form-model.mjs +1 -1
  43. package/esm2020/lib/smart-form/widgets/smartformwidget/smartformwidget.component.mjs +11 -4
  44. package/esm2020/lib/smart-grid/api/grid-api/api/api.mjs +1 -1
  45. package/esm2020/lib/smart-grid/api/grid-api/api/grid.service.mjs +1 -1
  46. package/esm2020/lib/smart-grid/api/grid-api/api.module.mjs +1 -1
  47. package/esm2020/lib/smart-grid/api/grid-api/configuration.mjs +1 -1
  48. package/esm2020/lib/smart-grid/api/grid-api/encoder.mjs +1 -1
  49. package/esm2020/lib/smart-grid/api/grid-api/index.mjs +1 -1
  50. package/esm2020/lib/smart-grid/api/grid-api/model/gridColumnContentType.mjs +1 -1
  51. package/esm2020/lib/smart-grid/api/grid-api/model/gridColumnMeta.mjs +1 -1
  52. package/esm2020/lib/smart-grid/api/grid-api/model/gridDataAccessConfig.mjs +1 -1
  53. package/esm2020/lib/smart-grid/api/grid-api/model/gridModel.mjs +1 -1
  54. package/esm2020/lib/smart-grid/api/grid-api/model/gridPage.mjs +1 -1
  55. package/esm2020/lib/smart-grid/api/grid-api/model/gridRow.mjs +1 -1
  56. package/esm2020/lib/smart-grid/api/grid-api/model/gridSelectionChange.mjs +1 -1
  57. package/esm2020/lib/smart-grid/api/grid-api/model/gridSelectionMode.mjs +1 -1
  58. package/esm2020/lib/smart-grid/api/grid-api/model/gridSelectionType.mjs +1 -1
  59. package/esm2020/lib/smart-grid/api/grid-api/model/gridServerModel.mjs +1 -1
  60. package/esm2020/lib/smart-grid/api/grid-api/model/gridUpdateData.mjs +1 -1
  61. package/esm2020/lib/smart-grid/api/grid-api/model/gridView.mjs +1 -1
  62. package/esm2020/lib/smart-grid/api/grid-api/model/gridViewDescriptor.mjs +1 -1
  63. package/esm2020/lib/smart-grid/api/grid-api/model/models.mjs +1 -1
  64. package/esm2020/lib/smart-grid/api/grid-api/param.mjs +1 -1
  65. package/esm2020/lib/smart-grid/api/grid-api/variables.mjs +1 -1
  66. package/esm2020/lib/smart-table/tables/table.mjs +1 -2
  67. package/esm2020/lib/smart-tree/tree-api/api/tree.service.mjs +1 -1
  68. package/esm2020/lib/smart-tree/tree-api/configuration.mjs +1 -1
  69. package/esm2020/lib/smart-tree/tree-api/encoder.mjs +1 -1
  70. package/esm2020/lib/smart-tree/tree-api/param.mjs +1 -1
  71. package/esm2020/lib/smart-tree/tree-api/variables.mjs +1 -1
  72. package/esm2020/lib/view-context/api/api/api.mjs +1 -1
  73. package/esm2020/lib/view-context/api/api/view.service.mjs +1 -1
  74. package/esm2020/lib/view-context/api/api.module.mjs +1 -1
  75. package/esm2020/lib/view-context/api/configuration.mjs +1 -1
  76. package/esm2020/lib/view-context/api/encoder.mjs +1 -1
  77. package/esm2020/lib/view-context/api/index.mjs +1 -1
  78. package/esm2020/lib/view-context/api/model/closeResult.mjs +1 -1
  79. package/esm2020/lib/view-context/api/model/componentConstraint.mjs +1 -1
  80. package/esm2020/lib/view-context/api/model/componentModel.mjs +1 -1
  81. package/esm2020/lib/view-context/api/model/componentModelChange.mjs +1 -1
  82. package/esm2020/lib/view-context/api/model/dataChange.mjs +1 -1
  83. package/esm2020/lib/view-context/api/model/dataChangeEvent.mjs +1 -1
  84. package/esm2020/lib/view-context/api/model/dataChangeKind.mjs +1 -1
  85. package/esm2020/lib/view-context/api/model/downloadedFile.mjs +1 -1
  86. package/esm2020/lib/view-context/api/model/iconPosition.mjs +1 -1
  87. package/esm2020/lib/view-context/api/model/imageResource.mjs +1 -1
  88. package/esm2020/lib/view-context/api/model/link.mjs +1 -1
  89. package/esm2020/lib/view-context/api/model/messageData.mjs +1 -1
  90. package/esm2020/lib/view-context/api/model/messageOption.mjs +1 -1
  91. package/esm2020/lib/view-context/api/model/messageOptionType.mjs +1 -1
  92. package/esm2020/lib/view-context/api/model/messageResult.mjs +1 -1
  93. package/esm2020/lib/view-context/api/model/messageTextType.mjs +1 -1
  94. package/esm2020/lib/view-context/api/model/messageType.mjs +1 -1
  95. package/esm2020/lib/view-context/api/model/models.mjs +1 -1
  96. package/esm2020/lib/view-context/api/model/openPendingData.mjs +1 -1
  97. package/esm2020/lib/view-context/api/model/smartLinkData.mjs +1 -1
  98. package/esm2020/lib/view-context/api/model/style.mjs +1 -1
  99. package/esm2020/lib/view-context/api/model/uiActionButtonDescriptor.mjs +1 -1
  100. package/esm2020/lib/view-context/api/model/uiActionButtonType.mjs +1 -1
  101. package/esm2020/lib/view-context/api/model/uiActionConstraint.mjs +1 -1
  102. package/esm2020/lib/view-context/api/model/uiActionDescriptor.mjs +1 -1
  103. package/esm2020/lib/view-context/api/model/uiActionDialogDescriptor.mjs +1 -1
  104. package/esm2020/lib/view-context/api/model/uiActionFeedbackType.mjs +1 -1
  105. package/esm2020/lib/view-context/api/model/uiActionInputType.mjs +1 -1
  106. package/esm2020/lib/view-context/api/model/uiActionRequest.mjs +1 -1
  107. package/esm2020/lib/view-context/api/model/uiActionTooltip.mjs +1 -1
  108. package/esm2020/lib/view-context/api/model/uiActionUploadDescriptor.mjs +1 -1
  109. package/esm2020/lib/view-context/api/model/valueSet.mjs +1 -1
  110. package/esm2020/lib/view-context/api/model/view.mjs +1 -1
  111. package/esm2020/lib/view-context/api/model/viewApiError.mjs +1 -1
  112. package/esm2020/lib/view-context/api/model/viewConstraint.mjs +1 -1
  113. package/esm2020/lib/view-context/api/model/viewContext.mjs +1 -1
  114. package/esm2020/lib/view-context/api/model/viewContextChange.mjs +1 -1
  115. package/esm2020/lib/view-context/api/model/viewContextData.mjs +1 -1
  116. package/esm2020/lib/view-context/api/model/viewContextUpdate.mjs +1 -1
  117. package/esm2020/lib/view-context/api/model/viewData.mjs +1 -1
  118. package/esm2020/lib/view-context/api/model/viewState.mjs +1 -1
  119. package/esm2020/lib/view-context/api/model/viewStateUpdate.mjs +1 -1
  120. package/esm2020/lib/view-context/api/model/viewType.mjs +1 -1
  121. package/esm2020/lib/view-context/api/param.mjs +1 -1
  122. package/esm2020/lib/view-context/api/variables.mjs +1 -1
  123. package/esm2020/lib/view-context/value-api/api/api.mjs +1 -1
  124. package/esm2020/lib/view-context/value-api/api/value.service.mjs +1 -1
  125. package/esm2020/lib/view-context/value-api/api.module.mjs +1 -1
  126. package/esm2020/lib/view-context/value-api/configuration.mjs +1 -1
  127. package/esm2020/lib/view-context/value-api/encoder.mjs +1 -1
  128. package/esm2020/lib/view-context/value-api/index.mjs +1 -1
  129. package/esm2020/lib/view-context/value-api/model/genericValue.mjs +1 -1
  130. package/esm2020/lib/view-context/value-api/model/models.mjs +1 -1
  131. package/esm2020/lib/view-context/value-api/model/value.mjs +1 -1
  132. package/esm2020/lib/view-context/value-api/model/valueSetDefinition.mjs +1 -1
  133. package/esm2020/lib/view-context/value-api/model/valueSetDefinitionIdentifier.mjs +1 -1
  134. package/esm2020/lib/view-context/value-api/model/valueSetOperand.mjs +1 -1
  135. package/esm2020/lib/view-context/value-api/param.mjs +1 -1
  136. package/esm2020/lib/view-context/value-api/variables.mjs +1 -1
  137. package/fesm2015/smartbit4all-ng-client.mjs +11 -4
  138. package/fesm2015/smartbit4all-ng-client.mjs.map +1 -1
  139. package/fesm2020/smartbit4all-ng-client.mjs +11 -4
  140. package/fesm2020/smartbit4all-ng-client.mjs.map +1 -1
  141. package/lib/smart-form/api/model/smartWidgetDefinition.d.ts +4 -0
  142. package/lib/smart-form/smartform.form-model.d.ts +1 -0
  143. package/package.json +1 -1
  144. package/smartbit4all-ng-client-3.3.98.tgz +0 -0
  145. package/src/lib/session/api/README.md +226 -226
  146. package/src/lib/smart-component-layout/api/README.md +226 -226
  147. package/src/lib/smart-filter-editor/api/README.md +226 -226
  148. package/src/lib/smart-grid/api/grid-api/README.md +226 -226
  149. package/src/lib/smart-tree/tree-api/README.md +226 -226
  150. package/src/lib/view-context/api/README.md +226 -226
  151. package/src/lib/view-context/value-api/README.md +226 -226
  152. package/smartbit4all-ng-client-3.3.96.tgz +0 -0
@@ -5,4 +5,4 @@ export var GridViewDescriptorKindEnum;
5
5
  GridViewDescriptorKindEnum["TREE"] = "TREE";
6
6
  })(GridViewDescriptorKindEnum || (GridViewDescriptorKindEnum = {}));
7
7
  ;
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZFZpZXdEZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZ3JpZC9hcGkvZ3JpZC1hcGkvbW9kZWwvZ3JpZFZpZXdEZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtDQSxNQUFNLENBQU4sSUFBWSwwQkFJWDtBQUpELFdBQVksMEJBQTBCO0lBQ2xDLDZDQUFlLENBQUE7SUFDZiw2Q0FBZSxDQUFBO0lBQ2YsMkNBQWEsQ0FBQTtBQUNqQixDQUFDLEVBSlcsMEJBQTBCLEtBQTFCLDBCQUEwQixRQUlyQztBQUFBLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdyaWQgYXBpXG4gKiBUaGUgZ3JpZCBhcGkgaXMgcmVzcG9zaWJsZSBmb3IgdGhlIGdyaWQgY29tcG9uZW50cyB0aGF0IHNob3dzIGEgbGlzdCBvZiBpdGVtLiBcbiAqXG4gKiBUaGUgdmVyc2lvbiBvZiB0aGUgT3BlbkFQSSBkb2N1bWVudDogMS4wLjBcbiAqIENvbnRhY3Q6IGluZm9AaXQ0YWxsLmh1XG4gKlxuICogTk9URTogVGhpcyBjbGFzcyBpcyBhdXRvIGdlbmVyYXRlZCBieSBPcGVuQVBJIEdlbmVyYXRvciAoaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoKS5cbiAqIGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaFxuICogRG8gbm90IGVkaXQgdGhlIGNsYXNzIG1hbnVhbGx5LlxuICovXG5pbXBvcnQgeyBHcmlkU2VsZWN0aW9uVHlwZSB9IGZyb20gJy4vZ3JpZFNlbGVjdGlvblR5cGUnO1xuaW1wb3J0IHsgR3JpZFNlbGVjdGlvbk1vZGUgfSBmcm9tICcuL2dyaWRTZWxlY3Rpb25Nb2RlJztcbmltcG9ydCB7IEdyaWRDb2x1bW5NZXRhIH0gZnJvbSAnLi9ncmlkQ29sdW1uTWV0YSc7XG5cblxuLyoqXG4gKiBUaGUgY29uZmlndXJhdGlvbiBvZiB0aGUgZ3JpZCB2aWV3LiBJdCBjYW4gYmUgYSBzaW1wbGUgdGFibGUgZ3JpZCBidXQgYSBjb21wbGV4IGNhcmQgcmVwcmVzZW50YXRpb24gYWxzby4gQSBtb2RlbCBoYXMgb25lIG9yIG1vcmUgdmlldyBvcHRpb24gdG8gcmVuZGVyIHRoZSBjb250ZW50LiBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHcmlkVmlld0Rlc2NyaXB0b3IgeyBcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBpY29uPzogc3RyaW5nO1xuICAgIGtpbmQ/OiBHcmlkVmlld0Rlc2NyaXB0b3JLaW5kRW51bTtcbiAgICAvKipcbiAgICAgKiBJbiB0aGUgdGFibGUgdGhlIGNvbHVtbnMgYXJlIHRoZSBjb2x1bW5zIG9mIHRoZSB0YWJsZS4gSW4gdGhlIHRyZWUgdGhlIGNvbHVtbnMgY2FuIGJlIHVzZWQgdG8gYXBwZW5kIHRoZSB0aXRsZSBvZiBhIHRyZWUgbm9kZS4gXG4gICAgICovXG4gICAgY29sdW1uczogQXJyYXk8R3JpZENvbHVtbk1ldGE+O1xuICAgIHNlbGVjdGlvbk1vZGU/OiBHcmlkU2VsZWN0aW9uTW9kZTtcbiAgICBzZWxlY3Rpb25UeXBlPzogR3JpZFNlbGVjdGlvblR5cGU7XG4gICAgcHJlc2VydmVTZWxlY3Rpb25PblBhZ2VDaGFuZ2U/OiBib29sZWFuO1xuICAgIHNob3dFZGl0Q29sdW1ucz86IGJvb2xlYW47XG4gICAgaGlnaGxpZ2h0UHJvcGVydHk/OiBzdHJpbmc7XG4gICAgaGlnaGxpZ2h0Q2xhc3M/OiBzdHJpbmc7XG59XG5leHBvcnQgZW51bSBHcmlkVmlld0Rlc2NyaXB0b3JLaW5kRW51bSB7XG4gICAgVEFCTEUgPSAnVEFCTEUnLFxuICAgIENBUkRTID0gJ0NBUkRTJyxcbiAgICBUUkVFID0gJ1RSRUUnXG59O1xuXG5cblxuIl19
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZFZpZXdEZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZ3JpZC9hcGkvZ3JpZC1hcGkvbW9kZWwvZ3JpZFZpZXdEZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtDQSxNQUFNLENBQU4sSUFBWSwwQkFJWDtBQUpELFdBQVksMEJBQTBCO0lBQ2xDLDZDQUFlLENBQUE7SUFDZiw2Q0FBZSxDQUFBO0lBQ2YsMkNBQWEsQ0FBQTtBQUNqQixDQUFDLEVBSlcsMEJBQTBCLEtBQTFCLDBCQUEwQixRQUlyQztBQUFBLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogR3JpZCBhcGlcclxuICogVGhlIGdyaWQgYXBpIGlzIHJlc3Bvc2libGUgZm9yIHRoZSBncmlkIGNvbXBvbmVudHMgdGhhdCBzaG93cyBhIGxpc3Qgb2YgaXRlbS4gXHJcbiAqXHJcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBPcGVuQVBJIGRvY3VtZW50OiAxLjAuMFxyXG4gKiBDb250YWN0OiBpbmZvQGl0NGFsbC5odVxyXG4gKlxyXG4gKiBOT1RFOiBUaGlzIGNsYXNzIGlzIGF1dG8gZ2VuZXJhdGVkIGJ5IE9wZW5BUEkgR2VuZXJhdG9yIChodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gpLlxyXG4gKiBodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2hcclxuICogRG8gbm90IGVkaXQgdGhlIGNsYXNzIG1hbnVhbGx5LlxyXG4gKi9cclxuaW1wb3J0IHsgR3JpZFNlbGVjdGlvblR5cGUgfSBmcm9tICcuL2dyaWRTZWxlY3Rpb25UeXBlJztcclxuaW1wb3J0IHsgR3JpZFNlbGVjdGlvbk1vZGUgfSBmcm9tICcuL2dyaWRTZWxlY3Rpb25Nb2RlJztcclxuaW1wb3J0IHsgR3JpZENvbHVtbk1ldGEgfSBmcm9tICcuL2dyaWRDb2x1bW5NZXRhJztcclxuXHJcblxyXG4vKipcclxuICogVGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGdyaWQgdmlldy4gSXQgY2FuIGJlIGEgc2ltcGxlIHRhYmxlIGdyaWQgYnV0IGEgY29tcGxleCBjYXJkIHJlcHJlc2VudGF0aW9uIGFsc28uIEEgbW9kZWwgaGFzIG9uZSBvciBtb3JlIHZpZXcgb3B0aW9uIHRvIHJlbmRlciB0aGUgY29udGVudC4gXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEdyaWRWaWV3RGVzY3JpcHRvciB7IFxyXG4gICAgbGFiZWw/OiBzdHJpbmc7XHJcbiAgICBpY29uPzogc3RyaW5nO1xyXG4gICAga2luZD86IEdyaWRWaWV3RGVzY3JpcHRvcktpbmRFbnVtO1xyXG4gICAgLyoqXHJcbiAgICAgKiBJbiB0aGUgdGFibGUgdGhlIGNvbHVtbnMgYXJlIHRoZSBjb2x1bW5zIG9mIHRoZSB0YWJsZS4gSW4gdGhlIHRyZWUgdGhlIGNvbHVtbnMgY2FuIGJlIHVzZWQgdG8gYXBwZW5kIHRoZSB0aXRsZSBvZiBhIHRyZWUgbm9kZS4gXHJcbiAgICAgKi9cclxuICAgIGNvbHVtbnM6IEFycmF5PEdyaWRDb2x1bW5NZXRhPjtcclxuICAgIHNlbGVjdGlvbk1vZGU/OiBHcmlkU2VsZWN0aW9uTW9kZTtcclxuICAgIHNlbGVjdGlvblR5cGU/OiBHcmlkU2VsZWN0aW9uVHlwZTtcclxuICAgIHByZXNlcnZlU2VsZWN0aW9uT25QYWdlQ2hhbmdlPzogYm9vbGVhbjtcclxuICAgIHNob3dFZGl0Q29sdW1ucz86IGJvb2xlYW47XHJcbiAgICBoaWdobGlnaHRQcm9wZXJ0eT86IHN0cmluZztcclxuICAgIGhpZ2hsaWdodENsYXNzPzogc3RyaW5nO1xyXG59XHJcbmV4cG9ydCBlbnVtIEdyaWRWaWV3RGVzY3JpcHRvcktpbmRFbnVtIHtcclxuICAgIFRBQkxFID0gJ1RBQkxFJyxcclxuICAgIENBUkRTID0gJ0NBUkRTJyxcclxuICAgIFRSRUUgPSAnVFJFRSdcclxufTtcclxuXHJcblxyXG5cclxuIl19
@@ -11,4 +11,4 @@ export * from './gridServerModel';
11
11
  export * from './gridUpdateData';
12
12
  export * from './gridView';
13
13
  export * from './gridViewDescriptor';
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZ3JpZC9hcGkvZ3JpZC1hcGkvbW9kZWwvbW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9ncmlkQ29sdW1uQ29udGVudFR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9ncmlkQ29sdW1uTWV0YSc7XG5leHBvcnQgKiBmcm9tICcuL2dyaWREYXRhQWNjZXNzQ29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vZ3JpZE1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZ3JpZFBhZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi9ncmlkUm93JztcbmV4cG9ydCAqIGZyb20gJy4vZ3JpZFNlbGVjdGlvbkNoYW5nZSc7XG5leHBvcnQgKiBmcm9tICcuL2dyaWRTZWxlY3Rpb25Nb2RlJztcbmV4cG9ydCAqIGZyb20gJy4vZ3JpZFNlbGVjdGlvblR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9ncmlkU2VydmVyTW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9ncmlkVXBkYXRlRGF0YSc7XG5leHBvcnQgKiBmcm9tICcuL2dyaWRWaWV3JztcbmV4cG9ydCAqIGZyb20gJy4vZ3JpZFZpZXdEZXNjcmlwdG9yJztcbiJdfQ==
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZ3JpZC9hcGkvZ3JpZC1hcGkvbW9kZWwvbW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9ncmlkQ29sdW1uQ29udGVudFR5cGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2dyaWRDb2x1bW5NZXRhJztcclxuZXhwb3J0ICogZnJvbSAnLi9ncmlkRGF0YUFjY2Vzc0NvbmZpZyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZ3JpZE1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9ncmlkUGFnZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZ3JpZFJvdyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZ3JpZFNlbGVjdGlvbkNoYW5nZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZ3JpZFNlbGVjdGlvbk1vZGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2dyaWRTZWxlY3Rpb25UeXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9ncmlkU2VydmVyTW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2dyaWRVcGRhdGVEYXRhJztcclxuZXhwb3J0ICogZnJvbSAnLi9ncmlkVmlldyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZ3JpZFZpZXdEZXNjcmlwdG9yJztcclxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1ncmlkL2FwaS9ncmlkLWFwaS9wYXJhbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTdGFuZGFyZCBwYXJhbWV0ZXIgc3R5bGVzIGRlZmluZWQgYnkgT3BlbkFQSSBzcGVjXG4gKi9cbmV4cG9ydCB0eXBlIFN0YW5kYXJkUGFyYW1TdHlsZSA9XG4gIHwgJ21hdHJpeCdcbiAgfCAnbGFiZWwnXG4gIHwgJ2Zvcm0nXG4gIHwgJ3NpbXBsZSdcbiAgfCAnc3BhY2VEZWxpbWl0ZWQnXG4gIHwgJ3BpcGVEZWxpbWl0ZWQnXG4gIHwgJ2RlZXBPYmplY3QnXG4gIDtcblxuLyoqXG4gKiBUaGUgT3BlbkFQSSBzdGFuZGFyZCB7QGxpbmsgU3RhbmRhcmRQYXJhbVN0eWxlfXMgbWF5IGJlIGV4dGVuZGVkIGJ5IGN1c3RvbSBzdHlsZXMgYnkgdGhlIHVzZXIuXG4gKi9cbmV4cG9ydCB0eXBlIFBhcmFtU3R5bGUgPSBTdGFuZGFyZFBhcmFtU3R5bGUgfCBzdHJpbmc7XG5cbi8qKlxuICogU3RhbmRhcmQgcGFyYW1ldGVyIGxvY2F0aW9ucyBkZWZpbmVkIGJ5IE9wZW5BUEkgc3BlY1xuICovXG5leHBvcnQgdHlwZSBQYXJhbUxvY2F0aW9uID0gJ3F1ZXJ5JyB8ICdoZWFkZXInIHwgJ3BhdGgnIHwgJ2Nvb2tpZSc7XG5cbi8qKlxuICogU3RhbmRhcmQgdHlwZXMgYXMgZGVmaW5lZCBpbiA8YSBocmVmPVwiaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vI2RhdGEtdHlwZXNcIj5PcGVuQVBJIFNwZWNpZmljYXRpb246IERhdGEgVHlwZXM8L2E+XG4gKi9cbmV4cG9ydCB0eXBlIFN0YW5kYXJkRGF0YVR5cGUgPVxuICB8IFwiaW50ZWdlclwiXG4gIHwgXCJudW1iZXJcIlxuICB8IFwiYm9vbGVhblwiXG4gIHwgXCJzdHJpbmdcIlxuICB8IFwib2JqZWN0XCJcbiAgfCBcImFycmF5XCJcbiAgO1xuXG4vKipcbiAqIFN0YW5kYXJkIHtAbGluayBEYXRhVHlwZX1zIHBsdXMgeW91ciBvd24gdHlwZXMvY2xhc3Nlcy5cbiAqL1xuZXhwb3J0IHR5cGUgRGF0YVR5cGUgPSBTdGFuZGFyZERhdGFUeXBlIHwgc3RyaW5nO1xuXG4vKipcbiAqIFN0YW5kYXJkIGZvcm1hdHMgYXMgZGVmaW5lZCBpbiA8YSBocmVmPVwiaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vI2RhdGEtdHlwZXNcIj5PcGVuQVBJIFNwZWNpZmljYXRpb246IERhdGEgVHlwZXM8L2E+XG4gKi9cbmV4cG9ydCB0eXBlIFN0YW5kYXJkRGF0YUZvcm1hdCA9XG4gIHwgXCJpbnQzMlwiXG4gIHwgXCJpbnQ2NFwiXG4gIHwgXCJmbG9hdFwiXG4gIHwgXCJkb3VibGVcIlxuICB8IFwiYnl0ZVwiXG4gIHwgXCJiaW5hcnlcIlxuICB8IFwiZGF0ZVwiXG4gIHwgXCJkYXRlLXRpbWVcIlxuICB8IFwicGFzc3dvcmRcIlxuICA7XG5cbmV4cG9ydCB0eXBlIERhdGFGb3JtYXQgPSBTdGFuZGFyZERhdGFGb3JtYXQgfCBzdHJpbmc7XG5cbi8qKlxuICogVGhlIHBhcmFtZXRlciB0byBlbmNvZGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyYW0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHZhbHVlOiB1bmtub3duO1xuICBpbjogUGFyYW1Mb2NhdGlvbjtcbiAgc3R5bGU6IFBhcmFtU3R5bGUsXG4gIGV4cGxvZGU6IGJvb2xlYW47XG4gIGRhdGFUeXBlOiBEYXRhVHlwZTtcbiAgZGF0YUZvcm1hdDogRGF0YUZvcm1hdCB8IHVuZGVmaW5lZDtcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1ncmlkL2FwaS9ncmlkLWFwaS9wYXJhbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFN0YW5kYXJkIHBhcmFtZXRlciBzdHlsZXMgZGVmaW5lZCBieSBPcGVuQVBJIHNwZWNcclxuICovXHJcbmV4cG9ydCB0eXBlIFN0YW5kYXJkUGFyYW1TdHlsZSA9XHJcbiAgfCAnbWF0cml4J1xyXG4gIHwgJ2xhYmVsJ1xyXG4gIHwgJ2Zvcm0nXHJcbiAgfCAnc2ltcGxlJ1xyXG4gIHwgJ3NwYWNlRGVsaW1pdGVkJ1xyXG4gIHwgJ3BpcGVEZWxpbWl0ZWQnXHJcbiAgfCAnZGVlcE9iamVjdCdcclxuICA7XHJcblxyXG4vKipcclxuICogVGhlIE9wZW5BUEkgc3RhbmRhcmQge0BsaW5rIFN0YW5kYXJkUGFyYW1TdHlsZX1zIG1heSBiZSBleHRlbmRlZCBieSBjdXN0b20gc3R5bGVzIGJ5IHRoZSB1c2VyLlxyXG4gKi9cclxuZXhwb3J0IHR5cGUgUGFyYW1TdHlsZSA9IFN0YW5kYXJkUGFyYW1TdHlsZSB8IHN0cmluZztcclxuXHJcbi8qKlxyXG4gKiBTdGFuZGFyZCBwYXJhbWV0ZXIgbG9jYXRpb25zIGRlZmluZWQgYnkgT3BlbkFQSSBzcGVjXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBQYXJhbUxvY2F0aW9uID0gJ3F1ZXJ5JyB8ICdoZWFkZXInIHwgJ3BhdGgnIHwgJ2Nvb2tpZSc7XHJcblxyXG4vKipcclxuICogU3RhbmRhcmQgdHlwZXMgYXMgZGVmaW5lZCBpbiA8YSBocmVmPVwiaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vI2RhdGEtdHlwZXNcIj5PcGVuQVBJIFNwZWNpZmljYXRpb246IERhdGEgVHlwZXM8L2E+XHJcbiAqL1xyXG5leHBvcnQgdHlwZSBTdGFuZGFyZERhdGFUeXBlID1cclxuICB8IFwiaW50ZWdlclwiXHJcbiAgfCBcIm51bWJlclwiXHJcbiAgfCBcImJvb2xlYW5cIlxyXG4gIHwgXCJzdHJpbmdcIlxyXG4gIHwgXCJvYmplY3RcIlxyXG4gIHwgXCJhcnJheVwiXHJcbiAgO1xyXG5cclxuLyoqXHJcbiAqIFN0YW5kYXJkIHtAbGluayBEYXRhVHlwZX1zIHBsdXMgeW91ciBvd24gdHlwZXMvY2xhc3Nlcy5cclxuICovXHJcbmV4cG9ydCB0eXBlIERhdGFUeXBlID0gU3RhbmRhcmREYXRhVHlwZSB8IHN0cmluZztcclxuXHJcbi8qKlxyXG4gKiBTdGFuZGFyZCBmb3JtYXRzIGFzIGRlZmluZWQgaW4gPGEgaHJlZj1cImh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLyNkYXRhLXR5cGVzXCI+T3BlbkFQSSBTcGVjaWZpY2F0aW9uOiBEYXRhIFR5cGVzPC9hPlxyXG4gKi9cclxuZXhwb3J0IHR5cGUgU3RhbmRhcmREYXRhRm9ybWF0ID1cclxuICB8IFwiaW50MzJcIlxyXG4gIHwgXCJpbnQ2NFwiXHJcbiAgfCBcImZsb2F0XCJcclxuICB8IFwiZG91YmxlXCJcclxuICB8IFwiYnl0ZVwiXHJcbiAgfCBcImJpbmFyeVwiXHJcbiAgfCBcImRhdGVcIlxyXG4gIHwgXCJkYXRlLXRpbWVcIlxyXG4gIHwgXCJwYXNzd29yZFwiXHJcbiAgO1xyXG5cclxuZXhwb3J0IHR5cGUgRGF0YUZvcm1hdCA9IFN0YW5kYXJkRGF0YUZvcm1hdCB8IHN0cmluZztcclxuXHJcbi8qKlxyXG4gKiBUaGUgcGFyYW1ldGVyIHRvIGVuY29kZS5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGFyYW0ge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICB2YWx1ZTogdW5rbm93bjtcclxuICBpbjogUGFyYW1Mb2NhdGlvbjtcclxuICBzdHlsZTogUGFyYW1TdHlsZSxcclxuICBleHBsb2RlOiBib29sZWFuO1xyXG4gIGRhdGFUeXBlOiBEYXRhVHlwZTtcclxuICBkYXRhRm9ybWF0OiBEYXRhRm9ybWF0IHwgdW5kZWZpbmVkO1xyXG59XHJcbiJdfQ==
@@ -6,4 +6,4 @@ export const COLLECTION_FORMATS = {
6
6
  'ssv': ' ',
7
7
  'pipes': '|'
8
8
  };
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFibGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZ3JpZC9hcGkvZ3JpZC1hcGkvdmFyaWFibGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLElBQUksY0FBYyxDQUFTLFVBQVUsQ0FBQyxDQUFDO0FBQ2hFLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQzlCLEtBQUssRUFBRSxHQUFHO0lBQ1YsS0FBSyxFQUFFLEtBQUs7SUFDWixLQUFLLEVBQUUsR0FBRztJQUNWLE9BQU8sRUFBRSxHQUFHO0NBQ2YsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBCQVNFX1BBVEggPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignYmFzZVBhdGgnKTtcbmV4cG9ydCBjb25zdCBDT0xMRUNUSU9OX0ZPUk1BVFMgPSB7XG4gICAgJ2Nzdic6ICcsJyxcbiAgICAndHN2JzogJyAgICcsXG4gICAgJ3Nzdic6ICcgJyxcbiAgICAncGlwZXMnOiAnfCdcbn1cbiJdfQ==
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFibGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZ3JpZC9hcGkvZ3JpZC1hcGkvdmFyaWFibGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLElBQUksY0FBYyxDQUFTLFVBQVUsQ0FBQyxDQUFDO0FBQ2hFLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQzlCLEtBQUssRUFBRSxHQUFHO0lBQ1YsS0FBSyxFQUFFLEtBQUs7SUFDWixLQUFLLEVBQUUsR0FBRztJQUNWLE9BQU8sRUFBRSxHQUFHO0NBQ2YsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5leHBvcnQgY29uc3QgQkFTRV9QQVRIID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ2Jhc2VQYXRoJyk7XHJcbmV4cG9ydCBjb25zdCBDT0xMRUNUSU9OX0ZPUk1BVFMgPSB7XHJcbiAgICAnY3N2JzogJywnLFxyXG4gICAgJ3Rzdic6ICcgICAnLFxyXG4gICAgJ3Nzdic6ICcgJyxcclxuICAgICdwaXBlcyc6ICd8J1xyXG59XHJcbiJdfQ==
@@ -371,7 +371,6 @@ export class Table {
371
371
  return length > 0;
372
372
  }
373
373
  catch (error) {
374
- console.error(`The type of property ${button.menuItemButtonsPropertyName} is not a list.`);
375
374
  return false;
376
375
  }
377
376
  }
@@ -491,4 +490,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
491
490
  }], smartTable: [{
492
491
  type: Input
493
492
  }] } });
494
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC10YWJsZS90YWJsZXMvdGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBSUwsU0FBUyxFQUNULFlBQVksRUFDWixnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXhELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHL0IsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0scUVBQXFFLENBQUM7QUFDbkgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDM0UsT0FBTyxFQUdMLG9CQUFvQixFQUVwQiw0QkFBNEIsRUFDNUIsK0JBQStCLEVBQy9CLGVBQWUsRUFDZixjQUFjLEdBQ2YsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBSTdCLE1BQU0sT0FBTyxLQUFLO0lBdUJoQixZQUFzQixTQUFrQztRQUFsQyxjQUFTLEdBQVQsU0FBUyxDQUF5QjtRQXRCakQsY0FBUyxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBWWhELGNBQVMsR0FBRyxjQUFjLENBQUM7UUFDM0IseUJBQW9CLEdBQUcsb0JBQW9CLENBQUM7UUFDNUMsb0JBQWUsR0FBVSxFQUFFLENBQUM7UUFDNUIsY0FBUyxHQUE4QixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBS3JELHVCQUFrQixHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBSTNDLDJCQUFzQixHQUFHLENBQUMsVUFBZSxFQUFFLEtBQWEsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXRFLHFCQUFnQixHQUFHLG1CQUFtQixDQUFDO0lBSkksQ0FBQztJQU01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O3NCQUFqQyxTQUFTO3VCQUFDLFNBQVM7Z0JBRVgsVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbXBvbmVudFJlZixcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0NoaWxkcmVuLFxyXG4gIFZpZXdDb250YWluZXJSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRoZW1lUGFsZXR0ZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xyXG5pbXBvcnQgeyBNYXRUYWJsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRGYWN0b3J5U2VydmljZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudC1mYWN0b3J5LXNlcnZpY2UvcHJvamVjdHMnO1xyXG5pbXBvcnQgeyBJbWFnZVJlc291cmNlLCBVaUFjdGlvbiwgVWlBY3Rpb25Ub29sdGlwIH0gZnJvbSAnLi4vLi4vdmlldy1jb250ZXh0L2FwaS9tb2RlbC9tb2RlbHMnO1xyXG5pbXBvcnQgeyBEZWZhdWx0QWN0aW9uc1BvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9kZWZhdWx0LWFjdGlvbnMtcG9wdXAvZGVmYXVsdC1hY3Rpb25zLXBvcHVwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExvYWRpbmdDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2xvYWRpbmcvbG9hZGluZy5jb21wb25lbnQnO1xyXG5pbXBvcnQge1xyXG4gIFNtYXJ0VGFibGUsXHJcbiAgU21hcnRUYWJsZUJ1dHRvbixcclxuICBTbWFydFRhYmxlQnV0dG9uVHlwZSxcclxuICBTbWFydFRhYmxlSGVhZGVyLFxyXG4gIFNtYXJ0VGFibGVIZWFkZXJQcm9wZXJ0eVR5cGUsXHJcbiAgU21hcnRUYWJsZU9wdGlvbkJ1dHRvbkRpcmVjdGlvbixcclxuICBTbWFydFRhYmxlT3JkZXIsXHJcbiAgU21hcnRUYWJsZVR5cGUsXHJcbn0gZnJvbSAnLi4vc21hcnR0YWJsZS5tb2RlbCc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlOiAnJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRhYmxlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHB1YmxpYyBfZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG4gIEBWaWV3Q2hpbGRyZW4oTWF0TWVudVRyaWdnZXIpIHRyaWdnZXJzITogUXVlcnlMaXN0PE1hdE1lbnVUcmlnZ2VyPjtcclxuICBAVmlld0NoaWxkcmVuKCdleHBhbmRlZEFyZWEnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcclxuICB2Y1JlZj86IFZpZXdDb250YWluZXJSZWZbXTtcclxuICBjb21wb25lbnRSZWY/OiBDb21wb25lbnRSZWY8YW55PjtcclxuXHJcbiAgQFZpZXdDaGlsZHJlbihEZWZhdWx0QWN0aW9uc1BvcHVwQ29tcG9uZW50KVxyXG4gIGRlZmF1bHRBY3Rpb25NZW51Q29tcG9uZW50cyE6IFF1ZXJ5TGlzdDxEZWZhdWx0QWN0aW9uc1BvcHVwQ29tcG9uZW50PjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnbXlUYWJsZScpIG15VGFibGVDaGlsZCE6IE1hdFRhYmxlPGFueT47XHJcblxyXG4gIEBJbnB1dCgpIHNtYXJ0VGFibGUhOiBTbWFydFRhYmxlPGFueT47XHJcbiAgdGFibGVUeXBlID0gU21hcnRUYWJsZVR5cGU7XHJcbiAgc21hcnRUYWJsZUJ1dHRvblR5cGUgPSBTbWFydFRhYmxlQnV0dG9uVHlwZTtcclxuICBoaWdobGlnaHRlZFJvd3M6IGFueVtdID0gW107XHJcbiAgc29ydEV2ZW50OiBTdWJqZWN0PFNtYXJ0VGFibGVIZWFkZXI+ID0gbmV3IFN1YmplY3QoKTtcclxuICBleHBhbmRlZEVsZW1lbnQ6IGFueSB8IG51bGw7XHJcblxyXG4gIGVsZW1lbnQ/OiBhbnk7XHJcblxyXG4gIG9uU2VsZWN0aW9uQ2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBjZlNlcnZpY2U6IENvbXBvbmVudEZhY3RvcnlTZXJ2aWNlKSB7fVxyXG5cclxuICBwdWJsaWMgYXN5bmNUcmFuc2xhdGlvblJlc3VsdCA9ICh0cmFuc2xhdG9yOiBhbnksIHBhcmFtOiBzdHJpbmcpID0+IHRyYW5zbGF0b3IocGFyYW0pO1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgQUNUSU9OX1NFUEVSQVRPUiA9ICdfYWN0aW9uU2VwYXJhdG9yXyc7XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5zb3J0YWJsZSkgdGhpcy5zb3J0RXZlbnQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlT25Sb3dDbGljayhlbGVtZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUudGFibGVUeXBlID09PSBTbWFydFRhYmxlVHlwZS5JTkhFUklURUQpIHtcclxuICAgICAgdGhpcy5vblJvd0NsaWNrKGVsZW1lbnQpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNtYXJ0VGFibGUudGFibGVUeXBlID09PSBTbWFydFRhYmxlVHlwZS5DSEVDS19CT1gpIHtcclxuICAgICAgaWYgKCF0aGlzLnNtYXJ0VGFibGUub25Sb3dEb3VibGVDbGljayAmJiAhdGhpcy5zbWFydFRhYmxlLm9uUm93Q2xpY2spIHtcclxuICAgICAgICB0aGlzLnNldFNlbGVjdGlvbihcclxuICAgICAgICAgIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb25Qcm9wZXJ0eVxyXG4gICAgICAgICAgICA/IHRoaXMuc21hcnRUYWJsZS5nZXRWYWx1ZURlZXBseShlbGVtZW50LCB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHkpXHJcbiAgICAgICAgICAgIDogZWxlbWVudFxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zbWFydFRhYmxlLm9uUm93Q2xpY2spIHtcclxuICAgICAgICB0aGlzLm9uUm93Q2xpY2soZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5zbWFydFRhYmxlLnRhYmxlVHlwZSA9PT0gU21hcnRUYWJsZVR5cGUuUk9XX1NFTEVDVCkge1xyXG4gICAgICB0aGlzLnNldFNlbGVjdGlvbihcclxuICAgICAgICB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHlcclxuICAgICAgICAgID8gdGhpcy5zbWFydFRhYmxlLmdldFZhbHVlRGVlcGx5KGVsZW1lbnQsIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb25Qcm9wZXJ0eSlcclxuICAgICAgICAgIDogZWxlbWVudFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlU21hcnRUYWJsZShzbWFydFRhYmxlOiBTbWFydFRhYmxlPGFueT4pOiB2b2lkIHtcclxuICAgIHRoaXMuc21hcnRUYWJsZSA9IHNtYXJ0VGFibGU7XHJcbiAgICB0aGlzLnJlbmRlclJvd3MoKTtcclxuICB9XHJcblxyXG4gIHJlbmRlclJvd3MoKTogdm9pZCB7XHJcbiAgICB0aGlzLm15VGFibGVDaGlsZC5yZW5kZXJSb3dzKCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVPblJvd0RvdWJsZUNsaWNrKGVsZW1lbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5kZWZhdWx0QWN0aW9ucyAmJiB0aGlzLnNtYXJ0VGFibGUuZGVmYXVsdEFjdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLm9wZW5EZWZhdWx0QWN0aW9uc01lbnUoZWxlbWVudCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5zbWFydFRhYmxlLnRhYmxlVHlwZSA9PT0gU21hcnRUYWJsZVR5cGUuSU5IRVJJVEVEKSB7XHJcbiAgICAgICAgdGhpcy5vblJvd0RvdWJsZUNsaWNrKGVsZW1lbnQpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc21hcnRUYWJsZS50YWJsZVR5cGUgPT09IFNtYXJ0VGFibGVUeXBlLkNIRUNLX0JPWCkge1xyXG4gICAgICAgIGlmICh0aGlzLnNtYXJ0VGFibGUub25Sb3dEb3VibGVDbGljaykge1xyXG4gICAgICAgICAgdGhpcy5vblJvd0RvdWJsZUNsaWNrKGVsZW1lbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdHlwZSgpOiB0eXBlb2YgU21hcnRUYWJsZUhlYWRlclByb3BlcnR5VHlwZSB7XHJcbiAgICByZXR1cm4gU21hcnRUYWJsZUhlYWRlclByb3BlcnR5VHlwZTtcclxuICB9XHJcblxyXG4gIHNvcnRCdXR0b25DbGlja2VkKGV2ZW50OiBhbnksIGhlYWRlcjogU21hcnRUYWJsZUhlYWRlcikge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLnNvcnRFdmVudC5uZXh0KGhlYWRlcik7XHJcbiAgfVxyXG5cclxuICBjdXN0b21CdXR0b25DbGlja2VkKFxyXG4gICAgZXZlbnQ6IGFueSxcclxuICAgIGJ1dHRvbjogU21hcnRUYWJsZUJ1dHRvbixcclxuICAgIGVsZW1lbnQ6IGFueSxcclxuICAgIGJ0bj86IGFueSxcclxuICAgIGNsb3NlPzogYm9vbGVhblxyXG4gICkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgaWYgKGJ1dHRvbi50eXBlID09PSBTbWFydFRhYmxlQnV0dG9uVHlwZS5NRU5VICYmIGJ0biA9PT0gdW5kZWZpbmVkKSByZXR1cm47XHJcblxyXG4gICAgaWYgKCFidXR0b24uY2FsbGJhY2spIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBCdXR0b24gd2l0aCBuYW1lICR7YnV0dG9uLmxhYmVsIHx8IGJ1dHRvbi5pY29ufSBkb2VzIG5vdCBoYXZlIGEgY2FsbGJhY2shYCk7XHJcbiAgICB9XHJcbiAgICBidXR0b24uY2FsbGJhY2soYnV0dG9uLmFyZ3MsIGVsZW1lbnQsIGJ0bik7XHJcbiAgICBpZiAoY2xvc2UpIHtcclxuICAgICAgbGV0IG9wZW5NZW51cyA9IHRoaXMudHJpZ2dlcnMuZmlsdGVyKFxyXG4gICAgICAgIChtYXRNZW51VHJpZ2dlcjogTWF0TWVudVRyaWdnZXIpID0+IG1hdE1lbnVUcmlnZ2VyLm1lbnVPcGVuXHJcbiAgICAgICk7XHJcbiAgICAgIG9wZW5NZW51cy5mb3JFYWNoKChtYXRNZW51VHJpZ2dlcjogTWF0TWVudVRyaWdnZXIpID0+IHtcclxuICAgICAgICBtYXRNZW51VHJpZ2dlci5jbG9zZU1lbnUoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc1NvcnRhYmxlKGhlYWRlcjogU21hcnRUYWJsZUhlYWRlcik6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGlzU29ydGFibGVUYWJsZSA9IHRoaXMuc21hcnRUYWJsZS5zb3J0YWJsZTtcclxuICAgIGlmIChpc1NvcnRhYmxlVGFibGUpIHtcclxuICAgICAgcmV0dXJuIGhlYWRlci5pc1NvcnRhYmxlICE9PSB1bmRlZmluZWQgPyBoZWFkZXIuaXNTb3J0YWJsZSA6IHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZXRTb3J0SWNvbihoZWFkZXI6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICBsZXQgdGFibGVIZWFkZXIgPSB0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnM/LmZpbmQoXHJcbiAgICAgICh0YWJsZUhlYWRlcjogU21hcnRUYWJsZUhlYWRlcikgPT4gdGFibGVIZWFkZXIucHJvcGVydHlOYW1lID09PSBoZWFkZXJcclxuICAgICk7XHJcbiAgICBpZiAodGFibGVIZWFkZXIgJiYgdGFibGVIZWFkZXIub3JkZXIpIHtcclxuICAgICAgcmV0dXJuIHRhYmxlSGVhZGVyLm9yZGVyID09PSBTbWFydFRhYmxlT3JkZXIuQVNDXHJcbiAgICAgICAgPyB0aGlzLnNtYXJ0VGFibGUuc29ydEljb25Bc2MgPz8gJ2tleWJvYXJkX2Fycm93X2Rvd24nXHJcbiAgICAgICAgOiB0aGlzLnNtYXJ0VGFibGUuc29ydEljb25EZXNjID8/ICdrZXlib2FyZF9hcnJvd191cCc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuICBoYXNTb3J0TnVtSWNvbihoZWFkZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHRhYmxlSGVhZGVyID0gdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzPy5maW5kKFxyXG4gICAgICAodGFibGVIZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpID0+IHRhYmxlSGVhZGVyLnByb3BlcnR5TmFtZSA9PT0gaGVhZGVyXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIHRhYmxlSGVhZGVyPy5vcmRlck51bWJlciAhPT0gdW5kZWZpbmVkO1xyXG4gIH1cclxuICBnZXRTb3J0TnVtSWNvbihoZWFkZXI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgdGFibGVIZWFkZXIgPSB0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnM/LmZpbmQoXHJcbiAgICAgICh0YWJsZUhlYWRlcjogU21hcnRUYWJsZUhlYWRlcikgPT4gdGFibGVIZWFkZXIucHJvcGVydHlOYW1lID09PSBoZWFkZXJcclxuICAgICk7XHJcbiAgICBpZiAodGFibGVIZWFkZXIgJiYgdGFibGVIZWFkZXIub3JkZXJOdW1iZXIpIHtcclxuICAgICAgcmV0dXJuIGBmaWx0ZXJfJHt0YWJsZUhlYWRlci5vcmRlck51bWJlcn1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgZ2V0VG9vbFRpcChlbGVtZW50OiBhbnksIGhlYWRlckluZGV4OiBudW1iZXIpOiBVaUFjdGlvblRvb2x0aXAgfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKCF0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnMpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDdXN0b21UYWJsZUhlYWRlcnMgcHJvcGVydHkgaXMgbWlzc2luZycpO1xyXG4gICAgfSBlbHNlIGlmICghdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2hlYWRlckluZGV4XS5wcm9wZXJ0aWVzKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VzdG9tVGFibGVIZWFkZXIgd2l0aCBpbmRleCAke2hlYWRlckluZGV4fSBkb2VzIG5vdCBoYXZlIHByb3BlcnRpZXNgKTtcclxuICAgIH0gZWxzZSBpZiAoIXRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1toZWFkZXJJbmRleF0ucHJvcGVydGllcyEuaWNvbnMpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDdXN0b21UYWJsZUhlYWRlciB3aXRoIGluZGV4ICR7aGVhZGVySW5kZXh9IGRvZXMgbm90IGhhdmUgaWNvbnMgZGVmaW5lZGApO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCB0b29sVGlwQ29sdW1uID1cclxuICAgICAgdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2hlYWRlckluZGV4XS5wcm9wZXJ0aWVzPy50b29sVGlwQ29sdW1uO1xyXG4gICAgcmV0dXJuIHRvb2xUaXBDb2x1bW4gPyB0aGlzLmdldFZhbHVlKGVsZW1lbnQsIHRvb2xUaXBDb2x1bW4pIDogdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgZ2V0SWNvbih2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiwgaGVhZGVySW5kZXg6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBpZiAoIXRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVycykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0N1c3RvbVRhYmxlSGVhZGVycyBwcm9wZXJ0eSBpcyBtaXNzaW5nJyk7XHJcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaGVhZGVySW5kZXhdLnByb3BlcnRpZXMpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDdXN0b21UYWJsZUhlYWRlciB3aXRoIGluZGV4ICR7aGVhZGVySW5kZXh9IGRvZXMgbm90IGhhdmUgcHJvcGVydGllc2ApO1xyXG4gICAgfSBlbHNlIGlmICghdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2hlYWRlckluZGV4XS5wcm9wZXJ0aWVzIS5pY29ucykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1c3RvbVRhYmxlSGVhZGVyIHdpdGggaW5kZXggJHtoZWFkZXJJbmRleH0gZG9lcyBub3QgaGF2ZSBpY29ucyBkZWZpbmVkYCk7XHJcbiAgICB9XHJcbiAgICBsZXQgY3VzdG9tVGFibGVIZWFkZXJJY29ucyA9XHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1toZWFkZXJJbmRleF0ucHJvcGVydGllcyEuaWNvbnM7XHJcblxyXG4gICAgbGV0IGljb246IHN0cmluZyA9ICcnO1xyXG5cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY3VzdG9tVGFibGVIZWFkZXJJY29ucyEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGN1c3RvbVRhYmxlSGVhZGVySWNvbiA9IGN1c3RvbVRhYmxlSGVhZGVySWNvbnMhW2ldO1xyXG4gICAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlTnVsbCAmJlxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZU51bGwgPT09IHZhbHVlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBpY29uID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmljb247XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlQmlnZ2VyVGhhbk51bWJlciAmJlxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUJpZ2dlclRoYW5OdW1iZXIgPCB2YWx1ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgaWNvbiA9IGN1c3RvbVRhYmxlSGVhZGVySWNvbi5pY29uO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVTbWFsbGVyVGhhbk51bWJlciAmJlxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZVNtYWxsZXJUaGFuTnVtYmVyID4gdmFsdWVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGljb24gPSBjdXN0b21UYWJsZUhlYWRlckljb24uaWNvbjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlRXF1YWxzV2l0aE51bWJlciAmJlxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUVxdWFsc1dpdGhOdW1iZXIgPT09IHZhbHVlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBpY29uID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmljb247XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVFcXVhbHNXaXRoU3RyaW5nICYmXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlRXF1YWxzV2l0aFN0cmluZyA9PT0gdmFsdWVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGljb24gPSBjdXN0b21UYWJsZUhlYWRlckljb24uaWNvbjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVCb29sZWFuICYmXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlQm9vbGVhbiA9PT0gdmFsdWVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGljb24gPSBjdXN0b21UYWJsZUhlYWRlckljb24uaWNvbjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBpY29uO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29sb3IodmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4sIGhlYWRlckluZGV4OiBudW1iZXIpOiBUaGVtZVBhbGV0dGUge1xyXG4gICAgaWYgKCF0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnMpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDdXN0b21UYWJsZUhlYWRlcnMgcHJvcGVydHkgaXMgbWlzc2luZycpO1xyXG4gICAgfSBlbHNlIGlmICghdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2hlYWRlckluZGV4XS5wcm9wZXJ0aWVzKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VzdG9tVGFibGVIZWFkZXIgd2l0aCBpbmRleCAke2hlYWRlckluZGV4fSBkb2VzIG5vdCBoYXZlIHByb3BlcnRpZXNgKTtcclxuICAgIH0gZWxzZSBpZiAoIXRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1toZWFkZXJJbmRleF0ucHJvcGVydGllcyEuaWNvbnMpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDdXN0b21UYWJsZUhlYWRlciB3aXRoIGluZGV4ICR7aGVhZGVySW5kZXh9IGRvZXMgbm90IGhhdmUgaWNvbnMgZGVmaW5lZGApO1xyXG4gICAgfVxyXG4gICAgbGV0IGN1c3RvbVRhYmxlSGVhZGVySWNvbnMgPVxyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaGVhZGVySW5kZXhdLnByb3BlcnRpZXMhLmljb25zO1xyXG5cclxuICAgIGxldCBjb2xvcjogVGhlbWVQYWxldHRlID0gJ3ByaW1hcnknO1xyXG5cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY3VzdG9tVGFibGVIZWFkZXJJY29ucyEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGN1c3RvbVRhYmxlSGVhZGVySWNvbiA9IGN1c3RvbVRhYmxlSGVhZGVySWNvbnMhW2ldO1xyXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVCaWdnZXJUaGFuTnVtYmVyICYmXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlQmlnZ2VyVGhhbk51bWJlciA8IHZhbHVlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBjb2xvciA9IGN1c3RvbVRhYmxlSGVhZGVySWNvbi5jb2xvcjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlU21hbGxlclRoYW5OdW1iZXIgJiZcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVTbWFsbGVyVGhhbk51bWJlciA+IHZhbHVlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBjb2xvciA9IGN1c3RvbVRhYmxlSGVhZGVySWNvbi5jb2xvcjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlRXF1YWxzV2l0aE51bWJlciAmJlxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUVxdWFsc1dpdGhOdW1iZXIgPT09IHZhbHVlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBjb2xvciA9IGN1c3RvbVRhYmxlSGVhZGVySWNvbi5jb2xvcjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUVxdWFsc1dpdGhTdHJpbmcgJiZcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVFcXVhbHNXaXRoU3RyaW5nID09PSB2YWx1ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgY29sb3IgPSBjdXN0b21UYWJsZUhlYWRlckljb24uY29sb3I7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlQm9vbGVhbiAmJlxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUJvb2xlYW4gPT09IHZhbHVlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBjb2xvciA9IGN1c3RvbVRhYmxlSGVhZGVySWNvbi5jb2xvcjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjb2xvcjtcclxuICB9XHJcblxyXG4gIHRhYmxlT3B0aW9uQnV0dG9uRGlyZWN0aW9uKCk6IHR5cGVvZiBTbWFydFRhYmxlT3B0aW9uQnV0dG9uRGlyZWN0aW9uIHtcclxuICAgIHJldHVybiBTbWFydFRhYmxlT3B0aW9uQnV0dG9uRGlyZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgaXNBbGxTZWxlY3RlZCgpIHtcclxuICAgIGNvbnN0IG51bVNlbGVjdGVkID0gdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvbiEuc2VsZWN0ZWQubGVuZ3RoO1xyXG4gICAgY29uc3QgbnVtUm93cyA9IHRoaXMuc21hcnRUYWJsZS50YWJsZVJvd3MubGVuZ3RoO1xyXG4gICAgcmV0dXJuIG51bVNlbGVjdGVkID09PSBudW1Sb3dzO1xyXG4gIH1cclxuXHJcbiAgLyoqIFNlbGVjdHMgYWxsIHJvd3MgaWYgdGhleSBhcmUgbm90IGFsbCBzZWxlY3RlZDsgb3RoZXJ3aXNlIGNsZWFyIHNlbGVjdGlvbi4gKi9cclxuICB0b2dnbGVBbGxSb3dzKCkge1xyXG4gICAgaWYgKHRoaXMuaXNBbGxTZWxlY3RlZCgpKSB7XHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb24hLmNsZWFyKCk7XHJcblxyXG4gICAgICBpZiAodGhpcy5zbWFydFRhYmxlLm9uQWxsU2VsZWN0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5zbWFydFRhYmxlLm9uQWxsU2VsZWN0aW9uKGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLm1heE51bU9mU2VsZWN0YWJsZVJvd3MpIHtcclxuICAgICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvbiEuY2xlYXIoKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnNtYXJ0VGFibGUub25BbGxTZWxlY3Rpb24pIHtcclxuICAgICAgICB0aGlzLnNtYXJ0VGFibGUub25BbGxTZWxlY3Rpb24oZmFsc2UpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb25Qcm9wZXJ0eSkge1xyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uIS5zZWxlY3QoXHJcbiAgICAgICAgLi4udGhpcy5zbWFydFRhYmxlLnRhYmxlUm93cy5tYXAoKHJvdzogYW55KSA9PlxyXG4gICAgICAgICAgdGhpcy5zbWFydFRhYmxlLmdldFZhbHVlRGVlcGx5KHJvdywgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvblByb3BlcnR5ISlcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uIS5zZWxlY3QoLi4udGhpcy5zbWFydFRhYmxlLnRhYmxlUm93cyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLm9uQWxsU2VsZWN0aW9uKSB7XHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS5vbkFsbFNlbGVjdGlvbih0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBUaGUgbGFiZWwgZm9yIHRoZSBjaGVja2JveCBvbiB0aGUgcGFzc2VkIHJvdyAqL1xyXG4gIGNoZWNrYm94TGFiZWwocm93PzogYW55KTogc3RyaW5nIHtcclxuICAgIGlmICghcm93KSB7XHJcbiAgICAgIHJldHVybiBgJHt0aGlzLmlzQWxsU2VsZWN0ZWQoKSA/ICdkZXNlbGVjdCcgOiAnc2VsZWN0J30gYWxsYDtcclxuICAgIH1cclxuICAgIHJldHVybiBgJHt0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uIS5pc1NlbGVjdGVkKHJvdykgPyAnZGVzZWxlY3QnIDogJ3NlbGVjdCd9IHJvdyAke1xyXG4gICAgICByb3cucG9zaXRpb24gKyAxXHJcbiAgICB9YDtcclxuICB9XHJcblxyXG4gIGlzSGlnaGxpZ2h0ZWQocm93OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUuaGlnaGxpZ2h0UHJvcGVydHkpIHtcclxuICAgICAgaWYgKHJvd1snZGF0YSddW3RoaXMuc21hcnRUYWJsZS5oaWdobGlnaHRQcm9wZXJ0eV0pIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5oaWdobGlnaHRlZFJvd3MgfHwgIXRoaXMuaGlnaGxpZ2h0ZWRSb3dzLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5oaWdobGlnaHRlZFJvd3MuaW5jbHVkZXMocm93KTtcclxuICB9XHJcblxyXG4gIG9uUm93Q2xpY2socm93OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUuaGlnaGxpZ2h0T25Sb3dDbGljaykge1xyXG4gICAgICBpZiAodGhpcy5pc0hpZ2hsaWdodGVkKHJvdykpIHtcclxuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLmhpZ2hsaWdodGVkUm93cy5pbmRleE9mKHJvdywgMCk7XHJcbiAgICAgICAgdGhpcy5oaWdobGlnaHRlZFJvd3Muc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgfSBlbHNlIGlmICghdGhpcy5oaWdobGlnaHRlZFJvd3MgfHwgIXRoaXMuaGlnaGxpZ2h0ZWRSb3dzLmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRSb3dzID0gW107XHJcbiAgICAgICAgdGhpcy5oaWdobGlnaHRlZFJvd3MucHVzaChyb3cpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRSb3dzLnB1c2gocm93KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5leHBhbmRhYmxlICYmICF0aGlzLnNtYXJ0VGFibGUub25Sb3dEb3VibGVDbGljaykge1xyXG4gICAgICB0aGlzLm9uVG9nZ2xlKHJvdyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLm9uUm93Q2xpY2spIHtcclxuICAgICAgdGhpcy5zbWFydFRhYmxlLm9uUm93Q2xpY2socm93KTtcclxuICAgIH1cclxuICB9XHJcbiAgb25Sb3dEb3VibGVDbGljayhyb3c6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5oaWdobGlnaHRPblJvd0NsaWNrKSB7XHJcbiAgICAgIGlmICh0aGlzLmlzSGlnaGxpZ2h0ZWQocm93KSkge1xyXG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMuaGlnaGxpZ2h0ZWRSb3dzLmluZGV4T2Yocm93LCAwKTtcclxuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkUm93cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLmhpZ2hsaWdodGVkUm93cyB8fCAhdGhpcy5oaWdobGlnaHRlZFJvd3MubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5oaWdobGlnaHRlZFJvd3MgPSBbXTtcclxuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkUm93cy5wdXNoKHJvdyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5oaWdobGlnaHRlZFJvd3MucHVzaChyb3cpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLm9uUm93RG91YmxlQ2xpY2spIHtcclxuICAgICAgdGhpcy5zbWFydFRhYmxlLm9uUm93RG91YmxlQ2xpY2socm93KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIG9uVG9nZ2xlKGVsZW1lbnQ6IGFueSwgZXZlbnQ/OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICghdGhpcy5zbWFydFRhYmxlLnJvd0V4cGFuZGVyKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAnU21hcnRUYWJsZVJvd0V4cGFuZGVyIG5vdCBmb3VuZCEuIFBsZWFzZSBwcm92aWRlIGEgU21hcnRUYWJsZVJvd0V4cGFuZGVyIGltcGxlbWVudGF0aW9uLidcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBvbGRJbmRleCA9IHRoaXMuc21hcnRUYWJsZS50YWJsZVJvd3MuZmluZEluZGV4KFxyXG4gICAgICAoZWxlbWVudCkgPT4gZWxlbWVudCA9PT0gdGhpcy5leHBhbmRlZEVsZW1lbnRcclxuICAgICk7XHJcbiAgICBpZiAob2xkSW5kZXggIT09IC0xKSB7XHJcbiAgICAgIGxldCByZWYgPSB0aGlzLnZjUmVmIS5maWx0ZXIoKGVsZW1lbnQ6IGFueSwgaW5kZXg6IG51bWJlcikgPT4gaW5kZXggPT09IG9sZEluZGV4KTtcclxuICAgICAgcmVmWzBdLmNsZWFyKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmV4cGFuZGVkRWxlbWVudCA9IHRoaXMuZXhwYW5kZWRFbGVtZW50ID09PSBlbGVtZW50ID8gbnVsbCA6IGVsZW1lbnQ7XHJcblxyXG4gICAgbGV0IG5ld0luZGV4ID0gdGhpcy5zbWFydFRhYmxlLnRhYmxlUm93cy5maW5kSW5kZXgoXHJcbiAgICAgIChlbGVtZW50KSA9PiBlbGVtZW50ID09PSB0aGlzLmV4cGFuZGVkRWxlbWVudFxyXG4gICAgKTtcclxuXHJcbiAgICBsZXQgcm93RGF0YVJlc3BvbnNlO1xyXG5cclxuICAgIGlmIChuZXdJbmRleCAhPT0gLTEpIHtcclxuICAgICAgaWYgKHRoaXMuc21hcnRUYWJsZS5hc3luY09uRXhwYW5kKSB7XHJcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLmNmU2VydmljZS5jcmVhdGVDb21wb25lbnQoXHJcbiAgICAgICAgICB0aGlzLnZjUmVmPy5maWx0ZXIoKGVsZW1lbnQ6IGFueSwgaW5kZXg6IG51bWJlcikgPT4gaW5kZXggPT09IG5ld0luZGV4KVswXSEsXHJcbiAgICAgICAgICBMb2FkaW5nQ29tcG9uZW50LFxyXG4gICAgICAgICAgbmV3IE1hcDxzdHJpbmcsIGFueT4oKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHJvd0RhdGFSZXNwb25zZSA9IGF3YWl0IHRoaXMuc21hcnRUYWJsZS5yb3dFeHBhbmRlcj8uZXhwYW5kQXN5bmMobmV3SW5kZXgpO1xyXG5cclxuICAgICAgICBsZXQgcmVmID0gdGhpcy52Y1JlZiEuZmlsdGVyKChlbGVtZW50OiBhbnksIGluZGV4OiBudW1iZXIpID0+IGluZGV4ID09PSBuZXdJbmRleClbMF0hO1xyXG4gICAgICAgIHJlZi5jbGVhcigpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMuY2ZTZXJ2aWNlLmNyZWF0ZUNvbXBvbmVudChcclxuICAgICAgICB0aGlzLnZjUmVmPy5maWx0ZXIoKGVsZW1lbnQ6IGFueSwgaW5kZXg6IG51bWJlcikgPT4gaW5kZXggPT09IG5ld0luZGV4KVswXSEsXHJcbiAgICAgICAgdGhpcy5zbWFydFRhYmxlLmV4cGFuZGVkQ29tcG9uZW50LFxyXG4gICAgICAgIG5ldyBNYXA8c3RyaW5nLCBhbnk+KFtbJ3Jvd0RhdGEnLCByb3dEYXRhUmVzcG9uc2VdXSlcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuZWxlbWVudCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFNlbGVjdGlvbihlbGVtZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5zbWFydFRhYmxlLm1heE51bU9mU2VsZWN0YWJsZVJvd3MgJiZcclxuICAgICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvbiEuc2VsZWN0ZWQubGVuZ3RoID09PSB0aGlzLnNtYXJ0VGFibGUubWF4TnVtT2ZTZWxlY3RhYmxlUm93c1xyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb24/LnRvZ2dsZShlbGVtZW50KTtcclxuICAgIHRoaXMub25TZWxlY3Rpb25DaGFuZ2VkLm5leHQoKTtcclxuXHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLm9uU2VsZWN0aW9uKSB7XHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS5vblNlbGVjdGlvbihlbGVtZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNob3dNZW51QnV0dG9uKGVsZW1lbnQ6IGFueSwgYnV0dG9uOiBTbWFydFRhYmxlQnV0dG9uKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoYnV0dG9uLm1lbnVJdGVtQnV0dG9ucykge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSBpZiAoYnV0dG9uLm1lbnVJdGVtQnV0dG9uc1Byb3BlcnR5TmFtZSkge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGxldCBsZW5ndGggPSB0aGlzLmdldFZhbHVlKGVsZW1lbnQsIGJ1dHRvbi5tZW51SXRlbUJ1dHRvbnNQcm9wZXJ0eU5hbWUhKS5sZW5ndGg7XHJcblxyXG4gICAgICAgIHJldHVybiBsZW5ndGggPiAwO1xyXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYFRoZSB0eXBlIG9mIHByb3BlcnR5ICR7YnV0dG9uLm1lbnVJdGVtQnV0dG9uc1Byb3BlcnR5TmFtZX0gaXMgbm90IGEgbGlzdC5gKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGdldFZhbHVlKGVsZW1lbnQ6IGFueSwgaGVhZGVyOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgbGV0IGhlYWRlcnMgPSBoZWFkZXIuc3BsaXQoJy4nKTtcclxuICAgIGlmIChoZWFkZXJzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgbGV0IHZhbHVlOiBhbnkgPSBlbGVtZW50O1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgaGVhZGVycy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBlbGVtZW50ID0gaGVhZGVyc1tpbmRleF07XHJcbiAgICAgICAgdmFsdWUgPSB2YWx1ZVtlbGVtZW50XTtcclxuICAgICAgICBpZiAoIXZhbHVlICYmIGluZGV4ICE9PSBoZWFkZXJzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBlbGVtZW50W2hlYWRlcl07XHJcbiAgfVxyXG5cclxuICBzaG93QnV0dG9uKGJ1dHRvbjogU21hcnRUYWJsZUJ1dHRvbiwgZWxlbWVudDogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAoYnV0dG9uLnNob3dCdXR0b25JZikge1xyXG4gICAgICByZXR1cm4gYnV0dG9uLnNob3dCdXR0b25JZihlbGVtZW50KTtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgaXNEaXNhYmxlZChlbGVtZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUuaXNSb3dEaXNhYmxlZFByb3BlcnR5TmFtZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5zbWFydFRhYmxlLmdldFZhbHVlRGVlcGx5KGVsZW1lbnQsIHRoaXMuc21hcnRUYWJsZS5pc1Jvd0Rpc2FibGVkUHJvcGVydHlOYW1lKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5zbWFydFRhYmxlLnNlbGVjdGFibGVQcm9wZXJ0eU5hbWUpIHtcclxuICAgICAgY29uc3Qgc2VsZWN0YWJsZSA9IHRoaXMuc21hcnRUYWJsZS5nZXRWYWx1ZURlZXBseShcclxuICAgICAgICBlbGVtZW50LFxyXG4gICAgICAgIHRoaXMuc21hcnRUYWJsZS5zZWxlY3RhYmxlUHJvcGVydHlOYW1lXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybiBzZWxlY3RhYmxlID09PSB1bmRlZmluZWQgfHwgc2VsZWN0YWJsZSA9PT0gbnVsbCA/IGZhbHNlIDogIXNlbGVjdGFibGU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBpc1NlbGVjdGVkKGVsZW1lbnQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvbj8uaXNTZWxlY3RlZChcclxuICAgICAgICB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHlcclxuICAgICAgICAgID8gdGhpcy5zbWFydFRhYmxlLmdldFZhbHVlRGVlcGx5KGVsZW1lbnQsIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb25Qcm9wZXJ0eSlcclxuICAgICAgICAgIDogZWxlbWVudFxyXG4gICAgICApID8/IGZhbHNlXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvcmlnaW5hbFByb3BlcnR5KGhlYWRlcjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmIChoZWFkZXIuc3RhcnRzV2l0aCgnZGF0YS4nKSkge1xyXG4gICAgICByZXR1cm4gaGVhZGVyLnN1YnN0cmluZygnZGF0YS4nLmxlbmd0aCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaGVhZGVyO1xyXG4gIH1cclxuXHJcbiAgaXNJbWFnZVJlc291cmNlKGVsZW1lbnQ6IGFueSwgaGVhZGVyOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGlmICghZWxlbWVudC5pY29ucykge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBsZXQgcHJvcGVydHkgPSB0aGlzLm9yaWdpbmFsUHJvcGVydHkoaGVhZGVyKTtcclxuICAgIHJldHVybiBPYmplY3Qua2V5cyhlbGVtZW50Lmljb25zKS5zb21lKChrZXkpID0+IGtleSA9PT0gcHJvcGVydHkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW1hZ2VSZXNvdXJjZUljb25zKGVsZW1lbnQ6IGFueSwgaGVhZGVyOiBzdHJpbmcpOiBJbWFnZVJlc291cmNlW10ge1xyXG4gICAgaWYgKGVsZW1lbnQ/Lmljb25zKSB7XHJcbiAgICAgIGxldCBpY29uQ29kZXMgPSBlbGVtZW50Py5pY29uc1t0aGlzLm9yaWdpbmFsUHJvcGVydHkoaGVhZGVyKV07XHJcbiAgICAgIHJldHVybiBpY29uQ29kZXM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gW107XHJcbiAgfVxyXG5cclxuICBnZXRJbWFnZVJlc291cmNlSWNvbihlbGVtZW50OiBhbnksIGhlYWRlcjogc3RyaW5nKTogYW55IHtcclxuICAgIHJldHVybiBlbGVtZW50Lmljb25zW3RoaXMub3JpZ2luYWxQcm9wZXJ0eShoZWFkZXIpXS5pZGVudGlmaWVyO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW1hZ2VSZXNvdXJjZUNvbG9yKGVsZW1lbnQ6IGFueSwgaGVhZGVyOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgcmV0dXJuIGVsZW1lbnQuaWNvbnNbdGhpcy5vcmlnaW5hbFByb3BlcnR5KGhlYWRlcildLmNvbG9yID8/ICdwcmltYXJ5JztcclxuICB9XHJcblxyXG4gIGdldEltYWdlUmVzb3VyY2VTdHlsZShyZXNvdXJjZTogSW1hZ2VSZXNvdXJjZSk6IGFueSB7XHJcbiAgICByZXR1cm4gcmVzb3VyY2Uuc3R5bGUgPyByZXNvdXJjZS5zdHlsZSA6IHt9O1xyXG4gIH1cclxuXHJcbiAgb3BlbkRlZmF1bHRBY3Rpb25zTWVudShyb3c6IGFueSkge1xyXG4gICAgbGV0IGFjdGlvbkNvZGVzRnJvbVJvdyA9IHJvdz8uYWN0aW9ucz8ubWFwKChhY3Rpb246IFVpQWN0aW9uKSA9PiBhY3Rpb24uY29kZSk7XHJcbiAgICBpZiAoIWFjdGlvbkNvZGVzRnJvbVJvdykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgZmlsdGVyZWRBY3Rpb25zID0gdGhpcy5zbWFydFRhYmxlLmRlZmF1bHRBY3Rpb25zPy5maWx0ZXIoKGFjdGlvbjogU21hcnRUYWJsZUJ1dHRvbikgPT5cclxuICAgICAgYWN0aW9uQ29kZXNGcm9tUm93LmluY2x1ZGVzKGFjdGlvbi5jb2RlISlcclxuICAgICk7XHJcblxyXG4gICAgaWYgKGZpbHRlcmVkQWN0aW9ucyAmJiBmaWx0ZXJlZEFjdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBpZiAoZmlsdGVyZWRBY3Rpb25zLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgIGlmICh0aGlzLnNtYXJ0VGFibGUub25Sb3dEb3VibGVDbGljaykge1xyXG4gICAgICAgICAgdGhpcy5zbWFydFRhYmxlLm9uUm93RG91YmxlQ2xpY2socm93KTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5kZWZhdWx0QWN0aW9uTWVudUNvbXBvbmVudHNcclxuICAgICAgICAudG9BcnJheSgpXHJcbiAgICAgICAgLmZpbmQoKGNvbXA6IERlZmF1bHRBY3Rpb25zUG9wdXBDb21wb25lbnQpID0+IGNvbXAucm93LmlkID09PSByb3cuaWQpXHJcbiAgICAgICAgPy5vcGVuRGVmYXVsdEFjdGlvbnNNZW51KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXREZWZhdWx0QWN0aW9uc0ZvclJvdyhlbGVtZW50OiBhbnkpOiBTbWFydFRhYmxlQnV0dG9uW10gfCB1bmRlZmluZWQge1xyXG4gICAgbGV0IGFjdGlvbkNvZGVzRnJvbVJvdyA9IGVsZW1lbnQ/LmFjdGlvbnM/Lm1hcCgoYWN0aW9uOiBVaUFjdGlvbikgPT4gYWN0aW9uLmNvZGUpO1xyXG4gICAgaWYgKGFjdGlvbkNvZGVzRnJvbVJvdykge1xyXG4gICAgICByZXR1cm4gdGhpcy5zbWFydFRhYmxlLmRlZmF1bHRBY3Rpb25zPy5maWx0ZXIoKGFjdGlvbjogU21hcnRUYWJsZUJ1dHRvbikgPT5cclxuICAgICAgICBhY3Rpb25Db2Rlc0Zyb21Sb3cuaW5jbHVkZXMoYWN0aW9uLmNvZGUhKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcbn1cclxuIl19
493
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC10YWJsZS90YWJsZXMvdGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBSUwsU0FBUyxFQUNULFlBQVksRUFDWixnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXhELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHL0IsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0scUVBQXFFLENBQUM7QUFDbkgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDM0UsT0FBTyxFQUdMLG9CQUFvQixFQUVwQiw0QkFBNEIsRUFDNUIsK0JBQStCLEVBQy9CLGVBQWUsRUFDZixjQUFjLEdBQ2YsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBSTdCLE1BQU0sT0FBTyxLQUFLO0lBdUJoQixZQUFzQixTQUFrQztRQUFsQyxjQUFTLEdBQVQsU0FBUyxDQUF5QjtRQXRCakQsY0FBUyxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBWWhELGNBQVMsR0FBRyxjQUFjLENBQUM7UUFDM0IseUJBQW9CLEdBQUcsb0JBQW9CLENBQUM7UUFDNUMsb0JBQWUsR0FBVSxFQUFFLENBQUM7UUFDNUIsY0FBUyxHQUE4QixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBS3JELHVCQUFrQixHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBSTNDLDJCQUFzQixHQUFHLENBQUMsVUFBZSxFQUFFLEtBQWEsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXRFLHFCQUFnQixHQUFHLG1CQUFtQixDQUFDO0lBSkksQ0FBQztJQU01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bXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBDb21wb25lbnRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBRdWVyeUxpc3QsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdDaGlsZHJlbixcclxuICBWaWV3Q29udGFpbmVyUmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUaGVtZVBhbGV0dGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcclxuaW1wb3J0IHsgTWF0TWVudVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcclxuaW1wb3J0IHsgTWF0VGFibGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50RmFjdG9yeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21wb25lbnQtZmFjdG9yeS1zZXJ2aWNlL3Byb2plY3RzJztcclxuaW1wb3J0IHsgSW1hZ2VSZXNvdXJjZSwgVWlBY3Rpb24sIFVpQWN0aW9uVG9vbHRpcCB9IGZyb20gJy4uLy4uL3ZpZXctY29udGV4dC9hcGkvbW9kZWwvbW9kZWxzJztcclxuaW1wb3J0IHsgRGVmYXVsdEFjdGlvbnNQb3B1cENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvZGVmYXVsdC1hY3Rpb25zLXBvcHVwL2RlZmF1bHQtYWN0aW9ucy1wb3B1cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMb2FkaW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9sb2FkaW5nL2xvYWRpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICBTbWFydFRhYmxlLFxyXG4gIFNtYXJ0VGFibGVCdXR0b24sXHJcbiAgU21hcnRUYWJsZUJ1dHRvblR5cGUsXHJcbiAgU21hcnRUYWJsZUhlYWRlcixcclxuICBTbWFydFRhYmxlSGVhZGVyUHJvcGVydHlUeXBlLFxyXG4gIFNtYXJ0VGFibGVPcHRpb25CdXR0b25EaXJlY3Rpb24sXHJcbiAgU21hcnRUYWJsZU9yZGVyLFxyXG4gIFNtYXJ0VGFibGVUeXBlLFxyXG59IGZyb20gJy4uL3NtYXJ0dGFibGUubW9kZWwnO1xyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZTogJycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJsZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwdWJsaWMgX2Rlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuICBAVmlld0NoaWxkcmVuKE1hdE1lbnVUcmlnZ2VyKSB0cmlnZ2VycyE6IFF1ZXJ5TGlzdDxNYXRNZW51VHJpZ2dlcj47XHJcbiAgQFZpZXdDaGlsZHJlbignZXhwYW5kZWRBcmVhJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pXHJcbiAgdmNSZWY/OiBWaWV3Q29udGFpbmVyUmVmW107XHJcbiAgY29tcG9uZW50UmVmPzogQ29tcG9uZW50UmVmPGFueT47XHJcblxyXG4gIEBWaWV3Q2hpbGRyZW4oRGVmYXVsdEFjdGlvbnNQb3B1cENvbXBvbmVudClcclxuICBkZWZhdWx0QWN0aW9uTWVudUNvbXBvbmVudHMhOiBRdWVyeUxpc3Q8RGVmYXVsdEFjdGlvbnNQb3B1cENvbXBvbmVudD47XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ215VGFibGUnKSBteVRhYmxlQ2hpbGQhOiBNYXRUYWJsZTxhbnk+O1xyXG5cclxuICBASW5wdXQoKSBzbWFydFRhYmxlITogU21hcnRUYWJsZTxhbnk+O1xyXG4gIHRhYmxlVHlwZSA9IFNtYXJ0VGFibGVUeXBlO1xyXG4gIHNtYXJ0VGFibGVCdXR0b25UeXBlID0gU21hcnRUYWJsZUJ1dHRvblR5cGU7XHJcbiAgaGlnaGxpZ2h0ZWRSb3dzOiBhbnlbXSA9IFtdO1xyXG4gIHNvcnRFdmVudDogU3ViamVjdDxTbWFydFRhYmxlSGVhZGVyPiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgZXhwYW5kZWRFbGVtZW50OiBhbnkgfCBudWxsO1xyXG5cclxuICBlbGVtZW50PzogYW55O1xyXG5cclxuICBvblNlbGVjdGlvbkNoYW5nZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgY2ZTZXJ2aWNlOiBDb21wb25lbnRGYWN0b3J5U2VydmljZSkge31cclxuXHJcbiAgcHVibGljIGFzeW5jVHJhbnNsYXRpb25SZXN1bHQgPSAodHJhbnNsYXRvcjogYW55LCBwYXJhbTogc3RyaW5nKSA9PiB0cmFuc2xhdG9yKHBhcmFtKTtcclxuXHJcbiAgcHVibGljIHJlYWRvbmx5IEFDVElPTl9TRVBFUkFUT1IgPSAnX2FjdGlvblNlcGFyYXRvcl8nO1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUuc29ydGFibGUpIHRoaXMuc29ydEV2ZW50ID0gbmV3IFN1YmplY3QoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZU9uUm93Q2xpY2soZWxlbWVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLnRhYmxlVHlwZSA9PT0gU21hcnRUYWJsZVR5cGUuSU5IRVJJVEVEKSB7XHJcbiAgICAgIHRoaXMub25Sb3dDbGljayhlbGVtZW50KTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5zbWFydFRhYmxlLnRhYmxlVHlwZSA9PT0gU21hcnRUYWJsZVR5cGUuQ0hFQ0tfQk9YKSB7XHJcbiAgICAgIGlmICghdGhpcy5zbWFydFRhYmxlLm9uUm93RG91YmxlQ2xpY2sgJiYgIXRoaXMuc21hcnRUYWJsZS5vblJvd0NsaWNrKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb24oXHJcbiAgICAgICAgICB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHlcclxuICAgICAgICAgICAgPyB0aGlzLnNtYXJ0VGFibGUuZ2V0VmFsdWVEZWVwbHkoZWxlbWVudCwgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvblByb3BlcnR5KVxyXG4gICAgICAgICAgICA6IGVsZW1lbnRcclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc21hcnRUYWJsZS5vblJvd0NsaWNrKSB7XHJcbiAgICAgICAgdGhpcy5vblJvd0NsaWNrKGVsZW1lbnQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuc21hcnRUYWJsZS50YWJsZVR5cGUgPT09IFNtYXJ0VGFibGVUeXBlLlJPV19TRUxFQ1QpIHtcclxuICAgICAgdGhpcy5zZXRTZWxlY3Rpb24oXHJcbiAgICAgICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvblByb3BlcnR5XHJcbiAgICAgICAgICA/IHRoaXMuc21hcnRUYWJsZS5nZXRWYWx1ZURlZXBseShlbGVtZW50LCB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHkpXHJcbiAgICAgICAgICA6IGVsZW1lbnRcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZVNtYXJ0VGFibGUoc21hcnRUYWJsZTogU21hcnRUYWJsZTxhbnk+KTogdm9pZCB7XHJcbiAgICB0aGlzLnNtYXJ0VGFibGUgPSBzbWFydFRhYmxlO1xyXG4gICAgdGhpcy5yZW5kZXJSb3dzKCk7XHJcbiAgfVxyXG5cclxuICByZW5kZXJSb3dzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5teVRhYmxlQ2hpbGQucmVuZGVyUm93cygpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlT25Sb3dEb3VibGVDbGljayhlbGVtZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUuZGVmYXVsdEFjdGlvbnMgJiYgdGhpcy5zbWFydFRhYmxlLmRlZmF1bHRBY3Rpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5vcGVuRGVmYXVsdEFjdGlvbnNNZW51KGVsZW1lbnQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuc21hcnRUYWJsZS50YWJsZVR5cGUgPT09IFNtYXJ0VGFibGVUeXBlLklOSEVSSVRFRCkge1xyXG4gICAgICAgIHRoaXMub25Sb3dEb3VibGVDbGljayhlbGVtZW50KTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNtYXJ0VGFibGUudGFibGVUeXBlID09PSBTbWFydFRhYmxlVHlwZS5DSEVDS19CT1gpIHtcclxuICAgICAgICBpZiAodGhpcy5zbWFydFRhYmxlLm9uUm93RG91YmxlQ2xpY2spIHtcclxuICAgICAgICAgIHRoaXMub25Sb3dEb3VibGVDbGljayhlbGVtZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHR5cGUoKTogdHlwZW9mIFNtYXJ0VGFibGVIZWFkZXJQcm9wZXJ0eVR5cGUge1xyXG4gICAgcmV0dXJuIFNtYXJ0VGFibGVIZWFkZXJQcm9wZXJ0eVR5cGU7XHJcbiAgfVxyXG5cclxuICBzb3J0QnV0dG9uQ2xpY2tlZChldmVudDogYW55LCBoZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5zb3J0RXZlbnQubmV4dChoZWFkZXIpO1xyXG4gIH1cclxuXHJcbiAgY3VzdG9tQnV0dG9uQ2xpY2tlZChcclxuICAgIGV2ZW50OiBhbnksXHJcbiAgICBidXR0b246IFNtYXJ0VGFibGVCdXR0b24sXHJcbiAgICBlbGVtZW50OiBhbnksXHJcbiAgICBidG4/OiBhbnksXHJcbiAgICBjbG9zZT86IGJvb2xlYW5cclxuICApIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGlmIChidXR0b24udHlwZSA9PT0gU21hcnRUYWJsZUJ1dHRvblR5cGUuTUVOVSAmJiBidG4gPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xyXG5cclxuICAgIGlmICghYnV0dG9uLmNhbGxiYWNrKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQnV0dG9uIHdpdGggbmFtZSAke2J1dHRvbi5sYWJlbCB8fCBidXR0b24uaWNvbn0gZG9lcyBub3QgaGF2ZSBhIGNhbGxiYWNrIWApO1xyXG4gICAgfVxyXG4gICAgYnV0dG9uLmNhbGxiYWNrKGJ1dHRvbi5hcmdzLCBlbGVtZW50LCBidG4pO1xyXG4gICAgaWYgKGNsb3NlKSB7XHJcbiAgICAgIGxldCBvcGVuTWVudXMgPSB0aGlzLnRyaWdnZXJzLmZpbHRlcihcclxuICAgICAgICAobWF0TWVudVRyaWdnZXI6IE1hdE1lbnVUcmlnZ2VyKSA9PiBtYXRNZW51VHJpZ2dlci5tZW51T3BlblxyXG4gICAgICApO1xyXG4gICAgICBvcGVuTWVudXMuZm9yRWFjaCgobWF0TWVudVRyaWdnZXI6IE1hdE1lbnVUcmlnZ2VyKSA9PiB7XHJcbiAgICAgICAgbWF0TWVudVRyaWdnZXIuY2xvc2VNZW51KCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNTb3J0YWJsZShoZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpOiBib29sZWFuIHtcclxuICAgIGxldCBpc1NvcnRhYmxlVGFibGUgPSB0aGlzLnNtYXJ0VGFibGUuc29ydGFibGU7XHJcbiAgICBpZiAoaXNTb3J0YWJsZVRhYmxlKSB7XHJcbiAgICAgIHJldHVybiBoZWFkZXIuaXNTb3J0YWJsZSAhPT0gdW5kZWZpbmVkID8gaGVhZGVyLmlzU29ydGFibGUgOiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0U29ydEljb24oaGVhZGVyOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgbGV0IHRhYmxlSGVhZGVyID0gdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzPy5maW5kKFxyXG4gICAgICAodGFibGVIZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpID0+IHRhYmxlSGVhZGVyLnByb3BlcnR5TmFtZSA9PT0gaGVhZGVyXHJcbiAgICApO1xyXG4gICAgaWYgKHRhYmxlSGVhZGVyICYmIHRhYmxlSGVhZGVyLm9yZGVyKSB7XHJcbiAgICAgIHJldHVybiB0YWJsZUhlYWRlci5vcmRlciA9PT0gU21hcnRUYWJsZU9yZGVyLkFTQ1xyXG4gICAgICAgID8gdGhpcy5zbWFydFRhYmxlLnNvcnRJY29uQXNjID8/ICdrZXlib2FyZF9hcnJvd19kb3duJ1xyXG4gICAgICAgIDogdGhpcy5zbWFydFRhYmxlLnNvcnRJY29uRGVzYyA/PyAna2V5Ym9hcmRfYXJyb3dfdXAnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcbiAgaGFzU29ydE51bUljb24oaGVhZGVyOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGxldCB0YWJsZUhlYWRlciA9IHRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVycz8uZmluZChcclxuICAgICAgKHRhYmxlSGVhZGVyOiBTbWFydFRhYmxlSGVhZGVyKSA9PiB0YWJsZUhlYWRlci5wcm9wZXJ0eU5hbWUgPT09IGhlYWRlclxyXG4gICAgKTtcclxuICAgIHJldHVybiB0YWJsZUhlYWRlcj8ub3JkZXJOdW1iZXIgIT09IHVuZGVmaW5lZDtcclxuICB9XHJcbiAgZ2V0U29ydE51bUljb24oaGVhZGVyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IHRhYmxlSGVhZGVyID0gdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzPy5maW5kKFxyXG4gICAgICAodGFibGVIZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpID0+IHRhYmxlSGVhZGVyLnByb3BlcnR5TmFtZSA9PT0gaGVhZGVyXHJcbiAgICApO1xyXG4gICAgaWYgKHRhYmxlSGVhZGVyICYmIHRhYmxlSGVhZGVyLm9yZGVyTnVtYmVyKSB7XHJcbiAgICAgIHJldHVybiBgZmlsdGVyXyR7dGFibGVIZWFkZXIub3JkZXJOdW1iZXJ9YDtcclxuICAgIH1cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIGdldFRvb2xUaXAoZWxlbWVudDogYW55LCBoZWFkZXJJbmRleDogbnVtYmVyKTogVWlBY3Rpb25Ub29sdGlwIHwgdW5kZWZpbmVkIHtcclxuICAgIGlmICghdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ3VzdG9tVGFibGVIZWFkZXJzIHByb3BlcnR5IGlzIG1pc3NpbmcnKTtcclxuICAgIH0gZWxzZSBpZiAoIXRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1toZWFkZXJJbmRleF0ucHJvcGVydGllcykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1c3RvbVRhYmxlSGVhZGVyIHdpdGggaW5kZXggJHtoZWFkZXJJbmRleH0gZG9lcyBub3QgaGF2ZSBwcm9wZXJ0aWVzYCk7XHJcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaGVhZGVySW5kZXhdLnByb3BlcnRpZXMhLmljb25zKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VzdG9tVGFibGVIZWFkZXIgd2l0aCBpbmRleCAke2hlYWRlckluZGV4fSBkb2VzIG5vdCBoYXZlIGljb25zIGRlZmluZWRgKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgdG9vbFRpcENvbHVtbiA9XHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1toZWFkZXJJbmRleF0ucHJvcGVydGllcz8udG9vbFRpcENvbHVtbjtcclxuICAgIHJldHVybiB0b29sVGlwQ29sdW1uID8gdGhpcy5nZXRWYWx1ZShlbGVtZW50LCB0b29sVGlwQ29sdW1uKSA6IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIGdldEljb24odmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4sIGhlYWRlckluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnMpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDdXN0b21UYWJsZUhlYWRlcnMgcHJvcGVydHkgaXMgbWlzc2luZycpO1xyXG4gICAgfSBlbHNlIGlmICghdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2hlYWRlckluZGV4XS5wcm9wZXJ0aWVzKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VzdG9tVGFibGVIZWFkZXIgd2l0aCBpbmRleCAke2hlYWRlckluZGV4fSBkb2VzIG5vdCBoYXZlIHByb3BlcnRpZXNgKTtcclxuICAgIH0gZWxzZSBpZiAoIXRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1toZWFkZXJJbmRleF0ucHJvcGVydGllcyEuaWNvbnMpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDdXN0b21UYWJsZUhlYWRlciB3aXRoIGluZGV4ICR7aGVhZGVySW5kZXh9IGRvZXMgbm90IGhhdmUgaWNvbnMgZGVmaW5lZGApO1xyXG4gICAgfVxyXG4gICAgbGV0IGN1c3RvbVRhYmxlSGVhZGVySWNvbnMgPVxyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaGVhZGVySW5kZXhdLnByb3BlcnRpZXMhLmljb25zO1xyXG5cclxuICAgIGxldCBpY29uOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGN1c3RvbVRhYmxlSGVhZGVySWNvbnMhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBjdXN0b21UYWJsZUhlYWRlckljb24gPSBjdXN0b21UYWJsZUhlYWRlckljb25zIVtpXTtcclxuICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZU51bGwgJiZcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVOdWxsID09PSB2YWx1ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgaWNvbiA9IGN1c3RvbVRhYmxlSGVhZGVySWNvbi5pY29uO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUJpZ2dlclRoYW5OdW1iZXIgJiZcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVCaWdnZXJUaGFuTnVtYmVyIDwgdmFsdWVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGljb24gPSBjdXN0b21UYWJsZUhlYWRlckljb24uaWNvbjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlU21hbGxlclRoYW5OdW1iZXIgJiZcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVTbWFsbGVyVGhhbk51bWJlciA+IHZhbHVlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBpY29uID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmljb247XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUVxdWFsc1dpdGhOdW1iZXIgJiZcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVFcXVhbHNXaXRoTnVtYmVyID09PSB2YWx1ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgaWNvbiA9IGN1c3RvbVRhYmxlSGVhZGVySWNvbi5pY29uO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlRXF1YWxzV2l0aFN0cmluZyAmJlxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUVxdWFsc1dpdGhTdHJpbmcgPT09IHZhbHVlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBpY29uID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmljb247XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlQm9vbGVhbiAmJlxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUJvb2xlYW4gPT09IHZhbHVlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBpY29uID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmljb247XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaWNvbjtcclxuICB9XHJcblxyXG4gIGdldENvbG9yKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuLCBoZWFkZXJJbmRleDogbnVtYmVyKTogVGhlbWVQYWxldHRlIHtcclxuICAgIGlmICghdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ3VzdG9tVGFibGVIZWFkZXJzIHByb3BlcnR5IGlzIG1pc3NpbmcnKTtcclxuICAgIH0gZWxzZSBpZiAoIXRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1toZWFkZXJJbmRleF0ucHJvcGVydGllcykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1c3RvbVRhYmxlSGVhZGVyIHdpdGggaW5kZXggJHtoZWFkZXJJbmRleH0gZG9lcyBub3QgaGF2ZSBwcm9wZXJ0aWVzYCk7XHJcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaGVhZGVySW5kZXhdLnByb3BlcnRpZXMhLmljb25zKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VzdG9tVGFibGVIZWFkZXIgd2l0aCBpbmRleCAke2hlYWRlckluZGV4fSBkb2VzIG5vdCBoYXZlIGljb25zIGRlZmluZWRgKTtcclxuICAgIH1cclxuICAgIGxldCBjdXN0b21UYWJsZUhlYWRlckljb25zID1cclxuICAgICAgdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2hlYWRlckluZGV4XS5wcm9wZXJ0aWVzIS5pY29ucztcclxuXHJcbiAgICBsZXQgY29sb3I6IFRoZW1lUGFsZXR0ZSA9ICdwcmltYXJ5JztcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGN1c3RvbVRhYmxlSGVhZGVySWNvbnMhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBjdXN0b21UYWJsZUhlYWRlckljb24gPSBjdXN0b21UYWJsZUhlYWRlckljb25zIVtpXTtcclxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlQmlnZ2VyVGhhbk51bWJlciAmJlxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUJpZ2dlclRoYW5OdW1iZXIgPCB2YWx1ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgY29sb3IgPSBjdXN0b21UYWJsZUhlYWRlckljb24uY29sb3I7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZVNtYWxsZXJUaGFuTnVtYmVyICYmXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlU21hbGxlclRoYW5OdW1iZXIgPiB2YWx1ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgY29sb3IgPSBjdXN0b21UYWJsZUhlYWRlckljb24uY29sb3I7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUVxdWFsc1dpdGhOdW1iZXIgJiZcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVFcXVhbHNXaXRoTnVtYmVyID09PSB2YWx1ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgY29sb3IgPSBjdXN0b21UYWJsZUhlYWRlckljb24uY29sb3I7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVFcXVhbHNXaXRoU3RyaW5nICYmXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlRXF1YWxzV2l0aFN0cmluZyA9PT0gdmFsdWVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGNvbG9yID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmNvbG9yO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUJvb2xlYW4gJiZcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVCb29sZWFuID09PSB2YWx1ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgY29sb3IgPSBjdXN0b21UYWJsZUhlYWRlckljb24uY29sb3I7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY29sb3I7XHJcbiAgfVxyXG5cclxuICB0YWJsZU9wdGlvbkJ1dHRvbkRpcmVjdGlvbigpOiB0eXBlb2YgU21hcnRUYWJsZU9wdGlvbkJ1dHRvbkRpcmVjdGlvbiB7XHJcbiAgICByZXR1cm4gU21hcnRUYWJsZU9wdGlvbkJ1dHRvbkRpcmVjdGlvbjtcclxuICB9XHJcblxyXG4gIGlzQWxsU2VsZWN0ZWQoKSB7XHJcbiAgICBjb25zdCBudW1TZWxlY3RlZCA9IHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb24hLnNlbGVjdGVkLmxlbmd0aDtcclxuICAgIGNvbnN0IG51bVJvd3MgPSB0aGlzLnNtYXJ0VGFibGUudGFibGVSb3dzLmxlbmd0aDtcclxuICAgIHJldHVybiBudW1TZWxlY3RlZCA9PT0gbnVtUm93cztcclxuICB9XHJcblxyXG4gIC8qKiBTZWxlY3RzIGFsbCByb3dzIGlmIHRoZXkgYXJlIG5vdCBhbGwgc2VsZWN0ZWQ7IG90aGVyd2lzZSBjbGVhciBzZWxlY3Rpb24uICovXHJcbiAgdG9nZ2xlQWxsUm93cygpIHtcclxuICAgIGlmICh0aGlzLmlzQWxsU2VsZWN0ZWQoKSkge1xyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uIS5jbGVhcigpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuc21hcnRUYWJsZS5vbkFsbFNlbGVjdGlvbikge1xyXG4gICAgICAgIHRoaXMuc21hcnRUYWJsZS5vbkFsbFNlbGVjdGlvbihmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5tYXhOdW1PZlNlbGVjdGFibGVSb3dzKSB7XHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb24hLmNsZWFyKCk7XHJcblxyXG4gICAgICBpZiAodGhpcy5zbWFydFRhYmxlLm9uQWxsU2VsZWN0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5zbWFydFRhYmxlLm9uQWxsU2VsZWN0aW9uKGZhbHNlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHkpIHtcclxuICAgICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvbiEuc2VsZWN0KFxyXG4gICAgICAgIC4uLnRoaXMuc21hcnRUYWJsZS50YWJsZVJvd3MubWFwKChyb3c6IGFueSkgPT5cclxuICAgICAgICAgIHRoaXMuc21hcnRUYWJsZS5nZXRWYWx1ZURlZXBseShyb3csIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb25Qcm9wZXJ0eSEpXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvbiEuc2VsZWN0KC4uLnRoaXMuc21hcnRUYWJsZS50YWJsZVJvd3MpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5vbkFsbFNlbGVjdGlvbikge1xyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUub25BbGxTZWxlY3Rpb24odHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogVGhlIGxhYmVsIGZvciB0aGUgY2hlY2tib3ggb24gdGhlIHBhc3NlZCByb3cgKi9cclxuICBjaGVja2JveExhYmVsKHJvdz86IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXJvdykge1xyXG4gICAgICByZXR1cm4gYCR7dGhpcy5pc0FsbFNlbGVjdGVkKCkgPyAnZGVzZWxlY3QnIDogJ3NlbGVjdCd9IGFsbGA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYCR7dGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvbiEuaXNTZWxlY3RlZChyb3cpID8gJ2Rlc2VsZWN0JyA6ICdzZWxlY3QnfSByb3cgJHtcclxuICAgICAgcm93LnBvc2l0aW9uICsgMVxyXG4gICAgfWA7XHJcbiAgfVxyXG5cclxuICBpc0hpZ2hsaWdodGVkKHJvdzogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLmhpZ2hsaWdodFByb3BlcnR5KSB7XHJcbiAgICAgIGlmIChyb3dbJ2RhdGEnXVt0aGlzLnNtYXJ0VGFibGUuaGlnaGxpZ2h0UHJvcGVydHldKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuaGlnaGxpZ2h0ZWRSb3dzIHx8ICF0aGlzLmhpZ2hsaWdodGVkUm93cy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0ZWRSb3dzLmluY2x1ZGVzKHJvdyk7XHJcbiAgfVxyXG5cclxuICBvblJvd0NsaWNrKHJvdzogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLmhpZ2hsaWdodE9uUm93Q2xpY2spIHtcclxuICAgICAgaWYgKHRoaXMuaXNIaWdobGlnaHRlZChyb3cpKSB7XHJcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5oaWdobGlnaHRlZFJvd3MuaW5kZXhPZihyb3csIDApO1xyXG4gICAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRSb3dzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMuaGlnaGxpZ2h0ZWRSb3dzIHx8ICF0aGlzLmhpZ2hsaWdodGVkUm93cy5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkUm93cyA9IFtdO1xyXG4gICAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRSb3dzLnB1c2gocm93KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkUm93cy5wdXNoKHJvdyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUuZXhwYW5kYWJsZSAmJiAhdGhpcy5zbWFydFRhYmxlLm9uUm93RG91YmxlQ2xpY2spIHtcclxuICAgICAgdGhpcy5vblRvZ2dsZShyb3cpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5vblJvd0NsaWNrKSB7XHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS5vblJvd0NsaWNrKHJvdyk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9uUm93RG91YmxlQ2xpY2socm93OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUuaGlnaGxpZ2h0T25Sb3dDbGljaykge1xyXG4gICAgICBpZiAodGhpcy5pc0hpZ2hsaWdodGVkKHJvdykpIHtcclxuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLmhpZ2hsaWdodGVkUm93cy5pbmRleE9mKHJvdywgMCk7XHJcbiAgICAgICAgdGhpcy5oaWdobGlnaHRlZFJvd3Muc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgfSBlbHNlIGlmICghdGhpcy5oaWdobGlnaHRlZFJvd3MgfHwgIXRoaXMuaGlnaGxpZ2h0ZWRSb3dzLmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRSb3dzID0gW107XHJcbiAgICAgICAgdGhpcy5oaWdobGlnaHRlZFJvd3MucHVzaChyb3cpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRSb3dzLnB1c2gocm93KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5vblJvd0RvdWJsZUNsaWNrKSB7XHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS5vblJvd0RvdWJsZUNsaWNrKHJvdyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBvblRvZ2dsZShlbGVtZW50OiBhbnksIGV2ZW50PzogYW55KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoIXRoaXMuc21hcnRUYWJsZS5yb3dFeHBhbmRlcikge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgJ1NtYXJ0VGFibGVSb3dFeHBhbmRlciBub3QgZm91bmQhLiBQbGVhc2UgcHJvdmlkZSBhIFNtYXJ0VGFibGVSb3dFeHBhbmRlciBpbXBsZW1lbnRhdGlvbi4nXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGV2ZW50KSB7XHJcbiAgICAgIGV2ZW50Py5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgb2xkSW5kZXggPSB0aGlzLnNtYXJ0VGFibGUudGFibGVSb3dzLmZpbmRJbmRleChcclxuICAgICAgKGVsZW1lbnQpID0+IGVsZW1lbnQgPT09IHRoaXMuZXhwYW5kZWRFbGVtZW50XHJcbiAgICApO1xyXG4gICAgaWYgKG9sZEluZGV4ICE9PSAtMSkge1xyXG4gICAgICBsZXQgcmVmID0gdGhpcy52Y1JlZiEuZmlsdGVyKChlbGVtZW50OiBhbnksIGluZGV4OiBudW1iZXIpID0+IGluZGV4ID09PSBvbGRJbmRleCk7XHJcbiAgICAgIHJlZlswXS5jbGVhcigpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5leHBhbmRlZEVsZW1lbnQgPSB0aGlzLmV4cGFuZGVkRWxlbWVudCA9PT0gZWxlbWVudCA/IG51bGwgOiBlbGVtZW50O1xyXG5cclxuICAgIGxldCBuZXdJbmRleCA9IHRoaXMuc21hcnRUYWJsZS50YWJsZVJvd3MuZmluZEluZGV4KFxyXG4gICAgICAoZWxlbWVudCkgPT4gZWxlbWVudCA9PT0gdGhpcy5leHBhbmRlZEVsZW1lbnRcclxuICAgICk7XHJcblxyXG4gICAgbGV0IHJvd0RhdGFSZXNwb25zZTtcclxuXHJcbiAgICBpZiAobmV3SW5kZXggIT09IC0xKSB7XHJcbiAgICAgIGlmICh0aGlzLnNtYXJ0VGFibGUuYXN5bmNPbkV4cGFuZCkge1xyXG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy5jZlNlcnZpY2UuY3JlYXRlQ29tcG9uZW50KFxyXG4gICAgICAgICAgdGhpcy52Y1JlZj8uZmlsdGVyKChlbGVtZW50OiBhbnksIGluZGV4OiBudW1iZXIpID0+IGluZGV4ID09PSBuZXdJbmRleClbMF0hLFxyXG4gICAgICAgICAgTG9hZGluZ0NvbXBvbmVudCxcclxuICAgICAgICAgIG5ldyBNYXA8c3RyaW5nLCBhbnk+KClcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICByb3dEYXRhUmVzcG9uc2UgPSBhd2FpdCB0aGlzLnNtYXJ0VGFibGUucm93RXhwYW5kZXI/LmV4cGFuZEFzeW5jKG5ld0luZGV4KTtcclxuXHJcbiAgICAgICAgbGV0IHJlZiA9IHRoaXMudmNSZWYhLmZpbHRlcigoZWxlbWVudDogYW55LCBpbmRleDogbnVtYmVyKSA9PiBpbmRleCA9PT0gbmV3SW5kZXgpWzBdITtcclxuICAgICAgICByZWYuY2xlYXIoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLmNmU2VydmljZS5jcmVhdGVDb21wb25lbnQoXHJcbiAgICAgICAgdGhpcy52Y1JlZj8uZmlsdGVyKChlbGVtZW50OiBhbnksIGluZGV4OiBudW1iZXIpID0+IGluZGV4ID09PSBuZXdJbmRleClbMF0hLFxyXG4gICAgICAgIHRoaXMuc21hcnRUYWJsZS5leHBhbmRlZENvbXBvbmVudCxcclxuICAgICAgICBuZXcgTWFwPHN0cmluZywgYW55PihbWydyb3dEYXRhJywgcm93RGF0YVJlc3BvbnNlXV0pXHJcbiAgICAgICk7XHJcblxyXG4gICAgICB0aGlzLmVsZW1lbnQgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRTZWxlY3Rpb24oZWxlbWVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS5tYXhOdW1PZlNlbGVjdGFibGVSb3dzICYmXHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb24hLnNlbGVjdGVkLmxlbmd0aCA9PT0gdGhpcy5zbWFydFRhYmxlLm1heE51bU9mU2VsZWN0YWJsZVJvd3NcclxuICAgICkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uPy50b2dnbGUoZWxlbWVudCk7XHJcbiAgICB0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlZC5uZXh0KCk7XHJcblxyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5vblNlbGVjdGlvbikge1xyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUub25TZWxlY3Rpb24oZWxlbWVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG93TWVudUJ1dHRvbihlbGVtZW50OiBhbnksIGJ1dHRvbjogU21hcnRUYWJsZUJ1dHRvbik6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGJ1dHRvbi5tZW51SXRlbUJ1dHRvbnMpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9IGVsc2UgaWYgKGJ1dHRvbi5tZW51SXRlbUJ1dHRvbnNQcm9wZXJ0eU5hbWUpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBsZXQgbGVuZ3RoID0gdGhpcy5nZXRWYWx1ZShlbGVtZW50LCBidXR0b24ubWVudUl0ZW1CdXR0b25zUHJvcGVydHlOYW1lISkubGVuZ3RoO1xyXG4gICAgICAgIHJldHVybiBsZW5ndGggPiAwO1xyXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0VmFsdWUoZWxlbWVudDogYW55LCBoZWFkZXI6IHN0cmluZyk6IGFueSB7XHJcbiAgICBsZXQgaGVhZGVycyA9IGhlYWRlci5zcGxpdCgnLicpO1xyXG4gICAgaWYgKGhlYWRlcnMubGVuZ3RoID4gMSkge1xyXG4gICAgICBsZXQgdmFsdWU6IGFueSA9IGVsZW1lbnQ7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBoZWFkZXJzLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBoZWFkZXJzW2luZGV4XTtcclxuICAgICAgICB2YWx1ZSA9IHZhbHVlW2VsZW1lbnRdO1xyXG4gICAgICAgIGlmICghdmFsdWUgJiYgaW5kZXggIT09IGhlYWRlcnMubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGVsZW1lbnRbaGVhZGVyXTtcclxuICB9XHJcblxyXG4gIHNob3dCdXR0b24oYnV0dG9uOiBTbWFydFRhYmxlQnV0dG9uLCBlbGVtZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGlmIChidXR0b24uc2hvd0J1dHRvbklmKSB7XHJcbiAgICAgIHJldHVybiBidXR0b24uc2hvd0J1dHRvbklmKGVsZW1lbnQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBpc0Rpc2FibGVkKGVsZW1lbnQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5pc1Jvd0Rpc2FibGVkUHJvcGVydHlOYW1lKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnNtYXJ0VGFibGUuZ2V0VmFsdWVEZWVwbHkoZWxlbWVudCwgdGhpcy5zbWFydFRhYmxlLmlzUm93RGlzYWJsZWRQcm9wZXJ0eU5hbWUpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNtYXJ0VGFibGUuc2VsZWN0YWJsZVByb3BlcnR5TmFtZSkge1xyXG4gICAgICBjb25zdCBzZWxlY3RhYmxlID0gdGhpcy5zbWFydFRhYmxlLmdldFZhbHVlRGVlcGx5KFxyXG4gICAgICAgIGVsZW1lbnQsXHJcbiAgICAgICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGFibGVQcm9wZXJ0eU5hbWVcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIHNlbGVjdGFibGUgPT09IHVuZGVmaW5lZCB8fCBzZWxlY3RhYmxlID09PSBudWxsID8gZmFsc2UgOiAhc2VsZWN0YWJsZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGlzU2VsZWN0ZWQoZWxlbWVudDogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uPy5pc1NlbGVjdGVkKFxyXG4gICAgICAgIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb25Qcm9wZXJ0eVxyXG4gICAgICAgICAgPyB0aGlzLnNtYXJ0VGFibGUuZ2V0VmFsdWVEZWVwbHkoZWxlbWVudCwgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvblByb3BlcnR5KVxyXG4gICAgICAgICAgOiBlbGVtZW50XHJcbiAgICAgICkgPz8gZmFsc2VcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9yaWdpbmFsUHJvcGVydHkoaGVhZGVyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKGhlYWRlci5zdGFydHNXaXRoKCdkYXRhLicpKSB7XHJcbiAgICAgIHJldHVybiBoZWFkZXIuc3Vic3RyaW5nKCdkYXRhLicubGVuZ3RoKTtcclxuICAgIH1cclxuICAgIHJldHVybiBoZWFkZXI7XHJcbiAgfVxyXG5cclxuICBpc0ltYWdlUmVzb3VyY2UoZWxlbWVudDogYW55LCBoZWFkZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFlbGVtZW50Lmljb25zKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGxldCBwcm9wZXJ0eSA9IHRoaXMub3JpZ2luYWxQcm9wZXJ0eShoZWFkZXIpO1xyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGVsZW1lbnQuaWNvbnMpLnNvbWUoKGtleSkgPT4ga2V5ID09PSBwcm9wZXJ0eSk7XHJcbiAgfVxyXG5cclxuICBnZXRJbWFnZVJlc291cmNlSWNvbnMoZWxlbWVudDogYW55LCBoZWFkZXI6IHN0cmluZyk6IEltYWdlUmVzb3VyY2VbXSB7XHJcbiAgICBpZiAoZWxlbWVudD8uaWNvbnMpIHtcclxuICAgICAgbGV0IGljb25Db2RlcyA9IGVsZW1lbnQ/Lmljb25zW3RoaXMub3JpZ2luYWxQcm9wZXJ0eShoZWFkZXIpXTtcclxuICAgICAgcmV0dXJuIGljb25Db2RlcztcclxuICAgIH1cclxuICAgIHJldHVybiBbXTtcclxuICB9XHJcblxyXG4gIGdldEltYWdlUmVzb3VyY2VJY29uKGVsZW1lbnQ6IGFueSwgaGVhZGVyOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgcmV0dXJuIGVsZW1lbnQuaWNvbnNbdGhpcy5vcmlnaW5hbFByb3BlcnR5KGhlYWRlcildLmlkZW50aWZpZXI7XHJcbiAgfVxyXG5cclxuICBnZXRJbWFnZVJlc291cmNlQ29sb3IoZWxlbWVudDogYW55LCBoZWFkZXI6IHN0cmluZyk6IGFueSB7XHJcbiAgICByZXR1cm4gZWxlbWVudC5pY29uc1t0aGlzLm9yaWdpbmFsUHJvcGVydHkoaGVhZGVyKV0uY29sb3IgPz8gJ3ByaW1hcnknO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW1hZ2VSZXNvdXJjZVN0eWxlKHJlc291cmNlOiBJbWFnZVJlc291cmNlKTogYW55IHtcclxuICAgIHJldHVybiByZXNvdXJjZS5zdHlsZSA/IHJlc291cmNlLnN0eWxlIDoge307XHJcbiAgfVxyXG5cclxuICBvcGVuRGVmYXVsdEFjdGlvbnNNZW51KHJvdzogYW55KSB7XHJcbiAgICBsZXQgYWN0aW9uQ29kZXNGcm9tUm93ID0gcm93Py5hY3Rpb25zPy5tYXAoKGFjdGlvbjogVWlBY3Rpb24pID0+IGFjdGlvbi5jb2RlKTtcclxuICAgIGlmICghYWN0aW9uQ29kZXNGcm9tUm93KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBmaWx0ZXJlZEFjdGlvbnMgPSB0aGlzLnNtYXJ0VGFibGUuZGVmYXVsdEFjdGlvbnM/LmZpbHRlcigoYWN0aW9uOiBTbWFydFRhYmxlQnV0dG9uKSA9PlxyXG4gICAgICBhY3Rpb25Db2Rlc0Zyb21Sb3cuaW5jbHVkZXMoYWN0aW9uLmNvZGUhKVxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoZmlsdGVyZWRBY3Rpb25zICYmIGZpbHRlcmVkQWN0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGlmIChmaWx0ZXJlZEFjdGlvbnMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc21hcnRUYWJsZS5vblJvd0RvdWJsZUNsaWNrKSB7XHJcbiAgICAgICAgICB0aGlzLnNtYXJ0VGFibGUub25Sb3dEb3VibGVDbGljayhyb3cpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmRlZmF1bHRBY3Rpb25NZW51Q29tcG9uZW50c1xyXG4gICAgICAgIC50b0FycmF5KClcclxuICAgICAgICAuZmluZCgoY29tcDogRGVmYXVsdEFjdGlvbnNQb3B1cENvbXBvbmVudCkgPT4gY29tcC5yb3cuaWQgPT09IHJvdy5pZClcclxuICAgICAgICA/Lm9wZW5EZWZhdWx0QWN0aW9uc01lbnUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldERlZmF1bHRBY3Rpb25zRm9yUm93KGVsZW1lbnQ6IGFueSk6IFNtYXJ0VGFibGVCdXR0b25bXSB8IHVuZGVmaW5lZCB7XHJcbiAgICBsZXQgYWN0aW9uQ29kZXNGcm9tUm93ID0gZWxlbWVudD8uYWN0aW9ucz8ubWFwKChhY3Rpb246IFVpQWN0aW9uKSA9PiBhY3Rpb24uY29kZSk7XHJcbiAgICBpZiAoYWN0aW9uQ29kZXNGcm9tUm93KSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnNtYXJ0VGFibGUuZGVmYXVsdEFjdGlvbnM/LmZpbHRlcigoYWN0aW9uOiBTbWFydFRhYmxlQnV0dG9uKSA9PlxyXG4gICAgICAgIGFjdGlvbkNvZGVzRnJvbVJvdy5pbmNsdWRlcyhhY3Rpb24uY29kZSEpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxufVxyXG4iXX0=