@aws-amplify/graphql-api-construct 1.18.8-gen2-migration-0205.0 → 1.19.0

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 (242) hide show
  1. package/.jsii +85 -44
  2. package/API.md +1 -1
  3. package/CHANGELOG.md +10 -2
  4. package/lib/amplify-dynamodb-table-wrapper.js +1 -1
  5. package/lib/amplify-graphql-api.js +4 -2
  6. package/lib/amplify-graphql-definition.js +1 -1
  7. package/lib/sql-model-datasource-strategy.js +1 -1
  8. package/lib/types.d.ts +1 -1
  9. package/lib/types.js +1 -1
  10. package/node_modules/@aws-amplify/ai-constructs/lib/conversation/conversation_handler_construct.d.ts +13 -0
  11. package/node_modules/@aws-amplify/ai-constructs/lib/conversation/conversation_handler_construct.js +17 -4
  12. package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/bedrock_converse_adapter.js +89 -71
  13. package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/types.d.ts +1 -0
  14. package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/types.js +1 -1
  15. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/README.md +9 -0
  16. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/backend_entry_point_locator.d.ts +14 -0
  17. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/backend_entry_point_locator.js +37 -0
  18. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/backend_identifier_conversions.d.ts +22 -0
  19. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/backend_identifier_conversions.js +90 -0
  20. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/caller_directory_extractor.d.ts +14 -0
  21. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/caller_directory_extractor.js +70 -0
  22. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/cdk/enum_converters.d.ts +18 -0
  23. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/cdk/enum_converters.js +116 -0
  24. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/cdk/index.d.ts +3 -0
  25. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/cdk/index.js +7 -0
  26. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/cdk_context_key.d.ts +12 -0
  27. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/cdk_context_key.js +16 -0
  28. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/config/local_configuration_controller.d.ts +45 -0
  29. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/config/local_configuration_controller.js +125 -0
  30. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/config/local_configuration_controller_factory.d.ts +23 -0
  31. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/config/local_configuration_controller_factory.js +29 -0
  32. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/errors/amplify_error.d.ts +64 -0
  33. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/errors/amplify_error.js +267 -0
  34. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/errors/amplify_library_fault.d.ts +21 -0
  35. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/errors/amplify_library_fault.js +27 -0
  36. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/errors/amplify_user_error.d.ts +21 -0
  37. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/errors/amplify_user_error.js +27 -0
  38. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/errors/index.d.ts +4 -0
  39. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/errors/index.js +20 -0
  40. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/extract_file_path_from_stack_trace_line.d.ts +13 -0
  41. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/extract_file_path_from_stack_trace_line.js +61 -0
  42. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/index.d.ts +15 -0
  43. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/index.internal.d.ts +4 -0
  44. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/index.internal.js +35 -0
  45. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/index.js +35 -0
  46. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/naming_convention_conversions.d.ts +13 -0
  47. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/naming_convention_conversions.js +23 -0
  48. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/object_accumulator.d.ts +45 -0
  49. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/object_accumulator.js +99 -0
  50. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/package_json_reader.d.ts +33 -0
  51. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/package_json_reader.js +56 -0
  52. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/parameter_path_conversions.d.ts +19 -0
  53. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/parameter_path_conversions.js +79 -0
  54. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/tag_name.d.ts +4 -0
  55. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/tag_name.js +8 -0
  56. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/usage-data/account_id_fetcher.d.ts +14 -0
  57. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/usage-data/account_id_fetcher.js +38 -0
  58. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/usage-data/constants.d.ts +13 -0
  59. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/usage-data/constants.js +16 -0
  60. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/usage-data/get_installation_id.d.ts +5 -0
  61. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/usage-data/get_installation_id.js +15 -0
  62. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/usage-data/get_usage_data_url.d.ts +6 -0
  63. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/usage-data/get_usage_data_url.js +24 -0
  64. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/usage-data/noop_usage_data_emitter.d.ts +15 -0
  65. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/usage-data/noop_usage_data_emitter.js +24 -0
  66. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/usage-data/serializable_error.d.ts +27 -0
  67. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/usage-data/serializable_error.js +70 -0
  68. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/usage-data/usage_data.d.ts +29 -0
  69. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/usage-data/usage_data.js +3 -0
  70. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/usage-data/usage_data_emitter.d.ts +27 -0
  71. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/usage-data/usage_data_emitter.js +146 -0
  72. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/usage-data/usage_data_emitter_factory.d.ts +16 -0
  73. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/lib/usage-data/usage_data_emitter_factory.js +27 -0
  74. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/platform-core/package.json +45 -0
  75. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/README.md +9 -0
  76. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/amplify_function.d.ts +4 -0
  77. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/amplify_function.js +3 -0
  78. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/amplify_resource_group_name.d.ts +7 -0
  79. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/amplify_resource_group_name.js +3 -0
  80. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/auth_resources.d.ts +106 -0
  81. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/auth_resources.js +3 -0
  82. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/aws_client_provider.d.ts +5 -0
  83. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/aws_client_provider.js +3 -0
  84. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/backend_identifier.d.ts +56 -0
  85. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/backend_identifier.js +3 -0
  86. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/backend_output.d.ts +6 -0
  87. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/backend_output.js +3 -0
  88. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/backend_secret_resolver.d.ts +22 -0
  89. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/backend_secret_resolver.js +3 -0
  90. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/backend_stack_creator.d.ts +8 -0
  91. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/backend_stack_creator.js +3 -0
  92. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/backend_stack_resolver.d.ts +7 -0
  93. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/backend_stack_resolver.js +3 -0
  94. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/construct_container.d.ts +35 -0
  95. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/construct_container.js +3 -0
  96. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/construct_factory.d.ts +24 -0
  97. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/construct_factory.js +3 -0
  98. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/deep_partial.d.ts +17 -0
  99. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/deep_partial.js +3 -0
  100. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/deployment_type.d.ts +8 -0
  101. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/deployment_type.js +3 -0
  102. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/function_resources.d.ts +8 -0
  103. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/function_resources.js +3 -0
  104. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/import_path_verifier.d.ts +14 -0
  105. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/import_path_verifier.js +3 -0
  106. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/index.d.ts +27 -0
  107. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/index.js +43 -0
  108. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/log_level.d.ts +2 -0
  109. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/log_level.js +3 -0
  110. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/log_retention.d.ts +2 -0
  111. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/log_retention.js +3 -0
  112. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/output_retrieval_strategy.d.ts +11 -0
  113. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/output_retrieval_strategy.js +3 -0
  114. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/output_storage_strategy.d.ts +10 -0
  115. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/output_storage_strategy.js +3 -0
  116. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/package_manager_controller.d.ts +30 -0
  117. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/package_manager_controller.js +3 -0
  118. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/resource_access_acceptor.d.ts +27 -0
  119. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/resource_access_acceptor.js +3 -0
  120. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/resource_name_validator.d.ts +10 -0
  121. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/resource_name_validator.js +3 -0
  122. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/resource_provider.d.ts +10 -0
  123. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/resource_provider.js +3 -0
  124. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/ssm_environment_entries_generator.d.ts +5 -0
  125. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/ssm_environment_entries_generator.js +3 -0
  126. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/stable_backend_identifiers.d.ts +4 -0
  127. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/stable_backend_identifiers.js +3 -0
  128. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/stack_provider.d.ts +5 -0
  129. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/stack_provider.js +3 -0
  130. package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/package.json +21 -0
  131. package/node_modules/@aws-amplify/ai-constructs/package.json +5 -5
  132. package/node_modules/@aws-amplify/graphql-auth-transformer/CHANGELOG.md +7 -1
  133. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/graphql-auth-transformer.js +2 -2
  134. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/graphql-auth-transformer.js.map +1 -1
  135. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/iam.js +2 -2
  136. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/iam.js.map +1 -1
  137. package/node_modules/@aws-amplify/graphql-auth-transformer/package.json +13 -13
  138. package/node_modules/@aws-amplify/graphql-conversation-transformer/CHANGELOG.md +7 -1
  139. package/node_modules/@aws-amplify/graphql-conversation-transformer/package.json +12 -12
  140. package/node_modules/@aws-amplify/graphql-default-value-transformer/CHANGELOG.md +5 -1
  141. package/node_modules/@aws-amplify/graphql-default-value-transformer/package.json +7 -7
  142. package/node_modules/@aws-amplify/graphql-directives/API.md +3 -0
  143. package/node_modules/@aws-amplify/graphql-directives/CHANGELOG.md +6 -0
  144. package/node_modules/@aws-amplify/graphql-directives/LICENSE +201 -0
  145. package/node_modules/@aws-amplify/graphql-directives/lib/directives/index.d.ts +1 -0
  146. package/node_modules/@aws-amplify/graphql-directives/lib/directives/index.d.ts.map +1 -1
  147. package/node_modules/@aws-amplify/graphql-directives/lib/directives/index.js +3 -1
  148. package/node_modules/@aws-amplify/graphql-directives/lib/directives/index.js.map +1 -1
  149. package/node_modules/@aws-amplify/graphql-directives/lib/directives/validate.d.ts +3 -0
  150. package/node_modules/@aws-amplify/graphql-directives/lib/directives/validate.d.ts.map +1 -0
  151. package/node_modules/@aws-amplify/graphql-directives/lib/directives/validate.js +30 -0
  152. package/node_modules/@aws-amplify/graphql-directives/lib/directives/validate.js.map +1 -0
  153. package/node_modules/@aws-amplify/graphql-directives/lib/index.d.ts.map +1 -1
  154. package/node_modules/@aws-amplify/graphql-directives/lib/index.js +1 -0
  155. package/node_modules/@aws-amplify/graphql-directives/lib/index.js.map +1 -1
  156. package/node_modules/@aws-amplify/graphql-directives/package.json +3 -2
  157. package/node_modules/@aws-amplify/graphql-function-transformer/CHANGELOG.md +8 -0
  158. package/node_modules/@aws-amplify/graphql-function-transformer/LICENSE +201 -0
  159. package/node_modules/@aws-amplify/graphql-function-transformer/package.json +8 -7
  160. package/node_modules/@aws-amplify/graphql-generation-transformer/CHANGELOG.md +10 -0
  161. package/node_modules/@aws-amplify/graphql-generation-transformer/LICENSE +201 -0
  162. package/node_modules/@aws-amplify/graphql-generation-transformer/lib/grapqhl-generation-transformer.js +2 -1
  163. package/node_modules/@aws-amplify/graphql-generation-transformer/lib/grapqhl-generation-transformer.js.map +1 -1
  164. package/node_modules/@aws-amplify/graphql-generation-transformer/package.json +8 -7
  165. package/node_modules/@aws-amplify/graphql-http-transformer/CHANGELOG.md +8 -0
  166. package/node_modules/@aws-amplify/graphql-http-transformer/LICENSE +201 -0
  167. package/node_modules/@aws-amplify/graphql-http-transformer/package.json +8 -7
  168. package/node_modules/@aws-amplify/graphql-index-transformer/CHANGELOG.md +5 -1
  169. package/node_modules/@aws-amplify/graphql-index-transformer/package.json +8 -8
  170. package/node_modules/@aws-amplify/graphql-maps-to-transformer/CHANGELOG.md +5 -1
  171. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/assets/mapping-lambda.zip +0 -0
  172. package/node_modules/@aws-amplify/graphql-maps-to-transformer/package.json +11 -11
  173. package/node_modules/@aws-amplify/graphql-model-transformer/CHANGELOG.md +8 -1
  174. package/node_modules/@aws-amplify/graphql-model-transformer/lib/rds-lambda.zip +0 -0
  175. package/node_modules/@aws-amplify/graphql-model-transformer/lib/rds-notification-lambda.zip +0 -0
  176. package/node_modules/@aws-amplify/graphql-model-transformer/lib/rds-patching-lambda.zip +0 -0
  177. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamo-model-resource-generator.d.ts.map +1 -1
  178. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamo-model-resource-generator.js +4 -3
  179. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamo-model-resource-generator.js.map +1 -1
  180. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/dynamo-model-resource-generator.js +4 -4
  181. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/dynamo-model-resource-generator.js.map +1 -1
  182. package/node_modules/@aws-amplify/graphql-model-transformer/package.json +7 -7
  183. package/node_modules/@aws-amplify/graphql-predictions-transformer/CHANGELOG.md +8 -0
  184. package/node_modules/@aws-amplify/graphql-predictions-transformer/LICENSE +201 -0
  185. package/node_modules/@aws-amplify/graphql-predictions-transformer/lib/predictionsLambdaFunction.zip +0 -0
  186. package/node_modules/@aws-amplify/graphql-predictions-transformer/package.json +8 -7
  187. package/node_modules/@aws-amplify/graphql-relational-transformer/CHANGELOG.md +5 -1
  188. package/node_modules/@aws-amplify/graphql-relational-transformer/package.json +9 -9
  189. package/node_modules/@aws-amplify/graphql-searchable-transformer/CHANGELOG.md +5 -1
  190. package/node_modules/@aws-amplify/graphql-searchable-transformer/lib/streaming-lambda.zip +0 -0
  191. package/node_modules/@aws-amplify/graphql-searchable-transformer/package.json +8 -8
  192. package/node_modules/@aws-amplify/graphql-sql-transformer/CHANGELOG.md +5 -1
  193. package/node_modules/@aws-amplify/graphql-sql-transformer/package.json +8 -8
  194. package/node_modules/@aws-amplify/graphql-transformer/CHANGELOG.md +7 -1
  195. package/node_modules/@aws-amplify/graphql-transformer/lib/graphql-transformer.d.ts.map +1 -1
  196. package/node_modules/@aws-amplify/graphql-transformer/lib/graphql-transformer.js +2 -0
  197. package/node_modules/@aws-amplify/graphql-transformer/lib/graphql-transformer.js.map +1 -1
  198. package/node_modules/@aws-amplify/graphql-transformer/package.json +20 -19
  199. package/node_modules/@aws-amplify/graphql-transformer/src/graphql-transformer.ts +3 -0
  200. package/node_modules/@aws-amplify/graphql-transformer-core/CHANGELOG.md +11 -0
  201. package/node_modules/@aws-amplify/graphql-transformer-core/LICENSE +201 -0
  202. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformation/sync-utils.js +4 -4
  203. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformation/sync-utils.js.map +1 -1
  204. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/resolver.d.ts.map +1 -1
  205. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/resolver.js +4 -3
  206. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/resolver.js.map +1 -1
  207. package/node_modules/@aws-amplify/graphql-transformer-core/package.json +6 -5
  208. package/node_modules/@aws-amplify/graphql-transformer-interfaces/CHANGELOG.md +4 -0
  209. package/node_modules/@aws-amplify/graphql-transformer-interfaces/package.json +2 -2
  210. package/node_modules/@aws-amplify/graphql-transformer-interfaces/tsconfig.tsbuildinfo +1 -1
  211. package/node_modules/@aws-amplify/graphql-validate-transformer/API.md +27 -0
  212. package/node_modules/@aws-amplify/graphql-validate-transformer/CHANGELOG.md +10 -0
  213. package/node_modules/@aws-amplify/graphql-validate-transformer/LICENSE +201 -0
  214. package/node_modules/@aws-amplify/graphql-validate-transformer/jest.config.js +5 -0
  215. package/node_modules/@aws-amplify/graphql-validate-transformer/lib/graphql-validate-transformer.d.ts +11 -0
  216. package/node_modules/@aws-amplify/graphql-validate-transformer/lib/graphql-validate-transformer.d.ts.map +1 -0
  217. package/node_modules/@aws-amplify/graphql-validate-transformer/lib/graphql-validate-transformer.js +96 -0
  218. package/node_modules/@aws-amplify/graphql-validate-transformer/lib/graphql-validate-transformer.js.map +1 -0
  219. package/node_modules/@aws-amplify/graphql-validate-transformer/lib/index.d.ts +2 -0
  220. package/node_modules/@aws-amplify/graphql-validate-transformer/lib/index.d.ts.map +1 -0
  221. package/node_modules/@aws-amplify/graphql-validate-transformer/lib/index.js +6 -0
  222. package/node_modules/@aws-amplify/graphql-validate-transformer/lib/index.js.map +1 -0
  223. package/node_modules/@aws-amplify/graphql-validate-transformer/lib/types.d.ts +25 -0
  224. package/node_modules/@aws-amplify/graphql-validate-transformer/lib/types.d.ts.map +1 -0
  225. package/node_modules/@aws-amplify/graphql-validate-transformer/lib/types.js +7 -0
  226. package/node_modules/@aws-amplify/graphql-validate-transformer/lib/types.js.map +1 -0
  227. package/node_modules/@aws-amplify/graphql-validate-transformer/lib/validators.d.ts +4 -0
  228. package/node_modules/@aws-amplify/graphql-validate-transformer/lib/validators.d.ts.map +1 -0
  229. package/node_modules/@aws-amplify/graphql-validate-transformer/lib/validators.js +83 -0
  230. package/node_modules/@aws-amplify/graphql-validate-transformer/lib/validators.js.map +1 -0
  231. package/node_modules/@aws-amplify/graphql-validate-transformer/lib/vtl-generator.d.ts +4 -0
  232. package/node_modules/@aws-amplify/graphql-validate-transformer/lib/vtl-generator.d.ts.map +1 -0
  233. package/node_modules/@aws-amplify/graphql-validate-transformer/lib/vtl-generator.js +57 -0
  234. package/node_modules/@aws-amplify/graphql-validate-transformer/lib/vtl-generator.js.map +1 -0
  235. package/node_modules/@aws-amplify/graphql-validate-transformer/package.json +46 -0
  236. package/node_modules/lodash.snakecase/LICENSE +47 -0
  237. package/node_modules/lodash.snakecase/README.md +18 -0
  238. package/node_modules/lodash.snakecase/index.js +435 -0
  239. package/node_modules/lodash.snakecase/package.json +17 -0
  240. package/package.json +27 -23
  241. package/src/amplify-graphql-api.ts +7 -1
  242. package/src/types.ts +1 -1
