@sapui5/sap.fe.macros 1.142.0 → 1.142.2

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 (83) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/macros/.library +1 -1
  3. package/src/sap/fe/macros/Field.js +5 -5
  4. package/src/sap/fe/macros/Field.ts +5 -3
  5. package/src/sap/fe/macros/FooterContent.js +3 -2
  6. package/src/sap/fe/macros/FooterContent.tsx +2 -10
  7. package/src/sap/fe/macros/MessageButton.js +3 -3
  8. package/src/sap/fe/macros/MessageButton.tsx +3 -2
  9. package/src/sap/fe/macros/Page.js +8 -4
  10. package/src/sap/fe/macros/Page.tsx +13 -4
  11. package/src/sap/fe/macros/RichTextEditor.js +12 -14
  12. package/src/sap/fe/macros/RichTextEditor.tsx +10 -13
  13. package/src/sap/fe/macros/ai/EasyFillDialog.js +2 -1
  14. package/src/sap/fe/macros/ai/EasyFillDialog.tsx +1 -0
  15. package/src/sap/fe/macros/ai/SummarizationButton.js +6 -4
  16. package/src/sap/fe/macros/ai/SummarizationButton.tsx +5 -3
  17. package/src/sap/fe/macros/chart/Action.js +19 -7
  18. package/src/sap/fe/macros/chart/Action.ts +8 -0
  19. package/src/sap/fe/macros/chart/ChartDelegate.js +13 -2
  20. package/src/sap/fe/macros/chart/ChartDelegate.ts +20 -1
  21. package/src/sap/fe/macros/chart/MdcChartTemplate.js +8 -6
  22. package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +13 -22
  23. package/src/sap/fe/macros/controls/FileWrapper.js +4 -3
  24. package/src/sap/fe/macros/controls/FileWrapper.ts +3 -2
  25. package/src/sap/fe/macros/controls/FilterBar.js +1 -1
  26. package/src/sap/fe/macros/controls/FilterBar.ts +8 -1
  27. package/src/sap/fe/macros/controls/Section.js +3 -2
  28. package/src/sap/fe/macros/controls/Section.ts +1 -1
  29. package/src/sap/fe/macros/controls/TextLink.js +15 -1
  30. package/src/sap/fe/macros/controls/TextLink.tsx +19 -0
  31. package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +23 -18
  32. package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +27 -25
  33. package/src/sap/fe/macros/field/FieldRuntimeHelper.js +4 -2
  34. package/src/sap/fe/macros/field/FieldRuntimeHelper.ts +7 -7
  35. package/src/sap/fe/macros/field/FieldTemplating.js +8 -3
  36. package/src/sap/fe/macros/field/FieldTemplating.ts +8 -3
  37. package/src/sap/fe/macros/filterBar/FilterBar.block.js +10 -1
  38. package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +10 -0
  39. package/src/sap/fe/macros/form/FormContainer.block.js +9 -8
  40. package/src/sap/fe/macros/form/FormContainer.block.ts +10 -7
  41. package/src/sap/fe/macros/internal/field/DisplayStyle.js +3 -2
  42. package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +1 -0
  43. package/src/sap/fe/macros/internal/field/EditStyle.js +11 -6
  44. package/src/sap/fe/macros/internal/field/EditStyle.tsx +7 -3
  45. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.js +36 -7
  46. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.ts +35 -6
  47. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueHelper.js +54 -1
  48. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueHelper.ts +59 -0
  49. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +23 -3
  50. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +24 -2
  51. package/src/sap/fe/macros/library.js +5 -6
  52. package/src/sap/fe/macros/{library.ts → library.tsx} +1 -1
  53. package/src/sap/fe/macros/messagebundle.properties +6 -0
  54. package/src/sap/fe/macros/messages/MessageButton.js +21 -12
  55. package/src/sap/fe/macros/messages/MessageButton.ts +21 -11
  56. package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.js +8 -3
  57. package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.ts +9 -2
  58. package/src/sap/fe/macros/quickView/QuickView.js +5 -4
  59. package/src/sap/fe/macros/quickView/QuickView.tsx +10 -3
  60. package/src/sap/fe/macros/table/ActionsTemplating.js +6 -5
  61. package/src/sap/fe/macros/table/ActionsTemplating.tsx +4 -4
  62. package/src/sap/fe/macros/table/MdcTableTemplate.js +31 -13
  63. package/src/sap/fe/macros/table/MdcTableTemplate.tsx +35 -7
  64. package/src/sap/fe/macros/table/Table.block.js +3 -1
  65. package/src/sap/fe/macros/table/Table.block.tsx +7 -4
  66. package/src/sap/fe/macros/table/TableAPI.js +62 -28
  67. package/src/sap/fe/macros/table/TableAPI.ts +73 -32
  68. package/src/sap/fe/macros/table/TableEventHandlerProvider.js +15 -4
  69. package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +16 -3
  70. package/src/sap/fe/macros/table/TableRuntime.js +6 -4
  71. package/src/sap/fe/macros/table/TableRuntime.ts +16 -3
  72. package/src/sap/fe/macros/table/delegates/TableDelegate.js +3 -3
  73. package/src/sap/fe/macros/table/delegates/TableDelegate.ts +3 -4
  74. package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +41 -15
  75. package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +41 -22
  76. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +2 -4
  77. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +1 -2
  78. package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +10 -4
  79. package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +9 -3
  80. package/src/sap/fe/macros/table/mixin/TableHierarchy.js +6 -6
  81. package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +5 -5
  82. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +28 -10
  83. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +33 -14
@@ -40,6 +40,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
40
40
  const enablementAttr = node.getAttribute(name);
41
41
  switch (enablementAttr) {
42
42
  case null:
43
+ return undefined;
43
44
  case "true":
44
45
  return true;
45
46
  case "false":
@@ -162,6 +163,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
162
163
  };
163
164
  const setCustomActionOverflowGroupProperties = function (overFlowGroup) {
164
165
  return {
166
+ key: overFlowGroup.getAttribute("key").replace("InlineXML_", ""),
165
167
  overflowGroup: Number.parseInt(overFlowGroup.getAttribute("overflowGroup"), 10),
166
168
  showSeparator: overFlowGroup.getAttribute("showSeparator") === "true"
167
169
  };
@@ -1600,4 +1602,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
1600
1602
  _exports = TableBlock;
1601
1603
  return _exports;
1602
1604
  }, false);
1603
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzYWZlR2V0QXR0cmlidXRlIiwibm9kZSIsIm5hbWUiLCJnZXRBdHRyaWJ1dGUiLCJ1bmRlZmluZWQiLCJnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUiLCJlbmFibGVtZW50QXR0ciIsInJlbW92ZVVuZGVmaW5lZFByb3BlcnRpZXMiLCJvYmoiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsInBhcnNlQWN0aW9uRnJvbUVsZW1lbnQiLCJhY3Rpb25Ob2RlIiwiY29tbW9uUHJvcGVydGllcyIsImdldENvbW1vbkN1c3RvbUFjdGlvblByb3BlcnRpZXMiLCJsb2NhbE5hbWUiLCJ0ZXh0IiwicHJlc3MiLCJyZXF1aXJlc1NlbGVjdGlvbiIsImVuYWJsZUF1dG9TY3JvbGwiLCJuYXZpZ2F0ZVRvSW5zdGFuY2UiLCJkZWZhdWx0VmFsdWVzRnVuY3Rpb24iLCJhY3Rpb24iLCJyZXBsYWNlIiwiZW5hYmxlZCIsInZpc2libGUiLCJjb21tYW5kIiwiZW5hYmxlT25TZWxlY3QiLCJwbGFjZW1lbnQiLCJhbmNob3IiLCJfdHlwZSIsIk51bWJlciIsInBhcnNlSW50Iiwic2V0Q3VzdG9tQWN0aW9uR3JvdXBQcm9wZXJ0aWVzIiwiYWdncmVnYXRpb25PYmplY3QiLCJpbmNsdWRlcyIsImdldENvbW1vbkN1c3RvbUFjdGlvbnNHcm91cFByb3BlcnRpZXMiLCJkZWZhdWx0QWN0aW9uIiwic2V0Q3VzdG9tTWFzc0VkaXRQcm9wZXJ0aWVzIiwiZWxlbWVudCIsImN1c3RvbUNvbnRlbnQiLCJjaGlsZHJlbiIsIm91dGVySFRNTCIsInZpc2libGVGaWVsZHMiLCJzcGxpdCIsImlnbm9yZWRGaWVsZHMiLCJvcGVyYXRpb25Hcm91cGluZ01vZGUiLCJzZXRRdWlja1ZhcmlhbnRTZWxlY3Rpb24iLCJxdWlja1ZhcmlhbnRTZWxlY3Rpb24iLCJwYXRocyIsInNob3dDb3VudHMiLCJzZXRDdXN0b21BY3Rpb25PdmVyZmxvd0dyb3VwUHJvcGVydGllcyIsIm92ZXJGbG93R3JvdXAiLCJvdmVyZmxvd0dyb3VwIiwic2hvd1NlcGFyYXRvciIsImFjdGlvbnNJbk1lbnUiLCJBcnJheSIsInByb3RvdHlwZSIsInNsaWNlIiwiYXBwbHkiLCJtYXAiLCJzdWJBY3Rpb24iLCJzZXRBdHRyaWJ1dGUiLCJhY3Rpb25zIiwiZ2V0Q29tbW9uQ3VzdG9tQ29sdW1uc1Byb3BlcnRpZXMiLCJjaGlsZENvbHVtbiIsIndpZHRoIiwid2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIiLCJpbXBvcnRhbmNlIiwiaG9yaXpvbnRhbEFsaWduIiwiYXZhaWxhYmlsaXR5IiwiZGlzYWJsZUV4cG9ydCIsImV4cG9ydFNldHRpbmdzIiwicGFyc2VFeHBvcnRTZXR0aW5ncyIsInNldEN1c3RvbUNvbHVtblByb3BlcnRpZXMiLCJoZWFkZXIiLCJ0b29sdGlwIiwidGVtcGxhdGUiLCJnZXRDb2x1bW5UZW1wbGF0ZSIsInByb3BlcnRpZXMiLCJyZXF1aXJlZCIsInBhcnNlU2ltcGxlQWdncmVnYXRpb24iLCJ3cmFwIiwidHlwZSIsInByb3BlcnR5IiwidGV4dEFsaWduIiwibGFiZWwiLCJ0cnVlVmFsdWUiLCJmYWxzZVZhbHVlIiwidmFsdWVNYXAiLCJhZ2dyZWdhdGlvbiIsImdldEFnZ3JlZ2F0aW9uIiwiaSIsImxlbmd0aCIsImNoaWxkIiwiaXRlbSIsIm5vZGVOYW1lIiwiZW5kc1dpdGgiLCJhZ2dyZWdhdGlvbk5hbWUiLCJyZXN1bHQiLCJnZXRBdHRyaWJ1dGVOYW1lcyIsInZhbHVlIiwiVGFibGVCbG9jayIsIl9kZWMiLCJkZWZpbmVCdWlsZGluZ0Jsb2NrIiwibmFtZXNwYWNlIiwicHVibGljTmFtZXNwYWNlIiwicmV0dXJuVHlwZXMiLCJfZGVjMiIsImJsb2NrQXR0cmlidXRlIiwidW5kZXJseWluZ1R5cGUiLCJleHBlY3RlZFR5cGVzIiwiZXhwZWN0ZWRBbm5vdGF0aW9ucyIsImlzUHVibGljIiwiX2RlYzMiLCJiaW5kYWJsZSIsIl9kZWM0IiwiX2RlYzUiLCJfZGVjNiIsIl9kZWM3IiwiX2RlYzgiLCJfZGVjOSIsIl9kZWMxMCIsIl9kZWMxMSIsIl9kZWMxMiIsIl9kZWMxMyIsIl9kZWMxNCIsIl9kZWMxNSIsIl9kZWMxNiIsIl9kZWMxNyIsImFsbG93ZWRWYWx1ZXMiLCJfZGVjMTgiLCJfZGVjMTkiLCJfZGVjMjAiLCJfZGVjMjEiLCJfZGVjMjIiLCJfZGVjMjMiLCJfZGVjMjQiLCJpc0Fzc29jaWF0aW9uIiwiX2RlYzI1IiwiX2RlYzI2IiwiX2RlYzI3IiwiX2RlYzI4IiwiX2RlYzI5IiwiX2RlYzMwIiwiX2RlYzMxIiwiX2RlYzMyIiwiX2RlYzMzIiwiX2RlYzM0IiwiX2RlYzM1IiwiX2RlYzM2IiwiX2RlYzM3IiwiX2RlYzM4IiwiX2RlYzM5IiwiX2RlYzQwIiwiX2RlYzQxIiwiX2RlYzQyIiwiX2RlYzQzIiwiX2RlYzQ0IiwiX2RlYzQ1IiwiX2RlYzQ2IiwiX2RlYzQ3IiwiX2RlYzQ4IiwidmFsaWRhdGUiLCJjcmVhdGlvbk9wdGlvbnNJbnB1dCIsIkVycm9yIiwiX2RlYzQ5IiwiYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24iLCJhZ2dyZWdhdGlvbk9uTGVhZkxldmVsIiwiX2RlYzUwIiwiYmxvY2tBZ2dyZWdhdGlvbiIsImFsdFR5cGVzIiwiaGFzVmlydHVhbE5vZGUiLCJtdWx0aXBsZSIsInByb2Nlc3NBZ2dyZWdhdGlvbnMiLCJfZGVjNTEiLCJza2lwS2V5IiwiX2RlYzUyIiwiaXNEZWZhdWx0IiwiX2RlYzUzIiwiX2RlYzU0IiwicmVhbGx5U2tpcEtleSIsIl9kZWM1NSIsImJsb2NrRXZlbnQiLCJfZGVjNTYiLCJfZGVjNTciLCJfZGVjNTgiLCJfZGVjNTkiLCJfZGVjNjAiLCJfZGVjNjEiLCJfZGVjNjIiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX1RhYmxlQmxvY2siLCJfQnVpbGRpbmdCbG9ja1RlbXBsYXQiLCJwcm9wcyIsImNvbnRyb2xDb25maWd1cmF0aW9uIiwidGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJfZGVzY3JpcHRvcjciLCJfZGVzY3JpcHRvcjgiLCJfZGVzY3JpcHRvcjkiLCJfZGVzY3JpcHRvcjEwIiwiX2Rlc2NyaXB0b3IxMSIsIl9kZXNjcmlwdG9yMTIiLCJfZGVzY3JpcHRvcjEzIiwiX2Rlc2NyaXB0b3IxNCIsIl9kZXNjcmlwdG9yMTUiLCJfZGVzY3JpcHRvcjE2IiwiX2Rlc2NyaXB0b3IxNyIsIl9kZXNjcmlwdG9yMTgiLCJfZGVzY3JpcHRvcjE5IiwiX2Rlc2NyaXB0b3IyMCIsIl9kZXNjcmlwdG9yMjEiLCJfZGVzY3JpcHRvcjIyIiwiX2Rlc2NyaXB0b3IyMyIsIl9kZXNjcmlwdG9yMjQiLCJfZGVzY3JpcHRvcjI1IiwiX2Rlc2NyaXB0b3IyNiIsIl9kZXNjcmlwdG9yMjciLCJfZGVzY3JpcHRvcjI4IiwiX2Rlc2NyaXB0b3IyOSIsIl9kZXNjcmlwdG9yMzAiLCJfZGVzY3JpcHRvcjMxIiwiX2Rlc2NyaXB0b3IzMiIsIl9kZXNjcmlwdG9yMzMiLCJfZGVzY3JpcHRvcjM0IiwiX2Rlc2NyaXB0b3IzNSIsIl9kZXNjcmlwdG9yMzYiLCJfZGVzY3JpcHRvcjM3IiwiX2Rlc2NyaXB0b3IzOCIsIl9kZXNjcmlwdG9yMzkiLCJfZGVzY3JpcHRvcjQwIiwiX2Rlc2NyaXB0b3I0MSIsIl9kZXNjcmlwdG9yNDIiLCJfZGVzY3JpcHRvcjQzIiwiX2Rlc2NyaXB0b3I0NCIsIl9kZXNjcmlwdG9yNDUiLCJfZGVzY3JpcHRvcjQ2IiwiX2Rlc2NyaXB0b3I0NyIsIl9kZXNjcmlwdG9yNDgiLCJfZGVzY3JpcHRvcjQ5IiwiX2Rlc2NyaXB0b3I1MCIsIl9kZXNjcmlwdG9yNTEiLCJfZGVzY3JpcHRvcjUyIiwiX2Rlc2NyaXB0b3I1MyIsIl9kZXNjcmlwdG9yNTQiLCJfZGVzY3JpcHRvcjU1IiwiX2Rlc2NyaXB0b3I1NiIsIl9kZXNjcmlwdG9yNTciLCJfZGVzY3JpcHRvcjU4IiwiX2Rlc2NyaXB0b3I1OSIsIl9kZXNjcmlwdG9yNjAiLCJfZGVzY3JpcHRvcjYxIiwiY29udGV4dE9iamVjdFBhdGgiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJtZXRhUGF0aCIsImNvbnRleHRQYXRoIiwidGFibGVEZWZpbml0aW9uIiwiY3JlYXRlVGFibGVEZWZpbml0aW9uIiwidGFibGVEZWZpbml0aW9uQ29udGV4dCIsIk1hY3JvQVBJIiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJjb252ZXJ0ZWRNZXRhZGF0YSIsImNvbnZlcnRlZFR5cGVzIiwibWV0YU1vZGVsIiwibW9kZWxzIiwiY29sbGVjdGlvbkVudGl0eSIsInJlc29sdmVQYXRoIiwiYW5ub3RhdGlvbiIsImNvbGxlY3Rpb24iLCJ0YXJnZXQiLCJhcHBDb21wb25lbnQiLCJzZXRVcElkIiwiY3JlYXRpb25Nb2RlIiwiY3JlYXRlIiwibW9kZSIsImNyZWF0ZUF0RW5kIiwiYXBwZW5kIiwicmVhZE9ubHkiLCJkaXNwbGF5TW9kZSIsImNvbnRyb2wiLCJUYWJsZUFQSSIsInVwZGF0ZUNvbHVtbnNWaXNpYmlsaXR5IiwidXNlQmFzaWNTZWFyY2giLCJmaWx0ZXJCYXIiLCJnZW5lcmF0ZSIsImNvbnRlbnRJZCIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJnZXRWaXN1YWxpemF0aW9uUGF0aCIsImNvbnZlcnRlckNvbnRleHQiLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwiTG9nIiwiZXJyb3IiLCJpc0Fubm90YXRpb25PZlRlcm0iLCJ0YXJnZXRPYmplY3QiLCJyZXNvbHZlZFRhcmdldCIsImdldEVudGl0eVR5cGVBbm5vdGF0aW9uIiwidmlzdWFsaXphdGlvbnMiLCJnZXRWaXN1YWxpemF0aW9uc0Zyb21Bbm5vdGF0aW9uIiwidGVybSIsImxpbmVJdGVtVml6IiwiZmluZCIsInZpeiIsInZpc3VhbGl6YXRpb24iLCJhbm5vdGF0aW9uUGF0aCIsIl9wcm90byIsImdldFRhYmxlU2V0dGluZ3MiLCJ0YWJsZVNldHRpbmdzIiwiYWRkU2V0dGluZyIsImVuYWJsZUV4cG9ydCIsImV4cG9ydEZpbGVOYW1lIiwiZXhwb3J0U2hlZXROYW1lIiwic2VsZWN0aW9uTGltaXQiLCJjb25kZW5zZWRUYWJsZUxheW91dCIsImV4cG9ydFJlcXVlc3RTaXplIiwiZnJvemVuQ29sdW1uQ291bnQiLCJkaXNhYmxlQ29sdW1uRnJlZXplIiwicm93Q291bnRNb2RlIiwicm93Q291bnQiLCJlbmFibGVGdWxsU2NyZWVuIiwiZW5hYmxlU2VsZWN0QWxsIiwiZW5hYmxlUGFzdGluZ09mQ29tcHV0ZWRQcm9wZXJ0aWVzIiwiZW5hYmxlUGFzdGUiLCJkaXNhYmxlQ29weVRvQ2xpcGJvYXJkIiwic2Nyb2xsVGhyZXNob2xkIiwidGhyZXNob2xkIiwicG9waW5MYXlvdXQiLCJzZWxlY3Rpb25Nb2RlIiwicXVpY2tGaWx0ZXJzIiwicGF0aCIsImNyZWF0aW9uRmllbGRzIiwiaW5saW5lQ3JlYXRpb25Sb3dzSGlkZGVuSW5FZGl0TW9kZSIsIm91dGJvdW5kIiwiZW50cmllcyIsIm1hc3NFZGl0IiwiZW5hYmxlTWFzc0VkaXQiLCJjb25maWd1cmF0aW9uIiwiam9pbiIsInRhYmxlIiwiaW5pdGlhbENvbnZlcnRlckNvbnRleHQiLCJnZXRDb252ZXJ0ZXJDb250ZXh0IiwiZ2V0UGF0aCIsInZpc3VhbGl6YXRpb25QYXRoIiwiZXh0cmFNYW5pZmVzdFNldHRpbmdzIiwib3ZlcmZsb3dHcm91cHMiLCJjcmVhdGVBY3Rpb25PdmVyZmxvd0dyb3VwcyIsImNyZWF0ZUFjdGlvbnNGcm9tTWFuaWZlc3QiLCJjb2x1bW5zIiwiY3JlYXRlQ29sdW1uc0Zvck1hbmlmZXN0IiwiZXh0cmFQYXJhbXMiLCJhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudCIsImFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50UGF0aCIsInN2T2JqZWN0UGF0aCIsInZpc3VhbGl6YXRpb25EZWZpbml0aW9uIiwiZ2V0RGF0YVZpc3VhbGl6YXRpb25Db25maWd1cmF0aW9uIiwiaW5NdWx0aVZpZXciLCJnZXRSZWxhdGl2ZUFubm90YXRpb25QYXRoIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwiZ2V0RW50aXR5VHlwZSIsImlzQ29uZGVuc2VkVGFibGVMYXlvdXRDb21wbGlhbnQiLCJ1c2VDb25kZW5zZWRMYXlvdXQiLCJpc01hY3JvT3JNdWx0aXBsZVZpZXciLCJWaXN1YWxpemF0aW9uVHlwZSIsIlRhYmxlIiwiYWN0aW9uc1NldHRpbmdzIiwiYWRkQWN0aW9uVG9FeHRyYU1hbmlmZXN0IiwicG9zaXRpb24iLCJpc0FJT3BlcmF0aW9uIiwicHJpb3JpdHkiLCJncm91cCIsIl9fbm9XcmFwIiwiYWZ0ZXJFeGVjdXRpb24iLCJ2YWx1ZXMiLCJtZW51Iiwib3ZlcmZsb3dHcm91cHNTZXR0aW5ncyIsImFjdGlvbk92ZXJmbG93R3JvdXBzIiwiaXNCbG9ja0NvbHVtbiIsImJsb2NrIiwiY29sdW1uU2V0dGluZ3MiLCJjb2x1bW4iLCJjdXN0b21Db2x1bW5EZWZpbml0aW9uIiwiaWQiLCJfYXBpSWQiLCJnZXRDb250ZW50SWQiLCJhcGlJZCIsIl9nZXRFbnRpdHlUeXBlIiwiZW50aXR5VHlwZSIsInRhcmdldFR5cGUiLCJnZXRFbXB0eVJvd3NFbmFibGVkIiwiQ3JlYXRpb25Nb2RlIiwiSW5saW5lQ3JlYXRpb25Sb3dzIiwiYSIsIlN0YW5kYXJkQWN0aW9uS2V5cyIsIkNyZWF0ZSIsImdldFRlbXBsYXRlIiwidGFibGVQcm9wcyIsIm92ZXJyaWRlUm93UHJlc3MiLCJyb3dQcmVzcyIsImhhbmRsZXJQcm92aWRlciIsIlRhYmxlRXZlbnRIYW5kbGVyUHJvdmlkZXIiLCJnZXRNb2RlbCIsIl9qc3giLCJUYWJsZUNyZWF0aW9uT3B0aW9ucyIsImJpbmRpbmciLCJoZWFkZXJMZXZlbCIsImhlYWRlclN0eWxlIiwiaGVhZGVyVmlzaWJsZSIsInRhYlRpdGxlIiwiaXNTZWFyY2hhYmxlIiwiYnVzeSIsImluaXRpYWxMb2FkIiwiaXNBbHAiLCJmaWVsZE1vZGUiLCJwZXJzb25hbGl6YXRpb24iLCJ2YXJpYW50U2F2ZWQiLCJ2YXJpYW50U2VsZWN0ZWQiLCJzZWdtZW50ZWRCdXR0b25QcmVzcyIsInZhcmlhbnRNYW5hZ2VtZW50IiwiZW50aXR5VHlwZUZ1bGx5UXVhbGlmaWVkTmFtZSIsInNlbGVjdGlvbkNoYW5nZSIsImxpc3RCaW5kaW5nQ2hhbmdlIiwiZW1wdHlSb3dzRW5hYmxlZCIsImVuYWJsZUF1dG9Db2x1bW5XaWR0aCIsImJlZm9yZVJlYmluZFRhYmxlIiwibW9kZUZvck5vRGF0YU1lc3NhZ2UiLCJkaXNwbGF5U2VnbWVudGVkQnV0dG9uIiwiY29udGVudCIsImdldE1EQ1RhYmxlVGVtcGxhdGUiLCJCdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2UiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlRhYmxlLmJsb2NrLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENvbnZlcnRlZE1ldGFkYXRhLCBFbnRpdHlTZXQsIEVudGl0eVR5cGUsIE5hdmlnYXRpb25Qcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUge1xuXHRMaW5lSXRlbSxcblx0UHJlc2VudGF0aW9uVmFyaWFudCxcblx0U2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudCxcblx0U2VsZWN0aW9uVmFyaWFudCxcblx0U2VsZWN0aW9uVmFyaWFudFR5cGVcbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVGVybXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB7IHR5cGUgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgQXBwQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9BcHBDb21wb25lbnRcIjtcbmltcG9ydCB7XG5cdGJsb2NrQWdncmVnYXRpb24sXG5cdGJsb2NrQXR0cmlidXRlLFxuXHRibG9ja0V2ZW50LFxuXHRkZWZpbmVCdWlsZGluZ0Jsb2NrXG59IGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy90ZW1wbGF0aW5nL0J1aWxkaW5nQmxvY2tTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSB7IFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MgfSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvdGVtcGxhdGluZy9CdWlsZGluZ0Jsb2NrVGVtcGxhdGVQcm9jZXNzb3JcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2UgZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvQnVpbGRpbmdCbG9ja1RlbXBsYXRpbmdCYXNlXCI7XG5pbXBvcnQgdHlwZSBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB0eXBlIHtcblx0QXZhaWxhYmlsaXR5VHlwZSxcblx0Q3VzdG9tRGVmaW5lZFRhYmxlQ29sdW1uLFxuXHRDdXN0b21EZWZpbmVkVGFibGVDb2x1bW5Gb3JPdmVycmlkZSxcblx0SG9yaXpvbnRhbEFsaWduLFxuXHRJbXBvcnRhbmNlLFxuXHRNYW5pZmVzdEFjdGlvbixcblx0T3ZlcmZsb3dHcm91cHNDb25maWd1cmF0aW9uLFxuXHRUYWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBDcmVhdGlvbk1vZGUsIFZpc3VhbGl6YXRpb25UeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgdHlwZSB7IFBhZ2VDb250ZXh0UGF0aFRhcmdldCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL1RlbXBsYXRlQ29udmVydGVyXCI7XG5pbXBvcnQgdHlwZSB7IENoYXJ0VmlzdWFsaXphdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9DaGFydFwiO1xuaW1wb3J0IHR5cGUgeyBWaXN1YWxpemF0aW9uQW5kUGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9EYXRhVmlzdWFsaXphdGlvblwiO1xuaW1wb3J0IHtcblx0Z2V0RGF0YVZpc3VhbGl6YXRpb25Db25maWd1cmF0aW9uLFxuXHRnZXRWaXN1YWxpemF0aW9uc0Zyb21Bbm5vdGF0aW9uXG59IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9EYXRhVmlzdWFsaXphdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBDcmVhdGVCZWhhdmlvciwgVGFibGVUeXBlLCBUYWJsZVZpc3VhbGl6YXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vVGFibGVcIjtcbmltcG9ydCB7IFN0YW5kYXJkQWN0aW9uS2V5cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi90YWJsZS9TdGFuZGFyZEFjdGlvbnNcIjtcbmltcG9ydCB7IHR5cGUgUGxhY2VtZW50IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9Db25maWd1cmFibGVPYmplY3RcIjtcbmltcG9ydCB7IGdlbmVyYXRlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB7IGlzQW5ub3RhdGlvbk9mVGVybSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1R5cGVHdWFyZHNcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgdHlwZSBDb2xsZWN0aW9uQmluZGluZ0luZm9BUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvQ29sbGVjdGlvbkJpbmRpbmdJbmZvXCI7XG5pbXBvcnQgTWFjcm9BUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvTWFjcm9BUElcIjtcbmltcG9ydCB0eXBlIEFjdGlvbiBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9BY3Rpb25cIjtcbmltcG9ydCB0eXBlIEFjdGlvbkdyb3VwIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL0FjdGlvbkdyb3VwXCI7XG5pbXBvcnQgdHlwZSBDb2x1bW4gZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvQ29sdW1uXCI7XG5pbXBvcnQgdHlwZSB7IFRhYmxlQmxvY2tQcm9wZXJ0aWVzIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvTWRjVGFibGVUZW1wbGF0ZVwiO1xuaW1wb3J0IHsgZ2V0TURDVGFibGVUZW1wbGF0ZSB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL01kY1RhYmxlVGVtcGxhdGVcIjtcbmltcG9ydCB0eXBlIE92ZXJmbG93R3JvdXAgZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvT3ZlcmZsb3dHcm91cHNcIjtcbmltcG9ydCBUYWJsZUFQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9UYWJsZUFQSVwiO1xuaW1wb3J0IFRhYmxlQ3JlYXRpb25PcHRpb25zIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL1RhYmxlQ3JlYXRpb25PcHRpb25zXCI7XG5pbXBvcnQgdHlwZSB7IE92ZXJmbG93VG9vbGJhclByaW9yaXR5IH0gZnJvbSBcInNhcC9tL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIFVJNUV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IHsgdHlwZSBUaXRsZUxldmVsIH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIHsgRXhwb3J0U2V0dGluZ3MsIFRhYmxlJFNlbGVjdGlvbkNoYW5nZUV2ZW50UGFyYW1ldGVycyB9IGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IFJvd0FjdGlvbkl0ZW0kUHJlc3NFdmVudFBhcmFtZXRlcnMgfSBmcm9tIFwic2FwL3VpL21kYy90YWJsZS9Sb3dBY3Rpb25JdGVtXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBFdmVudEhhbmRsZXIgfSBmcm9tIFwidHlwZXMvZXh0ZW5zaW9uX3R5cGVzXCI7XG5pbXBvcnQgdHlwZSBBY3Rpb25Hcm91cE92ZXJyaWRlIGZyb20gXCIuL0FjdGlvbkdyb3VwT3ZlcnJpZGVcIjtcbmltcG9ydCB0eXBlIEFjdGlvbk92ZXJyaWRlIGZyb20gXCIuL0FjdGlvbk92ZXJyaWRlXCI7XG5pbXBvcnQgdHlwZSBBbmFseXRpY2FsQ29uZmlndXJhdGlvbiBmcm9tIFwiLi9BbmFseXRpY2FsQ29uZmlndXJhdGlvblwiO1xuaW1wb3J0IHR5cGUgQ29sdW1uT3ZlcnJpZGUgZnJvbSBcIi4vQ29sdW1uT3ZlcnJpZGVcIjtcbmltcG9ydCB0eXBlIE1hc3NFZGl0IGZyb20gXCIuL01hc3NFZGl0XCI7XG5pbXBvcnQgdHlwZSBRdWlja1ZhcmlhbnRTZWxlY3Rpb24gZnJvbSBcIi4vUXVpY2tWYXJpYW50U2VsZWN0aW9uXCI7XG5pbXBvcnQgVGFibGVFdmVudEhhbmRsZXJQcm92aWRlciBmcm9tIFwiLi9UYWJsZUV2ZW50SGFuZGxlclByb3ZpZGVyXCI7XG5cbnR5cGUgQmxvY2tDb2x1bW4gPSBQYXJ0aWFsPE9taXQ8Q29sdW1uLCBcInRlbXBsYXRlXCIgfCBcImV4cG9ydFNldHRpbmdzXCI+PiAmIHtcblx0dGVtcGxhdGU/OiBzdHJpbmc7XG5cdGV4cG9ydFNldHRpbmdzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10gfCBib29sZWFuIHwgb2JqZWN0PiB8IG51bGw7XG5cdF90eXBlOiBcIkNvbHVtblwiO1xufTtcblxudHlwZSBCbG9ja0NvbHVtbk92ZXJyaWRlID0gUGFydGlhbDxPbWl0PENvbHVtbk92ZXJyaWRlLCBcImV4cG9ydFNldHRpbmdzXCI+PiAmIHtcblx0ZXhwb3J0U2V0dGluZ3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXSB8IGJvb2xlYW4gfCBvYmplY3Q+IHwgbnVsbDtcblx0X3R5cGU6IFwiQ29sdW1uT3ZlcnJpZGVcIjtcbn07XG50eXBlIEJsb2NrTWFzc0VkaXQgPSBQYXJ0aWFsPE9taXQ8TWFzc0VkaXQsIFwiY3VzdG9tQ29udGVudFwiPj4gJiB7IGN1c3RvbUNvbnRlbnQ/OiBzdHJpbmc7IGtleTogc3RyaW5nIH07XG50eXBlIEJsb2NrUXVpY2tWYXJpYW50U2VsZWN0aW9uID0gUHJvcGVydGllc09mPFF1aWNrVmFyaWFudFNlbGVjdGlvbj4gJiB7IGtleTogc3RyaW5nIH07XG50eXBlIEJsb2NrQWN0aW9uID0gUHJvcGVydGllc09mPE9taXQ8QWN0aW9uLCBcInByZXNzXCI+PiAmIHsgX3R5cGU6IFwiQWN0aW9uXCI7IHByZXNzOiBzdHJpbmcgfTtcbnR5cGUgQmxvY2tBY3Rpb25Hcm91cCA9IFByb3BlcnRpZXNPZjxPbWl0PEFjdGlvbkdyb3VwLCBcImFjdGlvbnNcIj4+ICYge1xuXHRfdHlwZTogXCJBY3Rpb25Hcm91cFwiO1xuXHRhY3Rpb25zOiAoQmxvY2tBY3Rpb24gfCBCbG9ja0FjdGlvbk92ZXJyaWRlKVtdO1xufTtcbnR5cGUgQmxvY2tBY3Rpb25PdmVycmlkZSA9IFByb3BlcnRpZXNPZjxBY3Rpb25PdmVycmlkZT4gJiB7IF90eXBlOiBcIkFjdGlvbk92ZXJyaWRlXCIgfTtcbnR5cGUgQmxvY2tBY3Rpb25Hcm91cE92ZXJyaWRlID0gUHJvcGVydGllc09mPE9taXQ8QWN0aW9uR3JvdXBPdmVycmlkZSwgXCJhY3Rpb25zXCI+PiAmIHtcblx0X3R5cGU6IFwiQWN0aW9uR3JvdXBPdmVycmlkZVwiO1xuXHRhY3Rpb25zOiAoQmxvY2tBY3Rpb24gfCBCbG9ja0FjdGlvbk92ZXJyaWRlKVtdO1xufTtcbnR5cGUgQ29tbW9uQ3VzdG9tQWN0aW9uID0ge1xuXHRrZXk6IHN0cmluZztcblx0ZW5hYmxlZDogYm9vbGVhbjtcblx0dmlzaWJsZTogYm9vbGVhbjtcblx0Y29tbWFuZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRlbmFibGVPblNlbGVjdDogXCJzaW5nbGVcIiB8IFwibXVsdGlcIiB8IHVuZGVmaW5lZDtcblx0cGxhY2VtZW50OiBcIkJlZm9yZVwiIHwgXCJBZnRlclwiIHwgdW5kZWZpbmVkO1xuXHRhbmNob3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0aXNBSU9wZXJhdGlvbj86IGJvb2xlYW47XG5cdHByaW9yaXR5PzogT3ZlcmZsb3dUb29sYmFyUHJpb3JpdHk7XG5cdGdyb3VwPzogbnVtYmVyO1xuXHRvdmVyZmxvd0dyb3VwPzogbnVtYmVyO1xuXHRfdHlwZTogXCJBY3Rpb25cIiB8IFwiQWN0aW9uT3ZlcnJpZGVcIjtcbn07XG5mdW5jdGlvbiBzYWZlR2V0QXR0cmlidXRlKG5vZGU6IEVsZW1lbnQsIG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdHJldHVybiBub2RlLmdldEF0dHJpYnV0ZShuYW1lKSA/PyB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgZHluYW1pYyBCb29sZWFuIHZhbHVlIG9mIGFuIGF0dHJpYnV0ZS5cbiAqIEBwYXJhbSBub2RlIFRoZSBub2RlIHRvIGdldCB0aGUgYXR0cmlidXRlIGZyb21cbiAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIFRoZSBCb29sZWFuIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGVcbiAqL1xuZnVuY3Rpb24gZ2V0RHluYW1pY0Jvb2xlYW5WYWx1ZU9mQXR0cmlidXRlKG5vZGU6IEVsZW1lbnQsIG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRjb25zdCBlbmFibGVtZW50QXR0ciA9IG5vZGUuZ2V0QXR0cmlidXRlKG5hbWUpO1xuXHRzd2l0Y2ggKGVuYWJsZW1lbnRBdHRyKSB7XG5cdFx0Y2FzZSBudWxsOlxuXHRcdGNhc2UgXCJ0cnVlXCI6XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRjYXNlIFwiZmFsc2VcIjpcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRkZWZhdWx0OlxuXHRcdFx0cmV0dXJuIGVuYWJsZW1lbnRBdHRyIGFzIHVua25vd24gYXMgYm9vbGVhbjsgLy8gVG8gbWFuYWdlIGJpbmRpbmcgZXhwcmVzc2lvbnNcblx0fVxufVxuXG4vKipcbiAqIFJlbW92ZXMgYWxsIHByb3BlcnRpZXMgd2l0aCB0aGUgdmFsdWUgb2YgdW5kZWZpbmVkIGZyb20gdGhlIG9iamVjdC5cbiAqIEBwYXJhbSBvYmogVGhlIG9iamVjdCB0byByZW1vdmUgdGhlIHVuZGVmaW5lZCBwcm9wZXJ0aWVzIGZyb21cbiAqL1xuZnVuY3Rpb24gcmVtb3ZlVW5kZWZpbmVkUHJvcGVydGllcyhvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG5cdE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaCgoa2V5KSA9PiB7XG5cdFx0aWYgKG9ialtrZXldID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGRlbGV0ZSBvYmpba2V5XTtcblx0XHR9XG5cdH0pO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGFjdGlvbiBwcm9wZXJ0aWVzIGZyb20gYW4gWE1MIG5vZGUuXG4gKiBAcGFyYW0gYWN0aW9uTm9kZSBUaGUgYWN0aW9uIG5vZGVcbiAqIEByZXR1cm5zIFRoZSBhY3Rpb24gcHJvcGVydGllc1xuICovXG5mdW5jdGlvbiBwYXJzZUFjdGlvbkZyb21FbGVtZW50KGFjdGlvbk5vZGU6IEVsZW1lbnQpOiBCbG9ja0FjdGlvbiB8IEJsb2NrQWN0aW9uT3ZlcnJpZGUge1xuXHRjb25zdCBjb21tb25Qcm9wZXJ0aWVzID0gZ2V0Q29tbW9uQ3VzdG9tQWN0aW9uUHJvcGVydGllcyhhY3Rpb25Ob2RlKTtcblx0aWYgKGFjdGlvbk5vZGUubG9jYWxOYW1lID09PSBcIkFjdGlvblwiKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHRleHQ6IGFjdGlvbk5vZGUuZ2V0QXR0cmlidXRlKFwidGV4dFwiKSA/PyBjb21tb25Qcm9wZXJ0aWVzLmtleSxcblx0XHRcdHByZXNzOiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwicHJlc3NcIiksXG5cdFx0XHRyZXF1aXJlc1NlbGVjdGlvbjogYWN0aW9uTm9kZS5nZXRBdHRyaWJ1dGUoXCJyZXF1aXJlc1NlbGVjdGlvblwiKSA9PT0gXCJ0cnVlXCIsXG5cdFx0XHQuLi5jb21tb25Qcm9wZXJ0aWVzXG5cdFx0fSBhcyBCbG9ja0FjdGlvbjtcblx0fVxuXHRyZXR1cm4ge1xuXHRcdGVuYWJsZUF1dG9TY3JvbGw6IGdldER5bmFtaWNCb29sZWFuVmFsdWVPZkF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcImVuYWJsZUF1dG9TY3JvbGxcIiksXG5cdFx0bmF2aWdhdGVUb0luc3RhbmNlOiBnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJuYXZpZ2F0ZVRvSW5zdGFuY2VcIiksXG5cdFx0ZGVmYXVsdFZhbHVlc0Z1bmN0aW9uOiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiZGVmYXVsdFZhbHVlc0Z1bmN0aW9uXCIpLFxuXHRcdC4uLmNvbW1vblByb3BlcnRpZXNcblx0fSBhcyBCbG9ja0FjdGlvbk92ZXJyaWRlO1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgY29tbW9uIGN1c3RvbSBwcm9wZXJ0aWVzIG9mIHRoZSBhY3Rpb24gZnJvbSB0aGUgWE1MIG5vZGUuXG4gKiBAcGFyYW0gYWN0aW9uTm9kZSBUaGUgYWN0aW9uIGdyb3VwIG5vZGVcbiAqIEByZXR1cm5zIFRoZSBjb2x1bW4gcHJvcGVydGllcyBmb3IgdGhlIGdpdmVuIG5vZGVcbiAqL1xuZnVuY3Rpb24gZ2V0Q29tbW9uQ3VzdG9tQWN0aW9uUHJvcGVydGllcyhhY3Rpb25Ob2RlOiBFbGVtZW50KTogQ29tbW9uQ3VzdG9tQWN0aW9uIHtcblx0Y29uc3QgYWN0aW9uOiBDb21tb25DdXN0b21BY3Rpb24gPSB7XG5cdFx0a2V5OiBhY3Rpb25Ob2RlLmdldEF0dHJpYnV0ZShcImtleVwiKSEucmVwbGFjZShcIklubGluZVhNTF9cIiwgXCJcIiksXG5cdFx0ZW5hYmxlZDogZ2V0RHluYW1pY0Jvb2xlYW5WYWx1ZU9mQXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiZW5hYmxlZFwiKSxcblx0XHR2aXNpYmxlOiBnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJ2aXNpYmxlXCIpLFxuXHRcdGNvbW1hbmQ6IHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJjb21tYW5kXCIpLFxuXHRcdGVuYWJsZU9uU2VsZWN0OiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiZW5hYmxlT25TZWxlY3RcIikgYXMgXCJzaW5nbGVcIiB8IFwibXVsdGlcIiB8IHVuZGVmaW5lZCxcblx0XHRwbGFjZW1lbnQ6IHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJwbGFjZW1lbnRcIikgYXMgXCJCZWZvcmVcIiB8IFwiQWZ0ZXJcIiB8IHVuZGVmaW5lZCxcblx0XHRhbmNob3I6IHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJhbmNob3JcIiksXG5cdFx0X3R5cGU6IGFjdGlvbk5vZGUubG9jYWxOYW1lID09PSBcIkFjdGlvblwiID8gXCJBY3Rpb25cIiA6IFwiQWN0aW9uT3ZlcnJpZGVcIlxuXHR9O1xuXHRpZiAoYWN0aW9uTm9kZT8uZ2V0QXR0cmlidXRlKFwiaXNBSU9wZXJhdGlvblwiKSkge1xuXHRcdGFjdGlvbltcImlzQUlPcGVyYXRpb25cIl0gPSBnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJpc0FJT3BlcmF0aW9uXCIpO1xuXHR9XG5cblx0aWYgKGFjdGlvbk5vZGU/LmdldEF0dHJpYnV0ZShcInByaW9yaXR5XCIpKSB7XG5cdFx0YWN0aW9uW1wicHJpb3JpdHlcIl0gPSBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwicHJpb3JpdHlcIikgYXMgT3ZlcmZsb3dUb29sYmFyUHJpb3JpdHk7XG5cdH1cblxuXHRpZiAoYWN0aW9uTm9kZT8uZ2V0QXR0cmlidXRlKFwiZ3JvdXBcIikpIHtcblx0XHRhY3Rpb25bXCJncm91cFwiXSA9IE51bWJlci5wYXJzZUludChzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiZ3JvdXBcIikgPz8gXCJcIiwgMTApO1xuXHR9XG5cblx0aWYgKGFjdGlvbk5vZGU/LmdldEF0dHJpYnV0ZShcIm92ZXJmbG93R3JvdXBcIikpIHtcblx0XHRhY3Rpb25bXCJvdmVyZmxvd0dyb3VwXCJdID0gTnVtYmVyLnBhcnNlSW50KHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJvdmVyZmxvd0dyb3VwXCIpID8/IFwiXCIsIDEwKTtcblx0fVxuXG5cdHJldHVybiBhY3Rpb247XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBhY3Rpb25zIGFuZCBhY3Rpb24gZ3JvdXBzIGZyb20gdGhlIFhNTCBub2RlLlxuICogQHBhcmFtIGFjdGlvbk5vZGVcbiAqIEBwYXJhbSBhZ2dyZWdhdGlvbk9iamVjdFxuICogQHJldHVybnMgVGhlIGFjdGlvbiBvciBhY3Rpb24gZ3JvdXAgcHJvcGVydGllcyBmb3IgdGhlIGdpdmVuIG5vZGVcbiAqL1xuZnVuY3Rpb24gc2V0Q3VzdG9tQWN0aW9uR3JvdXBQcm9wZXJ0aWVzKFxuXHRhY3Rpb25Ob2RlOiBFbGVtZW50LFxuXHRhZ2dyZWdhdGlvbk9iamVjdDogQWN0aW9uIHwgQWN0aW9uT3ZlcnJpZGUgfCBBY3Rpb25Hcm91cCB8IEFjdGlvbkdyb3VwT3ZlcnJpZGVcbik6IEJsb2NrQWN0aW9uIHwgQmxvY2tBY3Rpb25Hcm91cCB8IEJsb2NrQWN0aW9uT3ZlcnJpZGUgfCBCbG9ja0FjdGlvbkdyb3VwT3ZlcnJpZGUge1xuXHRpZiAoW1wiQWN0aW9uR3JvdXBcIiwgXCJBY3Rpb25Hcm91cE92ZXJyaWRlXCJdLmluY2x1ZGVzKGFjdGlvbk5vZGUubG9jYWxOYW1lKSkge1xuXHRcdGNvbnN0IGNvbW1vblByb3BlcnRpZXMgPSBnZXRDb21tb25DdXN0b21BY3Rpb25zR3JvdXBQcm9wZXJ0aWVzKGFjdGlvbk5vZGUsIGFnZ3JlZ2F0aW9uT2JqZWN0IGFzIEFjdGlvbkdyb3VwIHwgQWN0aW9uR3JvdXBPdmVycmlkZSk7XG5cdFx0aWYgKGFjdGlvbk5vZGUubG9jYWxOYW1lID09PSBcIkFjdGlvbkdyb3VwXCIpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHRleHQ6IGFjdGlvbk5vZGUuZ2V0QXR0cmlidXRlKFwidGV4dFwiKSA/PyBjb21tb25Qcm9wZXJ0aWVzLmtleSxcblx0XHRcdFx0ZGVmYXVsdEFjdGlvbjogc2FmZUdldEF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcImRlZmF1bHRBY3Rpb25cIiksXG5cdFx0XHRcdC4uLmNvbW1vblByb3BlcnRpZXNcblx0XHRcdH0gYXMgQmxvY2tBY3Rpb25Hcm91cDtcblx0XHR9XG5cdFx0cmV0dXJuIGNvbW1vblByb3BlcnRpZXMgYXMgQmxvY2tBY3Rpb25Hcm91cE92ZXJyaWRlO1xuXHR9XG5cblx0Ly9BY3Rpb24gb3IgQWN0aW9uT3ZlcnJpZGVcblx0cmV0dXJuIHBhcnNlQWN0aW9uRnJvbUVsZW1lbnQoYWN0aW9uTm9kZSk7XG59XG5cbmNvbnN0IHNldEN1c3RvbU1hc3NFZGl0UHJvcGVydGllcyA9IGZ1bmN0aW9uIChlbGVtZW50OiBFbGVtZW50KTogQmxvY2tNYXNzRWRpdCB7XG5cdHJldHVybiB7XG5cdFx0a2V5OiBcImNvbmZpZ3VyYXRpb25cIixcblx0XHRjdXN0b21Db250ZW50OiBlbGVtZW50LmNoaWxkcmVuWzBdPy5vdXRlckhUTUwsXG5cdFx0dmlzaWJsZUZpZWxkczogZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJ2aXNpYmxlRmllbGRzXCIpPy5zcGxpdChcIixcIiksXG5cdFx0aWdub3JlZEZpZWxkczogZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJpZ25vcmVkRmllbGRzXCIpPy5zcGxpdChcIixcIiksXG5cdFx0b3BlcmF0aW9uR3JvdXBpbmdNb2RlOiAoZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJvcGVyYXRpb25Hcm91cGluZ01vZGVcIikgPz8gdW5kZWZpbmVkKSBhcyBcIkNoYW5nZVNldFwiIHwgXCJJc29sYXRlZFwiIHwgdW5kZWZpbmVkXG5cdH07XG59O1xuXG4vKipcbiAqIFBhcnNlcyB0aGUgcXVpY2tWYXJpYW50U2VsZWN0aW9uIGZyb20gdGhlIFhNTCBub2RlLlxuICogQHBhcmFtIHF1aWNrVmFyaWFudFNlbGVjdGlvbiBUaGUgWE1MIG5vZGUgY29udGFpbmluZyB0aGUgcXVpY2tWYXJpYW50U2VsZWN0aW9uXG4gKiBAcmV0dXJucyBUaGUgUXVpY2tWYXJpYW50U2VsZWN0aW9uIGZvciB0aGUgZ2l2ZW4gbm9kZVxuICovXG5jb25zdCBzZXRRdWlja1ZhcmlhbnRTZWxlY3Rpb24gPSBmdW5jdGlvbiAocXVpY2tWYXJpYW50U2VsZWN0aW9uOiBFbGVtZW50KTogQmxvY2tRdWlja1ZhcmlhbnRTZWxlY3Rpb24ge1xuXHRyZXR1cm4ge1xuXHRcdGtleTogXCJxdWlja0ZpbHRlcnNcIixcblx0XHRwYXRoczogcXVpY2tWYXJpYW50U2VsZWN0aW9uLmdldEF0dHJpYnV0ZShcInBhdGhzXCIpPy5zcGxpdChcIixcIiksXG5cdFx0c2hvd0NvdW50czogcXVpY2tWYXJpYW50U2VsZWN0aW9uLmdldEF0dHJpYnV0ZShcInNob3dDb3VudHNcIikgPT09IFwidHJ1ZVwiXG5cdH07XG59O1xuXG5jb25zdCBzZXRDdXN0b21BY3Rpb25PdmVyZmxvd0dyb3VwUHJvcGVydGllcyA9IGZ1bmN0aW9uIChvdmVyRmxvd0dyb3VwOiBFbGVtZW50KTogUHJvcGVydGllc09mPE92ZXJmbG93R3JvdXA+IHtcblx0cmV0dXJuIHtcblx0XHRvdmVyZmxvd0dyb3VwOiBOdW1iZXIucGFyc2VJbnQob3ZlckZsb3dHcm91cC5nZXRBdHRyaWJ1dGUoXCJvdmVyZmxvd0dyb3VwXCIpIGFzIHN0cmluZywgMTApLFxuXHRcdHNob3dTZXBhcmF0b3I6IG92ZXJGbG93R3JvdXAuZ2V0QXR0cmlidXRlKFwic2hvd1NlcGFyYXRvclwiKSA9PT0gXCJ0cnVlXCJcblx0fTtcbn07XG5cbi8qKlxuICogUGFyc2VzIHRoZSBjb21tb24gY3VzdG9tIHByb3BlcnRpZXMgb2YgdGhlIGFjdGlvbiBncm91cHMgZnJvbSB0aGUgWE1MIG5vZGUuXG4gKiBAcGFyYW0gYWN0aW9uTm9kZSBUaGUgYWN0aW9uIGdyb3VwIG5vZGVcbiAqIEBwYXJhbSBhZ2dyZWdhdGlvbk9iamVjdCBUaGUgYWdncmVnYXRpb24gb2JqZWN0XG4gKiBAcmV0dXJucyBUaGUgY29sdW1uIHByb3BlcnRpZXMgZm9yIHRoZSBnaXZlbiBub2RlXG4gKi9cbmZ1bmN0aW9uIGdldENvbW1vbkN1c3RvbUFjdGlvbnNHcm91cFByb3BlcnRpZXMoXG5cdGFjdGlvbk5vZGU6IEVsZW1lbnQsXG5cdGFnZ3JlZ2F0aW9uT2JqZWN0OiBBY3Rpb25Hcm91cCB8IEFjdGlvbkdyb3VwT3ZlcnJpZGVcbik6IHtcblx0a2V5OiBzdHJpbmc7XG5cdGFjdGlvbnM6IChCbG9ja0FjdGlvbiB8IEJsb2NrQWN0aW9uT3ZlcnJpZGUpW107XG5cdGFuY2hvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRwbGFjZW1lbnQ6IFwiQmVmb3JlXCIgfCBcIkFmdGVyXCIgfCB1bmRlZmluZWQ7XG5cdF90eXBlOiBcIkFjdGlvbkdyb3VwXCIgfCBcIkFjdGlvbkdyb3VwT3ZlcnJpZGVcIjtcbn0ge1xuXHRjb25zdCBhY3Rpb25zSW5NZW51ID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KGFjdGlvbk5vZGUuY2hpbGRyZW4pLm1hcCgoc3ViQWN0aW9uOiBFbGVtZW50KSA9PiB7XG5cdFx0cmV0dXJuIHBhcnNlQWN0aW9uRnJvbUVsZW1lbnQoc3ViQWN0aW9uKTtcblx0fSk7XG5cdGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSA9IGFnZ3JlZ2F0aW9uT2JqZWN0LmtleS5yZXBsYWNlKFwiSW5saW5lWE1MX1wiLCBcIlwiKTtcblx0YWN0aW9uTm9kZS5zZXRBdHRyaWJ1dGUoXCJrZXlcIiwgYWdncmVnYXRpb25PYmplY3Qua2V5KTtcblx0cmV0dXJuIHtcblx0XHRrZXk6IGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSxcblx0XHRhY3Rpb25zOiBhY3Rpb25zSW5NZW51LFxuXHRcdGFuY2hvcjogc2FmZUdldEF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcImFuY2hvclwiKSxcblx0XHRwbGFjZW1lbnQ6IHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJwbGFjZW1lbnRcIikgYXMgXCJCZWZvcmVcIiB8IFwiQWZ0ZXJcIiB8IHVuZGVmaW5lZCxcblx0XHRfdHlwZTogYWN0aW9uTm9kZS5sb2NhbE5hbWUgPT09IFwiQWN0aW9uR3JvdXBcIiA/IFwiQWN0aW9uR3JvdXBcIiA6IFwiQWN0aW9uR3JvdXBPdmVycmlkZVwiXG5cdH07XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBjb21tb24gY3VzdG9tIHByb3BlcnRpZXMgb2YgdGhlIGNvbHVtbnMgZnJvbSB0aGUgWE1MIG5vZGUuXG4gKiBAcGFyYW0gY2hpbGRDb2x1bW4gVGhlIGNvbHVtbiBub2RlXG4gKiBAcGFyYW0gYWdncmVnYXRpb25PYmplY3QgVGhlIGFnZ3JlZ2F0aW9uIG9iamVjdFxuICogQHJldHVybnMgVGhlIGNvbHVtbiBwcm9wZXJ0aWVzIGZvciB0aGUgZ2l2ZW4gbm9kZVxuICovXG5mdW5jdGlvbiBnZXRDb21tb25DdXN0b21Db2x1bW5zUHJvcGVydGllcyhcblx0Y2hpbGRDb2x1bW46IEVsZW1lbnQsXG5cdGFnZ3JlZ2F0aW9uT2JqZWN0OiBCbG9ja0NvbHVtbiB8IEJsb2NrQ29sdW1uT3ZlcnJpZGVcbik6IHtcblx0a2V5OiBzdHJpbmc7XG5cdHdpZHRoOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXHRpbXBvcnRhbmNlOiBJbXBvcnRhbmNlIHwgdW5kZWZpbmVkO1xuXHRob3Jpem9udGFsQWxpZ246IEhvcml6b250YWxBbGlnbiB8IHVuZGVmaW5lZDtcblx0YXZhaWxhYmlsaXR5OiBBdmFpbGFiaWxpdHlUeXBlIHwgdW5kZWZpbmVkO1xuXHRwbGFjZW1lbnQ6IFwiQmVmb3JlXCIgfCBcIkFmdGVyXCIgfCB1bmRlZmluZWQ7XG5cdGFuY2hvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRleHBvcnRTZXR0aW5nczogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10gfCBib29sZWFuIHwgb2JqZWN0PiB8IHVuZGVmaW5lZCB8IG51bGw7XG5cdGRpc2FibGVFeHBvcnQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59IHtcblx0YWdncmVnYXRpb25PYmplY3Qua2V5ID0gYWdncmVnYXRpb25PYmplY3Qua2V5IS5yZXBsYWNlKFwiSW5saW5lWE1MX1wiLCBcIlwiKTtcblx0Y2hpbGRDb2x1bW4uc2V0QXR0cmlidXRlKFwia2V5XCIsIGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSk7XG5cdHJldHVybiB7XG5cdFx0a2V5OiBhZ2dyZWdhdGlvbk9iamVjdC5rZXksXG5cdFx0d2lkdGg6IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwid2lkdGhcIiksXG5cdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI6IGNoaWxkQ29sdW1uLmdldEF0dHJpYnV0ZShcIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyXCIpXG5cdFx0XHQ/IGNoaWxkQ29sdW1uLmdldEF0dHJpYnV0ZShcIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyXCIpID09PSBcInRydWVcIlxuXHRcdFx0OiB1bmRlZmluZWQsXG5cdFx0aW1wb3J0YW5jZTogc2FmZUdldEF0dHJpYnV0ZShjaGlsZENvbHVtbiwgXCJpbXBvcnRhbmNlXCIpIGFzIEltcG9ydGFuY2UgfCB1bmRlZmluZWQsXG5cdFx0aG9yaXpvbnRhbEFsaWduOiBzYWZlR2V0QXR0cmlidXRlKGNoaWxkQ29sdW1uLCBcImhvcml6b250YWxBbGlnblwiKSBhcyBIb3Jpem9udGFsQWxpZ24gfCB1bmRlZmluZWQsXG5cdFx0YXZhaWxhYmlsaXR5OiBzYWZlR2V0QXR0cmlidXRlKGNoaWxkQ29sdW1uLCBcImF2YWlsYWJpbGl0eVwiKSBhcyBBdmFpbGFiaWxpdHlUeXBlIHwgdW5kZWZpbmVkLFxuXHRcdHBsYWNlbWVudDogKHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwicGxhY2VtZW50XCIpIHx8IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwicG9zaXRpb25QbGFjZW1lbnRcIikpIGFzXG5cdFx0XHR8IFwiQmVmb3JlXCJcblx0XHRcdHwgXCJBZnRlclwiXG5cdFx0XHR8IHVuZGVmaW5lZCwgLy8gcG9zaXRpb25QbGFjZW1lbnQgaXMga2VwdCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcblx0XHRhbmNob3I6IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwiYW5jaG9yXCIpIHx8IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwicG9zaXRpb25BbmNob3JcIiksIC8vIHBvc2l0aW9uQW5jaG9yIGlzIGtlcHQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG5cdFx0ZGlzYWJsZUV4cG9ydDogY2hpbGRDb2x1bW4uZ2V0QXR0cmlidXRlKFwiZGlzYWJsZUV4cG9ydFwiKSA/IGNoaWxkQ29sdW1uLmdldEF0dHJpYnV0ZShcImRpc2FibGVFeHBvcnRcIikgPT09IFwidHJ1ZVwiIDogdW5kZWZpbmVkLFxuXHRcdGV4cG9ydFNldHRpbmdzOiBwYXJzZUV4cG9ydFNldHRpbmdzKGNoaWxkQ29sdW1uKVxuXHR9O1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgY3VzdG9tIGNvbHVtbnMgZnJvbSB0aGUgWE1MIG5vZGUuXG4gKiBAcGFyYW0gY2hpbGRDb2x1bW5cbiAqIEBwYXJhbSBhZ2dyZWdhdGlvbk9iamVjdFxuICogQHJldHVybnMgVGhlIGNvbHVtbiBwcm9wZXJ0aWVzIGZvciB0aGUgZ2l2ZW4gbm9kZVxuICovXG5mdW5jdGlvbiBzZXRDdXN0b21Db2x1bW5Qcm9wZXJ0aWVzKFxuXHRjaGlsZENvbHVtbjogRWxlbWVudCxcblx0YWdncmVnYXRpb25PYmplY3Q6IEJsb2NrQ29sdW1uIHwgQmxvY2tDb2x1bW5PdmVycmlkZVxuKTogQmxvY2tDb2x1bW4gfCBCbG9ja0NvbHVtbk92ZXJyaWRlIHtcblx0YWdncmVnYXRpb25PYmplY3Qua2V5ID0gYWdncmVnYXRpb25PYmplY3Qua2V5IS5yZXBsYWNlKFwiSW5saW5lWE1MX1wiLCBcIlwiKTtcblx0Y2hpbGRDb2x1bW4uc2V0QXR0cmlidXRlKFwia2V5XCIsIGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSk7XG5cdGlmIChjaGlsZENvbHVtbi5sb2NhbE5hbWUgPT09IFwiQ29sdW1uXCIpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0Li4uZ2V0Q29tbW9uQ3VzdG9tQ29sdW1uc1Byb3BlcnRpZXMoY2hpbGRDb2x1bW4sIGFnZ3JlZ2F0aW9uT2JqZWN0KSxcblx0XHRcdGhlYWRlcjogc2FmZUdldEF0dHJpYnV0ZShjaGlsZENvbHVtbiwgXCJoZWFkZXJcIiksXG5cdFx0XHR0b29sdGlwOiBzYWZlR2V0QXR0cmlidXRlKGNoaWxkQ29sdW1uLCBcInRvb2x0aXBcIiksXG5cdFx0XHR0ZW1wbGF0ZTogZ2V0Q29sdW1uVGVtcGxhdGUoY2hpbGRDb2x1bW4pLFxuXHRcdFx0cHJvcGVydGllczogc2FmZUdldEF0dHJpYnV0ZShjaGlsZENvbHVtbiwgXCJwcm9wZXJ0aWVzXCIpPy5zcGxpdChcIixcIiksXG5cdFx0XHRyZXF1aXJlZDogY2hpbGRDb2x1bW4uZ2V0QXR0cmlidXRlKFwicmVxdWlyZWRcIikgPyBjaGlsZENvbHVtbi5nZXRBdHRyaWJ1dGUoXCJyZXF1aXJlZFwiKSA9PT0gXCJ0cnVlXCIgOiB1bmRlZmluZWQsXG5cdFx0XHRfdHlwZTogY2hpbGRDb2x1bW4ubG9jYWxOYW1lXG5cdFx0fTtcblx0fVxuXHRyZXR1cm4ge1xuXHRcdC4uLmdldENvbW1vbkN1c3RvbUNvbHVtbnNQcm9wZXJ0aWVzKGNoaWxkQ29sdW1uLCBhZ2dyZWdhdGlvbk9iamVjdCksXG5cdFx0X3R5cGU6IFwiQ29sdW1uT3ZlcnJpZGVcIlxuXHR9O1xufVxuXG5jb25zdCBwYXJzZUV4cG9ydFNldHRpbmdzID0gKGVsZW1lbnQ6IEVsZW1lbnQpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXSB8IGJvb2xlYW4gfCBvYmplY3Q+IHwgdW5kZWZpbmVkID0+IHtcblx0Y29uc3QgZXhwb3J0U2V0dGluZ3MgPSBwYXJzZVNpbXBsZUFnZ3JlZ2F0aW9uKGVsZW1lbnQsIFwiZXhwb3J0U2V0dGluZ3NcIik7XG5cdGlmICghZXhwb3J0U2V0dGluZ3MpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdHJldHVybiB7XG5cdFx0dGVtcGxhdGU6IGV4cG9ydFNldHRpbmdzLnRlbXBsYXRlLFxuXHRcdHdyYXA6IGV4cG9ydFNldHRpbmdzLndyYXAgPT09IFwidHJ1ZVwiLFxuXHRcdHR5cGU6IGV4cG9ydFNldHRpbmdzLnR5cGUsXG5cdFx0cHJvcGVydHk6IGV4cG9ydFNldHRpbmdzLnByb3BlcnR5Py5zcGxpdChcIixcIiksXG5cdFx0d2lkdGg6IGV4cG9ydFNldHRpbmdzLndpZHRoLFxuXHRcdHRleHRBbGlnbjogZXhwb3J0U2V0dGluZ3MudGV4dEFsaWduLFxuXHRcdGxhYmVsOiBleHBvcnRTZXR0aW5ncy5sYWJlbCxcblx0XHR0cnVlVmFsdWU6IGV4cG9ydFNldHRpbmdzLnRydWVWYWx1ZSxcblx0XHRmYWxzZVZhbHVlOiBleHBvcnRTZXR0aW5ncy5mYWxzZVZhbHVlLFxuXHRcdHZhbHVlTWFwOiBleHBvcnRTZXR0aW5ncy52YWx1ZU1hcFxuXHR9O1xufTtcblxuY29uc3QgZ2V0Q29sdW1uVGVtcGxhdGUgPSAoZWxlbWVudDogRWxlbWVudCk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG5cdGxldCBhZ2dyZWdhdGlvbiA9IGdldEFnZ3JlZ2F0aW9uKGVsZW1lbnQsIFwidGVtcGxhdGVcIik7XG5cdGlmICghYWdncmVnYXRpb24pIHtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IGNoaWxkID0gZWxlbWVudC5jaGlsZHJlbi5pdGVtKGkpO1xuXHRcdFx0aWYgKGNoaWxkICYmICFjaGlsZC5ub2RlTmFtZS5lbmRzV2l0aChcImV4cG9ydFNldHRpbmdzXCIpKSB7XG5cdFx0XHRcdGFnZ3JlZ2F0aW9uID0gY2hpbGQ7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRyZXR1cm4gYWdncmVnYXRpb24/Lm91dGVySFRNTCA/PyBlbGVtZW50LmdldEF0dHJpYnV0ZShcInRlbXBsYXRlXCIpID8/IHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IHBhcnNlU2ltcGxlQWdncmVnYXRpb24gPSAoZWxlbWVudDogRWxlbWVudCwgYWdncmVnYXRpb25OYW1lOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkID0+IHtcblx0Y29uc3QgYWdncmVnYXRpb24gPSBnZXRBZ2dyZWdhdGlvbihlbGVtZW50LCBhZ2dyZWdhdGlvbk5hbWUpO1xuXHRjb25zdCBjaGlsZCA9IGFnZ3JlZ2F0aW9uPy5jaGlsZHJlblswXTtcblx0Y29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cdGlmICghY2hpbGQpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdGZvciAoY29uc3QgbmFtZSBvZiBjaGlsZC5nZXRBdHRyaWJ1dGVOYW1lcygpKSB7XG5cdFx0Y29uc3QgdmFsdWUgPSBjaGlsZC5nZXRBdHRyaWJ1dGUobmFtZSk7XG5cdFx0aWYgKHZhbHVlKSB7XG5cdFx0XHRyZXN1bHRbbmFtZV0gPSB2YWx1ZTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHJlc3VsdDtcbn07XG5cbmNvbnN0IGdldEFnZ3JlZ2F0aW9uID0gKGVsZW1lbnQ6IEVsZW1lbnQsIGFnZ3JlZ2F0aW9uTmFtZTogc3RyaW5nKTogRWxlbWVudCB8IHVuZGVmaW5lZCA9PiB7XG5cdGxldCBhZ2dyZWdhdGlvbjogRWxlbWVudCB8IHVuZGVmaW5lZDtcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtZW50LmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG5cdFx0Y29uc3QgY2hpbGQgPSBlbGVtZW50LmNoaWxkcmVuLml0ZW0oaSk7XG5cdFx0aWYgKGNoaWxkPy5ub2RlTmFtZS5lbmRzV2l0aChhZ2dyZWdhdGlvbk5hbWUpID09PSB0cnVlKSB7XG5cdFx0XHRhZ2dyZWdhdGlvbiA9IGNoaWxkO1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBhZ2dyZWdhdGlvbjtcbn07XG5cbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgdXNlZCB0byBjcmVhdGUgYSB0YWJsZSBiYXNlZCBvbiB0aGUgbWV0YWRhdGEgcHJvdmlkZWQgYnkgT0RhdGEgVjQuXG4gKiA8YnI+XG4gKiBVc3VhbGx5LCBhIExpbmVJdGVtLCBQcmVzZW50YXRpb25WYXJpYW50LCBvciBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50IGFubm90YXRpb24gaXMgZXhwZWN0ZWQsIGJ1dCB0aGUgVGFibGUgYnVpbGRpbmcgYmxvY2sgY2FuIGFsc28gYmUgdXNlZCB0byBkaXNwbGF5IGFuIEVudGl0eVNldC5cbiAqIDxicj5cbiAqIElmIGEgUHJlc2VudGF0aW9uVmFyaWFudCBpcyBzcGVjaWZpZWQsIHRoZW4gaXQgbXVzdCBoYXZlIFVJLkxpbmVJdGVtIGFzIHRoZSBmaXJzdCBwcm9wZXJ0eSBvZiB0aGUgVmlzdWFsaXphdGlvbnMuXG4gKiA8YnI+XG4gKiBJZiBhIFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQgaXMgc3BlY2lmaWVkLCB0aGVuIGl0IG11c3QgY29udGFpbiBhIHZhbGlkIFByZXNlbnRhdGlvblZhcmlhbnQgdGhhdCBhbHNvIGhhcyBhIFVJLkxpbmVJdGVtIGFzIHRoZSBmaXJzdCBwcm9wZXJ0eSBvZiB0aGUgVmlzdWFsaXphdGlvbnMuXG4gKlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqIDxwcmU+XG4gKiAmbHQ7bWFjcm9zOlRhYmxlIGlkPVwiTXlUYWJsZVwiIG1ldGFQYXRoPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtXCIgLyZndDtcbiAqIDwvcHJlPlxuICoge0BsaW5rIGRlbW86c2FwL2ZlL2NvcmUvZnBtRXhwbG9yZXIvaW5kZXguaHRtbCMvYnVpbGRpbmdCbG9ja3MvdGFibGUvdGFibGVEZWZhdWx0IE92ZXJ2aWV3IG9mIFRhYmxlIEJ1aWxkaW5nIEJsb2Nrc31cbiAqIEBtaXhlcyBzYXAuZmUubWFjcm9zLnRhYmxlLlRhYmxlQVBJXG4gKiBAYXVnbWVudHMgc2FwLmZlLm1hY3Jvcy5NYWNyb0FQSVxuICogQHB1YmxpY1xuICovXG5AZGVmaW5lQnVpbGRpbmdCbG9jayh7XG5cdG5hbWU6IFwiVGFibGVcIixcblx0bmFtZXNwYWNlOiBcInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIixcblx0cHVibGljTmFtZXNwYWNlOiBcInNhcC5mZS5tYWNyb3NcIixcblx0cmV0dXJuVHlwZXM6IFtcInNhcC5mZS5tYWNyb3MudGFibGUuVGFibGVBUElcIl1cbn0pXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUYWJsZUJsb2NrIGV4dGVuZHMgQnVpbGRpbmdCbG9ja1RlbXBsYXRpbmdCYXNlIHtcblx0Ly8gICoqKioqKioqKioqKioqKiBQdWJsaWMgJiBSZXF1aXJlZCBBdHRyaWJ1dGVzICoqKioqKioqKioqKioqKioqKioqXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSByZWxhdGl2ZSBwYXRoIHRvIGEgTGluZUl0ZW0sIFByZXNlbnRhdGlvblZhcmlhbnQgb3IgU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudCBpbiB0aGUgbWV0YW1vZGVsLCBiYXNlZCBvbiB0aGUgY3VycmVudCBjb250ZXh0UGF0aC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInNhcC51aS5tb2RlbC5Db250ZXh0XCIsXG5cdFx0dW5kZXJseWluZ1R5cGU6IFwic3RyaW5nXCIsXG5cdFx0ZXhwZWN0ZWRUeXBlczogW1wiRW50aXR5U2V0XCIsIFwiRW50aXR5VHlwZVwiLCBcIlNpbmdsZXRvblwiLCBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiXSxcblx0XHRleHBlY3RlZEFubm90YXRpb25zOiBbXG5cdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtXCIsXG5cdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlByZXNlbnRhdGlvblZhcmlhbnRcIixcblx0XHRcdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFwiXG5cdFx0XSxcblx0XHRpc1B1YmxpYzogdHJ1ZSxcblx0XHRyZXF1aXJlZDogdHJ1ZVxuXHR9KVxuXHRtZXRhUGF0aCE6IENvbnRleHQ7XG5cblx0Ly8gICoqKioqKioqKioqKioqKiBQdWJsaWMgQXR0cmlidXRlcyAqKioqKioqKioqKioqKioqKioqKlxuXHQvKipcblx0ICogQW4gZXhwcmVzc2lvbiB0aGF0IGFsbG93cyB5b3UgdG8gY29udHJvbCB0aGUgJ2J1c3knIHN0YXRlIG9mIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlLCBiaW5kYWJsZTogdHJ1ZSB9KVxuXHRidXN5PzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgcGF0aCBvZiB0aGUgY29udGV4dCB1c2VkIGluIHRoZSBjdXJyZW50IHBhZ2Ugb3IgYmxvY2suXG5cdCAqIFRoaXMgc2V0dGluZyBpcyBkZWZpbmVkIGJ5IHRoZSBmcmFtZXdvcmsuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzYXAudWkubW9kZWwuQ29udGV4dFwiLFxuXHRcdHVuZGVybHlpbmdUeXBlOiBcInN0cmluZ1wiLFxuXHRcdGV4cGVjdGVkVHlwZXM6IFtcIkVudGl0eVNldFwiLCBcIkVudGl0eVR5cGVcIiwgXCJTaW5nbGV0b25cIiwgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIl0sXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0Y29udGV4dFBhdGg/OiBDb250ZXh0O1xuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHRhYmxlIGFkYXB0cyB0byB0aGUgY29uZGVuc2VkIGxheW91dC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHB1YmxpYyByZWFkb25seSBjb25kZW5zZWRUYWJsZUxheW91dD86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIHdoZXRoZXIgdGhlIHRhYmxlIGNhbiBiZSBvcGVuZWQgaW4gZnVsbHNjcmVlbiBtb2RlIG9yIG5vdC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHB1YmxpYyByZWFkb25seSBlbmFibGVGdWxsU2NyZWVuPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGRhdGEgY29waWVkIHRvIHRoZSBjb21wdXRlZCBjb2x1bW5zIGlzIHNlbnQgdG8gdGhlIGJhY2sgZW5kLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHJpdmF0ZSByZWFkb25seSBlbmFibGVQYXN0aW5nT2ZDb21wdXRlZFByb3BlcnRpZXM/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIENsZWFyIEFsbCBidXR0b24gaXMgZW5hYmxlZCBieSBkZWZhdWx0LlxuXHQgKiBUbyBlbmFibGUgdGhlIENsZWFyIEFsbCBidXR0b24gYnkgZGVmYXVsdCwgeW91IG11c3Qgc2V0IHRoaXMgcHJvcGVydHkgdG8gZmFsc2UuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IGVuYWJsZVNlbGVjdEFsbD86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIHRoZSBleHBvcnQgZnVuY3Rpb25hbGl0eSBvZiB0aGUgdGFibGUgaXMgZW5hYmxlZCBvciBub3QuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwdWJsaWMgcmVhZG9ubHkgZW5hYmxlRXhwb3J0PzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogQ29uZmlndXJlcyB0aGUgZmlsZSBuYW1lIG9mIGV4cG9ydGVkIHRhYmxlLlxuXHQgKiBJdCdzIGxpbWl0ZWQgdG8gMzEgY2hhcmFjdGVycy4gSWYgdGhlIG5hbWUgaXMgbG9uZ2VyLCBpdCB3aWxsIGJlIHRydW5jYXRlZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHVibGljIHJlYWRvbmx5IGV4cG9ydEZpbGVOYW1lPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBDb25maWd1cmVzIHRoZSBzaGVldCBuYW1lIG9mIGV4cG9ydGVkIHRhYmxlLlxuXHQgKiBJdCdzIGxpbWl0ZWQgdG8gMzEgY2hhcmFjdGVycy4gSWYgdGhlIG5hbWUgaXMgbG9uZ2VyLCBpdCB3aWxsIGJlIHRydW5jYXRlZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHVibGljIHJlYWRvbmx5IGV4cG9ydFNoZWV0TmFtZT86IHN0cmluZztcblxuXHQvKipcblx0ICogTWF4aW11bSBhbGxvd2VkIG51bWJlciBvZiByZWNvcmRzIHRvIGJlIGV4cG9ydGVkIGluIG9uZSByZXF1ZXN0LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImludFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IGV4cG9ydFJlcXVlc3RTaXplPzogbnVtYmVyO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiByb3dzIHRoYXQgY2FuIGJlIHNlbGVjdGVkIGF0IG9uY2UgaW4gdGhlIHRhYmxlLlxuXHQgKiBUaGlzIHByb3BlcnR5IGRvZXMgbm90IGFwcGx5IHRvIHJlc3BvbnNpdmUgdGFibGVzLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImludFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGlvbkxpbWl0PzogbnVtYmVyO1xuXG5cdC8qKlxuXHQgKiBOdW1iZXIgb2YgY29sdW1ucyB0aGF0IGFyZSBmaXhlZCBvbiB0aGUgbGVmdC4gT25seSBjb2x1bW5zIHdoaWNoIGFyZSBub3QgZml4ZWQgY2FuIGJlIHNjcm9sbGVkIGhvcml6b250YWxseS5cblx0ICpcblx0ICogVGhpcyBwcm9wZXJ0eSBpcyBub3QgcmVsZXZhbnQgZm9yIHJlc3BvbnNpdmUgdGFibGVzXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiaW50XCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgZnJvemVuQ29sdW1uQ291bnQ/OiBudW1iZXI7XG5cblx0LyoqXG5cdCAqIERldGVybWluZXMgd2hldGhlciB0aGUgbnVtYmVyIG9mIGZpeGVkIGNvbHVtbnMgY2FuIGJlIGNvbmZpZ3VyZWQgaW4gdGhlIENvbHVtbiBTZXR0aW5ncyBkaWFsb2cuXG5cdCAqXG5cdCAqIFRoaXMgcHJvcGVydHkgZG9lc24ndCBhcHBseSBmb3IgcmVzcG9uc2l2ZSB0YWJsZXNcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgZGlzYWJsZUNvbHVtbkZyZWV6ZT86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIEluZGljYXRlcyBpZiB0aGUgY29sdW1uIGhlYWRlciBzaG91bGQgYmUgYSBwYXJ0IG9mIHRoZSB3aWR0aCBjYWxjdWxhdGlvbi5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgd2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIGhvdyB0aGUgdGFibGUgaGFuZGxlcyB0aGUgdmlzaWJsZSByb3dzLiBEb2VzIG5vdCBhcHBseSB0byBSZXNwb25zaXZlIHRhYmxlcy5cblx0ICpcblx0ICogQWxsb3dlZCB2YWx1ZXMgYXJlIGBBdXRvYCwgYEZpeGVkYCwgYW5kIGBJbnRlcmFjdGl2ZWAuPGJyLz5cblx0ICogLSBJZiBzZXQgdG8gYEZpeGVkYCwgdGhlIHRhYmxlIGFsd2F5cyBoYXMgYXMgbWFueSByb3dzIGFzIGRlZmluZWQgaW4gdGhlIHJvd0NvdW50IHByb3BlcnR5Ljxici8+XG5cdCAqIC0gSWYgc2V0IHRvIGBBdXRvYCwgdGhlIG51bWJlciBvZiByb3dzIGlzIGNoYW5nZWQgYnkgdGhlIHRhYmxlIGF1dG9tYXRpY2FsbHkuIEl0IHdpbGwgdGhlbiBhZGp1c3QgaXRzIHJvdyBjb3VudCB0byB0aGUgc3BhY2UgaXQgaXMgYWxsb3dlZCB0byBjb3ZlciAobGltaXRlZCBieSB0aGUgc3Vycm91bmRpbmcgY29udGFpbmVyKSBidXQgaXQgY2Fubm90IGhhdmUgbGVzcyB0aGFuIGRlZmluZWQgaW4gdGhlIGByb3dDb3VudGAgcHJvcGVydHkuPGJyLz5cblx0ICogLSBJZiBzZXQgdG8gYEludGVyYWN0aXZlYCB0aGUgdGFibGUgY2FuIGhhdmUgYXMgbWFueSByb3dzIGFzIGRlZmluZWQgaW4gdGhlIHJvd0NvdW50IHByb3BlcnR5LiBUaGlzIG51bWJlciBvZiByb3dzIGNhbiBiZSBtb2RpZmllZCBieSBkcmFnZ2luZyB0aGUgcmVzaXplciBhdmFpbGFibGUgaW4gdGhpcyBtb2RlLjxici8+XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIsIGFsbG93ZWRWYWx1ZXM6IFtcIkF1dG9cIiwgXCJGaXhlZFwiLCBcIkludGVyYWN0aXZlXCJdLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IHJvd0NvdW50TW9kZT86IHN0cmluZztcblxuXHQvKipcblx0ICogTnVtYmVyIG9mIHJvd3MgdG8gYmUgZGlzcGxheWVkIGluIHRoZSB0YWJsZS4gRG9lcyBub3QgYXBwbHkgdG8gcmVzcG9uc2l2ZSB0YWJsZXMuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiaW50XCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgcm93Q291bnQ/OiBudW1iZXI7XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIHRoZSBwYXN0ZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSB0YWJsZSBpcyBlbmFibGVkIG9yIG5vdC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgZW5hYmxlUGFzdGU/OiBib29sZWFuIHwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIHRoZSBjb3B5IGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHRhYmxlIGlzIGRpc2FibGVkIG9yIG5vdC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdGRpc2FibGVDb3B5VG9DbGlwYm9hcmQ/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIGhvdyBtYW55IGFkZGl0aW9uYWwgZGF0YSByZWNvcmRzIGFyZSByZXF1ZXN0ZWQgZnJvbSB0aGUgYmFjay1lbmQgc3lzdGVtIHdoZW4gdGhlIHVzZXIgc2Nyb2xscyB2ZXJ0aWNhbGx5IGluIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJpbnRcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0c2Nyb2xsVGhyZXNob2xkPzogbnVtYmVyO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBudW1iZXIgb2YgcmVjb3JkcyB0byBiZSBpbml0aWFsbHkgcmVxdWVzdGVkIGZyb20gdGhlIGJhY2sgZW5kLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImludFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHR0aHJlc2hvbGQ/OiBudW1iZXI7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIGxheW91dCBvcHRpb25zIG9mIHRoZSB0YWJsZSBwb3BpbnMuIE9ubHkgYXBwbGllcyB0byByZXNwb25zaXZlIHRhYmxlcy5cblx0ICpcblx0ICogQWxsb3dlZCB2YWx1ZXMgYXJlIGBCbG9ja2AsIGBHcmlkTGFyZ2VgLCBhbmQgYEdyaWRTbWFsbGAuPGJyLz5cblx0ICogLSBgQmxvY2tgOiBTZXRzIGEgYmxvY2sgbGF5b3V0IGZvciByZW5kZXJpbmcgdGhlIHRhYmxlIHBvcGlucy4gVGhlIGVsZW1lbnRzIGluc2lkZSB0aGUgcG9waW4gY29udGFpbmVyIGFyZSByZW5kZXJlZCBvbmUgYmVsb3cgdGhlIG90aGVyLjxici8+XG5cdCAqIC0gYEdyaWRMYXJnZWA6IFNldHMgYSBncmlkIGxheW91dCBmb3IgcmVuZGVyaW5nIHRoZSB0YWJsZSBwb3BpbnMuIFRoZSBncmlkIHdpZHRoIGZvciBlYWNoIHRhYmxlIHBvcGluIGlzIGNvbXBhcmF0aXZlbHkgbGFyZ2VyIHRoYW4gR3JpZFNtYWxsLCBzbyB0aGlzIGxheW91dCBhbGxvd3MgbGVzcyBjb250ZW50IHRvIGJlIHJlbmRlcmVkIGluIGEgc2luZ2xlIHBvcGluIHJvdy48YnIvPlxuXHQgKiAtIGBHcmlkU21hbGxgOiBTZXRzIGEgZ3JpZCBsYXlvdXQgZm9yIHJlbmRlcmluZyB0aGUgdGFibGUgcG9waW5zLiBUaGUgZ3JpZCB3aWR0aCBmb3IgZWFjaCB0YWJsZSBwb3BpbiBpcyBzbWFsbCwgc28gdGhpcyBsYXlvdXQgYWxsb3dzIG1vcmUgY29udGVudCB0byBiZSByZW5kZXJlZCBpbiBhIHNpbmdsZSBwb3BpbiByb3cuPGJyLz5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgYWxsb3dlZFZhbHVlczogW1wiQmxvY2tcIiwgXCJHcmlkTGFyZ2VcIiwgXCJHcmlkU21hbGxcIl0sIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgcG9waW5MYXlvdXQ/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIElEIG9mIHRoZSBGaWx0ZXJCYXIgYnVpbGRpbmcgYmxvY2sgYXNzb2NpYXRlZCB3aXRoIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUsIGlzQXNzb2NpYXRpb246IHRydWUgfSlcblx0ZmlsdGVyQmFyPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBTcGVjaWZpZXMgdGhlIGhlYWRlciB0ZXh0IHRoYXQgaXMgc2hvd24gaW4gdGhlIHRhYmxlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRoZWFkZXI/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIFwiYXJpYS1sZXZlbFwiIG9mIHRoZSB0YWJsZSBoZWFkZXJcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic2FwLnVpLmNvcmUuVGl0bGVMZXZlbFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRoZWFkZXJMZXZlbD86IFRpdGxlTGV2ZWw7XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIHRoZSBoZWFkZXIgdGV4dCBzaG91bGQgYmUgc2hvd24gb3Igbm90LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0aGVhZGVyVmlzaWJsZT86IGJvb2xlYW47XG5cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0aWQhOiBzdHJpbmc7XG5cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0Y29udGVudElkPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBBZGRpdGlvbm5hbCBTZWxlY3Rpb25WYXJpYW50IHRvIGJlIGFwcGxpZWQgb24gdGhlIHRhYmxlIGNvbnRlbnQuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic2FwLnVpLm1vZGVsLkNvbnRleHRcIixcblx0XHR1bmRlcmx5aW5nVHlwZTogXCJzdHJpbmdcIixcblx0XHRleHBlY3RlZFR5cGVzOiBbXCJFbnRpdHlTZXRcIiwgXCJFbnRpdHlUeXBlXCIsIFwiU2luZ2xldG9uXCIsIFwiTmF2aWdhdGlvblByb3BlcnR5XCJdLFxuXHRcdGV4cGVjdGVkQW5ub3RhdGlvbnM6IFtcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlNlbGVjdGlvblZhcmlhbnRcIl0sXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0YXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnRQYXRoPzogQ29udGV4dDtcblxuXHQvKipcblx0ICogRGVmaW5lcyB3aGV0aGVyIHRvIGRpc3BsYXkgdGhlIHNlYXJjaCBhY3Rpb24uXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRpc1NlYXJjaGFibGU/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyB3aGljaCBvcHRpb25zIHNob3VsZCBiZSBlbmFibGVkIGZvciB0aGUgdGFibGUgcGVyc29uYWxpemF0aW9uIGRpYWxvZy5cblx0ICpcblx0ICogSWYgaXQgaXMgc2V0IHRvIGB0cnVlYCwgYWxsIHBvc3NpYmxlIG9wdGlvbnMgZm9yIHRoaXMga2luZCBvZiB0YWJsZSBhcmUgZW5hYmxlZC48YnIvPlxuXHQgKiBJZiBpdCBpcyBzZXQgdG8gYGZhbHNlYCwgcGVyc29uYWxpemF0aW9uIGlzIGRpc2FibGVkLjxici8+XG5cdCAqIDxici8+XG5cdCAqIFlvdSBjYW4gYWxzbyBwcm92aWRlIGEgbW9yZSBncmFudWxhciBjb250cm9sIGZvciB0aGUgcGVyc29uYWxpemF0aW9uIGJ5IHByb3ZpZGluZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IHdpdGggdGhlIG9wdGlvbnMgeW91IHdhbnQgdG8gYmUgYXZhaWxhYmxlLjxici8+XG5cdCAqIEF2YWlsYWJsZSBvcHRpb25zIGFyZTo8YnIvPlxuXHQgKiAtIFNvcnQ8YnIvPlxuXHQgKiAtIENvbHVtbjxici8+XG5cdCAqIC0gRmlsdGVyPGJyLz5cblx0ICogLSBHcm91cDxici8+XG5cdCAqIDxici8+XG5cdCAqIFRoZSBHcm91cCBvcHRpb24gaXMgb25seSBhcHBsaWNhYmxlIHRvIGFuYWx5dGljYWwgdGFibGVzIGFuZCByZXNwb25zaXZlIHRhYmxlcy48YnIvPlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwZXJzb25hbGl6YXRpb24/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIEFuIGV4cHJlc3Npb24gdGhhdCBhbGxvd3MgeW91IHRvIGNvbnRyb2wgdGhlICdyZWFkLW9ubHknIHN0YXRlIG9mIHRoZSB0YWJsZS5cblx0ICpcblx0ICogSWYgeW91IGRvIG5vdCBzZXQgYW55IGV4cHJlc3Npb24sIFNBUCBGaW9yaSBlbGVtZW50cyBob29rcyBpbnRvIHRoZSBzdGFuZGFyZCBsaWZlY3ljbGUgdG8gZGV0ZXJtaW5lIHRoZSBjdXJyZW50IHN0YXRlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cmVhZE9ubHk/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSB0eXBlIG9mIHRhYmxlIHRoYXQgd2lsbCBiZSB1c2VkIGJ5IHRoZSBidWlsZGluZyBibG9jayB0byByZW5kZXIgdGhlIGRhdGEuXG5cdCAqXG5cdCAqIEFsbG93ZWQgdmFsdWVzIGFyZSBgR3JpZFRhYmxlYCwgYFJlc3BvbnNpdmVUYWJsZWAgYW5kIGBBbmFseXRpY2FsVGFibGVgLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBpc1B1YmxpYzogdHJ1ZSwgYWxsb3dlZFZhbHVlczogW1wiR3JpZFRhYmxlXCIsIFwiUmVzcG9uc2l2ZVRhYmxlXCIsIFwiQW5hbHl0aWNhbFRhYmxlXCJdIH0pXG5cdHJlYWRvbmx5IHR5cGU/OiBUYWJsZVR5cGU7XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyB3aGV0aGVyIHRoZSB0YWJsZSBpcyBkaXNwbGF5ZWQgd2l0aCBjb25kZW5zZWQgbGF5b3V0ICh0cnVlL2ZhbHNlKS4gVGhlIGRlZmF1bHQgc2V0dGluZyBpcyBgZmFsc2VgLlxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHVzZUNvbmRlbnNlZExheW91dD86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIHNlbGVjdGlvbiBtb2RlIHRvIGJlIHVzZWQgYnkgdGhlIHRhYmxlLlxuXHQgKlxuXHQgKiBBbGxvd2VkIHZhbHVlcyBhcmUgYE5vbmVgLCBgU2luZ2xlYCwgYEZvcmNlU2luZ2xlYCwgYE11bHRpYCwgYEZvcmNlTXVsdGlgIG9yIGBBdXRvYC5cblx0ICogSWYgc2V0IHRvICdTaW5nbGUnLCAnTXVsdGknIG9yICdBdXRvJywgU0FQIEZpb3JpIGVsZW1lbnRzIGhvb2tzIGludG8gdGhlIHN0YW5kYXJkIGxpZmVjeWNsZSB0byBkZXRlcm1pbmUgdGhlIGNvbnNpc3RlbnQgc2VsZWN0aW9uIG1vZGUuXG5cdCAqIElmIHNldCB0byAnRm9yY2VTaW5nbGUnIG9yICdGb3JjZU11bHRpJyB5b3VyIGNob2ljZSB3aWxsIGJlIHJlc3BlY3RlZCBidXQgdGhpcyBtaWdodCBub3QgcmVzcGVjdCB0aGUgRmlvcmkgZ3VpZGVsaW5lcy5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUsIGFsbG93ZWRWYWx1ZXM6IFtcIk5vbmVcIiwgXCJTaW5nbGVcIiwgXCJNdWx0aVwiLCBcIkF1dG9cIiwgXCJGb3JjZU11bHRpXCIsIFwiRm9yY2VTaW5nbGVcIl0gfSlcblx0cHJpdmF0ZSByZWFkb25seSBzZWxlY3Rpb25Nb2RlPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyB0aGUga2luZCBvZiB2YXJpYW50IG1hbmFnZW1lbnQgdGhhdCBzaG91bGQgYmUgZW5hYmxlZCBmb3IgdGhlIHRhYmxlLlxuXHQgKlxuXHQgKiBBbGxvd2VkIHZhbHVlIGlzIGBDb250cm9sYC48YnIvPlxuXHQgKiBJZiBzZXQgd2l0aCB2YWx1ZSBgQ29udHJvbGAsIGEgdmFyaWFudCBtYW5hZ2VtZW50IGNvbnRyb2wgaXMgc2VlbiB3aXRoaW4gdGhlIHRhYmxlIGFuZCB0aGUgdGFibGUgaXMgbGlua2VkIHRvIHRoaXMuPGJyLz5cblx0ICogSWYgbm90IHNldCB3aXRoIGFueSB2YWx1ZSwgY29udHJvbCBsZXZlbCB2YXJpYW50IG1hbmFnZW1lbnQgaXMgbm90IGF2YWlsYWJsZSBmb3IgdGhpcyB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUsIGFsbG93ZWRWYWx1ZXM6IFtcIkNvbnRyb2xcIl0gfSlcblx0dmFyaWFudE1hbmFnZW1lbnQ/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIENvbW1hLXNlcGFyYXRlZCB2YWx1ZSBvZiBmaWVsZHMgdGhhdCBtdXN0IGJlIGlnbm9yZWQgaW4gdGhlIE9EYXRhIG1ldGFkYXRhIGJ5IHRoZSBUYWJsZSBidWlsZGluZyBibG9jay48YnI+XG5cdCAqIFRoZSB0YWJsZSBidWlsZGluZyBibG9jayBpcyBub3QgZ29pbmcgdG8gY3JlYXRlIGJ1aWx0LWluIGNvbHVtbnMgb3Igb2ZmZXIgdGFibGUgcGVyc29uYWxpemF0aW9uIGZvciBjb21tYS1zZXBhcmF0ZWQgdmFsdWUgb2YgZmllbGRzIHRoYXQgYXJlIHByb3ZpZGVkIGluIHRoZSBpZ25vcmVkZmllbGRzLjxicj5cblx0ICogQW55IGNvbHVtbiByZWZlcmVuY2luZyBhbiBpZ25vcmVkIGZpZWxkIGlzIHRvIGJlIHJlbW92ZWQuPGJyPlxuXHQgKiBAc2luY2UgMS4xMjQuMFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRpZ25vcmVkRmllbGRzPzogc3RyaW5nO1xuXG5cdC8vICAqKioqKioqKioqKioqKiogUHJpdmF0ZSBBdHRyaWJ1dGVzICoqKioqKioqKioqKioqKioqKioqXG5cdHByaXZhdGUgX2FwaUlkPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBDaGFuZ2VzIHRoZSBzaXplIG9mIHRoZSBJbGx1c3RyYXRlZE1lc3NhZ2UgaW4gdGhlIHRhYmxlLCBvciByZW1vdmVzIGl0IGNvbXBsZXRlbHkuXG5cdCAqIEFsbG93ZWQgdmFsdWVzIGFyZSBgaWxsdXN0cmF0ZWRNZXNzYWdlLUF1dG9gLCBgaWxsdXN0cmF0ZWRNZXNzYWdlLUJhc2VgLCBgaWxsdXN0cmF0ZWRNZXNzYWdlLURpYWxvZ2AsIGBpbGx1c3RyYXRlZE1lc3NhZ2UtRG90YCwgYGlsbHVzdHJhdGVkTWVzc2FnZS1TY2VuZWAsIGBpbGx1c3RyYXRlZE1lc3NhZ2UtU3BvdGAgb3IgYHRleHRgLlxuXHQgKiBAc2luY2UgMS4xMjkuMFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0YWxsb3dlZFZhbHVlczogW1xuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtQXV0b1wiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtQmFzZVwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtTWVkaXVtXCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1Eb3RcIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLUV4dHJhU21hbGxcIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLVNjZW5lXCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1MYXJnZVwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtU3BvdFwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtU21hbGxcIixcblx0XHRcdFwidGV4dFwiXG5cdFx0XVxuXHR9KVxuXHRtb2RlRm9yTm9EYXRhTWVzc2FnZT86IHN0cmluZztcblxuXHQvLyAgKioqKioqKioqKioqKioqIFByaXZhdGUgQXR0cmlidXRlcyAqKioqKioqKioqKioqKioqKioqKlxuXHRwcml2YXRlIHJlYWRvbmx5IGNvbGxlY3Rpb25FbnRpdHk6IEVudGl0eVNldCB8IE5hdmlnYXRpb25Qcm9wZXJ0eTtcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgaGVhZGVyIHN0eWxlIG9mIHRoZSB0YWJsZSBoZWFkZXJcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic2FwLnVpLmNvcmUuVGl0bGVMZXZlbFwiIH0pXG5cdGhlYWRlclN0eWxlPzogVGl0bGVMZXZlbDtcblxuXHQvKipcblx0ICogU3BlY2lmaWVzIGlmIHRoZSBjb2x1bW4gd2lkdGggaXMgYXV0b21hdGljYWxseSBjYWxjdWxhdGVkLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0ZW5hYmxlQXV0b0NvbHVtbldpZHRoPzogYm9vbGVhbiA9IHRydWU7XG5cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRmaWVsZE1vZGUgPSBcIlwiO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGlzQWxwPzogYm9vbGVhbiA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBPTkxZIEZPUiBSRVNQT05TSVZFIFRBQkxFOiBTZXR0aW5nIHRvIGRlZmluZSB0aGUgY2hlY2tib3ggaW4gdGhlIGNvbHVtbiBoZWFkZXI6IEFsbG93ZWQgdmFsdWVzIGFyZSBgRGVmYXVsdGAgb3IgYENsZWFyQWxsYC4gSWYgc2V0IHRvIGBEZWZhdWx0YCwgdGhlIHNhcC5tLlRhYmxlIGNvbnRyb2wgcmVuZGVycyB0aGUgU2VsZWN0IEFsbCBjaGVja2JveCwgb3RoZXJ3aXNlIHRoZSBEZXNlbGVjdCBBbGwgYnV0dG9uIGlzIHJlbmRlcmVkLlxuXHQgKi9cblx0bXVsdGlTZWxlY3RNb2RlPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBVc2VkIGZvciBiaW5kaW5nIHRoZSB0YWJsZSB0byBhIG5hdmlnYXRpb24gcGF0aC4gT25seSB0aGUgcGF0aCBpcyB1c2VkIGZvciBiaW5kaW5nIHJvd3MuXG5cdCAqL1xuXHRuYXZpZ2F0aW9uUGF0aD86IHN0cmluZztcblxuXHQvKipcblx0ICogVHJ1ZSBpZiB0aGUgdGFibGUgaXMgaW4gYSBMaXN0UmVwb3J0IG11bHRpIHZpZXdcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGluTXVsdGlWaWV3PzogYm9vbGVhbjtcblxuXHR1c2VCYXNpY1NlYXJjaD86IGJvb2xlYW47XG5cblx0dGFibGVEZWZpbml0aW9uOiBUYWJsZVZpc3VhbGl6YXRpb247IC8vIFdlIHJlcXVpcmUgdGFibGVEZWZpbml0aW9uIHRvIGJlIHRoZXJlIGV2ZW4gdGhvdWdoIGl0IGlzIG5vdCBmb3JtYWxseSByZXF1aXJlZFxuXG5cdHRhYmxlRGVmaW5pdGlvbkNvbnRleHQ/OiBDb250ZXh0O1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0dGFiVGl0bGUgPSBcIlwiO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdHZpc2libGU/OiBib29sZWFuO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGRpc3BsYXlTZWdtZW50ZWRCdXR0b24/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBBIHNldCBvZiBvcHRpb25zIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJvYmplY3RcIixcblx0XHR1bmRlcmx5aW5nVHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLlRhYmxlQ3JlYXRpb25PcHRpb25zXCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0dmFsaWRhdGU6IGZ1bmN0aW9uIChjcmVhdGlvbk9wdGlvbnNJbnB1dDogVGFibGVDcmVhdGlvbk9wdGlvbnMpIHtcblx0XHRcdGlmIChcblx0XHRcdFx0Y3JlYXRpb25PcHRpb25zSW5wdXQubmFtZSAmJlxuXHRcdFx0XHQhW1wiTmV3UGFnZVwiLCBcIklubGluZVwiLCBcIklubGluZUNyZWF0aW9uUm93c1wiLCBcIkV4dGVybmFsXCIsIFwiQ3JlYXRpb25EaWFsb2dcIl0uaW5jbHVkZXMoY3JlYXRpb25PcHRpb25zSW5wdXQubmFtZSlcblx0XHRcdCkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEFsbG93ZWQgdmFsdWUgJHtjcmVhdGlvbk9wdGlvbnNJbnB1dC5uYW1lfSBmb3IgY3JlYXRpb25Nb2RlIGRvZXMgbm90IG1hdGNoYCk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBjcmVhdGlvbk9wdGlvbnNJbnB1dDtcblx0XHR9XG5cdH0pXG5cdGNyZWF0aW9uTW9kZTogUHJvcGVydGllc09mPFRhYmxlQ3JlYXRpb25PcHRpb25zPiA9IHt9O1xuXG5cdC8qKlxuXHQgKiBBIHNldCBvZiBvcHRpb25zIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gY29udHJvbCB0aGUgYWdncmVnYXRpb24gYmVoYXZpb3Jcblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJvYmplY3RcIixcblx0XHR1bmRlcmx5aW5nVHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFuYWx5dGljYWxDb25maWd1cmF0aW9uXCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0dmFsaWRhdGU6IGZ1bmN0aW9uIChhbmFseXRpY2FsQ29uZmlndXJhdGlvbjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIHtcblx0XHRcdGlmICh0eXBlb2YgYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24uYWdncmVnYXRpb25PbkxlYWZMZXZlbCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRhbmFseXRpY2FsQ29uZmlndXJhdGlvbi5hZ2dyZWdhdGlvbk9uTGVhZkxldmVsID0gYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24uYWdncmVnYXRpb25PbkxlYWZMZXZlbCA9PT0gXCJ0cnVlXCI7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gYW5hbHl0aWNhbENvbmZpZ3VyYXRpb247XG5cdFx0fVxuXHR9KVxuXHRhbmFseXRpY2FsQ29uZmlndXJhdGlvbjogUHJvcGVydGllc09mPEFuYWx5dGljYWxDb25maWd1cmF0aW9uPiA9IHt9O1xuXG5cdC8qKlxuXHQgKiBBZ2dyZWdhdGUgYWN0aW9ucyBvZiB0aGUgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0FnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uXCIsXG5cdFx0YWx0VHlwZXM6IFtcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uR3JvdXBcIiwgXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvbk92ZXJyaWRlXCIsIFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25Hcm91cE92ZXJyaWRlXCJdLFxuXHRcdGlzUHVibGljOiB0cnVlLFxuXHRcdGhhc1ZpcnR1YWxOb2RlOiB0cnVlLFxuXHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdHByb2Nlc3NBZ2dyZWdhdGlvbnM6IHNldEN1c3RvbUFjdGlvbkdyb3VwUHJvcGVydGllc1xuXHR9KVxuXHRhY3Rpb25zPzogUmVjb3JkPHN0cmluZywgQmxvY2tBY3Rpb24gfCBCbG9ja0FjdGlvbkdyb3VwIHwgQmxvY2tBY3Rpb25PdmVycmlkZSB8IEJsb2NrQWN0aW9uR3JvdXBPdmVycmlkZT47XG5cblx0LyoqXG5cdCAqIEFnZ3JlZ2F0ZSBtYXNzIGVkaXQgb2YgdGhlIHRhYmxlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBZ2dyZWdhdGlvbih7XG5cdFx0dHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLk1hc3NFZGl0XCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0bXVsdGlwbGU6IGZhbHNlLFxuXHRcdHNraXBLZXk6IHRydWUsXG5cdFx0cHJvY2Vzc0FnZ3JlZ2F0aW9uczogc2V0Q3VzdG9tTWFzc0VkaXRQcm9wZXJ0aWVzXG5cdH0pXG5cdG1hc3NFZGl0PzogUmVjb3JkPHN0cmluZywgQmxvY2tNYXNzRWRpdD47XG5cblx0LyoqXG5cdCAqIEFnZ3JlZ2F0ZSBjb2x1bW5zIG9mIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLmZlLm1hY3Jvcy50YWJsZS5Db2x1bW5cIixcblx0XHRhbHRUeXBlczogW1wic2FwLmZlLm1hY3Jvcy50YWJsZS5Db2x1bW5PdmVycmlkZVwiXSxcblx0XHRpc1B1YmxpYzogdHJ1ZSxcblx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRoYXNWaXJ0dWFsTm9kZTogdHJ1ZSxcblx0XHRpc0RlZmF1bHQ6IHRydWUsXG5cdFx0cHJvY2Vzc0FnZ3JlZ2F0aW9uczogc2V0Q3VzdG9tQ29sdW1uUHJvcGVydGllc1xuXHR9KVxuXHRjb2x1bW5zPzogUmVjb3JkPHN0cmluZywgQmxvY2tDb2x1bW4gfCBCbG9ja0NvbHVtbk92ZXJyaWRlPjtcblxuXHQvKipcblx0ICogQWdncmVnYXRlIHF1aWNrVmFyaWFudFNlbGVjdGlvbiBvZiB0aGUgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0FnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuUXVpY2tWYXJpYW50U2VsZWN0aW9uXCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0c2tpcEtleTogdHJ1ZSxcblx0XHRtdWx0aXBsZTogZmFsc2UsXG5cdFx0cHJvY2Vzc0FnZ3JlZ2F0aW9uczogc2V0UXVpY2tWYXJpYW50U2VsZWN0aW9uXG5cdH0pXG5cdHF1aWNrVmFyaWFudFNlbGVjdGlvbj86IFJlY29yZDxzdHJpbmcsIEJsb2NrUXVpY2tWYXJpYW50U2VsZWN0aW9uPjtcblxuXHQvKipcblx0ICogQWdncmVnYXRlIG92ZXJmbG93R3JvdXBzIG9mIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLmZlLm1hY3Jvcy50YWJsZS5PdmVyZmxvd0dyb3VwXCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0bXVsdGlwbGU6IHRydWUsXG5cdFx0aGFzVmlydHVhbE5vZGU6IHRydWUsXG5cdFx0c2tpcEtleTogdHJ1ZSxcblx0XHRyZWFsbHlTa2lwS2V5OiB0cnVlLFxuXHRcdHByb2Nlc3NBZ2dyZWdhdGlvbnM6IHNldEN1c3RvbUFjdGlvbk92ZXJmbG93R3JvdXBQcm9wZXJ0aWVzXG5cdH0pXG5cdGFjdGlvbk92ZXJmbG93R3JvdXBzPzogUmVjb3JkPHN0cmluZywgT3ZlcmZsb3dHcm91cD47XG5cblx0Y29udmVydGVkTWV0YWRhdGE6IENvbnZlcnRlZE1ldGFkYXRhO1xuXG5cdGNvbnRleHRPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPExpbmVJdGVtIHwgUHJlc2VudGF0aW9uVmFyaWFudCB8IFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ+O1xuXG5cdC8qKlxuXHQgKiBCZWZvcmUgYSB0YWJsZSByZWJpbmQsIGFuIGV2ZW50IGlzIHRyaWdnZXJlZCB0aGF0IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBiaW5kaW5nLlxuXHQgKlxuXHQgKiBUaGUgZXZlbnQgY29udGFpbnMgYSBwYXJhbWV0ZXIsIGBjb2xsZWN0aW9uQmluZGluZ0luZm9gLCB3aGljaCBpcyBhbiBpbnN0YW5jZSBvZiBgQ29sbGVjdGlvbkJpbmRpbmdJbmZvQVBJYC5cblx0ICogSXQgY2FuIGFsc28gY29udGFpbiBhbiBvcHRpb25hbCBwYXJhbWV0ZXIsIGBxdWlja0ZpbHRlcktleWAsIHdoaWNoIGluZGljYXRlcyB3aGF0IGlzIHRoZSBxdWljayBmaWx0ZXIga2V5IChpZiBhbnkpIGJlaW5nIHByb2Nlc3NlZCBmb3IgdGhlIHRhYmxlLlxuXHQgKiBUaGlzIGFsbG93cyB5b3UgdG8gbWFuaXB1bGF0ZSB0aGUgdGFibGUncyBsaXN0IGJpbmRpbmcuXG5cdCAqIFlvdSBjYW4gdXNlIHRoaXMgZXZlbnQgdG8gYXR0YWNoIGV2ZW50IGhhbmRsZXJzIHRvIHRoZSB0YWJsZSdzIGxpc3QgYmluZGluZy5cblx0ICogWW91IGNhbiB1c2UgdGhpcyBldmVudCB0byBhZGQgc2VsZWN0cywgYW5kIGFkZCBvciByZWFkIHRoZSBzb3J0ZXJzIGFuZCBmaWx0ZXJzLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tFdmVudCgpXG5cdHByaXZhdGUgcmVhZG9ubHkgYmVmb3JlUmViaW5kVGFibGU/OiBFdmVudEhhbmRsZXI8XG5cdFx0VUk1RXZlbnQ8eyBjb2xsZWN0aW9uQmluZGluZ0luZm86IENvbGxlY3Rpb25CaW5kaW5nSW5mb0FQSTsgcXVpY2tGaWx0ZXJLZXk/OiBzdHJpbmcgfSwgVGFibGVBUEk+XG5cdD47XG5cblx0LyoqXG5cdCAqIEFuIGV2ZW50IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIGNob29zZXMgYSByb3cuIFRoZSBldmVudCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB3aGljaCByb3cgaXMgY2hvc2VuLlxuXHQgKlxuXHQgKiBZb3UgY2FuIHNldCB0aGlzIHRvIGhhbmRsZSB0aGUgbmF2aWdhdGlvbiBtYW51YWxseS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrRXZlbnQoKVxuXHRyb3dQcmVzcz86IEV2ZW50SGFuZGxlcjxVSTVFdmVudDxSb3dBY3Rpb25JdGVtJFByZXNzRXZlbnRQYXJhbWV0ZXJzLCBUYWJsZUFQST4+O1xuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIHJlYWN0IHRvIHRoZSBjaGFuZ2UgZXZlbnQgb2YgdGhlIHRhYmxlJ3MgbGlzdCBiaW5kaW5nLlxuXHQgKlxuXHQgKiBJbnRlcm5hbCBvbmx5XG5cdCAqL1xuXHRAYmxvY2tFdmVudCgpXG5cdGxpc3RCaW5kaW5nQ2hhbmdlPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIGNhbGxlZCB3aGVuIHRoZSB1c2VyIGNob29zZXMgYW4gb3B0aW9uIG9mIHRoZSBzZWdtZW50ZWQgYnV0dG9uIGluIHRoZSBBTFAgVmlld1xuXHQgKi9cblx0QGJsb2NrRXZlbnQoKVxuXHRzZWdtZW50ZWRCdXR0b25QcmVzcz86IHN0cmluZztcblxuXHRAYmxvY2tFdmVudCgpXG5cdHZhcmlhbnRTYXZlZD86IHN0cmluZztcblxuXHQvKipcblx0ICogQW4gZXZlbnQgdHJpZ2dlcmVkIHdoZW4gdGhlIHNlbGVjdGlvbiBpbiB0aGUgdGFibGUgY2hhbmdlcy5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrRXZlbnQoKVxuXHRwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGlvbkNoYW5nZT86IEV2ZW50SGFuZGxlcjxcblx0XHRVSTVFdmVudDxUYWJsZSRTZWxlY3Rpb25DaGFuZ2VFdmVudFBhcmFtZXRlcnMgJiB7IHNlbGVjdGVkQ29udGV4dDogQ29udGV4dFtdIH0sIFRhYmxlQVBJPlxuXHQ+O1xuXG5cdEBibG9ja0V2ZW50KClcblx0dmFyaWFudFNlbGVjdGVkPzogc3RyaW5nO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRpbml0aWFsTG9hZD86IGJvb2xlYW47XG5cblx0cHJpdmF0ZSByZWFkb25seSBhcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudDtcblxuXHRwcml2YXRlIHJlYWRvbmx5IG1ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWw7XG5cblx0Y29uc3RydWN0b3IocHJvcHM6IFByb3BlcnRpZXNPZjxUYWJsZUJsb2NrPiwgY29udHJvbENvbmZpZ3VyYXRpb246IHVua25vd24sIHRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3M6IFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MpIHtcblx0XHRzdXBlcihwcm9wcywgY29udHJvbENvbmZpZ3VyYXRpb24sIHRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MpO1xuXHRcdGNvbnN0IGNvbnRleHRPYmplY3RQYXRoID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPExpbmVJdGVtIHwgUHJlc2VudGF0aW9uVmFyaWFudCB8IFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ+KFxuXHRcdFx0dGhpcy5tZXRhUGF0aCxcblx0XHRcdHRoaXMuY29udGV4dFBhdGhcblx0XHQpO1xuXHRcdHRoaXMuY29udGV4dE9iamVjdFBhdGggPSBjb250ZXh0T2JqZWN0UGF0aDtcblxuXHRcdHRoaXMudGFibGVEZWZpbml0aW9uID0gVGFibGVCbG9jay5jcmVhdGVUYWJsZURlZmluaXRpb24odGhpcywgdGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyk7XG5cdFx0dGhpcy50YWJsZURlZmluaXRpb25Db250ZXh0ID0gTWFjcm9BUEkuY3JlYXRlQmluZGluZ0NvbnRleHQodGhpcy50YWJsZURlZmluaXRpb24gYXMgb2JqZWN0LCB0ZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzKTtcblxuXHRcdHRoaXMuY29udmVydGVkTWV0YWRhdGEgPSB0aGlzLmNvbnRleHRPYmplY3RQYXRoLmNvbnZlcnRlZFR5cGVzO1xuXHRcdHRoaXMubWV0YU1vZGVsID0gdGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncy5tb2RlbHMubWV0YU1vZGVsO1xuXHRcdHRoaXMuY29sbGVjdGlvbkVudGl0eSA9IHRoaXMuY29udmVydGVkTWV0YWRhdGEucmVzb2x2ZVBhdGgodGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi5jb2xsZWN0aW9uKS50YXJnZXQgYXMgRW50aXR5U2V0O1xuXHRcdHRoaXMuYXBwQ29tcG9uZW50ID0gdGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncy5hcHBDb21wb25lbnQ7XG5cdFx0dGhpcy5zZXRVcElkKCk7XG5cblx0XHR0aGlzLmNyZWF0aW9uTW9kZSA/Pz0ge307XG5cdFx0dGhpcy5jcmVhdGlvbk1vZGUubmFtZSA/Pz0gdGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi5jcmVhdGUubW9kZSBhcyBUYWJsZUNyZWF0aW9uT3B0aW9uc1tcIm5hbWVcIl07XG5cdFx0dGhpcy5jcmVhdGlvbk1vZGUuY3JlYXRlQXRFbmQgPz89ICh0aGlzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmNyZWF0ZSBhcyBDcmVhdGVCZWhhdmlvcikuYXBwZW5kO1xuXHRcdC8vIFNwZWNpYWwgY29kZSBmb3IgcmVhZE9ubHlcblx0XHQvLyByZWFkb25seSA9IGZhbHNlIC0+IEZvcmNlIGVkaXRhYmxlXG5cdFx0Ly8gcmVhZG9ubHkgPSB0cnVlIC0+IEZvcmNlIGRpc3BsYXkgbW9kZVxuXHRcdC8vIHJlYWRvbmx5ID0gdW5kZWZpbmVkIC0+IEJvdW5kIHRvIGVkaXQgZmxvd1xuXHRcdGlmIChcblx0XHRcdHRoaXMucmVhZE9ubHkgPT09IHVuZGVmaW5lZCAmJlxuXHRcdFx0KHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uZGlzcGxheU1vZGUgPT09IHRydWUgfHwgdGhpcy50YWJsZURlZmluaXRpb24uY29udHJvbC5yZWFkT25seSA9PT0gdHJ1ZSlcblx0XHQpIHtcblx0XHRcdHRoaXMucmVhZE9ubHkgPSB0cnVlO1xuXHRcdH1cblxuXHRcdFRhYmxlQVBJLnVwZGF0ZUNvbHVtbnNWaXNpYmlsaXR5KHRoaXMudGFibGVEZWZpbml0aW9uLmNvbnRyb2wuaWdub3JlZEZpZWxkcywgW10sIHRoaXMudGFibGVEZWZpbml0aW9uKTtcblxuXHRcdGxldCB1c2VCYXNpY1NlYXJjaCA9IGZhbHNlO1xuXG5cdFx0Ly8gTm90ZSBmb3IgdGhlICdmaWx0ZXJCYXInIHByb3BlcnR5OlxuXHRcdC8vIDEuIElEIHJlbGF0aXZlIHRvIHRoZSB2aWV3IG9mIHRoZSBUYWJsZS5cblx0XHQvLyAyLiBBYnNvbHV0ZSBJRC5cblx0XHQvLyAzLiBJRCB3b3VsZCBiZSBjb25zaWRlcmVkIGluIGFzc29jaWF0aW9uIHRvIFRhYmxlQVBJJ3MgSUQuXG5cdFx0aWYgKCF0aGlzLmZpbHRlckJhcikge1xuXHRcdFx0Ly8gZmlsdGVyQmFyOiBQdWJsaWMgcHJvcGVydHkgZm9yIGJ1aWxkaW5nIGJsb2Nrc1xuXHRcdFx0Ly8gZmlsdGVyQmFySWQ6IE9ubHkgdXNlZCBhcyBJbnRlcm5hbCBwcml2YXRlIHByb3BlcnR5IGZvciBGRSB0ZW1wbGF0ZXNcblx0XHRcdHRoaXMuZmlsdGVyQmFyID0gZ2VuZXJhdGUoW3RoaXMuY29udGVudElkLCBcIlN0YW5kYXJkQWN0aW9uXCIsIFwiQmFzaWNTZWFyY2hcIl0pO1xuXHRcdFx0dXNlQmFzaWNTZWFyY2ggPSB0cnVlO1xuXHRcdH1cblx0XHQvLyBJbnRlcm5hbCBwcm9wZXJ0aWVzXG5cdFx0dGhpcy51c2VCYXNpY1NlYXJjaCA9IHVzZUJhc2ljU2VhcmNoO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGFubm90YXRpb24gcGF0aCBwb2ludGluZyB0byB0aGUgdmlzdWFsaXphdGlvbiBhbm5vdGF0aW9uIChMaW5lSXRlbSkuXG5cdCAqIEBwYXJhbSBjb250ZXh0T2JqZWN0UGF0aCBUaGUgZGF0YW1vZGVsIG9iamVjdCBwYXRoIGZvciB0aGUgdGFibGVcblx0ICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHQgVGhlIGNvbnZlcnRlciBjb250ZXh0XG5cdCAqIEByZXR1cm5zIFRoZSBhbm5vdGF0aW9uIHBhdGhcblx0ICovXG5cdHN0YXRpYyBnZXRWaXN1YWxpemF0aW9uUGF0aChcblx0XHRjb250ZXh0T2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxMaW5lSXRlbSB8IFByZXNlbnRhdGlvblZhcmlhbnQgfCBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50Pixcblx0XHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD5cblx0KTogc3RyaW5nIHtcblx0XHRjb25zdCBtZXRhUGF0aCA9IGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgoY29udGV4dE9iamVjdFBhdGgpIGFzIHN0cmluZztcblxuXHRcdC8vIGZhbGxiYWNrIHRvIGRlZmF1bHQgTGluZUl0ZW0gaWYgbWV0YXBhdGggaXMgbm90IHNldFxuXHRcdGlmICghbWV0YVBhdGgpIHtcblx0XHRcdExvZy5lcnJvcihgTWlzc2luZyBtZXRhIHBhdGggcGFyYW1ldGVyIGZvciBMaW5lSXRlbWApO1xuXHRcdFx0cmV0dXJuIGBAJHtVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbX1gO1xuXHRcdH1cblxuXHRcdGlmIChpc0Fubm90YXRpb25PZlRlcm08TGluZUl0ZW0+KGNvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCwgVUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW0pKSB7XG5cdFx0XHRyZXR1cm4gbWV0YVBhdGg7IC8vIE1ldGFQYXRoIGlzIGFscmVhZHkgcG9pbnRpbmcgdG8gYSBMaW5lSXRlbVxuXHRcdH1cblx0XHQvL05lZWQgdG8gc3dpdGNoIHRvIHRoZSBjb250ZXh0IHJlbGF0ZWQgdGhlIFBWIG9yIFNQVlxuXHRcdGNvbnN0IHJlc29sdmVkVGFyZ2V0ID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlQW5ub3RhdGlvbihtZXRhUGF0aCk7XG5cblx0XHRsZXQgdmlzdWFsaXphdGlvbnM6IFZpc3VhbGl6YXRpb25BbmRQYXRoW10gPSBbXTtcblx0XHRpZiAoXG5cdFx0XHRpc0Fubm90YXRpb25PZlRlcm08U2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudD4oXG5cdFx0XHRcdGNvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCxcblx0XHRcdFx0VUlBbm5vdGF0aW9uVGVybXMuU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFxuXHRcdFx0KSB8fFxuXHRcdFx0aXNBbm5vdGF0aW9uT2ZUZXJtPFByZXNlbnRhdGlvblZhcmlhbnQ+KGNvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCwgVUlBbm5vdGF0aW9uVGVybXMuUHJlc2VudGF0aW9uVmFyaWFudClcblx0XHQpIHtcblx0XHRcdHZpc3VhbGl6YXRpb25zID0gZ2V0VmlzdWFsaXphdGlvbnNGcm9tQW5ub3RhdGlvbihcblx0XHRcdFx0Y29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LFxuXHRcdFx0XHRtZXRhUGF0aCxcblx0XHRcdFx0cmVzb2x2ZWRUYXJnZXQuY29udmVydGVyQ29udGV4dCxcblx0XHRcdFx0dHJ1ZVxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0TG9nLmVycm9yKGBCYWQgbWV0YXBhdGggcGFyYW1ldGVyIGZvciB0YWJsZSA6ICR7Y29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0IS50ZXJtfWApO1xuXHRcdH1cblxuXHRcdGNvbnN0IGxpbmVJdGVtVml6ID0gdmlzdWFsaXphdGlvbnMuZmluZCgodml6KSA9PiB7XG5cdFx0XHRyZXR1cm4gdml6LnZpc3VhbGl6YXRpb24udGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW07XG5cdFx0fSk7XG5cblx0XHRpZiAobGluZUl0ZW1WaXopIHtcblx0XHRcdHJldHVybiBsaW5lSXRlbVZpei5hbm5vdGF0aW9uUGF0aDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gZmFsbGJhY2sgdG8gZGVmYXVsdCBMaW5lSXRlbSBpZiBhbm5vdGF0aW9uIG1pc3NpbmcgaW4gUFZcblx0XHRcdExvZy5lcnJvcihgQmFkIG1ldGEgcGF0aCBwYXJhbWV0ZXIgZm9yIExpbmVJdGVtOiAke2NvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCEudGVybX1gKTtcblx0XHRcdHJldHVybiBgQCR7VUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW19YDsgLy8gRmFsbGJhY2tcblx0XHR9XG5cdH1cblxuXHRzdGF0aWMgYWRkU2V0dGluZyA9ICh0YXJnZXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkID0+IHtcblx0XHRpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGFyZ2V0W2tleV0gPSB2YWx1ZTtcblx0XHR9XG5cdH07XG5cblx0Z2V0VGFibGVTZXR0aW5ncygpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG5cdFx0Y29uc3QgdGFibGVTZXR0aW5nczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJlbmFibGVFeHBvcnRcIiwgdGhpcy5lbmFibGVFeHBvcnQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImV4cG9ydEZpbGVOYW1lXCIsIHRoaXMuZXhwb3J0RmlsZU5hbWUpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImV4cG9ydFNoZWV0TmFtZVwiLCB0aGlzLmV4cG9ydFNoZWV0TmFtZSk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwicmVhZE9ubHlcIiwgdGhpcy5yZWFkT25seSk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiaWdub3JlZEZpZWxkc1wiLCB0aGlzLmlnbm9yZWRGaWVsZHMpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInNlbGVjdGlvbkxpbWl0XCIsIHRoaXMuc2VsZWN0aW9uTGltaXQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImNvbmRlbnNlZFRhYmxlTGF5b3V0XCIsIHRoaXMuY29uZGVuc2VkVGFibGVMYXlvdXQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImV4cG9ydFJlcXVlc3RTaXplXCIsIHRoaXMuZXhwb3J0UmVxdWVzdFNpemUpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImZyb3plbkNvbHVtbkNvdW50XCIsIHRoaXMuZnJvemVuQ29sdW1uQ291bnQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImRpc2FibGVDb2x1bW5GcmVlemVcIiwgdGhpcy5kaXNhYmxlQ29sdW1uRnJlZXplKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJ3aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlclwiLCB0aGlzLndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJyb3dDb3VudE1vZGVcIiwgdGhpcy5yb3dDb3VudE1vZGUpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInJvd0NvdW50XCIsIHRoaXMucm93Q291bnQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImVuYWJsZUZ1bGxTY3JlZW5cIiwgdGhpcy5lbmFibGVGdWxsU2NyZWVuKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJzZWxlY3RBbGxcIiwgdGhpcy5lbmFibGVTZWxlY3RBbGwpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllc1wiLCB0aGlzLmVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllcyk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZW5hYmxlUGFzdGVcIiwgdGhpcy5lbmFibGVQYXN0ZSk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZGlzYWJsZUNvcHlUb0NsaXBib2FyZFwiLCB0aGlzLmRpc2FibGVDb3B5VG9DbGlwYm9hcmQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInNjcm9sbFRocmVzaG9sZFwiLCB0aGlzLnNjcm9sbFRocmVzaG9sZCk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwidGhyZXNob2xkXCIsIHRoaXMudGhyZXNob2xkKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJwb3BpbkxheW91dFwiLCB0aGlzLnBvcGluTGF5b3V0KTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJzZWxlY3Rpb25Nb2RlXCIsIHRoaXMuc2VsZWN0aW9uTW9kZSk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwidHlwZVwiLCB0aGlzLnR5cGUpO1xuXHRcdGlmICh0aGlzLnF1aWNrVmFyaWFudFNlbGVjdGlvbj8ucXVpY2tGaWx0ZXJzPy5wYXRocz8ubGVuZ3RoKSB7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJxdWlja1ZhcmlhbnRTZWxlY3Rpb25cIiwge1xuXHRcdFx0XHRwYXRoczogdGhpcy5xdWlja1ZhcmlhbnRTZWxlY3Rpb24ucXVpY2tGaWx0ZXJzLnBhdGhzLm1hcCgocGF0aCkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiB7IGFubm90YXRpb25QYXRoOiBwYXRoIH07XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHRzaG93Q291bnRzOiB0aGlzLnF1aWNrVmFyaWFudFNlbGVjdGlvbi5xdWlja0ZpbHRlcnMuc2hvd0NvdW50c1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuY3JlYXRpb25Nb2RlKSB7XG5cdFx0XHRjb25zdCBjcmVhdGlvbk1vZGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoY3JlYXRpb25Nb2RlLCBcIm5hbWVcIiwgdGhpcy5jcmVhdGlvbk1vZGUubmFtZSk7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoY3JlYXRpb25Nb2RlLCBcImNyZWF0aW9uRmllbGRzXCIsIHRoaXMuY3JlYXRpb25Nb2RlLmNyZWF0aW9uRmllbGRzKTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhjcmVhdGlvbk1vZGUsIFwiY3JlYXRlQXRFbmRcIiwgdGhpcy5jcmVhdGlvbk1vZGUuY3JlYXRlQXRFbmQpO1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGNyZWF0aW9uTW9kZSwgXCJpbmxpbmVDcmVhdGlvblJvd3NIaWRkZW5JbkVkaXRNb2RlXCIsIHRoaXMuY3JlYXRpb25Nb2RlLmlubGluZUNyZWF0aW9uUm93c0hpZGRlbkluRWRpdE1vZGUpO1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGNyZWF0aW9uTW9kZSwgXCJvdXRib3VuZFwiLCB0aGlzLmNyZWF0aW9uTW9kZS5vdXRib3VuZCk7XG5cdFx0XHRpZiAoT2JqZWN0LmVudHJpZXMoY3JlYXRpb25Nb2RlKS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdHRhYmxlU2V0dGluZ3NbXCJjcmVhdGlvbk1vZGVcIl0gPSBjcmVhdGlvbk1vZGU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMubWFzc0VkaXQpIHtcblx0XHRcdGNvbnN0IGVuYWJsZU1hc3NFZGl0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGVuYWJsZU1hc3NFZGl0LCBcImN1c3RvbUZyYWdtZW50XCIsIHRoaXMubWFzc0VkaXQuY29uZmlndXJhdGlvbj8uY3VzdG9tQ29udGVudCk7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoZW5hYmxlTWFzc0VkaXQsIFwiZnJvbUlubGluZVwiLCB0cnVlKTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhlbmFibGVNYXNzRWRpdCwgXCJ2aXNpYmxlRmllbGRzXCIsIHRoaXMubWFzc0VkaXQuY29uZmlndXJhdGlvbj8udmlzaWJsZUZpZWxkcz8uam9pbihcIixcIikpO1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGVuYWJsZU1hc3NFZGl0LCBcImlnbm9yZWRGaWVsZHNcIiwgdGhpcy5tYXNzRWRpdC5jb25maWd1cmF0aW9uPy5pZ25vcmVkRmllbGRzPy5qb2luKFwiLFwiKSk7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoZW5hYmxlTWFzc0VkaXQsIFwib3BlcmF0aW9uR3JvdXBpbmdNb2RlXCIsIHRoaXMubWFzc0VkaXQuY29uZmlndXJhdGlvbj8ub3BlcmF0aW9uR3JvdXBpbmdNb2RlKTtcblx0XHRcdHRhYmxlU2V0dGluZ3NbXCJlbmFibGVNYXNzRWRpdFwiXSA9IGVuYWJsZU1hc3NFZGl0O1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmFuYWx5dGljYWxDb25maWd1cmF0aW9uPy5hZ2dyZWdhdGlvbk9uTGVhZkxldmVsID09PSB0cnVlKSB7XG5cdFx0XHRjb25zdCBhbmFseXRpY2FsQ29uZmlndXJhdGlvbjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhhbmFseXRpY2FsQ29uZmlndXJhdGlvbiwgXCJhZ2dyZWdhdGlvbk9uTGVhZkxldmVsXCIsIHRoaXMuYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24uYWdncmVnYXRpb25PbkxlYWZMZXZlbCk7XG5cdFx0XHRpZiAoT2JqZWN0LmVudHJpZXMoYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24pLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0dGFibGVTZXR0aW5nc1tcImFuYWx5dGljYWxDb25maWd1cmF0aW9uXCJdID0gYW5hbHl0aWNhbENvbmZpZ3VyYXRpb247XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0YWJsZVNldHRpbmdzO1xuXHR9XG5cblx0c3RhdGljIGNyZWF0ZVRhYmxlRGVmaW5pdGlvbih0YWJsZTogVGFibGVCbG9jaywgdGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5nczogVGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyk6IFRhYmxlVmlzdWFsaXphdGlvbiB7XG5cdFx0Y29uc3QgaW5pdGlhbENvbnZlcnRlckNvbnRleHQgPSB0YWJsZS5nZXRDb252ZXJ0ZXJDb250ZXh0KFxuXHRcdFx0dGFibGUuY29udGV4dE9iamVjdFBhdGgsXG5cdFx0XHR0YWJsZS5jb250ZXh0UGF0aD8uZ2V0UGF0aCgpLFxuXHRcdFx0dGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5nc1xuXHRcdCk7XG5cdFx0Y29uc3QgdmlzdWFsaXphdGlvblBhdGggPSBUYWJsZUJsb2NrLmdldFZpc3VhbGl6YXRpb25QYXRoKHRhYmxlLmNvbnRleHRPYmplY3RQYXRoLCBpbml0aWFsQ29udmVydGVyQ29udGV4dCk7XG5cblx0XHRjb25zdCB0YWJsZVNldHRpbmdzID0gdGFibGUuZ2V0VGFibGVTZXR0aW5ncygpO1xuXHRcdGNvbnN0IGV4dHJhTWFuaWZlc3RTZXR0aW5nczogVGFibGVNYW5pZmVzdENvbmZpZ3VyYXRpb24gPSB7XG5cdFx0XHRvdmVyZmxvd0dyb3VwczogVGFibGVCbG9jay5jcmVhdGVBY3Rpb25PdmVyZmxvd0dyb3Vwcyh0YWJsZSksXG5cdFx0XHRhY3Rpb25zOiBUYWJsZUJsb2NrLmNyZWF0ZUFjdGlvbnNGcm9tTWFuaWZlc3QodGFibGUpLFxuXHRcdFx0Y29sdW1uczogVGFibGVCbG9jay5jcmVhdGVDb2x1bW5zRm9yTWFuaWZlc3QodGFibGUpLFxuXHRcdFx0dGFibGVTZXR0aW5nc1xuXHRcdH07XG5cblx0XHRjb25zdCBleHRyYVBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRleHRyYVBhcmFtc1t2aXN1YWxpemF0aW9uUGF0aF0gPSBleHRyYU1hbmlmZXN0U2V0dGluZ3M7XG5cdFx0Y29uc3QgY29udmVydGVyQ29udGV4dCA9IHRhYmxlLmdldENvbnZlcnRlckNvbnRleHQoXG5cdFx0XHR0YWJsZS5jb250ZXh0T2JqZWN0UGF0aCxcblx0XHRcdHRhYmxlLmNvbnRleHRQYXRoPy5nZXRQYXRoKCksXG5cdFx0XHR0ZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzLFxuXHRcdFx0ZXh0cmFQYXJhbXNcblx0XHQpO1xuXG5cdFx0bGV0IGFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50OiBTZWxlY3Rpb25WYXJpYW50VHlwZSB8IHVuZGVmaW5lZDtcblx0XHRpZiAodGFibGUuYXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnRQYXRoKSB7XG5cdFx0XHRjb25zdCBzdk9iamVjdFBhdGggPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8U2VsZWN0aW9uVmFyaWFudD4oXG5cdFx0XHRcdHRhYmxlLmFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50UGF0aCxcblx0XHRcdFx0dGFibGUuY29udGV4dFBhdGggYXMgQ29udGV4dFxuXHRcdFx0KTtcblx0XHRcdGFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50ID0gc3ZPYmplY3RQYXRoLnRhcmdldE9iamVjdDtcblx0XHR9XG5cblx0XHRjb25zdCB2aXN1YWxpemF0aW9uRGVmaW5pdGlvbiA9IGdldERhdGFWaXN1YWxpemF0aW9uQ29uZmlndXJhdGlvbihcblx0XHRcdCh0YWJsZS5pbk11bHRpVmlldyAmJiB0YWJsZS5jb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3Rcblx0XHRcdFx0PyBjb252ZXJ0ZXJDb250ZXh0LmdldFJlbGF0aXZlQW5ub3RhdGlvblBhdGgoXG5cdFx0XHRcdFx0XHR0YWJsZS5jb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QuZnVsbHlRdWFsaWZpZWROYW1lLFxuXHRcdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKClcblx0XHRcdFx0ICApXG5cdFx0XHRcdDogZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCh0YWJsZS5jb250ZXh0T2JqZWN0UGF0aCkpIGFzIHN0cmluZyxcblx0XHRcdGNvbnZlcnRlckNvbnRleHQsXG5cdFx0XHR7XG5cdFx0XHRcdGlzQ29uZGVuc2VkVGFibGVMYXlvdXRDb21wbGlhbnQ6IHRhYmxlLnVzZUNvbmRlbnNlZExheW91dCxcblx0XHRcdFx0YXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRcdGlzTWFjcm9Pck11bHRpcGxlVmlldzogdGFibGUuaW5NdWx0aVZpZXcgPz8gdHJ1ZVxuXHRcdFx0fVxuXHRcdCk7XG5cblx0XHQvLyB0YWtlIHRoZSAoZmlyc3QpIFRhYmxlIHZpc3VhbGl6YXRpb25cblx0XHRyZXR1cm4gdmlzdWFsaXphdGlvbkRlZmluaXRpb24udmlzdWFsaXphdGlvbnMuZmluZChcblx0XHRcdCh2aXo6IFRhYmxlVmlzdWFsaXphdGlvbiB8IENoYXJ0VmlzdWFsaXphdGlvbikgPT4gdml6LnR5cGUgPT09IFZpc3VhbGl6YXRpb25UeXBlLlRhYmxlXG5cdFx0KSBhcyBUYWJsZVZpc3VhbGl6YXRpb247XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyB0aGUgbWFuaWZlc3QgYWN0aW9ucyBmb3IgdGhlIHRhYmxlLlxuXHQgKiBAcGFyYW0gdGFibGUgVGhlIHRhYmxlIGJsb2NrXG5cdCAqIEByZXR1cm5zIFRoZSBtYW5pZmVzdCBhY3Rpb25zIGZvciB0aGUgdGFibGVcblx0ICovXG5cdHN0YXRpYyBjcmVhdGVBY3Rpb25zRnJvbU1hbmlmZXN0KHRhYmxlOiBUYWJsZUJsb2NrKTogUmVjb3JkPHN0cmluZywgTWFuaWZlc3RBY3Rpb24+IHtcblx0XHRjb25zdCBhY3Rpb25zU2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIE1hbmlmZXN0QWN0aW9uPiA9IHt9O1xuXHRcdGNvbnN0IGFkZEFjdGlvblRvRXh0cmFNYW5pZmVzdCA9IChhY3Rpb246IEJsb2NrQWN0aW9uIHwgQmxvY2tBY3Rpb25PdmVycmlkZSk6IHZvaWQgPT4ge1xuXHRcdFx0Y29uc3Qga2V5ID0gYWN0aW9uLmtleSE7XG5cdFx0XHRhY3Rpb25zU2V0dGluZ3Nba2V5XSA9IHtcblx0XHRcdFx0cG9zaXRpb246IHtcblx0XHRcdFx0XHRwbGFjZW1lbnQ6IChhY3Rpb24ucGxhY2VtZW50ID8/IFwiQWZ0ZXJcIikgYXMgUGxhY2VtZW50LFxuXHRcdFx0XHRcdGFuY2hvcjogYWN0aW9uLmFuY2hvclxuXHRcdFx0XHR9LFxuXHRcdFx0XHRjb21tYW5kOiBhY3Rpb24uY29tbWFuZCxcblx0XHRcdFx0ZW5hYmxlT25TZWxlY3Q6IGFjdGlvbi5lbmFibGVPblNlbGVjdCxcblx0XHRcdFx0dmlzaWJsZTogYWN0aW9uLnZpc2libGUsXG5cdFx0XHRcdGVuYWJsZWQ6IGFjdGlvbi5lbmFibGVkLFxuXHRcdFx0XHRpc0FJT3BlcmF0aW9uOiBhY3Rpb24uaXNBSU9wZXJhdGlvbixcblx0XHRcdFx0cHJpb3JpdHk6IGFjdGlvbi5wcmlvcml0eSxcblx0XHRcdFx0Z3JvdXA6IGFjdGlvbi5ncm91cCxcblx0XHRcdFx0b3ZlcmZsb3dHcm91cDogYWN0aW9uLm92ZXJmbG93R3JvdXBcblx0XHRcdH07XG5cdFx0XHRpZiAoYWN0aW9uLl90eXBlID09PSBcIkFjdGlvblwiKSB7XG5cdFx0XHRcdGFjdGlvbnNTZXR0aW5nc1trZXldID0ge1xuXHRcdFx0XHRcdC4uLmFjdGlvbnNTZXR0aW5nc1trZXldLFxuXHRcdFx0XHRcdHRleHQ6IGFjdGlvbi50ZXh0LFxuXHRcdFx0XHRcdF9fbm9XcmFwOiB0cnVlLFxuXHRcdFx0XHRcdHByZXNzOiBhY3Rpb24ucHJlc3MsXG5cdFx0XHRcdFx0cmVxdWlyZXNTZWxlY3Rpb246IGFjdGlvbi5yZXF1aXJlc1NlbGVjdGlvblxuXHRcdFx0XHR9O1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBhZnRlckV4ZWN1dGlvbiA9IHtcblx0XHRcdFx0ZW5hYmxlQXV0b1Njcm9sbDogYWN0aW9uW1wiZW5hYmxlQXV0b1Njcm9sbFwiXSxcblx0XHRcdFx0bmF2aWdhdGVUb0luc3RhbmNlOiBhY3Rpb25bXCJuYXZpZ2F0ZVRvSW5zdGFuY2VcIl1cblx0XHRcdH07XG5cdFx0XHRyZW1vdmVVbmRlZmluZWRQcm9wZXJ0aWVzKGFmdGVyRXhlY3V0aW9uKTtcblx0XHRcdGFjdGlvbnNTZXR0aW5nc1trZXldID0ge1xuXHRcdFx0XHQuLi5hY3Rpb25zU2V0dGluZ3Nba2V5XSxcblx0XHRcdFx0YWZ0ZXJFeGVjdXRpb246IE9iamVjdC5lbnRyaWVzKGFmdGVyRXhlY3V0aW9uKS5sZW5ndGggPyBhZnRlckV4ZWN1dGlvbiA6IHVuZGVmaW5lZCxcblx0XHRcdFx0ZGVmYXVsdFZhbHVlc0Z1bmN0aW9uOiBhY3Rpb24uZGVmYXVsdFZhbHVlc0Z1bmN0aW9uXG5cdFx0XHR9O1xuXHRcdH07XG5cdFx0aWYgKHRhYmxlLmFjdGlvbnMpIHtcblx0XHRcdE9iamVjdC52YWx1ZXModGFibGUuYWN0aW9ucykuZm9yRWFjaCgoaXRlbSkgPT4ge1xuXHRcdFx0XHRpZiAoaXRlbS5fdHlwZSA9PT0gXCJBY3Rpb25cIiB8fCBpdGVtLl90eXBlID09PSBcIkFjdGlvbk92ZXJyaWRlXCIpIHtcblx0XHRcdFx0XHRhZGRBY3Rpb25Ub0V4dHJhTWFuaWZlc3QoaXRlbSk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoaXRlbS5fdHlwZSA9PT0gXCJBY3Rpb25Hcm91cFwiIHx8IGl0ZW0uX3R5cGUgPT09IFwiQWN0aW9uR3JvdXBPdmVycmlkZVwiKSB7XG5cdFx0XHRcdFx0Ly8gQWN0aW9uR3JvdXAgb3IgQWN0aW9uR3JvdXBPdmVycmlkZVxuXHRcdFx0XHRcdGNvbnN0IGtleSA9IGl0ZW0ua2V5ITtcblx0XHRcdFx0XHRhY3Rpb25zU2V0dGluZ3Nba2V5XSA9IHtcblx0XHRcdFx0XHRcdHBvc2l0aW9uOiB7XG5cdFx0XHRcdFx0XHRcdHBsYWNlbWVudDogKGl0ZW0ucGxhY2VtZW50ID8/IFwiQWZ0ZXJcIikgYXMgUGxhY2VtZW50LFxuXHRcdFx0XHRcdFx0XHRhbmNob3I6IGl0ZW0uYW5jaG9yXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0bWVudTogaXRlbS5hY3Rpb25zLm1hcCgoYWN0aW9uKSA9PiBhY3Rpb24ua2V5ISlcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdGlmIChpdGVtLl90eXBlID09PSBcIkFjdGlvbkdyb3VwXCIpIHtcblx0XHRcdFx0XHRcdGFjdGlvbnNTZXR0aW5nc1trZXldID0ge1xuXHRcdFx0XHRcdFx0XHQuLi5hY3Rpb25zU2V0dGluZ3Nba2V5XSxcblx0XHRcdFx0XHRcdFx0dGV4dDogaXRlbS50ZXh0LFxuXHRcdFx0XHRcdFx0XHRkZWZhdWx0QWN0aW9uOiBpdGVtLmRlZmF1bHRBY3Rpb24sXG5cdFx0XHRcdFx0XHRcdF9fbm9XcmFwOiB0cnVlXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpdGVtLmFjdGlvbnMuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XG5cdFx0XHRcdFx0XHRhZGRBY3Rpb25Ub0V4dHJhTWFuaWZlc3QoYWN0aW9uKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHJldHVybiBhY3Rpb25zU2V0dGluZ3M7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyB0aGUgbWFuaWZlc3Qgb3ZlcmZsb3dHcm91cHMgZm9yIHRoZSB0YWJsZS5cblx0ICogQHBhcmFtIHRhYmxlIFRoZSB0YWJsZSBibG9ja1xuXHQgKiBAcmV0dXJucyBUaGUgbWFuaWZlc3Qgb3ZlcmZsb3dHcm91cHMgZm9yIHRoZSB0YWJsZVxuXHQgKi9cblx0c3RhdGljIGNyZWF0ZUFjdGlvbk92ZXJmbG93R3JvdXBzKHRhYmxlOiBUYWJsZUJsb2NrKTogT3ZlcmZsb3dHcm91cHNDb25maWd1cmF0aW9uIHtcblx0XHRjb25zdCBvdmVyZmxvd0dyb3Vwc1NldHRpbmdzOiBPdmVyZmxvd0dyb3Vwc0NvbmZpZ3VyYXRpb24gPSB7fTtcblx0XHRpZiAodGFibGUuYWN0aW9uT3ZlcmZsb3dHcm91cHMpIHtcblx0XHRcdE9iamVjdC52YWx1ZXModGFibGUuYWN0aW9uT3ZlcmZsb3dHcm91cHMpLmZvckVhY2goKG92ZXJGbG93R3JvdXApID0+IHtcblx0XHRcdFx0b3ZlcmZsb3dHcm91cHNTZXR0aW5nc1tvdmVyRmxvd0dyb3VwLm92ZXJmbG93R3JvdXBdID0ge1xuXHRcdFx0XHRcdHNob3dTZXBhcmF0b3I6IG92ZXJGbG93R3JvdXAuc2hvd1NlcGFyYXRvclxuXHRcdFx0XHR9O1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG92ZXJmbG93R3JvdXBzU2V0dGluZ3M7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyB0aGUgbWFuaWZlc3QgY29sdW1ucyBmb3IgdGhlIHRhYmxlLlxuXHQgKiBAcGFyYW0gdGFibGUgVGhlIHRhYmxlIGJsb2NrXG5cdCAqIEByZXR1cm5zIFRoZSBtYW5pZmVzdCBjb2x1bW5zIGZvciB0aGUgdGFibGVcblx0ICovXG5cdHN0YXRpYyBjcmVhdGVDb2x1bW5zRm9yTWFuaWZlc3QodGFibGU6IFRhYmxlQmxvY2spOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21EZWZpbmVkVGFibGVDb2x1bW4gfCBDdXN0b21EZWZpbmVkVGFibGVDb2x1bW5Gb3JPdmVycmlkZT4ge1xuXHRcdGNvbnN0IGlzQmxvY2tDb2x1bW4gPSAoYmxvY2s6IEJsb2NrQ29sdW1uIHwgQmxvY2tDb2x1bW5PdmVycmlkZSk6IGJsb2NrIGlzIEJsb2NrQ29sdW1uID0+IHtcblx0XHRcdHJldHVybiBibG9jay5fdHlwZSA9PT0gXCJDb2x1bW5cIjtcblx0XHR9O1xuXG5cdFx0Y29uc3QgY29sdW1uU2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIEN1c3RvbURlZmluZWRUYWJsZUNvbHVtbiB8IEN1c3RvbURlZmluZWRUYWJsZUNvbHVtbkZvck92ZXJyaWRlPiA9IHt9O1xuXG5cdFx0aWYgKHRhYmxlLmNvbHVtbnMpIHtcblx0XHRcdE9iamVjdC52YWx1ZXModGFibGUuY29sdW1ucykuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG5cdFx0XHRcdGxldCBjdXN0b21Db2x1bW5EZWZpbml0aW9uOiBDdXN0b21EZWZpbmVkVGFibGVDb2x1bW4gfCAoQ3VzdG9tRGVmaW5lZFRhYmxlQ29sdW1uRm9yT3ZlcnJpZGUgJiB7IGtleTogc3RyaW5nIH0pO1xuXHRcdFx0XHRpZiAoaXNCbG9ja0NvbHVtbihjb2x1bW4pKSB7XG5cdFx0XHRcdFx0Y3VzdG9tQ29sdW1uRGVmaW5pdGlvbiA9IHtcblx0XHRcdFx0XHRcdGhlYWRlcjogY29sdW1uLmhlYWRlciEsXG5cdFx0XHRcdFx0XHR3aWR0aDogY29sdW1uLndpZHRoLFxuXHRcdFx0XHRcdFx0aW1wb3J0YW5jZTogY29sdW1uLmltcG9ydGFuY2UgYXMgSW1wb3J0YW5jZSxcblx0XHRcdFx0XHRcdGhvcml6b250YWxBbGlnbjogY29sdW1uLmhvcml6b250YWxBbGlnbixcblx0XHRcdFx0XHRcdHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyOiBjb2x1bW4ud2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIsXG5cdFx0XHRcdFx0XHRleHBvcnRTZXR0aW5nczogY29sdW1uLmV4cG9ydFNldHRpbmdzIGFzIEV4cG9ydFNldHRpbmdzLFxuXHRcdFx0XHRcdFx0cHJvcGVydGllczogY29sdW1uLnByb3BlcnRpZXMsXG5cdFx0XHRcdFx0XHR0b29sdGlwOiBjb2x1bW4udG9vbHRpcCxcblx0XHRcdFx0XHRcdHRlbXBsYXRlOiBjb2x1bW4udGVtcGxhdGUhLFxuXHRcdFx0XHRcdFx0YXZhaWxhYmlsaXR5OiBjb2x1bW4uYXZhaWxhYmlsaXR5IGFzIEF2YWlsYWJpbGl0eVR5cGUsXG5cdFx0XHRcdFx0XHRyZXF1aXJlZDogY29sdW1uLnJlcXVpcmVkLFxuXHRcdFx0XHRcdFx0dHlwZTogXCJTbG90XCIsXG5cdFx0XHRcdFx0XHRkaXNhYmxlRXhwb3J0OiBjb2x1bW4uZGlzYWJsZUV4cG9ydFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y3VzdG9tQ29sdW1uRGVmaW5pdGlvbiA9IHtcblx0XHRcdFx0XHRcdGtleTogY29sdW1uLmtleSEsXG5cdFx0XHRcdFx0XHR3aWR0aDogY29sdW1uLndpZHRoLFxuXHRcdFx0XHRcdFx0aW1wb3J0YW5jZTogY29sdW1uLmltcG9ydGFuY2UgYXMgSW1wb3J0YW5jZSxcblx0XHRcdFx0XHRcdGhvcml6b250YWxBbGlnbjogY29sdW1uLmhvcml6b250YWxBbGlnbixcblx0XHRcdFx0XHRcdHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyOiBjb2x1bW4ud2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIsXG5cdFx0XHRcdFx0XHRleHBvcnRTZXR0aW5nczogY29sdW1uLmV4cG9ydFNldHRpbmdzIGFzIEV4cG9ydFNldHRpbmdzLFxuXHRcdFx0XHRcdFx0YXZhaWxhYmlsaXR5OiBjb2x1bW4uYXZhaWxhYmlsaXR5IGFzIEF2YWlsYWJpbGl0eVR5cGUsXG5cdFx0XHRcdFx0XHRkaXNhYmxlRXhwb3J0OiBjb2x1bW4uZGlzYWJsZUV4cG9ydFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBSZW1vdmUgYWxsIHVuZGVmaW5lZCBwcm9wZXJ0aWVzLCBzbyB0aGF0IHRoZXkgZG9uJ3QgZXJhc2Ugd2hhdCBpcyBzZXQgaW4gdGhlIG1hbmlmZXN0XG5cdFx0XHRcdC8vIChuZWNlc3NhcnkgYmVjYXVzZSBtYW5pZmVzdC1iYXNlZCBjb2x1bW5zIGFyZSB0cmFuc2Zvcm1lZCBpbnRvIHNsb3QgY29sdW1ucyBhbmQgd2UgZG9uJ3QgY29weVxuXHRcdFx0XHQvLyBhbGwgdGhlaXIgcHJvcGVydGllcyBpbiB0aGUgWE1MKVxuXHRcdFx0XHRyZW1vdmVVbmRlZmluZWRQcm9wZXJ0aWVzKGN1c3RvbUNvbHVtbkRlZmluaXRpb24pO1xuXHRcdFx0XHRpZiAoaXNCbG9ja0NvbHVtbihjb2x1bW4pICYmIChjb2x1bW4uYW5jaG9yIHx8IGNvbHVtbi5wbGFjZW1lbnQpKSB7XG5cdFx0XHRcdFx0Y3VzdG9tQ29sdW1uRGVmaW5pdGlvbi5wb3NpdGlvbiA9IHtcblx0XHRcdFx0XHRcdGFuY2hvcjogY29sdW1uLmFuY2hvcixcblx0XHRcdFx0XHRcdHBsYWNlbWVudDogKGNvbHVtbi5wbGFjZW1lbnQgPz8gXCJBZnRlclwiKSBhcyBQbGFjZW1lbnRcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29sdW1uU2V0dGluZ3NbY29sdW1uLmtleSFdID0gY3VzdG9tQ29sdW1uRGVmaW5pdGlvbjtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRyZXR1cm4gY29sdW1uU2V0dGluZ3M7XG5cdH1cblxuXHRzZXRVcElkKCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmlkKSB7XG5cdFx0XHQvLyBUaGUgZ2l2ZW4gSUQgc2hhbGwgYmUgYXNzaWduZWQgdG8gdGhlIFRhYmxlQVBJIGFuZCBub3QgdG8gdGhlIE1EQyBUYWJsZVxuXHRcdFx0dGhpcy5fYXBpSWQgPSB0aGlzLmlkO1xuXHRcdFx0Ly8gR2VuZXJhdGUgdGhlIGNvbnRlbnRJZCBiYXNlZCBvbiB0aGUgSUQsIGlmIG5vdCBwcm92aWRlZCAoRlBNIGNhc2UpXG5cdFx0XHR0aGlzLmNvbnRlbnRJZCA/Pz0gdGhpcy5nZXRDb250ZW50SWQodGhpcy5pZCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIFdlIGdlbmVyYXRlIHRoZSBJRCBhbmQgdGhlIGNvbnRlbnRJRC4gRHVlIHRvIGNvbXBhdGliaWxpdHkgcmVhc29ucyB3ZSBrZWVwIGl0IG9uIHRoZSBNREMgVGFibGUgYnV0IHByb3ZpZGUgYXNzaWduXG5cdFx0XHQvLyB0aGUgSUQgd2l0aCBhIDo6VGFibGUgc3VmZml4IHRvIHRoZSBUYWJsZUFQSVxuXHRcdFx0dGhpcy5pZCA9IHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uYXBpSWQ7XG5cdFx0XHR0aGlzLmNvbnRlbnRJZCA9IHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uaWQ7XG5cdFx0XHR0aGlzLl9hcGlJZCA9IHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uYXBpSWQ7XG5cdFx0fVxuXHR9XG5cblx0X2dldEVudGl0eVR5cGUoKTogRW50aXR5VHlwZSB7XG5cdFx0cmV0dXJuICh0aGlzLmNvbGxlY3Rpb25FbnRpdHkgYXMgRW50aXR5U2V0KT8uZW50aXR5VHlwZSB8fCAodGhpcy5jb2xsZWN0aW9uRW50aXR5IGFzIE5hdmlnYXRpb25Qcm9wZXJ0eSk/LnRhcmdldFR5cGU7XG5cdH1cblxuXHRnZXRFbXB0eVJvd3NFbmFibGVkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgZW5hYmxlZCA9XG5cdFx0XHR0aGlzLmNyZWF0aW9uTW9kZS5uYW1lID09PSBDcmVhdGlvbk1vZGUuSW5saW5lQ3JlYXRpb25Sb3dzXG5cdFx0XHRcdD8gdGhpcy50YWJsZURlZmluaXRpb24uYWN0aW9ucy5maW5kKChhKSA9PiBhLmtleSA9PT0gU3RhbmRhcmRBY3Rpb25LZXlzLkNyZWF0ZSk/LmVuYWJsZWRcblx0XHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0cmV0dXJuIGVuYWJsZWQgPT09IFwiZmFsc2VcIiA/IHVuZGVmaW5lZCA6IGVuYWJsZWQ7XG5cdH1cblxuXHRnZXRUZW1wbGF0ZSgpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGVudGl0eVR5cGUgPSB0aGlzLl9nZXRFbnRpdHlUeXBlKCk7XG5cdFx0Y29uc3QgdGFibGVQcm9wcyA9IHRoaXMgYXMgdW5rbm93biBhcyBUYWJsZUJsb2NrUHJvcGVydGllcztcblx0XHR0YWJsZVByb3BzLm92ZXJyaWRlUm93UHJlc3MgPSB0aGlzLnJvd1ByZXNzICE9PSB1bmRlZmluZWQ7XG5cblx0XHRjb25zdCBjb2xsZWN0aW9uRW50aXR5ID0gdGhpcy5jb252ZXJ0ZWRNZXRhZGF0YS5yZXNvbHZlUGF0aCh0YWJsZVByb3BzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmNvbGxlY3Rpb24pLnRhcmdldCBhc1xuXHRcdFx0fCBFbnRpdHlTZXRcblx0XHRcdHwgTmF2aWdhdGlvblByb3BlcnR5O1xuXHRcdGNvbnN0IGhhbmRsZXJQcm92aWRlciA9IG5ldyBUYWJsZUV2ZW50SGFuZGxlclByb3ZpZGVyKHRhYmxlUHJvcHMsIHsgY29sbGVjdGlvbkVudGl0eSwgbWV0YU1vZGVsOiB0aGlzLm1ldGFQYXRoLmdldE1vZGVsKCkgfSk7XG5cblx0XHRsZXQgY3JlYXRpb25Nb2RlOiBUYWJsZUNyZWF0aW9uT3B0aW9ucyB8IHVuZGVmaW5lZDtcblx0XHRpZiAodGhpcy5jcmVhdGlvbk1vZGUgJiYgT2JqZWN0LmtleXModGhpcy5jcmVhdGlvbk1vZGUpLmxlbmd0aCA+IDApIHtcblx0XHRcdGNyZWF0aW9uTW9kZSA9IDxUYWJsZUNyZWF0aW9uT3B0aW9ucyB7Li4udGhpcy5jcmVhdGlvbk1vZGV9IC8+O1xuXHRcdH1cblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8VGFibGVBUElcblx0XHRcdFx0Y29yZTpyZXF1aXJlPVwie0ZQTTogJ3NhcC9mZS9jb3JlL2hlbHBlcnMvRlBNSGVscGVyJ31cIlxuXHRcdFx0XHRiaW5kaW5nPXtge2ludGVybmFsPmNvbnRyb2xzLyR7dGhpcy5jb250ZW50SWR9fWB9XG5cdFx0XHRcdGlkPXt0aGlzLl9hcGlJZH1cblx0XHRcdFx0Y29udGVudElkPXt0aGlzLmNvbnRlbnRJZH1cblx0XHRcdFx0dmlzaWJsZT17dGhpcy52aXNpYmxlfVxuXHRcdFx0XHRoZWFkZXJMZXZlbD17dGhpcy5oZWFkZXJMZXZlbH1cblx0XHRcdFx0aGVhZGVyU3R5bGU9e3RoaXMuaGVhZGVyU3R5bGV9XG5cdFx0XHRcdGhlYWRlclZpc2libGU9e3RoaXMuaGVhZGVyVmlzaWJsZX1cblx0XHRcdFx0dGFiVGl0bGU9e3RoaXMudGFiVGl0bGV9XG5cdFx0XHRcdGV4cG9ydFJlcXVlc3RTaXplPXt0aGlzLmV4cG9ydFJlcXVlc3RTaXplfVxuXHRcdFx0XHRkaXNhYmxlQ29weVRvQ2xpcGJvYXJkPXt0aGlzLmRpc2FibGVDb3B5VG9DbGlwYm9hcmR9XG5cdFx0XHRcdHNjcm9sbFRocmVzaG9sZD17dGhpcy5zY3JvbGxUaHJlc2hvbGR9XG5cdFx0XHRcdHRocmVzaG9sZD17dGhpcy50YWJsZURlZmluaXRpb24uY29udHJvbC50aHJlc2hvbGQgPz8gdGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi50aHJlc2hvbGR9XG5cdFx0XHRcdHBvcGluTGF5b3V0PXt0aGlzLnBvcGluTGF5b3V0fVxuXHRcdFx0XHRpc1NlYXJjaGFibGU9e3RoaXMuaXNTZWFyY2hhYmxlfVxuXHRcdFx0XHRidXN5PXt0aGlzLmJ1c3l9XG5cdFx0XHRcdGluaXRpYWxMb2FkPXt0aGlzLmluaXRpYWxMb2FkfVxuXHRcdFx0XHRoZWFkZXI9e3RoaXMuaGVhZGVyfVxuXHRcdFx0XHRpc0FscD17dGhpcy5pc0FscH1cblx0XHRcdFx0ZmllbGRNb2RlPXt0aGlzLmZpZWxkTW9kZX1cblx0XHRcdFx0cGVyc29uYWxpemF0aW9uPXt0aGlzLnBlcnNvbmFsaXphdGlvbn1cblx0XHRcdFx0cm93UHJlc3M9e3RoaXMucm93UHJlc3MgYXMgdW5rbm93biBhcyBGdW5jdGlvbn1cblx0XHRcdFx0dmFyaWFudFNhdmVkPXt0aGlzLnZhcmlhbnRTYXZlZCBhcyB1bmtub3duIGFzIEZ1bmN0aW9ufVxuXHRcdFx0XHR2YXJpYW50U2VsZWN0ZWQ9e3RoaXMudmFyaWFudFNlbGVjdGVkIGFzIHVua25vd24gYXMgRnVuY3Rpb259XG5cdFx0XHRcdHNlZ21lbnRlZEJ1dHRvblByZXNzPXt0aGlzLnNlZ21lbnRlZEJ1dHRvblByZXNzIGFzIHVua25vd24gYXMgRnVuY3Rpb259XG5cdFx0XHRcdHZhcmlhbnRNYW5hZ2VtZW50PXt0aGlzLnZhcmlhbnRNYW5hZ2VtZW50fVxuXHRcdFx0XHRpZ25vcmVkRmllbGRzPXt0aGlzLnRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmlnbm9yZWRGaWVsZHN9IC8vIE5lZWQgdG8gYmUgZnJvbSB0aGUgdGFibGVEZWZpbml0aW9uIHRvIGJlIGluIHBoYXNlIGZvciB0aGUgZ2V0SWdub3JlRmllbGRzXG5cdFx0XHRcdHRhYmxlRGVmaW5pdGlvbj17YHtfcGFnZU1vZGVsPiR7dGhpcy50YWJsZURlZmluaXRpb25Db250ZXh0IS5nZXRQYXRoKCl9fWAgYXMgdW5rbm93biBhcyBUYWJsZVZpc3VhbGl6YXRpb259XG5cdFx0XHRcdGVudGl0eVR5cGVGdWxseVF1YWxpZmllZE5hbWU9e2VudGl0eVR5cGU/LmZ1bGx5UXVhbGlmaWVkTmFtZX1cblx0XHRcdFx0bWV0YVBhdGg9e3RoaXMubWV0YVBhdGg/LmdldFBhdGgoKX1cblx0XHRcdFx0dXNlQmFzaWNTZWFyY2g9e3RoaXMudXNlQmFzaWNTZWFyY2h9XG5cdFx0XHRcdGVuYWJsZUZ1bGxTY3JlZW49e3RoaXMuZW5hYmxlRnVsbFNjcmVlbn1cblx0XHRcdFx0ZW5hYmxlRXhwb3J0PXt0aGlzLmVuYWJsZUV4cG9ydH1cblx0XHRcdFx0ZXhwb3J0RmlsZU5hbWU9e3RoaXMuZXhwb3J0RmlsZU5hbWV9XG5cdFx0XHRcdGV4cG9ydFNoZWV0TmFtZT17dGhpcy5leHBvcnRTaGVldE5hbWV9XG5cdFx0XHRcdGZyb3plbkNvbHVtbkNvdW50PXt0aGlzLmZyb3plbkNvbHVtbkNvdW50fVxuXHRcdFx0XHRkaXNhYmxlQ29sdW1uRnJlZXplPXt0aGlzLmRpc2FibGVDb2x1bW5GcmVlemV9XG5cdFx0XHRcdGVuYWJsZVBhc3RlPXt0aGlzLmVuYWJsZVBhc3RlfVxuXHRcdFx0XHRyb3dDb3VudE1vZGU9e3RoaXMucm93Q291bnRNb2RlfVxuXHRcdFx0XHRyb3dDb3VudD17dGhpcy5yb3dDb3VudH1cblx0XHRcdFx0Y29udGV4dFBhdGg9e3RoaXMuY29udGV4dFBhdGg/LmdldFBhdGgoKX1cblx0XHRcdFx0c2VsZWN0aW9uQ2hhbmdlPXt0aGlzLnNlbGVjdGlvbkNoYW5nZSBhcyB1bmtub3duIGFzIEZ1bmN0aW9ufVxuXHRcdFx0XHRsaXN0QmluZGluZ0NoYW5nZT17dGhpcy5saXN0QmluZGluZ0NoYW5nZSBhcyB1bmtub3duIGFzIEZ1bmN0aW9ufVxuXHRcdFx0XHRyZWFkT25seT17dGhpcy5yZWFkT25seX1cblx0XHRcdFx0c2VsZWN0aW9uTW9kZT17dGhpcy5zZWxlY3Rpb25Nb2RlfVxuXHRcdFx0XHR1c2VDb25kZW5zZWRMYXlvdXQ9e3RoaXMudXNlQ29uZGVuc2VkTGF5b3V0fVxuXHRcdFx0XHR0eXBlPXt0aGlzLnR5cGV9XG5cdFx0XHRcdGZpbHRlckJhcj17dGhpcy5maWx0ZXJCYXJ9XG5cdFx0XHRcdGVtcHR5Um93c0VuYWJsZWQ9e3RoaXMuZ2V0RW1wdHlSb3dzRW5hYmxlZCgpIGFzIHVua25vd24gYXMgYm9vbGVhbn1cblx0XHRcdFx0ZW5hYmxlQXV0b0NvbHVtbldpZHRoPXt0aGlzLmVuYWJsZUF1dG9Db2x1bW5XaWR0aH1cblx0XHRcdFx0YmVmb3JlUmViaW5kVGFibGU9e3RoaXMuYmVmb3JlUmViaW5kVGFibGUgYXMgdW5rbm93biBhcyBGdW5jdGlvbn1cblx0XHRcdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI9e3RoaXMud2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXJ9XG5cdFx0XHRcdG1vZGVGb3JOb0RhdGFNZXNzYWdlPXt0aGlzLm1vZGVGb3JOb0RhdGFNZXNzYWdlfVxuXHRcdFx0XHRhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudFBhdGg9e3RoaXMuYXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnRQYXRoPy5nZXRQYXRoKCl9XG5cdFx0XHRcdGRpc3BsYXlTZWdtZW50ZWRCdXR0b249e3RoaXMuZGlzcGxheVNlZ21lbnRlZEJ1dHRvbn1cblx0XHRcdFx0ZW5hYmxlUGFzdGluZ09mQ29tcHV0ZWRQcm9wZXJ0aWVzPXt0aGlzLmVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllc31cblx0XHRcdFx0ZW5hYmxlU2VsZWN0QWxsPXt0aGlzLmVuYWJsZVNlbGVjdEFsbH1cblx0XHRcdFx0aW5NdWx0aVZpZXc9e3RoaXMuaW5NdWx0aVZpZXd9XG5cdFx0XHRcdHNlbGVjdGlvbkxpbWl0PXt0aGlzLnNlbGVjdGlvbkxpbWl0fVxuXHRcdFx0XHRjb25kZW5zZWRUYWJsZUxheW91dD17dGhpcy5jb25kZW5zZWRUYWJsZUxheW91dH1cblx0XHRcdD5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRjcmVhdGlvbk1vZGUsXG5cdFx0XHRcdFx0Y29udGVudDogZ2V0TURDVGFibGVUZW1wbGF0ZSh0YWJsZVByb3BzLCB7XG5cdFx0XHRcdFx0XHRtZXRhUGF0aDogdGhpcy5tZXRhUGF0aCxcblx0XHRcdFx0XHRcdGNvbnZlcnRlZE1ldGFkYXRhOiB0aGlzLmNvbnZlcnRlZE1ldGFkYXRhLFxuXHRcdFx0XHRcdFx0bWV0YU1vZGVsOiB0aGlzLm1ldGFNb2RlbCxcblx0XHRcdFx0XHRcdGhhbmRsZXJQcm92aWRlcixcblx0XHRcdFx0XHRcdGFwcENvbXBvbmVudDogdGhpcy5hcHBDb21wb25lbnRcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9fVxuXHRcdFx0PC9UYWJsZUFQST5cblx0XHQpO1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
1605
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzYWZlR2V0QXR0cmlidXRlIiwibm9kZSIsIm5hbWUiLCJnZXRBdHRyaWJ1dGUiLCJ1bmRlZmluZWQiLCJnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUiLCJlbmFibGVtZW50QXR0ciIsInJlbW92ZVVuZGVmaW5lZFByb3BlcnRpZXMiLCJvYmoiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsInBhcnNlQWN0aW9uRnJvbUVsZW1lbnQiLCJhY3Rpb25Ob2RlIiwiY29tbW9uUHJvcGVydGllcyIsImdldENvbW1vbkN1c3RvbUFjdGlvblByb3BlcnRpZXMiLCJsb2NhbE5hbWUiLCJ0ZXh0IiwicHJlc3MiLCJyZXF1aXJlc1NlbGVjdGlvbiIsImVuYWJsZUF1dG9TY3JvbGwiLCJuYXZpZ2F0ZVRvSW5zdGFuY2UiLCJkZWZhdWx0VmFsdWVzRnVuY3Rpb24iLCJhY3Rpb24iLCJyZXBsYWNlIiwiZW5hYmxlZCIsInZpc2libGUiLCJjb21tYW5kIiwiZW5hYmxlT25TZWxlY3QiLCJwbGFjZW1lbnQiLCJhbmNob3IiLCJfdHlwZSIsIk51bWJlciIsInBhcnNlSW50Iiwic2V0Q3VzdG9tQWN0aW9uR3JvdXBQcm9wZXJ0aWVzIiwiYWdncmVnYXRpb25PYmplY3QiLCJpbmNsdWRlcyIsImdldENvbW1vbkN1c3RvbUFjdGlvbnNHcm91cFByb3BlcnRpZXMiLCJkZWZhdWx0QWN0aW9uIiwic2V0Q3VzdG9tTWFzc0VkaXRQcm9wZXJ0aWVzIiwiZWxlbWVudCIsImN1c3RvbUNvbnRlbnQiLCJjaGlsZHJlbiIsIm91dGVySFRNTCIsInZpc2libGVGaWVsZHMiLCJzcGxpdCIsImlnbm9yZWRGaWVsZHMiLCJvcGVyYXRpb25Hcm91cGluZ01vZGUiLCJzZXRRdWlja1ZhcmlhbnRTZWxlY3Rpb24iLCJxdWlja1ZhcmlhbnRTZWxlY3Rpb24iLCJwYXRocyIsInNob3dDb3VudHMiLCJzZXRDdXN0b21BY3Rpb25PdmVyZmxvd0dyb3VwUHJvcGVydGllcyIsIm92ZXJGbG93R3JvdXAiLCJvdmVyZmxvd0dyb3VwIiwic2hvd1NlcGFyYXRvciIsImFjdGlvbnNJbk1lbnUiLCJBcnJheSIsInByb3RvdHlwZSIsInNsaWNlIiwiYXBwbHkiLCJtYXAiLCJzdWJBY3Rpb24iLCJzZXRBdHRyaWJ1dGUiLCJhY3Rpb25zIiwiZ2V0Q29tbW9uQ3VzdG9tQ29sdW1uc1Byb3BlcnRpZXMiLCJjaGlsZENvbHVtbiIsIndpZHRoIiwid2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIiLCJpbXBvcnRhbmNlIiwiaG9yaXpvbnRhbEFsaWduIiwiYXZhaWxhYmlsaXR5IiwiZGlzYWJsZUV4cG9ydCIsImV4cG9ydFNldHRpbmdzIiwicGFyc2VFeHBvcnRTZXR0aW5ncyIsInNldEN1c3RvbUNvbHVtblByb3BlcnRpZXMiLCJoZWFkZXIiLCJ0b29sdGlwIiwidGVtcGxhdGUiLCJnZXRDb2x1bW5UZW1wbGF0ZSIsInByb3BlcnRpZXMiLCJyZXF1aXJlZCIsInBhcnNlU2ltcGxlQWdncmVnYXRpb24iLCJ3cmFwIiwidHlwZSIsInByb3BlcnR5IiwidGV4dEFsaWduIiwibGFiZWwiLCJ0cnVlVmFsdWUiLCJmYWxzZVZhbHVlIiwidmFsdWVNYXAiLCJhZ2dyZWdhdGlvbiIsImdldEFnZ3JlZ2F0aW9uIiwiaSIsImxlbmd0aCIsImNoaWxkIiwiaXRlbSIsIm5vZGVOYW1lIiwiZW5kc1dpdGgiLCJhZ2dyZWdhdGlvbk5hbWUiLCJyZXN1bHQiLCJnZXRBdHRyaWJ1dGVOYW1lcyIsInZhbHVlIiwiVGFibGVCbG9jayIsIl9kZWMiLCJkZWZpbmVCdWlsZGluZ0Jsb2NrIiwibmFtZXNwYWNlIiwicHVibGljTmFtZXNwYWNlIiwicmV0dXJuVHlwZXMiLCJfZGVjMiIsImJsb2NrQXR0cmlidXRlIiwidW5kZXJseWluZ1R5cGUiLCJleHBlY3RlZFR5cGVzIiwiZXhwZWN0ZWRBbm5vdGF0aW9ucyIsImlzUHVibGljIiwiX2RlYzMiLCJiaW5kYWJsZSIsIl9kZWM0IiwiX2RlYzUiLCJfZGVjNiIsIl9kZWM3IiwiX2RlYzgiLCJfZGVjOSIsIl9kZWMxMCIsIl9kZWMxMSIsIl9kZWMxMiIsIl9kZWMxMyIsIl9kZWMxNCIsIl9kZWMxNSIsIl9kZWMxNiIsIl9kZWMxNyIsImFsbG93ZWRWYWx1ZXMiLCJfZGVjMTgiLCJfZGVjMTkiLCJfZGVjMjAiLCJfZGVjMjEiLCJfZGVjMjIiLCJfZGVjMjMiLCJfZGVjMjQiLCJpc0Fzc29jaWF0aW9uIiwiX2RlYzI1IiwiX2RlYzI2IiwiX2RlYzI3IiwiX2RlYzI4IiwiX2RlYzI5IiwiX2RlYzMwIiwiX2RlYzMxIiwiX2RlYzMyIiwiX2RlYzMzIiwiX2RlYzM0IiwiX2RlYzM1IiwiX2RlYzM2IiwiX2RlYzM3IiwiX2RlYzM4IiwiX2RlYzM5IiwiX2RlYzQwIiwiX2RlYzQxIiwiX2RlYzQyIiwiX2RlYzQzIiwiX2RlYzQ0IiwiX2RlYzQ1IiwiX2RlYzQ2IiwiX2RlYzQ3IiwiX2RlYzQ4IiwidmFsaWRhdGUiLCJjcmVhdGlvbk9wdGlvbnNJbnB1dCIsIkVycm9yIiwiX2RlYzQ5IiwiYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24iLCJhZ2dyZWdhdGlvbk9uTGVhZkxldmVsIiwiX2RlYzUwIiwiYmxvY2tBZ2dyZWdhdGlvbiIsImFsdFR5cGVzIiwiaGFzVmlydHVhbE5vZGUiLCJtdWx0aXBsZSIsInByb2Nlc3NBZ2dyZWdhdGlvbnMiLCJfZGVjNTEiLCJza2lwS2V5IiwiX2RlYzUyIiwiaXNEZWZhdWx0IiwiX2RlYzUzIiwiX2RlYzU0IiwicmVhbGx5U2tpcEtleSIsIl9kZWM1NSIsImJsb2NrRXZlbnQiLCJfZGVjNTYiLCJfZGVjNTciLCJfZGVjNTgiLCJfZGVjNTkiLCJfZGVjNjAiLCJfZGVjNjEiLCJfZGVjNjIiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX1RhYmxlQmxvY2siLCJfQnVpbGRpbmdCbG9ja1RlbXBsYXQiLCJwcm9wcyIsImNvbnRyb2xDb25maWd1cmF0aW9uIiwidGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJfZGVzY3JpcHRvcjciLCJfZGVzY3JpcHRvcjgiLCJfZGVzY3JpcHRvcjkiLCJfZGVzY3JpcHRvcjEwIiwiX2Rlc2NyaXB0b3IxMSIsIl9kZXNjcmlwdG9yMTIiLCJfZGVzY3JpcHRvcjEzIiwiX2Rlc2NyaXB0b3IxNCIsIl9kZXNjcmlwdG9yMTUiLCJfZGVzY3JpcHRvcjE2IiwiX2Rlc2NyaXB0b3IxNyIsIl9kZXNjcmlwdG9yMTgiLCJfZGVzY3JpcHRvcjE5IiwiX2Rlc2NyaXB0b3IyMCIsIl9kZXNjcmlwdG9yMjEiLCJfZGVzY3JpcHRvcjIyIiwiX2Rlc2NyaXB0b3IyMyIsIl9kZXNjcmlwdG9yMjQiLCJfZGVzY3JpcHRvcjI1IiwiX2Rlc2NyaXB0b3IyNiIsIl9kZXNjcmlwdG9yMjciLCJfZGVzY3JpcHRvcjI4IiwiX2Rlc2NyaXB0b3IyOSIsIl9kZXNjcmlwdG9yMzAiLCJfZGVzY3JpcHRvcjMxIiwiX2Rlc2NyaXB0b3IzMiIsIl9kZXNjcmlwdG9yMzMiLCJfZGVzY3JpcHRvcjM0IiwiX2Rlc2NyaXB0b3IzNSIsIl9kZXNjcmlwdG9yMzYiLCJfZGVzY3JpcHRvcjM3IiwiX2Rlc2NyaXB0b3IzOCIsIl9kZXNjcmlwdG9yMzkiLCJfZGVzY3JpcHRvcjQwIiwiX2Rlc2NyaXB0b3I0MSIsIl9kZXNjcmlwdG9yNDIiLCJfZGVzY3JpcHRvcjQzIiwiX2Rlc2NyaXB0b3I0NCIsIl9kZXNjcmlwdG9yNDUiLCJfZGVzY3JpcHRvcjQ2IiwiX2Rlc2NyaXB0b3I0NyIsIl9kZXNjcmlwdG9yNDgiLCJfZGVzY3JpcHRvcjQ5IiwiX2Rlc2NyaXB0b3I1MCIsIl9kZXNjcmlwdG9yNTEiLCJfZGVzY3JpcHRvcjUyIiwiX2Rlc2NyaXB0b3I1MyIsIl9kZXNjcmlwdG9yNTQiLCJfZGVzY3JpcHRvcjU1IiwiX2Rlc2NyaXB0b3I1NiIsIl9kZXNjcmlwdG9yNTciLCJfZGVzY3JpcHRvcjU4IiwiX2Rlc2NyaXB0b3I1OSIsIl9kZXNjcmlwdG9yNjAiLCJfZGVzY3JpcHRvcjYxIiwiY29udGV4dE9iamVjdFBhdGgiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJtZXRhUGF0aCIsImNvbnRleHRQYXRoIiwidGFibGVEZWZpbml0aW9uIiwiY3JlYXRlVGFibGVEZWZpbml0aW9uIiwidGFibGVEZWZpbml0aW9uQ29udGV4dCIsIk1hY3JvQVBJIiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJjb252ZXJ0ZWRNZXRhZGF0YSIsImNvbnZlcnRlZFR5cGVzIiwibWV0YU1vZGVsIiwibW9kZWxzIiwiY29sbGVjdGlvbkVudGl0eSIsInJlc29sdmVQYXRoIiwiYW5ub3RhdGlvbiIsImNvbGxlY3Rpb24iLCJ0YXJnZXQiLCJhcHBDb21wb25lbnQiLCJzZXRVcElkIiwiY3JlYXRpb25Nb2RlIiwiY3JlYXRlIiwibW9kZSIsImNyZWF0ZUF0RW5kIiwiYXBwZW5kIiwicmVhZE9ubHkiLCJkaXNwbGF5TW9kZSIsImNvbnRyb2wiLCJUYWJsZUFQSSIsInVwZGF0ZUNvbHVtbnNWaXNpYmlsaXR5IiwidXNlQmFzaWNTZWFyY2giLCJmaWx0ZXJCYXIiLCJnZW5lcmF0ZSIsImNvbnRlbnRJZCIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJnZXRWaXN1YWxpemF0aW9uUGF0aCIsImNvbnZlcnRlckNvbnRleHQiLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwiTG9nIiwiZXJyb3IiLCJpc0Fubm90YXRpb25PZlRlcm0iLCJ0YXJnZXRPYmplY3QiLCJyZXNvbHZlZFRhcmdldCIsImdldEVudGl0eVR5cGVBbm5vdGF0aW9uIiwidmlzdWFsaXphdGlvbnMiLCJnZXRWaXN1YWxpemF0aW9uc0Zyb21Bbm5vdGF0aW9uIiwidGVybSIsImxpbmVJdGVtVml6IiwiZmluZCIsInZpeiIsInZpc3VhbGl6YXRpb24iLCJhbm5vdGF0aW9uUGF0aCIsIl9wcm90byIsImdldFRhYmxlU2V0dGluZ3MiLCJ0YWJsZVNldHRpbmdzIiwiYWRkU2V0dGluZyIsImVuYWJsZUV4cG9ydCIsImV4cG9ydEZpbGVOYW1lIiwiZXhwb3J0U2hlZXROYW1lIiwic2VsZWN0aW9uTGltaXQiLCJjb25kZW5zZWRUYWJsZUxheW91dCIsImV4cG9ydFJlcXVlc3RTaXplIiwiZnJvemVuQ29sdW1uQ291bnQiLCJkaXNhYmxlQ29sdW1uRnJlZXplIiwicm93Q291bnRNb2RlIiwicm93Q291bnQiLCJlbmFibGVGdWxsU2NyZWVuIiwiZW5hYmxlU2VsZWN0QWxsIiwiZW5hYmxlUGFzdGluZ09mQ29tcHV0ZWRQcm9wZXJ0aWVzIiwiZW5hYmxlUGFzdGUiLCJkaXNhYmxlQ29weVRvQ2xpcGJvYXJkIiwic2Nyb2xsVGhyZXNob2xkIiwidGhyZXNob2xkIiwicG9waW5MYXlvdXQiLCJzZWxlY3Rpb25Nb2RlIiwicXVpY2tGaWx0ZXJzIiwicGF0aCIsImNyZWF0aW9uRmllbGRzIiwiaW5saW5lQ3JlYXRpb25Sb3dzSGlkZGVuSW5FZGl0TW9kZSIsIm91dGJvdW5kIiwiZW50cmllcyIsIm1hc3NFZGl0IiwiZW5hYmxlTWFzc0VkaXQiLCJjb25maWd1cmF0aW9uIiwiam9pbiIsInRhYmxlIiwiaW5pdGlhbENvbnZlcnRlckNvbnRleHQiLCJnZXRDb252ZXJ0ZXJDb250ZXh0IiwiZ2V0UGF0aCIsInZpc3VhbGl6YXRpb25QYXRoIiwiZXh0cmFNYW5pZmVzdFNldHRpbmdzIiwib3ZlcmZsb3dHcm91cHMiLCJjcmVhdGVBY3Rpb25PdmVyZmxvd0dyb3VwcyIsImNyZWF0ZUFjdGlvbnNGcm9tTWFuaWZlc3QiLCJjb2x1bW5zIiwiY3JlYXRlQ29sdW1uc0Zvck1hbmlmZXN0IiwiZXh0cmFQYXJhbXMiLCJhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudCIsImFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50UGF0aCIsInN2T2JqZWN0UGF0aCIsInZpc3VhbGl6YXRpb25EZWZpbml0aW9uIiwiZ2V0RGF0YVZpc3VhbGl6YXRpb25Db25maWd1cmF0aW9uIiwiaW5NdWx0aVZpZXciLCJnZXRSZWxhdGl2ZUFubm90YXRpb25QYXRoIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwiZ2V0RW50aXR5VHlwZSIsImlzQ29uZGVuc2VkVGFibGVMYXlvdXRDb21wbGlhbnQiLCJ1c2VDb25kZW5zZWRMYXlvdXQiLCJpc01hY3JvT3JNdWx0aXBsZVZpZXciLCJWaXN1YWxpemF0aW9uVHlwZSIsIlRhYmxlIiwiYWN0aW9uc1NldHRpbmdzIiwiYWRkQWN0aW9uVG9FeHRyYU1hbmlmZXN0IiwicG9zaXRpb24iLCJpc0FJT3BlcmF0aW9uIiwicHJpb3JpdHkiLCJncm91cCIsIl9fbm9XcmFwIiwiYWZ0ZXJFeGVjdXRpb24iLCJ2YWx1ZXMiLCJtZW51Iiwib3ZlcmZsb3dHcm91cHNTZXR0aW5ncyIsImFjdGlvbk92ZXJmbG93R3JvdXBzIiwiaXNCbG9ja0NvbHVtbiIsImJsb2NrIiwiY29sdW1uU2V0dGluZ3MiLCJjb2x1bW4iLCJjdXN0b21Db2x1bW5EZWZpbml0aW9uIiwiaWQiLCJfYXBpSWQiLCJnZXRDb250ZW50SWQiLCJhcGlJZCIsIl9nZXRFbnRpdHlUeXBlIiwiZW50aXR5VHlwZSIsInRhcmdldFR5cGUiLCJnZXRFbXB0eVJvd3NFbmFibGVkIiwiQ3JlYXRpb25Nb2RlIiwiSW5saW5lQ3JlYXRpb25Sb3dzIiwiYSIsIlN0YW5kYXJkQWN0aW9uS2V5cyIsIkNyZWF0ZSIsImdldFRlbXBsYXRlIiwidGFibGVQcm9wcyIsIm92ZXJyaWRlUm93UHJlc3MiLCJyb3dQcmVzcyIsImhhbmRsZXJQcm92aWRlciIsIlRhYmxlRXZlbnRIYW5kbGVyUHJvdmlkZXIiLCJnZXRNb2RlbCIsIl9qc3giLCJUYWJsZUNyZWF0aW9uT3B0aW9ucyIsImJpbmRpbmciLCJoZWFkZXJMZXZlbCIsImhlYWRlclN0eWxlIiwiaGVhZGVyVmlzaWJsZSIsInRhYlRpdGxlIiwiaXNTZWFyY2hhYmxlIiwiYnVzeSIsImluaXRpYWxMb2FkIiwiaXNBbHAiLCJmaWVsZE1vZGUiLCJwZXJzb25hbGl6YXRpb24iLCJ2YXJpYW50U2F2ZWQiLCJ2YXJpYW50U2VsZWN0ZWQiLCJzZWdtZW50ZWRCdXR0b25QcmVzcyIsInZhcmlhbnRNYW5hZ2VtZW50IiwiZW50aXR5VHlwZUZ1bGx5UXVhbGlmaWVkTmFtZSIsInNlbGVjdGlvbkNoYW5nZSIsImxpc3RCaW5kaW5nQ2hhbmdlIiwiZW1wdHlSb3dzRW5hYmxlZCIsImVuYWJsZUF1dG9Db2x1bW5XaWR0aCIsImJlZm9yZVJlYmluZFRhYmxlIiwibW9kZUZvck5vRGF0YU1lc3NhZ2UiLCJkaXNwbGF5U2VnbWVudGVkQnV0dG9uIiwiY29udGVudCIsImdldE1EQ1RhYmxlVGVtcGxhdGUiLCJCdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2UiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlRhYmxlLmJsb2NrLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENvbnZlcnRlZE1ldGFkYXRhLCBFbnRpdHlTZXQsIEVudGl0eVR5cGUsIE5hdmlnYXRpb25Qcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUge1xuXHRMaW5lSXRlbSxcblx0UHJlc2VudGF0aW9uVmFyaWFudCxcblx0U2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudCxcblx0U2VsZWN0aW9uVmFyaWFudCxcblx0U2VsZWN0aW9uVmFyaWFudFR5cGVcbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVGVybXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB7IHR5cGUgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgQXBwQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9BcHBDb21wb25lbnRcIjtcbmltcG9ydCB7XG5cdGJsb2NrQWdncmVnYXRpb24sXG5cdGJsb2NrQXR0cmlidXRlLFxuXHRibG9ja0V2ZW50LFxuXHRkZWZpbmVCdWlsZGluZ0Jsb2NrXG59IGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy90ZW1wbGF0aW5nL0J1aWxkaW5nQmxvY2tTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSB7IFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MgfSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvdGVtcGxhdGluZy9CdWlsZGluZ0Jsb2NrVGVtcGxhdGVQcm9jZXNzb3JcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2UgZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvQnVpbGRpbmdCbG9ja1RlbXBsYXRpbmdCYXNlXCI7XG5pbXBvcnQgdHlwZSBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB0eXBlIHtcblx0QXZhaWxhYmlsaXR5VHlwZSxcblx0Q3VzdG9tRGVmaW5lZFRhYmxlQ29sdW1uLFxuXHRDdXN0b21EZWZpbmVkVGFibGVDb2x1bW5Gb3JPdmVycmlkZSxcblx0SG9yaXpvbnRhbEFsaWduLFxuXHRJbXBvcnRhbmNlLFxuXHRNYW5pZmVzdEFjdGlvbixcblx0T3ZlcmZsb3dHcm91cHNDb25maWd1cmF0aW9uLFxuXHRUYWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBDcmVhdGlvbk1vZGUsIFZpc3VhbGl6YXRpb25UeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgdHlwZSB7IFBhZ2VDb250ZXh0UGF0aFRhcmdldCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL1RlbXBsYXRlQ29udmVydGVyXCI7XG5pbXBvcnQgdHlwZSB7IENoYXJ0VmlzdWFsaXphdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9DaGFydFwiO1xuaW1wb3J0IHR5cGUgeyBWaXN1YWxpemF0aW9uQW5kUGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9EYXRhVmlzdWFsaXphdGlvblwiO1xuaW1wb3J0IHtcblx0Z2V0RGF0YVZpc3VhbGl6YXRpb25Db25maWd1cmF0aW9uLFxuXHRnZXRWaXN1YWxpemF0aW9uc0Zyb21Bbm5vdGF0aW9uXG59IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9EYXRhVmlzdWFsaXphdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBDcmVhdGVCZWhhdmlvciwgVGFibGVUeXBlLCBUYWJsZVZpc3VhbGl6YXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vVGFibGVcIjtcbmltcG9ydCB7IFN0YW5kYXJkQWN0aW9uS2V5cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi90YWJsZS9TdGFuZGFyZEFjdGlvbnNcIjtcbmltcG9ydCB7IHR5cGUgUGxhY2VtZW50IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9Db25maWd1cmFibGVPYmplY3RcIjtcbmltcG9ydCB7IGdlbmVyYXRlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB7IGlzQW5ub3RhdGlvbk9mVGVybSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1R5cGVHdWFyZHNcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgdHlwZSBDb2xsZWN0aW9uQmluZGluZ0luZm9BUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvQ29sbGVjdGlvbkJpbmRpbmdJbmZvXCI7XG5pbXBvcnQgTWFjcm9BUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvTWFjcm9BUElcIjtcbmltcG9ydCB0eXBlIEFjdGlvbiBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9BY3Rpb25cIjtcbmltcG9ydCB0eXBlIEFjdGlvbkdyb3VwIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL0FjdGlvbkdyb3VwXCI7XG5pbXBvcnQgdHlwZSBDb2x1bW4gZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvQ29sdW1uXCI7XG5pbXBvcnQgdHlwZSB7IFRhYmxlQmxvY2tQcm9wZXJ0aWVzIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvTWRjVGFibGVUZW1wbGF0ZVwiO1xuaW1wb3J0IHsgZ2V0TURDVGFibGVUZW1wbGF0ZSB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL01kY1RhYmxlVGVtcGxhdGVcIjtcbmltcG9ydCB0eXBlIE92ZXJmbG93R3JvdXAgZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvT3ZlcmZsb3dHcm91cHNcIjtcbmltcG9ydCBUYWJsZUFQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9UYWJsZUFQSVwiO1xuaW1wb3J0IFRhYmxlQ3JlYXRpb25PcHRpb25zIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL1RhYmxlQ3JlYXRpb25PcHRpb25zXCI7XG5pbXBvcnQgdHlwZSB7IE92ZXJmbG93VG9vbGJhclByaW9yaXR5IH0gZnJvbSBcInNhcC9tL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIFVJNUV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IHsgdHlwZSBUaXRsZUxldmVsIH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIHsgRXhwb3J0U2V0dGluZ3MsIFRhYmxlJFNlbGVjdGlvbkNoYW5nZUV2ZW50UGFyYW1ldGVycyB9IGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IFJvd0FjdGlvbkl0ZW0kUHJlc3NFdmVudFBhcmFtZXRlcnMgfSBmcm9tIFwic2FwL3VpL21kYy90YWJsZS9Sb3dBY3Rpb25JdGVtXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBFdmVudEhhbmRsZXIgfSBmcm9tIFwidHlwZXMvZXh0ZW5zaW9uX3R5cGVzXCI7XG5pbXBvcnQgdHlwZSBBY3Rpb25Hcm91cE92ZXJyaWRlIGZyb20gXCIuL0FjdGlvbkdyb3VwT3ZlcnJpZGVcIjtcbmltcG9ydCB0eXBlIEFjdGlvbk92ZXJyaWRlIGZyb20gXCIuL0FjdGlvbk92ZXJyaWRlXCI7XG5pbXBvcnQgdHlwZSBBbmFseXRpY2FsQ29uZmlndXJhdGlvbiBmcm9tIFwiLi9BbmFseXRpY2FsQ29uZmlndXJhdGlvblwiO1xuaW1wb3J0IHR5cGUgQ29sdW1uT3ZlcnJpZGUgZnJvbSBcIi4vQ29sdW1uT3ZlcnJpZGVcIjtcbmltcG9ydCB0eXBlIE1hc3NFZGl0IGZyb20gXCIuL01hc3NFZGl0XCI7XG5pbXBvcnQgdHlwZSBRdWlja1ZhcmlhbnRTZWxlY3Rpb24gZnJvbSBcIi4vUXVpY2tWYXJpYW50U2VsZWN0aW9uXCI7XG5pbXBvcnQgVGFibGVFdmVudEhhbmRsZXJQcm92aWRlciBmcm9tIFwiLi9UYWJsZUV2ZW50SGFuZGxlclByb3ZpZGVyXCI7XG5cbnR5cGUgQmxvY2tDb2x1bW4gPSBQYXJ0aWFsPE9taXQ8Q29sdW1uLCBcInRlbXBsYXRlXCIgfCBcImV4cG9ydFNldHRpbmdzXCI+PiAmIHtcblx0dGVtcGxhdGU/OiBzdHJpbmc7XG5cdGV4cG9ydFNldHRpbmdzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10gfCBib29sZWFuIHwgb2JqZWN0PiB8IG51bGw7XG5cdF90eXBlOiBcIkNvbHVtblwiO1xufTtcblxudHlwZSBCbG9ja0NvbHVtbk92ZXJyaWRlID0gUGFydGlhbDxPbWl0PENvbHVtbk92ZXJyaWRlLCBcImV4cG9ydFNldHRpbmdzXCI+PiAmIHtcblx0ZXhwb3J0U2V0dGluZ3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXSB8IGJvb2xlYW4gfCBvYmplY3Q+IHwgbnVsbDtcblx0X3R5cGU6IFwiQ29sdW1uT3ZlcnJpZGVcIjtcbn07XG50eXBlIEJsb2NrTWFzc0VkaXQgPSBQYXJ0aWFsPE9taXQ8TWFzc0VkaXQsIFwiY3VzdG9tQ29udGVudFwiPj4gJiB7IGN1c3RvbUNvbnRlbnQ/OiBzdHJpbmc7IGtleTogc3RyaW5nIH07XG50eXBlIEJsb2NrUXVpY2tWYXJpYW50U2VsZWN0aW9uID0gUHJvcGVydGllc09mPFF1aWNrVmFyaWFudFNlbGVjdGlvbj4gJiB7IGtleTogc3RyaW5nIH07XG50eXBlIEJsb2NrT3ZlcmZsb3dHcm91cCA9IFByb3BlcnRpZXNPZjxPdmVyZmxvd0dyb3VwPiAmIHsga2V5OiBzdHJpbmcgfTtcbnR5cGUgQmxvY2tBY3Rpb24gPSBQcm9wZXJ0aWVzT2Y8T21pdDxBY3Rpb24sIFwicHJlc3NcIj4+ICYgeyBfdHlwZTogXCJBY3Rpb25cIjsgcHJlc3M6IHN0cmluZyB9O1xudHlwZSBCbG9ja0FjdGlvbkdyb3VwID0gUHJvcGVydGllc09mPE9taXQ8QWN0aW9uR3JvdXAsIFwiYWN0aW9uc1wiPj4gJiB7XG5cdF90eXBlOiBcIkFjdGlvbkdyb3VwXCI7XG5cdGFjdGlvbnM6IChCbG9ja0FjdGlvbiB8IEJsb2NrQWN0aW9uT3ZlcnJpZGUpW107XG59O1xudHlwZSBCbG9ja0FjdGlvbk92ZXJyaWRlID0gUHJvcGVydGllc09mPEFjdGlvbk92ZXJyaWRlPiAmIHsgX3R5cGU6IFwiQWN0aW9uT3ZlcnJpZGVcIiB9O1xudHlwZSBCbG9ja0FjdGlvbkdyb3VwT3ZlcnJpZGUgPSBQcm9wZXJ0aWVzT2Y8T21pdDxBY3Rpb25Hcm91cE92ZXJyaWRlLCBcImFjdGlvbnNcIj4+ICYge1xuXHRfdHlwZTogXCJBY3Rpb25Hcm91cE92ZXJyaWRlXCI7XG5cdGFjdGlvbnM6IChCbG9ja0FjdGlvbiB8IEJsb2NrQWN0aW9uT3ZlcnJpZGUpW107XG59O1xudHlwZSBDb21tb25DdXN0b21BY3Rpb24gPSB7XG5cdGtleTogc3RyaW5nO1xuXHRlbmFibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXHR2aXNpYmxlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXHRjb21tYW5kOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdGVuYWJsZU9uU2VsZWN0OiBcInNpbmdsZVwiIHwgXCJtdWx0aVwiIHwgdW5kZWZpbmVkO1xuXHRwbGFjZW1lbnQ6IFwiQmVmb3JlXCIgfCBcIkFmdGVyXCIgfCB1bmRlZmluZWQ7XG5cdGFuY2hvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRpc0FJT3BlcmF0aW9uPzogYm9vbGVhbjtcblx0cHJpb3JpdHk/OiBPdmVyZmxvd1Rvb2xiYXJQcmlvcml0eTtcblx0Z3JvdXA/OiBudW1iZXI7XG5cdG92ZXJmbG93R3JvdXA/OiBudW1iZXI7XG5cdF90eXBlOiBcIkFjdGlvblwiIHwgXCJBY3Rpb25PdmVycmlkZVwiO1xufTtcbmZ1bmN0aW9uIHNhZmVHZXRBdHRyaWJ1dGUobm9kZTogRWxlbWVudCwgbmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0cmV0dXJuIG5vZGUuZ2V0QXR0cmlidXRlKG5hbWUpID8/IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBkeW5hbWljIEJvb2xlYW4gdmFsdWUgb2YgYW4gYXR0cmlidXRlLlxuICogQHBhcmFtIG5vZGUgVGhlIG5vZGUgdG8gZ2V0IHRoZSBhdHRyaWJ1dGUgZnJvbVxuICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIGF0dHJpYnV0ZVxuICogQHJldHVybnMgVGhlIEJvb2xlYW4gdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZVxuICovXG5mdW5jdGlvbiBnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUobm9kZTogRWxlbWVudCwgbmFtZTogc3RyaW5nKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG5cdGNvbnN0IGVuYWJsZW1lbnRBdHRyID0gbm9kZS5nZXRBdHRyaWJ1dGUobmFtZSk7XG5cdHN3aXRjaCAoZW5hYmxlbWVudEF0dHIpIHtcblx0XHRjYXNlIG51bGw6XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdGNhc2UgXCJ0cnVlXCI6XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRjYXNlIFwiZmFsc2VcIjpcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRkZWZhdWx0OlxuXHRcdFx0cmV0dXJuIGVuYWJsZW1lbnRBdHRyIGFzIHVua25vd24gYXMgYm9vbGVhbjsgLy8gVG8gbWFuYWdlIGJpbmRpbmcgZXhwcmVzc2lvbnNcblx0fVxufVxuXG4vKipcbiAqIFJlbW92ZXMgYWxsIHByb3BlcnRpZXMgd2l0aCB0aGUgdmFsdWUgb2YgdW5kZWZpbmVkIGZyb20gdGhlIG9iamVjdC5cbiAqIEBwYXJhbSBvYmogVGhlIG9iamVjdCB0byByZW1vdmUgdGhlIHVuZGVmaW5lZCBwcm9wZXJ0aWVzIGZyb21cbiAqL1xuZnVuY3Rpb24gcmVtb3ZlVW5kZWZpbmVkUHJvcGVydGllcyhvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG5cdE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaCgoa2V5KSA9PiB7XG5cdFx0aWYgKG9ialtrZXldID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGRlbGV0ZSBvYmpba2V5XTtcblx0XHR9XG5cdH0pO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGFjdGlvbiBwcm9wZXJ0aWVzIGZyb20gYW4gWE1MIG5vZGUuXG4gKiBAcGFyYW0gYWN0aW9uTm9kZSBUaGUgYWN0aW9uIG5vZGVcbiAqIEByZXR1cm5zIFRoZSBhY3Rpb24gcHJvcGVydGllc1xuICovXG5mdW5jdGlvbiBwYXJzZUFjdGlvbkZyb21FbGVtZW50KGFjdGlvbk5vZGU6IEVsZW1lbnQpOiBCbG9ja0FjdGlvbiB8IEJsb2NrQWN0aW9uT3ZlcnJpZGUge1xuXHRjb25zdCBjb21tb25Qcm9wZXJ0aWVzID0gZ2V0Q29tbW9uQ3VzdG9tQWN0aW9uUHJvcGVydGllcyhhY3Rpb25Ob2RlKTtcblx0aWYgKGFjdGlvbk5vZGUubG9jYWxOYW1lID09PSBcIkFjdGlvblwiKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHRleHQ6IGFjdGlvbk5vZGUuZ2V0QXR0cmlidXRlKFwidGV4dFwiKSA/PyBjb21tb25Qcm9wZXJ0aWVzLmtleSxcblx0XHRcdHByZXNzOiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwicHJlc3NcIiksXG5cdFx0XHRyZXF1aXJlc1NlbGVjdGlvbjogYWN0aW9uTm9kZS5nZXRBdHRyaWJ1dGUoXCJyZXF1aXJlc1NlbGVjdGlvblwiKSA9PT0gXCJ0cnVlXCIsXG5cdFx0XHQuLi5jb21tb25Qcm9wZXJ0aWVzXG5cdFx0fSBhcyBCbG9ja0FjdGlvbjtcblx0fVxuXHRyZXR1cm4ge1xuXHRcdGVuYWJsZUF1dG9TY3JvbGw6IGdldER5bmFtaWNCb29sZWFuVmFsdWVPZkF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcImVuYWJsZUF1dG9TY3JvbGxcIiksXG5cdFx0bmF2aWdhdGVUb0luc3RhbmNlOiBnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJuYXZpZ2F0ZVRvSW5zdGFuY2VcIiksXG5cdFx0ZGVmYXVsdFZhbHVlc0Z1bmN0aW9uOiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiZGVmYXVsdFZhbHVlc0Z1bmN0aW9uXCIpLFxuXHRcdC4uLmNvbW1vblByb3BlcnRpZXNcblx0fSBhcyBCbG9ja0FjdGlvbk92ZXJyaWRlO1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgY29tbW9uIGN1c3RvbSBwcm9wZXJ0aWVzIG9mIHRoZSBhY3Rpb24gZnJvbSB0aGUgWE1MIG5vZGUuXG4gKiBAcGFyYW0gYWN0aW9uTm9kZSBUaGUgYWN0aW9uIGdyb3VwIG5vZGVcbiAqIEByZXR1cm5zIFRoZSBjb2x1bW4gcHJvcGVydGllcyBmb3IgdGhlIGdpdmVuIG5vZGVcbiAqL1xuZnVuY3Rpb24gZ2V0Q29tbW9uQ3VzdG9tQWN0aW9uUHJvcGVydGllcyhhY3Rpb25Ob2RlOiBFbGVtZW50KTogQ29tbW9uQ3VzdG9tQWN0aW9uIHtcblx0Y29uc3QgYWN0aW9uOiBDb21tb25DdXN0b21BY3Rpb24gPSB7XG5cdFx0a2V5OiBhY3Rpb25Ob2RlLmdldEF0dHJpYnV0ZShcImtleVwiKSEucmVwbGFjZShcIklubGluZVhNTF9cIiwgXCJcIiksXG5cdFx0ZW5hYmxlZDogZ2V0RHluYW1pY0Jvb2xlYW5WYWx1ZU9mQXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiZW5hYmxlZFwiKSxcblx0XHR2aXNpYmxlOiBnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJ2aXNpYmxlXCIpLFxuXHRcdGNvbW1hbmQ6IHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJjb21tYW5kXCIpLFxuXHRcdGVuYWJsZU9uU2VsZWN0OiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiZW5hYmxlT25TZWxlY3RcIikgYXMgXCJzaW5nbGVcIiB8IFwibXVsdGlcIiB8IHVuZGVmaW5lZCxcblx0XHRwbGFjZW1lbnQ6IHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJwbGFjZW1lbnRcIikgYXMgXCJCZWZvcmVcIiB8IFwiQWZ0ZXJcIiB8IHVuZGVmaW5lZCxcblx0XHRhbmNob3I6IHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJhbmNob3JcIiksXG5cdFx0X3R5cGU6IGFjdGlvbk5vZGUubG9jYWxOYW1lID09PSBcIkFjdGlvblwiID8gXCJBY3Rpb25cIiA6IFwiQWN0aW9uT3ZlcnJpZGVcIlxuXHR9O1xuXHRpZiAoYWN0aW9uTm9kZT8uZ2V0QXR0cmlidXRlKFwiaXNBSU9wZXJhdGlvblwiKSkge1xuXHRcdGFjdGlvbltcImlzQUlPcGVyYXRpb25cIl0gPSBnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJpc0FJT3BlcmF0aW9uXCIpO1xuXHR9XG5cblx0aWYgKGFjdGlvbk5vZGU/LmdldEF0dHJpYnV0ZShcInByaW9yaXR5XCIpKSB7XG5cdFx0YWN0aW9uW1wicHJpb3JpdHlcIl0gPSBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwicHJpb3JpdHlcIikgYXMgT3ZlcmZsb3dUb29sYmFyUHJpb3JpdHk7XG5cdH1cblxuXHRpZiAoYWN0aW9uTm9kZT8uZ2V0QXR0cmlidXRlKFwiZ3JvdXBcIikpIHtcblx0XHRhY3Rpb25bXCJncm91cFwiXSA9IE51bWJlci5wYXJzZUludChzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiZ3JvdXBcIikgPz8gXCJcIiwgMTApO1xuXHR9XG5cblx0aWYgKGFjdGlvbk5vZGU/LmdldEF0dHJpYnV0ZShcIm92ZXJmbG93R3JvdXBcIikpIHtcblx0XHRhY3Rpb25bXCJvdmVyZmxvd0dyb3VwXCJdID0gTnVtYmVyLnBhcnNlSW50KHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJvdmVyZmxvd0dyb3VwXCIpID8/IFwiXCIsIDEwKTtcblx0fVxuXG5cdHJldHVybiBhY3Rpb247XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBhY3Rpb25zIGFuZCBhY3Rpb24gZ3JvdXBzIGZyb20gdGhlIFhNTCBub2RlLlxuICogQHBhcmFtIGFjdGlvbk5vZGVcbiAqIEBwYXJhbSBhZ2dyZWdhdGlvbk9iamVjdFxuICogQHJldHVybnMgVGhlIGFjdGlvbiBvciBhY3Rpb24gZ3JvdXAgcHJvcGVydGllcyBmb3IgdGhlIGdpdmVuIG5vZGVcbiAqL1xuZnVuY3Rpb24gc2V0Q3VzdG9tQWN0aW9uR3JvdXBQcm9wZXJ0aWVzKFxuXHRhY3Rpb25Ob2RlOiBFbGVtZW50LFxuXHRhZ2dyZWdhdGlvbk9iamVjdDogQWN0aW9uIHwgQWN0aW9uT3ZlcnJpZGUgfCBBY3Rpb25Hcm91cCB8IEFjdGlvbkdyb3VwT3ZlcnJpZGVcbik6IEJsb2NrQWN0aW9uIHwgQmxvY2tBY3Rpb25Hcm91cCB8IEJsb2NrQWN0aW9uT3ZlcnJpZGUgfCBCbG9ja0FjdGlvbkdyb3VwT3ZlcnJpZGUge1xuXHRpZiAoW1wiQWN0aW9uR3JvdXBcIiwgXCJBY3Rpb25Hcm91cE92ZXJyaWRlXCJdLmluY2x1ZGVzKGFjdGlvbk5vZGUubG9jYWxOYW1lKSkge1xuXHRcdGNvbnN0IGNvbW1vblByb3BlcnRpZXMgPSBnZXRDb21tb25DdXN0b21BY3Rpb25zR3JvdXBQcm9wZXJ0aWVzKGFjdGlvbk5vZGUsIGFnZ3JlZ2F0aW9uT2JqZWN0IGFzIEFjdGlvbkdyb3VwIHwgQWN0aW9uR3JvdXBPdmVycmlkZSk7XG5cdFx0aWYgKGFjdGlvbk5vZGUubG9jYWxOYW1lID09PSBcIkFjdGlvbkdyb3VwXCIpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHRleHQ6IGFjdGlvbk5vZGUuZ2V0QXR0cmlidXRlKFwidGV4dFwiKSA/PyBjb21tb25Qcm9wZXJ0aWVzLmtleSxcblx0XHRcdFx0ZGVmYXVsdEFjdGlvbjogc2FmZUdldEF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcImRlZmF1bHRBY3Rpb25cIiksXG5cdFx0XHRcdC4uLmNvbW1vblByb3BlcnRpZXNcblx0XHRcdH0gYXMgQmxvY2tBY3Rpb25Hcm91cDtcblx0XHR9XG5cdFx0cmV0dXJuIGNvbW1vblByb3BlcnRpZXMgYXMgQmxvY2tBY3Rpb25Hcm91cE92ZXJyaWRlO1xuXHR9XG5cblx0Ly9BY3Rpb24gb3IgQWN0aW9uT3ZlcnJpZGVcblx0cmV0dXJuIHBhcnNlQWN0aW9uRnJvbUVsZW1lbnQoYWN0aW9uTm9kZSk7XG59XG5cbmNvbnN0IHNldEN1c3RvbU1hc3NFZGl0UHJvcGVydGllcyA9IGZ1bmN0aW9uIChlbGVtZW50OiBFbGVtZW50KTogQmxvY2tNYXNzRWRpdCB7XG5cdHJldHVybiB7XG5cdFx0a2V5OiBcImNvbmZpZ3VyYXRpb25cIixcblx0XHRjdXN0b21Db250ZW50OiBlbGVtZW50LmNoaWxkcmVuWzBdPy5vdXRlckhUTUwsXG5cdFx0dmlzaWJsZUZpZWxkczogZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJ2aXNpYmxlRmllbGRzXCIpPy5zcGxpdChcIixcIiksXG5cdFx0aWdub3JlZEZpZWxkczogZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJpZ25vcmVkRmllbGRzXCIpPy5zcGxpdChcIixcIiksXG5cdFx0b3BlcmF0aW9uR3JvdXBpbmdNb2RlOiAoZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJvcGVyYXRpb25Hcm91cGluZ01vZGVcIikgPz8gdW5kZWZpbmVkKSBhcyBcIkNoYW5nZVNldFwiIHwgXCJJc29sYXRlZFwiIHwgdW5kZWZpbmVkXG5cdH07XG59O1xuXG4vKipcbiAqIFBhcnNlcyB0aGUgcXVpY2tWYXJpYW50U2VsZWN0aW9uIGZyb20gdGhlIFhNTCBub2RlLlxuICogQHBhcmFtIHF1aWNrVmFyaWFudFNlbGVjdGlvbiBUaGUgWE1MIG5vZGUgY29udGFpbmluZyB0aGUgcXVpY2tWYXJpYW50U2VsZWN0aW9uXG4gKiBAcmV0dXJucyBUaGUgUXVpY2tWYXJpYW50U2VsZWN0aW9uIGZvciB0aGUgZ2l2ZW4gbm9kZVxuICovXG5jb25zdCBzZXRRdWlja1ZhcmlhbnRTZWxlY3Rpb24gPSBmdW5jdGlvbiAocXVpY2tWYXJpYW50U2VsZWN0aW9uOiBFbGVtZW50KTogQmxvY2tRdWlja1ZhcmlhbnRTZWxlY3Rpb24ge1xuXHRyZXR1cm4ge1xuXHRcdGtleTogXCJxdWlja0ZpbHRlcnNcIixcblx0XHRwYXRoczogcXVpY2tWYXJpYW50U2VsZWN0aW9uLmdldEF0dHJpYnV0ZShcInBhdGhzXCIpPy5zcGxpdChcIixcIiksXG5cdFx0c2hvd0NvdW50czogcXVpY2tWYXJpYW50U2VsZWN0aW9uLmdldEF0dHJpYnV0ZShcInNob3dDb3VudHNcIikgPT09IFwidHJ1ZVwiXG5cdH07XG59O1xuXG5jb25zdCBzZXRDdXN0b21BY3Rpb25PdmVyZmxvd0dyb3VwUHJvcGVydGllcyA9IGZ1bmN0aW9uIChvdmVyRmxvd0dyb3VwOiBFbGVtZW50KTogQmxvY2tPdmVyZmxvd0dyb3VwIHtcblx0cmV0dXJuIHtcblx0XHRrZXk6IG92ZXJGbG93R3JvdXAuZ2V0QXR0cmlidXRlKFwia2V5XCIpIS5yZXBsYWNlKFwiSW5saW5lWE1MX1wiLCBcIlwiKSxcblx0XHRvdmVyZmxvd0dyb3VwOiBOdW1iZXIucGFyc2VJbnQob3ZlckZsb3dHcm91cC5nZXRBdHRyaWJ1dGUoXCJvdmVyZmxvd0dyb3VwXCIpIGFzIHN0cmluZywgMTApLFxuXHRcdHNob3dTZXBhcmF0b3I6IG92ZXJGbG93R3JvdXAuZ2V0QXR0cmlidXRlKFwic2hvd1NlcGFyYXRvclwiKSA9PT0gXCJ0cnVlXCJcblx0fTtcbn07XG5cbi8qKlxuICogUGFyc2VzIHRoZSBjb21tb24gY3VzdG9tIHByb3BlcnRpZXMgb2YgdGhlIGFjdGlvbiBncm91cHMgZnJvbSB0aGUgWE1MIG5vZGUuXG4gKiBAcGFyYW0gYWN0aW9uTm9kZSBUaGUgYWN0aW9uIGdyb3VwIG5vZGVcbiAqIEBwYXJhbSBhZ2dyZWdhdGlvbk9iamVjdCBUaGUgYWdncmVnYXRpb24gb2JqZWN0XG4gKiBAcmV0dXJucyBUaGUgY29sdW1uIHByb3BlcnRpZXMgZm9yIHRoZSBnaXZlbiBub2RlXG4gKi9cbmZ1bmN0aW9uIGdldENvbW1vbkN1c3RvbUFjdGlvbnNHcm91cFByb3BlcnRpZXMoXG5cdGFjdGlvbk5vZGU6IEVsZW1lbnQsXG5cdGFnZ3JlZ2F0aW9uT2JqZWN0OiBBY3Rpb25Hcm91cCB8IEFjdGlvbkdyb3VwT3ZlcnJpZGVcbik6IHtcblx0a2V5OiBzdHJpbmc7XG5cdGFjdGlvbnM6IChCbG9ja0FjdGlvbiB8IEJsb2NrQWN0aW9uT3ZlcnJpZGUpW107XG5cdGFuY2hvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRwbGFjZW1lbnQ6IFwiQmVmb3JlXCIgfCBcIkFmdGVyXCIgfCB1bmRlZmluZWQ7XG5cdF90eXBlOiBcIkFjdGlvbkdyb3VwXCIgfCBcIkFjdGlvbkdyb3VwT3ZlcnJpZGVcIjtcbn0ge1xuXHRjb25zdCBhY3Rpb25zSW5NZW51ID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KGFjdGlvbk5vZGUuY2hpbGRyZW4pLm1hcCgoc3ViQWN0aW9uOiBFbGVtZW50KSA9PiB7XG5cdFx0cmV0dXJuIHBhcnNlQWN0aW9uRnJvbUVsZW1lbnQoc3ViQWN0aW9uKTtcblx0fSk7XG5cdGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSA9IGFnZ3JlZ2F0aW9uT2JqZWN0LmtleS5yZXBsYWNlKFwiSW5saW5lWE1MX1wiLCBcIlwiKTtcblx0YWN0aW9uTm9kZS5zZXRBdHRyaWJ1dGUoXCJrZXlcIiwgYWdncmVnYXRpb25PYmplY3Qua2V5KTtcblx0cmV0dXJuIHtcblx0XHRrZXk6IGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSxcblx0XHRhY3Rpb25zOiBhY3Rpb25zSW5NZW51LFxuXHRcdGFuY2hvcjogc2FmZUdldEF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcImFuY2hvclwiKSxcblx0XHRwbGFjZW1lbnQ6IHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJwbGFjZW1lbnRcIikgYXMgXCJCZWZvcmVcIiB8IFwiQWZ0ZXJcIiB8IHVuZGVmaW5lZCxcblx0XHRfdHlwZTogYWN0aW9uTm9kZS5sb2NhbE5hbWUgPT09IFwiQWN0aW9uR3JvdXBcIiA/IFwiQWN0aW9uR3JvdXBcIiA6IFwiQWN0aW9uR3JvdXBPdmVycmlkZVwiXG5cdH07XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBjb21tb24gY3VzdG9tIHByb3BlcnRpZXMgb2YgdGhlIGNvbHVtbnMgZnJvbSB0aGUgWE1MIG5vZGUuXG4gKiBAcGFyYW0gY2hpbGRDb2x1bW4gVGhlIGNvbHVtbiBub2RlXG4gKiBAcGFyYW0gYWdncmVnYXRpb25PYmplY3QgVGhlIGFnZ3JlZ2F0aW9uIG9iamVjdFxuICogQHJldHVybnMgVGhlIGNvbHVtbiBwcm9wZXJ0aWVzIGZvciB0aGUgZ2l2ZW4gbm9kZVxuICovXG5mdW5jdGlvbiBnZXRDb21tb25DdXN0b21Db2x1bW5zUHJvcGVydGllcyhcblx0Y2hpbGRDb2x1bW46IEVsZW1lbnQsXG5cdGFnZ3JlZ2F0aW9uT2JqZWN0OiBCbG9ja0NvbHVtbiB8IEJsb2NrQ29sdW1uT3ZlcnJpZGVcbik6IHtcblx0a2V5OiBzdHJpbmc7XG5cdHdpZHRoOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXHRpbXBvcnRhbmNlOiBJbXBvcnRhbmNlIHwgdW5kZWZpbmVkO1xuXHRob3Jpem9udGFsQWxpZ246IEhvcml6b250YWxBbGlnbiB8IHVuZGVmaW5lZDtcblx0YXZhaWxhYmlsaXR5OiBBdmFpbGFiaWxpdHlUeXBlIHwgdW5kZWZpbmVkO1xuXHRwbGFjZW1lbnQ6IFwiQmVmb3JlXCIgfCBcIkFmdGVyXCIgfCB1bmRlZmluZWQ7XG5cdGFuY2hvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRleHBvcnRTZXR0aW5nczogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10gfCBib29sZWFuIHwgb2JqZWN0PiB8IHVuZGVmaW5lZCB8IG51bGw7XG5cdGRpc2FibGVFeHBvcnQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59IHtcblx0YWdncmVnYXRpb25PYmplY3Qua2V5ID0gYWdncmVnYXRpb25PYmplY3Qua2V5IS5yZXBsYWNlKFwiSW5saW5lWE1MX1wiLCBcIlwiKTtcblx0Y2hpbGRDb2x1bW4uc2V0QXR0cmlidXRlKFwia2V5XCIsIGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSk7XG5cdHJldHVybiB7XG5cdFx0a2V5OiBhZ2dyZWdhdGlvbk9iamVjdC5rZXksXG5cdFx0d2lkdGg6IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwid2lkdGhcIiksXG5cdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI6IGNoaWxkQ29sdW1uLmdldEF0dHJpYnV0ZShcIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyXCIpXG5cdFx0XHQ/IGNoaWxkQ29sdW1uLmdldEF0dHJpYnV0ZShcIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyXCIpID09PSBcInRydWVcIlxuXHRcdFx0OiB1bmRlZmluZWQsXG5cdFx0aW1wb3J0YW5jZTogc2FmZUdldEF0dHJpYnV0ZShjaGlsZENvbHVtbiwgXCJpbXBvcnRhbmNlXCIpIGFzIEltcG9ydGFuY2UgfCB1bmRlZmluZWQsXG5cdFx0aG9yaXpvbnRhbEFsaWduOiBzYWZlR2V0QXR0cmlidXRlKGNoaWxkQ29sdW1uLCBcImhvcml6b250YWxBbGlnblwiKSBhcyBIb3Jpem9udGFsQWxpZ24gfCB1bmRlZmluZWQsXG5cdFx0YXZhaWxhYmlsaXR5OiBzYWZlR2V0QXR0cmlidXRlKGNoaWxkQ29sdW1uLCBcImF2YWlsYWJpbGl0eVwiKSBhcyBBdmFpbGFiaWxpdHlUeXBlIHwgdW5kZWZpbmVkLFxuXHRcdHBsYWNlbWVudDogKHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwicGxhY2VtZW50XCIpIHx8IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwicG9zaXRpb25QbGFjZW1lbnRcIikpIGFzXG5cdFx0XHR8IFwiQmVmb3JlXCJcblx0XHRcdHwgXCJBZnRlclwiXG5cdFx0XHR8IHVuZGVmaW5lZCwgLy8gcG9zaXRpb25QbGFjZW1lbnQgaXMga2VwdCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcblx0XHRhbmNob3I6IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwiYW5jaG9yXCIpIHx8IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwicG9zaXRpb25BbmNob3JcIiksIC8vIHBvc2l0aW9uQW5jaG9yIGlzIGtlcHQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG5cdFx0ZGlzYWJsZUV4cG9ydDogY2hpbGRDb2x1bW4uZ2V0QXR0cmlidXRlKFwiZGlzYWJsZUV4cG9ydFwiKSA/IGNoaWxkQ29sdW1uLmdldEF0dHJpYnV0ZShcImRpc2FibGVFeHBvcnRcIikgPT09IFwidHJ1ZVwiIDogdW5kZWZpbmVkLFxuXHRcdGV4cG9ydFNldHRpbmdzOiBwYXJzZUV4cG9ydFNldHRpbmdzKGNoaWxkQ29sdW1uKVxuXHR9O1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgY3VzdG9tIGNvbHVtbnMgZnJvbSB0aGUgWE1MIG5vZGUuXG4gKiBAcGFyYW0gY2hpbGRDb2x1bW5cbiAqIEBwYXJhbSBhZ2dyZWdhdGlvbk9iamVjdFxuICogQHJldHVybnMgVGhlIGNvbHVtbiBwcm9wZXJ0aWVzIGZvciB0aGUgZ2l2ZW4gbm9kZVxuICovXG5mdW5jdGlvbiBzZXRDdXN0b21Db2x1bW5Qcm9wZXJ0aWVzKFxuXHRjaGlsZENvbHVtbjogRWxlbWVudCxcblx0YWdncmVnYXRpb25PYmplY3Q6IEJsb2NrQ29sdW1uIHwgQmxvY2tDb2x1bW5PdmVycmlkZVxuKTogQmxvY2tDb2x1bW4gfCBCbG9ja0NvbHVtbk92ZXJyaWRlIHtcblx0YWdncmVnYXRpb25PYmplY3Qua2V5ID0gYWdncmVnYXRpb25PYmplY3Qua2V5IS5yZXBsYWNlKFwiSW5saW5lWE1MX1wiLCBcIlwiKTtcblx0Y2hpbGRDb2x1bW4uc2V0QXR0cmlidXRlKFwia2V5XCIsIGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSk7XG5cdGlmIChjaGlsZENvbHVtbi5sb2NhbE5hbWUgPT09IFwiQ29sdW1uXCIpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0Li4uZ2V0Q29tbW9uQ3VzdG9tQ29sdW1uc1Byb3BlcnRpZXMoY2hpbGRDb2x1bW4sIGFnZ3JlZ2F0aW9uT2JqZWN0KSxcblx0XHRcdGhlYWRlcjogc2FmZUdldEF0dHJpYnV0ZShjaGlsZENvbHVtbiwgXCJoZWFkZXJcIiksXG5cdFx0XHR0b29sdGlwOiBzYWZlR2V0QXR0cmlidXRlKGNoaWxkQ29sdW1uLCBcInRvb2x0aXBcIiksXG5cdFx0XHR0ZW1wbGF0ZTogZ2V0Q29sdW1uVGVtcGxhdGUoY2hpbGRDb2x1bW4pLFxuXHRcdFx0cHJvcGVydGllczogc2FmZUdldEF0dHJpYnV0ZShjaGlsZENvbHVtbiwgXCJwcm9wZXJ0aWVzXCIpPy5zcGxpdChcIixcIiksXG5cdFx0XHRyZXF1aXJlZDogY2hpbGRDb2x1bW4uZ2V0QXR0cmlidXRlKFwicmVxdWlyZWRcIikgPyBjaGlsZENvbHVtbi5nZXRBdHRyaWJ1dGUoXCJyZXF1aXJlZFwiKSA9PT0gXCJ0cnVlXCIgOiB1bmRlZmluZWQsXG5cdFx0XHRfdHlwZTogY2hpbGRDb2x1bW4ubG9jYWxOYW1lXG5cdFx0fTtcblx0fVxuXHRyZXR1cm4ge1xuXHRcdC4uLmdldENvbW1vbkN1c3RvbUNvbHVtbnNQcm9wZXJ0aWVzKGNoaWxkQ29sdW1uLCBhZ2dyZWdhdGlvbk9iamVjdCksXG5cdFx0X3R5cGU6IFwiQ29sdW1uT3ZlcnJpZGVcIlxuXHR9O1xufVxuXG5jb25zdCBwYXJzZUV4cG9ydFNldHRpbmdzID0gKGVsZW1lbnQ6IEVsZW1lbnQpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXSB8IGJvb2xlYW4gfCBvYmplY3Q+IHwgdW5kZWZpbmVkID0+IHtcblx0Y29uc3QgZXhwb3J0U2V0dGluZ3MgPSBwYXJzZVNpbXBsZUFnZ3JlZ2F0aW9uKGVsZW1lbnQsIFwiZXhwb3J0U2V0dGluZ3NcIik7XG5cdGlmICghZXhwb3J0U2V0dGluZ3MpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdHJldHVybiB7XG5cdFx0dGVtcGxhdGU6IGV4cG9ydFNldHRpbmdzLnRlbXBsYXRlLFxuXHRcdHdyYXA6IGV4cG9ydFNldHRpbmdzLndyYXAgPT09IFwidHJ1ZVwiLFxuXHRcdHR5cGU6IGV4cG9ydFNldHRpbmdzLnR5cGUsXG5cdFx0cHJvcGVydHk6IGV4cG9ydFNldHRpbmdzLnByb3BlcnR5Py5zcGxpdChcIixcIiksXG5cdFx0d2lkdGg6IGV4cG9ydFNldHRpbmdzLndpZHRoLFxuXHRcdHRleHRBbGlnbjogZXhwb3J0U2V0dGluZ3MudGV4dEFsaWduLFxuXHRcdGxhYmVsOiBleHBvcnRTZXR0aW5ncy5sYWJlbCxcblx0XHR0cnVlVmFsdWU6IGV4cG9ydFNldHRpbmdzLnRydWVWYWx1ZSxcblx0XHRmYWxzZVZhbHVlOiBleHBvcnRTZXR0aW5ncy5mYWxzZVZhbHVlLFxuXHRcdHZhbHVlTWFwOiBleHBvcnRTZXR0aW5ncy52YWx1ZU1hcFxuXHR9O1xufTtcblxuY29uc3QgZ2V0Q29sdW1uVGVtcGxhdGUgPSAoZWxlbWVudDogRWxlbWVudCk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG5cdGxldCBhZ2dyZWdhdGlvbiA9IGdldEFnZ3JlZ2F0aW9uKGVsZW1lbnQsIFwidGVtcGxhdGVcIik7XG5cdGlmICghYWdncmVnYXRpb24pIHtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IGNoaWxkID0gZWxlbWVudC5jaGlsZHJlbi5pdGVtKGkpO1xuXHRcdFx0aWYgKGNoaWxkICYmICFjaGlsZC5ub2RlTmFtZS5lbmRzV2l0aChcImV4cG9ydFNldHRpbmdzXCIpKSB7XG5cdFx0XHRcdGFnZ3JlZ2F0aW9uID0gY2hpbGQ7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRyZXR1cm4gYWdncmVnYXRpb24/Lm91dGVySFRNTCA/PyBlbGVtZW50LmdldEF0dHJpYnV0ZShcInRlbXBsYXRlXCIpID8/IHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IHBhcnNlU2ltcGxlQWdncmVnYXRpb24gPSAoZWxlbWVudDogRWxlbWVudCwgYWdncmVnYXRpb25OYW1lOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkID0+IHtcblx0Y29uc3QgYWdncmVnYXRpb24gPSBnZXRBZ2dyZWdhdGlvbihlbGVtZW50LCBhZ2dyZWdhdGlvbk5hbWUpO1xuXHRjb25zdCBjaGlsZCA9IGFnZ3JlZ2F0aW9uPy5jaGlsZHJlblswXTtcblx0Y29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cdGlmICghY2hpbGQpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdGZvciAoY29uc3QgbmFtZSBvZiBjaGlsZC5nZXRBdHRyaWJ1dGVOYW1lcygpKSB7XG5cdFx0Y29uc3QgdmFsdWUgPSBjaGlsZC5nZXRBdHRyaWJ1dGUobmFtZSk7XG5cdFx0aWYgKHZhbHVlKSB7XG5cdFx0XHRyZXN1bHRbbmFtZV0gPSB2YWx1ZTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHJlc3VsdDtcbn07XG5cbmNvbnN0IGdldEFnZ3JlZ2F0aW9uID0gKGVsZW1lbnQ6IEVsZW1lbnQsIGFnZ3JlZ2F0aW9uTmFtZTogc3RyaW5nKTogRWxlbWVudCB8IHVuZGVmaW5lZCA9PiB7XG5cdGxldCBhZ2dyZWdhdGlvbjogRWxlbWVudCB8IHVuZGVmaW5lZDtcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtZW50LmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG5cdFx0Y29uc3QgY2hpbGQgPSBlbGVtZW50LmNoaWxkcmVuLml0ZW0oaSk7XG5cdFx0aWYgKGNoaWxkPy5ub2RlTmFtZS5lbmRzV2l0aChhZ2dyZWdhdGlvbk5hbWUpID09PSB0cnVlKSB7XG5cdFx0XHRhZ2dyZWdhdGlvbiA9IGNoaWxkO1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBhZ2dyZWdhdGlvbjtcbn07XG5cbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgdXNlZCB0byBjcmVhdGUgYSB0YWJsZSBiYXNlZCBvbiB0aGUgbWV0YWRhdGEgcHJvdmlkZWQgYnkgT0RhdGEgVjQuXG4gKiA8YnI+XG4gKiBVc3VhbGx5LCBhIExpbmVJdGVtLCBQcmVzZW50YXRpb25WYXJpYW50LCBvciBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50IGFubm90YXRpb24gaXMgZXhwZWN0ZWQsIGJ1dCB0aGUgVGFibGUgYnVpbGRpbmcgYmxvY2sgY2FuIGFsc28gYmUgdXNlZCB0byBkaXNwbGF5IGFuIEVudGl0eVNldC5cbiAqIDxicj5cbiAqIElmIGEgUHJlc2VudGF0aW9uVmFyaWFudCBpcyBzcGVjaWZpZWQsIHRoZW4gaXQgbXVzdCBoYXZlIFVJLkxpbmVJdGVtIGFzIHRoZSBmaXJzdCBwcm9wZXJ0eSBvZiB0aGUgVmlzdWFsaXphdGlvbnMuXG4gKiA8YnI+XG4gKiBJZiBhIFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQgaXMgc3BlY2lmaWVkLCB0aGVuIGl0IG11c3QgY29udGFpbiBhIHZhbGlkIFByZXNlbnRhdGlvblZhcmlhbnQgdGhhdCBhbHNvIGhhcyBhIFVJLkxpbmVJdGVtIGFzIHRoZSBmaXJzdCBwcm9wZXJ0eSBvZiB0aGUgVmlzdWFsaXphdGlvbnMuXG4gKlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqIDxwcmU+XG4gKiAmbHQ7bWFjcm9zOlRhYmxlIGlkPVwiTXlUYWJsZVwiIG1ldGFQYXRoPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtXCIgLyZndDtcbiAqIDwvcHJlPlxuICoge0BsaW5rIGRlbW86c2FwL2ZlL2NvcmUvZnBtRXhwbG9yZXIvaW5kZXguaHRtbCMvYnVpbGRpbmdCbG9ja3MvdGFibGUvdGFibGVEZWZhdWx0IE92ZXJ2aWV3IG9mIFRhYmxlIEJ1aWxkaW5nIEJsb2Nrc31cbiAqIEBtaXhlcyBzYXAuZmUubWFjcm9zLnRhYmxlLlRhYmxlQVBJXG4gKiBAYXVnbWVudHMgc2FwLmZlLm1hY3Jvcy5NYWNyb0FQSVxuICogQHB1YmxpY1xuICovXG5AZGVmaW5lQnVpbGRpbmdCbG9jayh7XG5cdG5hbWU6IFwiVGFibGVcIixcblx0bmFtZXNwYWNlOiBcInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIixcblx0cHVibGljTmFtZXNwYWNlOiBcInNhcC5mZS5tYWNyb3NcIixcblx0cmV0dXJuVHlwZXM6IFtcInNhcC5mZS5tYWNyb3MudGFibGUuVGFibGVBUElcIl1cbn0pXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUYWJsZUJsb2NrIGV4dGVuZHMgQnVpbGRpbmdCbG9ja1RlbXBsYXRpbmdCYXNlIHtcblx0Ly8gICoqKioqKioqKioqKioqKiBQdWJsaWMgJiBSZXF1aXJlZCBBdHRyaWJ1dGVzICoqKioqKioqKioqKioqKioqKioqXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSByZWxhdGl2ZSBwYXRoIHRvIGEgTGluZUl0ZW0sIFByZXNlbnRhdGlvblZhcmlhbnQgb3IgU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudCBpbiB0aGUgbWV0YW1vZGVsLCBiYXNlZCBvbiB0aGUgY3VycmVudCBjb250ZXh0UGF0aC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInNhcC51aS5tb2RlbC5Db250ZXh0XCIsXG5cdFx0dW5kZXJseWluZ1R5cGU6IFwic3RyaW5nXCIsXG5cdFx0ZXhwZWN0ZWRUeXBlczogW1wiRW50aXR5U2V0XCIsIFwiRW50aXR5VHlwZVwiLCBcIlNpbmdsZXRvblwiLCBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiXSxcblx0XHRleHBlY3RlZEFubm90YXRpb25zOiBbXG5cdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtXCIsXG5cdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlByZXNlbnRhdGlvblZhcmlhbnRcIixcblx0XHRcdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFwiXG5cdFx0XSxcblx0XHRpc1B1YmxpYzogdHJ1ZSxcblx0XHRyZXF1aXJlZDogdHJ1ZVxuXHR9KVxuXHRtZXRhUGF0aCE6IENvbnRleHQ7XG5cblx0Ly8gICoqKioqKioqKioqKioqKiBQdWJsaWMgQXR0cmlidXRlcyAqKioqKioqKioqKioqKioqKioqKlxuXHQvKipcblx0ICogQW4gZXhwcmVzc2lvbiB0aGF0IGFsbG93cyB5b3UgdG8gY29udHJvbCB0aGUgJ2J1c3knIHN0YXRlIG9mIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlLCBiaW5kYWJsZTogdHJ1ZSB9KVxuXHRidXN5PzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgcGF0aCBvZiB0aGUgY29udGV4dCB1c2VkIGluIHRoZSBjdXJyZW50IHBhZ2Ugb3IgYmxvY2suXG5cdCAqIFRoaXMgc2V0dGluZyBpcyBkZWZpbmVkIGJ5IHRoZSBmcmFtZXdvcmsuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzYXAudWkubW9kZWwuQ29udGV4dFwiLFxuXHRcdHVuZGVybHlpbmdUeXBlOiBcInN0cmluZ1wiLFxuXHRcdGV4cGVjdGVkVHlwZXM6IFtcIkVudGl0eVNldFwiLCBcIkVudGl0eVR5cGVcIiwgXCJTaW5nbGV0b25cIiwgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIl0sXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0Y29udGV4dFBhdGg/OiBDb250ZXh0O1xuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHRhYmxlIGFkYXB0cyB0byB0aGUgY29uZGVuc2VkIGxheW91dC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHB1YmxpYyByZWFkb25seSBjb25kZW5zZWRUYWJsZUxheW91dD86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIHdoZXRoZXIgdGhlIHRhYmxlIGNhbiBiZSBvcGVuZWQgaW4gZnVsbHNjcmVlbiBtb2RlIG9yIG5vdC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHB1YmxpYyByZWFkb25seSBlbmFibGVGdWxsU2NyZWVuPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGRhdGEgY29waWVkIHRvIHRoZSBjb21wdXRlZCBjb2x1bW5zIGlzIHNlbnQgdG8gdGhlIGJhY2sgZW5kLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHJpdmF0ZSByZWFkb25seSBlbmFibGVQYXN0aW5nT2ZDb21wdXRlZFByb3BlcnRpZXM/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIENsZWFyIEFsbCBidXR0b24gaXMgZW5hYmxlZCBieSBkZWZhdWx0LlxuXHQgKiBUbyBlbmFibGUgdGhlIENsZWFyIEFsbCBidXR0b24gYnkgZGVmYXVsdCwgeW91IG11c3Qgc2V0IHRoaXMgcHJvcGVydHkgdG8gZmFsc2UuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IGVuYWJsZVNlbGVjdEFsbD86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIHRoZSBleHBvcnQgZnVuY3Rpb25hbGl0eSBvZiB0aGUgdGFibGUgaXMgZW5hYmxlZCBvciBub3QuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwdWJsaWMgcmVhZG9ubHkgZW5hYmxlRXhwb3J0PzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogQ29uZmlndXJlcyB0aGUgZmlsZSBuYW1lIG9mIGV4cG9ydGVkIHRhYmxlLlxuXHQgKiBJdCdzIGxpbWl0ZWQgdG8gMzEgY2hhcmFjdGVycy4gSWYgdGhlIG5hbWUgaXMgbG9uZ2VyLCBpdCB3aWxsIGJlIHRydW5jYXRlZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHVibGljIHJlYWRvbmx5IGV4cG9ydEZpbGVOYW1lPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBDb25maWd1cmVzIHRoZSBzaGVldCBuYW1lIG9mIGV4cG9ydGVkIHRhYmxlLlxuXHQgKiBJdCdzIGxpbWl0ZWQgdG8gMzEgY2hhcmFjdGVycy4gSWYgdGhlIG5hbWUgaXMgbG9uZ2VyLCBpdCB3aWxsIGJlIHRydW5jYXRlZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHVibGljIHJlYWRvbmx5IGV4cG9ydFNoZWV0TmFtZT86IHN0cmluZztcblxuXHQvKipcblx0ICogTWF4aW11bSBhbGxvd2VkIG51bWJlciBvZiByZWNvcmRzIHRvIGJlIGV4cG9ydGVkIGluIG9uZSByZXF1ZXN0LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImludFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IGV4cG9ydFJlcXVlc3RTaXplPzogbnVtYmVyO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiByb3dzIHRoYXQgY2FuIGJlIHNlbGVjdGVkIGF0IG9uY2UgaW4gdGhlIHRhYmxlLlxuXHQgKiBUaGlzIHByb3BlcnR5IGRvZXMgbm90IGFwcGx5IHRvIHJlc3BvbnNpdmUgdGFibGVzLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImludFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGlvbkxpbWl0PzogbnVtYmVyO1xuXG5cdC8qKlxuXHQgKiBOdW1iZXIgb2YgY29sdW1ucyB0aGF0IGFyZSBmaXhlZCBvbiB0aGUgbGVmdC4gT25seSBjb2x1bW5zIHdoaWNoIGFyZSBub3QgZml4ZWQgY2FuIGJlIHNjcm9sbGVkIGhvcml6b250YWxseS5cblx0ICpcblx0ICogVGhpcyBwcm9wZXJ0eSBpcyBub3QgcmVsZXZhbnQgZm9yIHJlc3BvbnNpdmUgdGFibGVzXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiaW50XCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgZnJvemVuQ29sdW1uQ291bnQ/OiBudW1iZXI7XG5cblx0LyoqXG5cdCAqIERldGVybWluZXMgd2hldGhlciB0aGUgbnVtYmVyIG9mIGZpeGVkIGNvbHVtbnMgY2FuIGJlIGNvbmZpZ3VyZWQgaW4gdGhlIENvbHVtbiBTZXR0aW5ncyBkaWFsb2cuXG5cdCAqXG5cdCAqIFRoaXMgcHJvcGVydHkgZG9lc24ndCBhcHBseSBmb3IgcmVzcG9uc2l2ZSB0YWJsZXNcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgZGlzYWJsZUNvbHVtbkZyZWV6ZT86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIEluZGljYXRlcyBpZiB0aGUgY29sdW1uIGhlYWRlciBzaG91bGQgYmUgYSBwYXJ0IG9mIHRoZSB3aWR0aCBjYWxjdWxhdGlvbi5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgd2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIGhvdyB0aGUgdGFibGUgaGFuZGxlcyB0aGUgdmlzaWJsZSByb3dzLiBEb2VzIG5vdCBhcHBseSB0byBSZXNwb25zaXZlIHRhYmxlcy5cblx0ICpcblx0ICogQWxsb3dlZCB2YWx1ZXMgYXJlIGBBdXRvYCwgYEZpeGVkYCwgYW5kIGBJbnRlcmFjdGl2ZWAuPGJyLz5cblx0ICogLSBJZiBzZXQgdG8gYEZpeGVkYCwgdGhlIHRhYmxlIGFsd2F5cyBoYXMgYXMgbWFueSByb3dzIGFzIGRlZmluZWQgaW4gdGhlIHJvd0NvdW50IHByb3BlcnR5Ljxici8+XG5cdCAqIC0gSWYgc2V0IHRvIGBBdXRvYCwgdGhlIG51bWJlciBvZiByb3dzIGlzIGNoYW5nZWQgYnkgdGhlIHRhYmxlIGF1dG9tYXRpY2FsbHkuIEl0IHdpbGwgdGhlbiBhZGp1c3QgaXRzIHJvdyBjb3VudCB0byB0aGUgc3BhY2UgaXQgaXMgYWxsb3dlZCB0byBjb3ZlciAobGltaXRlZCBieSB0aGUgc3Vycm91bmRpbmcgY29udGFpbmVyKSBidXQgaXQgY2Fubm90IGhhdmUgbGVzcyB0aGFuIGRlZmluZWQgaW4gdGhlIGByb3dDb3VudGAgcHJvcGVydHkuPGJyLz5cblx0ICogLSBJZiBzZXQgdG8gYEludGVyYWN0aXZlYCB0aGUgdGFibGUgY2FuIGhhdmUgYXMgbWFueSByb3dzIGFzIGRlZmluZWQgaW4gdGhlIHJvd0NvdW50IHByb3BlcnR5LiBUaGlzIG51bWJlciBvZiByb3dzIGNhbiBiZSBtb2RpZmllZCBieSBkcmFnZ2luZyB0aGUgcmVzaXplciBhdmFpbGFibGUgaW4gdGhpcyBtb2RlLjxici8+XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIsIGFsbG93ZWRWYWx1ZXM6IFtcIkF1dG9cIiwgXCJGaXhlZFwiLCBcIkludGVyYWN0aXZlXCJdLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IHJvd0NvdW50TW9kZT86IHN0cmluZztcblxuXHQvKipcblx0ICogTnVtYmVyIG9mIHJvd3MgdG8gYmUgZGlzcGxheWVkIGluIHRoZSB0YWJsZS4gRG9lcyBub3QgYXBwbHkgdG8gcmVzcG9uc2l2ZSB0YWJsZXMuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiaW50XCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgcm93Q291bnQ/OiBudW1iZXI7XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIHRoZSBwYXN0ZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSB0YWJsZSBpcyBlbmFibGVkIG9yIG5vdC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgZW5hYmxlUGFzdGU/OiBib29sZWFuIHwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIHRoZSBjb3B5IGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHRhYmxlIGlzIGRpc2FibGVkIG9yIG5vdC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdGRpc2FibGVDb3B5VG9DbGlwYm9hcmQ/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIGhvdyBtYW55IGFkZGl0aW9uYWwgZGF0YSByZWNvcmRzIGFyZSByZXF1ZXN0ZWQgZnJvbSB0aGUgYmFjay1lbmQgc3lzdGVtIHdoZW4gdGhlIHVzZXIgc2Nyb2xscyB2ZXJ0aWNhbGx5IGluIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJpbnRcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0c2Nyb2xsVGhyZXNob2xkPzogbnVtYmVyO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBudW1iZXIgb2YgcmVjb3JkcyB0byBiZSBpbml0aWFsbHkgcmVxdWVzdGVkIGZyb20gdGhlIGJhY2sgZW5kLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImludFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHR0aHJlc2hvbGQ/OiBudW1iZXI7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIGxheW91dCBvcHRpb25zIG9mIHRoZSB0YWJsZSBwb3BpbnMuIE9ubHkgYXBwbGllcyB0byByZXNwb25zaXZlIHRhYmxlcy5cblx0ICpcblx0ICogQWxsb3dlZCB2YWx1ZXMgYXJlIGBCbG9ja2AsIGBHcmlkTGFyZ2VgLCBhbmQgYEdyaWRTbWFsbGAuPGJyLz5cblx0ICogLSBgQmxvY2tgOiBTZXRzIGEgYmxvY2sgbGF5b3V0IGZvciByZW5kZXJpbmcgdGhlIHRhYmxlIHBvcGlucy4gVGhlIGVsZW1lbnRzIGluc2lkZSB0aGUgcG9waW4gY29udGFpbmVyIGFyZSByZW5kZXJlZCBvbmUgYmVsb3cgdGhlIG90aGVyLjxici8+XG5cdCAqIC0gYEdyaWRMYXJnZWA6IFNldHMgYSBncmlkIGxheW91dCBmb3IgcmVuZGVyaW5nIHRoZSB0YWJsZSBwb3BpbnMuIFRoZSBncmlkIHdpZHRoIGZvciBlYWNoIHRhYmxlIHBvcGluIGlzIGNvbXBhcmF0aXZlbHkgbGFyZ2VyIHRoYW4gR3JpZFNtYWxsLCBzbyB0aGlzIGxheW91dCBhbGxvd3MgbGVzcyBjb250ZW50IHRvIGJlIHJlbmRlcmVkIGluIGEgc2luZ2xlIHBvcGluIHJvdy48YnIvPlxuXHQgKiAtIGBHcmlkU21hbGxgOiBTZXRzIGEgZ3JpZCBsYXlvdXQgZm9yIHJlbmRlcmluZyB0aGUgdGFibGUgcG9waW5zLiBUaGUgZ3JpZCB3aWR0aCBmb3IgZWFjaCB0YWJsZSBwb3BpbiBpcyBzbWFsbCwgc28gdGhpcyBsYXlvdXQgYWxsb3dzIG1vcmUgY29udGVudCB0byBiZSByZW5kZXJlZCBpbiBhIHNpbmdsZSBwb3BpbiByb3cuPGJyLz5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgYWxsb3dlZFZhbHVlczogW1wiQmxvY2tcIiwgXCJHcmlkTGFyZ2VcIiwgXCJHcmlkU21hbGxcIl0sIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgcG9waW5MYXlvdXQ/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIElEIG9mIHRoZSBGaWx0ZXJCYXIgYnVpbGRpbmcgYmxvY2sgYXNzb2NpYXRlZCB3aXRoIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUsIGlzQXNzb2NpYXRpb246IHRydWUgfSlcblx0ZmlsdGVyQmFyPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBTcGVjaWZpZXMgdGhlIGhlYWRlciB0ZXh0IHRoYXQgaXMgc2hvd24gaW4gdGhlIHRhYmxlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRoZWFkZXI/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIFwiYXJpYS1sZXZlbFwiIG9mIHRoZSB0YWJsZSBoZWFkZXJcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic2FwLnVpLmNvcmUuVGl0bGVMZXZlbFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRoZWFkZXJMZXZlbD86IFRpdGxlTGV2ZWw7XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIHRoZSBoZWFkZXIgdGV4dCBzaG91bGQgYmUgc2hvd24gb3Igbm90LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0aGVhZGVyVmlzaWJsZT86IGJvb2xlYW47XG5cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0aWQhOiBzdHJpbmc7XG5cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0Y29udGVudElkPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBBZGRpdGlvbm5hbCBTZWxlY3Rpb25WYXJpYW50IHRvIGJlIGFwcGxpZWQgb24gdGhlIHRhYmxlIGNvbnRlbnQuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic2FwLnVpLm1vZGVsLkNvbnRleHRcIixcblx0XHR1bmRlcmx5aW5nVHlwZTogXCJzdHJpbmdcIixcblx0XHRleHBlY3RlZFR5cGVzOiBbXCJFbnRpdHlTZXRcIiwgXCJFbnRpdHlUeXBlXCIsIFwiU2luZ2xldG9uXCIsIFwiTmF2aWdhdGlvblByb3BlcnR5XCJdLFxuXHRcdGV4cGVjdGVkQW5ub3RhdGlvbnM6IFtcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlNlbGVjdGlvblZhcmlhbnRcIl0sXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0YXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnRQYXRoPzogQ29udGV4dDtcblxuXHQvKipcblx0ICogRGVmaW5lcyB3aGV0aGVyIHRvIGRpc3BsYXkgdGhlIHNlYXJjaCBhY3Rpb24uXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRpc1NlYXJjaGFibGU/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyB3aGljaCBvcHRpb25zIHNob3VsZCBiZSBlbmFibGVkIGZvciB0aGUgdGFibGUgcGVyc29uYWxpemF0aW9uIGRpYWxvZy5cblx0ICpcblx0ICogSWYgaXQgaXMgc2V0IHRvIGB0cnVlYCwgYWxsIHBvc3NpYmxlIG9wdGlvbnMgZm9yIHRoaXMga2luZCBvZiB0YWJsZSBhcmUgZW5hYmxlZC48YnIvPlxuXHQgKiBJZiBpdCBpcyBzZXQgdG8gYGZhbHNlYCwgcGVyc29uYWxpemF0aW9uIGlzIGRpc2FibGVkLjxici8+XG5cdCAqIDxici8+XG5cdCAqIFlvdSBjYW4gYWxzbyBwcm92aWRlIGEgbW9yZSBncmFudWxhciBjb250cm9sIGZvciB0aGUgcGVyc29uYWxpemF0aW9uIGJ5IHByb3ZpZGluZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IHdpdGggdGhlIG9wdGlvbnMgeW91IHdhbnQgdG8gYmUgYXZhaWxhYmxlLjxici8+XG5cdCAqIEF2YWlsYWJsZSBvcHRpb25zIGFyZTo8YnIvPlxuXHQgKiAtIFNvcnQ8YnIvPlxuXHQgKiAtIENvbHVtbjxici8+XG5cdCAqIC0gRmlsdGVyPGJyLz5cblx0ICogLSBHcm91cDxici8+XG5cdCAqIDxici8+XG5cdCAqIFRoZSBHcm91cCBvcHRpb24gaXMgb25seSBhcHBsaWNhYmxlIHRvIGFuYWx5dGljYWwgdGFibGVzIGFuZCByZXNwb25zaXZlIHRhYmxlcy48YnIvPlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwZXJzb25hbGl6YXRpb24/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIEFuIGV4cHJlc3Npb24gdGhhdCBhbGxvd3MgeW91IHRvIGNvbnRyb2wgdGhlICdyZWFkLW9ubHknIHN0YXRlIG9mIHRoZSB0YWJsZS5cblx0ICpcblx0ICogSWYgeW91IGRvIG5vdCBzZXQgYW55IGV4cHJlc3Npb24sIFNBUCBGaW9yaSBlbGVtZW50cyBob29rcyBpbnRvIHRoZSBzdGFuZGFyZCBsaWZlY3ljbGUgdG8gZGV0ZXJtaW5lIHRoZSBjdXJyZW50IHN0YXRlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cmVhZE9ubHk/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSB0eXBlIG9mIHRhYmxlIHRoYXQgd2lsbCBiZSB1c2VkIGJ5IHRoZSBidWlsZGluZyBibG9jayB0byByZW5kZXIgdGhlIGRhdGEuXG5cdCAqXG5cdCAqIEFsbG93ZWQgdmFsdWVzIGFyZSBgR3JpZFRhYmxlYCwgYFJlc3BvbnNpdmVUYWJsZWAgYW5kIGBBbmFseXRpY2FsVGFibGVgLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBpc1B1YmxpYzogdHJ1ZSwgYWxsb3dlZFZhbHVlczogW1wiR3JpZFRhYmxlXCIsIFwiUmVzcG9uc2l2ZVRhYmxlXCIsIFwiQW5hbHl0aWNhbFRhYmxlXCJdIH0pXG5cdHJlYWRvbmx5IHR5cGU/OiBUYWJsZVR5cGU7XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyB3aGV0aGVyIHRoZSB0YWJsZSBpcyBkaXNwbGF5ZWQgd2l0aCBjb25kZW5zZWQgbGF5b3V0ICh0cnVlL2ZhbHNlKS4gVGhlIGRlZmF1bHQgc2V0dGluZyBpcyBgZmFsc2VgLlxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHVzZUNvbmRlbnNlZExheW91dD86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIHNlbGVjdGlvbiBtb2RlIHRvIGJlIHVzZWQgYnkgdGhlIHRhYmxlLlxuXHQgKlxuXHQgKiBBbGxvd2VkIHZhbHVlcyBhcmUgYE5vbmVgLCBgU2luZ2xlYCwgYEZvcmNlU2luZ2xlYCwgYE11bHRpYCwgYEZvcmNlTXVsdGlgIG9yIGBBdXRvYC5cblx0ICogSWYgc2V0IHRvICdTaW5nbGUnLCAnTXVsdGknIG9yICdBdXRvJywgU0FQIEZpb3JpIGVsZW1lbnRzIGhvb2tzIGludG8gdGhlIHN0YW5kYXJkIGxpZmVjeWNsZSB0byBkZXRlcm1pbmUgdGhlIGNvbnNpc3RlbnQgc2VsZWN0aW9uIG1vZGUuXG5cdCAqIElmIHNldCB0byAnRm9yY2VTaW5nbGUnIG9yICdGb3JjZU11bHRpJyB5b3VyIGNob2ljZSB3aWxsIGJlIHJlc3BlY3RlZCBidXQgdGhpcyBtaWdodCBub3QgcmVzcGVjdCB0aGUgRmlvcmkgZ3VpZGVsaW5lcy5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUsIGFsbG93ZWRWYWx1ZXM6IFtcIk5vbmVcIiwgXCJTaW5nbGVcIiwgXCJNdWx0aVwiLCBcIkF1dG9cIiwgXCJGb3JjZU11bHRpXCIsIFwiRm9yY2VTaW5nbGVcIl0gfSlcblx0cHJpdmF0ZSByZWFkb25seSBzZWxlY3Rpb25Nb2RlPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyB0aGUga2luZCBvZiB2YXJpYW50IG1hbmFnZW1lbnQgdGhhdCBzaG91bGQgYmUgZW5hYmxlZCBmb3IgdGhlIHRhYmxlLlxuXHQgKlxuXHQgKiBBbGxvd2VkIHZhbHVlIGlzIGBDb250cm9sYC48YnIvPlxuXHQgKiBJZiBzZXQgd2l0aCB2YWx1ZSBgQ29udHJvbGAsIGEgdmFyaWFudCBtYW5hZ2VtZW50IGNvbnRyb2wgaXMgc2VlbiB3aXRoaW4gdGhlIHRhYmxlIGFuZCB0aGUgdGFibGUgaXMgbGlua2VkIHRvIHRoaXMuPGJyLz5cblx0ICogSWYgbm90IHNldCB3aXRoIGFueSB2YWx1ZSwgY29udHJvbCBsZXZlbCB2YXJpYW50IG1hbmFnZW1lbnQgaXMgbm90IGF2YWlsYWJsZSBmb3IgdGhpcyB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUsIGFsbG93ZWRWYWx1ZXM6IFtcIkNvbnRyb2xcIl0gfSlcblx0dmFyaWFudE1hbmFnZW1lbnQ/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIENvbW1hLXNlcGFyYXRlZCB2YWx1ZSBvZiBmaWVsZHMgdGhhdCBtdXN0IGJlIGlnbm9yZWQgaW4gdGhlIE9EYXRhIG1ldGFkYXRhIGJ5IHRoZSBUYWJsZSBidWlsZGluZyBibG9jay48YnI+XG5cdCAqIFRoZSB0YWJsZSBidWlsZGluZyBibG9jayBpcyBub3QgZ29pbmcgdG8gY3JlYXRlIGJ1aWx0LWluIGNvbHVtbnMgb3Igb2ZmZXIgdGFibGUgcGVyc29uYWxpemF0aW9uIGZvciBjb21tYS1zZXBhcmF0ZWQgdmFsdWUgb2YgZmllbGRzIHRoYXQgYXJlIHByb3ZpZGVkIGluIHRoZSBpZ25vcmVkZmllbGRzLjxicj5cblx0ICogQW55IGNvbHVtbiByZWZlcmVuY2luZyBhbiBpZ25vcmVkIGZpZWxkIGlzIHRvIGJlIHJlbW92ZWQuPGJyPlxuXHQgKiBAc2luY2UgMS4xMjQuMFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRpZ25vcmVkRmllbGRzPzogc3RyaW5nO1xuXG5cdC8vICAqKioqKioqKioqKioqKiogUHJpdmF0ZSBBdHRyaWJ1dGVzICoqKioqKioqKioqKioqKioqKioqXG5cdHByaXZhdGUgX2FwaUlkPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBDaGFuZ2VzIHRoZSBzaXplIG9mIHRoZSBJbGx1c3RyYXRlZE1lc3NhZ2UgaW4gdGhlIHRhYmxlLCBvciByZW1vdmVzIGl0IGNvbXBsZXRlbHkuXG5cdCAqIEFsbG93ZWQgdmFsdWVzIGFyZSBgaWxsdXN0cmF0ZWRNZXNzYWdlLUF1dG9gLCBgaWxsdXN0cmF0ZWRNZXNzYWdlLUJhc2VgLCBgaWxsdXN0cmF0ZWRNZXNzYWdlLURpYWxvZ2AsIGBpbGx1c3RyYXRlZE1lc3NhZ2UtRG90YCwgYGlsbHVzdHJhdGVkTWVzc2FnZS1TY2VuZWAsIGBpbGx1c3RyYXRlZE1lc3NhZ2UtU3BvdGAgb3IgYHRleHRgLlxuXHQgKiBAc2luY2UgMS4xMjkuMFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0YWxsb3dlZFZhbHVlczogW1xuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtQXV0b1wiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtQmFzZVwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtTWVkaXVtXCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1Eb3RcIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLUV4dHJhU21hbGxcIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLVNjZW5lXCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1MYXJnZVwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtU3BvdFwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtU21hbGxcIixcblx0XHRcdFwidGV4dFwiXG5cdFx0XVxuXHR9KVxuXHRtb2RlRm9yTm9EYXRhTWVzc2FnZT86IHN0cmluZztcblxuXHQvLyAgKioqKioqKioqKioqKioqIFByaXZhdGUgQXR0cmlidXRlcyAqKioqKioqKioqKioqKioqKioqKlxuXHRwcml2YXRlIHJlYWRvbmx5IGNvbGxlY3Rpb25FbnRpdHk6IEVudGl0eVNldCB8IE5hdmlnYXRpb25Qcm9wZXJ0eTtcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgaGVhZGVyIHN0eWxlIG9mIHRoZSB0YWJsZSBoZWFkZXJcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic2FwLnVpLmNvcmUuVGl0bGVMZXZlbFwiIH0pXG5cdGhlYWRlclN0eWxlPzogVGl0bGVMZXZlbDtcblxuXHQvKipcblx0ICogU3BlY2lmaWVzIGlmIHRoZSBjb2x1bW4gd2lkdGggaXMgYXV0b21hdGljYWxseSBjYWxjdWxhdGVkLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0ZW5hYmxlQXV0b0NvbHVtbldpZHRoPzogYm9vbGVhbiA9IHRydWU7XG5cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRmaWVsZE1vZGUgPSBcIlwiO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGlzQWxwPzogYm9vbGVhbiA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBPTkxZIEZPUiBSRVNQT05TSVZFIFRBQkxFOiBTZXR0aW5nIHRvIGRlZmluZSB0aGUgY2hlY2tib3ggaW4gdGhlIGNvbHVtbiBoZWFkZXI6IEFsbG93ZWQgdmFsdWVzIGFyZSBgRGVmYXVsdGAgb3IgYENsZWFyQWxsYC4gSWYgc2V0IHRvIGBEZWZhdWx0YCwgdGhlIHNhcC5tLlRhYmxlIGNvbnRyb2wgcmVuZGVycyB0aGUgU2VsZWN0IEFsbCBjaGVja2JveCwgb3RoZXJ3aXNlIHRoZSBEZXNlbGVjdCBBbGwgYnV0dG9uIGlzIHJlbmRlcmVkLlxuXHQgKi9cblx0bXVsdGlTZWxlY3RNb2RlPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBVc2VkIGZvciBiaW5kaW5nIHRoZSB0YWJsZSB0byBhIG5hdmlnYXRpb24gcGF0aC4gT25seSB0aGUgcGF0aCBpcyB1c2VkIGZvciBiaW5kaW5nIHJvd3MuXG5cdCAqL1xuXHRuYXZpZ2F0aW9uUGF0aD86IHN0cmluZztcblxuXHQvKipcblx0ICogVHJ1ZSBpZiB0aGUgdGFibGUgaXMgaW4gYSBMaXN0UmVwb3J0IG11bHRpIHZpZXdcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGluTXVsdGlWaWV3PzogYm9vbGVhbjtcblxuXHR1c2VCYXNpY1NlYXJjaD86IGJvb2xlYW47XG5cblx0dGFibGVEZWZpbml0aW9uOiBUYWJsZVZpc3VhbGl6YXRpb247IC8vIFdlIHJlcXVpcmUgdGFibGVEZWZpbml0aW9uIHRvIGJlIHRoZXJlIGV2ZW4gdGhvdWdoIGl0IGlzIG5vdCBmb3JtYWxseSByZXF1aXJlZFxuXG5cdHRhYmxlRGVmaW5pdGlvbkNvbnRleHQ/OiBDb250ZXh0O1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0dGFiVGl0bGUgPSBcIlwiO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdHZpc2libGU/OiBib29sZWFuO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGRpc3BsYXlTZWdtZW50ZWRCdXR0b24/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBBIHNldCBvZiBvcHRpb25zIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJvYmplY3RcIixcblx0XHR1bmRlcmx5aW5nVHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLlRhYmxlQ3JlYXRpb25PcHRpb25zXCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0dmFsaWRhdGU6IGZ1bmN0aW9uIChjcmVhdGlvbk9wdGlvbnNJbnB1dDogVGFibGVDcmVhdGlvbk9wdGlvbnMpIHtcblx0XHRcdGlmIChcblx0XHRcdFx0Y3JlYXRpb25PcHRpb25zSW5wdXQubmFtZSAmJlxuXHRcdFx0XHQhW1wiTmV3UGFnZVwiLCBcIklubGluZVwiLCBcIklubGluZUNyZWF0aW9uUm93c1wiLCBcIkV4dGVybmFsXCIsIFwiQ3JlYXRpb25EaWFsb2dcIl0uaW5jbHVkZXMoY3JlYXRpb25PcHRpb25zSW5wdXQubmFtZSlcblx0XHRcdCkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEFsbG93ZWQgdmFsdWUgJHtjcmVhdGlvbk9wdGlvbnNJbnB1dC5uYW1lfSBmb3IgY3JlYXRpb25Nb2RlIGRvZXMgbm90IG1hdGNoYCk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBjcmVhdGlvbk9wdGlvbnNJbnB1dDtcblx0XHR9XG5cdH0pXG5cdGNyZWF0aW9uTW9kZTogUHJvcGVydGllc09mPFRhYmxlQ3JlYXRpb25PcHRpb25zPiA9IHt9O1xuXG5cdC8qKlxuXHQgKiBBIHNldCBvZiBvcHRpb25zIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gY29udHJvbCB0aGUgYWdncmVnYXRpb24gYmVoYXZpb3Jcblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJvYmplY3RcIixcblx0XHR1bmRlcmx5aW5nVHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFuYWx5dGljYWxDb25maWd1cmF0aW9uXCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0dmFsaWRhdGU6IGZ1bmN0aW9uIChhbmFseXRpY2FsQ29uZmlndXJhdGlvbjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIHtcblx0XHRcdGlmICh0eXBlb2YgYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24uYWdncmVnYXRpb25PbkxlYWZMZXZlbCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRhbmFseXRpY2FsQ29uZmlndXJhdGlvbi5hZ2dyZWdhdGlvbk9uTGVhZkxldmVsID0gYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24uYWdncmVnYXRpb25PbkxlYWZMZXZlbCA9PT0gXCJ0cnVlXCI7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gYW5hbHl0aWNhbENvbmZpZ3VyYXRpb247XG5cdFx0fVxuXHR9KVxuXHRhbmFseXRpY2FsQ29uZmlndXJhdGlvbjogUHJvcGVydGllc09mPEFuYWx5dGljYWxDb25maWd1cmF0aW9uPiA9IHt9O1xuXG5cdC8qKlxuXHQgKiBBZ2dyZWdhdGUgYWN0aW9ucyBvZiB0aGUgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0FnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uXCIsXG5cdFx0YWx0VHlwZXM6IFtcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uR3JvdXBcIiwgXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvbk92ZXJyaWRlXCIsIFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25Hcm91cE92ZXJyaWRlXCJdLFxuXHRcdGlzUHVibGljOiB0cnVlLFxuXHRcdGhhc1ZpcnR1YWxOb2RlOiB0cnVlLFxuXHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdHByb2Nlc3NBZ2dyZWdhdGlvbnM6IHNldEN1c3RvbUFjdGlvbkdyb3VwUHJvcGVydGllc1xuXHR9KVxuXHRhY3Rpb25zPzogUmVjb3JkPHN0cmluZywgQmxvY2tBY3Rpb24gfCBCbG9ja0FjdGlvbkdyb3VwIHwgQmxvY2tBY3Rpb25PdmVycmlkZSB8IEJsb2NrQWN0aW9uR3JvdXBPdmVycmlkZT47XG5cblx0LyoqXG5cdCAqIEFnZ3JlZ2F0ZSBtYXNzIGVkaXQgb2YgdGhlIHRhYmxlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBZ2dyZWdhdGlvbih7XG5cdFx0dHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLk1hc3NFZGl0XCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0bXVsdGlwbGU6IGZhbHNlLFxuXHRcdHNraXBLZXk6IHRydWUsXG5cdFx0cHJvY2Vzc0FnZ3JlZ2F0aW9uczogc2V0Q3VzdG9tTWFzc0VkaXRQcm9wZXJ0aWVzXG5cdH0pXG5cdG1hc3NFZGl0PzogUmVjb3JkPHN0cmluZywgQmxvY2tNYXNzRWRpdD47XG5cblx0LyoqXG5cdCAqIEFnZ3JlZ2F0ZSBjb2x1bW5zIG9mIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLmZlLm1hY3Jvcy50YWJsZS5Db2x1bW5cIixcblx0XHRhbHRUeXBlczogW1wic2FwLmZlLm1hY3Jvcy50YWJsZS5Db2x1bW5PdmVycmlkZVwiXSxcblx0XHRpc1B1YmxpYzogdHJ1ZSxcblx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRoYXNWaXJ0dWFsTm9kZTogdHJ1ZSxcblx0XHRpc0RlZmF1bHQ6IHRydWUsXG5cdFx0cHJvY2Vzc0FnZ3JlZ2F0aW9uczogc2V0Q3VzdG9tQ29sdW1uUHJvcGVydGllc1xuXHR9KVxuXHRjb2x1bW5zPzogUmVjb3JkPHN0cmluZywgQmxvY2tDb2x1bW4gfCBCbG9ja0NvbHVtbk92ZXJyaWRlPjtcblxuXHQvKipcblx0ICogQWdncmVnYXRlIHF1aWNrVmFyaWFudFNlbGVjdGlvbiBvZiB0aGUgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0FnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuUXVpY2tWYXJpYW50U2VsZWN0aW9uXCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0c2tpcEtleTogdHJ1ZSxcblx0XHRtdWx0aXBsZTogZmFsc2UsXG5cdFx0cHJvY2Vzc0FnZ3JlZ2F0aW9uczogc2V0UXVpY2tWYXJpYW50U2VsZWN0aW9uXG5cdH0pXG5cdHF1aWNrVmFyaWFudFNlbGVjdGlvbj86IFJlY29yZDxzdHJpbmcsIEJsb2NrUXVpY2tWYXJpYW50U2VsZWN0aW9uPjtcblxuXHQvKipcblx0ICogQWdncmVnYXRlIG92ZXJmbG93R3JvdXBzIG9mIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLmZlLm1hY3Jvcy50YWJsZS5PdmVyZmxvd0dyb3VwXCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0bXVsdGlwbGU6IHRydWUsXG5cdFx0aGFzVmlydHVhbE5vZGU6IHRydWUsXG5cdFx0c2tpcEtleTogdHJ1ZSxcblx0XHRyZWFsbHlTa2lwS2V5OiB0cnVlLFxuXHRcdHByb2Nlc3NBZ2dyZWdhdGlvbnM6IHNldEN1c3RvbUFjdGlvbk92ZXJmbG93R3JvdXBQcm9wZXJ0aWVzXG5cdH0pXG5cdGFjdGlvbk92ZXJmbG93R3JvdXBzPzogUmVjb3JkPHN0cmluZywgT3ZlcmZsb3dHcm91cD47XG5cblx0Y29udmVydGVkTWV0YWRhdGE6IENvbnZlcnRlZE1ldGFkYXRhO1xuXG5cdGNvbnRleHRPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPExpbmVJdGVtIHwgUHJlc2VudGF0aW9uVmFyaWFudCB8IFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ+O1xuXG5cdC8qKlxuXHQgKiBCZWZvcmUgYSB0YWJsZSByZWJpbmQsIGFuIGV2ZW50IGlzIHRyaWdnZXJlZCB0aGF0IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBiaW5kaW5nLlxuXHQgKlxuXHQgKiBUaGUgZXZlbnQgY29udGFpbnMgYSBwYXJhbWV0ZXIsIGBjb2xsZWN0aW9uQmluZGluZ0luZm9gLCB3aGljaCBpcyBhbiBpbnN0YW5jZSBvZiBgQ29sbGVjdGlvbkJpbmRpbmdJbmZvQVBJYC5cblx0ICogSXQgY2FuIGFsc28gY29udGFpbiBhbiBvcHRpb25hbCBwYXJhbWV0ZXIsIGBxdWlja0ZpbHRlcktleWAsIHdoaWNoIGluZGljYXRlcyB3aGF0IGlzIHRoZSBxdWljayBmaWx0ZXIga2V5IChpZiBhbnkpIGJlaW5nIHByb2Nlc3NlZCBmb3IgdGhlIHRhYmxlLlxuXHQgKiBUaGlzIGFsbG93cyB5b3UgdG8gbWFuaXB1bGF0ZSB0aGUgdGFibGUncyBsaXN0IGJpbmRpbmcuXG5cdCAqIFlvdSBjYW4gdXNlIHRoaXMgZXZlbnQgdG8gYXR0YWNoIGV2ZW50IGhhbmRsZXJzIHRvIHRoZSB0YWJsZSdzIGxpc3QgYmluZGluZy5cblx0ICogWW91IGNhbiB1c2UgdGhpcyBldmVudCB0byBhZGQgc2VsZWN0cywgYW5kIGFkZCBvciByZWFkIHRoZSBzb3J0ZXJzIGFuZCBmaWx0ZXJzLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tFdmVudCgpXG5cdHByaXZhdGUgcmVhZG9ubHkgYmVmb3JlUmViaW5kVGFibGU/OiBFdmVudEhhbmRsZXI8XG5cdFx0VUk1RXZlbnQ8eyBjb2xsZWN0aW9uQmluZGluZ0luZm86IENvbGxlY3Rpb25CaW5kaW5nSW5mb0FQSTsgcXVpY2tGaWx0ZXJLZXk/OiBzdHJpbmcgfSwgVGFibGVBUEk+XG5cdD47XG5cblx0LyoqXG5cdCAqIEFuIGV2ZW50IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIGNob29zZXMgYSByb3cuIFRoZSBldmVudCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB3aGljaCByb3cgaXMgY2hvc2VuLlxuXHQgKlxuXHQgKiBZb3UgY2FuIHNldCB0aGlzIHRvIGhhbmRsZSB0aGUgbmF2aWdhdGlvbiBtYW51YWxseS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrRXZlbnQoKVxuXHRyb3dQcmVzcz86IEV2ZW50SGFuZGxlcjxVSTVFdmVudDxSb3dBY3Rpb25JdGVtJFByZXNzRXZlbnRQYXJhbWV0ZXJzLCBUYWJsZUFQST4+O1xuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIHJlYWN0IHRvIHRoZSBjaGFuZ2UgZXZlbnQgb2YgdGhlIHRhYmxlJ3MgbGlzdCBiaW5kaW5nLlxuXHQgKlxuXHQgKiBJbnRlcm5hbCBvbmx5XG5cdCAqL1xuXHRAYmxvY2tFdmVudCgpXG5cdGxpc3RCaW5kaW5nQ2hhbmdlPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIGNhbGxlZCB3aGVuIHRoZSB1c2VyIGNob29zZXMgYW4gb3B0aW9uIG9mIHRoZSBzZWdtZW50ZWQgYnV0dG9uIGluIHRoZSBBTFAgVmlld1xuXHQgKi9cblx0QGJsb2NrRXZlbnQoKVxuXHRzZWdtZW50ZWRCdXR0b25QcmVzcz86IHN0cmluZztcblxuXHRAYmxvY2tFdmVudCgpXG5cdHZhcmlhbnRTYXZlZD86IHN0cmluZztcblxuXHQvKipcblx0ICogQW4gZXZlbnQgdHJpZ2dlcmVkIHdoZW4gdGhlIHNlbGVjdGlvbiBpbiB0aGUgdGFibGUgY2hhbmdlcy5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrRXZlbnQoKVxuXHRwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGlvbkNoYW5nZT86IEV2ZW50SGFuZGxlcjxcblx0XHRVSTVFdmVudDxUYWJsZSRTZWxlY3Rpb25DaGFuZ2VFdmVudFBhcmFtZXRlcnMgJiB7IHNlbGVjdGVkQ29udGV4dDogQ29udGV4dFtdIH0sIFRhYmxlQVBJPlxuXHQ+O1xuXG5cdEBibG9ja0V2ZW50KClcblx0dmFyaWFudFNlbGVjdGVkPzogc3RyaW5nO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRpbml0aWFsTG9hZD86IGJvb2xlYW47XG5cblx0cHJpdmF0ZSByZWFkb25seSBhcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudDtcblxuXHRwcml2YXRlIHJlYWRvbmx5IG1ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWw7XG5cblx0Y29uc3RydWN0b3IocHJvcHM6IFByb3BlcnRpZXNPZjxUYWJsZUJsb2NrPiwgY29udHJvbENvbmZpZ3VyYXRpb246IHVua25vd24sIHRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3M6IFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MpIHtcblx0XHRzdXBlcihwcm9wcywgY29udHJvbENvbmZpZ3VyYXRpb24sIHRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MpO1xuXHRcdGNvbnN0IGNvbnRleHRPYmplY3RQYXRoID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPExpbmVJdGVtIHwgUHJlc2VudGF0aW9uVmFyaWFudCB8IFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ+KFxuXHRcdFx0dGhpcy5tZXRhUGF0aCxcblx0XHRcdHRoaXMuY29udGV4dFBhdGhcblx0XHQpO1xuXHRcdHRoaXMuY29udGV4dE9iamVjdFBhdGggPSBjb250ZXh0T2JqZWN0UGF0aDtcblxuXHRcdHRoaXMudGFibGVEZWZpbml0aW9uID0gVGFibGVCbG9jay5jcmVhdGVUYWJsZURlZmluaXRpb24odGhpcywgdGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyk7XG5cdFx0dGhpcy50YWJsZURlZmluaXRpb25Db250ZXh0ID0gTWFjcm9BUEkuY3JlYXRlQmluZGluZ0NvbnRleHQodGhpcy50YWJsZURlZmluaXRpb24gYXMgb2JqZWN0LCB0ZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzKTtcblxuXHRcdHRoaXMuY29udmVydGVkTWV0YWRhdGEgPSB0aGlzLmNvbnRleHRPYmplY3RQYXRoLmNvbnZlcnRlZFR5cGVzO1xuXHRcdHRoaXMubWV0YU1vZGVsID0gdGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncy5tb2RlbHMubWV0YU1vZGVsO1xuXHRcdHRoaXMuY29sbGVjdGlvbkVudGl0eSA9IHRoaXMuY29udmVydGVkTWV0YWRhdGEucmVzb2x2ZVBhdGgodGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi5jb2xsZWN0aW9uKS50YXJnZXQgYXMgRW50aXR5U2V0O1xuXHRcdHRoaXMuYXBwQ29tcG9uZW50ID0gdGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncy5hcHBDb21wb25lbnQ7XG5cdFx0dGhpcy5zZXRVcElkKCk7XG5cblx0XHR0aGlzLmNyZWF0aW9uTW9kZSA/Pz0ge307XG5cdFx0dGhpcy5jcmVhdGlvbk1vZGUubmFtZSA/Pz0gdGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi5jcmVhdGUubW9kZSBhcyBUYWJsZUNyZWF0aW9uT3B0aW9uc1tcIm5hbWVcIl07XG5cdFx0dGhpcy5jcmVhdGlvbk1vZGUuY3JlYXRlQXRFbmQgPz89ICh0aGlzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmNyZWF0ZSBhcyBDcmVhdGVCZWhhdmlvcikuYXBwZW5kO1xuXHRcdC8vIFNwZWNpYWwgY29kZSBmb3IgcmVhZE9ubHlcblx0XHQvLyByZWFkb25seSA9IGZhbHNlIC0+IEZvcmNlIGVkaXRhYmxlXG5cdFx0Ly8gcmVhZG9ubHkgPSB0cnVlIC0+IEZvcmNlIGRpc3BsYXkgbW9kZVxuXHRcdC8vIHJlYWRvbmx5ID0gdW5kZWZpbmVkIC0+IEJvdW5kIHRvIGVkaXQgZmxvd1xuXHRcdGlmIChcblx0XHRcdHRoaXMucmVhZE9ubHkgPT09IHVuZGVmaW5lZCAmJlxuXHRcdFx0KHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uZGlzcGxheU1vZGUgPT09IHRydWUgfHwgdGhpcy50YWJsZURlZmluaXRpb24uY29udHJvbC5yZWFkT25seSA9PT0gdHJ1ZSlcblx0XHQpIHtcblx0XHRcdHRoaXMucmVhZE9ubHkgPSB0cnVlO1xuXHRcdH1cblxuXHRcdFRhYmxlQVBJLnVwZGF0ZUNvbHVtbnNWaXNpYmlsaXR5KHRoaXMudGFibGVEZWZpbml0aW9uLmNvbnRyb2wuaWdub3JlZEZpZWxkcywgW10sIHRoaXMudGFibGVEZWZpbml0aW9uKTtcblxuXHRcdGxldCB1c2VCYXNpY1NlYXJjaCA9IGZhbHNlO1xuXG5cdFx0Ly8gTm90ZSBmb3IgdGhlICdmaWx0ZXJCYXInIHByb3BlcnR5OlxuXHRcdC8vIDEuIElEIHJlbGF0aXZlIHRvIHRoZSB2aWV3IG9mIHRoZSBUYWJsZS5cblx0XHQvLyAyLiBBYnNvbHV0ZSBJRC5cblx0XHQvLyAzLiBJRCB3b3VsZCBiZSBjb25zaWRlcmVkIGluIGFzc29jaWF0aW9uIHRvIFRhYmxlQVBJJ3MgSUQuXG5cdFx0aWYgKCF0aGlzLmZpbHRlckJhcikge1xuXHRcdFx0Ly8gZmlsdGVyQmFyOiBQdWJsaWMgcHJvcGVydHkgZm9yIGJ1aWxkaW5nIGJsb2Nrc1xuXHRcdFx0Ly8gZmlsdGVyQmFySWQ6IE9ubHkgdXNlZCBhcyBJbnRlcm5hbCBwcml2YXRlIHByb3BlcnR5IGZvciBGRSB0ZW1wbGF0ZXNcblx0XHRcdHRoaXMuZmlsdGVyQmFyID0gZ2VuZXJhdGUoW3RoaXMuY29udGVudElkLCBcIlN0YW5kYXJkQWN0aW9uXCIsIFwiQmFzaWNTZWFyY2hcIl0pO1xuXHRcdFx0dXNlQmFzaWNTZWFyY2ggPSB0cnVlO1xuXHRcdH1cblx0XHQvLyBJbnRlcm5hbCBwcm9wZXJ0aWVzXG5cdFx0dGhpcy51c2VCYXNpY1NlYXJjaCA9IHVzZUJhc2ljU2VhcmNoO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGFubm90YXRpb24gcGF0aCBwb2ludGluZyB0byB0aGUgdmlzdWFsaXphdGlvbiBhbm5vdGF0aW9uIChMaW5lSXRlbSkuXG5cdCAqIEBwYXJhbSBjb250ZXh0T2JqZWN0UGF0aCBUaGUgZGF0YW1vZGVsIG9iamVjdCBwYXRoIGZvciB0aGUgdGFibGVcblx0ICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHQgVGhlIGNvbnZlcnRlciBjb250ZXh0XG5cdCAqIEByZXR1cm5zIFRoZSBhbm5vdGF0aW9uIHBhdGhcblx0ICovXG5cdHN0YXRpYyBnZXRWaXN1YWxpemF0aW9uUGF0aChcblx0XHRjb250ZXh0T2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxMaW5lSXRlbSB8IFByZXNlbnRhdGlvblZhcmlhbnQgfCBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50Pixcblx0XHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD5cblx0KTogc3RyaW5nIHtcblx0XHRjb25zdCBtZXRhUGF0aCA9IGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgoY29udGV4dE9iamVjdFBhdGgpIGFzIHN0cmluZztcblxuXHRcdC8vIGZhbGxiYWNrIHRvIGRlZmF1bHQgTGluZUl0ZW0gaWYgbWV0YXBhdGggaXMgbm90IHNldFxuXHRcdGlmICghbWV0YVBhdGgpIHtcblx0XHRcdExvZy5lcnJvcihgTWlzc2luZyBtZXRhIHBhdGggcGFyYW1ldGVyIGZvciBMaW5lSXRlbWApO1xuXHRcdFx0cmV0dXJuIGBAJHtVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbX1gO1xuXHRcdH1cblxuXHRcdGlmIChpc0Fubm90YXRpb25PZlRlcm08TGluZUl0ZW0+KGNvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCwgVUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW0pKSB7XG5cdFx0XHRyZXR1cm4gbWV0YVBhdGg7IC8vIE1ldGFQYXRoIGlzIGFscmVhZHkgcG9pbnRpbmcgdG8gYSBMaW5lSXRlbVxuXHRcdH1cblx0XHQvL05lZWQgdG8gc3dpdGNoIHRvIHRoZSBjb250ZXh0IHJlbGF0ZWQgdGhlIFBWIG9yIFNQVlxuXHRcdGNvbnN0IHJlc29sdmVkVGFyZ2V0ID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlQW5ub3RhdGlvbihtZXRhUGF0aCk7XG5cblx0XHRsZXQgdmlzdWFsaXphdGlvbnM6IFZpc3VhbGl6YXRpb25BbmRQYXRoW10gPSBbXTtcblx0XHRpZiAoXG5cdFx0XHRpc0Fubm90YXRpb25PZlRlcm08U2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudD4oXG5cdFx0XHRcdGNvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCxcblx0XHRcdFx0VUlBbm5vdGF0aW9uVGVybXMuU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFxuXHRcdFx0KSB8fFxuXHRcdFx0aXNBbm5vdGF0aW9uT2ZUZXJtPFByZXNlbnRhdGlvblZhcmlhbnQ+KGNvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCwgVUlBbm5vdGF0aW9uVGVybXMuUHJlc2VudGF0aW9uVmFyaWFudClcblx0XHQpIHtcblx0XHRcdHZpc3VhbGl6YXRpb25zID0gZ2V0VmlzdWFsaXphdGlvbnNGcm9tQW5ub3RhdGlvbihcblx0XHRcdFx0Y29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LFxuXHRcdFx0XHRtZXRhUGF0aCxcblx0XHRcdFx0cmVzb2x2ZWRUYXJnZXQuY29udmVydGVyQ29udGV4dCxcblx0XHRcdFx0dHJ1ZVxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0TG9nLmVycm9yKGBCYWQgbWV0YXBhdGggcGFyYW1ldGVyIGZvciB0YWJsZSA6ICR7Y29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0IS50ZXJtfWApO1xuXHRcdH1cblxuXHRcdGNvbnN0IGxpbmVJdGVtVml6ID0gdmlzdWFsaXphdGlvbnMuZmluZCgodml6KSA9PiB7XG5cdFx0XHRyZXR1cm4gdml6LnZpc3VhbGl6YXRpb24udGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW07XG5cdFx0fSk7XG5cblx0XHRpZiAobGluZUl0ZW1WaXopIHtcblx0XHRcdHJldHVybiBsaW5lSXRlbVZpei5hbm5vdGF0aW9uUGF0aDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gZmFsbGJhY2sgdG8gZGVmYXVsdCBMaW5lSXRlbSBpZiBhbm5vdGF0aW9uIG1pc3NpbmcgaW4gUFZcblx0XHRcdExvZy5lcnJvcihgQmFkIG1ldGEgcGF0aCBwYXJhbWV0ZXIgZm9yIExpbmVJdGVtOiAke2NvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCEudGVybX1gKTtcblx0XHRcdHJldHVybiBgQCR7VUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW19YDsgLy8gRmFsbGJhY2tcblx0XHR9XG5cdH1cblxuXHRzdGF0aWMgYWRkU2V0dGluZyA9ICh0YXJnZXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkID0+IHtcblx0XHRpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGFyZ2V0W2tleV0gPSB2YWx1ZTtcblx0XHR9XG5cdH07XG5cblx0Z2V0VGFibGVTZXR0aW5ncygpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG5cdFx0Y29uc3QgdGFibGVTZXR0aW5nczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJlbmFibGVFeHBvcnRcIiwgdGhpcy5lbmFibGVFeHBvcnQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImV4cG9ydEZpbGVOYW1lXCIsIHRoaXMuZXhwb3J0RmlsZU5hbWUpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImV4cG9ydFNoZWV0TmFtZVwiLCB0aGlzLmV4cG9ydFNoZWV0TmFtZSk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwicmVhZE9ubHlcIiwgdGhpcy5yZWFkT25seSk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiaWdub3JlZEZpZWxkc1wiLCB0aGlzLmlnbm9yZWRGaWVsZHMpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInNlbGVjdGlvbkxpbWl0XCIsIHRoaXMuc2VsZWN0aW9uTGltaXQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImNvbmRlbnNlZFRhYmxlTGF5b3V0XCIsIHRoaXMuY29uZGVuc2VkVGFibGVMYXlvdXQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImV4cG9ydFJlcXVlc3RTaXplXCIsIHRoaXMuZXhwb3J0UmVxdWVzdFNpemUpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImZyb3plbkNvbHVtbkNvdW50XCIsIHRoaXMuZnJvemVuQ29sdW1uQ291bnQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImRpc2FibGVDb2x1bW5GcmVlemVcIiwgdGhpcy5kaXNhYmxlQ29sdW1uRnJlZXplKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJ3aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlclwiLCB0aGlzLndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJyb3dDb3VudE1vZGVcIiwgdGhpcy5yb3dDb3VudE1vZGUpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInJvd0NvdW50XCIsIHRoaXMucm93Q291bnQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImVuYWJsZUZ1bGxTY3JlZW5cIiwgdGhpcy5lbmFibGVGdWxsU2NyZWVuKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJzZWxlY3RBbGxcIiwgdGhpcy5lbmFibGVTZWxlY3RBbGwpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllc1wiLCB0aGlzLmVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllcyk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZW5hYmxlUGFzdGVcIiwgdGhpcy5lbmFibGVQYXN0ZSk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZGlzYWJsZUNvcHlUb0NsaXBib2FyZFwiLCB0aGlzLmRpc2FibGVDb3B5VG9DbGlwYm9hcmQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInNjcm9sbFRocmVzaG9sZFwiLCB0aGlzLnNjcm9sbFRocmVzaG9sZCk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwidGhyZXNob2xkXCIsIHRoaXMudGhyZXNob2xkKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJwb3BpbkxheW91dFwiLCB0aGlzLnBvcGluTGF5b3V0KTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJzZWxlY3Rpb25Nb2RlXCIsIHRoaXMuc2VsZWN0aW9uTW9kZSk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwidHlwZVwiLCB0aGlzLnR5cGUpO1xuXHRcdGlmICh0aGlzLnF1aWNrVmFyaWFudFNlbGVjdGlvbj8ucXVpY2tGaWx0ZXJzPy5wYXRocz8ubGVuZ3RoKSB7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJxdWlja1ZhcmlhbnRTZWxlY3Rpb25cIiwge1xuXHRcdFx0XHRwYXRoczogdGhpcy5xdWlja1ZhcmlhbnRTZWxlY3Rpb24ucXVpY2tGaWx0ZXJzLnBhdGhzLm1hcCgocGF0aCkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiB7IGFubm90YXRpb25QYXRoOiBwYXRoIH07XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHRzaG93Q291bnRzOiB0aGlzLnF1aWNrVmFyaWFudFNlbGVjdGlvbi5xdWlja0ZpbHRlcnMuc2hvd0NvdW50c1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuY3JlYXRpb25Nb2RlKSB7XG5cdFx0XHRjb25zdCBjcmVhdGlvbk1vZGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoY3JlYXRpb25Nb2RlLCBcIm5hbWVcIiwgdGhpcy5jcmVhdGlvbk1vZGUubmFtZSk7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoY3JlYXRpb25Nb2RlLCBcImNyZWF0aW9uRmllbGRzXCIsIHRoaXMuY3JlYXRpb25Nb2RlLmNyZWF0aW9uRmllbGRzKTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhjcmVhdGlvbk1vZGUsIFwiY3JlYXRlQXRFbmRcIiwgdGhpcy5jcmVhdGlvbk1vZGUuY3JlYXRlQXRFbmQpO1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGNyZWF0aW9uTW9kZSwgXCJpbmxpbmVDcmVhdGlvblJvd3NIaWRkZW5JbkVkaXRNb2RlXCIsIHRoaXMuY3JlYXRpb25Nb2RlLmlubGluZUNyZWF0aW9uUm93c0hpZGRlbkluRWRpdE1vZGUpO1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGNyZWF0aW9uTW9kZSwgXCJvdXRib3VuZFwiLCB0aGlzLmNyZWF0aW9uTW9kZS5vdXRib3VuZCk7XG5cdFx0XHRpZiAoT2JqZWN0LmVudHJpZXMoY3JlYXRpb25Nb2RlKS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdHRhYmxlU2V0dGluZ3NbXCJjcmVhdGlvbk1vZGVcIl0gPSBjcmVhdGlvbk1vZGU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMubWFzc0VkaXQpIHtcblx0XHRcdGNvbnN0IGVuYWJsZU1hc3NFZGl0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGVuYWJsZU1hc3NFZGl0LCBcImN1c3RvbUZyYWdtZW50XCIsIHRoaXMubWFzc0VkaXQuY29uZmlndXJhdGlvbj8uY3VzdG9tQ29udGVudCk7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoZW5hYmxlTWFzc0VkaXQsIFwiZnJvbUlubGluZVwiLCB0cnVlKTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhlbmFibGVNYXNzRWRpdCwgXCJ2aXNpYmxlRmllbGRzXCIsIHRoaXMubWFzc0VkaXQuY29uZmlndXJhdGlvbj8udmlzaWJsZUZpZWxkcz8uam9pbihcIixcIikpO1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGVuYWJsZU1hc3NFZGl0LCBcImlnbm9yZWRGaWVsZHNcIiwgdGhpcy5tYXNzRWRpdC5jb25maWd1cmF0aW9uPy5pZ25vcmVkRmllbGRzPy5qb2luKFwiLFwiKSk7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoZW5hYmxlTWFzc0VkaXQsIFwib3BlcmF0aW9uR3JvdXBpbmdNb2RlXCIsIHRoaXMubWFzc0VkaXQuY29uZmlndXJhdGlvbj8ub3BlcmF0aW9uR3JvdXBpbmdNb2RlKTtcblx0XHRcdHRhYmxlU2V0dGluZ3NbXCJlbmFibGVNYXNzRWRpdFwiXSA9IGVuYWJsZU1hc3NFZGl0O1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmFuYWx5dGljYWxDb25maWd1cmF0aW9uPy5hZ2dyZWdhdGlvbk9uTGVhZkxldmVsID09PSB0cnVlKSB7XG5cdFx0XHRjb25zdCBhbmFseXRpY2FsQ29uZmlndXJhdGlvbjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhhbmFseXRpY2FsQ29uZmlndXJhdGlvbiwgXCJhZ2dyZWdhdGlvbk9uTGVhZkxldmVsXCIsIHRoaXMuYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24uYWdncmVnYXRpb25PbkxlYWZMZXZlbCk7XG5cdFx0XHRpZiAoT2JqZWN0LmVudHJpZXMoYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24pLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0dGFibGVTZXR0aW5nc1tcImFuYWx5dGljYWxDb25maWd1cmF0aW9uXCJdID0gYW5hbHl0aWNhbENvbmZpZ3VyYXRpb247XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0YWJsZVNldHRpbmdzO1xuXHR9XG5cblx0c3RhdGljIGNyZWF0ZVRhYmxlRGVmaW5pdGlvbih0YWJsZTogVGFibGVCbG9jaywgdGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5nczogVGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyk6IFRhYmxlVmlzdWFsaXphdGlvbiB7XG5cdFx0Y29uc3QgaW5pdGlhbENvbnZlcnRlckNvbnRleHQgPSB0YWJsZS5nZXRDb252ZXJ0ZXJDb250ZXh0KFxuXHRcdFx0dGFibGUuY29udGV4dE9iamVjdFBhdGgsXG5cdFx0XHR0YWJsZS5jb250ZXh0UGF0aD8uZ2V0UGF0aCgpLFxuXHRcdFx0dGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5nc1xuXHRcdCk7XG5cdFx0Y29uc3QgdmlzdWFsaXphdGlvblBhdGggPSBUYWJsZUJsb2NrLmdldFZpc3VhbGl6YXRpb25QYXRoKHRhYmxlLmNvbnRleHRPYmplY3RQYXRoLCBpbml0aWFsQ29udmVydGVyQ29udGV4dCk7XG5cblx0XHRjb25zdCB0YWJsZVNldHRpbmdzID0gdGFibGUuZ2V0VGFibGVTZXR0aW5ncygpO1xuXHRcdGNvbnN0IGV4dHJhTWFuaWZlc3RTZXR0aW5nczogVGFibGVNYW5pZmVzdENvbmZpZ3VyYXRpb24gPSB7XG5cdFx0XHRvdmVyZmxvd0dyb3VwczogVGFibGVCbG9jay5jcmVhdGVBY3Rpb25PdmVyZmxvd0dyb3Vwcyh0YWJsZSksXG5cdFx0XHRhY3Rpb25zOiBUYWJsZUJsb2NrLmNyZWF0ZUFjdGlvbnNGcm9tTWFuaWZlc3QodGFibGUpLFxuXHRcdFx0Y29sdW1uczogVGFibGVCbG9jay5jcmVhdGVDb2x1bW5zRm9yTWFuaWZlc3QodGFibGUpLFxuXHRcdFx0dGFibGVTZXR0aW5nc1xuXHRcdH07XG5cblx0XHRjb25zdCBleHRyYVBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRleHRyYVBhcmFtc1t2aXN1YWxpemF0aW9uUGF0aF0gPSBleHRyYU1hbmlmZXN0U2V0dGluZ3M7XG5cdFx0Y29uc3QgY29udmVydGVyQ29udGV4dCA9IHRhYmxlLmdldENvbnZlcnRlckNvbnRleHQoXG5cdFx0XHR0YWJsZS5jb250ZXh0T2JqZWN0UGF0aCxcblx0XHRcdHRhYmxlLmNvbnRleHRQYXRoPy5nZXRQYXRoKCksXG5cdFx0XHR0ZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzLFxuXHRcdFx0ZXh0cmFQYXJhbXNcblx0XHQpO1xuXG5cdFx0bGV0IGFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50OiBTZWxlY3Rpb25WYXJpYW50VHlwZSB8IHVuZGVmaW5lZDtcblx0XHRpZiAodGFibGUuYXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnRQYXRoKSB7XG5cdFx0XHRjb25zdCBzdk9iamVjdFBhdGggPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8U2VsZWN0aW9uVmFyaWFudD4oXG5cdFx0XHRcdHRhYmxlLmFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50UGF0aCxcblx0XHRcdFx0dGFibGUuY29udGV4dFBhdGggYXMgQ29udGV4dFxuXHRcdFx0KTtcblx0XHRcdGFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50ID0gc3ZPYmplY3RQYXRoLnRhcmdldE9iamVjdDtcblx0XHR9XG5cblx0XHRjb25zdCB2aXN1YWxpemF0aW9uRGVmaW5pdGlvbiA9IGdldERhdGFWaXN1YWxpemF0aW9uQ29uZmlndXJhdGlvbihcblx0XHRcdCh0YWJsZS5pbk11bHRpVmlldyAmJiB0YWJsZS5jb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3Rcblx0XHRcdFx0PyBjb252ZXJ0ZXJDb250ZXh0LmdldFJlbGF0aXZlQW5ub3RhdGlvblBhdGgoXG5cdFx0XHRcdFx0XHR0YWJsZS5jb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QuZnVsbHlRdWFsaWZpZWROYW1lLFxuXHRcdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKClcblx0XHRcdFx0ICApXG5cdFx0XHRcdDogZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCh0YWJsZS5jb250ZXh0T2JqZWN0UGF0aCkpIGFzIHN0cmluZyxcblx0XHRcdGNvbnZlcnRlckNvbnRleHQsXG5cdFx0XHR7XG5cdFx0XHRcdGlzQ29uZGVuc2VkVGFibGVMYXlvdXRDb21wbGlhbnQ6IHRhYmxlLnVzZUNvbmRlbnNlZExheW91dCxcblx0XHRcdFx0YXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRcdGlzTWFjcm9Pck11bHRpcGxlVmlldzogdGFibGUuaW5NdWx0aVZpZXcgPz8gdHJ1ZVxuXHRcdFx0fVxuXHRcdCk7XG5cblx0XHQvLyB0YWtlIHRoZSAoZmlyc3QpIFRhYmxlIHZpc3VhbGl6YXRpb25cblx0XHRyZXR1cm4gdmlzdWFsaXphdGlvbkRlZmluaXRpb24udmlzdWFsaXphdGlvbnMuZmluZChcblx0XHRcdCh2aXo6IFRhYmxlVmlzdWFsaXphdGlvbiB8IENoYXJ0VmlzdWFsaXphdGlvbikgPT4gdml6LnR5cGUgPT09IFZpc3VhbGl6YXRpb25UeXBlLlRhYmxlXG5cdFx0KSBhcyBUYWJsZVZpc3VhbGl6YXRpb247XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyB0aGUgbWFuaWZlc3QgYWN0aW9ucyBmb3IgdGhlIHRhYmxlLlxuXHQgKiBAcGFyYW0gdGFibGUgVGhlIHRhYmxlIGJsb2NrXG5cdCAqIEByZXR1cm5zIFRoZSBtYW5pZmVzdCBhY3Rpb25zIGZvciB0aGUgdGFibGVcblx0ICovXG5cdHN0YXRpYyBjcmVhdGVBY3Rpb25zRnJvbU1hbmlmZXN0KHRhYmxlOiBUYWJsZUJsb2NrKTogUmVjb3JkPHN0cmluZywgTWFuaWZlc3RBY3Rpb24+IHtcblx0XHRjb25zdCBhY3Rpb25zU2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIE1hbmlmZXN0QWN0aW9uPiA9IHt9O1xuXHRcdGNvbnN0IGFkZEFjdGlvblRvRXh0cmFNYW5pZmVzdCA9IChhY3Rpb246IEJsb2NrQWN0aW9uIHwgQmxvY2tBY3Rpb25PdmVycmlkZSk6IHZvaWQgPT4ge1xuXHRcdFx0Y29uc3Qga2V5ID0gYWN0aW9uLmtleSE7XG5cdFx0XHRhY3Rpb25zU2V0dGluZ3Nba2V5XSA9IHtcblx0XHRcdFx0cG9zaXRpb246IHtcblx0XHRcdFx0XHRwbGFjZW1lbnQ6IChhY3Rpb24ucGxhY2VtZW50ID8/IFwiQWZ0ZXJcIikgYXMgUGxhY2VtZW50LFxuXHRcdFx0XHRcdGFuY2hvcjogYWN0aW9uLmFuY2hvclxuXHRcdFx0XHR9LFxuXHRcdFx0XHRjb21tYW5kOiBhY3Rpb24uY29tbWFuZCxcblx0XHRcdFx0ZW5hYmxlT25TZWxlY3Q6IGFjdGlvbi5lbmFibGVPblNlbGVjdCxcblx0XHRcdFx0dmlzaWJsZTogYWN0aW9uLnZpc2libGUsXG5cdFx0XHRcdGVuYWJsZWQ6IGFjdGlvbi5lbmFibGVkLFxuXHRcdFx0XHRpc0FJT3BlcmF0aW9uOiBhY3Rpb24uaXNBSU9wZXJhdGlvbixcblx0XHRcdFx0cHJpb3JpdHk6IGFjdGlvbi5wcmlvcml0eSxcblx0XHRcdFx0Z3JvdXA6IGFjdGlvbi5ncm91cCxcblx0XHRcdFx0b3ZlcmZsb3dHcm91cDogYWN0aW9uLm92ZXJmbG93R3JvdXBcblx0XHRcdH07XG5cdFx0XHRpZiAoYWN0aW9uLl90eXBlID09PSBcIkFjdGlvblwiKSB7XG5cdFx0XHRcdGFjdGlvbnNTZXR0aW5nc1trZXldID0ge1xuXHRcdFx0XHRcdC4uLmFjdGlvbnNTZXR0aW5nc1trZXldLFxuXHRcdFx0XHRcdHRleHQ6IGFjdGlvbi50ZXh0LFxuXHRcdFx0XHRcdF9fbm9XcmFwOiB0cnVlLFxuXHRcdFx0XHRcdHByZXNzOiBhY3Rpb24ucHJlc3MsXG5cdFx0XHRcdFx0cmVxdWlyZXNTZWxlY3Rpb246IGFjdGlvbi5yZXF1aXJlc1NlbGVjdGlvblxuXHRcdFx0XHR9O1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBhZnRlckV4ZWN1dGlvbiA9IHtcblx0XHRcdFx0ZW5hYmxlQXV0b1Njcm9sbDogYWN0aW9uW1wiZW5hYmxlQXV0b1Njcm9sbFwiXSxcblx0XHRcdFx0bmF2aWdhdGVUb0luc3RhbmNlOiBhY3Rpb25bXCJuYXZpZ2F0ZVRvSW5zdGFuY2VcIl1cblx0XHRcdH07XG5cdFx0XHRyZW1vdmVVbmRlZmluZWRQcm9wZXJ0aWVzKGFmdGVyRXhlY3V0aW9uKTtcblx0XHRcdGFjdGlvbnNTZXR0aW5nc1trZXldID0ge1xuXHRcdFx0XHQuLi5hY3Rpb25zU2V0dGluZ3Nba2V5XSxcblx0XHRcdFx0YWZ0ZXJFeGVjdXRpb246IE9iamVjdC5lbnRyaWVzKGFmdGVyRXhlY3V0aW9uKS5sZW5ndGggPyBhZnRlckV4ZWN1dGlvbiA6IHVuZGVmaW5lZCxcblx0XHRcdFx0ZGVmYXVsdFZhbHVlc0Z1bmN0aW9uOiBhY3Rpb24uZGVmYXVsdFZhbHVlc0Z1bmN0aW9uXG5cdFx0XHR9O1xuXHRcdH07XG5cdFx0aWYgKHRhYmxlLmFjdGlvbnMpIHtcblx0XHRcdE9iamVjdC52YWx1ZXModGFibGUuYWN0aW9ucykuZm9yRWFjaCgoaXRlbSkgPT4ge1xuXHRcdFx0XHRpZiAoaXRlbS5fdHlwZSA9PT0gXCJBY3Rpb25cIiB8fCBpdGVtLl90eXBlID09PSBcIkFjdGlvbk92ZXJyaWRlXCIpIHtcblx0XHRcdFx0XHRhZGRBY3Rpb25Ub0V4dHJhTWFuaWZlc3QoaXRlbSk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoaXRlbS5fdHlwZSA9PT0gXCJBY3Rpb25Hcm91cFwiIHx8IGl0ZW0uX3R5cGUgPT09IFwiQWN0aW9uR3JvdXBPdmVycmlkZVwiKSB7XG5cdFx0XHRcdFx0Ly8gQWN0aW9uR3JvdXAgb3IgQWN0aW9uR3JvdXBPdmVycmlkZVxuXHRcdFx0XHRcdGNvbnN0IGtleSA9IGl0ZW0ua2V5ITtcblx0XHRcdFx0XHRhY3Rpb25zU2V0dGluZ3Nba2V5XSA9IHtcblx0XHRcdFx0XHRcdHBvc2l0aW9uOiB7XG5cdFx0XHRcdFx0XHRcdHBsYWNlbWVudDogKGl0ZW0ucGxhY2VtZW50ID8/IFwiQWZ0ZXJcIikgYXMgUGxhY2VtZW50LFxuXHRcdFx0XHRcdFx0XHRhbmNob3I6IGl0ZW0uYW5jaG9yXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0bWVudTogaXRlbS5hY3Rpb25zLm1hcCgoYWN0aW9uKSA9PiBhY3Rpb24ua2V5ISlcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdGlmIChpdGVtLl90eXBlID09PSBcIkFjdGlvbkdyb3VwXCIpIHtcblx0XHRcdFx0XHRcdGFjdGlvbnNTZXR0aW5nc1trZXldID0ge1xuXHRcdFx0XHRcdFx0XHQuLi5hY3Rpb25zU2V0dGluZ3Nba2V5XSxcblx0XHRcdFx0XHRcdFx0dGV4dDogaXRlbS50ZXh0LFxuXHRcdFx0XHRcdFx0XHRkZWZhdWx0QWN0aW9uOiBpdGVtLmRlZmF1bHRBY3Rpb24sXG5cdFx0XHRcdFx0XHRcdF9fbm9XcmFwOiB0cnVlXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpdGVtLmFjdGlvbnMuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XG5cdFx0XHRcdFx0XHRhZGRBY3Rpb25Ub0V4dHJhTWFuaWZlc3QoYWN0aW9uKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHJldHVybiBhY3Rpb25zU2V0dGluZ3M7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyB0aGUgbWFuaWZlc3Qgb3ZlcmZsb3dHcm91cHMgZm9yIHRoZSB0YWJsZS5cblx0ICogQHBhcmFtIHRhYmxlIFRoZSB0YWJsZSBibG9ja1xuXHQgKiBAcmV0dXJucyBUaGUgbWFuaWZlc3Qgb3ZlcmZsb3dHcm91cHMgZm9yIHRoZSB0YWJsZVxuXHQgKi9cblx0c3RhdGljIGNyZWF0ZUFjdGlvbk92ZXJmbG93R3JvdXBzKHRhYmxlOiBUYWJsZUJsb2NrKTogT3ZlcmZsb3dHcm91cHNDb25maWd1cmF0aW9uIHtcblx0XHRjb25zdCBvdmVyZmxvd0dyb3Vwc1NldHRpbmdzOiBPdmVyZmxvd0dyb3Vwc0NvbmZpZ3VyYXRpb24gPSB7fTtcblx0XHRpZiAodGFibGUuYWN0aW9uT3ZlcmZsb3dHcm91cHMpIHtcblx0XHRcdE9iamVjdC52YWx1ZXModGFibGUuYWN0aW9uT3ZlcmZsb3dHcm91cHMpLmZvckVhY2goKG92ZXJGbG93R3JvdXApID0+IHtcblx0XHRcdFx0b3ZlcmZsb3dHcm91cHNTZXR0aW5nc1tvdmVyRmxvd0dyb3VwLm92ZXJmbG93R3JvdXBdID0ge1xuXHRcdFx0XHRcdHNob3dTZXBhcmF0b3I6IG92ZXJGbG93R3JvdXAuc2hvd1NlcGFyYXRvclxuXHRcdFx0XHR9O1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG92ZXJmbG93R3JvdXBzU2V0dGluZ3M7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyB0aGUgbWFuaWZlc3QgY29sdW1ucyBmb3IgdGhlIHRhYmxlLlxuXHQgKiBAcGFyYW0gdGFibGUgVGhlIHRhYmxlIGJsb2NrXG5cdCAqIEByZXR1cm5zIFRoZSBtYW5pZmVzdCBjb2x1bW5zIGZvciB0aGUgdGFibGVcblx0ICovXG5cdHN0YXRpYyBjcmVhdGVDb2x1bW5zRm9yTWFuaWZlc3QodGFibGU6IFRhYmxlQmxvY2spOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21EZWZpbmVkVGFibGVDb2x1bW4gfCBDdXN0b21EZWZpbmVkVGFibGVDb2x1bW5Gb3JPdmVycmlkZT4ge1xuXHRcdGNvbnN0IGlzQmxvY2tDb2x1bW4gPSAoYmxvY2s6IEJsb2NrQ29sdW1uIHwgQmxvY2tDb2x1bW5PdmVycmlkZSk6IGJsb2NrIGlzIEJsb2NrQ29sdW1uID0+IHtcblx0XHRcdHJldHVybiBibG9jay5fdHlwZSA9PT0gXCJDb2x1bW5cIjtcblx0XHR9O1xuXG5cdFx0Y29uc3QgY29sdW1uU2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIEN1c3RvbURlZmluZWRUYWJsZUNvbHVtbiB8IEN1c3RvbURlZmluZWRUYWJsZUNvbHVtbkZvck92ZXJyaWRlPiA9IHt9O1xuXG5cdFx0aWYgKHRhYmxlLmNvbHVtbnMpIHtcblx0XHRcdE9iamVjdC52YWx1ZXModGFibGUuY29sdW1ucykuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG5cdFx0XHRcdGxldCBjdXN0b21Db2x1bW5EZWZpbml0aW9uOiBDdXN0b21EZWZpbmVkVGFibGVDb2x1bW4gfCAoQ3VzdG9tRGVmaW5lZFRhYmxlQ29sdW1uRm9yT3ZlcnJpZGUgJiB7IGtleTogc3RyaW5nIH0pO1xuXHRcdFx0XHRpZiAoaXNCbG9ja0NvbHVtbihjb2x1bW4pKSB7XG5cdFx0XHRcdFx0Y3VzdG9tQ29sdW1uRGVmaW5pdGlvbiA9IHtcblx0XHRcdFx0XHRcdGhlYWRlcjogY29sdW1uLmhlYWRlciEsXG5cdFx0XHRcdFx0XHR3aWR0aDogY29sdW1uLndpZHRoLFxuXHRcdFx0XHRcdFx0aW1wb3J0YW5jZTogY29sdW1uLmltcG9ydGFuY2UgYXMgSW1wb3J0YW5jZSxcblx0XHRcdFx0XHRcdGhvcml6b250YWxBbGlnbjogY29sdW1uLmhvcml6b250YWxBbGlnbixcblx0XHRcdFx0XHRcdHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyOiBjb2x1bW4ud2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIsXG5cdFx0XHRcdFx0XHRleHBvcnRTZXR0aW5nczogY29sdW1uLmV4cG9ydFNldHRpbmdzIGFzIEV4cG9ydFNldHRpbmdzLFxuXHRcdFx0XHRcdFx0cHJvcGVydGllczogY29sdW1uLnByb3BlcnRpZXMsXG5cdFx0XHRcdFx0XHR0b29sdGlwOiBjb2x1bW4udG9vbHRpcCxcblx0XHRcdFx0XHRcdHRlbXBsYXRlOiBjb2x1bW4udGVtcGxhdGUhLFxuXHRcdFx0XHRcdFx0YXZhaWxhYmlsaXR5OiBjb2x1bW4uYXZhaWxhYmlsaXR5IGFzIEF2YWlsYWJpbGl0eVR5cGUsXG5cdFx0XHRcdFx0XHRyZXF1aXJlZDogY29sdW1uLnJlcXVpcmVkLFxuXHRcdFx0XHRcdFx0dHlwZTogXCJTbG90XCIsXG5cdFx0XHRcdFx0XHRkaXNhYmxlRXhwb3J0OiBjb2x1bW4uZGlzYWJsZUV4cG9ydFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y3VzdG9tQ29sdW1uRGVmaW5pdGlvbiA9IHtcblx0XHRcdFx0XHRcdGtleTogY29sdW1uLmtleSEsXG5cdFx0XHRcdFx0XHR3aWR0aDogY29sdW1uLndpZHRoLFxuXHRcdFx0XHRcdFx0aW1wb3J0YW5jZTogY29sdW1uLmltcG9ydGFuY2UgYXMgSW1wb3J0YW5jZSxcblx0XHRcdFx0XHRcdGhvcml6b250YWxBbGlnbjogY29sdW1uLmhvcml6b250YWxBbGlnbixcblx0XHRcdFx0XHRcdHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyOiBjb2x1bW4ud2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIsXG5cdFx0XHRcdFx0XHRleHBvcnRTZXR0aW5nczogY29sdW1uLmV4cG9ydFNldHRpbmdzIGFzIEV4cG9ydFNldHRpbmdzLFxuXHRcdFx0XHRcdFx0YXZhaWxhYmlsaXR5OiBjb2x1bW4uYXZhaWxhYmlsaXR5IGFzIEF2YWlsYWJpbGl0eVR5cGUsXG5cdFx0XHRcdFx0XHRkaXNhYmxlRXhwb3J0OiBjb2x1bW4uZGlzYWJsZUV4cG9ydFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBSZW1vdmUgYWxsIHVuZGVmaW5lZCBwcm9wZXJ0aWVzLCBzbyB0aGF0IHRoZXkgZG9uJ3QgZXJhc2Ugd2hhdCBpcyBzZXQgaW4gdGhlIG1hbmlmZXN0XG5cdFx0XHRcdC8vIChuZWNlc3NhcnkgYmVjYXVzZSBtYW5pZmVzdC1iYXNlZCBjb2x1bW5zIGFyZSB0cmFuc2Zvcm1lZCBpbnRvIHNsb3QgY29sdW1ucyBhbmQgd2UgZG9uJ3QgY29weVxuXHRcdFx0XHQvLyBhbGwgdGhlaXIgcHJvcGVydGllcyBpbiB0aGUgWE1MKVxuXHRcdFx0XHRyZW1vdmVVbmRlZmluZWRQcm9wZXJ0aWVzKGN1c3RvbUNvbHVtbkRlZmluaXRpb24pO1xuXHRcdFx0XHRpZiAoaXNCbG9ja0NvbHVtbihjb2x1bW4pICYmIChjb2x1bW4uYW5jaG9yIHx8IGNvbHVtbi5wbGFjZW1lbnQpKSB7XG5cdFx0XHRcdFx0Y3VzdG9tQ29sdW1uRGVmaW5pdGlvbi5wb3NpdGlvbiA9IHtcblx0XHRcdFx0XHRcdGFuY2hvcjogY29sdW1uLmFuY2hvcixcblx0XHRcdFx0XHRcdHBsYWNlbWVudDogKGNvbHVtbi5wbGFjZW1lbnQgPz8gXCJBZnRlclwiKSBhcyBQbGFjZW1lbnRcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29sdW1uU2V0dGluZ3NbY29sdW1uLmtleSFdID0gY3VzdG9tQ29sdW1uRGVmaW5pdGlvbjtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRyZXR1cm4gY29sdW1uU2V0dGluZ3M7XG5cdH1cblxuXHRzZXRVcElkKCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmlkKSB7XG5cdFx0XHQvLyBUaGUgZ2l2ZW4gSUQgc2hhbGwgYmUgYXNzaWduZWQgdG8gdGhlIFRhYmxlQVBJIGFuZCBub3QgdG8gdGhlIE1EQyBUYWJsZVxuXHRcdFx0dGhpcy5fYXBpSWQgPSB0aGlzLmlkO1xuXHRcdFx0Ly8gR2VuZXJhdGUgdGhlIGNvbnRlbnRJZCBiYXNlZCBvbiB0aGUgSUQsIGlmIG5vdCBwcm92aWRlZCAoRlBNIGNhc2UpXG5cdFx0XHR0aGlzLmNvbnRlbnRJZCA/Pz0gdGhpcy5nZXRDb250ZW50SWQodGhpcy5pZCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIFdlIGdlbmVyYXRlIHRoZSBJRCBhbmQgdGhlIGNvbnRlbnRJRC4gRHVlIHRvIGNvbXBhdGliaWxpdHkgcmVhc29ucyB3ZSBrZWVwIGl0IG9uIHRoZSBNREMgVGFibGUgYnV0IHByb3ZpZGUgYXNzaWduXG5cdFx0XHQvLyB0aGUgSUQgd2l0aCBhIDo6VGFibGUgc3VmZml4IHRvIHRoZSBUYWJsZUFQSVxuXHRcdFx0dGhpcy5pZCA9IHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uYXBpSWQ7XG5cdFx0XHR0aGlzLmNvbnRlbnRJZCA9IHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uaWQ7XG5cdFx0XHR0aGlzLl9hcGlJZCA9IHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uYXBpSWQ7XG5cdFx0fVxuXHR9XG5cblx0X2dldEVudGl0eVR5cGUoKTogRW50aXR5VHlwZSB7XG5cdFx0cmV0dXJuICh0aGlzLmNvbGxlY3Rpb25FbnRpdHkgYXMgRW50aXR5U2V0KT8uZW50aXR5VHlwZSB8fCAodGhpcy5jb2xsZWN0aW9uRW50aXR5IGFzIE5hdmlnYXRpb25Qcm9wZXJ0eSk/LnRhcmdldFR5cGU7XG5cdH1cblxuXHRnZXRFbXB0eVJvd3NFbmFibGVkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgZW5hYmxlZCA9XG5cdFx0XHR0aGlzLmNyZWF0aW9uTW9kZS5uYW1lID09PSBDcmVhdGlvbk1vZGUuSW5saW5lQ3JlYXRpb25Sb3dzXG5cdFx0XHRcdD8gdGhpcy50YWJsZURlZmluaXRpb24uYWN0aW9ucy5maW5kKChhKSA9PiBhLmtleSA9PT0gU3RhbmRhcmRBY3Rpb25LZXlzLkNyZWF0ZSk/LmVuYWJsZWRcblx0XHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0cmV0dXJuIGVuYWJsZWQgPT09IFwiZmFsc2VcIiA/IHVuZGVmaW5lZCA6IGVuYWJsZWQ7XG5cdH1cblxuXHRnZXRUZW1wbGF0ZSgpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGVudGl0eVR5cGUgPSB0aGlzLl9nZXRFbnRpdHlUeXBlKCk7XG5cdFx0Y29uc3QgdGFibGVQcm9wcyA9IHRoaXMgYXMgdW5rbm93biBhcyBUYWJsZUJsb2NrUHJvcGVydGllcztcblx0XHR0YWJsZVByb3BzLm92ZXJyaWRlUm93UHJlc3MgPSB0aGlzLnJvd1ByZXNzICE9PSB1bmRlZmluZWQ7XG5cblx0XHRjb25zdCBjb2xsZWN0aW9uRW50aXR5ID0gdGhpcy5jb252ZXJ0ZWRNZXRhZGF0YS5yZXNvbHZlUGF0aCh0YWJsZVByb3BzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmNvbGxlY3Rpb24pLnRhcmdldCBhc1xuXHRcdFx0fCBFbnRpdHlTZXRcblx0XHRcdHwgTmF2aWdhdGlvblByb3BlcnR5O1xuXHRcdGNvbnN0IGhhbmRsZXJQcm92aWRlciA9IG5ldyBUYWJsZUV2ZW50SGFuZGxlclByb3ZpZGVyKHRhYmxlUHJvcHMsIHsgY29sbGVjdGlvbkVudGl0eSwgbWV0YU1vZGVsOiB0aGlzLm1ldGFQYXRoLmdldE1vZGVsKCkgfSk7XG5cblx0XHRsZXQgY3JlYXRpb25Nb2RlOiBUYWJsZUNyZWF0aW9uT3B0aW9ucyB8IHVuZGVmaW5lZDtcblx0XHRpZiAodGhpcy5jcmVhdGlvbk1vZGUgJiYgT2JqZWN0LmtleXModGhpcy5jcmVhdGlvbk1vZGUpLmxlbmd0aCA+IDApIHtcblx0XHRcdGNyZWF0aW9uTW9kZSA9IDxUYWJsZUNyZWF0aW9uT3B0aW9ucyB7Li4udGhpcy5jcmVhdGlvbk1vZGV9IC8+O1xuXHRcdH1cblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8VGFibGVBUElcblx0XHRcdFx0Y29yZTpyZXF1aXJlPVwie0ZQTTogJ3NhcC9mZS9jb3JlL2hlbHBlcnMvRlBNSGVscGVyJ31cIlxuXHRcdFx0XHRiaW5kaW5nPXtge2ludGVybmFsPmNvbnRyb2xzLyR7dGhpcy5jb250ZW50SWR9fWB9XG5cdFx0XHRcdGlkPXt0aGlzLl9hcGlJZH1cblx0XHRcdFx0Y29udGVudElkPXt0aGlzLmNvbnRlbnRJZH1cblx0XHRcdFx0dmlzaWJsZT17dGhpcy52aXNpYmxlfVxuXHRcdFx0XHRoZWFkZXJMZXZlbD17dGhpcy5oZWFkZXJMZXZlbH1cblx0XHRcdFx0aGVhZGVyU3R5bGU9e3RoaXMuaGVhZGVyU3R5bGV9XG5cdFx0XHRcdGhlYWRlclZpc2libGU9e3RoaXMuaGVhZGVyVmlzaWJsZX1cblx0XHRcdFx0dGFiVGl0bGU9e3RoaXMudGFiVGl0bGV9XG5cdFx0XHRcdGV4cG9ydFJlcXVlc3RTaXplPXt0aGlzLmV4cG9ydFJlcXVlc3RTaXplfVxuXHRcdFx0XHRkaXNhYmxlQ29weVRvQ2xpcGJvYXJkPXt0aGlzLmRpc2FibGVDb3B5VG9DbGlwYm9hcmR9XG5cdFx0XHRcdHNjcm9sbFRocmVzaG9sZD17dGhpcy5zY3JvbGxUaHJlc2hvbGR9XG5cdFx0XHRcdHRocmVzaG9sZD17dGhpcy50YWJsZURlZmluaXRpb24uY29udHJvbC50aHJlc2hvbGQgPz8gdGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi50aHJlc2hvbGR9XG5cdFx0XHRcdHBvcGluTGF5b3V0PXt0aGlzLnBvcGluTGF5b3V0fVxuXHRcdFx0XHRpc1NlYXJjaGFibGU9e3RoaXMuaXNTZWFyY2hhYmxlfVxuXHRcdFx0XHRidXN5PXt0aGlzLmJ1c3l9XG5cdFx0XHRcdGluaXRpYWxMb2FkPXt0aGlzLmluaXRpYWxMb2FkfVxuXHRcdFx0XHRoZWFkZXI9e3RoaXMuaGVhZGVyfVxuXHRcdFx0XHRpc0FscD17dGhpcy5pc0FscH1cblx0XHRcdFx0ZmllbGRNb2RlPXt0aGlzLmZpZWxkTW9kZX1cblx0XHRcdFx0cGVyc29uYWxpemF0aW9uPXt0aGlzLnBlcnNvbmFsaXphdGlvbn1cblx0XHRcdFx0cm93UHJlc3M9e3RoaXMucm93UHJlc3MgYXMgdW5rbm93biBhcyBGdW5jdGlvbn1cblx0XHRcdFx0dmFyaWFudFNhdmVkPXt0aGlzLnZhcmlhbnRTYXZlZCBhcyB1bmtub3duIGFzIEZ1bmN0aW9ufVxuXHRcdFx0XHR2YXJpYW50U2VsZWN0ZWQ9e3RoaXMudmFyaWFudFNlbGVjdGVkIGFzIHVua25vd24gYXMgRnVuY3Rpb259XG5cdFx0XHRcdHNlZ21lbnRlZEJ1dHRvblByZXNzPXt0aGlzLnNlZ21lbnRlZEJ1dHRvblByZXNzIGFzIHVua25vd24gYXMgRnVuY3Rpb259XG5cdFx0XHRcdHZhcmlhbnRNYW5hZ2VtZW50PXt0aGlzLnZhcmlhbnRNYW5hZ2VtZW50fVxuXHRcdFx0XHRpZ25vcmVkRmllbGRzPXt0aGlzLnRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmlnbm9yZWRGaWVsZHN9IC8vIE5lZWQgdG8gYmUgZnJvbSB0aGUgdGFibGVEZWZpbml0aW9uIHRvIGJlIGluIHBoYXNlIGZvciB0aGUgZ2V0SWdub3JlRmllbGRzXG5cdFx0XHRcdHRhYmxlRGVmaW5pdGlvbj17YHtfcGFnZU1vZGVsPiR7dGhpcy50YWJsZURlZmluaXRpb25Db250ZXh0IS5nZXRQYXRoKCl9fWAgYXMgdW5rbm93biBhcyBUYWJsZVZpc3VhbGl6YXRpb259XG5cdFx0XHRcdGVudGl0eVR5cGVGdWxseVF1YWxpZmllZE5hbWU9e2VudGl0eVR5cGU/LmZ1bGx5UXVhbGlmaWVkTmFtZX1cblx0XHRcdFx0bWV0YVBhdGg9e3RoaXMubWV0YVBhdGg/LmdldFBhdGgoKX1cblx0XHRcdFx0dXNlQmFzaWNTZWFyY2g9e3RoaXMudXNlQmFzaWNTZWFyY2h9XG5cdFx0XHRcdGVuYWJsZUZ1bGxTY3JlZW49e3RoaXMuZW5hYmxlRnVsbFNjcmVlbn1cblx0XHRcdFx0ZW5hYmxlRXhwb3J0PXt0aGlzLmVuYWJsZUV4cG9ydH1cblx0XHRcdFx0ZXhwb3J0RmlsZU5hbWU9e3RoaXMuZXhwb3J0RmlsZU5hbWV9XG5cdFx0XHRcdGV4cG9ydFNoZWV0TmFtZT17dGhpcy5leHBvcnRTaGVldE5hbWV9XG5cdFx0XHRcdGZyb3plbkNvbHVtbkNvdW50PXt0aGlzLmZyb3plbkNvbHVtbkNvdW50fVxuXHRcdFx0XHRkaXNhYmxlQ29sdW1uRnJlZXplPXt0aGlzLmRpc2FibGVDb2x1bW5GcmVlemV9XG5cdFx0XHRcdGVuYWJsZVBhc3RlPXt0aGlzLmVuYWJsZVBhc3RlfVxuXHRcdFx0XHRyb3dDb3VudE1vZGU9e3RoaXMucm93Q291bnRNb2RlfVxuXHRcdFx0XHRyb3dDb3VudD17dGhpcy5yb3dDb3VudH1cblx0XHRcdFx0Y29udGV4dFBhdGg9e3RoaXMuY29udGV4dFBhdGg/LmdldFBhdGgoKX1cblx0XHRcdFx0c2VsZWN0aW9uQ2hhbmdlPXt0aGlzLnNlbGVjdGlvbkNoYW5nZSBhcyB1bmtub3duIGFzIEZ1bmN0aW9ufVxuXHRcdFx0XHRsaXN0QmluZGluZ0NoYW5nZT17dGhpcy5saXN0QmluZGluZ0NoYW5nZSBhcyB1bmtub3duIGFzIEZ1bmN0aW9ufVxuXHRcdFx0XHRyZWFkT25seT17dGhpcy5yZWFkT25seX1cblx0XHRcdFx0c2VsZWN0aW9uTW9kZT17dGhpcy5zZWxlY3Rpb25Nb2RlfVxuXHRcdFx0XHR1c2VDb25kZW5zZWRMYXlvdXQ9e3RoaXMudXNlQ29uZGVuc2VkTGF5b3V0fVxuXHRcdFx0XHR0eXBlPXt0aGlzLnR5cGV9XG5cdFx0XHRcdGZpbHRlckJhcj17dGhpcy5maWx0ZXJCYXJ9XG5cdFx0XHRcdGVtcHR5Um93c0VuYWJsZWQ9e3RoaXMuZ2V0RW1wdHlSb3dzRW5hYmxlZCgpIGFzIHVua25vd24gYXMgYm9vbGVhbn1cblx0XHRcdFx0ZW5hYmxlQXV0b0NvbHVtbldpZHRoPXt0aGlzLmVuYWJsZUF1dG9Db2x1bW5XaWR0aH1cblx0XHRcdFx0YmVmb3JlUmViaW5kVGFibGU9e3RoaXMuYmVmb3JlUmViaW5kVGFibGUgYXMgdW5rbm93biBhcyBGdW5jdGlvbn1cblx0XHRcdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI9e3RoaXMud2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXJ9XG5cdFx0XHRcdG1vZGVGb3JOb0RhdGFNZXNzYWdlPXt0aGlzLm1vZGVGb3JOb0RhdGFNZXNzYWdlfVxuXHRcdFx0XHRhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudFBhdGg9e3RoaXMuYXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnRQYXRoPy5nZXRQYXRoKCl9XG5cdFx0XHRcdGRpc3BsYXlTZWdtZW50ZWRCdXR0b249e3RoaXMuZGlzcGxheVNlZ21lbnRlZEJ1dHRvbn1cblx0XHRcdFx0ZW5hYmxlUGFzdGluZ09mQ29tcHV0ZWRQcm9wZXJ0aWVzPXt0aGlzLmVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllc31cblx0XHRcdFx0ZW5hYmxlU2VsZWN0QWxsPXt0aGlzLmVuYWJsZVNlbGVjdEFsbH1cblx0XHRcdFx0aW5NdWx0aVZpZXc9e3RoaXMuaW5NdWx0aVZpZXd9XG5cdFx0XHRcdHNlbGVjdGlvbkxpbWl0PXt0aGlzLnNlbGVjdGlvbkxpbWl0fVxuXHRcdFx0XHRjb25kZW5zZWRUYWJsZUxheW91dD17dGhpcy5jb25kZW5zZWRUYWJsZUxheW91dH1cblx0XHRcdD5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRjcmVhdGlvbk1vZGUsXG5cdFx0XHRcdFx0Y29udGVudDogZ2V0TURDVGFibGVUZW1wbGF0ZSh0YWJsZVByb3BzLCB7XG5cdFx0XHRcdFx0XHRtZXRhUGF0aDogdGhpcy5tZXRhUGF0aCxcblx0XHRcdFx0XHRcdGNvbnZlcnRlZE1ldGFkYXRhOiB0aGlzLmNvbnZlcnRlZE1ldGFkYXRhLFxuXHRcdFx0XHRcdFx0bWV0YU1vZGVsOiB0aGlzLm1ldGFNb2RlbCxcblx0XHRcdFx0XHRcdGhhbmRsZXJQcm92aWRlcixcblx0XHRcdFx0XHRcdGFwcENvbXBvbmVudDogdGhpcy5hcHBDb21wb25lbnRcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9fVxuXHRcdFx0PC9UYWJsZUFQST5cblx0XHQpO1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUErR0EsU0FBU0EsZ0JBQWdCQSxDQUFDQyxJQUFhLEVBQUVDLElBQVksRUFBc0I7SUFDMUUsT0FBT0QsSUFBSSxDQUFDRSxZQUFZLENBQUNELElBQUksQ0FBQyxJQUFJRSxTQUFTO0VBQzVDOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNBLFNBQVNDLGlDQUFpQ0EsQ0FBQ0osSUFBYSxFQUFFQyxJQUFZLEVBQXVCO0lBQzVGLE1BQU1JLGNBQWMsR0FBR0wsSUFBSSxDQUFDRSxZQUFZLENBQUNELElBQUksQ0FBQztJQUM5QyxRQUFRSSxjQUFjO01BQ3JCLEtBQUssSUFBSTtRQUNSLE9BQU9GLFNBQVM7TUFDakIsS0FBSyxNQUFNO1FBQ1YsT0FBTyxJQUFJO01BQ1osS0FBSyxPQUFPO1FBQ1gsT0FBTyxLQUFLO01BQ2I7UUFDQyxPQUFPRSxjQUFjO01BQXdCO0lBQy9DO0VBQ0Q7O0VBRUE7QUFDQTtBQUNBO0FBQ0E7RUFDQSxTQUFTQyx5QkFBeUJBLENBQUNDLEdBQTRCLEVBQVE7SUFDdEVDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDRixHQUFHLENBQUMsQ0FBQ0csT0FBTyxDQUFFQyxHQUFHLElBQUs7TUFDakMsSUFBSUosR0FBRyxDQUFDSSxHQUFHLENBQUMsS0FBS1IsU0FBUyxFQUFFO1FBQzNCLE9BQU9JLEdBQUcsQ0FBQ0ksR0FBRyxDQUFDO01BQ2hCO0lBQ0QsQ0FBQyxDQUFDO0VBQ0g7O0VBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNBLFNBQVNDLHNCQUFzQkEsQ0FBQ0MsVUFBbUIsRUFBcUM7SUFDdkYsTUFB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