package/lib/types.js CHANGED
@@ -10,4 +10,4 @@
10
10
  // ############################################################################
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  /* c8 ignore stop */
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtFQUErRTtBQUMvRSwrRUFBK0U7QUFDL0UsOEVBQThFO0FBQzlFLG9FQUFvRTtBQUNwRSw4REFBOEQ7QUFDOUQsRUFBRTtBQUNGLDZFQUE2RTtBQUM3RSw2REFBNkQ7QUFDN0QsK0VBQStFOztBQWkvQi9FLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbIi8vICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcbi8vIE5vdGUgdGhhdCBzZWN0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIGV4Y2x1ZGVkIGZyb20gdGVzdCBjb3ZlcmFnZSBtZXRyaWNzIHdpdGhcbi8vICdjOCBpZ25vcmUnIGNvbW1lbnRzLiBJZiB5b3UgYWRkIGNvZGUgdG8gdGhpcyBmaWxlLCBzdXBwcmVzcyBub24tZXhlY3V0YWJsZVxuLy8gY29kZSBmcm9tIGNvdmVyYWdlIG1ldHJpY3MgYnkgdXNpbmcgYSBgYzggaWdub3JlYC4gSWYgdGhlIGNvZGUgaXNcbi8vIGV4ZWN1dGFibGUsIHlvdSBNVVNUIE5PVCBzdXBwcmVzcyBpdCBmcm9tIGNvdmVyYWdlIG1ldHJpY3MuXG4vL1xuLy8gYGlnbm9yZWAgc3RhdGVtZW50cyBtdXN0IG9ubHkgc3BhbiBhIHNpbmdsZSBibG9jayBvZiBjb2RlLiBEbyBub3QgYXBwbHkgYW5cbi8vIGBpZ25vcmVgIHN0YXRlbWVudCB0byBtdWx0aXBsZSBibG9ja3MsIG9yIHRoZSBlbnRpcmUgZmlsZS5cbi8vICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcblxuLyogYzggaWdub3JlIHN0YXJ0ICovXG5pbXBvcnQgeyBEdXJhdGlvbiwgQ2ZuUmVzb3VyY2UsIE5lc3RlZFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuLyogYzggaWdub3JlIHN0b3AgKi9cblxuLyogYzggaWdub3JlIHN0YXJ0ICovXG5pbXBvcnQge1xuICBDZm5HcmFwaFFMQXBpLFxuICBDZm5HcmFwaFFMU2NoZW1hLFxuICBDZm5BcGlLZXksXG4gIENmblJlc29sdmVyLFxuICBDZm5GdW5jdGlvbkNvbmZpZ3VyYXRpb24sXG4gIENmbkRhdGFTb3VyY2UsXG4gIElHcmFwaHFsQXBpLFxuICBNYXBwaW5nVGVtcGxhdGUsXG4gIEJhc2VEYXRhU291cmNlLFxuICBDb2RlLFxuICBGdW5jdGlvblJ1bnRpbWUsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1hcHBzeW5jJztcbi8qIGM4IGlnbm9yZSBzdG9wICovXG5cbi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuaW1wb3J0IHsgQ2ZuVGFibGUsIElUYWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1keW5hbW9kYic7XG4vKiBjOCBpZ25vcmUgc3RvcCAqL1xuXG4vKiBjOCBpZ25vcmUgc3RhcnQgKi9cbmltcG9ydCB7IElSb2xlLCBDZm5Sb2xlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG4vKiBjOCBpZ25vcmUgc3RvcCAqL1xuXG4vKiBjOCBpZ25vcmUgc3RhcnQgKi9cbmltcG9ydCB7IElVc2VyUG9vbCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2duaXRvJztcbi8qIGM4IGlnbm9yZSBzdG9wICovXG5cbi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuaW1wb3J0IHsgSUZ1bmN0aW9uLCBDZm5GdW5jdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuLyogYzggaWdub3JlIHN0b3AgKi9cblxuLyogYzggaWdub3JlIHN0YXJ0ICovXG5pbXBvcnQgeyBJQnVja2V0IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbi8qIGM4IGlnbm9yZSBzdG9wICovXG5cbi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuaW1wb3J0IHsgQW1wbGlmeUR5bmFtb0RiVGFibGVXcmFwcGVyIH0gZnJvbSAnLi9hbXBsaWZ5LWR5bmFtb2RiLXRhYmxlLXdyYXBwZXInO1xuLyogYzggaWdub3JlIHN0b3AgKi9cblxuLyogYzggaWdub3JlIHN0YXJ0ICovXG5pbXBvcnQgeyBDdXN0b21TcWxEYXRhU291cmNlU3RyYXRlZ3ksIE1vZGVsRGF0YVNvdXJjZVN0cmF0ZWd5IH0gZnJvbSAnLi9tb2RlbC1kYXRhc291cmNlLXN0cmF0ZWd5LXR5cGVzJztcbi8qIGM4IGlnbm9yZSBzdG9wICovXG5cbi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuaW1wb3J0IHsgTG9nZ2luZyB9IGZyb20gJy4vbG9nLWNvbmZpZy10eXBlcyc7XG4vKiBjOCBpZ25vcmUgc3RvcCAqL1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIElBTSBBdXRob3JpemF0aW9uIG9uIHRoZSBHcmFwaHFsIEFwaS5cbiAqIEBzdHJ1Y3QgLSByZXF1aXJlZCBzaW5jZSB0aGlzIGludGVyZmFjZSBiZWdpbnMgd2l0aCBhbiAnSSdcbiAqL1xuLyogYzggaWdub3JlIHN0YXJ0ICovXG5leHBvcnQgaW50ZXJmYWNlIElBTUF1dGhvcml6YXRpb25Db25maWcge1xuICAvKipcbiAgICogSUQgZm9yIHRoZSBDb2duaXRvIElkZW50aXR5IFBvb2wgdmVuZGluZyBhdXRoIGFuZCB1bmF1dGggcm9sZXMuXG4gICAqIEZvcm1hdDogYDxyZWdpb24+OjxpZCBzdHJpbmc+YFxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgJ0lkZW50aXR5UG9vbEF1dGhvcml6YXRpb25Db25maWcuaWRlbnRpdHlQb29sSWQnIGluc3RlYWQuXG4gICAqIFNlZSBodHRwczovL2RvY3MuYW1wbGlmeS5hd3MvY2xpL3JlYWN0L3Rvb2xzL2NsaS9taWdyYXRpb24vaWFtLWF1dGgtdXBkYXRlcy1mb3ItY2RrLWNvbnN0cnVjdCBmb3IgZGV0YWlscy5cbiAgICovXG4gIHJlYWRvbmx5IGlkZW50aXR5UG9vbElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBdXRoZW50aWNhdGVkIHVzZXIgcm9sZSwgYXBwbGllcyB0byB7IHByb3ZpZGVyOiBpYW0sIGFsbG93OiBwcml2YXRlIH0gYWNjZXNzLlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgJ0lkZW50aXR5UG9vbEF1dGhvcml6YXRpb25Db25maWcuYXV0aGVudGljYXRlZFVzZXJSb2xlJyBpbnN0ZWFkLlxuICAgKiBTZWUgaHR0cHM6Ly9kb2NzLmFtcGxpZnkuYXdzL2NsaS9yZWFjdC90b29scy9jbGkvbWlncmF0aW9uL2lhbS1hdXRoLXVwZGF0ZXMtZm9yLWNkay1jb25zdHJ1Y3QgZm9yIGRldGFpbHMuXG4gICAqL1xuICByZWFkb25seSBhdXRoZW50aWNhdGVkVXNlclJvbGU/OiBJUm9sZTtcblxuICAvKipcbiAgICogVW5hdXRoZW50aWNhdGVkIHVzZXIgcm9sZSwgYXBwbGllcyB0byB7IHByb3ZpZGVyOiBpYW0sIGFsbG93OiBwdWJsaWMgfSBhY2Nlc3MuXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIFVzZSAnSWRlbnRpdHlQb29sQXV0aG9yaXphdGlvbkNvbmZpZy51bmF1dGhlbnRpY2F0ZWRVc2VyUm9sZScgaW5zdGVhZC5cbiAgICogU2VlIGh0dHBzOi8vZG9jcy5hbXBsaWZ5LmF3cy9jbGkvcmVhY3QvdG9vbHMvY2xpL21pZ3JhdGlvbi9pYW0tYXV0aC11cGRhdGVzLWZvci1jZGstY29uc3RydWN0IGZvciBkZXRhaWxzLlxuICAgKi9cbiAgcmVhZG9ubHkgdW5hdXRoZW50aWNhdGVkVXNlclJvbGU/OiBJUm9sZTtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIElBTSByb2xlcyB3aGljaCB3aWxsIGJlIGdyYW50ZWQgZnVsbCByZWFkL3dyaXRlIGFjY2VzcyB0byB0aGUgZ2VuZXJhdGVkIG1vZGVsIGlmIElBTSBhdXRoIGlzIGVuYWJsZWQuXG4gICAqIElmIGFuIElSb2xlIGlzIHByb3ZpZGVkLCB0aGUgcm9sZSBgbmFtZWAgd2lsbCBiZSB1c2VkIGZvciBtYXRjaGluZy5cbiAgICogSWYgYSBzdHJpbmcgaXMgcHJvdmlkZWQsIHRoZSByYXcgdmFsdWUgd2lsbCBiZSB1c2VkIGZvciBtYXRjaGluZy5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgVXNlICdlbmFibGVJYW1BdXRob3JpemF0aW9uTW9kZScgYW5kIElBTSBQb2xpY3kgdG8gY29udHJvbCBhY2Nlc3MgZm9yIElBTSBwcmluY2lwYWxzLlxuICAgKiBTZWUgaHR0cHM6Ly9kb2NzLmFtcGxpZnkuYXdzL2NsaS9yZWFjdC90b29scy9jbGkvbWlncmF0aW9uL2lhbS1hdXRoLXVwZGF0ZXMtZm9yLWNkay1jb25zdHJ1Y3QgZm9yIGRldGFpbHMuXG4gICAqL1xuICByZWFkb25seSBhbGxvd0xpc3RlZFJvbGVzPzogKElSb2xlIHwgc3RyaW5nKVtdO1xuXG4gIC8qKlxuICAgKiBFbmFibGVzIGFjY2VzcyBmb3IgSUFNIHByaW5jaXBhbHMuIElmIGVuYWJsZWQgQGF1dGggZGlyZWN0aXZlIHJ1bGVzIGFyZSBub3QgYXBwbGllZC5cbiAgICogSW5zdGVhZCwgYWNjZXNzIHNob3VsZCBiZSBkZWZpbmVkIGJ5IElBTSBQb2xpY3ksIHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc2VydmljZS1hdXRob3JpemF0aW9uL2xhdGVzdC9yZWZlcmVuY2UvbGlzdF9hd3NhcHBzeW5jLmh0bWwuXG4gICAqXG4gICAqIERvZXMgbm90IGFwcGx5IHRvIGF1dGhlbnRpY2F0ZWQgYW5kIHVuYXV0aGVudGljYXRlZCBJQU0gUm9sZXMgYXR0YWNoZWQgdG8gQ29nbml0byBJZGVudGl0eSBQb29sLlxuICAgKiBVc2UgSWRlbnRpdHlQb29sQXV0aG9yaXphdGlvbkNvbmZpZyB0byBjb25maWd1cmUgdGhlaXIgYWNjZXNzLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlSWFtQXV0aG9yaXphdGlvbk1vZGU/OiBib29sZWFuO1xufVxuLyogYzggaWdub3JlIHN0b3AgKi9cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBDb2duaXRvIElkZW50aXR5IFBvb2wgQXV0aG9yaXphdGlvbiBvbiB0aGUgR3JhcGhxbCBBcGkuXG4gKiBAc3RydWN0IC0gcmVxdWlyZWQgc2luY2UgdGhpcyBpbnRlcmZhY2UgYmVnaW5zIHdpdGggYW4gJ0knXG4gKi9cbi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuZXhwb3J0IGludGVyZmFjZSBJZGVudGl0eVBvb2xBdXRob3JpemF0aW9uQ29uZmlnIHtcbiAgLyoqXG4gICAqIElEIGZvciB0aGUgQ29nbml0byBJZGVudGl0eSBQb29sIHZlbmRpbmcgYXV0aCBhbmQgdW5hdXRoIHJvbGVzLlxuICAgKiBGb3JtYXQ6IGA8cmVnaW9uPjo8aWQgc3RyaW5nPmBcbiAgICovXG4gIHJlYWRvbmx5IGlkZW50aXR5UG9vbElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEF1dGhlbnRpY2F0ZWQgdXNlciByb2xlLCBhcHBsaWVzIHRvIHsgcHJvdmlkZXI6IGlhbSwgYWxsb3c6IHByaXZhdGUgfSBhY2Nlc3MuXG4gICAqL1xuICByZWFkb25seSBhdXRoZW50aWNhdGVkVXNlclJvbGU6IElSb2xlO1xuXG4gIC8qKlxuICAgKiBVbmF1dGhlbnRpY2F0ZWQgdXNlciByb2xlLCBhcHBsaWVzIHRvIHsgcHJvdmlkZXI6IGlhbSwgYWxsb3c6IHB1YmxpYyB9IGFjY2Vzcy5cbiAgICovXG4gIHJlYWRvbmx5IHVuYXV0aGVudGljYXRlZFVzZXJSb2xlOiBJUm9sZTtcbn1cbi8qIGM4IGlnbm9yZSBzdG9wICovXG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgQ29nbml0byBVc2VyUG9vbCBBdXRob3JpemF0aW9uIG9uIHRoZSBHcmFwaHFsIEFwaS5cbiAqL1xuLyogYzggaWdub3JlIHN0YXJ0ICovXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJQb29sQXV0aG9yaXphdGlvbkNvbmZpZyB7XG4gIC8qKlxuICAgKiBUaGUgQ29nbml0byBVc2VyIFBvb2wgd2hpY2ggaXMgdXNlZCB0byBhdXRoZW50aWNhdGVkIEpXVCB0b2tlbnMsIGFuZCB2ZW5kcyBncm91cCBhbmQgdXNlciBpbmZvcm1hdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHVzZXJQb29sOiBJVXNlclBvb2w7XG59XG4vKiBjOCBpZ25vcmUgc3RvcCAqL1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIE9wZW5JZCBDb25uZWN0IEF1dGhvcml6YXRpb24gb24gdGhlIEdyYXBocWwgQXBpLlxuICovXG4vKiBjOCBpZ25vcmUgc3RhcnQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgT0lEQ0F1dGhvcml6YXRpb25Db25maWcge1xuICAvKipcbiAgICogVGhlIGlzc3VlciBmb3IgdGhlIE9JREMgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IG9pZGNQcm92aWRlck5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVXJsIGZvciB0aGUgT0lEQyB0b2tlbiBpc3N1ZXIuXG4gICAqL1xuICByZWFkb25seSBvaWRjSXNzdWVyVXJsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjbGllbnQgaWRlbnRpZmllciBvZiB0aGUgUmVseWluZyBwYXJ0eSBhdCB0aGUgT3BlbklEIGlkZW50aXR5IHByb3ZpZGVyLlxuICAgKiBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBjYW4gYmUgc3BlY2lmaWVkIHNvIEFwcFN5bmMgY2FuIHZhbGlkYXRlIGFnYWluc3QgbXVsdGlwbGUgY2xpZW50IGlkZW50aWZpZXJzIGF0IGEgdGltZS4gRXhhbXBsZVxuICAgKi9cbiAgcmVhZG9ubHkgY2xpZW50SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkdXJhdGlvbiBhbiBPSURDIHRva2VuIGlzIHZhbGlkIGFmdGVyIGJlaW5nIGF1dGhlbnRpY2F0ZWQgYnkgT0lEQyBwcm92aWRlci5cbiAgICogYXV0aF90aW1lIGNsYWltIGluIE9JREMgdG9rZW4gaXMgcmVxdWlyZWQgZm9yIHRoaXMgdmFsaWRhdGlvbiB0byB3b3JrLlxuICAgKi9cbiAgcmVhZG9ubHkgdG9rZW5FeHBpcnlGcm9tQXV0aDogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBkdXJhdGlvbiBhbiBPSURDIHRva2VuIGlzIHZhbGlkIGFmdGVyIGJlaW5nIGlzc3VlZCB0byBhIHVzZXIuXG4gICAqIFRoaXMgdmFsaWRhdGlvbiB1c2VzIGlhdCBjbGFpbSBvZiBPSURDIHRva2VuLlxuICAgKi9cbiAgcmVhZG9ubHkgdG9rZW5FeHBpcnlGcm9tSXNzdWU6IER1cmF0aW9uO1xufVxuLyogYzggaWdub3JlIHN0b3AgKi9cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBBcGkgS2V5cyBvbiB0aGUgR3JhcGhxbCBBcGkuXG4gKi9cbi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuZXhwb3J0IGludGVyZmFjZSBBcGlLZXlBdXRob3JpemF0aW9uQ29uZmlnIHtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGRlc2NyaXB0aW9uIGZvciB0aGUgQXBpIEtleSB0byBhdHRhY2ggdG8gdGhlIEFwaS5cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGR1cmF0aW9uIHJlcHJlc2VudGluZyB0aGUgdGltZSBmcm9tIENsb3VkZm9ybWF0aW9uIGRlcGxveSB1bnRpbCBleHBpcnkuXG4gICAqL1xuICByZWFkb25seSBleHBpcmVzOiBEdXJhdGlvbjtcbn1cbi8qIGM4IGlnbm9yZSBzdG9wICovXG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgQ3VzdG9tIExhbWJkYSBhdXRob3JpemF0aW9uIG9uIHRoZSBHcmFwaHFsIEFwaS5cbiAqL1xuLyogYzggaWdub3JlIHN0YXJ0ICovXG5leHBvcnQgaW50ZXJmYWNlIExhbWJkYUF1dGhvcml6YXRpb25Db25maWcge1xuICAvKipcbiAgICogVGhlIGF1dGhvcml6ZXIgbGFtYmRhIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb246IElGdW5jdGlvbjtcblxuICAvKipcbiAgICogSG93IGxvbmcgdGhlIHJlc3VsdHMgYXJlIGNhY2hlZC5cbiAgICovXG4gIHJlYWRvbmx5IHR0bDogRHVyYXRpb247XG59XG4vKiBjOCBpZ25vcmUgc3RvcCAqL1xuXG4vKipcbiAqIEF1dGhvcml6YXRpb24gTW9kZXMgdG8gYXBwbHkgdG8gdGhlIEFwaS5cbiAqIEF0IGxlYXN0IG9uZSBtb2RlcyBtdXN0IGJlIHByb3ZpZGVkLCBhbmQgaWYgbW9yZSB0aGFuIG9uZSBhcmUgcHJvdmlkZWQgYSBkZWZhdWx0QXV0aG9yaXphdGlvbk1vZGUgbXVzdCBiZSBzcGVjaWZpZWQuXG4gKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBBbXBsaWZ5IEFwaSBhdXRoLCByZWZlciB0byBodHRwczovL2RvY3MuYW1wbGlmeS5hd3MvY2xpL2dyYXBocWwvYXV0aG9yaXphdGlvbi1ydWxlcy8jYXV0aG9yaXphdGlvbi1zdHJhdGVnaWVzXG4gKi9cbi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRob3JpemF0aW9uTW9kZXMge1xuICAvKipcbiAgICogRGVmYXVsdCBhdXRoIG1vZGUgdG8gcHJvdmlkZSB0byB0aGUgQXBpLCByZXF1aXJlZCBpZiBtb3JlIHRoYW4gb25lIGNvbmZpZyB0eXBlIGlzIHNwZWNpZmllZC5cbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRBdXRob3JpemF0aW9uTW9kZT86ICdBV1NfSUFNJyB8ICdBTUFaT05fQ09HTklUT19VU0VSX1BPT0xTJyB8ICdPUEVOSURfQ09OTkVDVCcgfCAnQVBJX0tFWScgfCAnQVdTX0xBTUJEQSc7XG5cbiAgLyoqXG4gICAqIElBTSBBdXRoIGNvbmZpZywgcmVxdWlyZWQgdG8gYWxsb3cgSUFNLWJhc2VkIGFjY2VzcyB0byB0aGlzIEFQSS5cbiAgICogVGhpcyBhcHBsaWVzIHRvIGFueSBJQU0gcHJpbmNpcGFsIGV4Y2VwdCBBbWF6b24gQ29nbml0byBpZGVudGl0eSBwb29sJ3MgYXV0aGVudGljYXRlZCBhbmQgdW5hdXRoZW50aWNhdGVkIHJvbGVzLlxuICAgKiBUaGlzIGJlaGF2aW9yIHdhcyBoYXMgcmVjZW50bHkgYmVlbiBpbXByb3ZlZC5cbiAgICogU2VlIGh0dHBzOi8vZG9jcy5hbXBsaWZ5LmF3cy9jbGkvcmVhY3QvdG9vbHMvY2xpL21pZ3JhdGlvbi9pYW0tYXV0aC11cGRhdGVzLWZvci1jZGstY29uc3RydWN0IGZvciBkZXRhaWxzLlxuICAgKi9cbiAgcmVhZG9ubHkgaWFtQ29uZmlnPzogSUFNQXV0aG9yaXphdGlvbkNvbmZpZztcblxuICAvKipcbiAgICogQ29nbml0byBJZGVudGl0eSBQb29sIGNvbmZpZywgcmVxdWlyZWQgaWYgYW4gJ2lkZW50aXR5UG9vbCcgYXV0aCBwcm92aWRlciBpcyBzcGVjaWZpZWQgaW4gdGhlIEFwaS5cbiAgICogQXBwbGllcyB0byAncHVibGljJyBhbmQgJ3ByaXZhdGUnIGF1dGggc3RyYXRlZ2llcy5cbiAgICovXG4gIHJlYWRvbmx5IGlkZW50aXR5UG9vbENvbmZpZz86IElkZW50aXR5UG9vbEF1dGhvcml6YXRpb25Db25maWc7XG5cbiAgLyoqXG4gICAqIENvZ25pdG8gVXNlclBvb2wgY29uZmlnLCByZXF1aXJlZCBpZiBhICd1c2VyUG9vbHMnIGF1dGggcHJvdmlkZXIgaXMgc3BlY2lmaWVkIGluIHRoZSBBcGkuXG4gICAqIEFwcGxpZXMgdG8gJ293bmVyJywgJ3ByaXZhdGUnLCBhbmQgJ2dyb3VwJyBhdXRoIHN0cmF0ZWdpZXMuXG4gICAqL1xuICByZWFkb25seSB1c2VyUG9vbENvbmZpZz86IFVzZXJQb29sQXV0aG9yaXphdGlvbkNvbmZpZztcblxuICAvKipcbiAgICogQ29nbml0byBPSURDIGNvbmZpZywgcmVxdWlyZWQgaWYgYSAnb2lkYycgYXV0aCBwcm92aWRlciBpcyBzcGVjaWZpZWQgaW4gdGhlIEFwaS5cbiAgICogQXBwbGllcyB0byAnb3duZXInLCAncHJpdmF0ZScsIGFuZCAnZ3JvdXAnIGF1dGggc3RyYXRlZ2llcy5cbiAgICovXG4gIHJlYWRvbmx5IG9pZGNDb25maWc/OiBPSURDQXV0aG9yaXphdGlvbkNvbmZpZztcblxuICAvKipcbiAgICogQXBwU3luYyBBcGkgS2V5IGNvbmZpZywgcmVxdWlyZWQgaWYgYSAnYXBpS2V5JyBhdXRoIHByb3ZpZGVyIGlzIHNwZWNpZmllZCBpbiB0aGUgQXBpLlxuICAgKiBBcHBsaWVzIHRvICdwdWJsaWMnIGF1dGggc3RyYXRlZ3kuXG4gICAqL1xuICByZWFkb25seSBhcGlLZXlDb25maWc/OiBBcGlLZXlBdXRob3JpemF0aW9uQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBMYW1iZGEgY29uZmlnLCByZXF1aXJlZCBpZiBhICdmdW5jdGlvbicgYXV0aCBwcm92aWRlciBpcyBzcGVjaWZpZWQgaW4gdGhlIEFwaS5cbiAgICogQXBwbGllcyB0byAnY3VzdG9tJyBhdXRoIHN0cmF0ZWd5LlxuICAgKi9cbiAgcmVhZG9ubHkgbGFtYmRhQ29uZmlnPzogTGFtYmRhQXV0aG9yaXphdGlvbkNvbmZpZztcblxuICAvKipcbiAgICogQSBsaXN0IG9mIHJvbGVzIGdyYW50ZWQgZnVsbCBSL1cgYWNjZXNzIHRvIHRoZSBBcGkuXG4gICAqIEBkZXByZWNhdGVkLCB1c2UgaWFtQ29uZmlnLmFsbG93TGlzdGVkUm9sZXMgaW5zdGVhZC5cbiAgICovXG4gIHJlYWRvbmx5IGFkbWluUm9sZXM/OiBJUm9sZVtdO1xufVxuLyogYzggaWdub3JlIHN0b3AgKi9cblxuLyoqXG4gKiBXaGV0aGVyIG9yIG5vdCB0byB1c2UgYSB2ZXJzaW9uIGZpZWxkIHRvIHRyYWNrIGNvbmZsaWN0IGRldGVjdGlvbi5cbiAqL1xuLyogYzggaWdub3JlIHN0YXJ0ICovXG5leHBvcnQgdHlwZSBDb25mbGljdERldGVjdGlvblR5cGUgPSAnVkVSU0lPTicgfCAnTk9ORSc7XG4vKiBjOCBpZ25vcmUgc3RvcCAqL1xuXG4vKipcbiAqIENvbW1vbiBwYXJhbWV0ZXJzIGZvciBjb25mbGljdCByZXNvbHV0aW9uLlxuICovXG4vKiBjOCBpZ25vcmUgc3RhcnQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmxpY3RSZXNvbHV0aW9uU3RyYXRlZ3lCYXNlIHtcbiAgLyoqXG4gICAqIFRoZSBjb25mbGljdCBkZXRlY3Rpb24gdHlwZSB1c2VkIGZvciByZXNvbHV0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgZGV0ZWN0aW9uVHlwZTogQ29uZmxpY3REZXRlY3Rpb25UeXBlO1xufVxuLyogYzggaWdub3JlIHN0b3AgKi9cblxuLyoqXG4gKiBFbmFibGUgb3B0aW1pc3RpYyBjb25jdXJyZW5jeSBvbiB0aGUgcHJvamVjdC5cbiAqL1xuLyogYzggaWdub3JlIHN0YXJ0ICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9tZXJnZUNvbmZsaWN0UmVzb2x1dGlvblN0cmF0ZWd5IGV4dGVuZHMgQ29uZmxpY3RSZXNvbHV0aW9uU3RyYXRlZ3lCYXNlIHtcbiAgLyoqXG4gICAqIFRoaXMgY29uZmxpY3QgcmVzb2x1dGlvbiBzdHJhdGVneSBleGVjdXRlcyBhbiBhdXRvLW1lcmdlLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcmVmZXIgdG8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN5bmMvbGF0ZXN0L2Rldmd1aWRlL2NvbmZsaWN0LWRldGVjdGlvbi1hbmQtc3luYy5odG1sI2NvbmZsaWN0LWRldGVjdGlvbi1hbmQtcmVzb2x1dGlvblxuICAgKi9cbiAgcmVhZG9ubHkgaGFuZGxlclR5cGU6ICdBVVRPTUVSR0UnO1xufVxuLyogYzggaWdub3JlIHN0b3AgKi9cblxuLyoqXG4gKiBFbmFibGUgYXV0b21lcmdlIG9uIHRoZSBwcm9qZWN0LlxuICovXG4vKiBjOCBpZ25vcmUgc3RhcnQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW1pc3RpY0NvbmZsaWN0UmVzb2x1dGlvblN0cmF0ZWd5IGV4dGVuZHMgQ29uZmxpY3RSZXNvbHV0aW9uU3RyYXRlZ3lCYXNlIHtcbiAgLyoqXG4gICAqIFRoaXMgY29uZmxpY3QgcmVzb2x1dGlvbiBzdHJhdGVneSB0aGUgX3ZlcnNpb24gdG8gcGVyZm9ybSBvcHRpbWlzdGljIGNvbmN1cnJlbmN5LlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcmVmZXIgdG8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN5bmMvbGF0ZXN0L2Rldmd1aWRlL2NvbmZsaWN0LWRldGVjdGlvbi1hbmQtc3luYy5odG1sI2NvbmZsaWN0LWRldGVjdGlvbi1hbmQtcmVzb2x1dGlvblxuICAgKi9cbiAgcmVhZG9ubHkgaGFuZGxlclR5cGU6ICdPUFRJTUlTVElDX0NPTkNVUlJFTkNZJztcbn1cbi8qIGM4IGlnbm9yZSBzdG9wICovXG5cbi8qKlxuICogRW5hYmxlIGN1c3RvbSBzeW5jIG9uIHRoZSBwcm9qZWN0LCBwb3dlcmVkIGJ5IGEgbGFtYmRhLlxuICovXG4vKiBjOCBpZ25vcmUgc3RhcnQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tQ29uZmxpY3RSZXNvbHV0aW9uU3RyYXRlZ3kgZXh0ZW5kcyBDb25mbGljdFJlc29sdXRpb25TdHJhdGVneUJhc2Uge1xuICAvKipcbiAgICogVGhpcyBjb25mbGljdCByZXNvbHV0aW9uIHN0cmF0ZWd5IHVzZXMgYSBsYW1iZGEgaGFuZGxlciB0eXBlLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcmVmZXIgdG8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN5bmMvbGF0ZXN0L2Rldmd1aWRlL2NvbmZsaWN0LWRldGVjdGlvbi1hbmQtc3luYy5odG1sI2NvbmZsaWN0LWRldGVjdGlvbi1hbmQtcmVzb2x1dGlvblxuXG4gICAqL1xuICByZWFkb25seSBoYW5kbGVyVHlwZTogJ0xBTUJEQSc7XG5cbiAgLyoqXG4gICAqIFRoZSBmdW5jdGlvbiB3aGljaCB3aWxsIGJlIGludm9rZWQgZm9yIGNvbmZsaWN0IHJlc29sdXRpb24uXG4gICAqL1xuICByZWFkb25seSBjb25mbGljdEhhbmRsZXI6IElGdW5jdGlvbjtcbn1cblxuLyoqXG4gKiBDb25mbGljdCBSZXNvbHV0aW9uIFN0cmF0ZWd5IHRvIGFwcGx5IHRvIHRoZSBwcm9qZWN0IG9yIGEgcGFydGljdWxhciBtb2RlbC5cbiAqL1xuLyogYzggaWdub3JlIHN0YXJ0ICovXG5leHBvcnQgdHlwZSBDb25mbGljdFJlc29sdXRpb25TdHJhdGVneSA9XG4gIHwgQXV0b21lcmdlQ29uZmxpY3RSZXNvbHV0aW9uU3RyYXRlZ3lcbiAgfCBPcHRpbWlzdGljQ29uZmxpY3RSZXNvbHV0aW9uU3RyYXRlZ3lcbiAgfCBDdXN0b21Db25mbGljdFJlc29sdXRpb25TdHJhdGVneTtcbi8qIGM4IGlnbm9yZSBzdG9wICovXG5cbi8qKlxuICogUHJvamVjdCBsZXZlbCBjb25maWd1cmF0aW9uIGZvciBjb25mbGljdCByZXNvbHV0aW9uLlxuICogQGRlcHJlY2F0ZWQgdXNlIERhdGFTdG9yZUNvbmZpZ3VyYXRpb24gaW5zdGVhZC5cbiAqL1xuLyogYzggaWdub3JlIHN0YXJ0ICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBDb25mbGljdFJlc29sdXRpb24gZXh0ZW5kcyBEYXRhU3RvcmVDb25maWd1cmF0aW9uIHt9XG4vKiBjOCBpZ25vcmUgc3RvcCAqL1xuXG4vKipcbiAqIFByb2plY3QgbGV2ZWwgY29uZmlndXJhdGlvbiBmb3IgRGF0YVN0b3JlXG4gKi9cbi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRhU3RvcmVDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIFByb2plY3Qtd2lkZSBjb25maWcgZm9yIGNvbmZsaWN0IHJlc29sdXRpb24uIEFwcGxpZXMgdG8gYWxsIG5vbi1vdmVycmlkZGVuIG1vZGVscy5cbiAgICovXG4gIHJlYWRvbmx5IHByb2plY3Q/OiBDb25mbGljdFJlc29sdXRpb25TdHJhdGVneTtcblxuICAvKipcbiAgICogTW9kZWwtc3BlY2lmaWMgY29uZmxpY3QgcmVzb2x1dGlvbiBvdmVycmlkZXMuXG4gICAqL1xuICByZWFkb25seSBtb2RlbHM/OiBSZWNvcmQ8c3RyaW5nLCBDb25mbGljdFJlc29sdXRpb25TdHJhdGVneT47XG59XG4vKiBjOCBpZ25vcmUgc3RvcCAqL1xuXG4vKipcbiAqIFBhcmFtcyBleHBvc2VkIHRvIHN1cHBvcnQgY29uZmlndXJpbmcgYW5kIG92ZXJyaWRpbmcgcGlwZWxpbmVkIHNsb3RzLiBUaGlzIGFsbG93cyBjb25maWd1cmF0aW9uIG9mIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uLFxuICogaW5jbHVkaW5nIHRoZSByZXF1ZXN0IGFuZCByZXNwb25zZSBtYXBwaW5nIHRlbXBsYXRlcy5cbiAqL1xuLyogYzggaWdub3JlIHN0YXJ0ICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uU2xvdE92ZXJyaWRlIHtcbiAgLyoqXG4gICAqIE92ZXJyaWRlIHJlcXVlc3QgbWFwcGluZyB0ZW1wbGF0ZSBmb3IgdGhlIGZ1bmN0aW9uIHNsb3QuIEV4ZWN1dGVkIGJlZm9yZSB0aGUgZGF0YXNvdXJjZSBpcyBpbnZva2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWVzdE1hcHBpbmdUZW1wbGF0ZT86IE1hcHBpbmdUZW1wbGF0ZTtcblxuICAvKipcbiAgICogT3ZlcnJpZGUgcmVzcG9uc2UgbWFwcGluZyB0ZW1wbGF0ZSBmb3IgdGhlIGZ1bmN0aW9uIHNsb3QuIEV4ZWN1dGVkIGFmdGVyIHRoZSBkYXRhc291cmNlIGlzIGludm9rZWQuXG4gICAqL1xuICByZWFkb25seSByZXNwb25zZU1hcHBpbmdUZW1wbGF0ZT86IE1hcHBpbmdUZW1wbGF0ZTtcbn1cbi8qIGM4IGlnbm9yZSBzdG9wICovXG5cbi8qKlxuICogQ29tbW9uIHNsb3QgcGFyYW1ldGVycy5cbiAqL1xuLyogYzggaWdub3JlIHN0YXJ0ICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uU2xvdEJhc2Uge1xuICAvKipcbiAgICogVGhlIGZpZWxkIHRvIGF0dGFjaCB0aGlzIGZ1bmN0aW9uIHRvIG9uIHRoZSBBcGkgZGVmaW5pdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGZpZWxkTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc2xvdCBpbmRleCB0byB1c2UgdG8gaW5qZWN0IHRoaXMgaW50byB0aGUgZXhlY3V0aW9uIHBpcGVsaW5lLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBzbG90dGluZywgcmVmZXIgdG8gaHR0cHM6Ly9kb2NzLmFtcGxpZnkuYXdzL2NsaS9ncmFwaHFsL2N1c3RvbS1idXNpbmVzcy1sb2dpYy8jZXh0ZW5kLWFtcGxpZnktZ2VuZXJhdGVkLXJlc29sdmVyc1xuICAgKi9cbiAgcmVhZG9ubHkgc2xvdEluZGV4OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBvdmVycmlkZGVuIGJlaGF2aW9yIGZvciB0aGlzIHNsb3QuXG4gICAqL1xuICByZWFkb25seSBmdW5jdGlvbjogRnVuY3Rpb25TbG90T3ZlcnJpZGU7XG59XG4vKiBjOCBpZ25vcmUgc3RvcCAqL1xuXG4vKipcbiAqIFNsb3QgdHlwZXMgZm9yIE11dGF0aW9uIFJlc29sdmVycy5cbiAqL1xuLyogYzggaWdub3JlIHN0YXJ0ICovXG5leHBvcnQgaW50ZXJmYWNlIE11dGF0aW9uRnVuY3Rpb25TbG90IGV4dGVuZHMgRnVuY3Rpb25TbG90QmFzZSB7XG4gIC8qKlxuICAgKiBUaGlzIHNsb3QgdHlwZSBhcHBsaWVzIHRvIHRoZSBNdXRhdGlvbiB0eXBlIG9uIHRoZSBBcGkgZGVmaW5pdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGVOYW1lOiAnTXV0YXRpb24nO1xuXG4gIC8qKlxuICAgKiBUaGUgc2xvdCBuYW1lIHRvIGluamVjdCB0aGlzIGJlaGF2aW9yIGludG8uXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHNsb3R0aW5nLCByZWZlciB0byBodHRwczovL2RvY3MuYW1wbGlmeS5hd3MvY2xpL2dyYXBocWwvY3VzdG9tLWJ1c2luZXNzLWxvZ2ljLyNleHRlbmQtYW1wbGlmeS1nZW5lcmF0ZWQtcmVzb2x2ZXJzXG4gICAqL1xuICByZWFkb25seSBzbG90TmFtZTogJ2luaXQnIHwgJ3ByZUF1dGgnIHwgJ2F1dGgnIHwgJ3Bvc3RBdXRoJyB8ICdwcmVVcGRhdGUnIHwgJ3Bvc3RVcGRhdGUnIHwgJ2ZpbmlzaCc7XG59XG4vKiBjOCBpZ25vcmUgc3RvcCAqL1xuXG4vKipcbiAqIFNsb3QgdHlwZXMgZm9yIFF1ZXJ5IFJlc29sdmVycy5cbiAqL1xuLyogYzggaWdub3JlIHN0YXJ0ICovXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5RnVuY3Rpb25TbG90IGV4dGVuZHMgRnVuY3Rpb25TbG90QmFzZSB7XG4gIC8qKlxuICAgKiBUaGlzIHNsb3QgdHlwZSBhcHBsaWVzIHRvIHRoZSBRdWVyeSB0eXBlIG9uIHRoZSBBcGkgZGVmaW5pdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGVOYW1lOiAnUXVlcnknO1xuXG4gIC8qKlxuICAgKiBUaGUgc2xvdCBuYW1lIHRvIGluamVjdCB0aGlzIGJlaGF2aW9yIGludG8uXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHNsb3R0aW5nLCByZWZlciB0byBodHRwczovL2RvY3MuYW1wbGlmeS5hd3MvY2xpL2dyYXBocWwvY3VzdG9tLWJ1c2luZXNzLWxvZ2ljLyNleHRlbmQtYW1wbGlmeS1nZW5lcmF0ZWQtcmVzb2x2ZXJzXG4gICAqL1xuICByZWFkb25seSBzbG90TmFtZTogJ2luaXQnIHwgJ3ByZUF1dGgnIHwgJ2F1dGgnIHwgJ3Bvc3RBdXRoJyB8ICdwcmVEYXRhTG9hZCcgfCAncG9zdERhdGFMb2FkJyB8ICdmaW5pc2gnO1xufVxuLyogYzggaWdub3JlIHN0b3AgKi9cblxuLyoqXG4gKiBTbG90IHR5cGVzIGZvciBTdWJzY3JpcHRpb24gUmVzb2x2ZXJzLlxuICovXG4vKiBjOCBpZ25vcmUgc3RhcnQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3Vic2NyaXB0aW9uRnVuY3Rpb25TbG90IGV4dGVuZHMgRnVuY3Rpb25TbG90QmFzZSB7XG4gIC8qKlxuICAgKiBUaGlzIHNsb3QgdHlwZSBhcHBsaWVzIHRvIHRoZSBTdWJzY3JpcHRpb24gdHlwZSBvbiB0aGUgQXBpIGRlZmluaXRpb24uXG4gICAqL1xuICByZWFkb25seSB0eXBlTmFtZTogJ1N1YnNjcmlwdGlvbic7XG5cbiAgLyoqXG4gICAqIFRoZSBzbG90IG5hbWUgdG8gaW5qZWN0IHRoaXMgYmVoYXZpb3IgaW50by5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gc2xvdHRpbmcsIHJlZmVyIHRvIGh0dHBzOi8vZG9jcy5hbXBsaWZ5LmF3cy9jbGkvZ3JhcGhxbC9jdXN0b20tYnVzaW5lc3MtbG9naWMvI2V4dGVuZC1hbXBsaWZ5LWdlbmVyYXRlZC1yZXNvbHZlcnNcbiAgICovXG4gIHJlYWRvbmx5IHNsb3ROYW1lOiAnaW5pdCcgfCAncHJlQXV0aCcgfCAnYXV0aCcgfCAncG9zdEF1dGgnIHwgJ3ByZVN1YnNjcmliZSc7XG59XG4vKiBjOCBpZ25vcmUgc3RvcCAqL1xuXG4vKipcbiAqIElucHV0IHBhcmFtcyB0byB1bmlxdWVseSBpZGVudGlmeSB0aGUgc2xvdCB3aGljaCBpcyBiZWluZyBvdmVycmlkZGVuLlxuICovXG4vKiBjOCBpZ25vcmUgc3RhcnQgKi9cbmV4cG9ydCB0eXBlIEZ1bmN0aW9uU2xvdCA9IE11dGF0aW9uRnVuY3Rpb25TbG90IHwgUXVlcnlGdW5jdGlvblNsb3QgfCBTdWJzY3JpcHRpb25GdW5jdGlvblNsb3Q7XG4vKiBjOCBpZ25vcmUgc3RvcCAqL1xuXG4vKipcbiAqIFN0cm9uZ2x5IHR5cGVkIHNldCBvZiBzaGFyZWQgcGFyYW1ldGVycyBmb3IgYWxsIHRyYW5zZm9ybWVycywgYW5kIGNvcmUgbGF5ZXIuXG4gKiBUaGlzIGlzIGludGVuZGVkIHRvIHJlcGxhY2UgZmVhdHVyZSBmbGFncywgdG8gZW5zdXJlIHBhcmFtIGNvZXJjaW9uIGhhcHBlbnMgaW5cbiAqIGEgc2luZ2xlIGxvY2F0aW9uLCBhbmQgaXNuJ3Qgc3ByZWFkIGFyb3VuZCB0aGUgdHJhbnNmb3JtZXJzLCB3aGVyZSB0aGV5IGNhblxuICogaGF2ZSBkaWZmZXJlbnQgZGVmYXVsdCBiZWhhdmlvcnMuXG4gKi9cbi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuZXhwb3J0IGludGVyZmFjZSBUcmFuc2xhdGlvbkJlaGF2aW9yIHtcbiAgLyoqXG4gICAqIFJlc3RvcmUgcGFyaXR5IHcvIEdRTHYxIEBtb2RlbCBwYXJhbWV0ZXIgYmVoYXZpb3IsIHdoZXJlIHNldHRpbmcgYSBzaW5nbGUgZmllbGQgZG9lc24ndCBpbXBsaWNpdGx5IHNldCB0aGUgb3RoZXIgZmllbGRzIHRvIG51bGwuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZERlZXBNZXJnZURpcmVjdGl2ZUNvbmZpZ0RlZmF1bHRzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEaXNhYmxlIHJlc29sdmVyIGRlZHVwaW5nLCB0aGlzIGNhbiBzb21ldGltZXMgY2F1c2UgcHJvYmxlbXMgYmVjYXVzZSBkZWR1cGUgb3JkZXJpbmcgaXNuJ3Qgc3RhYmxlIHRvZGF5LCB3aGljaCBjYW5cbiAgICogbGVhZCB0byBjaXJjdWxhciBkZXBlbmRlbmNpZXMgYWNyb3NzIHN0YWNrcyBpZiBtb2RlbHMgYXJlIHJlb3JkZXJlZC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZGlzYWJsZVJlc29sdmVyRGVkdXBpbmc6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsaW5nIHNhbmRib3ggbW9kZSB3aWxsIGVuYWJsZSBhcGkga2V5IGF1dGggb24gYWxsIG1vZGVscyBpbiB0aGUgdHJhbnNmb3JtZWQgc2NoZW1hLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2FuZGJveE1vZGVFbmFibGVkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbnN1cmUgdGhhdCBvaWRjIGFuZCB1c2VyUG9vbCBhdXRoIHVzZSB0aGUgYHN1YmAgZmllbGQgaW4gdGhlIGZvciB0aGUgdXNlcm5hbWUgZmllbGQsIHdoaWNoIGRpc2FsbG93cyBuZXcgdXNlcnMgd2l0aCB0aGUgc2FtZVxuICAgKiBpZCB0byBhY2Nlc3MgZGF0YSBmcm9tIGEgZGVsZXRlZCB1c2VyIGluIHRoZSBwb29sLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSB1c2VTdWJVc2VybmFtZUZvckRlZmF1bHRJZGVudGl0eUNsYWltOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIGVuYWJsZWQsIHN1cHByZXNzZXMgZGVmYXVsdCBiZWhhdmlvciBvZiByZWRhY3RpbmcgcmVsYXRpb25hbCBmaWVsZHMgd2hlbiBhdXRoIHJ1bGVzIGRvIG5vdCBleGFjdGx5IG1hdGNoLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc3Vic2NyaXB0aW9uc0luaGVyaXRQcmltYXJ5QXV0aDogYm9vbGVhbjtcblxuICAvKipcbiAgICogRW5zdXJlIHRoYXQgdGhlIG93bmVyIGZpZWxkIGlzIHN0aWxsIHBvcHVsYXRlZCBldmVuIGlmIGEgc3RhdGljIGlhbSBvciBncm91cCBhdXRob3JpemF0aW9uIGFwcGxpZXMuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHBvcHVsYXRlT3duZXJGaWVsZEZvclN0YXRpY0dyb3VwQXV0aDogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgZW5hYmxlZCwgZGlzYWJsZSBhcGkga2V5IHJlc291cmNlIGdlbmVyYXRpb24gZXZlbiBpZiBzcGVjaWZpZWQgYXMgYW4gYXV0aCBydWxlIG9uIHRoZSBjb25zdHJ1Y3QuXG4gICAqIFRoaXMgaXMgYSBsZWdhY3kgcGFyYW1ldGVyIGZyb20gdGhlIEdyYXBocWwgVHJhbnNmb3JtZXIgZXhpc3RpbmcgaW4gQW1wbGlmeSBDTEksIG5vdCByZWNvbW1lbmRlZCB0byBjaGFuZ2UuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBzdXBwcmVzc0FwaUtleUdlbmVyYXRpb246IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGRpc2FibGVkLCBnZW5lcmF0ZWQgQGluZGV4IGFzIGFuIExTSSBpbnN0ZWFkIG9mIGEgR1NJLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBzZWNvbmRhcnlLZXlBc0dTSTogYm9vbGVhbjtcblxuICAvKipcbiAgICogQXV0b21hdGUgZ2VuZXJhdGlvbiBvZiBxdWVyeSBuYW1lcywgYW5kIGFzIGEgcmVzdWx0IGF0dGFjaGluZyBhbGwgaW5kZXhlcyBhcyBxdWVyaWVzIHRvIHRoZSBnZW5lcmF0ZWQgQXBpLlxuICAgKiBJZiBlbmFibGVkLCBAaW5kZXggY2FuIGJlIHByb3ZpZGVkIGEgbnVsbCBuYW1lIGZpZWxkIHRvIGRpc2FibGUgdGhlIGdlbmVyYXRpb24gb2YgdGhlIHF1ZXJ5IG9uIHRoZSBBcGkuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZUF1dG9JbmRleFF1ZXJ5TmFtZXM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBjdXN0b20gcHJpbWFyeSBrZXkgc3VwcG9ydCwgdGhlcmUncyBubyBnb29kIHJlYXNvbiB0byBkaXNhYmxlIHRoaXMgdW5sZXNzIHRyeWluZyBub3QgdG8gdXBkYXRlIGEgbGVnYWN5IGFwcC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVzcGVjdFByaW1hcnlLZXlBdHRyaWJ1dGVzT25Db25uZWN0aW9uRmllbGQ6IGJvb2xlYW47XG5cbiAgcmVhZG9ubHkgZW5hYmxlU2VhcmNoTm9kZVRvTm9kZUVuY3J5cHRpb246IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gZW5hYmxlZCwgaW50ZXJuYWwgY2ZuIG91dHB1dHMgd2hpY2ggZXhpc3RlZCBpbiBBbXBsaWZ5LWdlbmVyYXRlZCBhcHBzIHdpbGwgY29udGludWUgdG8gYmUgZW1pdHRlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZVRyYW5zZm9ybWVyQ2ZuT3V0cHV0czogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGZvbGxvd2luZyBzY2hlbWEgdXBkYXRlcyByZXF1aXJlIHJlcGxhY2VtZW50IG9mIHRoZSB1bmRlcmx5aW5nIER5bmFtb0RCIHRhYmxlOlxuICAgKlxuICAgKiAgLSBSZW1vdmluZyBvciByZW5hbWluZyBhIG1vZGVsXG4gICAqICAtIE1vZGlmeWluZyB0aGUgcHJpbWFyeSBrZXkgb2YgYSBtb2RlbFxuICAgKiAgLSBNb2RpZnlpbmcgYSBMb2NhbCBTZWNvbmRhcnkgSW5kZXggb2YgYSBtb2RlbCAob25seSBhcHBsaWVzIHRvIHByb2plY3RzIHdpdGggc2Vjb25kYXJ5S2V5QXNHU0kgdHVybmVkIG9mZilcbiAgICpcbiAgICogQUxMIERBVEEgV0lMTCBCRSBMT1NUIHdoZW4gdGhlIHRhYmxlIHJlcGxhY2VtZW50IGhhcHBlbnMuIFdoZW4gZW5hYmxlZCwgZGVzdHJ1Y3RpdmUgdXBkYXRlcyBhcmUgYWxsb3dlZC5cbiAgICogVGhpcyB3aWxsIG9ubHkgYWZmZWN0IER5bmFtb0RCIHRhYmxlcyB3aXRoIHByb3Zpc2lvbiBzdHJhdGVneSBcIkFNUExJRllfVEFCTEVcIi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dEZXN0cnVjdGl2ZUdyYXBocWxTY2hlbWFVcGRhdGVzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGlzIGJlaGF2aW9yIHdpbGwgb25seSBjb21lIGludG8gZWZmZWN0IHdoZW4gYm90aCBcImFsbG93RGVzdHJ1Y3RpdmVHcmFwaHFsU2NoZW1hVXBkYXRlc1wiIGFuZCB0aGlzIHZhbHVlIGFyZSBzZXQgdG8gdHJ1ZVxuICAgKlxuICAgKiBXaGVuIGVuYWJsZWQsIGFueSBHU0kgdXBkYXRlIG9wZXJhdGlvbiB3aWxsIHJlcGxhY2UgdGhlIHRhYmxlIGluc3RlYWQgb2YgaXRlcmF0aXZlIGRlcGxveW1lbnQsIHdoaWNoIHdpbGwgV0lQRSBBTEwgRVhJU1RJTkcgREFUQSBidXRcbiAgICogY29zdCBtdWNoIGxlc3MgdGltZSBmb3IgZGVwbG95bWVudCBUaGlzIHdpbGwgb25seSBhZmZlY3QgRHluYW1vREIgdGFibGVzIHdpdGggcHJvdmlzaW9uIHN0cmF0ZWd5IFwiQU1QTElGWV9UQUJMRVwiLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSByZXBsYWNlVGFibGVVcG9uR3NpVXBkYXRlOiBib29sZWFuO1xufVxuLyogYzggaWdub3JlIHN0b3AgKi9cblxuLyoqXG4gKiBBIHV0aWxpdHkgaW50ZXJmYWNlIGVxdWl2YWxlbnQgdG8gUGFydGlhbDxUcmFuc2xhdGlvbkJlaGF2aW9yPi5cbiAqL1xuLyogYzggaWdub3JlIHN0YXJ0ICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcnRpYWxUcmFuc2xhdGlvbkJlaGF2aW9yIHtcbiAgLyoqXG4gICAqIFJlc3RvcmUgcGFyaXR5IHcvIEdRTHYxIEBtb2RlbCBwYXJhbWV0ZXIgYmVoYXZpb3IsIHdoZXJlIHNldHRpbmcgYSBzaW5nbGUgZmllbGQgZG9lc24ndCBpbXBsaWNpdGx5IHNldCB0aGUgb3RoZXIgZmllbGRzIHRvIG51bGwuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZERlZXBNZXJnZURpcmVjdGl2ZUNvbmZpZ0RlZmF1bHRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGlzYWJsZSByZXNvbHZlciBkZWR1cGluZywgdGhpcyBjYW4gc29tZXRpbWVzIGNhdXNlIHByb2JsZW1zIGJlY2F1c2UgZGVkdXBlIG9yZGVyaW5nIGlzbid0IHN0YWJsZSB0b2RheSwgd2hpY2ggY2FuXG4gICAqIGxlYWQgdG8gY2lyY3VsYXIgZGVwZW5kZW5jaWVzIGFjcm9zcyBzdGFja3MgaWYgbW9kZWxzIGFyZSByZW9yZGVyZWQuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGRpc2FibGVSZXNvbHZlckRlZHVwaW5nPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRW5hYmxpbmcgc2FuZGJveCBtb2RlIHdpbGwgZW5hYmxlIGFwaSBrZXkgYXV0aCBvbiBhbGwgbW9kZWxzIGluIHRoZSB0cmFuc2Zvcm1lZCBzY2hlbWEuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBzYW5kYm94TW9kZUVuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbnN1cmUgdGhhdCBvaWRjIGFuZCB1c2VyUG9vbCBhdXRoIHVzZSB0aGUgYHN1YmAgZmllbGQgaW4gdGhlIGZvciB0aGUgdXNlcm5hbWUgZmllbGQsIHdoaWNoIGRpc2FsbG93cyBuZXcgdXNlcnMgd2l0aCB0aGUgc2FtZVxuICAgKiBpZCB0byBhY2Nlc3MgZGF0YSBmcm9tIGEgZGVsZXRlZCB1c2VyIGluIHRoZSBwb29sLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSB1c2VTdWJVc2VybmFtZUZvckRlZmF1bHRJZGVudGl0eUNsYWltPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBlbmFibGVkLCBzdXBwcmVzc2VzIGRlZmF1bHQgYmVoYXZpb3Igb2YgcmVkYWN0aW5nIHJlbGF0aW9uYWwgZmllbGRzIHdoZW4gYXV0aCBydWxlcyBkbyBub3QgZXhhY3RseSBtYXRjaC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHN1YnNjcmlwdGlvbnNJbmhlcml0UHJpbWFyeUF1dGg/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbnN1cmUgdGhhdCB0aGUgb3duZXIgZmllbGQgaXMgc3RpbGwgcG9wdWxhdGVkIGV2ZW4gaWYgYSBzdGF0aWMgaWFtIG9yIGdyb3VwIGF1dGhvcml6YXRpb24gYXBwbGllcy5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcG9wdWxhdGVPd25lckZpZWxkRm9yU3RhdGljR3JvdXBBdXRoPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgZW5hYmxlZCwgZGlzYWJsZSBhcGkga2V5IHJlc291cmNlIGdlbmVyYXRpb24gZXZlbiBpZiBzcGVjaWZpZWQgYXMgYW4gYXV0aCBydWxlIG9uIHRoZSBjb25zdHJ1Y3QuXG4gICAqIFRoaXMgaXMgYSBsZWdhY3kgcGFyYW1ldGVyIGZyb20gdGhlIEdyYXBocWwgVHJhbnNmb3JtZXIgZXhpc3RpbmcgaW4gQW1wbGlmeSBDTEksIG5vdCByZWNvbW1lbmRlZCB0byBjaGFuZ2UuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBzdXBwcmVzc0FwaUtleUdlbmVyYXRpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBkaXNhYmxlZCwgZ2VuZXJhdGVkIEBpbmRleCBhcyBhbiBMU0kgaW5zdGVhZCBvZiBhIEdTSS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgc2Vjb25kYXJ5S2V5QXNHU0k/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBdXRvbWF0ZSBnZW5lcmF0aW9uIG9mIHF1ZXJ5IG5hbWVzLCBhbmQgYXMgYSByZXN1bHQgYXR0YWNoaW5nIGFsbCBpbmRleGVzIGFzIHF1ZXJpZXMgdG8gdGhlIGdlbmVyYXRlZCBBcGkuXG4gICAqIElmIGVuYWJsZWQsIEBpbmRleCBjYW4gYmUgcHJvdmlkZWQgYSBudWxsIG5hbWUgZmllbGQgdG8gZGlzYWJsZSB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUgcXVlcnkgb24gdGhlIEFwaS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlQXV0b0luZGV4UXVlcnlOYW1lcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBjdXN0b20gcHJpbWFyeSBrZXkgc3VwcG9ydCwgdGhlcmUncyBubyBnb29kIHJlYXNvbiB0byBkaXNhYmxlIHRoaXMgdW5sZXNzIHRyeWluZyBub3QgdG8gdXBkYXRlIGEgbGVnYWN5IGFwcC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVzcGVjdFByaW1hcnlLZXlBdHRyaWJ1dGVzT25Db25uZWN0aW9uRmllbGQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBlbmFibGVkLCBzZXQgbm9kZVRvTm9kZUVuY3J5cHRpb24gb24gdGhlIHNlYXJjaGFibGUgZG9tYWluIChpZiBvbmUgZXhpc3RzKS4gTm90IHJlY29tbWVuZGVkIGZvciB1c2UsIHByZWZlclxuICAgKiB0byB1c2UgYE9iamVjdC52YWx1ZXMocmVzb3VyY2VzLmFkZGl0aW9uYWxSZXNvdXJjZXNbJ0FXUzo6RWxhc3RpY3NlYXJjaDo6RG9tYWluJ10pLmZvckVhY2goKGRvbWFpbjogQ2ZuRG9tYWluKSA9PiB7XG4gICAqICAgZG9tYWluLk5vZGVUb05vZGVFbmNyeXB0aW9uT3B0aW9ucyA9IHsgRW5hYmxlZDogVHJ1ZSB9O1xuICAgKiB9KTtcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZVNlYXJjaE5vZGVUb05vZGVFbmNyeXB0aW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBlbmFibGVkLCBpbnRlcm5hbCBjZm4gb3V0cHV0cyB3aGljaCBleGlzdGVkIGluIEFtcGxpZnktZ2VuZXJhdGVkIGFwcHMgd2lsbCBjb250aW51ZSB0byBiZSBlbWl0dGVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlVHJhbnNmb3JtZXJDZm5PdXRwdXRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGZvbGxvd2luZyBzY2hlbWEgdXBkYXRlcyByZXF1aXJlIHJlcGxhY2VtZW50IG9mIHRoZSB1bmRlcmx5aW5nIER5bmFtb0RCIHRhYmxlOlxuICAgKlxuICAgKiAgLSBSZW1vdmluZyBvciByZW5hbWluZyBhIG1vZGVsXG4gICAqICAtIE1vZGlmeWluZyB0aGUgcHJpbWFyeSBrZXkgb2YgYSBtb2RlbFxuICAgKiAgLSBNb2RpZnlpbmcgYSBMb2NhbCBTZWNvbmRhcnkgSW5kZXggb2YgYSBtb2RlbCAob25seSBhcHBsaWVzIHRvIHByb2plY3RzIHdpdGggc2Vjb25kYXJ5S2V5QXNHU0kgdHVybmVkIG9mZilcbiAgICpcbiAgICogQUxMIERBVEEgV0lMTCBCRSBMT1NUIHdoZW4gdGhlIHRhYmxlIHJlcGxhY2VtZW50IGhhcHBlbnMuIFdoZW4gZW5hYmxlZCwgZGVzdHJ1Y3RpdmUgdXBkYXRlcyBhcmUgYWxsb3dlZC5cbiAgICogVGhpcyB3aWxsIG9ubHkgYWZmZWN0IER5bmFtb0RCIHRhYmxlcyB3aXRoIHByb3Zpc2lvbiBzdHJhdGVneSBcIkFNUExJRllfVEFCTEVcIi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dEZXN0cnVjdGl2ZUdyYXBocWxTY2hlbWFVcGRhdGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhpcyBiZWhhdmlvciB3aWxsIG9ubHkgY29tZSBpbnRvIGVmZmVjdCB3aGVuIGJvdGggXCJhbGxvd0Rlc3RydWN0aXZlR3JhcGhxbFNjaGVtYVVwZGF0ZXNcIiBhbmQgdGhpcyB2YWx1ZSBhcmUgc2V0IHRvIHRydWVcbiAgICpcbiAgICogV2hlbiBlbmFibGVkLCBhbnkgZ2xvYmFsIHNlY29uZGFyeSBpbmRleCB1cGRhdGUgb3BlcmF0aW9uIHdpbGwgcmVwbGFjZSB0aGUgdGFibGUgaW5zdGVhZCBvZiBpdGVyYXRpdmUgZGVwbG95bWVudCwgd2hpY2ggd2lsbCBXSVBFIEFMTFxuICAgKiBFWElTVElORyBEQVRBIGJ1dCBjb3N0IG11Y2ggbGVzcyB0aW1lIGZvciBkZXBsb3ltZW50IFRoaXMgd2lsbCBvbmx5IGFmZmVjdCBEeW5hbW9EQiB0YWJsZXMgd2l0aCBwcm92aXNpb24gc3RyYXRlZ3kgXCJBTVBMSUZZX1RBQkxFXCIuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHJlcGxhY2VUYWJsZVVwb25Hc2lVcGRhdGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIGVuYWJsZWQsIHNhbmRib3ggZGVwbG95bWVudCB3aWxsIGJlIGZhc3RlciBieSBza2lwcGluZyB0aGUgY3JlYXRpb24gb2YgdGhlIEhvdHN3YXAgZnJpZW5kbHkgcmVzb3VyY2VzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAaW50ZXJuYWxcbiAgICogV0FSTklORzogQWx0aG91Z2ggdGhpcyBoYXMgYHB1YmxpY2AgYWNjZXNzLCBpdCBpcyBpbnRlbmRlZCBmb3IgaW50ZXJuYWwgdXNlIGFuZCBzaG91bGQgbm90IGJlIHVzZWQgZGlyZWN0bHkuXG4gICAqIFRoZSBiZWhhdmlvciBvZiB0aGlzIG1heSBjaGFuZ2Ugd2l0aG91dCB3YXJuaW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgX3Byb3Zpc2lvbkhvdHN3YXBGcmllbmRseVJlc291cmNlcz86IGJvb2xlYW47XG59XG4vKiBjOCBpZ25vcmUgc3RvcCAqL1xuXG4vKipcbiAqIEdyYXBocWwgQXBpIGRlZmluaXRpb24sIHdoaWNoIGNhbiBiZSBpbXBsZW1lbnRlZCBpbiBtdWx0aXBsZSB3YXlzLlxuICovXG4vKiBjOCBpZ25vcmUgc3RhcnQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUFtcGxpZnlHcmFwaHFsRGVmaW5pdGlvbiB7XG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHNjaGVtYSBkZWZpbml0aW9uIGFzIGEgZ3JhcGhxbCBzdHJpbmcsIHdpdGggYW1wbGlmeSBkaXJlY3RpdmVzIGFsbG93ZWQuXG4gICAqIEByZXR1cm5zIHRoZSByZW5kZXJlZCBzY2hlbWEuXG4gICAqL1xuICByZWFkb25seSBzY2hlbWE6IHN0cmluZztcblxuICAvKipcbiAgICogUmV0cmlldmUgYW55IGZ1bmN0aW9uIHNsb3RzIGRlZmluZWQgZXhwbGljaXRseSBpbiB0aGUgQXBpIGRlZmluaXRpb24uXG4gICAqIEByZXR1cm5zIGdlbmVyYXRlZCBmdW5jdGlvbiBzbG90c1xuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb25TbG90czogRnVuY3Rpb25TbG90W107XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIHRoZSByZWZlcmVuY2VzIHRvIGFueSBsYW1iZGEgZnVuY3Rpb25zIHVzZWQgaW4gdGhlIGRlZmluaXRpb24uXG4gICAqIFVzZWZ1bCBmb3Igd2lyaW5nIHRocm91Z2ggYXdzX2xhbWJkYS5GdW5jdGlvbiBjb25zdHJ1Y3RzIGludG8gdGhlIGRlZmluaXRpb24gZGlyZWN0bHksXG4gICAqIGFuZCBnZW5lcmF0ZWQgcmVmZXJlbmNlcyB0byBpbnZva2UgdGhlbS5cbiAgICogQHJldHVybnMgYW55IGxhbWJkYSBmdW5jdGlvbnMsIGtleWVkIGJ5IHRoZWlyIHJlZmVyZW5jZWQgJ25hbWUnIGluIHRoZSBnZW5lcmF0ZWQgc2NoZW1hLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVmZXJlbmNlZExhbWJkYUZ1bmN0aW9ucz86IFJlY29yZDxzdHJpbmcsIElGdW5jdGlvbj47XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIHRoZSBkYXRhc291cmNlIHN0cmF0ZWd5IG1hcHBpbmcuIFRoZSBkZWZhdWx0IHN0cmF0ZWd5IGlzIHRvIHVzZSBEeW5hbW9EQiBmcm9tIENsb3VkRm9ybWF0aW9uLlxuICAgKiBAcmV0dXJucyBkYXRhc291cmNlIHN0cmF0ZWd5IG1hcHBpbmdcbiAgICovXG4gIHJlYWRvbmx5IGRhdGFTb3VyY2VTdHJhdGVnaWVzOiBSZWNvcmQ8c3RyaW5nLCBNb2RlbERhdGFTb3VyY2VTdHJhdGVneT47XG5cbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIGN1c3RvbSBRdWVyeSBvciBNdXRhdGlvbiBTUUwgY29tbWFuZHMgdG8gdGhlIGRhdGEgc291cmNlcyB0aGF0IHJlc29sdmVzIHRoZW0uXG4gICAqIEByZXR1cm5zIGEgbGlzdCBvZiBtYXBwaW5ncyBmcm9tIGN1c3RvbSBTUUwgY29tbWFuZHMgdG8gZGF0YSBzb3VyY2VzXG4gICAqL1xuICByZWFkb25seSBjdXN0b21TcWxEYXRhU291cmNlU3RyYXRlZ2llcz86IEN1c3RvbVNxbERhdGFTb3VyY2VTdHJhdGVneVtdO1xufVxuLyogYzggaWdub3JlIHN0b3AgKi9cblxuLyoqXG4gKiBFbnRyeSByZXByZXNlbnRpbmcgdGhlIHJlcXVpcmVkIG91dHB1dCBmcm9tIHRoZSBiYWNrZW5kIGZvciBjb2RlZ2VuIGdlbmVyYXRlIGNvbW1hbmRzIHRvIHdvcmsuXG4gKi9cbi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuZXhwb3J0IGludGVyZmFjZSBJQmFja2VuZE91dHB1dEVudHJ5IHtcbiAgLyoqXG4gICAqIFRoZSBwcm90b2NvbCB2ZXJzaW9uIGZvciB0aGlzIGJhY2tlbmQgb3V0cHV0LlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RyaW5nLW1hcCBwYXlsb2FkIG9mIGdlbmVyYXRlZCBjb25maWcgdmFsdWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF5bG9hZDogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cbi8qIGM4IGlnbm9yZSBzdG9wICovXG5cbi8qKlxuICogQmFja2VuZCBvdXRwdXQgc3RyYXRlZ3kgdXNlZCB0byB3cml0ZSBjb25maWcgcmVxdWlyZWQgZm9yIGNvZGVnZW4gdGFza3MuXG4gKi9cbi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuZXhwb3J0IGludGVyZmFjZSBJQmFja2VuZE91dHB1dFN0b3JhZ2VTdHJhdGVneSB7XG4gIC8qKlxuICAgKiBBZGQgYW4gZW50cnkgdG8gYmFja2VuZCBvdXRwdXQuXG4gICAqIEBwYXJhbSBrZXlOYW1lIHRoZSBrZXlcbiAgICogQHBhcmFtIGJhY2tlbmRPdXRwdXRFbnRyeSB0aGUgcmVjb3JkIHRvIHN0b3JlIGluIHRoZSBiYWNrZW5kIG91dHB1dFxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZXRob2Qtc2lnbmF0dXJlLXN0eWxlXG4gIGFkZEJhY2tlbmRPdXRwdXRFbnRyeShrZXlOYW1lOiBzdHJpbmcsIGJhY2tlbmRPdXRwdXRFbnRyeTogSUJhY2tlbmRPdXRwdXRFbnRyeSk6IHZvaWQ7XG59XG4vKiBjOCBpZ25vcmUgc3RvcCAqL1xuXG4vKipcbiAqIElucHV0IHByb3BzIGZvciB0aGUgQW1wbGlmeUdyYXBocWxBcGkgY29uc3RydWN0LiBTcGVjaWZpZXMgd2hhdCB0aGUgaW5wdXQgdG8gdHJhbnNmb3JtIGludG8gYW4gQXBpLCBhbmQgY29uZmlndXJhdGlvbnMgZm9yXG4gKiB0aGUgdHJhbnNmb3JtYXRpb24gcHJvY2Vzcy5cbiAqL1xuLyogYzggaWdub3JlIHN0YXJ0ICovXG5leHBvcnQgaW50ZXJmYWNlIEFtcGxpZnlHcmFwaHFsQXBpUHJvcHMge1xuICAvKipcbiAgICogVGhlIGRlZmluaXRpb24gdG8gdHJhbnNmb3JtIGluIGEgZnVsbCBBcGkuXG4gICAqIENhbiBiZSBjb25zdHJ1Y3RlZCB2aWEgdGhlIEFtcGxpZnlHcmFwaHFsRGVmaW5pdGlvbiBjbGFzcy5cbiAgICovXG4gIHJlYWRvbmx5IGRlZmluaXRpb246IElBbXBsaWZ5R3JhcGhxbERlZmluaXRpb247XG5cbiAgLyoqXG4gICAqIE5hbWUgdG8gYmUgdXNlZCBmb3IgdGhlIEFwcFN5bmMgQXBpLlxuICAgKiBEZWZhdWx0OiBjb25zdHJ1Y3QgaWQuXG4gICAqL1xuICByZWFkb25seSBhcGlOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXF1aXJlZCBhdXRoIG1vZGVzIGZvciB0aGUgQXBpLiBUaGlzIG9iamVjdCBtdXN0IGJlIGEgc3VwZXJzZXQgb2YgdGhlIGNvbmZpZ3VyZWQgYXV0aCBwcm92aWRlcnMgaW4gdGhlIEFwaSBkZWZpbml0aW9uLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcmVmZXIgdG8gaHR0cHM6Ly9kb2NzLmFtcGxpZnkuYXdzL2NsaS9ncmFwaHFsL2F1dGhvcml6YXRpb24tcnVsZXMvXG4gICAqL1xuICByZWFkb25seSBhdXRob3JpemF0aW9uTW9kZXM6IEF1dGhvcml6YXRpb25Nb2RlcztcblxuICAvKipcbiAgICogTGFtYmRhIGZ1bmN0aW9ucyByZWZlcmVuY2VkIGluIHRoZSBkZWZpbml0aW9ucydzIEBmdW5jdGlvbiBkaXJlY3RpdmVzLiBUaGUga2V5cyBvZiB0aGlzIG9iamVjdCBhcmUgZXhwZWN0ZWQgdG8gYmUgdGhlXG4gICAqIGZ1bmN0aW9uIG5hbWUgcHJvdmlkZWQgaW4gdGhlIGRlZmluaXRpb24sIGFuZCB2YWx1ZSBpcyB0aGUgZnVuY3Rpb24gdGhhdCBuYW1lIHJlZmVycyB0by4gSWYgYSBuYW1lIGlzIG5vdCBmb3VuZCBpbiB0aGlzXG4gICAqIG1hcCwgdGhlbiBpdCBpcyBpbnRlcnByZXRlZCBhcyB0aGUgYGZ1bmN0aW9uTmFtZWAsIGFuZCBhbiBhcm4gd2lsbCBiZSBjb25zdHJ1Y3RlZCB1c2luZyB0aGUgY3VycmVudCBhd3MgYWNjb3VudCBhbmQgcmVnaW9uXG4gICAqIChvciBvdmVycmlkZGVuIHZhbHVlcywgaWYgc2V0IGluIHRoZSBkaXJlY3RpdmUpLlxuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb25OYW1lTWFwPzogUmVjb3JkPHN0cmluZywgSUZ1bmN0aW9uPjtcblxuICAvKipcbiAgICogQ29uZmlndXJlIGNvbmZsaWN0IHJlc29sdXRpb24gb24gdGhlIEFwaSwgd2hpY2ggaXMgcmVxdWlyZWQgdG8gZW5hYmxlIERhdGFTdG9yZSBBcGkgZnVuY3Rpb25hbGl0eS5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHJlZmVyIHRvIGh0dHBzOi8vZG9jcy5hbXBsaWZ5LmF3cy9saWIvZGF0YXN0b3JlL2dldHRpbmctc3RhcnRlZC9xL3BsYXRmb3JtL2pzL1xuICAgKiBAZGVwcmVjYXRlZCB1c2UgZGF0YVN0b3JlQ29uZmlndXJhdGlvbiBpbnN0ZWFkLlxuICAgKi9cbiAgcmVhZG9ubHkgY29uZmxpY3RSZXNvbHV0aW9uPzogQ29uZmxpY3RSZXNvbHV0aW9uO1xuXG4gIC8qKlxuICAgKiBTdGFja01hcHBpbmdzIG92ZXJyaWRlIHRoZSBhc3NpZ25lZCBuZXN0ZWQgc3RhY2sgb24gYSBwZXItcmVzb3VyY2UgYmFzaXMuIE9ubHkgYXBwbGllcyB0byByZXNvbHZlcnMsIGFuZCB0YWtlcyB0aGUgZm9ybVxuICAgKiB7IDxsb2dpY2FsSWQ+OiA8c3RhY2tOYW1lPiB9XG4gICAqIEl0IGlzIG5vdCByZWNvbW1lbmRlZCB0byB1c2UgdGhpcyBwYXJhbWV0ZXIgdW5sZXNzIHlvdSBhcmUgZW5jb3VudGVyaW5nIHN0YWNrIHJlc291cmNlIGNvdW50IGxpbWl0cywgYW5kIHdvcnRoIG5vdGluZyB0aGF0XG4gICAqIGFmdGVyIGluaXRpYWwgZGVwbG95bWVudCBBcHBTeW5jIHJlc29sdmVycyBjYW5ub3QgYmUgbW92ZWQgYmV0d2VlbiBuZXN0ZWQgc3RhY2tzLCB0aGV5IHdpbGwgbmVlZCB0byBiZSByZW1vdmVkIGZyb20gdGhlIGFwcCxcbiAgICogdGhlbiByZS1hZGRlZCBmcm9tIGEgbmV3IHN0YWNrLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tNYXBwaW5ncz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlcyBmb3IgYSBnaXZlbiBzbG90IGluIHRoZSBnZW5lcmF0ZWQgcmVzb2x2ZXIgcGlwZWxpbmVzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB3aGF0IHNsb3RzIGFyZSBhdmFpbGFibGUsXG4gICAqIHJlZmVyIHRvIGh0dHBzOi8vZG9jcy5hbXBsaWZ5LmF3cy9jbGkvZ3JhcGhxbC9jdXN0b20tYnVzaW5lc3MtbG9naWMvI292ZXJyaWRlLWFtcGxpZnktZ2VuZXJhdGVkLXJlc29sdmVycy5cbiAgICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uU2xvdHM/OiBGdW5jdGlvblNsb3RbXTtcblxuICAvKipcbiAgICogUHJvdmlkZSBhIGxpc3Qgb2YgYWRkaXRpb25hbCBjdXN0b20gdHJhbnNmb3JtZXJzIHdoaWNoIGFyZSBpbmplY3RlZCBpbnRvIHRoZSB0cmFuc2Zvcm0gcHJvY2Vzcy5cbiAgICogVGhlc2UgY3VzdG9tIHRyYW5zZm9ybWVycyBtdXN0IGJlIGltcGxlbWVudGVkIHdpdGggYXdzLWNkay1saWIgPj0yLjEyOS4wLCBhbmQgQGF3cy1hbXBsaWZ5L2dyYXBocWwtdHJhbnNmb3JtZXItY29yZSA+PSAyLjEuMVxuICAgKiBAZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSB0cmFuc2Zvcm1lclBsdWdpbnM/OiBhbnlbXTtcblxuICAvKipcbiAgICogSWYgdXNpbmcgcHJlZGljdGlvbnMsIGEgYnVja2V0IG11c3QgYmUgcHJvdmlkZWQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIHNlYXJjaCBmb3IgYXNzZXRzLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJlZGljdGlvbnNCdWNrZXQ/OiBJQnVja2V0O1xuXG4gIC8qKlxuICAgKiBUaGlzIHJlcGxhY2VzIGZlYXR1cmUgZmxhZ3MgZnJvbSB0aGUgQXBpIGNvbnN0cnVjdCwgZm9yIGdlbmVyYWwgaW5mb3JtYXRpb24gb24gd2hhdCB0aGVzZSBwYXJhbWV0ZXJzIGRvLFxuICAgKiByZWZlciB0byBodHRwczovL2RvY3MuYW1wbGlmeS5hd3MvY2xpL3JlZmVyZW5jZS9mZWF0dXJlLWZsYWdzLyNncmFwaFFMVHJhbnNmb3JtZXJcbiAgICovXG4gIHJlYWRvbmx5IHRyYW5zbGF0aW9uQmVoYXZpb3I/OiBQYXJ0aWFsVHJhbnNsYXRpb25CZWhhdmlvcjtcblxuICAvKipcbiAgICogU3RyYXRlZ3kgdG8gc3RvcmUgY29uc3RydWN0IG91dHB1dHMuIElmIG5vIG91dHB1dFN0b3JhZ2VTdHJhdGVneSBpcyBwcm92aWRlZCBhIGRlZmF1bHQgc3RyYXRlZ3kgd2lsbCBiZSB1c2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0U3RvcmFnZVN0cmF0ZWd5PzogSUJhY2tlbmRPdXRwdXRTdG9yYWdlU3RyYXRlZ3k7XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZSBEYXRhU3RvcmUgY29uZmxpY3QgcmVzb2x1dGlvbiBvbiB0aGUgQXBpLiBDb25mbGljdCByZXNvbHV0aW9uIGlzIHJlcXVpcmVkIHRvIGVuYWJsZSBEYXRhU3RvcmUgQXBpIGZ1bmN0aW9uYWxpdHkuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCByZWZlciB0byBodHRwczovL2RvY3MuYW1wbGlmeS5hd3MvbGliL2RhdGFzdG9yZS9nZXR0aW5nLXN0YXJ0ZWQvcS9wbGF0Zm9ybS9qcy9cbiAgICovXG4gIHJlYWRvbmx5IGRhdGFTdG9yZUNvbmZpZ3VyYXRpb24/OiBEYXRhU3RvcmVDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGxvZ2dpbmcgY29uZmlndXJhdGlvbiB3aGVuIHdyaXRpbmcgR3JhcGhRTCBvcGVyYXRpb25zIGFuZCB0cmFjaW5nIHRvIEFtYXpvbiBDbG91ZFdhdGNoIGZvciBhbiBBV1MgQXBwU3luYyBHcmFwaFFMIEFQSS5cbiAgICovXG4gIHJlYWRvbmx5IGxvZ2dpbmc/OiBMb2dnaW5nO1xufVxuLyogYzggaWdub3JlIHN0b3AgKi9cblxuLyoqXG4gKiBMMSBDREsgcmVzb3VyY2VzIGZyb20gdGhlIEFwaSB3aGljaCB3ZXJlIGdlbmVyYXRlZCBhcyBwYXJ0IG9mIHRoZSB0cmFuc2Zvcm0uXG4gKiBUaGVzZSBhcmUgcG90ZW50aWFsbHkgc3RvcmVkIHVuZGVyIG5lc3RlZCBzdGFja3MsIGJ1dCBwcmVzZW50ZWQgb3JnYW5pemVkIGJ5IHR5cGUgaW5zdGVhZC5cbiAqL1xuLyogYzggaWdub3JlIHN0YXJ0ICovXG5leHBvcnQgaW50ZXJmYWNlIEFtcGxpZnlHcmFwaHFsQXBpQ2ZuUmVzb3VyY2VzIHtcbiAgLyoqXG4gICAqIFRoZSBHZW5lcmF0ZWQgQXBwU3luYyBBcGkgTDEgUmVzb3VyY2VcbiAgICovXG4gIHJlYWRvbmx5IGNmbkdyYXBocWxBcGk6IENmbkdyYXBoUUxBcGk7XG5cbiAgLyoqXG4gICAqIFRoZSBHZW5lcmF0ZWQgQXBwU3luYyBTY2hlbWEgTDEgUmVzb3VyY2VcbiAgICovXG4gIHJlYWRvbmx5IGNmbkdyYXBocWxTY2hlbWE6IENmbkdyYXBoUUxTY2hlbWE7XG5cbiAgLyoqXG4gICAqIFRoZSBHZW5lcmF0ZWQgQXBwU3luYyBBcGkgS2V5IEwxIFJlc291cmNlXG4gICAqL1xuICByZWFkb25seSBjZm5BcGlLZXk/OiBDZm5BcGlLZXk7XG5cbiAgLyoqXG4gICAqIFRoZSBHZW5lcmF0ZWQgQXBwU3luYyBSZXNvbHZlciBMMSBSZXNvdXJjZXMsIGtleWVkIGJ5IGxvZ2ljYWxJZC5cbiAgICovXG4gIHJlYWRvbmx5IGNmblJlc29sdmVyczogUmVjb3JkPHN0cmluZywgQ2ZuUmVzb2x2ZXI+O1xuXG4gIC8qKlxuICAgKiBUaGUgR2VuZXJhdGVkIEFwcFN5bmMgRnVuY3Rpb24gTDEgUmVzb3VyY2VzLCBrZXllZCBieSBsb2dpY2FsSWQuXG4gICAqL1xuICByZWFkb25seSBjZm5GdW5jdGlvbkNvbmZpZ3VyYXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBDZm5GdW5jdGlvbkNvbmZpZ3VyYXRpb24+O1xuXG4gIC8qKlxuICAgKiBUaGUgR2VuZXJhdGVkIEFwcFN5bmMgRGF0YVNvdXJjZSBMMSBSZXNvdXJjZXMsIGtleWVkIGJ5IGxvZ2ljYWxJZC5cbiAgICovXG4gIHJlYWRvbmx5IGNmbkRhdGFTb3VyY2VzOiBSZWNvcmQ8c3RyaW5nLCBDZm5EYXRhU291cmNlPjtcblxuICAvKipcbiAgICogVGhlIEdlbmVyYXRlZCBEeW5hbW9EQiBUYWJsZSBMMSBSZXNvdXJjZXMsIGtleWVkIGJ5IGxvZ2ljYWxJZC5cbiAgICovXG4gIHJlYWRvbmx5IGNmblRhYmxlczogUmVjb3JkPHN0cmluZywgQ2ZuVGFibGU+O1xuXG4gIC8qKlxuICAgKiBUaGUgR2VuZXJhdGVkIEFtcGxpZnkgRHluYW1vRGIgVGFibGUgTDEgcmVzb3VyY2Ugd3JhcHBlciwga2V5ZWQgYnkgbW9kZWwgdHlwZSBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgYW1wbGlmeUR5bmFtb0RiVGFibGVzOiBSZWNvcmQ8c3RyaW5nLCBBbXBsaWZ5RHluYW1vRGJUYWJsZVdyYXBwZXI+O1xuXG4gIC8qKlxuICAgKiBUaGUgR2VuZXJhdGVkIElBTSBSb2xlIEwxIFJlc291cmNlcywga2V5ZWQgYnkgbG9naWNhbElkLlxuICAgKi9cbiAgcmVhZG9ubHkgY2ZuUm9sZXM6IFJlY29yZDxzdHJpbmcsIENmblJvbGU+O1xuXG4gIC8qKlxuICAgKiBUaGUgR2VuZXJhdGVkIExhbWJkYSBGdW5jdGlvbiBMMSBSZXNvdXJjZXMsIGtleWVkIGJ5IGZ1bmN0aW9uIG5hbWUuXG4gICAqL1xuICByZWFkb25seSBjZm5GdW5jdGlvbnM6IFJlY29yZDxzdHJpbmcsIENmbkZ1bmN0aW9uPjtcblxuICAvKipcbiAgICogUmVtYWluaW5nIEwxIHJlc291cmNlcyBnZW5lcmF0ZWQsIGtleWVkIGJ5IGxvZ2ljYWxJZC5cbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxDZm5SZXNvdXJjZXM6IFJlY29yZDxzdHJpbmcsIENmblJlc291cmNlPjtcbn1cbi8qIGM4IGlnbm9yZSBzdG9wICovXG5cbi8qKlxuICogQWNjZXNzaWJsZSByZXNvdXJjZXMgZnJvbSB0aGUgQXBpIHdoaWNoIHdlcmUgZ2VuZXJhdGVkIGFzIHBhcnQgb2YgdGhlIHRyYW5zZm9ybS5cbiAqIFRoZXNlIGFyZSBwb3RlbnRpYWxseSBzdG9yZWQgdW5kZXIgbmVzdGVkIHN0YWNrcywgYnV0IHByZXNlbnRlZCBvcmdhbml6ZWQgYnkgdHlwZSBpbnN0ZWFkLlxuICovXG4vKiBjOCBpZ25vcmUgc3RhcnQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQW1wbGlmeUdyYXBocWxBcGlSZXNvdXJjZXMge1xuICAvKipcbiAgICogVGhlIEdlbmVyYXRlZCBBcHBTeW5jIEFwaSBMMiBSZXNvdXJjZSwgaW5jbHVkZXMgdGhlIFNjaGVtYS5cbiAgICovXG4gIHJlYWRvbmx5IGdyYXBocWxBcGk6IElHcmFwaHFsQXBpO1xuXG4gIC8qKlxuICAgKiBUaGUgR2VuZXJhdGVkIER5bmFtb0RCIFRhYmxlIEwyIFJlc291cmNlcywga2V5ZWQgYnkgbG9naWNhbElkLlxuICAgKi9cbiAgcmVhZG9ubHkgdGFibGVzOiBSZWNvcmQ8c3RyaW5nLCBJVGFibGU+O1xuXG4gIC8qKlxuICAgKiBUaGUgR2VuZXJhdGVkIElBTSBSb2xlIEwyIFJlc291cmNlcywga2V5ZWQgYnkgbG9naWNhbElkLlxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZXM6IFJlY29yZDxzdHJpbmcsIElSb2xlPjtcblxuICAvKipcbiAgICogVGhlIEdlbmVyYXRlZCBMYW1iZGEgRnVuY3Rpb24gTDEgUmVzb3VyY2VzLCBrZXllZCBieSBmdW5jdGlvbiBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBJRnVuY3Rpb24+O1xuXG4gIC8qKlxuICAgKiBMMSBDZm4gUmVzb3VyY2VzLCBmb3Igd2hlbiBkaXBwaW5nIGRvd24gYSBsZXZlbCBvZiBhYnN0cmFjdGlvbiBpcyBkZXNpcmFibGUuXG4gICAqL1xuICByZWFkb25seSBjZm5SZXNvdXJjZXM6IEFtcGxpZnlHcmFwaHFsQXBpQ2ZuUmVzb3VyY2VzO1xuXG4gIC8qKlxuICAgKiBOZXN0ZWQgU3RhY2tzIGdlbmVyYXRlZCBieSB0aGUgQXBpIENvbnN0cnVjdC5cbiAgICovXG4gIHJlYWRvbmx5IG5lc3RlZFN0YWNrczogUmVjb3JkPHN0cmluZywgTmVzdGVkU3RhY2s+O1xufVxuLyogYzggaWdub3JlIHN0b3AgKi9cblxuLyoqXG4gKiBJbnB1dCB0eXBlIHByb3BlcnRpZXMgd2hlbiBhZGRpbmcgYSBuZXcgYXBwc3luYy5BcHBzeW5jRnVuY3Rpb24gdG8gdGhlIGdlbmVyYXRlZCBBUEkuXG4gKiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gdGhlIE9taXQ8YXBwc3luYy5BcHBzeW5jRnVuY3Rpb25Qcm9wcywgJ2FwaSc+LlxuICovXG4vKiBjOCBpZ25vcmUgc3RhcnQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWRkRnVuY3Rpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiB0aGUgZGF0YSBzb3VyY2UgbGlua2VkIHRvIHRoaXMgQXBwU3luYyBGdW5jdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGF0YVNvdXJjZTogQmFzZURhdGFTb3VyY2U7XG5cbiAgLyoqXG4gICAqIHRoZSBuYW1lIG9mIHRoZSBBcHBTeW5jIEZ1bmN0aW9uXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIHRoZSBkZXNjcmlwdGlvbiBmb3IgdGhpcyBBcHBTeW5jIEZ1bmN0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiB0aGUgcmVxdWVzdCBtYXBwaW5nIHRlbXBsYXRlIGZvciB0aGUgQXBwU3luYyBGdW5jdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHJlcXVlc3QgbWFwcGluZyB0ZW1wbGF0ZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWVzdE1hcHBpbmdUZW1wbGF0ZT86IE1hcHBpbmdUZW1wbGF0ZTtcblxuICAvKipcbiAgICogdGhlIHJlc3BvbnNlIG1hcHBpbmcgdGVtcGxhdGUgZm9yIHRoZSBBcHBTeW5jIEZ1bmN0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gcmVzcG9uc2UgbWFwcGluZyB0ZW1wbGF0ZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVzcG9uc2VNYXBwaW5nVGVtcGxhdGU/OiBNYXBwaW5nVGVtcGxhdGU7XG5cbiAgLyoqXG4gICAqIFRoZSBmdW5jdGlvbnMgcnVudGltZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGZ1bmN0aW9uIHJ1bnRpbWUsIFZUTCBtYXBwaW5nIHRlbXBsYXRlcyB1c2VkXG4gICAqL1xuICByZWFkb25seSBydW50aW1lPzogRnVuY3Rpb25SdW50aW1lO1xuXG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb24gY29kZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGNvZGUgaXMgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgY29kZT86IENvZGU7XG59XG4vKiBjOCBpZ25vcmUgc3RvcCAqL1xuIl19
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtFQUErRTtBQUMvRSwrRUFBK0U7QUFDL0UsOEVBQThFO0FBQzlFLG9FQUFvRTtBQUNwRSw4REFBOEQ7QUFDOUQsRUFBRTtBQUNGLDZFQUE2RTtBQUM3RSw2REFBNkQ7QUFDN0QsK0VBQStFOztBQWkvQi9FLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbIi8vICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcbi8vIE5vdGUgdGhhdCBzZWN0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIGV4Y2x1ZGVkIGZyb20gdGVzdCBjb3ZlcmFnZSBtZXRyaWNzIHdpdGhcbi8vICdjOCBpZ25vcmUnIGNvbW1lbnRzLiBJZiB5b3UgYWRkIGNvZGUgdG8gdGhpcyBmaWxlLCBzdXBwcmVzcyBub24tZXhlY3V0YWJsZVxuLy8gY29kZSBmcm9tIGNvdmVyYWdlIG1ldHJpY3MgYnkgdXNpbmcgYSBgYzggaWdub3JlYC4gSWYgdGhlIGNvZGUgaXNcbi8vIGV4ZWN1dGFibGUsIHlvdSBNVVNUIE5PVCBzdXBwcmVzcyBpdCBmcm9tIGNvdmVyYWdlIG1ldHJpY3MuXG4vL1xuLy8gYGlnbm9yZWAgc3RhdGVtZW50cyBtdXN0IG9ubHkgc3BhbiBhIHNpbmdsZSBibG9jayBvZiBjb2RlLiBEbyBub3QgYXBwbHkgYW5cbi8vIGBpZ25vcmVgIHN0YXRlbWVudCB0byBtdWx0aXBsZSBibG9ja3MsIG9yIHRoZSBlbnRpcmUgZmlsZS5cbi8vICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcblxuLyogYzggaWdub3JlIHN0YXJ0ICovXG5pbXBvcnQgeyBEdXJhdGlvbiwgQ2ZuUmVzb3VyY2UsIE5lc3RlZFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuLyogYzggaWdub3JlIHN0b3AgKi9cblxuLyogYzggaWdub3JlIHN0YXJ0ICovXG5pbXBvcnQge1xuICBDZm5HcmFwaFFMQXBpLFxuICBDZm5HcmFwaFFMU2NoZW1hLFxuICBDZm5BcGlLZXksXG4gIENmblJlc29sdmVyLFxuICBDZm5GdW5jdGlvbkNvbmZpZ3VyYXRpb24sXG4gIENmbkRhdGFTb3VyY2UsXG4gIElHcmFwaHFsQXBpLFxuICBNYXBwaW5nVGVtcGxhdGUsXG4gIEJhc2VEYXRhU291cmNlLFxuICBDb2RlLFxuICBGdW5jdGlvblJ1bnRpbWUsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1hcHBzeW5jJztcbi8qIGM4IGlnbm9yZSBzdG9wICovXG5cbi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuaW1wb3J0IHsgQ2ZuVGFibGUsIElUYWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1keW5hbW9kYic7XG4vKiBjOCBpZ25vcmUgc3RvcCAqL1xuXG4vKiBjOCBpZ25vcmUgc3RhcnQgKi9cbmltcG9ydCB7IElSb2xlLCBDZm5Sb2xlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG4vKiBjOCBpZ25vcmUgc3RvcCAqL1xuXG4vKiBjOCBpZ25vcmUgc3RhcnQgKi9cbmltcG9ydCB7IElVc2VyUG9vbCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2duaXRvJztcbi8qIGM4IGlnbm9yZSBzdG9wICovXG5cbi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuaW1wb3J0IHsgSUZ1bmN0aW9uLCBDZm5GdW5jdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuLyogYzggaWdub3JlIHN0b3AgKi9cblxuLyogYzggaWdub3JlIHN0YXJ0ICovXG5pbXBvcnQgeyBJQnVja2V0IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbi8qIGM4IGlnbm9yZSBzdG9wICovXG5cbi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuaW1wb3J0IHsgQW1wbGlmeUR5bmFtb0RiVGFibGVXcmFwcGVyIH0gZnJvbSAnLi9hbXBsaWZ5LWR5bmFtb2RiLXRhYmxlLXdyYXBwZXInO1xuLyogYzggaWdub3JlIHN0b3AgKi9cblxuLyogYzggaWdub3JlIHN0YXJ0ICovXG5pbXBvcnQgeyBDdXN0b21TcWxEYXRhU291cmNlU3RyYXRlZ3ksIE1vZGVsRGF0YVNvdXJjZVN0cmF0ZWd5IH0gZnJvbSAnLi9tb2RlbC1kYXRhc291cmNlLXN0cmF0ZWd5LXR5cGVzJztcbi8qIGM4IGlnbm9yZSBzdG9wICovXG5cbi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuaW1wb3J0IHsgTG9nZ2luZyB9IGZyb20gJy4vbG9nLWNvbmZpZy10eXBlcyc7XG4vKiBjOCBpZ25vcmUgc3RvcCAqL1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIElBTSBBdXRob3JpemF0aW9uIG9uIHRoZSBHcmFwaHFsIEFwaS5cbiAqIEBzdHJ1Y3QgLSByZXF1aXJlZCBzaW5jZSB0aGlzIGludGVyZmFjZSBiZWdpbnMgd2l0aCBhbiAnSSdcbiAqL1xuLyogYzggaWdub3JlIHN0YXJ0ICovXG5leHBvcnQgaW50ZXJmYWNlIElBTUF1dGhvcml6YXRpb25Db25maWcge1xuICAvKipcbiAgICogSUQgZm9yIHRoZSBDb2duaXRvIElkZW50aXR5IFBvb2wgdmVuZGluZyBhdXRoIGFuZCB1bmF1dGggcm9sZXMuXG4gICAqIEZvcm1hdDogYDxyZWdpb24+OjxpZCBzdHJpbmc+YFxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgJ0lkZW50aXR5UG9vbEF1dGhvcml6YXRpb25Db25maWcuaWRlbnRpdHlQb29sSWQnIGluc3RlYWQuXG4gICAqIFNlZSBodHRwczovL2RvY3MuYW1wbGlmeS5hd3MvY2xpL3JlYWN0L3Rvb2xzL2NsaS9taWdyYXRpb24vaWFtLWF1dGgtdXBkYXRlcy1mb3ItY2RrLWNvbnN0cnVjdCBmb3IgZGV0YWlscy5cbiAgICovXG4gIHJlYWRvbmx5IGlkZW50aXR5UG9vbElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBdXRoZW50aWNhdGVkIHVzZXIgcm9sZSwgYXBwbGllcyB0byB7IHByb3ZpZGVyOiBpYW0sIGFsbG93OiBwcml2YXRlIH0gYWNjZXNzLlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgJ0lkZW50aXR5UG9vbEF1dGhvcml6YXRpb25Db25maWcuYXV0aGVudGljYXRlZFVzZXJSb2xlJyBpbnN0ZWFkLlxuICAgKiBTZWUgaHR0cHM6Ly9kb2NzLmFtcGxpZnkuYXdzL2NsaS9yZWFjdC90b29scy9jbGkvbWlncmF0aW9uL2lhbS1hdXRoLXVwZGF0ZXMtZm9yLWNkay1jb25zdHJ1Y3QgZm9yIGRldGFpbHMuXG4gICAqL1xuICByZWFkb25seSBhdXRoZW50aWNhdGVkVXNlclJvbGU/OiBJUm9sZTtcblxuICAvKipcbiAgICogVW5hdXRoZW50aWNhdGVkIHVzZXIgcm9sZSwgYXBwbGllcyB0byB7IHByb3ZpZGVyOiBpYW0sIGFsbG93OiBwdWJsaWMgfSBhY2Nlc3MuXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIFVzZSAnSWRlbnRpdHlQb29sQXV0aG9yaXphdGlvbkNvbmZpZy51bmF1dGhlbnRpY2F0ZWRVc2VyUm9sZScgaW5zdGVhZC5cbiAgICogU2VlIGh0dHBzOi8vZG9jcy5hbXBsaWZ5LmF3cy9jbGkvcmVhY3QvdG9vbHMvY2xpL21pZ3JhdGlvbi9pYW0tYXV0aC11cGRhdGVzLWZvci1jZGstY29uc3RydWN0IGZvciBkZXRhaWxzLlxuICAgKi9cbiAgcmVhZG9ubHkgdW5hdXRoZW50aWNhdGVkVXNlclJvbGU/OiBJUm9sZTtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIElBTSByb2xlcyB3aGljaCB3aWxsIGJlIGdyYW50ZWQgZnVsbCByZWFkL3dyaXRlIGFjY2VzcyB0byB0aGUgZ2VuZXJhdGVkIG1vZGVsIGlmIElBTSBhdXRoIGlzIGVuYWJsZWQuXG4gICAqIElmIGFuIElSb2xlIGlzIHByb3ZpZGVkLCB0aGUgcm9sZSBgbmFtZWAgd2lsbCBiZSB1c2VkIGZvciBtYXRjaGluZy5cbiAgICogSWYgYSBzdHJpbmcgaXMgcHJvdmlkZWQsIHRoZSByYXcgdmFsdWUgd2lsbCBiZSB1c2VkIGZvciBtYXRjaGluZy5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgVXNlICdlbmFibGVJYW1BdXRob3JpemF0aW9uTW9kZScgYW5kIElBTSBQb2xpY3kgdG8gY29udHJvbCBhY2Nlc3MgZm9yIElBTSBwcmluY2lwYWxzLlxuICAgKiBTZWUgaHR0cHM6Ly9kb2NzLmFtcGxpZnkuYXdzL2NsaS9yZWFjdC90b29scy9jbGkvbWlncmF0aW9uL2lhbS1hdXRoLXVwZGF0ZXMtZm9yLWNkay1jb25zdHJ1Y3QgZm9yIGRldGFpbHMuXG4gICAqL1xuICByZWFkb25seSBhbGxvd0xpc3RlZFJvbGVzPzogKElSb2xlIHwgc3RyaW5nKVtdO1xuXG4gIC8qKlxuICAgKiBFbmFibGVzIGFjY2VzcyBmb3IgSUFNIHByaW5jaXBhbHMuIElmIGVuYWJsZWQgQGF1dGggZGlyZWN0aXZlIHJ1bGVzIGFyZSBub3QgYXBwbGllZC5cbiAgICogSW5zdGVhZCwgYWNjZXNzIHNob3VsZCBiZSBkZWZpbmVkIGJ5IElBTSBQb2xpY3ksIHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc2VydmljZS1hdXRob3JpemF0aW9uL2xhdGVzdC9yZWZlcmVuY2UvbGlzdF9hd3NhcHBzeW5jLmh0bWwuXG4gICAqXG4gICAqIERvZXMgbm90IGFwcGx5IHRvIGF1dGhlbnRpY2F0ZWQgYW5kIHVuYXV0aGVudGljYXRlZCBJQU0gUm9sZXMgYXR0YWNoZWQgdG8gQ29nbml0byBJZGVudGl0eSBQb29sLlxuICAgKiBVc2UgSWRlbnRpdHlQb29sQXV0aG9yaXphdGlvbkNvbmZpZyB0byBjb25maWd1cmUgdGhlaXIgYWNjZXNzLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlSWFtQXV0aG9yaXphdGlvbk1vZGU/OiBib29sZWFuO1xufVxuLyogYzggaWdub3JlIHN0b3AgKi9cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBDb2duaXRvIElkZW50aXR5IFBvb2wgQXV0aG9yaXphdGlvbiBvbiB0aGUgR3JhcGhxbCBBcGkuXG4gKiBAc3RydWN0IC0gcmVxdWlyZWQgc2luY2UgdGhpcyBpbnRlcmZhY2UgYmVnaW5zIHdpdGggYW4gJ0knXG4gKi9cbi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuZXhwb3J0IGludGVyZmFjZSBJZGVudGl0eVBvb2xBdXRob3JpemF0aW9uQ29uZmlnIHtcbiAgLyoqXG4gICAqIElEIGZvciB0aGUgQ29nbml0byBJZGVudGl0eSBQb29sIHZlbmRpbmcgYXV0aCBhbmQgdW5hdXRoIHJvbGVzLlxuICAgKiBGb3JtYXQ6IGA8cmVnaW9uPjo8aWQgc3RyaW5nPmBcbiAgICovXG4gIHJlYWRvbmx5IGlkZW50aXR5UG9vbElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEF1dGhlbnRpY2F0ZWQgdXNlciByb2xlLCBhcHBsaWVzIHRvIHsgcHJvdmlkZXI6IGlhbSwgYWxsb3c6IHByaXZhdGUgfSBhY2Nlc3MuXG4gICAqL1xuICByZWFkb25seSBhdXRoZW50aWNhdGVkVXNlclJvbGU6IElSb2xlO1xuXG4gIC8qKlxuICAgKiBVbmF1dGhlbnRpY2F0ZWQgdXNlciByb2xlLCBhcHBsaWVzIHRvIHsgcHJvdmlkZXI6IGlhbSwgYWxsb3c6IHB1YmxpYyB9IGFjY2Vzcy5cbiAgICovXG4gIHJlYWRvbmx5IHVuYXV0aGVudGljYXRlZFVzZXJSb2xlOiBJUm9sZTtcbn1cbi8qIGM4IGlnbm9yZSBzdG9wICovXG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgQ29nbml0byBVc2VyUG9vbCBBdXRob3JpemF0aW9uIG9uIHRoZSBHcmFwaHFsIEFwaS5cbiAqL1xuLyogYzggaWdub3JlIHN0YXJ0ICovXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJQb29sQXV0aG9yaXphdGlvbkNvbmZpZyB7XG4gIC8qKlxuICAgKiBUaGUgQ29nbml0byBVc2VyIFBvb2wgd2hpY2ggaXMgdXNlZCB0byBhdXRoZW50aWNhdGVkIEpXVCB0b2tlbnMsIGFuZCB2ZW5kcyBncm91cCBhbmQgdXNlciBpbmZvcm1hdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHVzZXJQb29sOiBJVXNlclBvb2w7XG59XG4vKiBjOCBpZ25vcmUgc3RvcCAqL1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIE9wZW5JZCBDb25uZWN0IEF1dGhvcml6YXRpb24gb24gdGhlIEdyYXBocWwgQXBpLlxuICovXG4vKiBjOCBpZ25vcmUgc3RhcnQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgT0lEQ0F1dGhvcml6YXRpb25Db25maWcge1xuICAvKipcbiAgICogVGhlIGlzc3VlciBmb3IgdGhlIE9JREMgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IG9pZGNQcm92aWRlck5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVXJsIGZvciB0aGUgT0lEQyB0b2tlbiBpc3N1ZXIuXG4gICAqL1xuICByZWFkb25seSBvaWRjSXNzdWVyVXJsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjbGllbnQgaWRlbnRpZmllciBvZiB0aGUgUmVseWluZyBwYXJ0eSBhdCB0aGUgT3BlbklEIGlkZW50aXR5IHByb3ZpZGVyLlxuICAgKiBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBjYW4gYmUgc3BlY2lmaWVkIHNvIEFwcFN5bmMgY2FuIHZhbGlkYXRlIGFnYWluc3QgbXVsdGlwbGUgY2xpZW50IGlkZW50aWZpZXJzIGF0IGEgdGltZS4gRXhhbXBsZVxuICAgKi9cbiAgcmVhZG9ubHkgY2xpZW50SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkdXJhdGlvbiBhbiBPSURDIHRva2VuIGlzIHZhbGlkIGFmdGVyIGJlaW5nIGF1dGhlbnRpY2F0ZWQgYnkgT0lEQyBwcm92aWRlci5cbiAgICogYXV0aF90aW1lIGNsYWltIGluIE9JREMgdG9rZW4gaXMgcmVxdWlyZWQgZm9yIHRoaXMgdmFsaWRhdGlvbiB0byB3b3JrLlxuICAgKi9cbiAgcmVhZG9ubHkgdG9rZW5FeHBpcnlGcm9tQXV0aDogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBkdXJhdGlvbiBhbiBPSURDIHRva2VuIGlzIHZhbGlkIGFmdGVyIGJlaW5nIGlzc3VlZCB0byBhIHVzZXIuXG4gICAqIFRoaXMgdmFsaWRhdGlvbiB1c2VzIGlhdCBjbGFpbSBvZiBPSURDIHRva2VuLlxuICAgKi9cbiAgcmVhZG9ubHkgdG9rZW5FeHBpcnlGcm9tSXNzdWU6IER1cmF0aW9uO1xufVxuLyogYzggaWdub3JlIHN0b3AgKi9cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBBcGkgS2V5cyBvbiB0aGUgR3JhcGhxbCBBcGkuXG4gKi9cbi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuZXhwb3J0IGludGVyZmFjZSBBcGlLZXlBdXRob3JpemF0aW9uQ29uZmlnIHtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGRlc2NyaXB0aW9uIGZvciB0aGUgQXBpIEtleSB0byBhdHRhY2ggdG8gdGhlIEFwaS5cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGR1cmF0aW9uIHJlcHJlc2VudGluZyB0aGUgdGltZSBmcm9tIENsb3VkZm9ybWF0aW9uIGRlcGxveSB1bnRpbCBleHBpcnkuXG4gICAqL1xuICByZWFkb25seSBleHBpcmVzOiBEdXJhdGlvbjtcbn1cbi8qIGM4IGlnbm9yZSBzdG9wICovXG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgQ3VzdG9tIExhbWJkYSBhdXRob3JpemF0aW9uIG9uIHRoZSBHcmFwaHFsIEFwaS5cbiAqL1xuLyogYzggaWdub3JlIHN0YXJ0ICovXG5leHBvcnQgaW50ZXJmYWNlIExhbWJkYUF1dGhvcml6YXRpb25Db25maWcge1xuICAvKipcbiAgICogVGhlIGF1dGhvcml6ZXIgbGFtYmRhIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb246IElGdW5jdGlvbjtcblxuICAvKipcbiAgICogSG93IGxvbmcgdGhlIHJlc3VsdHMgYXJlIGNhY2hlZC5cbiAgICovXG4gIHJlYWRvbmx5IHR0bDogRHVyYXRpb247XG59XG4vKiBjOCBpZ25vcmUgc3RvcCAqL1xuXG4vKipcbiAqIEF1dGhvcml6YXRpb24gTW9kZXMgdG8gYXBwbHkgdG8gdGhlIEFwaS5cbiAqIEF0IGxlYXN0IG9uZSBtb2RlcyBtdXN0IGJlIHByb3ZpZGVkLCBhbmQgaWYgbW9yZSB0aGFuIG9uZSBhcmUgcHJvdmlkZWQgYSBkZWZhdWx0QXV0aG9yaXphdGlvbk1vZGUgbXVzdCBiZSBzcGVjaWZpZWQuXG4gKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBBbXBsaWZ5IEFwaSBhdXRoLCByZWZlciB0byBodHRwczovL2RvY3MuYW1wbGlmeS5hd3MvY2xpL2dyYXBocWwvYXV0aG9yaXphdGlvbi1ydWxlcy8jYXV0aG9yaXphdGlvbi1zdHJhdGVnaWVzXG4gKi9cbi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRob3JpemF0aW9uTW9kZXMge1xuICAvKipcbiAgICogRGVmYXVsdCBhdXRoIG1vZGUgdG8gcHJvdmlkZSB0byB0aGUgQXBpLCByZXF1aXJlZCBpZiBtb3JlIHRoYW4gb25lIGNvbmZpZyB0eXBlIGlzIHNwZWNpZmllZC5cbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRBdXRob3JpemF0aW9uTW9kZT86ICdBV1NfSUFNJyB8ICdBTUFaT05fQ09HTklUT19VU0VSX1BPT0xTJyB8ICdPUEVOSURfQ09OTkVDVCcgfCAnQVBJX0tFWScgfCAnQVdTX0xBTUJEQSc7XG5cbiAgLyoqXG4gICAqIElBTSBBdXRoIGNvbmZpZywgcmVxdWlyZWQgdG8gYWxsb3cgSUFNLWJhc2VkIGFjY2VzcyB0byB0aGlzIEFQSS5cbiAgICogVGhpcyBhcHBsaWVzIHRvIGFueSBJQU0gcHJpbmNpcGFsIGV4Y2VwdCBBbWF6b24gQ29nbml0byBpZGVudGl0eSBwb29sJ3MgYXV0aGVudGljYXRlZCBhbmQgdW5hdXRoZW50aWNhdGVkIHJvbGVzLlxuICAgKiBUaGlzIGJlaGF2aW9yIHdhcyBoYXMgcmVjZW50bHkgYmVlbiBpbXByb3ZlZC5cbiAgICogU2VlIGh0dHBzOi8vZG9jcy5hbXBsaWZ5LmF3cy9jbGkvcmVhY3QvdG9vbHMvY2xpL21pZ3JhdGlvbi9pYW0tYXV0aC11cGRhdGVzLWZvci1jZGstY29uc3RydWN0IGZvciBkZXRhaWxzLlxuICAgKi9cbiAgcmVhZG9ubHkgaWFtQ29uZmlnPzogSUFNQXV0aG9yaXphdGlvbkNvbmZpZztcblxuICAvKipcbiAgICogQ29nbml0byBJZGVudGl0eSBQb29sIGNvbmZpZywgcmVxdWlyZWQgaWYgYW4gJ2lkZW50aXR5UG9vbCcgYXV0aCBwcm92aWRlciBpcyBzcGVjaWZpZWQgaW4gdGhlIEFwaS5cbiAgICogQXBwbGllcyB0byAncHVibGljJyBhbmQgJ3ByaXZhdGUnIGF1dGggc3RyYXRlZ2llcy5cbiAgICovXG4gIHJlYWRvbmx5IGlkZW50aXR5UG9vbENvbmZpZz86IElkZW50aXR5UG9vbEF1dGhvcml6YXRpb25Db25maWc7XG5cbiAgLyoqXG4gICAqIENvZ25pdG8gVXNlclBvb2wgY29uZmlnLCByZXF1aXJlZCBpZiBhICd1c2VyUG9vbHMnIGF1dGggcHJvdmlkZXIgaXMgc3BlY2lmaWVkIGluIHRoZSBBcGkuXG4gICAqIEFwcGxpZXMgdG8gJ293bmVyJywgJ3ByaXZhdGUnLCBhbmQgJ2dyb3VwJyBhdXRoIHN0cmF0ZWdpZXMuXG4gICAqL1xuICByZWFkb25seSB1c2VyUG9vbENvbmZpZz86IFVzZXJQb29sQXV0aG9yaXphdGlvbkNvbmZpZztcblxuICAvKipcbiAgICogQ29nbml0byBPSURDIGNvbmZpZywgcmVxdWlyZWQgaWYgYSAnb2lkYycgYXV0aCBwcm92aWRlciBpcyBzcGVjaWZpZWQgaW4gdGhlIEFwaS5cbiAgICogQXBwbGllcyB0byAnb3duZXInLCAncHJpdmF0ZScsIGFuZCAnZ3JvdXAnIGF1dGggc3RyYXRlZ2llcy5cbiAgICovXG4gIHJlYWRvbmx5IG9pZGNDb25maWc/OiBPSURDQXV0aG9yaXphdGlvbkNvbmZpZztcblxuICAvKipcbiAgICogQXBwU3luYyBBcGkgS2V5IGNvbmZpZywgcmVxdWlyZWQgaWYgYSAnYXBpS2V5JyBhdXRoIHByb3ZpZGVyIGlzIHNwZWNpZmllZCBpbiB0aGUgQXBpLlxuICAgKiBBcHBsaWVzIHRvICdwdWJsaWMnIGF1dGggc3RyYXRlZ3kuXG4gICAqL1xuICByZWFkb25seSBhcGlLZXlDb25maWc/OiBBcGlLZXlBdXRob3JpemF0aW9uQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBMYW1iZGEgY29uZmlnLCByZXF1aXJlZCBpZiBhICdmdW5jdGlvbicgYXV0aCBwcm92aWRlciBpcyBzcGVjaWZpZWQgaW4gdGhlIEFwaS5cbiAgICogQXBwbGllcyB0byAnY3VzdG9tJyBhdXRoIHN0cmF0ZWd5LlxuICAgKi9cbiAgcmVhZG9ubHkgbGFtYmRhQ29uZmlnPzogTGFtYmRhQXV0aG9yaXphdGlvbkNvbmZpZztcblxuICAvKipcbiAgICogQSBsaXN0IG9mIHJvbGVzIGdyYW50ZWQgZnVsbCBSL1cgYWNjZXNzIHRvIHRoZSBBcGkuXG4gICAqIEBkZXByZWNhdGVkLCB1c2UgaWFtQ29uZmlnLmFsbG93TGlzdGVkUm9sZXMgaW5zdGVhZC5cbiAgICovXG4gIHJlYWRvbmx5IGFkbWluUm9sZXM/OiBJUm9sZVtdO1xufVxuLyogYzggaWdub3JlIHN0b3AgKi9cblxuLyoqXG4gKiBXaGV0aGVyIG9yIG5vdCB0byB1c2UgYSB2ZXJzaW9uIGZpZWxkIHRvIHRyYWNrIGNvbmZsaWN0IGRldGVjdGlvbi5cbiAqL1xuLyogYzggaWdub3JlIHN0YXJ0ICovXG5leHBvcnQgdHlwZSBDb25mbGljdERldGVjdGlvblR5cGUgPSAnVkVSU0lPTicgfCAnTk9ORSc7XG4vKiBjOCBpZ25vcmUgc3RvcCAqL1xuXG4vKipcbiAqIENvbW1vbiBwYXJhbWV0ZXJzIGZvciBjb25mbGljdCByZXNvbHV0aW9uLlxuICovXG4vKiBjOCBpZ25vcmUgc3RhcnQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmxpY3RSZXNvbHV0aW9uU3RyYXRlZ3lCYXNlIHtcbiAgLyoqXG4gICAqIFRoZSBjb25mbGljdCBkZXRlY3Rpb24gdHlwZSB1c2VkIGZvciByZXNvbHV0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgZGV0ZWN0aW9uVHlwZTogQ29uZmxpY3REZXRlY3Rpb25UeXBlO1xufVxuLyogYzggaWdub3JlIHN0b3AgKi9cblxuLyoqXG4gKiBFbmFibGUgb3B0aW1pc3RpYyBjb25jdXJyZW5jeSBvbiB0aGUgcHJvamVjdC5cbiAqL1xuLyogYzggaWdub3JlIHN0YXJ0ICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9tZXJnZUNvbmZsaWN0UmVzb2x1dGlvblN0cmF0ZWd5IGV4dGVuZHMgQ29uZmxpY3RSZXNvbHV0aW9uU3RyYXRlZ3lCYXNlIHtcbiAgLyoqXG4gICAqIFRoaXMgY29uZmxpY3QgcmVzb2x1dGlvbiBzdHJhdGVneSBleGVjdXRlcyBhbiBhdXRvLW1lcmdlLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcmVmZXIgdG8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN5bmMvbGF0ZXN0L2Rldmd1aWRlL2NvbmZsaWN0LWRldGVjdGlvbi1hbmQtc3luYy5odG1sI2NvbmZsaWN0LWRldGVjdGlvbi1hbmQtcmVzb2x1dGlvblxuICAgKi9cbiAgcmVhZG9ubHkgaGFuZGxlclR5cGU6ICdBVVRPTUVSR0UnO1xufVxuLyogYzggaWdub3JlIHN0b3AgKi9cblxuLyoqXG4gKiBFbmFibGUgYXV0b21lcmdlIG9uIHRoZSBwcm9qZWN0LlxuICovXG4vKiBjOCBpZ25vcmUgc3RhcnQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW1pc3RpY0NvbmZsaWN0UmVzb2x1dGlvblN0cmF0ZWd5IGV4dGVuZHMgQ29uZmxpY3RSZXNvbHV0aW9uU3RyYXRlZ3lCYXNlIHtcbiAgLyoqXG4gICAqIFRoaXMgY29uZmxpY3QgcmVzb2x1dGlvbiBzdHJhdGVneSB0aGUgX3ZlcnNpb24gdG8gcGVyZm9ybSBvcHRpbWlzdGljIGNvbmN1cnJlbmN5LlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcmVmZXIgdG8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN5bmMvbGF0ZXN0L2Rldmd1aWRlL2NvbmZsaWN0LWRldGVjdGlvbi1hbmQtc3luYy5odG1sI2NvbmZsaWN0LWRldGVjdGlvbi1hbmQtcmVzb2x1dGlvblxuICAgKi9cbiAgcmVhZG9ubHkgaGFuZGxlclR5cGU6ICdPUFRJTUlTVElDX0NPTkNVUlJFTkNZJztcbn1cbi8qIGM4IGlnbm9yZSBzdG9wICovXG5cbi8qKlxuICogRW5hYmxlIGN1c3RvbSBzeW5jIG9uIHRoZSBwcm9qZWN0LCBwb3dlcmVkIGJ5IGEgbGFtYmRhLlxuICovXG4vKiBjOCBpZ25vcmUgc3RhcnQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tQ29uZmxpY3RSZXNvbHV0aW9uU3RyYXRlZ3kgZXh0ZW5kcyBDb25mbGljdFJlc29sdXRpb25TdHJhdGVneUJhc2Uge1xuICAvKipcbiAgICogVGhpcyBjb25mbGljdCByZXNvbHV0aW9uIHN0cmF0ZWd5IHVzZXMgYSBsYW1iZGEgaGFuZGxlciB0eXBlLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcmVmZXIgdG8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN5bmMvbGF0ZXN0L2Rldmd1aWRlL2NvbmZsaWN0LWRldGVjdGlvbi1hbmQtc3luYy5odG1sI2NvbmZsaWN0LWRldGVjdGlvbi1hbmQtcmVzb2x1dGlvblxuXG4gICAqL1xuICByZWFkb25seSBoYW5kbGVyVHlwZTogJ0xBTUJEQSc7XG5cbiAgLyoqXG4gICAqIFRoZSBmdW5jdGlvbiB3aGljaCB3aWxsIGJlIGludm9rZWQgZm9yIGNvbmZsaWN0IHJlc29sdXRpb24uXG4gICAqL1xuICByZWFkb25seSBjb25mbGljdEhhbmRsZXI6IElGdW5jdGlvbjtcbn1cblxuLyoqXG4gKiBDb25mbGljdCBSZXNvbHV0aW9uIFN0cmF0ZWd5IHRvIGFwcGx5IHRvIHRoZSBwcm9qZWN0IG9yIGEgcGFydGljdWxhciBtb2RlbC5cbiAqL1xuLyogYzggaWdub3JlIHN0YXJ0ICovXG5leHBvcnQgdHlwZSBDb25mbGljdFJlc29sdXRpb25TdHJhdGVneSA9XG4gIHwgQXV0b21lcmdlQ29uZmxpY3RSZXNvbHV0aW9uU3RyYXRlZ3lcbiAgfCBPcHRpbWlzdGljQ29uZmxpY3RSZXNvbHV0aW9uU3RyYXRlZ3lcbiAgfCBDdXN0b21Db25mbGljdFJlc29sdXRpb25TdHJhdGVneTtcbi8qIGM4IGlnbm9yZSBzdG9wICovXG5cbi8qKlxuICogUHJvamVjdCBsZXZlbCBjb25maWd1cmF0aW9uIGZvciBjb25mbGljdCByZXNvbHV0aW9uLlxuICogQGRlcHJlY2F0ZWQgdXNlIERhdGFTdG9yZUNvbmZpZ3VyYXRpb24gaW5zdGVhZC5cbiAqL1xuLyogYzggaWdub3JlIHN0YXJ0ICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBDb25mbGljdFJlc29sdXRpb24gZXh0ZW5kcyBEYXRhU3RvcmVDb25maWd1cmF0aW9uIHt9XG4vKiBjOCBpZ25vcmUgc3RvcCAqL1xuXG4vKipcbiAqIFByb2plY3QgbGV2ZWwgY29uZmlndXJhdGlvbiBmb3IgRGF0YVN0b3JlXG4gKi9cbi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRhU3RvcmVDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIFByb2plY3Qtd2lkZSBjb25maWcgZm9yIGNvbmZsaWN0IHJlc29sdXRpb24uIEFwcGxpZXMgdG8gYWxsIG5vbi1vdmVycmlkZGVuIG1vZGVscy5cbiAgICovXG4gIHJlYWRvbmx5IHByb2plY3Q/OiBDb25mbGljdFJlc29sdXRpb25TdHJhdGVneTtcblxuICAvKipcbiAgICogTW9kZWwtc3BlY2lmaWMgY29uZmxpY3QgcmVzb2x1dGlvbiBvdmVycmlkZXMuXG4gICAqL1xuICByZWFkb25seSBtb2RlbHM/OiBSZWNvcmQ8c3RyaW5nLCBDb25mbGljdFJlc29sdXRpb25TdHJhdGVneT47XG59XG4vKiBjOCBpZ25vcmUgc3RvcCAqL1xuXG4vKipcbiAqIFBhcmFtcyBleHBvc2VkIHRvIHN1cHBvcnQgY29uZmlndXJpbmcgYW5kIG92ZXJyaWRpbmcgcGlwZWxpbmVkIHNsb3RzLiBUaGlzIGFsbG93cyBjb25maWd1cmF0aW9uIG9mIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uLFxuICogaW5jbHVkaW5nIHRoZSByZXF1ZXN0IGFuZCByZXNwb25zZSBtYXBwaW5nIHRlbXBsYXRlcy5cbiAqL1xuLyogYzggaWdub3JlIHN0YXJ0ICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uU2xvdE92ZXJyaWRlIHtcbiAgLyoqXG4gICAqIE92ZXJyaWRlIHJlcXVlc3QgbWFwcGluZyB0ZW1wbGF0ZSBmb3IgdGhlIGZ1bmN0aW9uIHNsb3QuIEV4ZWN1dGVkIGJlZm9yZSB0aGUgZGF0YXNvdXJjZSBpcyBpbnZva2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWVzdE1hcHBpbmdUZW1wbGF0ZT86IE1hcHBpbmdUZW1wbGF0ZTtcblxuICAvKipcbiAgICogT3ZlcnJpZGUgcmVzcG9uc2UgbWFwcGluZyB0ZW1wbGF0ZSBmb3IgdGhlIGZ1bmN0aW9uIHNsb3QuIEV4ZWN1dGVkIGFmdGVyIHRoZSBkYXRhc291cmNlIGlzIGludm9rZWQuXG4gICAqL1xuICByZWFkb25seSByZXNwb25zZU1hcHBpbmdUZW1wbGF0ZT86IE1hcHBpbmdUZW1wbGF0ZTtcbn1cbi8qIGM4IGlnbm9yZSBzdG9wICovXG5cbi8qKlxuICogQ29tbW9uIHNsb3QgcGFyYW1ldGVycy5cbiAqL1xuLyogYzggaWdub3JlIHN0YXJ0ICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uU2xvdEJhc2Uge1xuICAvKipcbiAgICogVGhlIGZpZWxkIHRvIGF0dGFjaCB0aGlzIGZ1bmN0aW9uIHRvIG9uIHRoZSBBcGkgZGVmaW5pdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGZpZWxkTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc2xvdCBpbmRleCB0byB1c2UgdG8gaW5qZWN0IHRoaXMgaW50byB0aGUgZXhlY3V0aW9uIHBpcGVsaW5lLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBzbG90dGluZywgcmVmZXIgdG8gaHR0cHM6Ly9kb2NzLmFtcGxpZnkuYXdzL2NsaS9ncmFwaHFsL2N1c3RvbS1idXNpbmVzcy1sb2dpYy8jZXh0ZW5kLWFtcGxpZnktZ2VuZXJhdGVkLXJlc29sdmVyc1xuICAgKi9cbiAgcmVhZG9ubHkgc2xvdEluZGV4OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBvdmVycmlkZGVuIGJlaGF2aW9yIGZvciB0aGlzIHNsb3QuXG4gICAqL1xuICByZWFkb25seSBmdW5jdGlvbjogRnVuY3Rpb25TbG90T3ZlcnJpZGU7XG59XG4vKiBjOCBpZ25vcmUgc3RvcCAqL1xuXG4vKipcbiAqIFNsb3QgdHlwZXMgZm9yIE11dGF0aW9uIFJlc29sdmVycy5cbiAqL1xuLyogYzggaWdub3JlIHN0YXJ0ICovXG5leHBvcnQgaW50ZXJmYWNlIE11dGF0aW9uRnVuY3Rpb25TbG90IGV4dGVuZHMgRnVuY3Rpb25TbG90QmFzZSB7XG4gIC8qKlxuICAgKiBUaGlzIHNsb3QgdHlwZSBhcHBsaWVzIHRvIHRoZSBNdXRhdGlvbiB0eXBlIG9uIHRoZSBBcGkgZGVmaW5pdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGVOYW1lOiAnTXV0YXRpb24nO1xuXG4gIC8qKlxuICAgKiBUaGUgc2xvdCBuYW1lIHRvIGluamVjdCB0aGlzIGJlaGF2aW9yIGludG8uXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHNsb3R0aW5nLCByZWZlciB0byBodHRwczovL2RvY3MuYW1wbGlmeS5hd3MvY2xpL2dyYXBocWwvY3VzdG9tLWJ1c2luZXNzLWxvZ2ljLyNleHRlbmQtYW1wbGlmeS1nZW5lcmF0ZWQtcmVzb2x2ZXJzXG4gICAqL1xuICByZWFkb25seSBzbG90TmFtZTogJ2luaXQnIHwgJ3ByZUF1dGgnIHwgJ2F1dGgnIHwgJ3Bvc3RBdXRoJyB8ICd2YWxpZGF0ZScgfCAncHJlVXBkYXRlJyB8ICdwb3N0VXBkYXRlJyB8ICdmaW5pc2gnO1xufVxuLyogYzggaWdub3JlIHN0b3AgKi9cblxuLyoqXG4gKiBTbG90IHR5cGVzIGZvciBRdWVyeSBSZXNvbHZlcnMuXG4gKi9cbi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuZXhwb3J0IGludGVyZmFjZSBRdWVyeUZ1bmN0aW9uU2xvdCBleHRlbmRzIEZ1bmN0aW9uU2xvdEJhc2Uge1xuICAvKipcbiAgICogVGhpcyBzbG90IHR5cGUgYXBwbGllcyB0byB0aGUgUXVlcnkgdHlwZSBvbiB0aGUgQXBpIGRlZmluaXRpb24uXG4gICAqL1xuICByZWFkb25seSB0eXBlTmFtZTogJ1F1ZXJ5JztcblxuICAvKipcbiAgICogVGhlIHNsb3QgbmFtZSB0byBpbmplY3QgdGhpcyBiZWhhdmlvciBpbnRvLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBzbG90dGluZywgcmVmZXIgdG8gaHR0cHM6Ly9kb2NzLmFtcGxpZnkuYXdzL2NsaS9ncmFwaHFsL2N1c3RvbS1idXNpbmVzcy1sb2dpYy8jZXh0ZW5kLWFtcGxpZnktZ2VuZXJhdGVkLXJlc29sdmVyc1xuICAgKi9cbiAgcmVhZG9ubHkgc2xvdE5hbWU6ICdpbml0JyB8ICdwcmVBdXRoJyB8ICdhdXRoJyB8ICdwb3N0QXV0aCcgfCAncHJlRGF0YUxvYWQnIHwgJ3Bvc3REYXRhTG9hZCcgfCAnZmluaXNoJztcbn1cbi8qIGM4IGlnbm9yZSBzdG9wICovXG5cbi8qKlxuICogU2xvdCB0eXBlcyBmb3IgU3Vic2NyaXB0aW9uIFJlc29sdmVycy5cbiAqL1xuLyogYzggaWdub3JlIHN0YXJ0ICovXG5leHBvcnQgaW50ZXJmYWNlIFN1YnNjcmlwdGlvbkZ1bmN0aW9uU2xvdCBleHRlbmRzIEZ1bmN0aW9uU2xvdEJhc2Uge1xuICAvKipcbiAgICogVGhpcyBzbG90IHR5cGUgYXBwbGllcyB0byB0aGUgU3Vic2NyaXB0aW9uIHR5cGUgb24gdGhlIEFwaSBkZWZpbml0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZU5hbWU6ICdTdWJzY3JpcHRpb24nO1xuXG4gIC8qKlxuICAgKiBUaGUgc2xvdCBuYW1lIHRvIGluamVjdCB0aGlzIGJlaGF2aW9yIGludG8uXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHNsb3R0aW5nLCByZWZlciB0byBodHRwczovL2RvY3MuYW1wbGlmeS5hd3MvY2xpL2dyYXBocWwvY3VzdG9tLWJ1c2luZXNzLWxvZ2ljLyNleHRlbmQtYW1wbGlmeS1nZW5lcmF0ZWQtcmVzb2x2ZXJzXG4gICAqL1xuICByZWFkb25seSBzbG90TmFtZTogJ2luaXQnIHwgJ3ByZUF1dGgnIHwgJ2F1dGgnIHwgJ3Bvc3RBdXRoJyB8ICdwcmVTdWJzY3JpYmUnO1xufVxuLyogYzggaWdub3JlIHN0b3AgKi9cblxuLyoqXG4gKiBJbnB1dCBwYXJhbXMgdG8gdW5pcXVlbHkgaWRlbnRpZnkgdGhlIHNsb3Qgd2hpY2ggaXMgYmVpbmcgb3ZlcnJpZGRlbi5cbiAqL1xuLyogYzggaWdub3JlIHN0YXJ0ICovXG5leHBvcnQgdHlwZSBGdW5jdGlvblNsb3QgPSBNdXRhdGlvbkZ1bmN0aW9uU2xvdCB8IFF1ZXJ5RnVuY3Rpb25TbG90IHwgU3Vic2NyaXB0aW9uRnVuY3Rpb25TbG90O1xuLyogYzggaWdub3JlIHN0b3AgKi9cblxuLyoqXG4gKiBTdHJvbmdseSB0eXBlZCBzZXQgb2Ygc2hhcmVkIHBhcmFtZXRlcnMgZm9yIGFsbCB0cmFuc2Zvcm1lcnMsIGFuZCBjb3JlIGxheWVyLlxuICogVGhpcyBpcyBpbnRlbmRlZCB0byByZXBsYWNlIGZlYXR1cmUgZmxhZ3MsIHRvIGVuc3VyZSBwYXJhbSBjb2VyY2lvbiBoYXBwZW5zIGluXG4gKiBhIHNpbmdsZSBsb2NhdGlvbiwgYW5kIGlzbid0IHNwcmVhZCBhcm91bmQgdGhlIHRyYW5zZm9ybWVycywgd2hlcmUgdGhleSBjYW5cbiAqIGhhdmUgZGlmZmVyZW50IGRlZmF1bHQgYmVoYXZpb3JzLlxuICovXG4vKiBjOCBpZ25vcmUgc3RhcnQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNsYXRpb25CZWhhdmlvciB7XG4gIC8qKlxuICAgKiBSZXN0b3JlIHBhcml0eSB3LyBHUUx2MSBAbW9kZWwgcGFyYW1ldGVyIGJlaGF2aW9yLCB3aGVyZSBzZXR0aW5nIGEgc2luZ2xlIGZpZWxkIGRvZXNuJ3QgaW1wbGljaXRseSBzZXQgdGhlIG90aGVyIGZpZWxkcyB0byBudWxsLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBzaG91bGREZWVwTWVyZ2VEaXJlY3RpdmVDb25maWdEZWZhdWx0czogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGlzYWJsZSByZXNvbHZlciBkZWR1cGluZywgdGhpcyBjYW4gc29tZXRpbWVzIGNhdXNlIHByb2JsZW1zIGJlY2F1c2UgZGVkdXBlIG9yZGVyaW5nIGlzbid0IHN0YWJsZSB0b2RheSwgd2hpY2ggY2FuXG4gICAqIGxlYWQgdG8gY2lyY3VsYXIgZGVwZW5kZW5jaWVzIGFjcm9zcyBzdGFja3MgaWYgbW9kZWxzIGFyZSByZW9yZGVyZWQuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGRpc2FibGVSZXNvbHZlckRlZHVwaW5nOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbmFibGluZyBzYW5kYm94IG1vZGUgd2lsbCBlbmFibGUgYXBpIGtleSBhdXRoIG9uIGFsbCBtb2RlbHMgaW4gdGhlIHRyYW5zZm9ybWVkIHNjaGVtYS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHNhbmRib3hNb2RlRW5hYmxlZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogRW5zdXJlIHRoYXQgb2lkYyBhbmQgdXNlclBvb2wgYXV0aCB1c2UgdGhlIGBzdWJgIGZpZWxkIGluIHRoZSBmb3IgdGhlIHVzZXJuYW1lIGZpZWxkLCB3aGljaCBkaXNhbGxvd3MgbmV3IHVzZXJzIHdpdGggdGhlIHNhbWVcbiAgICogaWQgdG8gYWNjZXNzIGRhdGEgZnJvbSBhIGRlbGV0ZWQgdXNlciBpbiB0aGUgcG9vbC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlU3ViVXNlcm5hbWVGb3JEZWZhdWx0SWRlbnRpdHlDbGFpbTogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBlbmFibGVkLCBzdXBwcmVzc2VzIGRlZmF1bHQgYmVoYXZpb3Igb2YgcmVkYWN0aW5nIHJlbGF0aW9uYWwgZmllbGRzIHdoZW4gYXV0aCBydWxlcyBkbyBub3QgZXhhY3RseSBtYXRjaC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHN1YnNjcmlwdGlvbnNJbmhlcml0UHJpbWFyeUF1dGg6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuc3VyZSB0aGF0IHRoZSBvd25lciBmaWVsZCBpcyBzdGlsbCBwb3B1bGF0ZWQgZXZlbiBpZiBhIHN0YXRpYyBpYW0gb3IgZ3JvdXAgYXV0aG9yaXphdGlvbiBhcHBsaWVzLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBwb3B1bGF0ZU93bmVyRmllbGRGb3JTdGF0aWNHcm91cEF1dGg6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGVuYWJsZWQsIGRpc2FibGUgYXBpIGtleSByZXNvdXJjZSBnZW5lcmF0aW9uIGV2ZW4gaWYgc3BlY2lmaWVkIGFzIGFuIGF1dGggcnVsZSBvbiB0aGUgY29uc3RydWN0LlxuICAgKiBUaGlzIGlzIGEgbGVnYWN5IHBhcmFtZXRlciBmcm9tIHRoZSBHcmFwaHFsIFRyYW5zZm9ybWVyIGV4aXN0aW5nIGluIEFtcGxpZnkgQ0xJLCBub3QgcmVjb21tZW5kZWQgdG8gY2hhbmdlLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc3VwcHJlc3NBcGlLZXlHZW5lcmF0aW9uOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBkaXNhYmxlZCwgZ2VuZXJhdGVkIEBpbmRleCBhcyBhbiBMU0kgaW5zdGVhZCBvZiBhIEdTSS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgc2Vjb25kYXJ5S2V5QXNHU0k6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEF1dG9tYXRlIGdlbmVyYXRpb24gb2YgcXVlcnkgbmFtZXMsIGFuZCBhcyBhIHJlc3VsdCBhdHRhY2hpbmcgYWxsIGluZGV4ZXMgYXMgcXVlcmllcyB0byB0aGUgZ2VuZXJhdGVkIEFwaS5cbiAgICogSWYgZW5hYmxlZCwgQGluZGV4IGNhbiBiZSBwcm92aWRlZCBhIG51bGwgbmFtZSBmaWVsZCB0byBkaXNhYmxlIHRoZSBnZW5lcmF0aW9uIG9mIHRoZSBxdWVyeSBvbiB0aGUgQXBpLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVBdXRvSW5kZXhRdWVyeU5hbWVzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgY3VzdG9tIHByaW1hcnkga2V5IHN1cHBvcnQsIHRoZXJlJ3Mgbm8gZ29vZCByZWFzb24gdG8gZGlzYWJsZSB0aGlzIHVubGVzcyB0cnlpbmcgbm90IHRvIHVwZGF0ZSBhIGxlZ2FjeSBhcHAuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHJlc3BlY3RQcmltYXJ5S2V5QXR0cmlidXRlc09uQ29ubmVjdGlvbkZpZWxkOiBib29sZWFuO1xuXG4gIHJlYWRvbmx5IGVuYWJsZVNlYXJjaE5vZGVUb05vZGVFbmNyeXB0aW9uOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIGVuYWJsZWQsIGludGVybmFsIGNmbiBvdXRwdXRzIHdoaWNoIGV4aXN0ZWQgaW4gQW1wbGlmeS1nZW5lcmF0ZWQgYXBwcyB3aWxsIGNvbnRpbnVlIHRvIGJlIGVtaXR0ZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVUcmFuc2Zvcm1lckNmbk91dHB1dHM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBmb2xsb3dpbmcgc2NoZW1hIHVwZGF0ZXMgcmVxdWlyZSByZXBsYWNlbWVudCBvZiB0aGUgdW5kZXJseWluZyBEeW5hbW9EQiB0YWJsZTpcbiAgICpcbiAgICogIC0gUmVtb3Zpbmcgb3IgcmVuYW1pbmcgYSBtb2RlbFxuICAgKiAgLSBNb2RpZnlpbmcgdGhlIHByaW1hcnkga2V5IG9mIGEgbW9kZWxcbiAgICogIC0gTW9kaWZ5aW5nIGEgTG9jYWwgU2Vjb25kYXJ5IEluZGV4IG9mIGEgbW9kZWwgKG9ubHkgYXBwbGllcyB0byBwcm9qZWN0cyB3aXRoIHNlY29uZGFyeUtleUFzR1NJIHR1cm5lZCBvZmYpXG4gICAqXG4gICAqIEFMTCBEQVRBIFdJTEwgQkUgTE9TVCB3aGVuIHRoZSB0YWJsZSByZXBsYWNlbWVudCBoYXBwZW5zLiBXaGVuIGVuYWJsZWQsIGRlc3RydWN0aXZlIHVwZGF0ZXMgYXJlIGFsbG93ZWQuXG4gICAqIFRoaXMgd2lsbCBvbmx5IGFmZmVjdCBEeW5hbW9EQiB0YWJsZXMgd2l0aCBwcm92aXNpb24gc3RyYXRlZ3kgXCJBTVBMSUZZX1RBQkxFXCIuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93RGVzdHJ1Y3RpdmVHcmFwaHFsU2NoZW1hVXBkYXRlczogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhpcyBiZWhhdmlvciB3aWxsIG9ubHkgY29tZSBpbnRvIGVmZmVjdCB3aGVuIGJvdGggXCJhbGxvd0Rlc3RydWN0aXZlR3JhcGhxbFNjaGVtYVVwZGF0ZXNcIiBhbmQgdGhpcyB2YWx1ZSBhcmUgc2V0IHRvIHRydWVcbiAgICpcbiAgICogV2hlbiBlbmFibGVkLCBhbnkgR1NJIHVwZGF0ZSBvcGVyYXRpb24gd2lsbCByZXBsYWNlIHRoZSB0YWJsZSBpbnN0ZWFkIG9mIGl0ZXJhdGl2ZSBkZXBsb3ltZW50LCB3aGljaCB3aWxsIFdJUEUgQUxMIEVYSVNUSU5HIERBVEEgYnV0XG4gICAqIGNvc3QgbXVjaCBsZXNzIHRpbWUgZm9yIGRlcGxveW1lbnQgVGhpcyB3aWxsIG9ubHkgYWZmZWN0IER5bmFtb0RCIHRhYmxlcyB3aXRoIHByb3Zpc2lvbiBzdHJhdGVneSBcIkFNUExJRllfVEFCTEVcIi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgcmVwbGFjZVRhYmxlVXBvbkdzaVVwZGF0ZTogYm9vbGVhbjtcbn1cbi8qIGM4IGlnbm9yZSBzdG9wICovXG5cbi8qKlxuICogQSB1dGlsaXR5IGludGVyZmFjZSBlcXVpdmFsZW50IHRvIFBhcnRpYWw8VHJhbnNsYXRpb25CZWhhdmlvcj4uXG4gKi9cbi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXJ0aWFsVHJhbnNsYXRpb25CZWhhdmlvciB7XG4gIC8qKlxuICAgKiBSZXN0b3JlIHBhcml0eSB3LyBHUUx2MSBAbW9kZWwgcGFyYW1ldGVyIGJlaGF2aW9yLCB3aGVyZSBzZXR0aW5nIGEgc2luZ2xlIGZpZWxkIGRvZXNuJ3QgaW1wbGljaXRseSBzZXQgdGhlIG90aGVyIGZpZWxkcyB0byBudWxsLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBzaG91bGREZWVwTWVyZ2VEaXJlY3RpdmVDb25maWdEZWZhdWx0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERpc2FibGUgcmVzb2x2ZXIgZGVkdXBpbmcsIHRoaXMgY2FuIHNvbWV0aW1lcyBjYXVzZSBwcm9ibGVtcyBiZWNhdXNlIGRlZHVwZSBvcmRlcmluZyBpc24ndCBzdGFibGUgdG9kYXksIHdoaWNoIGNhblxuICAgKiBsZWFkIHRvIGNpcmN1bGFyIGRlcGVuZGVuY2llcyBhY3Jvc3Mgc3RhY2tzIGlmIG1vZGVscyBhcmUgcmVvcmRlcmVkLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBkaXNhYmxlUmVzb2x2ZXJEZWR1cGluZz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsaW5nIHNhbmRib3ggbW9kZSB3aWxsIGVuYWJsZSBhcGkga2V5IGF1dGggb24gYWxsIG1vZGVscyBpbiB0aGUgdHJhbnNmb3JtZWQgc2NoZW1hLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2FuZGJveE1vZGVFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRW5zdXJlIHRoYXQgb2lkYyBhbmQgdXNlclBvb2wgYXV0aCB1c2UgdGhlIGBzdWJgIGZpZWxkIGluIHRoZSBmb3IgdGhlIHVzZXJuYW1lIGZpZWxkLCB3aGljaCBkaXNhbGxvd3MgbmV3IHVzZXJzIHdpdGggdGhlIHNhbWVcbiAgICogaWQgdG8gYWNjZXNzIGRhdGEgZnJvbSBhIGRlbGV0ZWQgdXNlciBpbiB0aGUgcG9vbC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlU3ViVXNlcm5hbWVGb3JEZWZhdWx0SWRlbnRpdHlDbGFpbT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gZW5hYmxlZCwgc3VwcHJlc3NlcyBkZWZhdWx0IGJlaGF2aW9yIG9mIHJlZGFjdGluZyByZWxhdGlvbmFsIGZpZWxkcyB3aGVuIGF1dGggcnVsZXMgZG8gbm90IGV4YWN0bHkgbWF0Y2guXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBzdWJzY3JpcHRpb25zSW5oZXJpdFByaW1hcnlBdXRoPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRW5zdXJlIHRoYXQgdGhlIG93bmVyIGZpZWxkIGlzIHN0aWxsIHBvcHVsYXRlZCBldmVuIGlmIGEgc3RhdGljIGlhbSBvciBncm91cCBhdXRob3JpemF0aW9uIGFwcGxpZXMuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHBvcHVsYXRlT3duZXJGaWVsZEZvclN0YXRpY0dyb3VwQXV0aD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGVuYWJsZWQsIGRpc2FibGUgYXBpIGtleSByZXNvdXJjZSBnZW5lcmF0aW9uIGV2ZW4gaWYgc3BlY2lmaWVkIGFzIGFuIGF1dGggcnVsZSBvbiB0aGUgY29uc3RydWN0LlxuICAgKiBUaGlzIGlzIGEgbGVnYWN5IHBhcmFtZXRlciBmcm9tIHRoZSBHcmFwaHFsIFRyYW5zZm9ybWVyIGV4aXN0aW5nIGluIEFtcGxpZnkgQ0xJLCBub3QgcmVjb21tZW5kZWQgdG8gY2hhbmdlLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc3VwcHJlc3NBcGlLZXlHZW5lcmF0aW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgZGlzYWJsZWQsIGdlbmVyYXRlZCBAaW5kZXggYXMgYW4gTFNJIGluc3RlYWQgb2YgYSBHU0kuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHNlY29uZGFyeUtleUFzR1NJPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQXV0b21hdGUgZ2VuZXJhdGlvbiBvZiBxdWVyeSBuYW1lcywgYW5kIGFzIGEgcmVzdWx0IGF0dGFjaGluZyBhbGwgaW5kZXhlcyBhcyBxdWVyaWVzIHRvIHRoZSBnZW5lcmF0ZWQgQXBpLlxuICAgKiBJZiBlbmFibGVkLCBAaW5kZXggY2FuIGJlIHByb3ZpZGVkIGEgbnVsbCBuYW1lIGZpZWxkIHRvIGRpc2FibGUgdGhlIGdlbmVyYXRpb24gb2YgdGhlIHF1ZXJ5IG9uIHRoZSBBcGkuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZUF1dG9JbmRleFF1ZXJ5TmFtZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgY3VzdG9tIHByaW1hcnkga2V5IHN1cHBvcnQsIHRoZXJlJ3Mgbm8gZ29vZCByZWFzb24gdG8gZGlzYWJsZSB0aGlzIHVubGVzcyB0cnlpbmcgbm90IHRvIHVwZGF0ZSBhIGxlZ2FjeSBhcHAuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHJlc3BlY3RQcmltYXJ5S2V5QXR0cmlidXRlc09uQ29ubmVjdGlvbkZpZWxkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgZW5hYmxlZCwgc2V0IG5vZGVUb05vZGVFbmNyeXB0aW9uIG9uIHRoZSBzZWFyY2hhYmxlIGRvbWFpbiAoaWYgb25lIGV4aXN0cykuIE5vdCByZWNvbW1lbmRlZCBmb3IgdXNlLCBwcmVmZXJcbiAgICogdG8gdXNlIGBPYmplY3QudmFsdWVzKHJlc291cmNlcy5hZGRpdGlvbmFsUmVzb3VyY2VzWydBV1M6OkVsYXN0aWNzZWFyY2g6OkRvbWFpbiddKS5mb3JFYWNoKChkb21haW46IENmbkRvbWFpbikgPT4ge1xuICAgKiAgIGRvbWFpbi5Ob2RlVG9Ob2RlRW5jcnlwdGlvbk9wdGlvbnMgPSB7IEVuYWJsZWQ6IFRydWUgfTtcbiAgICogfSk7XG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVTZWFyY2hOb2RlVG9Ob2RlRW5jcnlwdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gZW5hYmxlZCwgaW50ZXJuYWwgY2ZuIG91dHB1dHMgd2hpY2ggZXhpc3RlZCBpbiBBbXBsaWZ5LWdlbmVyYXRlZCBhcHBzIHdpbGwgY29udGludWUgdG8gYmUgZW1pdHRlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZVRyYW5zZm9ybWVyQ2ZuT3V0cHV0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBmb2xsb3dpbmcgc2NoZW1hIHVwZGF0ZXMgcmVxdWlyZSByZXBsYWNlbWVudCBvZiB0aGUgdW5kZXJseWluZyBEeW5hbW9EQiB0YWJsZTpcbiAgICpcbiAgICogIC0gUmVtb3Zpbmcgb3IgcmVuYW1pbmcgYSBtb2RlbFxuICAgKiAgLSBNb2RpZnlpbmcgdGhlIHByaW1hcnkga2V5IG9mIGEgbW9kZWxcbiAgICogIC0gTW9kaWZ5aW5nIGEgTG9jYWwgU2Vjb25kYXJ5IEluZGV4IG9mIGEgbW9kZWwgKG9ubHkgYXBwbGllcyB0byBwcm9qZWN0cyB3aXRoIHNlY29uZGFyeUtleUFzR1NJIHR1cm5lZCBvZmYpXG4gICAqXG4gICAqIEFMTCBEQVRBIFdJTEwgQkUgTE9TVCB3aGVuIHRoZSB0YWJsZSByZXBsYWNlbWVudCBoYXBwZW5zLiBXaGVuIGVuYWJsZWQsIGRlc3RydWN0aXZlIHVwZGF0ZXMgYXJlIGFsbG93ZWQuXG4gICAqIFRoaXMgd2lsbCBvbmx5IGFmZmVjdCBEeW5hbW9EQiB0YWJsZXMgd2l0aCBwcm92aXNpb24gc3RyYXRlZ3kgXCJBTVBMSUZZX1RBQkxFXCIuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93RGVzdHJ1Y3RpdmVHcmFwaHFsU2NoZW1hVXBkYXRlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoaXMgYmVoYXZpb3Igd2lsbCBvbmx5IGNvbWUgaW50byBlZmZlY3Qgd2hlbiBib3RoIFwiYWxsb3dEZXN0cnVjdGl2ZUdyYXBocWxTY2hlbWFVcGRhdGVzXCIgYW5kIHRoaXMgdmFsdWUgYXJlIHNldCB0byB0cnVlXG4gICAqXG4gICAqIFdoZW4gZW5hYmxlZCwgYW55IGdsb2JhbCBzZWNvbmRhcnkgaW5kZXggdXBkYXRlIG9wZXJhdGlvbiB3aWxsIHJlcGxhY2UgdGhlIHRhYmxlIGluc3RlYWQgb2YgaXRlcmF0aXZlIGRlcGxveW1lbnQsIHdoaWNoIHdpbGwgV0lQRSBBTExcbiAgICogRVhJU1RJTkcgREFUQSBidXQgY29zdCBtdWNoIGxlc3MgdGltZSBmb3IgZGVwbG95bWVudCBUaGlzIHdpbGwgb25seSBhZmZlY3QgRHluYW1vREIgdGFibGVzIHdpdGggcHJvdmlzaW9uIHN0cmF0ZWd5IFwiQU1QTElGWV9UQUJMRVwiLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSByZXBsYWNlVGFibGVVcG9uR3NpVXBkYXRlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBlbmFibGVkLCBzYW5kYm94IGRlcGxveW1lbnQgd2lsbCBiZSBmYXN0ZXIgYnkgc2tpcHBpbmcgdGhlIGNyZWF0aW9uIG9mIHRoZSBIb3Rzd2FwIGZyaWVuZGx5IHJlc291cmNlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQGludGVybmFsXG4gICAqIFdBUk5JTkc6IEFsdGhvdWdoIHRoaXMgaGFzIGBwdWJsaWNgIGFjY2VzcywgaXQgaXMgaW50ZW5kZWQgZm9yIGludGVybmFsIHVzZSBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGRpcmVjdGx5LlxuICAgKiBUaGUgYmVoYXZpb3Igb2YgdGhpcyBtYXkgY2hhbmdlIHdpdGhvdXQgd2FybmluZy5cbiAgICovXG4gIHJlYWRvbmx5IF9wcm92aXNpb25Ib3Rzd2FwRnJpZW5kbHlSZXNvdXJjZXM/OiBib29sZWFuO1xufVxuLyogYzggaWdub3JlIHN0b3AgKi9cblxuLyoqXG4gKiBHcmFwaHFsIEFwaSBkZWZpbml0aW9uLCB3aGljaCBjYW4gYmUgaW1wbGVtZW50ZWQgaW4gbXVsdGlwbGUgd2F5cy5cbiAqL1xuLyogYzggaWdub3JlIHN0YXJ0ICovXG5leHBvcnQgaW50ZXJmYWNlIElBbXBsaWZ5R3JhcGhxbERlZmluaXRpb24ge1xuICAvKipcbiAgICogUmV0dXJuIHRoZSBzY2hlbWEgZGVmaW5pdGlvbiBhcyBhIGdyYXBocWwgc3RyaW5nLCB3aXRoIGFtcGxpZnkgZGlyZWN0aXZlcyBhbGxvd2VkLlxuICAgKiBAcmV0dXJucyB0aGUgcmVuZGVyZWQgc2NoZW1hLlxuICAgKi9cbiAgcmVhZG9ubHkgc2NoZW1hOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIGFueSBmdW5jdGlvbiBzbG90cyBkZWZpbmVkIGV4cGxpY2l0bHkgaW4gdGhlIEFwaSBkZWZpbml0aW9uLlxuICAgKiBAcmV0dXJucyBnZW5lcmF0ZWQgZnVuY3Rpb24gc2xvdHNcbiAgICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uU2xvdHM6IEZ1bmN0aW9uU2xvdFtdO1xuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSB0aGUgcmVmZXJlbmNlcyB0byBhbnkgbGFtYmRhIGZ1bmN0aW9ucyB1c2VkIGluIHRoZSBkZWZpbml0aW9uLlxuICAgKiBVc2VmdWwgZm9yIHdpcmluZyB0aHJvdWdoIGF3c19sYW1iZGEuRnVuY3Rpb24gY29uc3RydWN0cyBpbnRvIHRoZSBkZWZpbml0aW9uIGRpcmVjdGx5LFxuICAgKiBhbmQgZ2VuZXJhdGVkIHJlZmVyZW5jZXMgdG8gaW52b2tlIHRoZW0uXG4gICAqIEByZXR1cm5zIGFueSBsYW1iZGEgZnVuY3Rpb25zLCBrZXllZCBieSB0aGVpciByZWZlcmVuY2VkICduYW1lJyBpbiB0aGUgZ2VuZXJhdGVkIHNjaGVtYS5cbiAgICovXG4gIHJlYWRvbmx5IHJlZmVyZW5jZWRMYW1iZGFGdW5jdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBJRnVuY3Rpb24+O1xuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSB0aGUgZGF0YXNvdXJjZSBzdHJhdGVneSBtYXBwaW5nLiBUaGUgZGVmYXVsdCBzdHJhdGVneSBpcyB0byB1c2UgRHluYW1vREIgZnJvbSBDbG91ZEZvcm1hdGlvbi5cbiAgICogQHJldHVybnMgZGF0YXNvdXJjZSBzdHJhdGVneSBtYXBwaW5nXG4gICAqL1xuICByZWFkb25seSBkYXRhU291cmNlU3RyYXRlZ2llczogUmVjb3JkPHN0cmluZywgTW9kZWxEYXRhU291cmNlU3RyYXRlZ3k+O1xuXG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBjdXN0b20gUXVlcnkgb3IgTXV0YXRpb24gU1FMIGNvbW1hbmRzIHRvIHRoZSBkYXRhIHNvdXJjZXMgdGhhdCByZXNvbHZlcyB0aGVtLlxuICAgKiBAcmV0dXJucyBhIGxpc3Qgb2YgbWFwcGluZ3MgZnJvbSBjdXN0b20gU1FMIGNvbW1hbmRzIHRvIGRhdGEgc291cmNlc1xuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9tU3FsRGF0YVNvdXJjZVN0cmF0ZWdpZXM/OiBDdXN0b21TcWxEYXRhU291cmNlU3RyYXRlZ3lbXTtcbn1cbi8qIGM4IGlnbm9yZSBzdG9wICovXG5cbi8qKlxuICogRW50cnkgcmVwcmVzZW50aW5nIHRoZSByZXF1aXJlZCBvdXRwdXQgZnJvbSB0aGUgYmFja2VuZCBmb3IgY29kZWdlbiBnZW5lcmF0ZSBjb21tYW5kcyB0byB3b3JrLlxuICovXG4vKiBjOCBpZ25vcmUgc3RhcnQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUJhY2tlbmRPdXRwdXRFbnRyeSB7XG4gIC8qKlxuICAgKiBUaGUgcHJvdG9jb2wgdmVyc2lvbiBmb3IgdGhpcyBiYWNrZW5kIG91dHB1dC5cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHN0cmluZy1tYXAgcGF5bG9hZCBvZiBnZW5lcmF0ZWQgY29uZmlnIHZhbHVlcy5cbiAgICovXG4gIHJlYWRvbmx5IHBheWxvYWQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG4vKiBjOCBpZ25vcmUgc3RvcCAqL1xuXG4vKipcbiAqIEJhY2tlbmQgb3V0cHV0IHN0cmF0ZWd5IHVzZWQgdG8gd3JpdGUgY29uZmlnIHJlcXVpcmVkIGZvciBjb2RlZ2VuIHRhc2tzLlxuICovXG4vKiBjOCBpZ25vcmUgc3RhcnQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUJhY2tlbmRPdXRwdXRTdG9yYWdlU3RyYXRlZ3kge1xuICAvKipcbiAgICogQWRkIGFuIGVudHJ5IHRvIGJhY2tlbmQgb3V0cHV0LlxuICAgKiBAcGFyYW0ga2V5TmFtZSB0aGUga2V5XG4gICAqIEBwYXJhbSBiYWNrZW5kT3V0cHV0RW50cnkgdGhlIHJlY29yZCB0byBzdG9yZSBpbiB0aGUgYmFja2VuZCBvdXRwdXRcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWV0aG9kLXNpZ25hdHVyZS1zdHlsZVxuICBhZGRCYWNrZW5kT3V0cHV0RW50cnkoa2V5TmFtZTogc3RyaW5nLCBiYWNrZW5kT3V0cHV0RW50cnk6IElCYWNrZW5kT3V0cHV0RW50cnkpOiB2b2lkO1xufVxuLyogYzggaWdub3JlIHN0b3AgKi9cblxuLyoqXG4gKiBJbnB1dCBwcm9wcyBmb3IgdGhlIEFtcGxpZnlHcmFwaHFsQXBpIGNvbnN0cnVjdC4gU3BlY2lmaWVzIHdoYXQgdGhlIGlucHV0IHRvIHRyYW5zZm9ybSBpbnRvIGFuIEFwaSwgYW5kIGNvbmZpZ3VyYXRpb25zIGZvclxuICogdGhlIHRyYW5zZm9ybWF0aW9uIHByb2Nlc3MuXG4gKi9cbi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuZXhwb3J0IGludGVyZmFjZSBBbXBsaWZ5R3JhcGhxbEFwaVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBkZWZpbml0aW9uIHRvIHRyYW5zZm9ybSBpbiBhIGZ1bGwgQXBpLlxuICAgKiBDYW4gYmUgY29uc3RydWN0ZWQgdmlhIHRoZSBBbXBsaWZ5R3JhcGhxbERlZmluaXRpb24gY2xhc3MuXG4gICAqL1xuICByZWFkb25seSBkZWZpbml0aW9uOiBJQW1wbGlmeUdyYXBocWxEZWZpbml0aW9uO1xuXG4gIC8qKlxuICAgKiBOYW1lIHRvIGJlIHVzZWQgZm9yIHRoZSBBcHBTeW5jIEFwaS5cbiAgICogRGVmYXVsdDogY29uc3RydWN0IGlkLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBpTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogUmVxdWlyZWQgYXV0aCBtb2RlcyBmb3IgdGhlIEFwaS4gVGhpcyBvYmplY3QgbXVzdCBiZSBhIHN1cGVyc2V0IG9mIHRoZSBjb25maWd1cmVkIGF1dGggcHJvdmlkZXJzIGluIHRoZSBBcGkgZGVmaW5pdGlvbi5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHJlZmVyIHRvIGh0dHBzOi8vZG9jcy5hbXBsaWZ5LmF3cy9jbGkvZ3JhcGhxbC9hdXRob3JpemF0aW9uLXJ1bGVzL1xuICAgKi9cbiAgcmVhZG9ubHkgYXV0aG9yaXphdGlvbk1vZGVzOiBBdXRob3JpemF0aW9uTW9kZXM7XG5cbiAgLyoqXG4gICAqIExhbWJkYSBmdW5jdGlvbnMgcmVmZXJlbmNlZCBpbiB0aGUgZGVmaW5pdGlvbnMncyBAZnVuY3Rpb24gZGlyZWN0aXZlcy4gVGhlIGtleXMgb2YgdGhpcyBvYmplY3QgYXJlIGV4cGVjdGVkIHRvIGJlIHRoZVxuICAgKiBmdW5jdGlvbiBuYW1lIHByb3ZpZGVkIGluIHRoZSBkZWZpbml0aW9uLCBhbmQgdmFsdWUgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgbmFtZSByZWZlcnMgdG8uIElmIGEgbmFtZSBpcyBub3QgZm91bmQgaW4gdGhpc1xuICAgKiBtYXAsIHRoZW4gaXQgaXMgaW50ZXJwcmV0ZWQgYXMgdGhlIGBmdW5jdGlvbk5hbWVgLCBhbmQgYW4gYXJuIHdpbGwgYmUgY29uc3RydWN0ZWQgdXNpbmcgdGhlIGN1cnJlbnQgYXdzIGFjY291bnQgYW5kIHJlZ2lvblxuICAgKiAob3Igb3ZlcnJpZGRlbiB2YWx1ZXMsIGlmIHNldCBpbiB0aGUgZGlyZWN0aXZlKS5cbiAgICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uTmFtZU1hcD86IFJlY29yZDxzdHJpbmcsIElGdW5jdGlvbj47XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZSBjb25mbGljdCByZXNvbHV0aW9uIG9uIHRoZSBBcGksIHdoaWNoIGlzIHJlcXVpcmVkIHRvIGVuYWJsZSBEYXRhU3RvcmUgQXBpIGZ1bmN0aW9uYWxpdHkuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCByZWZlciB0byBodHRwczovL2RvY3MuYW1wbGlmeS5hd3MvbGliL2RhdGFzdG9yZS9nZXR0aW5nLXN0YXJ0ZWQvcS9wbGF0Zm9ybS9qcy9cbiAgICogQGRlcHJlY2F0ZWQgdXNlIGRhdGFTdG9yZUNvbmZpZ3VyYXRpb24gaW5zdGVhZC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbmZsaWN0UmVzb2x1dGlvbj86IENvbmZsaWN0UmVzb2x1dGlvbjtcblxuICAvKipcbiAgICogU3RhY2tNYXBwaW5ncyBvdmVycmlkZSB0aGUgYXNzaWduZWQgbmVzdGVkIHN0YWNrIG9uIGEgcGVyLXJlc291cmNlIGJhc2lzLiBPbmx5IGFwcGxpZXMgdG8gcmVzb2x2ZXJzLCBhbmQgdGFrZXMgdGhlIGZvcm1cbiAgICogeyA8bG9naWNhbElkPjogPHN0YWNrTmFtZT4gfVxuICAgKiBJdCBpcyBub3QgcmVjb21tZW5kZWQgdG8gdXNlIHRoaXMgcGFyYW1ldGVyIHVubGVzcyB5b3UgYXJlIGVuY291bnRlcmluZyBzdGFjayByZXNvdXJjZSBjb3VudCBsaW1pdHMsIGFuZCB3b3J0aCBub3RpbmcgdGhhdFxuICAgKiBhZnRlciBpbml0aWFsIGRlcGxveW1lbnQgQXBwU3luYyByZXNvbHZlcnMgY2Fubm90IGJlIG1vdmVkIGJldHdlZW4gbmVzdGVkIHN0YWNrcywgdGhleSB3aWxsIG5lZWQgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBhcHAsXG4gICAqIHRoZW4gcmUtYWRkZWQgZnJvbSBhIG5ldyBzdGFjay5cbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrTWFwcGluZ3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZXMgZm9yIGEgZ2l2ZW4gc2xvdCBpbiB0aGUgZ2VuZXJhdGVkIHJlc29sdmVyIHBpcGVsaW5lcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBzbG90cyBhcmUgYXZhaWxhYmxlLFxuICAgKiByZWZlciB0byBodHRwczovL2RvY3MuYW1wbGlmeS5hd3MvY2xpL2dyYXBocWwvY3VzdG9tLWJ1c2luZXNzLWxvZ2ljLyNvdmVycmlkZS1hbXBsaWZ5LWdlbmVyYXRlZC1yZXNvbHZlcnMuXG4gICAqL1xuICByZWFkb25seSBmdW5jdGlvblNsb3RzPzogRnVuY3Rpb25TbG90W107XG5cbiAgLyoqXG4gICAqIFByb3ZpZGUgYSBsaXN0IG9mIGFkZGl0aW9uYWwgY3VzdG9tIHRyYW5zZm9ybWVycyB3aGljaCBhcmUgaW5qZWN0ZWQgaW50byB0aGUgdHJhbnNmb3JtIHByb2Nlc3MuXG4gICAqIFRoZXNlIGN1c3RvbSB0cmFuc2Zvcm1lcnMgbXVzdCBiZSBpbXBsZW1lbnRlZCB3aXRoIGF3cy1jZGstbGliID49Mi4xMjkuMCwgYW5kIEBhd3MtYW1wbGlmeS9ncmFwaHFsLXRyYW5zZm9ybWVyLWNvcmUgPj0gMi4xLjFcbiAgICogQGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgdHJhbnNmb3JtZXJQbHVnaW5zPzogYW55W107XG5cbiAgLyoqXG4gICAqIElmIHVzaW5nIHByZWRpY3Rpb25zLCBhIGJ1Y2tldCBtdXN0IGJlIHByb3ZpZGVkIHdoaWNoIHdpbGwgYmUgdXNlZCB0byBzZWFyY2ggZm9yIGFzc2V0cy5cbiAgICovXG4gIHJlYWRvbmx5IHByZWRpY3Rpb25zQnVja2V0PzogSUJ1Y2tldDtcblxuICAvKipcbiAgICogVGhpcyByZXBsYWNlcyBmZWF0dXJlIGZsYWdzIGZyb20gdGhlIEFwaSBjb25zdHJ1Y3QsIGZvciBnZW5lcmFsIGluZm9ybWF0aW9uIG9uIHdoYXQgdGhlc2UgcGFyYW1ldGVycyBkbyxcbiAgICogcmVmZXIgdG8gaHR0cHM6Ly9kb2NzLmFtcGxpZnkuYXdzL2NsaS9yZWZlcmVuY2UvZmVhdHVyZS1mbGFncy8jZ3JhcGhRTFRyYW5zZm9ybWVyXG4gICAqL1xuICByZWFkb25seSB0cmFuc2xhdGlvbkJlaGF2aW9yPzogUGFydGlhbFRyYW5zbGF0aW9uQmVoYXZpb3I7XG5cbiAgLyoqXG4gICAqIFN0cmF0ZWd5IHRvIHN0b3JlIGNvbnN0cnVjdCBvdXRwdXRzLiBJZiBubyBvdXRwdXRTdG9yYWdlU3RyYXRlZ3kgaXMgcHJvdmlkZWQgYSBkZWZhdWx0IHN0cmF0ZWd5IHdpbGwgYmUgdXNlZC5cbiAgICovXG4gIHJlYWRvbmx5IG91dHB1dFN0b3JhZ2VTdHJhdGVneT86IElCYWNrZW5kT3V0cHV0U3RvcmFnZVN0cmF0ZWd5O1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgRGF0YVN0b3JlIGNvbmZsaWN0IHJlc29sdXRpb24gb24gdGhlIEFwaS4gQ29uZmxpY3QgcmVzb2x1dGlvbiBpcyByZXF1aXJlZCB0byBlbmFibGUgRGF0YVN0b3JlIEFwaSBmdW5jdGlvbmFsaXR5LlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcmVmZXIgdG8gaHR0cHM6Ly9kb2NzLmFtcGxpZnkuYXdzL2xpYi9kYXRhc3RvcmUvZ2V0dGluZy1zdGFydGVkL3EvcGxhdGZvcm0vanMvXG4gICAqL1xuICByZWFkb25seSBkYXRhU3RvcmVDb25maWd1cmF0aW9uPzogRGF0YVN0b3JlQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBsb2dnaW5nIGNvbmZpZ3VyYXRpb24gd2hlbiB3cml0aW5nIEdyYXBoUUwgb3BlcmF0aW9ucyBhbmQgdHJhY2luZyB0byBBbWF6b24gQ2xvdWRXYXRjaCBmb3IgYW4gQVdTIEFwcFN5bmMgR3JhcGhRTCBBUEkuXG4gICAqL1xuICByZWFkb25seSBsb2dnaW5nPzogTG9nZ2luZztcbn1cbi8qIGM4IGlnbm9yZSBzdG9wICovXG5cbi8qKlxuICogTDEgQ0RLIHJlc291cmNlcyBmcm9tIHRoZSBBcGkgd2hpY2ggd2VyZSBnZW5lcmF0ZWQgYXMgcGFydCBvZiB0aGUgdHJhbnNmb3JtLlxuICogVGhlc2UgYXJlIHBvdGVudGlhbGx5IHN0b3JlZCB1bmRlciBuZXN0ZWQgc3RhY2tzLCBidXQgcHJlc2VudGVkIG9yZ2FuaXplZCBieSB0eXBlIGluc3RlYWQuXG4gKi9cbi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuZXhwb3J0IGludGVyZmFjZSBBbXBsaWZ5R3JhcGhxbEFwaUNmblJlc291cmNlcyB7XG4gIC8qKlxuICAgKiBUaGUgR2VuZXJhdGVkIEFwcFN5bmMgQXBpIEwxIFJlc291cmNlXG4gICAqL1xuICByZWFkb25seSBjZm5HcmFwaHFsQXBpOiBDZm5HcmFwaFFMQXBpO1xuXG4gIC8qKlxuICAgKiBUaGUgR2VuZXJhdGVkIEFwcFN5bmMgU2NoZW1hIEwxIFJlc291cmNlXG4gICAqL1xuICByZWFkb25seSBjZm5HcmFwaHFsU2NoZW1hOiBDZm5HcmFwaFFMU2NoZW1hO1xuXG4gIC8qKlxuICAgKiBUaGUgR2VuZXJhdGVkIEFwcFN5bmMgQXBpIEtleSBMMSBSZXNvdXJjZVxuICAgKi9cbiAgcmVhZG9ubHkgY2ZuQXBpS2V5PzogQ2ZuQXBpS2V5O1xuXG4gIC8qKlxuICAgKiBUaGUgR2VuZXJhdGVkIEFwcFN5bmMgUmVzb2x2ZXIgTDEgUmVzb3VyY2VzLCBrZXllZCBieSBsb2dpY2FsSWQuXG4gICAqL1xuICByZWFkb25seSBjZm5SZXNvbHZlcnM6IFJlY29yZDxzdHJpbmcsIENmblJlc29sdmVyPjtcblxuICAvKipcbiAgICogVGhlIEdlbmVyYXRlZCBBcHBTeW5jIEZ1bmN0aW9uIEwxIFJlc291cmNlcywga2V5ZWQgYnkgbG9naWNhbElkLlxuICAgKi9cbiAgcmVhZG9ubHkgY2ZuRnVuY3Rpb25Db25maWd1cmF0aW9uczogUmVjb3JkPHN0cmluZywgQ2ZuRnVuY3Rpb25Db25maWd1cmF0aW9uPjtcblxuICAvKipcbiAgICogVGhlIEdlbmVyYXRlZCBBcHBTeW5jIERhdGFTb3VyY2UgTDEgUmVzb3VyY2VzLCBrZXllZCBieSBsb2dpY2FsSWQuXG4gICAqL1xuICByZWFkb25seSBjZm5EYXRhU291cmNlczogUmVjb3JkPHN0cmluZywgQ2ZuRGF0YVNvdXJjZT47XG5cbiAgLyoqXG4gICAqIFRoZSBHZW5lcmF0ZWQgRHluYW1vREIgVGFibGUgTDEgUmVzb3VyY2VzLCBrZXllZCBieSBsb2dpY2FsSWQuXG4gICAqL1xuICByZWFkb25seSBjZm5UYWJsZXM6IFJlY29yZDxzdHJpbmcsIENmblRhYmxlPjtcblxuICAvKipcbiAgICogVGhlIEdlbmVyYXRlZCBBbXBsaWZ5IER5bmFtb0RiIFRhYmxlIEwxIHJlc291cmNlIHdyYXBwZXIsIGtleWVkIGJ5IG1vZGVsIHR5cGUgbmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IGFtcGxpZnlEeW5hbW9EYlRhYmxlczogUmVjb3JkPHN0cmluZywgQW1wbGlmeUR5bmFtb0RiVGFibGVXcmFwcGVyPjtcblxuICAvKipcbiAgICogVGhlIEdlbmVyYXRlZCBJQU0gUm9sZSBMMSBSZXNvdXJjZXMsIGtleWVkIGJ5IGxvZ2ljYWxJZC5cbiAgICovXG4gIHJlYWRvbmx5IGNmblJvbGVzOiBSZWNvcmQ8c3RyaW5nLCBDZm5Sb2xlPjtcblxuICAvKipcbiAgICogVGhlIEdlbmVyYXRlZCBMYW1iZGEgRnVuY3Rpb24gTDEgUmVzb3VyY2VzLCBrZXllZCBieSBmdW5jdGlvbiBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgY2ZuRnVuY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBDZm5GdW5jdGlvbj47XG5cbiAgLyoqXG4gICAqIFJlbWFpbmluZyBMMSByZXNvdXJjZXMgZ2VuZXJhdGVkLCBrZXllZCBieSBsb2dpY2FsSWQuXG4gICAqL1xuICByZWFkb25seSBhZGRpdGlvbmFsQ2ZuUmVzb3VyY2VzOiBSZWNvcmQ8c3RyaW5nLCBDZm5SZXNvdXJjZT47XG59XG4vKiBjOCBpZ25vcmUgc3RvcCAqL1xuXG4vKipcbiAqIEFjY2Vzc2libGUgcmVzb3VyY2VzIGZyb20gdGhlIEFwaSB3aGljaCB3ZXJlIGdlbmVyYXRlZCBhcyBwYXJ0IG9mIHRoZSB0cmFuc2Zvcm0uXG4gKiBUaGVzZSBhcmUgcG90ZW50aWFsbHkgc3RvcmVkIHVuZGVyIG5lc3RlZCBzdGFja3MsIGJ1dCBwcmVzZW50ZWQgb3JnYW5pemVkIGJ5IHR5cGUgaW5zdGVhZC5cbiAqL1xuLyogYzggaWdub3JlIHN0YXJ0ICovXG5leHBvcnQgaW50ZXJmYWNlIEFtcGxpZnlHcmFwaHFsQXBpUmVzb3VyY2VzIHtcbiAgLyoqXG4gICAqIFRoZSBHZW5lcmF0ZWQgQXBwU3luYyBBcGkgTDIgUmVzb3VyY2UsIGluY2x1ZGVzIHRoZSBTY2hlbWEuXG4gICAqL1xuICByZWFkb25seSBncmFwaHFsQXBpOiBJR3JhcGhxbEFwaTtcblxuICAvKipcbiAgICogVGhlIEdlbmVyYXRlZCBEeW5hbW9EQiBUYWJsZSBMMiBSZXNvdXJjZXMsIGtleWVkIGJ5IGxvZ2ljYWxJZC5cbiAgICovXG4gIHJlYWRvbmx5IHRhYmxlczogUmVjb3JkPHN0cmluZywgSVRhYmxlPjtcblxuICAvKipcbiAgICogVGhlIEdlbmVyYXRlZCBJQU0gUm9sZSBMMiBSZXNvdXJjZXMsIGtleWVkIGJ5IGxvZ2ljYWxJZC5cbiAgICovXG4gIHJlYWRvbmx5IHJvbGVzOiBSZWNvcmQ8c3RyaW5nLCBJUm9sZT47XG5cbiAgLyoqXG4gICAqIFRoZSBHZW5lcmF0ZWQgTGFtYmRhIEZ1bmN0aW9uIEwxIFJlc291cmNlcywga2V5ZWQgYnkgZnVuY3Rpb24gbmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uczogUmVjb3JkPHN0cmluZywgSUZ1bmN0aW9uPjtcblxuICAvKipcbiAgICogTDEgQ2ZuIFJlc291cmNlcywgZm9yIHdoZW4gZGlwcGluZyBkb3duIGEgbGV2ZWwgb2YgYWJzdHJhY3Rpb24gaXMgZGVzaXJhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgY2ZuUmVzb3VyY2VzOiBBbXBsaWZ5R3JhcGhxbEFwaUNmblJlc291cmNlcztcblxuICAvKipcbiAgICogTmVzdGVkIFN0YWNrcyBnZW5lcmF0ZWQgYnkgdGhlIEFwaSBDb25zdHJ1Y3QuXG4gICAqL1xuICByZWFkb25seSBuZXN0ZWRTdGFja3M6IFJlY29yZDxzdHJpbmcsIE5lc3RlZFN0YWNrPjtcbn1cbi8qIGM4IGlnbm9yZSBzdG9wICovXG5cbi8qKlxuICogSW5wdXQgdHlwZSBwcm9wZXJ0aWVzIHdoZW4gYWRkaW5nIGEgbmV3IGFwcHN5bmMuQXBwc3luY0Z1bmN0aW9uIHRvIHRoZSBnZW5lcmF0ZWQgQVBJLlxuICogVGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoZSBPbWl0PGFwcHN5bmMuQXBwc3luY0Z1bmN0aW9uUHJvcHMsICdhcGknPi5cbiAqL1xuLyogYzggaWdub3JlIHN0YXJ0ICovXG5leHBvcnQgaW50ZXJmYWNlIEFkZEZ1bmN0aW9uUHJvcHMge1xuICAvKipcbiAgICogdGhlIGRhdGEgc291cmNlIGxpbmtlZCB0byB0aGlzIEFwcFN5bmMgRnVuY3Rpb25cbiAgICovXG4gIHJlYWRvbmx5IGRhdGFTb3VyY2U6IEJhc2VEYXRhU291cmNlO1xuXG4gIC8qKlxuICAgKiB0aGUgbmFtZSBvZiB0aGUgQXBwU3luYyBGdW5jdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiB0aGUgZGVzY3JpcHRpb24gZm9yIHRoaXMgQXBwU3luYyBGdW5jdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGRlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogdGhlIHJlcXVlc3QgbWFwcGluZyB0ZW1wbGF0ZSBmb3IgdGhlIEFwcFN5bmMgRnVuY3Rpb25cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyByZXF1ZXN0IG1hcHBpbmcgdGVtcGxhdGVcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVlc3RNYXBwaW5nVGVtcGxhdGU/OiBNYXBwaW5nVGVtcGxhdGU7XG5cbiAgLyoqXG4gICAqIHRoZSByZXNwb25zZSBtYXBwaW5nIHRlbXBsYXRlIGZvciB0aGUgQXBwU3luYyBGdW5jdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHJlc3BvbnNlIG1hcHBpbmcgdGVtcGxhdGVcbiAgICovXG4gIHJlYWRvbmx5IHJlc3BvbnNlTWFwcGluZ1RlbXBsYXRlPzogTWFwcGluZ1RlbXBsYXRlO1xuXG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb25zIHJ1bnRpbWVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBmdW5jdGlvbiBydW50aW1lLCBWVEwgbWFwcGluZyB0ZW1wbGF0ZXMgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgcnVudGltZT86IEZ1bmN0aW9uUnVudGltZTtcblxuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIGNvZGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBjb2RlIGlzIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IGNvZGU/OiBDb2RlO1xufVxuLyogYzggaWdub3JlIHN0b3AgKi9cbiJdfQ==
@@ -1,4 +1,6 @@
1
1
  import { BackendOutputStorageStrategy, FunctionResources, ResourceProvider } from '@aws-amplify/plugin-types';
2
+ import { ApplicationLogLevel } from 'aws-cdk-lib/aws-lambda';
3
+ import { RetentionDays } from 'aws-cdk-lib/aws-logs';
2
4
  import { Construct } from 'constructs';
3
5
  import { AIConversationOutput } from '@aws-amplify/backend-output-schemas';
4
6
  export type ConversationHandlerFunctionProps = {
@@ -13,6 +15,16 @@ export type ConversationHandlerFunctionProps = {
13
15
  * Default is 512MB.
14
16
  */
15
17
  memoryMB?: number;
18
+ /**
19
+ * An amount of time in seconds between 1 second and 15 minutes.
20
+ * Must be a whole number.
21
+ * Default is 60 seconds.
22
+ */
23
+ timeoutSeconds?: number;
24
+ logging?: {
25
+ level?: ApplicationLogLevel;
26
+ retention?: RetentionDays;
27
+ };
16
28
  /**
17
29
  * @internal
18
30
  */
@@ -42,5 +54,6 @@ export declare class ConversationHandlerFunction extends Construct implements Re
42
54
  */
43
55
  private storeOutput;
44
56
  private resolveMemory;
57
+ private resolveTimeout;
45
58
  }
46
59
  //# sourceMappingURL=conversation_handler_construct.d.ts.map
@@ -30,7 +30,7 @@ class ConversationHandlerFunction extends constructs_1.Construct {
30
30
  * Creates Conversation Handler Function CDK construct.
31
31
  */
32
32
  constructor(scope, id, props) {
33
- var _a;
33
+ var _a, _b, _c, _d;
34
34
  super(scope, id);
35
35
  this.props = props;
36
36
  /**
@@ -56,13 +56,25 @@ class ConversationHandlerFunction extends constructs_1.Construct {
56
56
  }
57
57
  return this.props.memoryMB;
58
58
  };
59
+ this.resolveTimeout = () => {
60
+ const timeoutMin = 1;
61
+ const timeoutMax = 60 * 15; // 15 minutes in seconds
62
+ const timeoutDefault = 60;
63
+ if (this.props.timeoutSeconds === undefined) {
64
+ return timeoutDefault;
65
+ }
66
+ if (!isWholeNumberBetweenInclusive(this.props.timeoutSeconds, timeoutMin, timeoutMax)) {
67
+ throw new Error(`timeoutSeconds must be a whole number between ${timeoutMin} and ${timeoutMax} inclusive`);
68
+ }
69
+ return this.props.timeoutSeconds;
70
+ };
59
71
  if (this.props.entry && !path_1.default.isAbsolute(this.props.entry)) {
60
72
  throw new Error('Entry must be absolute path');
61
73
  }
62
74
  aws_cdk_lib_1.Tags.of(this).add(platform_core_1.TagName.FRIENDLY_NAME, id);
63
75
  const conversationHandler = new aws_lambda_nodejs_1.NodejsFunction(this, `conversationHandlerFunction`, {
64
76
  runtime: aws_lambda_1.Runtime.NODEJS_18_X,
65
- timeout: aws_cdk_lib_1.Duration.seconds(60),
77
+ timeout: aws_cdk_lib_1.Duration.seconds(this.resolveTimeout()),
66
78
  entry: (_a = this.props.entry) !== null && _a !== void 0 ? _a : defaultHandlerFilePath,
67
79
  handler: 'handler',
68
80
  memorySize: this.resolveMemory(),
@@ -73,8 +85,9 @@ class ConversationHandlerFunction extends constructs_1.Construct {
73
85
  bundleAwsSDK: !!this.props.entry,
74
86
  },
75
87
  loggingFormat: aws_lambda_1.LoggingFormat.JSON,
88
+ applicationLogLevelV2: (_b = this.props.logging) === null || _b === void 0 ? void 0 : _b.level,
76
89
  logGroup: new aws_logs_1.LogGroup(this, 'conversationHandlerFunctionLogGroup', {
77
- retention: aws_logs_1.RetentionDays.INFINITE,
90
+ retention: (_d = (_c = this.props.logging) === null || _c === void 0 ? void 0 : _c.retention) !== null && _d !== void 0 ? _d : aws_logs_1.RetentionDays.INFINITE,
78
91
  dataProtectionPolicy: new aws_logs_1.DataProtectionPolicy({
79
92
  identifiers: [
80
93
  new aws_logs_1.CustomDataIdentifier('JWTToken', 'ey[A-Za-z0-9-_=]+\\.[A-Za-z0-9-_=]+\\.?[A-Za-z0-9-_.+/=]*'),
@@ -108,4 +121,4 @@ class ConversationHandlerFunction extends constructs_1.Construct {
108
121
  exports.ConversationHandlerFunction = ConversationHandlerFunction;
109
122
  ConversationHandlerFunction.eventVersion = '1.0';
110
123
  const isWholeNumberBetweenInclusive = (test, min, max) => min <= test && test <= max && test % 1 === 0;
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uX2hhbmRsZXJfY29uc3RydWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnZlcnNhdGlvbi9jb252ZXJzYXRpb25faGFuZGxlcl9jb25zdHJ1Y3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBS0EsNkNBQW9EO0FBQ3BELGlEQUE4RDtBQUM5RCx1REFJZ0M7QUFDaEMscUVBQStEO0FBQy9ELG1EQUs4QjtBQUM5QiwyQ0FBdUM7QUFDdkMsZ0RBQXdCO0FBQ3hCLDhEQUFxRDtBQUNyRCxnRkFHNkM7QUFFN0MsTUFBTSxhQUFhLEdBQUcsY0FBSSxDQUFDLFNBQVMsQ0FBQyxjQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQ3RFLE1BQU0sc0JBQXNCLEdBQUcsY0FBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztBQXlCOUU7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBYSwyQkFDWCxTQUFRLHNCQUFTO0lBTWpCOztPQUVHO0lBQ0gsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ08sS0FBdUM7O1FBRXhELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFGQSxVQUFLLEdBQUwsS0FBSyxDQUFrQztRQXVFMUQ7O1dBRUc7UUFDSyxnQkFBVyxHQUFHLENBQ3BCLHFCQUVhLEVBQ1AsRUFBRTtZQUNSLHFCQUFxQixhQUFyQixxQkFBcUIsdUJBQXJCLHFCQUFxQixDQUFFLHlCQUF5QixDQUFDLGdEQUF1QixFQUFFO2dCQUN4RSxPQUFPLEVBQUUsR0FBRztnQkFDWixPQUFPLEVBQUU7b0JBQ1AsMkJBQTJCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsWUFBWTtpQkFDaEU7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7UUFFTSxrQkFBYSxHQUFHLEdBQUcsRUFBRTtZQUMzQixNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUM7WUFDdEIsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FBQztZQUMxQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxLQUFLLFNBQVMsRUFBRTtnQkFDckMsT0FBTyxhQUFhLENBQUM7YUFDdEI7WUFDRCxJQUNFLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxFQUN6RTtnQkFDQSxNQUFNLElBQUksS0FBSyxDQUNiLDJDQUEyQyxTQUFTLFFBQVEsU0FBUyxZQUFZLENBQ2xGLENBQUM7YUFDSDtZQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDN0IsQ0FBQyxDQUFDO1FBbEdBLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksQ0FBQyxjQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDMUQsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1NBQ2hEO1FBRUQsa0JBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLHVCQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTdDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxrQ0FBYyxDQUM1QyxJQUFJLEVBQ0osNkJBQTZCLEVBQzdCO1lBQ0UsT0FBTyxFQUFFLG9CQUFhLENBQUMsV0FBVztZQUNsQyxPQUFPLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzdCLEtBQUssRUFBRSxNQUFBLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxtQ0FBSSxzQkFBc0I7WUFDakQsT0FBTyxFQUFFLFNBQVM7WUFDbEIsVUFBVSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDaEMsUUFBUSxFQUFFO2dCQUNSLHlGQUF5RjtnQkFDekYsdUNBQXVDO2dCQUN2Qyw0RkFBNEY7Z0JBQzVGLFlBQVksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLO2FBQ2pDO1lBQ0QsYUFBYSxFQUFFLDBCQUFhLENBQUMsSUFBSTtZQUNqQyxRQUFRLEVBQUUsSUFBSSxtQkFBUSxDQUFDLElBQUksRUFBRSxxQ0FBcUMsRUFBRTtnQkFDbEUsU0FBUyxFQUFFLHdCQUFhLENBQUMsUUFBUTtnQkFDakMsb0JBQW9CLEVBQUUsSUFBSSwrQkFBb0IsQ0FBQztvQkFDN0MsV0FBVyxFQUFFO3dCQUNYLElBQUksK0JBQW9CLENBQ3RCLFVBQVUsRUFDViwyREFBMkQsQ0FDNUQ7cUJBQ0Y7aUJBQ0YsQ0FBQzthQUNILENBQUM7U0FDSCxDQUNGLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDckQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUNyQyxDQUFDLEtBQUssRUFBRSxFQUFFOztnQkFDUixPQUFBLG1CQUNFLE1BQUEsS0FBSyxDQUFDLE1BQU0sbUNBQUksbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsTUFDakMsc0JBQXNCLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQTthQUFBLENBQ3hDLENBQUM7WUFDRixtQkFBbUIsQ0FBQyxlQUFlLENBQ2pDLElBQUkseUJBQWUsQ0FBQztnQkFDbEIsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSztnQkFDcEIsT0FBTyxFQUFFO29CQUNQLHFCQUFxQjtvQkFDckIsdUNBQXVDO2lCQUN4QztnQkFDRCxTQUFTO2FBQ1YsQ0FBQyxDQUNILENBQUM7U0FDSDtRQUVELElBQUksQ0FBQyxTQUFTLEdBQUc7WUFDZixNQUFNLEVBQUUsbUJBQW1CO1lBQzNCLFlBQVksRUFBRTtnQkFDWixXQUFXLEVBQUUsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FDN0MsVUFBVSxDQUNJO2FBQ2pCO1NBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3JELENBQUM7O0FBbEZILGtFQW9IQztBQWhIaUIsd0NBQVksR0FBaUMsS0FBSyxBQUF0QyxDQUF1QztBQWtIckUsTUFBTSw2QkFBNkIsR0FBRyxDQUNwQyxJQUFZLEVBQ1osR0FBVyxFQUNYLEdBQVcsRUFDWCxFQUFFLENBQUMsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmFja2VuZE91dHB1dFN0b3JhZ2VTdHJhdGVneSxcbiAgRnVuY3Rpb25SZXNvdXJjZXMsXG4gIFJlc291cmNlUHJvdmlkZXIsXG59IGZyb20gJ0Bhd3MtYW1wbGlmeS9wbHVnaW4tdHlwZXMnO1xuaW1wb3J0IHsgRHVyYXRpb24sIFN0YWNrLCBUYWdzIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgRWZmZWN0LCBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7XG4gIENmbkZ1bmN0aW9uLFxuICBSdW50aW1lIGFzIExhbWJkYVJ1bnRpbWUsXG4gIExvZ2dpbmdGb3JtYXQsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgTm9kZWpzRnVuY3Rpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqcyc7XG5pbXBvcnQge1xuICBDdXN0b21EYXRhSWRlbnRpZmllcixcbiAgRGF0YVByb3RlY3Rpb25Qb2xpY3ksXG4gIExvZ0dyb3VwLFxuICBSZXRlbnRpb25EYXlzLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgVGFnTmFtZSB9IGZyb20gJ0Bhd3MtYW1wbGlmeS9wbGF0Zm9ybS1jb3JlJztcbmltcG9ydCB7XG4gIEFJQ29udmVyc2F0aW9uT3V0cHV0LFxuICBhaUNvbnZlcnNhdGlvbk91dHB1dEtleSxcbn0gZnJvbSAnQGF3cy1hbXBsaWZ5L2JhY2tlbmQtb3V0cHV0LXNjaGVtYXMnO1xuXG5jb25zdCByZXNvdXJjZXNSb290ID0gcGF0aC5ub3JtYWxpemUocGF0aC5qb2luKF9fZGlybmFtZSwgJ3J1bnRpbWUnKSk7XG5jb25zdCBkZWZhdWx0SGFuZGxlckZpbGVQYXRoID0gcGF0aC5qb2luKHJlc291cmNlc1Jvb3QsICdkZWZhdWx0X2hhbmRsZXIuanMnKTtcblxuZXhwb3J0IHR5cGUgQ29udmVyc2F0aW9uSGFuZGxlckZ1bmN0aW9uUHJvcHMgPSB7XG4gIGVudHJ5Pzogc3RyaW5nO1xuICBtb2RlbHM6IEFycmF5PHtcbiAgICBtb2RlbElkOiBzdHJpbmc7XG4gICAgcmVnaW9uPzogc3RyaW5nO1xuICB9PjtcbiAgLyoqXG4gICAqIEFuIGFtb3VudCBvZiBtZW1vcnkgKFJBTSkgdG8gYWxsb2NhdGUgdG8gdGhlIGZ1bmN0aW9uIGJldHdlZW4gMTI4IGFuZCAxMDI0MCBNQi5cbiAgICogTXVzdCBiZSBhIHdob2xlIG51bWJlci5cbiAgICogRGVmYXVsdCBpcyA1MTJNQi5cbiAgICovXG4gIG1lbW9yeU1CPzogbnVtYmVyO1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBvdXRwdXRTdG9yYWdlU3RyYXRlZ3k/OiBCYWNrZW5kT3V0cHV0U3RvcmFnZVN0cmF0ZWd5PEFJQ29udmVyc2F0aW9uT3V0cHV0Pjtcbn07XG5cbi8vIEV2ZW50IGlzIGEgcHJvdG9jb2wgYmV0d2VlbiBBcHBTeW5jIGFuZCBMYW1iZGEgaGFuZGxlci4gVGhlcmVmb3JlLCBYLlkgc3Vic2V0IG9mIHNlbXZlciBpcyBlbm91Z2guXG4vLyBUeXBpbmcgdGhpcyBhcyAxLlggc28gdGhhdCBtYWpvciB2ZXJzaW9uIGNoYW5nZXMgYXJlIGNhdWdodCBieSBjb21waWxlciBpZiBjb25zdW1lciBvZiB0aGlzIGNvbnN0cnVjdCBpbnNwZWN0c1xuLy8gZXZlbnQgdmVyc2lvbi5cbmV4cG9ydCB0eXBlIENvbnZlcnNhdGlvblR1cm5FdmVudFZlcnNpb24gPSBgMS4ke251bWJlcn1gO1xuXG4vKipcbiAqIENvbnZlcnNhdGlvbiBIYW5kbGVyIEZ1bmN0aW9uIENESyBjb25zdHJ1Y3QuXG4gKiBUaGlzIGNvbnN0cnVjdCBkZXBsb3lzIHJlc291cmNlcyB0aGF0IGludGVncmF0ZSBjb252ZXJzYXRpb24gcm91dGVzXG4gKiBkZWZpbmVkIGluIGRhdGEgc2NoZW1hIHdpdGggQUkgbW9kZWxzIGF2YWlsYWJsZSBpbiBBV1MgQmVkcm9jay4gSS5lLlxuICogMS4gQVdTIExhbWJkYSBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgY29udmVyc2F0aW9uIHR1cm4gZXZlbnRzLlxuICogICAgV2l0aCBBbXBsaWZ5IHByb3ZpZGVkIGltcGxlbWVudGF0aW9uIGJ5IGRlZmF1bHQgYW5kIG9wdGlvbiB0byBzcGVjaWZ5XG4gKiAgICBjdXN0b20gaGFuZGxlci5cbiAqIDIuIEFXUyBDbG91ZFdhdGNoIGxvZyBncm91cCBwb2xpY3kgd2l0aCBhcHByb3ByaWF0ZSBkYXRhIHByb3RlY3Rpb24gcG9saWNpZXMuXG4gKiAzLiBBV1MgSUFNIHBvbGljeSB0aGF0IGdyYW50cyBhY2Nlc3MgdG8gc2VsZWN0ZWQgQVdTIEJlZHJvY2sgbW9kZWxzLlxuICovXG5leHBvcnQgY2xhc3MgQ29udmVyc2F0aW9uSGFuZGxlckZ1bmN0aW9uXG4gIGV4dGVuZHMgQ29uc3RydWN0XG4gIGltcGxlbWVudHMgUmVzb3VyY2VQcm92aWRlcjxGdW5jdGlvblJlc291cmNlcz5cbntcbiAgc3RhdGljIHJlYWRvbmx5IGV2ZW50VmVyc2lvbjogQ29udmVyc2F0aW9uVHVybkV2ZW50VmVyc2lvbiA9ICcxLjAnO1xuICByZXNvdXJjZXM6IEZ1bmN0aW9uUmVzb3VyY2VzO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIENvbnZlcnNhdGlvbiBIYW5kbGVyIEZ1bmN0aW9uIENESyBjb25zdHJ1Y3QuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9wczogQ29udmVyc2F0aW9uSGFuZGxlckZ1bmN0aW9uUHJvcHNcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGlmICh0aGlzLnByb3BzLmVudHJ5ICYmICFwYXRoLmlzQWJzb2x1dGUodGhpcy5wcm9wcy5lbnRyeSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRW50cnkgbXVzdCBiZSBhYnNvbHV0ZSBwYXRoJyk7XG4gICAgfVxuXG4gICAgVGFncy5vZih0aGlzKS5hZGQoVGFnTmFtZS5GUklFTkRMWV9OQU1FLCBpZCk7XG5cbiAgICBjb25zdCBjb252ZXJzYXRpb25IYW5kbGVyID0gbmV3IE5vZGVqc0Z1bmN0aW9uKFxuICAgICAgdGhpcyxcbiAgICAgIGBjb252ZXJzYXRpb25IYW5kbGVyRnVuY3Rpb25gLFxuICAgICAge1xuICAgICAgICBydW50aW1lOiBMYW1iZGFSdW50aW1lLk5PREVKU18xOF9YLFxuICAgICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDYwKSxcbiAgICAgICAgZW50cnk6IHRoaXMucHJvcHMuZW50cnkgPz8gZGVmYXVsdEhhbmRsZXJGaWxlUGF0aCxcbiAgICAgICAgaGFuZGxlcjogJ2hhbmRsZXInLFxuICAgICAgICBtZW1vcnlTaXplOiB0aGlzLnJlc29sdmVNZW1vcnkoKSxcbiAgICAgICAgYnVuZGxpbmc6IHtcbiAgICAgICAgICAvLyBEbyBub3QgYnVuZGxlIFNESyBpZiBjb252ZXJzYXRpb24gaGFuZGxlciBpcyB1c2luZyBvdXIgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiB3aGljaCBpc1xuICAgICAgICAgIC8vIGNvbXBhdGlibGUgd2l0aCBMYW1iZGEgcHJvdmlkZWQgU0RLLlxuICAgICAgICAgIC8vIEZvciBjdXN0b20gZW50cnkgd2UgZG8gYnVuZGxlIFNESyBhcyB3ZSBjYW4ndCBjb250cm9sIHZlcnNpb24gY3VzdG9tZXIgaXMgY29kaW5nIGFnYWluc3QuXG4gICAgICAgICAgYnVuZGxlQXdzU0RLOiAhIXRoaXMucHJvcHMuZW50cnksXG4gICAgICAgIH0sXG4gICAgICAgIGxvZ2dpbmdGb3JtYXQ6IExvZ2dpbmdGb3JtYXQuSlNPTixcbiAgICAgICAgbG9nR3JvdXA6IG5ldyBMb2dHcm91cCh0aGlzLCAnY29udmVyc2F0aW9uSGFuZGxlckZ1bmN0aW9uTG9nR3JvdXAnLCB7XG4gICAgICAgICAgcmV0ZW50aW9uOiBSZXRlbnRpb25EYXlzLklORklOSVRFLFxuICAgICAgICAgIGRhdGFQcm90ZWN0aW9uUG9saWN5OiBuZXcgRGF0YVByb3RlY3Rpb25Qb2xpY3koe1xuICAgICAgICAgICAgaWRlbnRpZmllcnM6IFtcbiAgICAgICAgICAgICAgbmV3IEN1c3RvbURhdGFJZGVudGlmaWVyKFxuICAgICAgICAgICAgICAgICdKV1RUb2tlbicsXG4gICAgICAgICAgICAgICAgJ2V5W0EtWmEtejAtOS1fPV0rXFxcXC5bQS1aYS16MC05LV89XStcXFxcLj9bQS1aYS16MC05LV8uKy89XSonXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KSxcbiAgICAgIH1cbiAgICApO1xuXG4gICAgaWYgKHRoaXMucHJvcHMubW9kZWxzICYmIHRoaXMucHJvcHMubW9kZWxzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHJlc291cmNlcyA9IHRoaXMucHJvcHMubW9kZWxzLm1hcChcbiAgICAgICAgKG1vZGVsKSA9PlxuICAgICAgICAgIGBhcm46YXdzOmJlZHJvY2s6JHtcbiAgICAgICAgICAgIG1vZGVsLnJlZ2lvbiA/PyBTdGFjay5vZih0aGlzKS5yZWdpb25cbiAgICAgICAgICB9Ojpmb3VuZGF0aW9uLW1vZGVsLyR7bW9kZWwubW9kZWxJZH1gXG4gICAgICApO1xuICAgICAgY29udmVyc2F0aW9uSGFuZGxlci5hZGRUb1JvbGVQb2xpY3koXG4gICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICdiZWRyb2NrOkludm9rZU1vZGVsJyxcbiAgICAgICAgICAgICdiZWRyb2NrOkludm9rZU1vZGVsV2l0aFJlc3BvbnNlU3RyZWFtJyxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlc291cmNlcyxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5yZXNvdXJjZXMgPSB7XG4gICAgICBsYW1iZGE6IGNvbnZlcnNhdGlvbkhhbmRsZXIsXG4gICAgICBjZm5SZXNvdXJjZXM6IHtcbiAgICAgICAgY2ZuRnVuY3Rpb246IGNvbnZlcnNhdGlvbkhhbmRsZXIubm9kZS5maW5kQ2hpbGQoXG4gICAgICAgICAgJ1Jlc291cmNlJ1xuICAgICAgICApIGFzIENmbkZ1bmN0aW9uLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgdGhpcy5zdG9yZU91dHB1dCh0aGlzLnByb3BzLm91dHB1dFN0b3JhZ2VTdHJhdGVneSk7XG4gIH1cblxuICAvKipcbiAgICogQXBwZW5kIGNvbnZlcnNhdGlvbiBoYW5kbGVyIHRvIGRlZmluZWQgZnVuY3Rpb25zLlxuICAgKi9cbiAgcHJpdmF0ZSBzdG9yZU91dHB1dCA9IChcbiAgICBvdXRwdXRTdG9yYWdlU3RyYXRlZ3k6XG4gICAgICB8IEJhY2tlbmRPdXRwdXRTdG9yYWdlU3RyYXRlZ3k8QUlDb252ZXJzYXRpb25PdXRwdXQ+XG4gICAgICB8IHVuZGVmaW5lZFxuICApOiB2b2lkID0+IHtcbiAgICBvdXRwdXRTdG9yYWdlU3RyYXRlZ3k/LmFwcGVuZFRvQmFja2VuZE91dHB1dExpc3QoYWlDb252ZXJzYXRpb25PdXRwdXRLZXksIHtcbiAgICAgIHZlcnNpb246ICcxJyxcbiAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgZGVmaW5lZENvbnZlcnNhdGlvbkhhbmRsZXJzOiB0aGlzLnJlc291cmNlcy5sYW1iZGEuZnVuY3Rpb25OYW1lLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfTtcblxuICBwcml2YXRlIHJlc29sdmVNZW1vcnkgPSAoKSA9PiB7XG4gICAgY29uc3QgbWVtb3J5TWluID0gMTI4O1xuICAgIGNvbnN0IG1lbW9yeU1heCA9IDEwMjQwO1xuICAgIGNvbnN0IG1lbW9yeURlZmF1bHQgPSA1MTI7XG4gICAgaWYgKHRoaXMucHJvcHMubWVtb3J5TUIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIG1lbW9yeURlZmF1bHQ7XG4gICAgfVxuICAgIGlmIChcbiAgICAgICFpc1dob2xlTnVtYmVyQmV0d2VlbkluY2x1c2l2ZSh0aGlzLnByb3BzLm1lbW9yeU1CLCBtZW1vcnlNaW4sIG1lbW9yeU1heClcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYG1lbW9yeU1CIG11c3QgYmUgYSB3aG9sZSBudW1iZXIgYmV0d2VlbiAke21lbW9yeU1pbn0gYW5kICR7bWVtb3J5TWF4fSBpbmNsdXNpdmVgXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wcm9wcy5tZW1vcnlNQjtcbiAgfTtcbn1cblxuY29uc3QgaXNXaG9sZU51bWJlckJldHdlZW5JbmNsdXNpdmUgPSAoXG4gIHRlc3Q6IG51bWJlcixcbiAgbWluOiBudW1iZXIsXG4gIG1heDogbnVtYmVyXG4pID0+IG1pbiA8PSB0ZXN0ICYmIHRlc3QgPD0gbWF4ICYmIHRlc3QgJSAxID09PSAwO1xuIl19
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uX2hhbmRsZXJfY29uc3RydWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnZlcnNhdGlvbi9jb252ZXJzYXRpb25faGFuZGxlcl9jb25zdHJ1Y3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBS0EsNkNBQW9EO0FBQ3BELGlEQUE4RDtBQUM5RCx1REFLZ0M7QUFDaEMscUVBQStEO0FBQy9ELG1EQUs4QjtBQUM5QiwyQ0FBdUM7QUFDdkMsZ0RBQXdCO0FBQ3hCLDhEQUFxRDtBQUNyRCxnRkFHNkM7QUFFN0MsTUFBTSxhQUFhLEdBQUcsY0FBSSxDQUFDLFNBQVMsQ0FBQyxjQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQ3RFLE1BQU0sc0JBQXNCLEdBQUcsY0FBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztBQXNDOUU7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBYSwyQkFDWCxTQUFRLHNCQUFTO0lBTWpCOztPQUVHO0lBQ0gsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ08sS0FBdUM7O1FBRXhELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFGQSxVQUFLLEdBQUwsS0FBSyxDQUFrQztRQXdFMUQ7O1dBRUc7UUFDSyxnQkFBVyxHQUFHLENBQ3BCLHFCQUVhLEVBQ1AsRUFBRTtZQUNSLHFCQUFxQixhQUFyQixxQkFBcUIsdUJBQXJCLHFCQUFxQixDQUFFLHlCQUF5QixDQUFDLGdEQUF1QixFQUFFO2dCQUN4RSxPQUFPLEVBQUUsR0FBRztnQkFDWixPQUFPLEVBQUU7b0JBQ1AsMkJBQTJCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsWUFBWTtpQkFDaEU7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7UUFFTSxrQkFBYSxHQUFHLEdBQUcsRUFBRTtZQUMzQixNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUM7WUFDdEIsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FBQztZQUMxQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxLQUFLLFNBQVMsRUFBRTtnQkFDckMsT0FBTyxhQUFhLENBQUM7YUFDdEI7WUFDRCxJQUNFLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxFQUN6RTtnQkFDQSxNQUFNLElBQUksS0FBSyxDQUNiLDJDQUEyQyxTQUFTLFFBQVEsU0FBUyxZQUFZLENBQ2xGLENBQUM7YUFDSDtZQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDN0IsQ0FBQyxDQUFDO1FBRU0sbUJBQWMsR0FBRyxHQUFHLEVBQUU7WUFDNUIsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1lBQ3JCLE1BQU0sVUFBVSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyx3QkFBd0I7WUFDcEQsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDO1lBQzFCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEtBQUssU0FBUyxFQUFFO2dCQUMzQyxPQUFPLGNBQWMsQ0FBQzthQUN2QjtZQUVELElBQ0UsQ0FBQyw2QkFBNkIsQ0FDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQ3pCLFVBQVUsRUFDVixVQUFVLENBQ1gsRUFDRDtnQkFDQSxNQUFNLElBQUksS0FBSyxDQUNiLGlEQUFpRCxVQUFVLFFBQVEsVUFBVSxZQUFZLENBQzFGLENBQUM7YUFDSDtZQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7UUFDbkMsQ0FBQyxDQUFDO1FBekhBLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksQ0FBQyxjQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDMUQsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1NBQ2hEO1FBRUQsa0JBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLHVCQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTdDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxrQ0FBYyxDQUM1QyxJQUFJLEVBQ0osNkJBQTZCLEVBQzdCO1lBQ0UsT0FBTyxFQUFFLG9CQUFhLENBQUMsV0FBVztZQUNsQyxPQUFPLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ2hELEtBQUssRUFBRSxNQUFBLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxtQ0FBSSxzQkFBc0I7WUFDakQsT0FBTyxFQUFFLFNBQVM7WUFDbEIsVUFBVSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDaEMsUUFBUSxFQUFFO2dCQUNSLHlGQUF5RjtnQkFDekYsdUNBQXVDO2dCQUN2Qyw0RkFBNEY7Z0JBQzVGLFlBQVksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLO2FBQ2pDO1lBQ0QsYUFBYSxFQUFFLDBCQUFhLENBQUMsSUFBSTtZQUNqQyxxQkFBcUIsRUFBRSxNQUFBLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTywwQ0FBRSxLQUFLO1lBQ2hELFFBQVEsRUFBRSxJQUFJLG1CQUFRLENBQUMsSUFBSSxFQUFFLHFDQUFxQyxFQUFFO2dCQUNsRSxTQUFTLEVBQUUsTUFBQSxNQUFBLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTywwQ0FBRSxTQUFTLG1DQUFJLHdCQUFhLENBQUMsUUFBUTtnQkFDbEUsb0JBQW9CLEVBQUUsSUFBSSwrQkFBb0IsQ0FBQztvQkFDN0MsV0FBVyxFQUFFO3dCQUNYLElBQUksK0JBQW9CLENBQ3RCLFVBQVUsRUFDViwyREFBMkQsQ0FDNUQ7cUJBQ0Y7aUJBQ0YsQ0FBQzthQUNILENBQUM7U0FDSCxDQUNGLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDckQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUNyQyxDQUFDLEtBQUssRUFBRSxFQUFFOztnQkFDUixPQUFBLG1CQUNFLE1BQUEsS0FBSyxDQUFDLE1BQU0sbUNBQUksbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsTUFDakMsc0JBQXNCLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQTthQUFBLENBQ3hDLENBQUM7WUFDRixtQkFBbUIsQ0FBQyxlQUFlLENBQ2pDLElBQUkseUJBQWUsQ0FBQztnQkFDbEIsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSztnQkFDcEIsT0FBTyxFQUFFO29CQUNQLHFCQUFxQjtvQkFDckIsdUNBQXVDO2lCQUN4QztnQkFDRCxTQUFTO2FBQ1YsQ0FBQyxDQUNILENBQUM7U0FDSDtRQUVELElBQUksQ0FBQyxTQUFTLEdBQUc7WUFDZixNQUFNLEVBQUUsbUJBQW1CO1lBQzNCLFlBQVksRUFBRTtnQkFDWixXQUFXLEVBQUUsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FDN0MsVUFBVSxDQUNJO2FBQ2pCO1NBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3JELENBQUM7O0FBbkZILGtFQTJJQztBQXZJaUIsd0NBQVksR0FBaUMsS0FBSyxBQUF0QyxDQUF1QztBQXlJckUsTUFBTSw2QkFBNkIsR0FBRyxDQUNwQyxJQUFZLEVBQ1osR0FBVyxFQUNYLEdBQVcsRUFDWCxFQUFFLENBQUMsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmFja2VuZE91dHB1dFN0b3JhZ2VTdHJhdGVneSxcbiAgRnVuY3Rpb25SZXNvdXJjZXMsXG4gIFJlc291cmNlUHJvdmlkZXIsXG59IGZyb20gJ0Bhd3MtYW1wbGlmeS9wbHVnaW4tdHlwZXMnO1xuaW1wb3J0IHsgRHVyYXRpb24sIFN0YWNrLCBUYWdzIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgRWZmZWN0LCBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uTG9nTGV2ZWwsXG4gIENmbkZ1bmN0aW9uLFxuICBSdW50aW1lIGFzIExhbWJkYVJ1bnRpbWUsXG4gIExvZ2dpbmdGb3JtYXQsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgTm9kZWpzRnVuY3Rpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqcyc7XG5pbXBvcnQge1xuICBDdXN0b21EYXRhSWRlbnRpZmllcixcbiAgRGF0YVByb3RlY3Rpb25Qb2xpY3ksXG4gIExvZ0dyb3VwLFxuICBSZXRlbnRpb25EYXlzLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgVGFnTmFtZSB9IGZyb20gJ0Bhd3MtYW1wbGlmeS9wbGF0Zm9ybS1jb3JlJztcbmltcG9ydCB7XG4gIEFJQ29udmVyc2F0aW9uT3V0cHV0LFxuICBhaUNvbnZlcnNhdGlvbk91dHB1dEtleSxcbn0gZnJvbSAnQGF3cy1hbXBsaWZ5L2JhY2tlbmQtb3V0cHV0LXNjaGVtYXMnO1xuXG5jb25zdCByZXNvdXJjZXNSb290ID0gcGF0aC5ub3JtYWxpemUocGF0aC5qb2luKF9fZGlybmFtZSwgJ3J1bnRpbWUnKSk7XG5jb25zdCBkZWZhdWx0SGFuZGxlckZpbGVQYXRoID0gcGF0aC5qb2luKHJlc291cmNlc1Jvb3QsICdkZWZhdWx0X2hhbmRsZXIuanMnKTtcblxuZXhwb3J0IHR5cGUgQ29udmVyc2F0aW9uSGFuZGxlckZ1bmN0aW9uUHJvcHMgPSB7XG4gIGVudHJ5Pzogc3RyaW5nO1xuICBtb2RlbHM6IEFycmF5PHtcbiAgICBtb2RlbElkOiBzdHJpbmc7XG4gICAgcmVnaW9uPzogc3RyaW5nO1xuICB9PjtcbiAgLyoqXG4gICAqIEFuIGFtb3VudCBvZiBtZW1vcnkgKFJBTSkgdG8gYWxsb2NhdGUgdG8gdGhlIGZ1bmN0aW9uIGJldHdlZW4gMTI4IGFuZCAxMDI0MCBNQi5cbiAgICogTXVzdCBiZSBhIHdob2xlIG51bWJlci5cbiAgICogRGVmYXVsdCBpcyA1MTJNQi5cbiAgICovXG4gIG1lbW9yeU1CPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBbiBhbW91bnQgb2YgdGltZSBpbiBzZWNvbmRzIGJldHdlZW4gMSBzZWNvbmQgYW5kIDE1IG1pbnV0ZXMuXG4gICAqIE11c3QgYmUgYSB3aG9sZSBudW1iZXIuXG4gICAqIERlZmF1bHQgaXMgNjAgc2Vjb25kcy5cbiAgICovXG4gIHRpbWVvdXRTZWNvbmRzPzogbnVtYmVyO1xuXG4gIGxvZ2dpbmc/OiB7XG4gICAgbGV2ZWw/OiBBcHBsaWNhdGlvbkxvZ0xldmVsO1xuICAgIHJldGVudGlvbj86IFJldGVudGlvbkRheXM7XG4gIH07XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgb3V0cHV0U3RvcmFnZVN0cmF0ZWd5PzogQmFja2VuZE91dHB1dFN0b3JhZ2VTdHJhdGVneTxBSUNvbnZlcnNhdGlvbk91dHB1dD47XG59O1xuXG4vLyBFdmVudCBpcyBhIHByb3RvY29sIGJldHdlZW4gQXBwU3luYyBhbmQgTGFtYmRhIGhhbmRsZXIuIFRoZXJlZm9yZSwgWC5ZIHN1YnNldCBvZiBzZW12ZXIgaXMgZW5vdWdoLlxuLy8gVHlwaW5nIHRoaXMgYXMgMS5YIHNvIHRoYXQgbWFqb3IgdmVyc2lvbiBjaGFuZ2VzIGFyZSBjYXVnaHQgYnkgY29tcGlsZXIgaWYgY29uc3VtZXIgb2YgdGhpcyBjb25zdHJ1Y3QgaW5zcGVjdHNcbi8vIGV2ZW50IHZlcnNpb24uXG5leHBvcnQgdHlwZSBDb252ZXJzYXRpb25UdXJuRXZlbnRWZXJzaW9uID0gYDEuJHtudW1iZXJ9YDtcblxuLyoqXG4gKiBDb252ZXJzYXRpb24gSGFuZGxlciBGdW5jdGlvbiBDREsgY29uc3RydWN0LlxuICogVGhpcyBjb25zdHJ1Y3QgZGVwbG95cyByZXNvdXJjZXMgdGhhdCBpbnRlZ3JhdGUgY29udmVyc2F0aW9uIHJvdXRlc1xuICogZGVmaW5lZCBpbiBkYXRhIHNjaGVtYSB3aXRoIEFJIG1vZGVscyBhdmFpbGFibGUgaW4gQVdTIEJlZHJvY2suIEkuZS5cbiAqIDEuIEFXUyBMYW1iZGEgZnVuY3Rpb24gdGhhdCBoYW5kbGVzIGNvbnZlcnNhdGlvbiB0dXJuIGV2ZW50cy5cbiAqICAgIFdpdGggQW1wbGlmeSBwcm92aWRlZCBpbXBsZW1lbnRhdGlvbiBieSBkZWZhdWx0IGFuZCBvcHRpb24gdG8gc3BlY2lmeVxuICogICAgY3VzdG9tIGhhbmRsZXIuXG4gKiAyLiBBV1MgQ2xvdWRXYXRjaCBsb2cgZ3JvdXAgcG9saWN5IHdpdGggYXBwcm9wcmlhdGUgZGF0YSBwcm90ZWN0aW9uIHBvbGljaWVzLlxuICogMy4gQVdTIElBTSBwb2xpY3kgdGhhdCBncmFudHMgYWNjZXNzIHRvIHNlbGVjdGVkIEFXUyBCZWRyb2NrIG1vZGVscy5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbnZlcnNhdGlvbkhhbmRsZXJGdW5jdGlvblxuICBleHRlbmRzIENvbnN0cnVjdFxuICBpbXBsZW1lbnRzIFJlc291cmNlUHJvdmlkZXI8RnVuY3Rpb25SZXNvdXJjZXM+XG57XG4gIHN0YXRpYyByZWFkb25seSBldmVudFZlcnNpb246IENvbnZlcnNhdGlvblR1cm5FdmVudFZlcnNpb24gPSAnMS4wJztcbiAgcmVzb3VyY2VzOiBGdW5jdGlvblJlc291cmNlcztcblxuICAvKipcbiAgICogQ3JlYXRlcyBDb252ZXJzYXRpb24gSGFuZGxlciBGdW5jdGlvbiBDREsgY29uc3RydWN0LlxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IENvbnZlcnNhdGlvbkhhbmRsZXJGdW5jdGlvblByb3BzXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBpZiAodGhpcy5wcm9wcy5lbnRyeSAmJiAhcGF0aC5pc0Fic29sdXRlKHRoaXMucHJvcHMuZW50cnkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VudHJ5IG11c3QgYmUgYWJzb2x1dGUgcGF0aCcpO1xuICAgIH1cblxuICAgIFRhZ3Mub2YodGhpcykuYWRkKFRhZ05hbWUuRlJJRU5ETFlfTkFNRSwgaWQpO1xuXG4gICAgY29uc3QgY29udmVyc2F0aW9uSGFuZGxlciA9IG5ldyBOb2RlanNGdW5jdGlvbihcbiAgICAgIHRoaXMsXG4gICAgICBgY29udmVyc2F0aW9uSGFuZGxlckZ1bmN0aW9uYCxcbiAgICAgIHtcbiAgICAgICAgcnVudGltZTogTGFtYmRhUnVudGltZS5OT0RFSlNfMThfWCxcbiAgICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcyh0aGlzLnJlc29sdmVUaW1lb3V0KCkpLFxuICAgICAgICBlbnRyeTogdGhpcy5wcm9wcy5lbnRyeSA/PyBkZWZhdWx0SGFuZGxlckZpbGVQYXRoLFxuICAgICAgICBoYW5kbGVyOiAnaGFuZGxlcicsXG4gICAgICAgIG1lbW9yeVNpemU6IHRoaXMucmVzb2x2ZU1lbW9yeSgpLFxuICAgICAgICBidW5kbGluZzoge1xuICAgICAgICAgIC8vIERvIG5vdCBidW5kbGUgU0RLIGlmIGNvbnZlcnNhdGlvbiBoYW5kbGVyIGlzIHVzaW5nIG91ciBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHdoaWNoIGlzXG4gICAgICAgICAgLy8gY29tcGF0aWJsZSB3aXRoIExhbWJkYSBwcm92aWRlZCBTREsuXG4gICAgICAgICAgLy8gRm9yIGN1c3RvbSBlbnRyeSB3ZSBkbyBidW5kbGUgU0RLIGFzIHdlIGNhbid0IGNvbnRyb2wgdmVyc2lvbiBjdXN0b21lciBpcyBjb2RpbmcgYWdhaW5zdC5cbiAgICAgICAgICBidW5kbGVBd3NTREs6ICEhdGhpcy5wcm9wcy5lbnRyeSxcbiAgICAgICAgfSxcbiAgICAgICAgbG9nZ2luZ0Zvcm1hdDogTG9nZ2luZ0Zvcm1hdC5KU09OLFxuICAgICAgICBhcHBsaWNhdGlvbkxvZ0xldmVsVjI6IHRoaXMucHJvcHMubG9nZ2luZz8ubGV2ZWwsXG4gICAgICAgIGxvZ0dyb3VwOiBuZXcgTG9nR3JvdXAodGhpcywgJ2NvbnZlcnNhdGlvbkhhbmRsZXJGdW5jdGlvbkxvZ0dyb3VwJywge1xuICAgICAgICAgIHJldGVudGlvbjogdGhpcy5wcm9wcy5sb2dnaW5nPy5yZXRlbnRpb24gPz8gUmV0ZW50aW9uRGF5cy5JTkZJTklURSxcbiAgICAgICAgICBkYXRhUHJvdGVjdGlvblBvbGljeTogbmV3IERhdGFQcm90ZWN0aW9uUG9saWN5KHtcbiAgICAgICAgICAgIGlkZW50aWZpZXJzOiBbXG4gICAgICAgICAgICAgIG5ldyBDdXN0b21EYXRhSWRlbnRpZmllcihcbiAgICAgICAgICAgICAgICAnSldUVG9rZW4nLFxuICAgICAgICAgICAgICAgICdleVtBLVphLXowLTktXz1dK1xcXFwuW0EtWmEtejAtOS1fPV0rXFxcXC4/W0EtWmEtejAtOS1fLisvPV0qJ1xuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSksXG4gICAgICB9XG4gICAgKTtcblxuICAgIGlmICh0aGlzLnByb3BzLm1vZGVscyAmJiB0aGlzLnByb3BzLm1vZGVscy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCByZXNvdXJjZXMgPSB0aGlzLnByb3BzLm1vZGVscy5tYXAoXG4gICAgICAgIChtb2RlbCkgPT5cbiAgICAgICAgICBgYXJuOmF3czpiZWRyb2NrOiR7XG4gICAgICAgICAgICBtb2RlbC5yZWdpb24gPz8gU3RhY2sub2YodGhpcykucmVnaW9uXG4gICAgICAgICAgfTo6Zm91bmRhdGlvbi1tb2RlbC8ke21vZGVsLm1vZGVsSWR9YFxuICAgICAgKTtcbiAgICAgIGNvbnZlcnNhdGlvbkhhbmRsZXIuYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAnYmVkcm9jazpJbnZva2VNb2RlbCcsXG4gICAgICAgICAgICAnYmVkcm9jazpJbnZva2VNb2RlbFdpdGhSZXNwb25zZVN0cmVhbScsXG4gICAgICAgICAgXSxcbiAgICAgICAgICByZXNvdXJjZXMsXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMucmVzb3VyY2VzID0ge1xuICAgICAgbGFtYmRhOiBjb252ZXJzYXRpb25IYW5kbGVyLFxuICAgICAgY2ZuUmVzb3VyY2VzOiB7XG4gICAgICAgIGNmbkZ1bmN0aW9uOiBjb252ZXJzYXRpb25IYW5kbGVyLm5vZGUuZmluZENoaWxkKFxuICAgICAgICAgICdSZXNvdXJjZSdcbiAgICAgICAgKSBhcyBDZm5GdW5jdGlvbixcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHRoaXMuc3RvcmVPdXRwdXQodGhpcy5wcm9wcy5vdXRwdXRTdG9yYWdlU3RyYXRlZ3kpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGVuZCBjb252ZXJzYXRpb24gaGFuZGxlciB0byBkZWZpbmVkIGZ1bmN0aW9ucy5cbiAgICovXG4gIHByaXZhdGUgc3RvcmVPdXRwdXQgPSAoXG4gICAgb3V0cHV0U3RvcmFnZVN0cmF0ZWd5OlxuICAgICAgfCBCYWNrZW5kT3V0cHV0U3RvcmFnZVN0cmF0ZWd5PEFJQ29udmVyc2F0aW9uT3V0cHV0PlxuICAgICAgfCB1bmRlZmluZWRcbiAgKTogdm9pZCA9PiB7XG4gICAgb3V0cHV0U3RvcmFnZVN0cmF0ZWd5Py5hcHBlbmRUb0JhY2tlbmRPdXRwdXRMaXN0KGFpQ29udmVyc2F0aW9uT3V0cHV0S2V5LCB7XG4gICAgICB2ZXJzaW9uOiAnMScsXG4gICAgICBwYXlsb2FkOiB7XG4gICAgICAgIGRlZmluZWRDb252ZXJzYXRpb25IYW5kbGVyczogdGhpcy5yZXNvdXJjZXMubGFtYmRhLmZ1bmN0aW9uTmFtZSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH07XG5cbiAgcHJpdmF0ZSByZXNvbHZlTWVtb3J5ID0gKCkgPT4ge1xuICAgIGNvbnN0IG1lbW9yeU1pbiA9IDEyODtcbiAgICBjb25zdCBtZW1vcnlNYXggPSAxMDI0MDtcbiAgICBjb25zdCBtZW1vcnlEZWZhdWx0ID0gNTEyO1xuICAgIGlmICh0aGlzLnByb3BzLm1lbW9yeU1CID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBtZW1vcnlEZWZhdWx0O1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAhaXNXaG9sZU51bWJlckJldHdlZW5JbmNsdXNpdmUodGhpcy5wcm9wcy5tZW1vcnlNQiwgbWVtb3J5TWluLCBtZW1vcnlNYXgpXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBtZW1vcnlNQiBtdXN0IGJlIGEgd2hvbGUgbnVtYmVyIGJldHdlZW4gJHttZW1vcnlNaW59IGFuZCAke21lbW9yeU1heH0gaW5jbHVzaXZlYFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucHJvcHMubWVtb3J5TUI7XG4gIH07XG5cbiAgcHJpdmF0ZSByZXNvbHZlVGltZW91dCA9ICgpID0+IHtcbiAgICBjb25zdCB0aW1lb3V0TWluID0gMTtcbiAgICBjb25zdCB0aW1lb3V0TWF4ID0gNjAgKiAxNTsgLy8gMTUgbWludXRlcyBpbiBzZWNvbmRzXG4gICAgY29uc3QgdGltZW91dERlZmF1bHQgPSA2MDtcbiAgICBpZiAodGhpcy5wcm9wcy50aW1lb3V0U2Vjb25kcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdGltZW91dERlZmF1bHQ7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgIWlzV2hvbGVOdW1iZXJCZXR3ZWVuSW5jbHVzaXZlKFxuICAgICAgICB0aGlzLnByb3BzLnRpbWVvdXRTZWNvbmRzLFxuICAgICAgICB0aW1lb3V0TWluLFxuICAgICAgICB0aW1lb3V0TWF4XG4gICAgICApXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGB0aW1lb3V0U2Vjb25kcyBtdXN0IGJlIGEgd2hvbGUgbnVtYmVyIGJldHdlZW4gJHt0aW1lb3V0TWlufSBhbmQgJHt0aW1lb3V0TWF4fSBpbmNsdXNpdmVgXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wcm9wcy50aW1lb3V0U2Vjb25kcztcbiAgfTtcbn1cblxuY29uc3QgaXNXaG9sZU51bWJlckJldHdlZW5JbmNsdXNpdmUgPSAoXG4gIHRlc3Q6IG51bWJlcixcbiAgbWluOiBudW1iZXIsXG4gIG1heDogbnVtYmVyXG4pID0+IG1pbiA8PSB0ZXN0ICYmIHRlc3QgPD0gbWF4ICYmIHRlc3QgJSAxID09PSAwO1xuIl19