@aws-amplify/graphql-api-construct 1.4.0-construct-publish-test.0 → 1.4.0-nov-14-cut-1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (408) hide show
  1. package/.jsii +677 -192
  2. package/API.md +53 -13
  3. package/CHANGELOG.md +9 -1
  4. package/README.md +414 -88
  5. package/lib/amplify-dynamodb-table-wrapper.js +1 -1
  6. package/lib/amplify-graphql-api.d.ts +7 -0
  7. package/lib/amplify-graphql-api.js +69 -6
  8. package/lib/amplify-graphql-definition.d.ts +21 -10
  9. package/lib/amplify-graphql-definition.js +33 -21
  10. package/lib/index.d.ts +1 -1
  11. package/lib/index.js +1 -1
  12. package/lib/internal/data-source-config.d.ts +6 -2
  13. package/lib/internal/data-source-config.js +19 -7
  14. package/lib/internal/default-parameters.js +3 -1
  15. package/lib/internal/model-type-name.d.ts +2 -2
  16. package/lib/internal/model-type-name.js +25 -15
  17. package/lib/sql-model-datasource-strategy.d.ts +25 -0
  18. package/lib/sql-model-datasource-strategy.js +57 -0
  19. package/lib/types.d.ts +176 -40
  20. package/lib/types.js +1 -1
  21. package/node_modules/@aws-amplify/graphql-auth-transformer/API.md +5 -1
  22. package/node_modules/@aws-amplify/graphql-auth-transformer/CHANGELOG.md +15 -2
  23. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/graphql-auth-transformer.d.ts +3 -1
  24. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/graphql-auth-transformer.d.ts.map +1 -1
  25. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/graphql-auth-transformer.js +64 -50
  26. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/graphql-auth-transformer.js.map +1 -1
  27. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/index.d.ts.map +1 -1
  28. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/index.js +3 -0
  29. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/index.js.map +1 -1
  30. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/schema.d.ts.map +1 -1
  31. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/schema.js.map +1 -1
  32. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/validations.d.ts +3 -2
  33. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/validations.d.ts.map +1 -1
  34. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/validations.js +4 -1
  35. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/validations.js.map +1 -1
  36. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/ddb-vtl-generator.d.ts +20 -0
  37. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/ddb-vtl-generator.d.ts.map +1 -0
  38. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/ddb-vtl-generator.js +24 -0
  39. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/ddb-vtl-generator.js.map +1 -0
  40. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/{resolvers → vtl-generator/ddb/resolvers}/field.d.ts +1 -1
  41. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/field.d.ts.map +1 -0
  42. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/{resolvers → vtl-generator/ddb/resolvers}/field.js +1 -1
  43. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/field.js.map +1 -0
  44. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/{resolvers → vtl-generator/ddb/resolvers}/helpers.d.ts +1 -1
  45. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/helpers.d.ts.map +1 -0
  46. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/{resolvers → vtl-generator/ddb/resolvers}/helpers.js +1 -1
  47. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/helpers.js.map +1 -0
  48. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/index.d.ts.map +1 -0
  49. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/index.js.map +1 -0
  50. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/{resolvers → vtl-generator/ddb/resolvers}/mutation.create.d.ts +1 -1
  51. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/mutation.create.d.ts.map +1 -0
  52. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/{resolvers → vtl-generator/ddb/resolvers}/mutation.create.js +1 -1
  53. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/mutation.create.js.map +1 -0
  54. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/{resolvers → vtl-generator/ddb/resolvers}/mutation.delete.d.ts +1 -1
  55. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/mutation.delete.d.ts.map +1 -0
  56. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/{resolvers → vtl-generator/ddb/resolvers}/mutation.delete.js +1 -1
  57. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/mutation.delete.js.map +1 -0
  58. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/{resolvers → vtl-generator/ddb/resolvers}/mutation.update.d.ts +1 -1
  59. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/mutation.update.d.ts.map +1 -0
  60. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/{resolvers → vtl-generator/ddb/resolvers}/mutation.update.js +1 -1
  61. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/mutation.update.js.map +1 -0
  62. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/query.d.ts +6 -0
  63. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/query.d.ts.map +1 -0
  64. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/{resolvers → vtl-generator/ddb/resolvers}/query.js +28 -3
  65. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/query.js.map +1 -0
  66. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/{resolvers → vtl-generator/ddb/resolvers}/search.d.ts +1 -1
  67. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/search.d.ts.map +1 -0
  68. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/{resolvers → vtl-generator/ddb/resolvers}/search.js +1 -1
  69. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/search.js.map +1 -0
  70. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/subscriptions.d.ts +3 -0
  71. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/subscriptions.d.ts.map +1 -0
  72. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/{resolvers → vtl-generator/ddb/resolvers}/subscriptions.js +1 -1
  73. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/subscriptions.js.map +1 -0
  74. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/rds-vtl-generator.d.ts +20 -0
  75. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/rds-vtl-generator.d.ts.map +1 -0
  76. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/rds-vtl-generator.js +24 -0
  77. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/rds-vtl-generator.js.map +1 -0
  78. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/common.d.ts +13 -0
  79. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/common.d.ts.map +1 -0
  80. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/common.js +157 -0
  81. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/common.js.map +1 -0
  82. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/index.d.ts +5 -0
  83. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/index.d.ts.map +1 -0
  84. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/index.js +21 -0
  85. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/index.js.map +1 -0
  86. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/mutation.d.ts +8 -0
  87. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/mutation.d.ts.map +1 -0
  88. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/mutation.js +56 -0
  89. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/mutation.js.map +1 -0
  90. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/query.d.ts +8 -0
  91. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/query.d.ts.map +1 -0
  92. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/query.js +41 -0
  93. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/query.js.map +1 -0
  94. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/{resolvers/subscriptions.d.ts → vtl-generator/rds/resolvers/subscription.d.ts} +2 -2
  95. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/subscription.d.ts.map +1 -0
  96. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/subscription.js +18 -0
  97. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/subscription.js.map +1 -0
  98. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/vtl-generator.d.ts +19 -0
  99. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/vtl-generator.d.ts.map +1 -0
  100. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/vtl-generator.js +3 -0
  101. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/vtl-generator.js.map +1 -0
  102. package/node_modules/@aws-amplify/graphql-auth-transformer/package.json +10 -10
  103. package/node_modules/@aws-amplify/graphql-default-value-transformer/CHANGELOG.md +5 -2
  104. package/node_modules/@aws-amplify/graphql-default-value-transformer/lib/graphql-default-value-transformer.d.ts.map +1 -1
  105. package/node_modules/@aws-amplify/graphql-default-value-transformer/lib/graphql-default-value-transformer.js +13 -1
  106. package/node_modules/@aws-amplify/graphql-default-value-transformer/lib/graphql-default-value-transformer.js.map +1 -1
  107. package/node_modules/@aws-amplify/graphql-default-value-transformer/package.json +7 -7
  108. package/node_modules/@aws-amplify/graphql-function-transformer/CHANGELOG.md +1 -1
  109. package/node_modules/@aws-amplify/graphql-function-transformer/package.json +6 -6
  110. package/node_modules/@aws-amplify/graphql-http-transformer/CHANGELOG.md +1 -1
  111. package/node_modules/@aws-amplify/graphql-http-transformer/package.json +6 -6
  112. package/node_modules/@aws-amplify/graphql-index-transformer/API.md +2 -2
  113. package/node_modules/@aws-amplify/graphql-index-transformer/CHANGELOG.md +8 -1
  114. package/node_modules/@aws-amplify/graphql-index-transformer/lib/graphql-primary-key-transformer.d.ts +1 -1
  115. package/node_modules/@aws-amplify/graphql-index-transformer/lib/graphql-primary-key-transformer.d.ts.map +1 -1
  116. package/node_modules/@aws-amplify/graphql-index-transformer/lib/graphql-primary-key-transformer.js +7 -7
  117. package/node_modules/@aws-amplify/graphql-index-transformer/lib/graphql-primary-key-transformer.js.map +1 -1
  118. package/node_modules/@aws-amplify/graphql-index-transformer/lib/resolvers/generators/rds-vtl-generator.d.ts.map +1 -1
  119. package/node_modules/@aws-amplify/graphql-index-transformer/lib/resolvers/generators/rds-vtl-generator.js +4 -1
  120. package/node_modules/@aws-amplify/graphql-index-transformer/lib/resolvers/generators/rds-vtl-generator.js.map +1 -1
  121. package/node_modules/@aws-amplify/graphql-index-transformer/lib/resolvers/resolvers.d.ts +17 -16
  122. package/node_modules/@aws-amplify/graphql-index-transformer/lib/resolvers/resolvers.d.ts.map +1 -1
  123. package/node_modules/@aws-amplify/graphql-index-transformer/lib/resolvers/resolvers.js +134 -119
  124. package/node_modules/@aws-amplify/graphql-index-transformer/lib/resolvers/resolvers.js.map +1 -1
  125. package/node_modules/@aws-amplify/graphql-index-transformer/package.json +7 -7
  126. package/node_modules/@aws-amplify/graphql-maps-to-transformer/API.md +15 -0
  127. package/node_modules/@aws-amplify/graphql-maps-to-transformer/CHANGELOG.md +10 -2
  128. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/assets/mapping-lambda.zip +0 -0
  129. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/field-mapping-resolvers.d.ts +1 -0
  130. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/field-mapping-resolvers.d.ts.map +1 -1
  131. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/field-mapping-resolvers.js +13 -1
  132. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/field-mapping-resolvers.js.map +1 -1
  133. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/graphql-maps-to-transformer.d.ts +2 -1
  134. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/graphql-maps-to-transformer.d.ts.map +1 -1
  135. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/graphql-maps-to-transformer.js +16 -33
  136. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/graphql-maps-to-transformer.js.map +1 -1
  137. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/graphql-name-mapping.d.ts +10 -0
  138. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/graphql-name-mapping.d.ts.map +1 -0
  139. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/graphql-name-mapping.js +102 -0
  140. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/graphql-name-mapping.js.map +1 -0
  141. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/graphql-refers-to-transformer.d.ts +13 -0
  142. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/graphql-refers-to-transformer.d.ts.map +1 -0
  143. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/graphql-refers-to-transformer.js +81 -0
  144. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/graphql-refers-to-transformer.js.map +1 -0
  145. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/index.d.ts +1 -0
  146. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/index.d.ts.map +1 -1
  147. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/index.js +3 -1
  148. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/index.js.map +1 -1
  149. package/node_modules/@aws-amplify/graphql-maps-to-transformer/package.json +12 -12
  150. package/node_modules/@aws-amplify/graphql-model-transformer/API.md +15 -15
  151. package/node_modules/@aws-amplify/graphql-model-transformer/CHANGELOG.md +18 -1
  152. package/node_modules/@aws-amplify/graphql-model-transformer/lib/graphql-model-transformer.d.ts.map +1 -1
  153. package/node_modules/@aws-amplify/graphql-model-transformer/lib/graphql-model-transformer.js +28 -13
  154. package/node_modules/@aws-amplify/graphql-model-transformer/lib/graphql-model-transformer.js.map +1 -1
  155. package/node_modules/@aws-amplify/graphql-model-transformer/lib/graphql-types/mutation.d.ts.map +1 -1
  156. package/node_modules/@aws-amplify/graphql-model-transformer/lib/graphql-types/mutation.js +9 -2
  157. package/node_modules/@aws-amplify/graphql-model-transformer/lib/graphql-types/mutation.js.map +1 -1
  158. package/node_modules/@aws-amplify/graphql-model-transformer/lib/rds-lambda.zip +0 -0
  159. package/node_modules/@aws-amplify/graphql-model-transformer/lib/rds-notification-lambda.zip +0 -0
  160. package/node_modules/@aws-amplify/graphql-model-transformer/lib/rds-patching-lambda.zip +0 -0
  161. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/generators/dynamodb-vtl-generator.d.ts +6 -5
  162. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/generators/dynamodb-vtl-generator.d.ts.map +1 -1
  163. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/generators/dynamodb-vtl-generator.js +5 -5
  164. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/generators/dynamodb-vtl-generator.js.map +1 -1
  165. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/generators/rds-vtl-generator.d.ts +6 -5
  166. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/generators/rds-vtl-generator.d.ts.map +1 -1
  167. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/generators/rds-vtl-generator.js +11 -11
  168. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/generators/rds-vtl-generator.js.map +1 -1
  169. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/generators/vtl-generator.d.ts +6 -5
  170. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/generators/vtl-generator.d.ts.map +1 -1
  171. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/rds/mutation.d.ts +4 -3
  172. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/rds/mutation.d.ts.map +1 -1
  173. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/rds/mutation.js +74 -55
  174. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/rds/mutation.js.map +1 -1
  175. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/rds/query.d.ts +2 -1
  176. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/rds/query.d.ts.map +1 -1
  177. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/rds/query.js +8 -2
  178. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/rds/query.js.map +1 -1
  179. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/rds/resolver.d.ts +11 -4
  180. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/rds/resolver.d.ts.map +1 -1
  181. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/rds/resolver.js +153 -58
  182. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/rds/resolver.js.map +1 -1
  183. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamo-model-resource-generator.d.ts +0 -2
  184. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamo-model-resource-generator.d.ts.map +1 -1
  185. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamo-model-resource-generator.js +8 -5
  186. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamo-model-resource-generator.js.map +1 -1
  187. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamodb-table-construct/index.d.ts +2 -0
  188. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamodb-table-construct/index.d.ts.map +1 -1
  189. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamodb-table-construct/index.js +3 -1
  190. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamodb-table-construct/index.js.map +1 -1
  191. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-table-manager-lambda/amplify-table-manager-handler.d.ts +1 -1
  192. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-table-manager-lambda/amplify-table-manager-handler.d.ts.map +1 -1
  193. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-table-manager-lambda/amplify-table-manager-handler.js +79 -39
  194. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-table-manager-lambda/amplify-table-manager-handler.js.map +1 -1
  195. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/model-resource-generator.js +5 -5
  196. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/model-resource-generator.js.map +1 -1
  197. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/rds-model-resource-generator.d.ts +2 -1
  198. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/rds-model-resource-generator.d.ts.map +1 -1
  199. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/rds-model-resource-generator.js +43 -16
  200. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/rds-model-resource-generator.js.map +1 -1
  201. package/node_modules/@aws-amplify/graphql-model-transformer/package.json +9 -9
  202. package/node_modules/@aws-amplify/graphql-predictions-transformer/CHANGELOG.md +1 -1
  203. package/node_modules/@aws-amplify/graphql-predictions-transformer/lib/predictionsLambdaFunction.zip +0 -0
  204. package/node_modules/@aws-amplify/graphql-predictions-transformer/package.json +6 -6
  205. package/node_modules/@aws-amplify/graphql-relational-transformer/CHANGELOG.md +9 -1
  206. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/graphql-belongs-to-transformer.d.ts.map +1 -1
  207. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/graphql-belongs-to-transformer.js +41 -9
  208. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/graphql-belongs-to-transformer.js.map +1 -1
  209. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/graphql-has-many-transformer.d.ts.map +1 -1
  210. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/graphql-has-many-transformer.js +35 -8
  211. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/graphql-has-many-transformer.js.map +1 -1
  212. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/graphql-has-one-transformer.d.ts.map +1 -1
  213. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/graphql-has-one-transformer.js +30 -8
  214. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/graphql-has-one-transformer.js.map +1 -1
  215. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/graphql-many-to-many-transformer.d.ts.map +1 -1
  216. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/graphql-many-to-many-transformer.js +3 -2
  217. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/graphql-many-to-many-transformer.js.map +1 -1
  218. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolver/ddb-generator.d.ts +13 -0
  219. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolver/ddb-generator.d.ts.map +1 -0
  220. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolver/ddb-generator.js +171 -0
  221. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolver/ddb-generator.js.map +1 -0
  222. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolver/generator-factory.d.ts +4 -0
  223. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolver/generator-factory.d.ts.map +1 -0
  224. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolver/generator-factory.js +18 -0
  225. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolver/generator-factory.js.map +1 -0
  226. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolver/generator.d.ts +8 -0
  227. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolver/generator.d.ts.map +1 -0
  228. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolver/generator.js +7 -0
  229. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolver/generator.js.map +1 -0
  230. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolver/rds-generator.d.ts +14 -0
  231. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolver/rds-generator.d.ts.map +1 -0
  232. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolver/rds-generator.js +115 -0
  233. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolver/rds-generator.js.map +1 -0
  234. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolvers.d.ts +5 -5
  235. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolvers.d.ts.map +1 -1
  236. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolvers.js +23 -169
  237. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolvers.js.map +1 -1
  238. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/schema.d.ts.map +1 -1
  239. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/schema.js +14 -8
  240. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/schema.js.map +1 -1
  241. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/types.d.ts +4 -0
  242. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/types.d.ts.map +1 -1
  243. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/utils.d.ts +5 -0
  244. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/utils.d.ts.map +1 -1
  245. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/utils.js +85 -1
  246. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/utils.js.map +1 -1
  247. package/node_modules/@aws-amplify/graphql-relational-transformer/package.json +9 -9
  248. package/node_modules/@aws-amplify/graphql-searchable-transformer/CHANGELOG.md +4 -2
  249. package/node_modules/@aws-amplify/graphql-searchable-transformer/lib/graphql-searchable-transformer.d.ts.map +1 -1
  250. package/node_modules/@aws-amplify/graphql-searchable-transformer/lib/graphql-searchable-transformer.js +3 -0
  251. package/node_modules/@aws-amplify/graphql-searchable-transformer/lib/graphql-searchable-transformer.js.map +1 -1
  252. package/node_modules/@aws-amplify/graphql-searchable-transformer/lib/streaming-lambda.zip +0 -0
  253. package/node_modules/@aws-amplify/graphql-searchable-transformer/package.json +7 -7
  254. package/node_modules/@aws-amplify/graphql-sql-transformer/API.md +26 -0
  255. package/node_modules/@aws-amplify/graphql-sql-transformer/CHANGELOG.md +14 -0
  256. package/node_modules/@aws-amplify/graphql-sql-transformer/LICENSE +201 -0
  257. package/node_modules/@aws-amplify/graphql-sql-transformer/README.md +13 -0
  258. package/node_modules/@aws-amplify/graphql-sql-transformer/lib/graphql-sql-transformer.d.ts +12 -0
  259. package/node_modules/@aws-amplify/graphql-sql-transformer/lib/graphql-sql-transformer.d.ts.map +1 -0
  260. package/node_modules/@aws-amplify/graphql-sql-transformer/lib/graphql-sql-transformer.js +132 -0
  261. package/node_modules/@aws-amplify/graphql-sql-transformer/lib/graphql-sql-transformer.js.map +1 -0
  262. package/node_modules/@aws-amplify/graphql-sql-transformer/lib/index.d.ts +2 -0
  263. package/node_modules/@aws-amplify/graphql-sql-transformer/lib/index.d.ts.map +1 -0
  264. package/node_modules/@aws-amplify/graphql-sql-transformer/lib/index.js +6 -0
  265. package/node_modules/@aws-amplify/graphql-sql-transformer/lib/index.js.map +1 -0
  266. package/node_modules/@aws-amplify/graphql-sql-transformer/package.json +71 -0
  267. package/node_modules/@aws-amplify/graphql-transformer/API.md +4 -0
  268. package/node_modules/@aws-amplify/graphql-transformer/CHANGELOG.md +11 -1
  269. package/node_modules/@aws-amplify/graphql-transformer/lib/graphql-transformer.d.ts +4 -1
  270. package/node_modules/@aws-amplify/graphql-transformer/lib/graphql-transformer.d.ts.map +1 -1
  271. package/node_modules/@aws-amplify/graphql-transformer/lib/graphql-transformer.js +7 -2
  272. package/node_modules/@aws-amplify/graphql-transformer/lib/graphql-transformer.js.map +1 -1
  273. package/node_modules/@aws-amplify/graphql-transformer/package.json +15 -14
  274. package/node_modules/@aws-amplify/graphql-transformer/src/graphql-transformer.ts +12 -2
  275. package/node_modules/@aws-amplify/graphql-transformer-core/API.md +33 -5
  276. package/node_modules/@aws-amplify/graphql-transformer-core/CHANGELOG.md +16 -1
  277. package/node_modules/@aws-amplify/graphql-transformer-core/lib/index.d.ts +2 -2
  278. package/node_modules/@aws-amplify/graphql-transformer-core/lib/index.d.ts.map +1 -1
  279. package/node_modules/@aws-amplify/graphql-transformer-core/lib/index.js +10 -2
  280. package/node_modules/@aws-amplify/graphql-transformer-core/lib/index.js.map +1 -1
  281. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transform-host.d.ts.map +1 -1
  282. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transform-host.js +2 -1
  283. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transform-host.js.map +1 -1
  284. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformation/sync-utils.d.ts.map +1 -1
  285. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformation/sync-utils.js.map +1 -1
  286. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformation/transform.d.ts +4 -3
  287. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformation/transform.d.ts.map +1 -1
  288. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformation/transform.js +3 -3
  289. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformation/transform.js.map +1 -1
  290. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformation/types.d.ts +1 -0
  291. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformation/types.d.ts.map +1 -1
  292. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/datasource.d.ts +4 -5
  293. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/datasource.d.ts.map +1 -1
  294. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/datasource.js.map +1 -1
  295. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/index.d.ts +5 -3
  296. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/index.d.ts.map +1 -1
  297. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/index.js +3 -1
  298. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/index.js.map +1 -1
  299. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/transform-parameters.d.ts.map +1 -1
  300. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/transform-parameters.js +2 -0
  301. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/transform-parameters.js.map +1 -1
  302. package/node_modules/@aws-amplify/graphql-transformer-core/lib/types/import-appsync-api-types.d.ts +6 -5
  303. package/node_modules/@aws-amplify/graphql-transformer-core/lib/types/import-appsync-api-types.d.ts.map +1 -1
  304. package/node_modules/@aws-amplify/graphql-transformer-core/lib/types/import-appsync-api-types.js +4 -3
  305. package/node_modules/@aws-amplify/graphql-transformer-core/lib/types/import-appsync-api-types.js.map +1 -1
  306. package/node_modules/@aws-amplify/graphql-transformer-core/lib/types/index.d.ts +1 -1
  307. package/node_modules/@aws-amplify/graphql-transformer-core/lib/types/index.d.ts.map +1 -1
  308. package/node_modules/@aws-amplify/graphql-transformer-core/lib/types/index.js +3 -2
  309. package/node_modules/@aws-amplify/graphql-transformer-core/lib/types/index.js.map +1 -1
  310. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/api-category.d.ts +2 -0
  311. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/api-category.d.ts.map +1 -0
  312. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/api-category.js +5 -0
  313. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/api-category.js.map +1 -0
  314. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/index.d.ts +3 -2
  315. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/index.d.ts.map +1 -1
  316. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/index.js +14 -3
  317. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/index.js.map +1 -1
  318. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/model-util.d.ts +3 -0
  319. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/model-util.d.ts.map +1 -0
  320. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/model-util.js +19 -0
  321. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/model-util.js.map +1 -0
  322. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/rds-util.d.ts +12 -0
  323. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/rds-util.d.ts.map +1 -0
  324. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/rds-util.js +82 -0
  325. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/rds-util.js.map +1 -0
  326. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/schema-utils.d.ts +3 -2
  327. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/schema-utils.d.ts.map +1 -1
  328. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/schema-utils.js +7 -1
  329. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/schema-utils.js.map +1 -1
  330. package/node_modules/@aws-amplify/graphql-transformer-core/lib/wrappers/object-definition-wrapper.d.ts +1 -1
  331. package/node_modules/@aws-amplify/graphql-transformer-core/lib/wrappers/object-definition-wrapper.d.ts.map +1 -1
  332. package/node_modules/@aws-amplify/graphql-transformer-core/package.json +4 -4
  333. package/node_modules/@aws-amplify/graphql-transformer-interfaces/API.md +47 -14
  334. package/node_modules/@aws-amplify/graphql-transformer-interfaces/CHANGELOG.md +7 -1
  335. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/graphql-api-provider.d.ts +15 -8
  336. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/graphql-api-provider.d.ts.map +1 -1
  337. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/graphql-api-provider.js.map +1 -1
  338. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/index.d.ts +1 -1
  339. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/index.d.ts.map +1 -1
  340. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/index.js.map +1 -1
  341. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transformer-context/index.d.ts +1 -1
  342. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transformer-context/index.d.ts.map +1 -1
  343. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transformer-context/index.js +2 -1
  344. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transformer-context/index.js.map +1 -1
  345. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transformer-context/transform-parameters.d.ts +2 -0
  346. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transformer-context/transform-parameters.d.ts.map +1 -1
  347. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transformer-context/transformer-context-provider.d.ts +3 -1
  348. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transformer-context/transformer-context-provider.d.ts.map +1 -1
  349. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transformer-context/transformer-datasource-provider.d.ts +9 -5
  350. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transformer-context/transformer-datasource-provider.d.ts.map +1 -1
  351. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transformer-context/transformer-datasource-provider.js +5 -1
  352. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transformer-context/transformer-datasource-provider.js.map +1 -1
  353. package/node_modules/@aws-amplify/graphql-transformer-interfaces/package.json +2 -2
  354. package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/graphql-api-provider.ts +38 -11
  355. package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/index.ts +3 -0
  356. package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/transformer-context/index.ts +2 -0
  357. package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/transformer-context/transform-parameters.ts +2 -0
  358. package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/transformer-context/transformer-context-provider.ts +9 -1
  359. package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/transformer-context/transformer-datasource-provider.ts +28 -7
  360. package/node_modules/@aws-amplify/graphql-transformer-interfaces/tsconfig.tsbuildinfo +1 -1
  361. package/node_modules/graphql-transformer-common/API.md +33 -9
  362. package/node_modules/graphql-transformer-common/CHANGELOG.md +9 -1
  363. package/node_modules/graphql-transformer-common/lib/ResourceConstants.d.ts +12 -9
  364. package/node_modules/graphql-transformer-common/lib/ResourceConstants.d.ts.map +1 -1
  365. package/node_modules/graphql-transformer-common/lib/ResourceConstants.js +12 -9
  366. package/node_modules/graphql-transformer-common/lib/ResourceConstants.js.map +1 -1
  367. package/node_modules/graphql-transformer-common/lib/definition.d.ts +9 -2
  368. package/node_modules/graphql-transformer-common/lib/definition.d.ts.map +1 -1
  369. package/node_modules/graphql-transformer-common/lib/definition.js +52 -1
  370. package/node_modules/graphql-transformer-common/lib/definition.js.map +1 -1
  371. package/node_modules/graphql-transformer-common/lib/util.d.ts.map +1 -1
  372. package/node_modules/graphql-transformer-common/lib/util.js +3 -1
  373. package/node_modules/graphql-transformer-common/lib/util.js.map +1 -1
  374. package/node_modules/graphql-transformer-common/package.json +5 -5
  375. package/package.json +31 -29
  376. package/src/amplify-graphql-api.ts +82 -5
  377. package/src/amplify-graphql-definition.ts +34 -21
  378. package/src/index.ts +14 -5
  379. package/src/internal/data-source-config.ts +27 -9
  380. package/src/internal/default-parameters.ts +2 -0
  381. package/src/internal/model-type-name.ts +28 -19
  382. package/src/sql-model-datasource-strategy.ts +62 -0
  383. package/src/types.ts +208 -45
  384. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/field.d.ts.map +0 -1
  385. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/field.js.map +0 -1
  386. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/helpers.d.ts.map +0 -1
  387. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/helpers.js.map +0 -1
  388. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/index.d.ts.map +0 -1
  389. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/index.js.map +0 -1
  390. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/mutation.create.d.ts.map +0 -1
  391. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/mutation.create.js.map +0 -1
  392. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/mutation.delete.d.ts.map +0 -1
  393. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/mutation.delete.js.map +0 -1
  394. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/mutation.update.d.ts.map +0 -1
  395. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/mutation.update.js.map +0 -1
  396. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/query.d.ts +0 -6
  397. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/query.d.ts.map +0 -1
  398. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/query.js.map +0 -1
  399. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/search.d.ts.map +0 -1
  400. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/search.js.map +0 -1
  401. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/subscriptions.d.ts.map +0 -1
  402. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/subscriptions.js.map +0 -1
  403. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/rds-secret-utils.d.ts +0 -2
  404. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/rds-secret-utils.d.ts.map +0 -1
  405. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/rds-secret-utils.js +0 -25
  406. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/rds-secret-utils.js.map +0 -1
  407. /package/node_modules/@aws-amplify/graphql-auth-transformer/lib/{resolvers → vtl-generator/ddb/resolvers}/index.d.ts +0 -0
  408. /package/node_modules/@aws-amplify/graphql-auth-transformer/lib/{resolvers → vtl-generator/ddb/resolvers}/index.js +0 -0
package/lib/types.js CHANGED
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IER1cmF0aW9uLCBDZm5SZXNvdXJjZSwgTmVzdGVkU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQge1xuICBDZm5HcmFwaFFMQXBpLFxuICBDZm5HcmFwaFFMU2NoZW1hLFxuICBDZm5BcGlLZXksXG4gIENmblJlc29sdmVyLFxuICBDZm5GdW5jdGlvbkNvbmZpZ3VyYXRpb24sXG4gIENmbkRhdGFTb3VyY2UsXG4gIElHcmFwaHFsQXBpLFxuICBNYXBwaW5nVGVtcGxhdGUsXG4gIEJhc2VEYXRhU291cmNlLFxuICBDb2RlLFxuICBGdW5jdGlvblJ1bnRpbWUsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1hcHBzeW5jJztcbmltcG9ydCB7IENmblRhYmxlLCBJVGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZHluYW1vZGInO1xuaW1wb3J0IHsgSVJvbGUsIENmblJvbGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IElVc2VyUG9vbCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2duaXRvJztcbmltcG9ydCB7IElGdW5jdGlvbiwgQ2ZuRnVuY3Rpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IElCdWNrZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0IHsgQW1wbGlmeUR5bmFtb0RiVGFibGVXcmFwcGVyIH0gZnJvbSAnLi9hbXBsaWZ5LWR5bmFtb2RiLXRhYmxlLXdyYXBwZXInO1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIElBTSBBdXRob3JpemF0aW9uIG9uIHRoZSBHcmFwaHFsIEFwaS5cbiAqIEBzdHJ1Y3QgLSByZXF1aXJlZCBzaW5jZSB0aGlzIGludGVyZmFjZSBiZWdpbnMgd2l0aCBhbiAnSSdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQU1BdXRob3JpemF0aW9uQ29uZmlnIHtcbiAgLyoqXG4gICAqIElEIGZvciB0aGUgQ29nbml0byBJZGVudGl0eSBQb29sIHZlbmRpbmcgYXV0aCBhbmQgdW5hdXRoIHJvbGVzLlxuICAgKiBGb3JtYXQ6IGA8cmVnaW9uPjo8aWQgc3RyaW5nPmBcbiAgICovXG4gIHJlYWRvbmx5IGlkZW50aXR5UG9vbElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEF1dGhlbnRpY2F0ZWQgdXNlciByb2xlLCBhcHBsaWVzIHRvIHsgcHJvdmlkZXI6IGlhbSwgYWxsb3c6IHByaXZhdGUgfSBhY2Nlc3MuXG4gICAqL1xuICByZWFkb25seSBhdXRoZW50aWNhdGVkVXNlclJvbGU6IElSb2xlO1xuXG4gIC8qKlxuICAgKiBVbmF1dGhlbnRpY2F0ZWQgdXNlciByb2xlLCBhcHBsaWVzIHRvIHsgcHJvdmlkZXI6IGlhbSwgYWxsb3c6IHB1YmxpYyB9IGFjY2Vzcy5cbiAgICovXG4gIHJlYWRvbmx5IHVuYXV0aGVudGljYXRlZFVzZXJSb2xlOiBJUm9sZTtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIElBTSByb2xlcyB3aGljaCB3aWxsIGJlIGdyYW50ZWQgZnVsbCByZWFkL3dyaXRlIGFjY2VzcyB0byB0aGUgZ2VuZXJhdGVkIG1vZGVsIGlmIElBTSBhdXRoIGlzIGVuYWJsZWQuXG4gICAqIElmIGFuIElSb2xlIGlzIHByb3ZpZGVkLCB0aGUgcm9sZSBgbmFtZWAgd2lsbCBiZSB1c2VkIGZvciBtYXRjaGluZy5cbiAgICogSWYgYSBzdHJpbmcgaXMgcHJvdmlkZWQsIHRoZSByYXcgdmFsdWUgd2lsbCBiZSB1c2VkIGZvciBtYXRjaGluZy5cbiAgICovXG4gIHJlYWRvbmx5IGFsbG93TGlzdGVkUm9sZXM/OiAoSVJvbGUgfCBzdHJpbmcpW107XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgQ29nbml0byBVc2VyUG9vbCBBdXRob3JpemF0aW9uIG9uIHRoZSBHcmFwaHFsIEFwaS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVc2VyUG9vbEF1dGhvcml6YXRpb25Db25maWcge1xuICAvKipcbiAgICogVGhlIENvZ25pdG8gVXNlciBQb29sIHdoaWNoIGlzIHVzZWQgdG8gYXV0aGVudGljYXRlZCBKV1QgdG9rZW5zLCBhbmQgdmVuZHMgZ3JvdXAgYW5kIHVzZXIgaW5mb3JtYXRpb24uXG4gICAqL1xuICByZWFkb25seSB1c2VyUG9vbDogSVVzZXJQb29sO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIE9wZW5JZCBDb25uZWN0IEF1dGhvcml6YXRpb24gb24gdGhlIEdyYXBocWwgQXBpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9JRENBdXRob3JpemF0aW9uQ29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSBpc3N1ZXIgZm9yIHRoZSBPSURDIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICByZWFkb25seSBvaWRjUHJvdmlkZXJOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVybCBmb3IgdGhlIE9JREMgdG9rZW4gaXNzdWVyLlxuICAgKi9cbiAgcmVhZG9ubHkgb2lkY0lzc3VlclVybDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY2xpZW50IGlkZW50aWZpZXIgb2YgdGhlIFJlbHlpbmcgcGFydHkgYXQgdGhlIE9wZW5JRCBpZGVudGl0eSBwcm92aWRlci5cbiAgICogQSByZWd1bGFyIGV4cHJlc3Npb24gY2FuIGJlIHNwZWNpZmllZCBzbyBBcHBTeW5jIGNhbiB2YWxpZGF0ZSBhZ2FpbnN0IG11bHRpcGxlIGNsaWVudCBpZGVudGlmaWVycyBhdCBhIHRpbWUuIEV4YW1wbGVcbiAgICovXG4gIHJlYWRvbmx5IGNsaWVudElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZHVyYXRpb24gYW4gT0lEQyB0b2tlbiBpcyB2YWxpZCBhZnRlciBiZWluZyBhdXRoZW50aWNhdGVkIGJ5IE9JREMgcHJvdmlkZXIuXG4gICAqIGF1dGhfdGltZSBjbGFpbSBpbiBPSURDIHRva2VuIGlzIHJlcXVpcmVkIGZvciB0aGlzIHZhbGlkYXRpb24gdG8gd29yay5cbiAgICovXG4gIHJlYWRvbmx5IHRva2VuRXhwaXJ5RnJvbUF1dGg6IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgZHVyYXRpb24gYW4gT0lEQyB0b2tlbiBpcyB2YWxpZCBhZnRlciBiZWluZyBpc3N1ZWQgdG8gYSB1c2VyLlxuICAgKiBUaGlzIHZhbGlkYXRpb24gdXNlcyBpYXQgY2xhaW0gb2YgT0lEQyB0b2tlbi5cbiAgICovXG4gIHJlYWRvbmx5IHRva2VuRXhwaXJ5RnJvbUlzc3VlOiBEdXJhdGlvbjtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBBcGkgS2V5cyBvbiB0aGUgR3JhcGhxbCBBcGkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBpS2V5QXV0aG9yaXphdGlvbkNvbmZpZyB7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBkZXNjcmlwdGlvbiBmb3IgdGhlIEFwaSBLZXkgdG8gYXR0YWNoIHRvIHRoZSBBcGkuXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogQSBkdXJhdGlvbiByZXByZXNlbnRpbmcgdGhlIHRpbWUgZnJvbSBDbG91ZGZvcm1hdGlvbiBkZXBsb3kgdW50aWwgZXhwaXJ5LlxuICAgKi9cbiAgcmVhZG9ubHkgZXhwaXJlczogRHVyYXRpb247XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgQ3VzdG9tIExhbWJkYSBhdXRob3JpemF0aW9uIG9uIHRoZSBHcmFwaHFsIEFwaS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYW1iZGFBdXRob3JpemF0aW9uQ29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSBhdXRob3JpemVyIGxhbWJkYSBmdW5jdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uOiBJRnVuY3Rpb247XG5cbiAgLyoqXG4gICAqIEhvdyBsb25nIHRoZSByZXN1bHRzIGFyZSBjYWNoZWQuXG4gICAqL1xuICByZWFkb25seSB0dGw6IER1cmF0aW9uO1xufVxuXG4vKipcbiAqIEF1dGhvcml6YXRpb24gTW9kZXMgdG8gYXBwbHkgdG8gdGhlIEFwaS5cbiAqIEF0IGxlYXN0IG9uZSBtb2RlcyBtdXN0IGJlIHByb3ZpZGVkLCBhbmQgaWYgbW9yZSB0aGFuIG9uZSBhcmUgcHJvdmlkZWQgYSBkZWZhdWx0QXV0aG9yaXphdGlvbk1vZGUgbXVzdCBiZSBzcGVjaWZpZWQuXG4gKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBBbXBsaWZ5IEFwaSBhdXRoLCByZWZlciB0byBodHRwczovL2RvY3MuYW1wbGlmeS5hd3MvY2xpL2dyYXBocWwvYXV0aG9yaXphdGlvbi1ydWxlcy8jYXV0aG9yaXphdGlvbi1zdHJhdGVnaWVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aG9yaXphdGlvbk1vZGVzIHtcbiAgLyoqXG4gICAqIERlZmF1bHQgYXV0aCBtb2RlIHRvIHByb3ZpZGUgdG8gdGhlIEFwaSwgcmVxdWlyZWQgaWYgbW9yZSB0aGFuIG9uZSBjb25maWcgdHlwZSBpcyBzcGVjaWZpZWQuXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0QXV0aG9yaXphdGlvbk1vZGU/OiAnQVdTX0lBTScgfCAnQU1BWk9OX0NPR05JVE9fVVNFUl9QT09MUycgfCAnT1BFTklEX0NPTk5FQ1QnIHwgJ0FQSV9LRVknIHwgJ0FXU19MQU1CREEnO1xuXG4gIC8qKlxuICAgKiBJQU0gQXV0aCBjb25maWcsIHJlcXVpcmVkIGlmIGFuICdpYW0nIGF1dGggcHJvdmlkZXIgaXMgc3BlY2lmaWVkIGluIHRoZSBBcGkuXG4gICAqIEFwcGxpZXMgdG8gJ3B1YmxpYycgYW5kICdwcml2YXRlJyBhdXRoIHN0cmF0ZWdpZXMuXG4gICAqL1xuICByZWFkb25seSBpYW1Db25maWc/OiBJQU1BdXRob3JpemF0aW9uQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBDb2duaXRvIFVzZXJQb29sIGNvbmZpZywgcmVxdWlyZWQgaWYgYSAndXNlclBvb2xzJyBhdXRoIHByb3ZpZGVyIGlzIHNwZWNpZmllZCBpbiB0aGUgQXBpLlxuICAgKiBBcHBsaWVzIHRvICdvd25lcicsICdwcml2YXRlJywgYW5kICdncm91cCcgYXV0aCBzdHJhdGVnaWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgdXNlclBvb2xDb25maWc/OiBVc2VyUG9vbEF1dGhvcml6YXRpb25Db25maWc7XG5cbiAgLyoqXG4gICAqIENvZ25pdG8gT0lEQyBjb25maWcsIHJlcXVpcmVkIGlmIGEgJ29pZGMnIGF1dGggcHJvdmlkZXIgaXMgc3BlY2lmaWVkIGluIHRoZSBBcGkuXG4gICAqIEFwcGxpZXMgdG8gJ293bmVyJywgJ3ByaXZhdGUnLCBhbmQgJ2dyb3VwJyBhdXRoIHN0cmF0ZWdpZXMuXG4gICAqL1xuICByZWFkb25seSBvaWRjQ29uZmlnPzogT0lEQ0F1dGhvcml6YXRpb25Db25maWc7XG5cbiAgLyoqXG4gICAqIEFwcFN5bmMgQXBpIEtleSBjb25maWcsIHJlcXVpcmVkIGlmIGEgJ2FwaUtleScgYXV0aCBwcm92aWRlciBpcyBzcGVjaWZpZWQgaW4gdGhlIEFwaS5cbiAgICogQXBwbGllcyB0byAncHVibGljJyBhdXRoIHN0cmF0ZWd5LlxuICAgKi9cbiAgcmVhZG9ubHkgYXBpS2V5Q29uZmlnPzogQXBpS2V5QXV0aG9yaXphdGlvbkNvbmZpZztcblxuICAvKipcbiAgICogTGFtYmRhIGNvbmZpZywgcmVxdWlyZWQgaWYgYSAnZnVuY3Rpb24nIGF1dGggcHJvdmlkZXIgaXMgc3BlY2lmaWVkIGluIHRoZSBBcGkuXG4gICAqIEFwcGxpZXMgdG8gJ2N1c3RvbScgYXV0aCBzdHJhdGVneS5cbiAgICovXG4gIHJlYWRvbmx5IGxhbWJkYUNvbmZpZz86IExhbWJkYUF1dGhvcml6YXRpb25Db25maWc7XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiByb2xlcyBncmFudGVkIGZ1bGwgUi9XIGFjY2VzcyB0byB0aGUgQXBpLlxuICAgKiBAZGVwcmVjYXRlZCwgdXNlIGlhbUNvbmZpZy5hbGxvd0xpc3RlZFJvbGVzIGluc3RlYWQuXG4gICAqL1xuICByZWFkb25seSBhZG1pblJvbGVzPzogSVJvbGVbXTtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIG9yIG5vdCB0byB1c2UgYSB2ZXJzaW9uIGZpZWxkIHRvIHRyYWNrIGNvbmZsaWN0IGRldGVjdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgQ29uZmxpY3REZXRlY3Rpb25UeXBlID0gJ1ZFUlNJT04nIHwgJ05PTkUnO1xuXG4vKipcbiAqIENvbW1vbiBwYXJhbWV0ZXJzIGZvciBjb25mbGljdCByZXNvbHV0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbmZsaWN0UmVzb2x1dGlvblN0cmF0ZWd5QmFzZSB7XG4gIC8qKlxuICAgKiBUaGUgY29uZmxpY3QgZGV0ZWN0aW9uIHR5cGUgdXNlZCBmb3IgcmVzb2x1dGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGRldGVjdGlvblR5cGU6IENvbmZsaWN0RGV0ZWN0aW9uVHlwZTtcbn1cblxuLyoqXG4gKiBFbmFibGUgb3B0aW1pc3RpYyBjb25jdXJyZW5jeSBvbiB0aGUgcHJvamVjdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRvbWVyZ2VDb25mbGljdFJlc29sdXRpb25TdHJhdGVneSBleHRlbmRzIENvbmZsaWN0UmVzb2x1dGlvblN0cmF0ZWd5QmFzZSB7XG4gIC8qKlxuICAgKiBUaGlzIGNvbmZsaWN0IHJlc29sdXRpb24gc3RyYXRlZ3kgZXhlY3V0ZXMgYW4gYXV0by1tZXJnZS5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHJlZmVyIHRvIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzeW5jL2xhdGVzdC9kZXZndWlkZS9jb25mbGljdC1kZXRlY3Rpb24tYW5kLXN5bmMuaHRtbCNjb25mbGljdC1kZXRlY3Rpb24tYW5kLXJlc29sdXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGhhbmRsZXJUeXBlOiAnQVVUT01FUkdFJztcbn1cblxuLyoqXG4gKiBFbmFibGUgYXV0b21lcmdlIG9uIHRoZSBwcm9qZWN0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9wdGltaXN0aWNDb25mbGljdFJlc29sdXRpb25TdHJhdGVneSBleHRlbmRzIENvbmZsaWN0UmVzb2x1dGlvblN0cmF0ZWd5QmFzZSB7XG4gIC8qKlxuICAgKiBUaGlzIGNvbmZsaWN0IHJlc29sdXRpb24gc3RyYXRlZ3kgdGhlIF92ZXJzaW9uIHRvIHBlcmZvcm0gb3B0aW1pc3RpYyBjb25jdXJyZW5jeS5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHJlZmVyIHRvIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzeW5jL2xhdGVzdC9kZXZndWlkZS9jb25mbGljdC1kZXRlY3Rpb24tYW5kLXN5bmMuaHRtbCNjb25mbGljdC1kZXRlY3Rpb24tYW5kLXJlc29sdXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGhhbmRsZXJUeXBlOiAnT1BUSU1JU1RJQ19DT05DVVJSRU5DWSc7XG59XG5cbi8qKlxuICogRW5hYmxlIGN1c3RvbSBzeW5jIG9uIHRoZSBwcm9qZWN0LCBwb3dlcmVkIGJ5IGEgbGFtYmRhLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbUNvbmZsaWN0UmVzb2x1dGlvblN0cmF0ZWd5IGV4dGVuZHMgQ29uZmxpY3RSZXNvbHV0aW9uU3RyYXRlZ3lCYXNlIHtcbiAgLyoqXG4gICAqIFRoaXMgY29uZmxpY3QgcmVzb2x1dGlvbiBzdHJhdGVneSB1c2VzIGEgbGFtYmRhIGhhbmRsZXIgdHlwZS5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHJlZmVyIHRvIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzeW5jL2xhdGVzdC9kZXZndWlkZS9jb25mbGljdC1kZXRlY3Rpb24tYW5kLXN5bmMuaHRtbCNjb25mbGljdC1kZXRlY3Rpb24tYW5kLXJlc29sdXRpb25cblxuICAgKi9cbiAgcmVhZG9ubHkgaGFuZGxlclR5cGU6ICdMQU1CREEnO1xuXG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb24gd2hpY2ggd2lsbCBiZSBpbnZva2VkIGZvciBjb25mbGljdCByZXNvbHV0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgY29uZmxpY3RIYW5kbGVyOiBJRnVuY3Rpb247XG59XG5cbi8qKlxuICogQ29uZmxpY3QgUmVzb2x1dGlvbiBTdHJhdGVneSB0byBhcHBseSB0byB0aGUgcHJvamVjdCBvciBhIHBhcnRpY3VsYXIgbW9kZWwuXG4gKi9cbmV4cG9ydCB0eXBlIENvbmZsaWN0UmVzb2x1dGlvblN0cmF0ZWd5ID1cbiAgfCBBdXRvbWVyZ2VDb25mbGljdFJlc29sdXRpb25TdHJhdGVneVxuICB8IE9wdGltaXN0aWNDb25mbGljdFJlc29sdXRpb25TdHJhdGVneVxuICB8IEN1c3RvbUNvbmZsaWN0UmVzb2x1dGlvblN0cmF0ZWd5O1xuXG4vKipcbiAqIFByb2plY3QgbGV2ZWwgY29uZmlndXJhdGlvbiBmb3IgY29uZmxpY3QgcmVzb2x1dGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25mbGljdFJlc29sdXRpb24ge1xuICAvKipcbiAgICogUHJvamVjdC13aWRlIGNvbmZpZyBmb3IgY29uZmxpY3QgcmVzb2x1dGlvbi4gQXBwbGllcyB0byBhbGwgbm9uLW92ZXJyaWRkZW4gbW9kZWxzLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVjdD86IENvbmZsaWN0UmVzb2x1dGlvblN0cmF0ZWd5O1xuXG4gIC8qKlxuICAgKiBNb2RlbC1zcGVjaWZpYyBjb25mbGljdCByZXNvbHV0aW9uIG92ZXJyaWRlcy5cbiAgICovXG4gIHJlYWRvbmx5IG1vZGVscz86IFJlY29yZDxzdHJpbmcsIENvbmZsaWN0UmVzb2x1dGlvblN0cmF0ZWd5Pjtcbn1cblxuLyoqXG4gKiBQYXJhbXMgZXhwb3NlZCB0byBzdXBwb3J0IGNvbmZpZ3VyaW5nIGFuZCBvdmVycmlkaW5nIHBpcGVsaW5lZCBzbG90cy4gVGhpcyBhbGxvd3MgY29uZmlndXJhdGlvbiBvZiB0aGUgdW5kZXJseWluZyBmdW5jdGlvbixcbiAqIGluY2x1ZGluZyB0aGUgcmVxdWVzdCBhbmQgcmVzcG9uc2UgbWFwcGluZyB0ZW1wbGF0ZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnVuY3Rpb25TbG90T3ZlcnJpZGUge1xuICAvKipcbiAgICogT3ZlcnJpZGUgcmVxdWVzdCBtYXBwaW5nIHRlbXBsYXRlIGZvciB0aGUgZnVuY3Rpb24gc2xvdC4gRXhlY3V0ZWQgYmVmb3JlIHRoZSBkYXRhc291cmNlIGlzIGludm9rZWQuXG4gICAqL1xuICByZWFkb25seSByZXF1ZXN0TWFwcGluZ1RlbXBsYXRlPzogTWFwcGluZ1RlbXBsYXRlO1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZSByZXNwb25zZSBtYXBwaW5nIHRlbXBsYXRlIGZvciB0aGUgZnVuY3Rpb24gc2xvdC4gRXhlY3V0ZWQgYWZ0ZXIgdGhlIGRhdGFzb3VyY2UgaXMgaW52b2tlZC5cbiAgICovXG4gIHJlYWRvbmx5IHJlc3BvbnNlTWFwcGluZ1RlbXBsYXRlPzogTWFwcGluZ1RlbXBsYXRlO1xufVxuXG4vKipcbiAqIENvbW1vbiBzbG90IHBhcmFtZXRlcnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnVuY3Rpb25TbG90QmFzZSB7XG4gIC8qKlxuICAgKiBUaGUgZmllbGQgdG8gYXR0YWNoIHRoaXMgZnVuY3Rpb24gdG8gb24gdGhlIEFwaSBkZWZpbml0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgZmllbGROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzbG90IGluZGV4IHRvIHVzZSB0byBpbmplY3QgdGhpcyBpbnRvIHRoZSBleGVjdXRpb24gcGlwZWxpbmUuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHNsb3R0aW5nLCByZWZlciB0byBodHRwczovL2RvY3MuYW1wbGlmeS5hd3MvY2xpL2dyYXBocWwvY3VzdG9tLWJ1c2luZXNzLWxvZ2ljLyNleHRlbmQtYW1wbGlmeS1nZW5lcmF0ZWQtcmVzb2x2ZXJzXG4gICAqL1xuICByZWFkb25seSBzbG90SW5kZXg6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG92ZXJyaWRkZW4gYmVoYXZpb3IgZm9yIHRoaXMgc2xvdC5cbiAgICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uOiBGdW5jdGlvblNsb3RPdmVycmlkZTtcbn1cblxuLyoqXG4gKiBTbG90IHR5cGVzIGZvciBNdXRhdGlvbiBSZXNvbHZlcnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTXV0YXRpb25GdW5jdGlvblNsb3QgZXh0ZW5kcyBGdW5jdGlvblNsb3RCYXNlIHtcbiAgLyoqXG4gICAqIFRoaXMgc2xvdCB0eXBlIGFwcGxpZXMgdG8gdGhlIE11dGF0aW9uIHR5cGUgb24gdGhlIEFwaSBkZWZpbml0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZU5hbWU6ICdNdXRhdGlvbic7XG5cbiAgLyoqXG4gICAqIFRoZSBzbG90IG5hbWUgdG8gaW5qZWN0IHRoaXMgYmVoYXZpb3IgaW50by5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gc2xvdHRpbmcsIHJlZmVyIHRvIGh0dHBzOi8vZG9jcy5hbXBsaWZ5LmF3cy9jbGkvZ3JhcGhxbC9jdXN0b20tYnVzaW5lc3MtbG9naWMvI2V4dGVuZC1hbXBsaWZ5LWdlbmVyYXRlZC1yZXNvbHZlcnNcbiAgICovXG4gIHJlYWRvbmx5IHNsb3ROYW1lOiAnaW5pdCcgfCAncHJlQXV0aCcgfCAnYXV0aCcgfCAncG9zdEF1dGgnIHwgJ3ByZVVwZGF0ZScgfCAncG9zdFVwZGF0ZScgfCAnZmluaXNoJztcbn1cblxuLyoqXG4gKiBTbG90IHR5cGVzIGZvciBRdWVyeSBSZXNvbHZlcnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlGdW5jdGlvblNsb3QgZXh0ZW5kcyBGdW5jdGlvblNsb3RCYXNlIHtcbiAgLyoqXG4gICAqIFRoaXMgc2xvdCB0eXBlIGFwcGxpZXMgdG8gdGhlIFF1ZXJ5IHR5cGUgb24gdGhlIEFwaSBkZWZpbml0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZU5hbWU6ICdRdWVyeSc7XG5cbiAgLyoqXG4gICAqIFRoZSBzbG90IG5hbWUgdG8gaW5qZWN0IHRoaXMgYmVoYXZpb3IgaW50by5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gc2xvdHRpbmcsIHJlZmVyIHRvIGh0dHBzOi8vZG9jcy5hbXBsaWZ5LmF3cy9jbGkvZ3JhcGhxbC9jdXN0b20tYnVzaW5lc3MtbG9naWMvI2V4dGVuZC1hbXBsaWZ5LWdlbmVyYXRlZC1yZXNvbHZlcnNcbiAgICovXG4gIHJlYWRvbmx5IHNsb3ROYW1lOiAnaW5pdCcgfCAncHJlQXV0aCcgfCAnYXV0aCcgfCAncG9zdEF1dGgnIHwgJ3ByZURhdGFMb2FkJyB8ICdwb3N0RGF0YUxvYWQnIHwgJ2ZpbmlzaCc7XG59XG5cbi8qKlxuICogU2xvdCB0eXBlcyBmb3IgU3Vic2NyaXB0aW9uIFJlc29sdmVycy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdWJzY3JpcHRpb25GdW5jdGlvblNsb3QgZXh0ZW5kcyBGdW5jdGlvblNsb3RCYXNlIHtcbiAgLyoqXG4gICAqIFRoaXMgc2xvdCB0eXBlIGFwcGxpZXMgdG8gdGhlIFN1YnNjcmlwdGlvbiB0eXBlIG9uIHRoZSBBcGkgZGVmaW5pdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGVOYW1lOiAnU3Vic2NyaXB0aW9uJztcblxuICAvKipcbiAgICogVGhlIHNsb3QgbmFtZSB0byBpbmplY3QgdGhpcyBiZWhhdmlvciBpbnRvLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBzbG90dGluZywgcmVmZXIgdG8gaHR0cHM6Ly9kb2NzLmFtcGxpZnkuYXdzL2NsaS9ncmFwaHFsL2N1c3RvbS1idXNpbmVzcy1sb2dpYy8jZXh0ZW5kLWFtcGxpZnktZ2VuZXJhdGVkLXJlc29sdmVyc1xuICAgKi9cbiAgcmVhZG9ubHkgc2xvdE5hbWU6ICdpbml0JyB8ICdwcmVBdXRoJyB8ICdhdXRoJyB8ICdwb3N0QXV0aCcgfCAncHJlU3Vic2NyaWJlJztcbn1cblxuLyoqXG4gKiBJbnB1dCBwYXJhbXMgdG8gdW5pcXVlbHkgaWRlbnRpZnkgdGhlIHNsb3Qgd2hpY2ggaXMgYmVpbmcgb3ZlcnJpZGRlbi5cbiAqL1xuZXhwb3J0IHR5cGUgRnVuY3Rpb25TbG90ID0gTXV0YXRpb25GdW5jdGlvblNsb3QgfCBRdWVyeUZ1bmN0aW9uU2xvdCB8IFN1YnNjcmlwdGlvbkZ1bmN0aW9uU2xvdDtcblxuLyoqXG4gKiBTdHJvbmdseSB0eXBlZCBzZXQgb2Ygc2hhcmVkIHBhcmFtZXRlcnMgZm9yIGFsbCB0cmFuc2Zvcm1lcnMsIGFuZCBjb3JlIGxheWVyLlxuICogVGhpcyBpcyBpbnRlbmRlZCB0byByZXBsYWNlIGZlYXR1cmUgZmxhZ3MsIHRvIGVuc3VyZSBwYXJhbSBjb2VyY2lvbiBoYXBwZW5zIGluXG4gKiBhIHNpbmdsZSBsb2NhdGlvbiwgYW5kIGlzbid0IHNwcmVhZCBhcm91bmQgdGhlIHRyYW5zZm9ybWVycywgd2hlcmUgdGhleSBjYW5cbiAqIGhhdmUgZGlmZmVyZW50IGRlZmF1bHQgYmVoYXZpb3JzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zbGF0aW9uQmVoYXZpb3Ige1xuICAvKipcbiAgICogUmVzdG9yZSBwYXJpdHkgdy8gR1FMdjEgQG1vZGVsIHBhcmFtZXRlciBiZWhhdmlvciwgd2hlcmUgc2V0dGluZyBhIHNpbmdsZSBmaWVsZCBkb2Vzbid0IGltcGxpY2l0bHkgc2V0IHRoZSBvdGhlciBmaWVsZHMgdG8gbnVsbC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkRGVlcE1lcmdlRGlyZWN0aXZlQ29uZmlnRGVmYXVsdHM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERpc2FibGUgcmVzb2x2ZXIgZGVkdXBpbmcsIHRoaXMgY2FuIHNvbWV0aW1lcyBjYXVzZSBwcm9ibGVtcyBiZWNhdXNlIGRlZHVwZSBvcmRlcmluZyBpc24ndCBzdGFibGUgdG9kYXksIHdoaWNoIGNhblxuICAgKiBsZWFkIHRvIGNpcmN1bGFyIGRlcGVuZGVuY2llcyBhY3Jvc3Mgc3RhY2tzIGlmIG1vZGVscyBhcmUgcmVvcmRlcmVkLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBkaXNhYmxlUmVzb2x2ZXJEZWR1cGluZzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRW5hYmxpbmcgc2FuZGJveCBtb2RlIHdpbGwgZW5hYmxlIGFwaSBrZXkgYXV0aCBvbiBhbGwgbW9kZWxzIGluIHRoZSB0cmFuc2Zvcm1lZCBzY2hlbWEuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBzYW5kYm94TW9kZUVuYWJsZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuc3VyZSB0aGF0IG9pZGMgYW5kIHVzZXJQb29sIGF1dGggdXNlIHRoZSBgc3ViYCBmaWVsZCBpbiB0aGUgZm9yIHRoZSB1c2VybmFtZSBmaWVsZCwgd2hpY2ggZGlzYWxsb3dzIG5ldyB1c2VycyB3aXRoIHRoZSBzYW1lXG4gICAqIGlkIHRvIGFjY2VzcyBkYXRhIGZyb20gYSBkZWxldGVkIHVzZXIgaW4gdGhlIHBvb2wuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHVzZVN1YlVzZXJuYW1lRm9yRGVmYXVsdElkZW50aXR5Q2xhaW06IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuc3VyZSB0aGF0IHRoZSBvd25lciBmaWVsZCBpcyBzdGlsbCBwb3B1bGF0ZWQgZXZlbiBpZiBhIHN0YXRpYyBpYW0gb3IgZ3JvdXAgYXV0aG9yaXphdGlvbiBhcHBsaWVzLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBwb3B1bGF0ZU93bmVyRmllbGRGb3JTdGF0aWNHcm91cEF1dGg6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGVuYWJsZWQsIGRpc2FibGUgYXBpIGtleSByZXNvdXJjZSBnZW5lcmF0aW9uIGV2ZW4gaWYgc3BlY2lmaWVkIGFzIGFuIGF1dGggcnVsZSBvbiB0aGUgY29uc3RydWN0LlxuICAgKiBUaGlzIGlzIGEgbGVnYWN5IHBhcmFtZXRlciBmcm9tIHRoZSBHcmFwaHFsIFRyYW5zZm9ybWVyIGV4aXN0aW5nIGluIEFtcGxpZnkgQ0xJLCBub3QgcmVjb21tZW5kZWQgdG8gY2hhbmdlLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc3VwcHJlc3NBcGlLZXlHZW5lcmF0aW9uOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBkaXNhYmxlZCwgZ2VuZXJhdGVkIEBpbmRleCBhcyBhbiBMU0kgaW5zdGVhZCBvZiBhIEdTSS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgc2Vjb25kYXJ5S2V5QXNHU0k6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEF1dG9tYXRlIGdlbmVyYXRpb24gb2YgcXVlcnkgbmFtZXMsIGFuZCBhcyBhIHJlc3VsdCBhdHRhY2hpbmcgYWxsIGluZGV4ZXMgYXMgcXVlcmllcyB0byB0aGUgZ2VuZXJhdGVkIEFwaS5cbiAgICogSWYgZW5hYmxlZCwgQGluZGV4IGNhbiBiZSBwcm92aWRlZCBhIG51bGwgbmFtZSBmaWVsZCB0byBkaXNhYmxlIHRoZSBnZW5lcmF0aW9uIG9mIHRoZSBxdWVyeSBvbiB0aGUgQXBpLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVBdXRvSW5kZXhRdWVyeU5hbWVzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgY3VzdG9tIHByaW1hcnkga2V5IHN1cHBvcnQsIHRoZXJlJ3Mgbm8gZ29vZCByZWFzb24gdG8gZGlzYWJsZSB0aGlzIHVubGVzcyB0cnlpbmcgbm90IHRvIHVwZGF0ZSBhIGxlZ2FjeSBhcHAuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHJlc3BlY3RQcmltYXJ5S2V5QXR0cmlidXRlc09uQ29ubmVjdGlvbkZpZWxkOiBib29sZWFuO1xuXG4gIHJlYWRvbmx5IGVuYWJsZVNlYXJjaE5vZGVUb05vZGVFbmNyeXB0aW9uOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIGVuYWJsZWQsIGludGVybmFsIGNmbiBvdXRwdXRzIHdoaWNoIGV4aXN0ZWQgaW4gQW1wbGlmeS1nZW5lcmF0ZWQgYXBwcyB3aWxsIGNvbnRpbnVlIHRvIGJlIGVtaXR0ZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVUcmFuc2Zvcm1lckNmbk91dHB1dHM6IGJvb2xlYW47XG59XG5cbi8qKlxuICogQSB1dGlsaXR5IGludGVyZmFjZSBlcXVpdmFsZW50IHRvIFBhcnRpYWw8VHJhbnNsYXRpb25CZWhhdmlvcj4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFydGlhbFRyYW5zbGF0aW9uQmVoYXZpb3Ige1xuICAvKipcbiAgICogUmVzdG9yZSBwYXJpdHkgdy8gR1FMdjEgQG1vZGVsIHBhcmFtZXRlciBiZWhhdmlvciwgd2hlcmUgc2V0dGluZyBhIHNpbmdsZSBmaWVsZCBkb2Vzbid0IGltcGxpY2l0bHkgc2V0IHRoZSBvdGhlciBmaWVsZHMgdG8gbnVsbC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkRGVlcE1lcmdlRGlyZWN0aXZlQ29uZmlnRGVmYXVsdHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEaXNhYmxlIHJlc29sdmVyIGRlZHVwaW5nLCB0aGlzIGNhbiBzb21ldGltZXMgY2F1c2UgcHJvYmxlbXMgYmVjYXVzZSBkZWR1cGUgb3JkZXJpbmcgaXNuJ3Qgc3RhYmxlIHRvZGF5LCB3aGljaCBjYW5cbiAgICogbGVhZCB0byBjaXJjdWxhciBkZXBlbmRlbmNpZXMgYWNyb3NzIHN0YWNrcyBpZiBtb2RlbHMgYXJlIHJlb3JkZXJlZC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZGlzYWJsZVJlc29sdmVyRGVkdXBpbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbmFibGluZyBzYW5kYm94IG1vZGUgd2lsbCBlbmFibGUgYXBpIGtleSBhdXRoIG9uIGFsbCBtb2RlbHMgaW4gdGhlIHRyYW5zZm9ybWVkIHNjaGVtYS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHNhbmRib3hNb2RlRW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuc3VyZSB0aGF0IG9pZGMgYW5kIHVzZXJQb29sIGF1dGggdXNlIHRoZSBgc3ViYCBmaWVsZCBpbiB0aGUgZm9yIHRoZSB1c2VybmFtZSBmaWVsZCwgd2hpY2ggZGlzYWxsb3dzIG5ldyB1c2VycyB3aXRoIHRoZSBzYW1lXG4gICAqIGlkIHRvIGFjY2VzcyBkYXRhIGZyb20gYSBkZWxldGVkIHVzZXIgaW4gdGhlIHBvb2wuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHVzZVN1YlVzZXJuYW1lRm9yRGVmYXVsdElkZW50aXR5Q2xhaW0/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbnN1cmUgdGhhdCB0aGUgb3duZXIgZmllbGQgaXMgc3RpbGwgcG9wdWxhdGVkIGV2ZW4gaWYgYSBzdGF0aWMgaWFtIG9yIGdyb3VwIGF1dGhvcml6YXRpb24gYXBwbGllcy5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcG9wdWxhdGVPd25lckZpZWxkRm9yU3RhdGljR3JvdXBBdXRoPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgZW5hYmxlZCwgZGlzYWJsZSBhcGkga2V5IHJlc291cmNlIGdlbmVyYXRpb24gZXZlbiBpZiBzcGVjaWZpZWQgYXMgYW4gYXV0aCBydWxlIG9uIHRoZSBjb25zdHJ1Y3QuXG4gICAqIFRoaXMgaXMgYSBsZWdhY3kgcGFyYW1ldGVyIGZyb20gdGhlIEdyYXBocWwgVHJhbnNmb3JtZXIgZXhpc3RpbmcgaW4gQW1wbGlmeSBDTEksIG5vdCByZWNvbW1lbmRlZCB0byBjaGFuZ2UuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBzdXBwcmVzc0FwaUtleUdlbmVyYXRpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBkaXNhYmxlZCwgZ2VuZXJhdGVkIEBpbmRleCBhcyBhbiBMU0kgaW5zdGVhZCBvZiBhIEdTSS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgc2Vjb25kYXJ5S2V5QXNHU0k/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBdXRvbWF0ZSBnZW5lcmF0aW9uIG9mIHF1ZXJ5IG5hbWVzLCBhbmQgYXMgYSByZXN1bHQgYXR0YWNoaW5nIGFsbCBpbmRleGVzIGFzIHF1ZXJpZXMgdG8gdGhlIGdlbmVyYXRlZCBBcGkuXG4gICAqIElmIGVuYWJsZWQsIEBpbmRleCBjYW4gYmUgcHJvdmlkZWQgYSBudWxsIG5hbWUgZmllbGQgdG8gZGlzYWJsZSB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUgcXVlcnkgb24gdGhlIEFwaS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlQXV0b0luZGV4UXVlcnlOYW1lcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBjdXN0b20gcHJpbWFyeSBrZXkgc3VwcG9ydCwgdGhlcmUncyBubyBnb29kIHJlYXNvbiB0byBkaXNhYmxlIHRoaXMgdW5sZXNzIHRyeWluZyBub3QgdG8gdXBkYXRlIGEgbGVnYWN5IGFwcC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVzcGVjdFByaW1hcnlLZXlBdHRyaWJ1dGVzT25Db25uZWN0aW9uRmllbGQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBlbmFibGVkLCBzZXQgbm9kZVRvTm9kZUVuY3J5cHRpb24gb24gdGhlIHNlYXJjaGFibGUgZG9tYWluIChpZiBvbmUgZXhpc3RzKS4gTm90IHJlY29tbWVuZGVkIGZvciB1c2UsIHByZWZlclxuICAgKiB0byB1c2UgYE9iamVjdC52YWx1ZXMocmVzb3VyY2VzLmFkZGl0aW9uYWxSZXNvdXJjZXNbJ0FXUzo6RWxhc3RpY3NlYXJjaDo6RG9tYWluJ10pLmZvckVhY2goKGRvbWFpbjogQ2ZuRG9tYWluKSA9PiB7XG4gICAqICAgZG9tYWluLk5vZGVUb05vZGVFbmNyeXB0aW9uT3B0aW9ucyA9IHsgRW5hYmxlZDogVHJ1ZSB9O1xuICAgKiB9KTtcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZVNlYXJjaE5vZGVUb05vZGVFbmNyeXB0aW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBlbmFibGVkLCBpbnRlcm5hbCBjZm4gb3V0cHV0cyB3aGljaCBleGlzdGVkIGluIEFtcGxpZnktZ2VuZXJhdGVkIGFwcHMgd2lsbCBjb250aW51ZSB0byBiZSBlbWl0dGVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlVHJhbnNmb3JtZXJDZm5PdXRwdXRzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBHcmFwaHFsIEFwaSBkZWZpbml0aW9uLCB3aGljaCBjYW4gYmUgaW1wbGVtZW50ZWQgaW4gbXVsdGlwbGUgd2F5cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQW1wbGlmeUdyYXBocWxEZWZpbml0aW9uIHtcbiAgLyoqXG4gICAqIFJldHVybiB0aGUgc2NoZW1hIGRlZmluaXRpb24gYXMgYSBncmFwaHFsIHN0cmluZywgd2l0aCBhbXBsaWZ5IGRpcmVjdGl2ZXMgYWxsb3dlZC5cbiAgICogQHJldHVybnMgdGhlIHJlbmRlcmVkIHNjaGVtYS5cbiAgICovXG4gIHJlYWRvbmx5IHNjaGVtYTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSBhbnkgZnVuY3Rpb24gc2xvdHMgZGVmaW5lZCBleHBsaWNpdGx5IGluIHRoZSBBcGkgZGVmaW5pdGlvbi5cbiAgICogQHJldHVybnMgZ2VuZXJhdGVkIGZ1bmN0aW9uIHNsb3RzXG4gICAqL1xuICByZWFkb25seSBmdW5jdGlvblNsb3RzOiBGdW5jdGlvblNsb3RbXTtcblxuICAvKipcbiAgICogUmV0cmlldmUgdGhlIGRhdGFzb3VyY2UgZGVmaW5pdGlvbiBtYXBwaW5nLiBUaGUgZGVmYXVsdCBzdHJhdGVneSBpcyB0byB1c2UgRHluYW1vREIgZnJvbSBDbG91ZEZvcm1hdGlvbi5cbiAgICogQHJldHVybnMgZGF0YXNvdXJjZSBkZWZpbml0aW9uIG1hcHBpbmdcbiAgICovXG4gIHJlYWRvbmx5IGRhdGFTb3VyY2VEZWZpbml0aW9uOiBSZWNvcmQ8c3RyaW5nLCBNb2RlbERhdGFTb3VyY2VEZWZpbml0aW9uPjtcbn1cblxuLyoqXG4gKiBFbnRyeSByZXByZXNlbnRpbmcgdGhlIHJlcXVpcmVkIG91dHB1dCBmcm9tIHRoZSBiYWNrZW5kIGZvciBjb2RlZ2VuIGdlbmVyYXRlIGNvbW1hbmRzIHRvIHdvcmsuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUJhY2tlbmRPdXRwdXRFbnRyeSB7XG4gIC8qKlxuICAgKiBUaGUgcHJvdG9jb2wgdmVyc2lvbiBmb3IgdGhpcyBiYWNrZW5kIG91dHB1dC5cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHN0cmluZy1tYXAgcGF5bG9hZCBvZiBnZW5lcmF0ZWQgY29uZmlnIHZhbHVlcy5cbiAgICovXG4gIHJlYWRvbmx5IHBheWxvYWQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG5cbi8qKlxuICogQmFja2VuZCBvdXRwdXQgc3RyYXRlZ3kgdXNlZCB0byB3cml0ZSBjb25maWcgcmVxdWlyZWQgZm9yIGNvZGVnZW4gdGFza3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUJhY2tlbmRPdXRwdXRTdG9yYWdlU3RyYXRlZ3kge1xuICAvKipcbiAgICogQWRkIGFuIGVudHJ5IHRvIGJhY2tlbmQgb3V0cHV0LlxuICAgKiBAcGFyYW0ga2V5TmFtZSB0aGUga2V5XG4gICAqIEBwYXJhbSBiYWNrZW5kT3V0cHV0RW50cnkgdGhlIHJlY29yZCB0byBzdG9yZSBpbiB0aGUgYmFja2VuZCBvdXRwdXRcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWV0aG9kLXNpZ25hdHVyZS1zdHlsZVxuICBhZGRCYWNrZW5kT3V0cHV0RW50cnkoa2V5TmFtZTogc3RyaW5nLCBiYWNrZW5kT3V0cHV0RW50cnk6IElCYWNrZW5kT3V0cHV0RW50cnkpOiB2b2lkO1xufVxuXG4vKipcbiAqIERlZmluZXMgYSBkYXRhc291cmNlIGZvciByZXNvbHZpbmcgR3JhcGhRTCBvcGVyYXRpb25zIGFnYWluc3QgYEBtb2RlbGAgdHlwZXMgaW4gYSBHcmFwaFFMIHNjaGVtYS5cbiAqIEBleHBlcmltZW50YWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb2RlbERhdGFTb3VyY2VEZWZpbml0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBNb2RlbERhdGFTb3VyY2UuIFRoaXMgd2lsbCBiZSB1c2VkIHRvIG5hbWUgdGhlIEFwcFN5bmNlIERhdGFTb3VyY2UgaXRzZWxmLCBwbHVzIGFueSBhc3NvY2lhdGVkIHJlc291cmNlcyBsaWtlIHJlc29sdmVyXG4gICAqIExhbWJkYXMsIGN1c3RvbSBDREsgcmVzb3VyY2VzLiBUaGlzIG5hbWUgbXVzdCBiZSB1bmlxdWUgYWNyb3NzIGFsbCBzY2hlbWEgZGVmaW5pdGlvbnMgaW4gYSBHcmFwaFFMIEFQSS5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBNb2RlbERhdGFTb3VyY2VEZWZpbml0aW9uU3RyYXRlZ3kuXG4gICAqL1xuICByZWFkb25seSBzdHJhdGVneTogTW9kZWxEYXRhU291cmNlRGVmaW5pdGlvblN0cmF0ZWd5O1xufVxuLyoqXG4gKiBBbGwga25vd24gTW9kZWxEYXRhU291cmNlRGVmaW5pdGlvblN0cmF0ZWdpZXMuIENvbmNyZXRlIHN0cmF0ZWdpZXMgdmFyeSB3aWRlbHkgaW4gdGhlaXIgcmVxdWlyZW1lbnRzIGFuZCBpbXBsZW1lbnRhdGlvbnMuXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbmV4cG9ydCB0eXBlIE1vZGVsRGF0YVNvdXJjZURlZmluaXRpb25TdHJhdGVneSA9XG4gIHwgRGVmYXVsdER5bmFtb0RiTW9kZWxEYXRhU291cmNlRGVmaW5pdGlvblN0cmF0ZWd5XG4gIHwgQW1wbGlmeUR5bmFtb0RiTW9kZWxEYXRhU291cmNlRGVmaW5pdGlvblN0cmF0ZWd5O1xuXG5leHBvcnQgdHlwZSBNb2RlbERhdGFTb3VyY2VEZWZpbml0aW9uRGJUeXBlID0gJ0RZTkFNT0RCJztcblxuLyoqXG4gKiBVc2UgZGVmYXVsdCBDbG91ZEZvcm1hdGlvbiB0eXBlICdBV1M6OkR5bmFtb0RCOjpUYWJsZScgdG8gcHJvdmlzaW9uIHRhYmxlLlxuICogQGV4cGVyaW1lbnRhbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmF1bHREeW5hbW9EYk1vZGVsRGF0YVNvdXJjZURlZmluaXRpb25TdHJhdGVneSB7XG4gIHJlYWRvbmx5IGRiVHlwZTogJ0RZTkFNT0RCJztcbiAgcmVhZG9ubHkgcHJvdmlzaW9uU3RyYXRlZ3k6ICdERUZBVUxUJztcbn1cbi8qKlxuICogVXNlIGN1c3RvbSByZXNvdXJjZSB0eXBlICdDdXN0b206OkFtcGxpZnlEeW5hbW9EQlRhYmxlJyB0byBwcm92aXNpb24gdGFibGUuXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQW1wbGlmeUR5bmFtb0RiTW9kZWxEYXRhU291cmNlRGVmaW5pdGlvblN0cmF0ZWd5IHtcbiAgcmVhZG9ubHkgZGJUeXBlOiAnRFlOQU1PREInO1xuICByZWFkb25seSBwcm92aXNpb25TdHJhdGVneTogJ0FNUExJRllfVEFCTEUnO1xufVxuXG4vKipcbiAqIElucHV0IHByb3BzIGZvciB0aGUgQW1wbGlmeUdyYXBocWxBcGkgY29uc3RydWN0LiBTcGVjaWZpZXMgd2hhdCB0aGUgaW5wdXQgdG8gdHJhbnNmb3JtIGludG8gYW4gQXBpLCBhbmQgY29uZmlndXJhdGlvbnMgZm9yXG4gKiB0aGUgdHJhbnNmb3JtYXRpb24gcHJvY2Vzcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbXBsaWZ5R3JhcGhxbEFwaVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBkZWZpbml0aW9uIHRvIHRyYW5zZm9ybSBpbiBhIGZ1bGwgQXBpLlxuICAgKiBDYW4gYmUgY29uc3RydWN0ZWQgdmlhIHRoZSBBbXBsaWZ5R3JhcGhxbERlZmluaXRpb24gY2xhc3MuXG4gICAqL1xuICByZWFkb25seSBkZWZpbml0aW9uOiBJQW1wbGlmeUdyYXBocWxEZWZpbml0aW9uO1xuXG4gIC8qKlxuICAgKiBOYW1lIHRvIGJlIHVzZWQgZm9yIHRoZSBBcHBTeW5jIEFwaS5cbiAgICogRGVmYXVsdDogY29uc3RydWN0IGlkLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBpTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogUmVxdWlyZWQgYXV0aCBtb2RlcyBmb3IgdGhlIEFwaS4gVGhpcyBvYmplY3QgbXVzdCBiZSBhIHN1cGVyc2V0IG9mIHRoZSBjb25maWd1cmVkIGF1dGggcHJvdmlkZXJzIGluIHRoZSBBcGkgZGVmaW5pdGlvbi5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHJlZmVyIHRvIGh0dHBzOi8vZG9jcy5hbXBsaWZ5LmF3cy9jbGkvZ3JhcGhxbC9hdXRob3JpemF0aW9uLXJ1bGVzL1xuICAgKi9cbiAgcmVhZG9ubHkgYXV0aG9yaXphdGlvbk1vZGVzOiBBdXRob3JpemF0aW9uTW9kZXM7XG5cbiAgLyoqXG4gICAqIExhbWJkYSBmdW5jdGlvbnMgcmVmZXJlbmNlZCBpbiB0aGUgZGVmaW5pdGlvbnMncyBAZnVuY3Rpb24gZGlyZWN0aXZlcy4gVGhlIGtleXMgb2YgdGhpcyBvYmplY3QgYXJlIGV4cGVjdGVkIHRvIGJlIHRoZVxuICAgKiBmdW5jdGlvbiBuYW1lIHByb3ZpZGVkIGluIHRoZSBkZWZpbml0aW9uLCBhbmQgdmFsdWUgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgbmFtZSByZWZlcnMgdG8uIElmIGEgbmFtZSBpcyBub3QgZm91bmQgaW4gdGhpc1xuICAgKiBtYXAsIHRoZW4gaXQgaXMgaW50ZXJwcmV0ZWQgYXMgdGhlIGBmdW5jdGlvbk5hbWVgLCBhbmQgYW4gYXJuIHdpbGwgYmUgY29uc3RydWN0ZWQgdXNpbmcgdGhlIGN1cnJlbnQgYXdzIGFjY291bnQgYW5kIHJlZ2lvblxuICAgKiAob3Igb3ZlcnJpZGRlbiB2YWx1ZXMsIGlmIHNldCBpbiB0aGUgZGlyZWN0aXZlKS5cbiAgICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uTmFtZU1hcD86IFJlY29yZDxzdHJpbmcsIElGdW5jdGlvbj47XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZSBjb25mbGljdCByZXNvbHV0aW9uIG9uIHRoZSBBcGksIHdoaWNoIGlzIHJlcXVpcmVkIHRvIGVuYWJsZSBEYXRhU3RvcmUgQXBpIGZ1bmN0aW9uYWxpdHkuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCByZWZlciB0byBodHRwczovL2RvY3MuYW1wbGlmeS5hd3MvbGliL2RhdGFzdG9yZS9nZXR0aW5nLXN0YXJ0ZWQvcS9wbGF0Zm9ybS9qcy9cbiAgICovXG4gIHJlYWRvbmx5IGNvbmZsaWN0UmVzb2x1dGlvbj86IENvbmZsaWN0UmVzb2x1dGlvbjtcblxuICAvKipcbiAgICogU3RhY2tNYXBwaW5ncyBvdmVycmlkZSB0aGUgYXNzaWduZWQgbmVzdGVkIHN0YWNrIG9uIGEgcGVyLXJlc291cmNlIGJhc2lzLiBPbmx5IGFwcGxpZXMgdG8gcmVzb2x2ZXJzLCBhbmQgdGFrZXMgdGhlIGZvcm1cbiAgICogeyA8bG9naWNhbElkPjogPHN0YWNrTmFtZT4gfVxuICAgKiBJdCBpcyBub3QgcmVjb21tZW5kZWQgdG8gdXNlIHRoaXMgcGFyYW1ldGVyIHVubGVzcyB5b3UgYXJlIGVuY291bnRlcmluZyBzdGFjayByZXNvdXJjZSBjb3VudCBsaW1pdHMsIGFuZCB3b3J0aCBub3RpbmcgdGhhdFxuICAgKiBhZnRlciBpbml0aWFsIGRlcGxveW1lbnQgQXBwU3luYyByZXNvbHZlcnMgY2Fubm90IGJlIG1vdmVkIGJldHdlZW4gbmVzdGVkIHN0YWNrcywgdGhleSB3aWxsIG5lZWQgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBhcHAsXG4gICAqIHRoZW4gcmUtYWRkZWQgZnJvbSBhIG5ldyBzdGFjay5cbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrTWFwcGluZ3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZXMgZm9yIGEgZ2l2ZW4gc2xvdCBpbiB0aGUgZ2VuZXJhdGVkIHJlc29sdmVyIHBpcGVsaW5lcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBzbG90cyBhcmUgYXZhaWxhYmxlLFxuICAgKiByZWZlciB0byBodHRwczovL2RvY3MuYW1wbGlmeS5hd3MvY2xpL2dyYXBocWwvY3VzdG9tLWJ1c2luZXNzLWxvZ2ljLyNvdmVycmlkZS1hbXBsaWZ5LWdlbmVyYXRlZC1yZXNvbHZlcnMuXG4gICAqL1xuICByZWFkb25seSBmdW5jdGlvblNsb3RzPzogRnVuY3Rpb25TbG90W107XG5cbiAgLyoqXG4gICAqIFByb3ZpZGUgYSBsaXN0IG9mIGFkZGl0aW9uYWwgY3VzdG9tIHRyYW5zZm9ybWVycyB3aGljaCBhcmUgaW5qZWN0ZWQgaW50byB0aGUgdHJhbnNmb3JtIHByb2Nlc3MuXG4gICAqIFRoZXNlIGN1c3RvbSB0cmFuc2Zvcm1lcnMgbXVzdCBiZSBpbXBsZW1lbnRlZCB3aXRoIGF3cy1jZGstbGliID49Mi44MC4wLCBhbmQgQGF3cy1hbXBsaWZ5L2dyYXBocWwtdHJhbnNmb3JtZXItY29yZSA+PSAyLjEuMVxuICAgKiBAZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSB0cmFuc2Zvcm1lclBsdWdpbnM/OiBhbnlbXTtcblxuICAvKipcbiAgICogSWYgdXNpbmcgcHJlZGljdGlvbnMsIGEgYnVja2V0IG11c3QgYmUgcHJvdmlkZWQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIHNlYXJjaCBmb3IgYXNzZXRzLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJlZGljdGlvbnNCdWNrZXQ/OiBJQnVja2V0O1xuXG4gIC8qKlxuICAgKiBUaGlzIHJlcGxhY2VzIGZlYXR1cmUgZmxhZ3MgZnJvbSB0aGUgQXBpIGNvbnN0cnVjdCwgZm9yIGdlbmVyYWwgaW5mb3JtYXRpb24gb24gd2hhdCB0aGVzZSBwYXJhbWV0ZXJzIGRvLFxuICAgKiByZWZlciB0byBodHRwczovL2RvY3MuYW1wbGlmeS5hd3MvY2xpL3JlZmVyZW5jZS9mZWF0dXJlLWZsYWdzLyNncmFwaFFMVHJhbnNmb3JtZXJcbiAgICovXG4gIHJlYWRvbmx5IHRyYW5zbGF0aW9uQmVoYXZpb3I/OiBQYXJ0aWFsVHJhbnNsYXRpb25CZWhhdmlvcjtcblxuICAvKipcbiAgICogU3RyYXRlZ3kgdG8gc3RvcmUgY29uc3RydWN0IG91dHB1dHMuIElmIG5vIG91dHB1dFN0b3JhZ2VTdHJhdGVnZXkgaXMgcHJvdmlkZWQgYSBkZWZhdWx0IHN0cmF0ZWd5IHdpbGwgYmUgdXNlZC5cbiAgICovXG4gIHJlYWRvbmx5IG91dHB1dFN0b3JhZ2VTdHJhdGVneT86IElCYWNrZW5kT3V0cHV0U3RvcmFnZVN0cmF0ZWd5O1xufVxuXG4vKipcbiAqIEwxIENESyByZXNvdXJjZXMgZnJvbSB0aGUgQXBpIHdoaWNoIHdlcmUgZ2VuZXJhdGVkIGFzIHBhcnQgb2YgdGhlIHRyYW5zZm9ybS5cbiAqIFRoZXNlIGFyZSBwb3RlbnRpYWxseSBzdG9yZWQgdW5kZXIgbmVzdGVkIHN0YWNrcywgYnV0IHByZXNlbnRlZCBvcmdhbml6ZWQgYnkgdHlwZSBpbnN0ZWFkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFtcGxpZnlHcmFwaHFsQXBpQ2ZuUmVzb3VyY2VzIHtcbiAgLyoqXG4gICAqIFRoZSBHZW5lcmF0ZWQgQXBwU3luYyBBcGkgTDEgUmVzb3VyY2VcbiAgICovXG4gIHJlYWRvbmx5IGNmbkdyYXBocWxBcGk6IENmbkdyYXBoUUxBcGk7XG5cbiAgLyoqXG4gICAqIFRoZSBHZW5lcmF0ZWQgQXBwU3luYyBTY2hlbWEgTDEgUmVzb3VyY2VcbiAgICovXG4gIHJlYWRvbmx5IGNmbkdyYXBocWxTY2hlbWE6IENmbkdyYXBoUUxTY2hlbWE7XG5cbiAgLyoqXG4gICAqIFRoZSBHZW5lcmF0ZWQgQXBwU3luYyBBcGkgS2V5IEwxIFJlc291cmNlXG4gICAqL1xuICByZWFkb25seSBjZm5BcGlLZXk/OiBDZm5BcGlLZXk7XG5cbiAgLyoqXG4gICAqIFRoZSBHZW5lcmF0ZWQgQXBwU3luYyBSZXNvbHZlciBMMSBSZXNvdXJjZXMsIGtleWVkIGJ5IGxvZ2ljYWxJZC5cbiAgICovXG4gIHJlYWRvbmx5IGNmblJlc29sdmVyczogUmVjb3JkPHN0cmluZywgQ2ZuUmVzb2x2ZXI+O1xuXG4gIC8qKlxuICAgKiBUaGUgR2VuZXJhdGVkIEFwcFN5bmMgRnVuY3Rpb24gTDEgUmVzb3VyY2VzLCBrZXllZCBieSBsb2dpY2FsSWQuXG4gICAqL1xuICByZWFkb25seSBjZm5GdW5jdGlvbkNvbmZpZ3VyYXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBDZm5GdW5jdGlvbkNvbmZpZ3VyYXRpb24+O1xuXG4gIC8qKlxuICAgKiBUaGUgR2VuZXJhdGVkIEFwcFN5bmMgRGF0YVNvdXJjZSBMMSBSZXNvdXJjZXMsIGtleWVkIGJ5IGxvZ2ljYWxJZC5cbiAgICovXG4gIHJlYWRvbmx5IGNmbkRhdGFTb3VyY2VzOiBSZWNvcmQ8c3RyaW5nLCBDZm5EYXRhU291cmNlPjtcblxuICAvKipcbiAgICogVGhlIEdlbmVyYXRlZCBEeW5hbW9EQiBUYWJsZSBMMSBSZXNvdXJjZXMsIGtleWVkIGJ5IGxvZ2ljYWxJZC5cbiAgICovXG4gIHJlYWRvbmx5IGNmblRhYmxlczogUmVjb3JkPHN0cmluZywgQ2ZuVGFibGU+O1xuXG4gIC8qKlxuICAgKiBUaGUgR2VuZXJhdGVkIElBTSBSb2xlIEwxIFJlc291cmNlcywga2V5ZWQgYnkgbG9naWNhbElkLlxuICAgKi9cbiAgcmVhZG9ubHkgY2ZuUm9sZXM6IFJlY29yZDxzdHJpbmcsIENmblJvbGU+O1xuXG4gIC8qKlxuICAgKiBUaGUgR2VuZXJhdGVkIExhbWJkYSBGdW5jdGlvbiBMMSBSZXNvdXJjZXMsIGtleWVkIGJ5IGZ1bmN0aW9uIG5hbWUuXG4gICAqL1xuICByZWFkb25seSBjZm5GdW5jdGlvbnM6IFJlY29yZDxzdHJpbmcsIENmbkZ1bmN0aW9uPjtcblxuICAvKipcbiAgICogUmVtYWluaW5nIEwxIHJlc291cmNlcyBnZW5lcmF0ZWQsIGtleWVkIGJ5IGxvZ2ljYWxJZC5cbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxDZm5SZXNvdXJjZXM6IFJlY29yZDxzdHJpbmcsIENmblJlc291cmNlPjtcbn1cblxuLyoqXG4gKiBBY2Nlc3NpYmxlIHJlc291cmNlcyBmcm9tIHRoZSBBcGkgd2hpY2ggd2VyZSBnZW5lcmF0ZWQgYXMgcGFydCBvZiB0aGUgdHJhbnNmb3JtLlxuICogVGhlc2UgYXJlIHBvdGVudGlhbGx5IHN0b3JlZCB1bmRlciBuZXN0ZWQgc3RhY2tzLCBidXQgcHJlc2VudGVkIG9yZ2FuaXplZCBieSB0eXBlIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQW1wbGlmeUdyYXBocWxBcGlSZXNvdXJjZXMge1xuICAvKipcbiAgICogVGhlIEdlbmVyYXRlZCBBcHBTeW5jIEFwaSBMMiBSZXNvdXJjZSwgaW5jbHVkZXMgdGhlIFNjaGVtYS5cbiAgICovXG4gIHJlYWRvbmx5IGdyYXBocWxBcGk6IElHcmFwaHFsQXBpO1xuXG4gIC8qKlxuICAgKiBUaGUgR2VuZXJhdGVkIER5bmFtb0RCIFRhYmxlIEwyIFJlc291cmNlcywga2V5ZWQgYnkgbG9naWNhbElkLlxuICAgKi9cbiAgcmVhZG9ubHkgdGFibGVzOiBSZWNvcmQ8c3RyaW5nLCBJVGFibGU+O1xuXG4gIC8qKlxuICAgKiBUaGUgR2VuZXJhdGVkIEFtcGxpZnkgRHluYW1vRGIgVGFibGUgd3JhcHBlZCBpZiBwcm9kdWNlZCwga2V5ZWQgYnkgbmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IGFtcGxpZnlEeW5hbW9EYlRhYmxlczogUmVjb3JkPHN0cmluZywgQW1wbGlmeUR5bmFtb0RiVGFibGVXcmFwcGVyPjtcblxuICAvKipcbiAgICogVGhlIEdlbmVyYXRlZCBJQU0gUm9sZSBMMiBSZXNvdXJjZXMsIGtleWVkIGJ5IGxvZ2ljYWxJZC5cbiAgICovXG4gIHJlYWRvbmx5IHJvbGVzOiBSZWNvcmQ8c3RyaW5nLCBJUm9sZT47XG5cbiAgLyoqXG4gICAqIFRoZSBHZW5lcmF0ZWQgTGFtYmRhIEZ1bmN0aW9uIEwxIFJlc291cmNlcywga2V5ZWQgYnkgZnVuY3Rpb24gbmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uczogUmVjb3JkPHN0cmluZywgSUZ1bmN0aW9uPjtcblxuICAvKipcbiAgICogTDEgQ2ZuIFJlc291cmNlcywgZm9yIHdoZW4gZGlwcGluZyBkb3duIGEgbGV2ZWwgb2YgYWJzdHJhY3Rpb24gaXMgZGVzaXJhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgY2ZuUmVzb3VyY2VzOiBBbXBsaWZ5R3JhcGhxbEFwaUNmblJlc291cmNlcztcblxuICAvKipcbiAgICogTmVzdGVkIFN0YWNrcyBnZW5lcmF0ZWQgYnkgdGhlIEFwaSBDb25zdHJ1Y3QuXG4gICAqL1xuICByZWFkb25seSBuZXN0ZWRTdGFja3M6IFJlY29yZDxzdHJpbmcsIE5lc3RlZFN0YWNrPjtcbn1cblxuLyoqXG4gKiBJbnB1dCB0eXBlIHByb3BlcnRpZXMgd2hlbiBhZGRpbmcgYSBuZXcgYXBwc3luYy5BcHBzeW5jRnVuY3Rpb24gdG8gdGhlIGdlbmVyYXRlZCBBUEkuXG4gKiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gdGhlIE9taXQ8YXBwc3luYy5BcHBzeW5jRnVuY3Rpb25Qcm9wcywgJ2FwaSc+LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFkZEZ1bmN0aW9uUHJvcHMge1xuICAvKipcbiAgICogdGhlIGRhdGEgc291cmNlIGxpbmtlZCB0byB0aGlzIEFwcFN5bmMgRnVuY3Rpb25cbiAgICovXG4gIHJlYWRvbmx5IGRhdGFTb3VyY2U6IEJhc2VEYXRhU291cmNlO1xuXG4gIC8qKlxuICAgKiB0aGUgbmFtZSBvZiB0aGUgQXBwU3luYyBGdW5jdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiB0aGUgZGVzY3JpcHRpb24gZm9yIHRoaXMgQXBwU3luYyBGdW5jdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGRlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogdGhlIHJlcXVlc3QgbWFwcGluZyB0ZW1wbGF0ZSBmb3IgdGhlIEFwcFN5bmMgRnVuY3Rpb25cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyByZXF1ZXN0IG1hcHBpbmcgdGVtcGxhdGVcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVlc3RNYXBwaW5nVGVtcGxhdGU/OiBNYXBwaW5nVGVtcGxhdGU7XG5cbiAgLyoqXG4gICAqIHRoZSByZXNwb25zZSBtYXBwaW5nIHRlbXBsYXRlIGZvciB0aGUgQXBwU3luYyBGdW5jdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHJlc3BvbnNlIG1hcHBpbmcgdGVtcGxhdGVcbiAgICovXG4gIHJlYWRvbmx5IHJlc3BvbnNlTWFwcGluZ1RlbXBsYXRlPzogTWFwcGluZ1RlbXBsYXRlO1xuXG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb25zIHJ1bnRpbWVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBmdW5jdGlvbiBydW50aW1lLCBWVEwgbWFwcGluZyB0ZW1wbGF0ZXMgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgcnVudGltZT86IEZ1bmN0aW9uUnVudGltZTtcblxuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIGNvZGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBjb2RlIGlzIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IGNvZGU/OiBDb2RlO1xufVxuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IER1cmF0aW9uLCBDZm5SZXNvdXJjZSwgTmVzdGVkU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQge1xuICBDZm5HcmFwaFFMQXBpLFxuICBDZm5HcmFwaFFMU2NoZW1hLFxuICBDZm5BcGlLZXksXG4gIENmblJlc29sdmVyLFxuICBDZm5GdW5jdGlvbkNvbmZpZ3VyYXRpb24sXG4gIENmbkRhdGFTb3VyY2UsXG4gIElHcmFwaHFsQXBpLFxuICBNYXBwaW5nVGVtcGxhdGUsXG4gIEJhc2VEYXRhU291cmNlLFxuICBDb2RlLFxuICBGdW5jdGlvblJ1bnRpbWUsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1hcHBzeW5jJztcbmltcG9ydCB7IENmblRhYmxlLCBJVGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZHluYW1vZGInO1xuaW1wb3J0IHsgSVJvbGUsIENmblJvbGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IElVc2VyUG9vbCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2duaXRvJztcbmltcG9ydCB7IElGdW5jdGlvbiwgQ2ZuRnVuY3Rpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IElCdWNrZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0IHsgQW1wbGlmeUR5bmFtb0RiVGFibGVXcmFwcGVyIH0gZnJvbSAnLi9hbXBsaWZ5LWR5bmFtb2RiLXRhYmxlLXdyYXBwZXInO1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIElBTSBBdXRob3JpemF0aW9uIG9uIHRoZSBHcmFwaHFsIEFwaS5cbiAqIEBzdHJ1Y3QgLSByZXF1aXJlZCBzaW5jZSB0aGlzIGludGVyZmFjZSBiZWdpbnMgd2l0aCBhbiAnSSdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQU1BdXRob3JpemF0aW9uQ29uZmlnIHtcbiAgLyoqXG4gICAqIElEIGZvciB0aGUgQ29nbml0byBJZGVudGl0eSBQb29sIHZlbmRpbmcgYXV0aCBhbmQgdW5hdXRoIHJvbGVzLlxuICAgKiBGb3JtYXQ6IGA8cmVnaW9uPjo8aWQgc3RyaW5nPmBcbiAgICovXG4gIHJlYWRvbmx5IGlkZW50aXR5UG9vbElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEF1dGhlbnRpY2F0ZWQgdXNlciByb2xlLCBhcHBsaWVzIHRvIHsgcHJvdmlkZXI6IGlhbSwgYWxsb3c6IHByaXZhdGUgfSBhY2Nlc3MuXG4gICAqL1xuICByZWFkb25seSBhdXRoZW50aWNhdGVkVXNlclJvbGU6IElSb2xlO1xuXG4gIC8qKlxuICAgKiBVbmF1dGhlbnRpY2F0ZWQgdXNlciByb2xlLCBhcHBsaWVzIHRvIHsgcHJvdmlkZXI6IGlhbSwgYWxsb3c6IHB1YmxpYyB9IGFjY2Vzcy5cbiAgICovXG4gIHJlYWRvbmx5IHVuYXV0aGVudGljYXRlZFVzZXJSb2xlOiBJUm9sZTtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIElBTSByb2xlcyB3aGljaCB3aWxsIGJlIGdyYW50ZWQgZnVsbCByZWFkL3dyaXRlIGFjY2VzcyB0byB0aGUgZ2VuZXJhdGVkIG1vZGVsIGlmIElBTSBhdXRoIGlzIGVuYWJsZWQuXG4gICAqIElmIGFuIElSb2xlIGlzIHByb3ZpZGVkLCB0aGUgcm9sZSBgbmFtZWAgd2lsbCBiZSB1c2VkIGZvciBtYXRjaGluZy5cbiAgICogSWYgYSBzdHJpbmcgaXMgcHJvdmlkZWQsIHRoZSByYXcgdmFsdWUgd2lsbCBiZSB1c2VkIGZvciBtYXRjaGluZy5cbiAgICovXG4gIHJlYWRvbmx5IGFsbG93TGlzdGVkUm9sZXM/OiAoSVJvbGUgfCBzdHJpbmcpW107XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgQ29nbml0byBVc2VyUG9vbCBBdXRob3JpemF0aW9uIG9uIHRoZSBHcmFwaHFsIEFwaS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVc2VyUG9vbEF1dGhvcml6YXRpb25Db25maWcge1xuICAvKipcbiAgICogVGhlIENvZ25pdG8gVXNlciBQb29sIHdoaWNoIGlzIHVzZWQgdG8gYXV0aGVudGljYXRlZCBKV1QgdG9rZW5zLCBhbmQgdmVuZHMgZ3JvdXAgYW5kIHVzZXIgaW5mb3JtYXRpb24uXG4gICAqL1xuICByZWFkb25seSB1c2VyUG9vbDogSVVzZXJQb29sO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIE9wZW5JZCBDb25uZWN0IEF1dGhvcml6YXRpb24gb24gdGhlIEdyYXBocWwgQXBpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9JRENBdXRob3JpemF0aW9uQ29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSBpc3N1ZXIgZm9yIHRoZSBPSURDIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICByZWFkb25seSBvaWRjUHJvdmlkZXJOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVybCBmb3IgdGhlIE9JREMgdG9rZW4gaXNzdWVyLlxuICAgKi9cbiAgcmVhZG9ubHkgb2lkY0lzc3VlclVybDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY2xpZW50IGlkZW50aWZpZXIgb2YgdGhlIFJlbHlpbmcgcGFydHkgYXQgdGhlIE9wZW5JRCBpZGVudGl0eSBwcm92aWRlci5cbiAgICogQSByZWd1bGFyIGV4cHJlc3Npb24gY2FuIGJlIHNwZWNpZmllZCBzbyBBcHBTeW5jIGNhbiB2YWxpZGF0ZSBhZ2FpbnN0IG11bHRpcGxlIGNsaWVudCBpZGVudGlmaWVycyBhdCBhIHRpbWUuIEV4YW1wbGVcbiAgICovXG4gIHJlYWRvbmx5IGNsaWVudElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZHVyYXRpb24gYW4gT0lEQyB0b2tlbiBpcyB2YWxpZCBhZnRlciBiZWluZyBhdXRoZW50aWNhdGVkIGJ5IE9JREMgcHJvdmlkZXIuXG4gICAqIGF1dGhfdGltZSBjbGFpbSBpbiBPSURDIHRva2VuIGlzIHJlcXVpcmVkIGZvciB0aGlzIHZhbGlkYXRpb24gdG8gd29yay5cbiAgICovXG4gIHJlYWRvbmx5IHRva2VuRXhwaXJ5RnJvbUF1dGg6IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgZHVyYXRpb24gYW4gT0lEQyB0b2tlbiBpcyB2YWxpZCBhZnRlciBiZWluZyBpc3N1ZWQgdG8gYSB1c2VyLlxuICAgKiBUaGlzIHZhbGlkYXRpb24gdXNlcyBpYXQgY2xhaW0gb2YgT0lEQyB0b2tlbi5cbiAgICovXG4gIHJlYWRvbmx5IHRva2VuRXhwaXJ5RnJvbUlzc3VlOiBEdXJhdGlvbjtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBBcGkgS2V5cyBvbiB0aGUgR3JhcGhxbCBBcGkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBpS2V5QXV0aG9yaXphdGlvbkNvbmZpZyB7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBkZXNjcmlwdGlvbiBmb3IgdGhlIEFwaSBLZXkgdG8gYXR0YWNoIHRvIHRoZSBBcGkuXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogQSBkdXJhdGlvbiByZXByZXNlbnRpbmcgdGhlIHRpbWUgZnJvbSBDbG91ZGZvcm1hdGlvbiBkZXBsb3kgdW50aWwgZXhwaXJ5LlxuICAgKi9cbiAgcmVhZG9ubHkgZXhwaXJlczogRHVyYXRpb247XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgQ3VzdG9tIExhbWJkYSBhdXRob3JpemF0aW9uIG9uIHRoZSBHcmFwaHFsIEFwaS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYW1iZGFBdXRob3JpemF0aW9uQ29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSBhdXRob3JpemVyIGxhbWJkYSBmdW5jdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uOiBJRnVuY3Rpb247XG5cbiAgLyoqXG4gICAqIEhvdyBsb25nIHRoZSByZXN1bHRzIGFyZSBjYWNoZWQuXG4gICAqL1xuICByZWFkb25seSB0dGw6IER1cmF0aW9uO1xufVxuXG4vKipcbiAqIEF1dGhvcml6YXRpb24gTW9kZXMgdG8gYXBwbHkgdG8gdGhlIEFwaS5cbiAqIEF0IGxlYXN0IG9uZSBtb2RlcyBtdXN0IGJlIHByb3ZpZGVkLCBhbmQgaWYgbW9yZSB0aGFuIG9uZSBhcmUgcHJvdmlkZWQgYSBkZWZhdWx0QXV0aG9yaXphdGlvbk1vZGUgbXVzdCBiZSBzcGVjaWZpZWQuXG4gKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBBbXBsaWZ5IEFwaSBhdXRoLCByZWZlciB0byBodHRwczovL2RvY3MuYW1wbGlmeS5hd3MvY2xpL2dyYXBocWwvYXV0aG9yaXphdGlvbi1ydWxlcy8jYXV0aG9yaXphdGlvbi1zdHJhdGVnaWVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aG9yaXphdGlvbk1vZGVzIHtcbiAgLyoqXG4gICAqIERlZmF1bHQgYXV0aCBtb2RlIHRvIHByb3ZpZGUgdG8gdGhlIEFwaSwgcmVxdWlyZWQgaWYgbW9yZSB0aGFuIG9uZSBjb25maWcgdHlwZSBpcyBzcGVjaWZpZWQuXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0QXV0aG9yaXphdGlvbk1vZGU/OiAnQVdTX0lBTScgfCAnQU1BWk9OX0NPR05JVE9fVVNFUl9QT09MUycgfCAnT1BFTklEX0NPTk5FQ1QnIHwgJ0FQSV9LRVknIHwgJ0FXU19MQU1CREEnO1xuXG4gIC8qKlxuICAgKiBJQU0gQXV0aCBjb25maWcsIHJlcXVpcmVkIGlmIGFuICdpYW0nIGF1dGggcHJvdmlkZXIgaXMgc3BlY2lmaWVkIGluIHRoZSBBcGkuXG4gICAqIEFwcGxpZXMgdG8gJ3B1YmxpYycgYW5kICdwcml2YXRlJyBhdXRoIHN0cmF0ZWdpZXMuXG4gICAqL1xuICByZWFkb25seSBpYW1Db25maWc/OiBJQU1BdXRob3JpemF0aW9uQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBDb2duaXRvIFVzZXJQb29sIGNvbmZpZywgcmVxdWlyZWQgaWYgYSAndXNlclBvb2xzJyBhdXRoIHByb3ZpZGVyIGlzIHNwZWNpZmllZCBpbiB0aGUgQXBpLlxuICAgKiBBcHBsaWVzIHRvICdvd25lcicsICdwcml2YXRlJywgYW5kICdncm91cCcgYXV0aCBzdHJhdGVnaWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgdXNlclBvb2xDb25maWc/OiBVc2VyUG9vbEF1dGhvcml6YXRpb25Db25maWc7XG5cbiAgLyoqXG4gICAqIENvZ25pdG8gT0lEQyBjb25maWcsIHJlcXVpcmVkIGlmIGEgJ29pZGMnIGF1dGggcHJvdmlkZXIgaXMgc3BlY2lmaWVkIGluIHRoZSBBcGkuXG4gICAqIEFwcGxpZXMgdG8gJ293bmVyJywgJ3ByaXZhdGUnLCBhbmQgJ2dyb3VwJyBhdXRoIHN0cmF0ZWdpZXMuXG4gICAqL1xuICByZWFkb25seSBvaWRjQ29uZmlnPzogT0lEQ0F1dGhvcml6YXRpb25Db25maWc7XG5cbiAgLyoqXG4gICAqIEFwcFN5bmMgQXBpIEtleSBjb25maWcsIHJlcXVpcmVkIGlmIGEgJ2FwaUtleScgYXV0aCBwcm92aWRlciBpcyBzcGVjaWZpZWQgaW4gdGhlIEFwaS5cbiAgICogQXBwbGllcyB0byAncHVibGljJyBhdXRoIHN0cmF0ZWd5LlxuICAgKi9cbiAgcmVhZG9ubHkgYXBpS2V5Q29uZmlnPzogQXBpS2V5QXV0aG9yaXphdGlvbkNvbmZpZztcblxuICAvKipcbiAgICogTGFtYmRhIGNvbmZpZywgcmVxdWlyZWQgaWYgYSAnZnVuY3Rpb24nIGF1dGggcHJvdmlkZXIgaXMgc3BlY2lmaWVkIGluIHRoZSBBcGkuXG4gICAqIEFwcGxpZXMgdG8gJ2N1c3RvbScgYXV0aCBzdHJhdGVneS5cbiAgICovXG4gIHJlYWRvbmx5IGxhbWJkYUNvbmZpZz86IExhbWJkYUF1dGhvcml6YXRpb25Db25maWc7XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiByb2xlcyBncmFudGVkIGZ1bGwgUi9XIGFjY2VzcyB0byB0aGUgQXBpLlxuICAgKiBAZGVwcmVjYXRlZCwgdXNlIGlhbUNvbmZpZy5hbGxvd0xpc3RlZFJvbGVzIGluc3RlYWQuXG4gICAqL1xuICByZWFkb25seSBhZG1pblJvbGVzPzogSVJvbGVbXTtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIG9yIG5vdCB0byB1c2UgYSB2ZXJzaW9uIGZpZWxkIHRvIHRyYWNrIGNvbmZsaWN0IGRldGVjdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgQ29uZmxpY3REZXRlY3Rpb25UeXBlID0gJ1ZFUlNJT04nIHwgJ05PTkUnO1xuXG4vKipcbiAqIENvbW1vbiBwYXJhbWV0ZXJzIGZvciBjb25mbGljdCByZXNvbHV0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbmZsaWN0UmVzb2x1dGlvblN0cmF0ZWd5QmFzZSB7XG4gIC8qKlxuICAgKiBUaGUgY29uZmxpY3QgZGV0ZWN0aW9uIHR5cGUgdXNlZCBmb3IgcmVzb2x1dGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGRldGVjdGlvblR5cGU6IENvbmZsaWN0RGV0ZWN0aW9uVHlwZTtcbn1cblxuLyoqXG4gKiBFbmFibGUgb3B0aW1pc3RpYyBjb25jdXJyZW5jeSBvbiB0aGUgcHJvamVjdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRvbWVyZ2VDb25mbGljdFJlc29sdXRpb25TdHJhdGVneSBleHRlbmRzIENvbmZsaWN0UmVzb2x1dGlvblN0cmF0ZWd5QmFzZSB7XG4gIC8qKlxuICAgKiBUaGlzIGNvbmZsaWN0IHJlc29sdXRpb24gc3RyYXRlZ3kgZXhlY3V0ZXMgYW4gYXV0by1tZXJnZS5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHJlZmVyIHRvIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzeW5jL2xhdGVzdC9kZXZndWlkZS9jb25mbGljdC1kZXRlY3Rpb24tYW5kLXN5bmMuaHRtbCNjb25mbGljdC1kZXRlY3Rpb24tYW5kLXJlc29sdXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGhhbmRsZXJUeXBlOiAnQVVUT01FUkdFJztcbn1cblxuLyoqXG4gKiBFbmFibGUgYXV0b21lcmdlIG9uIHRoZSBwcm9qZWN0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9wdGltaXN0aWNDb25mbGljdFJlc29sdXRpb25TdHJhdGVneSBleHRlbmRzIENvbmZsaWN0UmVzb2x1dGlvblN0cmF0ZWd5QmFzZSB7XG4gIC8qKlxuICAgKiBUaGlzIGNvbmZsaWN0IHJlc29sdXRpb24gc3RyYXRlZ3kgdGhlIF92ZXJzaW9uIHRvIHBlcmZvcm0gb3B0aW1pc3RpYyBjb25jdXJyZW5jeS5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHJlZmVyIHRvIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzeW5jL2xhdGVzdC9kZXZndWlkZS9jb25mbGljdC1kZXRlY3Rpb24tYW5kLXN5bmMuaHRtbCNjb25mbGljdC1kZXRlY3Rpb24tYW5kLXJlc29sdXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGhhbmRsZXJUeXBlOiAnT1BUSU1JU1RJQ19DT05DVVJSRU5DWSc7XG59XG5cbi8qKlxuICogRW5hYmxlIGN1c3RvbSBzeW5jIG9uIHRoZSBwcm9qZWN0LCBwb3dlcmVkIGJ5IGEgbGFtYmRhLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbUNvbmZsaWN0UmVzb2x1dGlvblN0cmF0ZWd5IGV4dGVuZHMgQ29uZmxpY3RSZXNvbHV0aW9uU3RyYXRlZ3lCYXNlIHtcbiAgLyoqXG4gICAqIFRoaXMgY29uZmxpY3QgcmVzb2x1dGlvbiBzdHJhdGVneSB1c2VzIGEgbGFtYmRhIGhhbmRsZXIgdHlwZS5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHJlZmVyIHRvIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzeW5jL2xhdGVzdC9kZXZndWlkZS9jb25mbGljdC1kZXRlY3Rpb24tYW5kLXN5bmMuaHRtbCNjb25mbGljdC1kZXRlY3Rpb24tYW5kLXJlc29sdXRpb25cblxuICAgKi9cbiAgcmVhZG9ubHkgaGFuZGxlclR5cGU6ICdMQU1CREEnO1xuXG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb24gd2hpY2ggd2lsbCBiZSBpbnZva2VkIGZvciBjb25mbGljdCByZXNvbHV0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgY29uZmxpY3RIYW5kbGVyOiBJRnVuY3Rpb247XG59XG5cbi8qKlxuICogQ29uZmxpY3QgUmVzb2x1dGlvbiBTdHJhdGVneSB0byBhcHBseSB0byB0aGUgcHJvamVjdCBvciBhIHBhcnRpY3VsYXIgbW9kZWwuXG4gKi9cbmV4cG9ydCB0eXBlIENvbmZsaWN0UmVzb2x1dGlvblN0cmF0ZWd5ID1cbiAgfCBBdXRvbWVyZ2VDb25mbGljdFJlc29sdXRpb25TdHJhdGVneVxuICB8IE9wdGltaXN0aWNDb25mbGljdFJlc29sdXRpb25TdHJhdGVneVxuICB8IEN1c3RvbUNvbmZsaWN0UmVzb2x1dGlvblN0cmF0ZWd5O1xuXG4vKipcbiAqIFByb2plY3QgbGV2ZWwgY29uZmlndXJhdGlvbiBmb3IgY29uZmxpY3QgcmVzb2x1dGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25mbGljdFJlc29sdXRpb24ge1xuICAvKipcbiAgICogUHJvamVjdC13aWRlIGNvbmZpZyBmb3IgY29uZmxpY3QgcmVzb2x1dGlvbi4gQXBwbGllcyB0byBhbGwgbm9uLW92ZXJyaWRkZW4gbW9kZWxzLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVjdD86IENvbmZsaWN0UmVzb2x1dGlvblN0cmF0ZWd5O1xuXG4gIC8qKlxuICAgKiBNb2RlbC1zcGVjaWZpYyBjb25mbGljdCByZXNvbHV0aW9uIG92ZXJyaWRlcy5cbiAgICovXG4gIHJlYWRvbmx5IG1vZGVscz86IFJlY29yZDxzdHJpbmcsIENvbmZsaWN0UmVzb2x1dGlvblN0cmF0ZWd5Pjtcbn1cblxuLyoqXG4gKiBQYXJhbXMgZXhwb3NlZCB0byBzdXBwb3J0IGNvbmZpZ3VyaW5nIGFuZCBvdmVycmlkaW5nIHBpcGVsaW5lZCBzbG90cy4gVGhpcyBhbGxvd3MgY29uZmlndXJhdGlvbiBvZiB0aGUgdW5kZXJseWluZyBmdW5jdGlvbixcbiAqIGluY2x1ZGluZyB0aGUgcmVxdWVzdCBhbmQgcmVzcG9uc2UgbWFwcGluZyB0ZW1wbGF0ZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnVuY3Rpb25TbG90T3ZlcnJpZGUge1xuICAvKipcbiAgICogT3ZlcnJpZGUgcmVxdWVzdCBtYXBwaW5nIHRlbXBsYXRlIGZvciB0aGUgZnVuY3Rpb24gc2xvdC4gRXhlY3V0ZWQgYmVmb3JlIHRoZSBkYXRhc291cmNlIGlzIGludm9rZWQuXG4gICAqL1xuICByZWFkb25seSByZXF1ZXN0TWFwcGluZ1RlbXBsYXRlPzogTWFwcGluZ1RlbXBsYXRlO1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZSByZXNwb25zZSBtYXBwaW5nIHRlbXBsYXRlIGZvciB0aGUgZnVuY3Rpb24gc2xvdC4gRXhlY3V0ZWQgYWZ0ZXIgdGhlIGRhdGFzb3VyY2UgaXMgaW52b2tlZC5cbiAgICovXG4gIHJlYWRvbmx5IHJlc3BvbnNlTWFwcGluZ1RlbXBsYXRlPzogTWFwcGluZ1RlbXBsYXRlO1xufVxuXG4vKipcbiAqIENvbW1vbiBzbG90IHBhcmFtZXRlcnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnVuY3Rpb25TbG90QmFzZSB7XG4gIC8qKlxuICAgKiBUaGUgZmllbGQgdG8gYXR0YWNoIHRoaXMgZnVuY3Rpb24gdG8gb24gdGhlIEFwaSBkZWZpbml0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgZmllbGROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzbG90IGluZGV4IHRvIHVzZSB0byBpbmplY3QgdGhpcyBpbnRvIHRoZSBleGVjdXRpb24gcGlwZWxpbmUuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHNsb3R0aW5nLCByZWZlciB0byBodHRwczovL2RvY3MuYW1wbGlmeS5hd3MvY2xpL2dyYXBocWwvY3VzdG9tLWJ1c2luZXNzLWxvZ2ljLyNleHRlbmQtYW1wbGlmeS1nZW5lcmF0ZWQtcmVzb2x2ZXJzXG4gICAqL1xuICByZWFkb25seSBzbG90SW5kZXg6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG92ZXJyaWRkZW4gYmVoYXZpb3IgZm9yIHRoaXMgc2xvdC5cbiAgICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uOiBGdW5jdGlvblNsb3RPdmVycmlkZTtcbn1cblxuLyoqXG4gKiBTbG90IHR5cGVzIGZvciBNdXRhdGlvbiBSZXNvbHZlcnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTXV0YXRpb25GdW5jdGlvblNsb3QgZXh0ZW5kcyBGdW5jdGlvblNsb3RCYXNlIHtcbiAgLyoqXG4gICAqIFRoaXMgc2xvdCB0eXBlIGFwcGxpZXMgdG8gdGhlIE11dGF0aW9uIHR5cGUgb24gdGhlIEFwaSBkZWZpbml0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZU5hbWU6ICdNdXRhdGlvbic7XG5cbiAgLyoqXG4gICAqIFRoZSBzbG90IG5hbWUgdG8gaW5qZWN0IHRoaXMgYmVoYXZpb3IgaW50by5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gc2xvdHRpbmcsIHJlZmVyIHRvIGh0dHBzOi8vZG9jcy5hbXBsaWZ5LmF3cy9jbGkvZ3JhcGhxbC9jdXN0b20tYnVzaW5lc3MtbG9naWMvI2V4dGVuZC1hbXBsaWZ5LWdlbmVyYXRlZC1yZXNvbHZlcnNcbiAgICovXG4gIHJlYWRvbmx5IHNsb3ROYW1lOiAnaW5pdCcgfCAncHJlQXV0aCcgfCAnYXV0aCcgfCAncG9zdEF1dGgnIHwgJ3ByZVVwZGF0ZScgfCAncG9zdFVwZGF0ZScgfCAnZmluaXNoJztcbn1cblxuLyoqXG4gKiBTbG90IHR5cGVzIGZvciBRdWVyeSBSZXNvbHZlcnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlGdW5jdGlvblNsb3QgZXh0ZW5kcyBGdW5jdGlvblNsb3RCYXNlIHtcbiAgLyoqXG4gICAqIFRoaXMgc2xvdCB0eXBlIGFwcGxpZXMgdG8gdGhlIFF1ZXJ5IHR5cGUgb24gdGhlIEFwaSBkZWZpbml0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZU5hbWU6ICdRdWVyeSc7XG5cbiAgLyoqXG4gICAqIFRoZSBzbG90IG5hbWUgdG8gaW5qZWN0IHRoaXMgYmVoYXZpb3IgaW50by5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gc2xvdHRpbmcsIHJlZmVyIHRvIGh0dHBzOi8vZG9jcy5hbXBsaWZ5LmF3cy9jbGkvZ3JhcGhxbC9jdXN0b20tYnVzaW5lc3MtbG9naWMvI2V4dGVuZC1hbXBsaWZ5LWdlbmVyYXRlZC1yZXNvbHZlcnNcbiAgICovXG4gIHJlYWRvbmx5IHNsb3ROYW1lOiAnaW5pdCcgfCAncHJlQXV0aCcgfCAnYXV0aCcgfCAncG9zdEF1dGgnIHwgJ3ByZURhdGFMb2FkJyB8ICdwb3N0RGF0YUxvYWQnIHwgJ2ZpbmlzaCc7XG59XG5cbi8qKlxuICogU2xvdCB0eXBlcyBmb3IgU3Vic2NyaXB0aW9uIFJlc29sdmVycy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdWJzY3JpcHRpb25GdW5jdGlvblNsb3QgZXh0ZW5kcyBGdW5jdGlvblNsb3RCYXNlIHtcbiAgLyoqXG4gICAqIFRoaXMgc2xvdCB0eXBlIGFwcGxpZXMgdG8gdGhlIFN1YnNjcmlwdGlvbiB0eXBlIG9uIHRoZSBBcGkgZGVmaW5pdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGVOYW1lOiAnU3Vic2NyaXB0aW9uJztcblxuICAvKipcbiAgICogVGhlIHNsb3QgbmFtZSB0byBpbmplY3QgdGhpcyBiZWhhdmlvciBpbnRvLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBzbG90dGluZywgcmVmZXIgdG8gaHR0cHM6Ly9kb2NzLmFtcGxpZnkuYXdzL2NsaS9ncmFwaHFsL2N1c3RvbS1idXNpbmVzcy1sb2dpYy8jZXh0ZW5kLWFtcGxpZnktZ2VuZXJhdGVkLXJlc29sdmVyc1xuICAgKi9cbiAgcmVhZG9ubHkgc2xvdE5hbWU6ICdpbml0JyB8ICdwcmVBdXRoJyB8ICdhdXRoJyB8ICdwb3N0QXV0aCcgfCAncHJlU3Vic2NyaWJlJztcbn1cblxuLyoqXG4gKiBJbnB1dCBwYXJhbXMgdG8gdW5pcXVlbHkgaWRlbnRpZnkgdGhlIHNsb3Qgd2hpY2ggaXMgYmVpbmcgb3ZlcnJpZGRlbi5cbiAqL1xuZXhwb3J0IHR5cGUgRnVuY3Rpb25TbG90ID0gTXV0YXRpb25GdW5jdGlvblNsb3QgfCBRdWVyeUZ1bmN0aW9uU2xvdCB8IFN1YnNjcmlwdGlvbkZ1bmN0aW9uU2xvdDtcblxuLyoqXG4gKiBTdHJvbmdseSB0eXBlZCBzZXQgb2Ygc2hhcmVkIHBhcmFtZXRlcnMgZm9yIGFsbCB0cmFuc2Zvcm1lcnMsIGFuZCBjb3JlIGxheWVyLlxuICogVGhpcyBpcyBpbnRlbmRlZCB0byByZXBsYWNlIGZlYXR1cmUgZmxhZ3MsIHRvIGVuc3VyZSBwYXJhbSBjb2VyY2lvbiBoYXBwZW5zIGluXG4gKiBhIHNpbmdsZSBsb2NhdGlvbiwgYW5kIGlzbid0IHNwcmVhZCBhcm91bmQgdGhlIHRyYW5zZm9ybWVycywgd2hlcmUgdGhleSBjYW5cbiAqIGhhdmUgZGlmZmVyZW50IGRlZmF1bHQgYmVoYXZpb3JzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zbGF0aW9uQmVoYXZpb3Ige1xuICAvKipcbiAgICogUmVzdG9yZSBwYXJpdHkgdy8gR1FMdjEgQG1vZGVsIHBhcmFtZXRlciBiZWhhdmlvciwgd2hlcmUgc2V0dGluZyBhIHNpbmdsZSBmaWVsZCBkb2Vzbid0IGltcGxpY2l0bHkgc2V0IHRoZSBvdGhlciBmaWVsZHMgdG8gbnVsbC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkRGVlcE1lcmdlRGlyZWN0aXZlQ29uZmlnRGVmYXVsdHM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERpc2FibGUgcmVzb2x2ZXIgZGVkdXBpbmcsIHRoaXMgY2FuIHNvbWV0aW1lcyBjYXVzZSBwcm9ibGVtcyBiZWNhdXNlIGRlZHVwZSBvcmRlcmluZyBpc24ndCBzdGFibGUgdG9kYXksIHdoaWNoIGNhblxuICAgKiBsZWFkIHRvIGNpcmN1bGFyIGRlcGVuZGVuY2llcyBhY3Jvc3Mgc3RhY2tzIGlmIG1vZGVscyBhcmUgcmVvcmRlcmVkLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBkaXNhYmxlUmVzb2x2ZXJEZWR1cGluZzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRW5hYmxpbmcgc2FuZGJveCBtb2RlIHdpbGwgZW5hYmxlIGFwaSBrZXkgYXV0aCBvbiBhbGwgbW9kZWxzIGluIHRoZSB0cmFuc2Zvcm1lZCBzY2hlbWEuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBzYW5kYm94TW9kZUVuYWJsZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuc3VyZSB0aGF0IG9pZGMgYW5kIHVzZXJQb29sIGF1dGggdXNlIHRoZSBgc3ViYCBmaWVsZCBpbiB0aGUgZm9yIHRoZSB1c2VybmFtZSBmaWVsZCwgd2hpY2ggZGlzYWxsb3dzIG5ldyB1c2VycyB3aXRoIHRoZSBzYW1lXG4gICAqIGlkIHRvIGFjY2VzcyBkYXRhIGZyb20gYSBkZWxldGVkIHVzZXIgaW4gdGhlIHBvb2wuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHVzZVN1YlVzZXJuYW1lRm9yRGVmYXVsdElkZW50aXR5Q2xhaW06IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuc3VyZSB0aGF0IHRoZSBvd25lciBmaWVsZCBpcyBzdGlsbCBwb3B1bGF0ZWQgZXZlbiBpZiBhIHN0YXRpYyBpYW0gb3IgZ3JvdXAgYXV0aG9yaXphdGlvbiBhcHBsaWVzLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBwb3B1bGF0ZU93bmVyRmllbGRGb3JTdGF0aWNHcm91cEF1dGg6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGVuYWJsZWQsIGRpc2FibGUgYXBpIGtleSByZXNvdXJjZSBnZW5lcmF0aW9uIGV2ZW4gaWYgc3BlY2lmaWVkIGFzIGFuIGF1dGggcnVsZSBvbiB0aGUgY29uc3RydWN0LlxuICAgKiBUaGlzIGlzIGEgbGVnYWN5IHBhcmFtZXRlciBmcm9tIHRoZSBHcmFwaHFsIFRyYW5zZm9ybWVyIGV4aXN0aW5nIGluIEFtcGxpZnkgQ0xJLCBub3QgcmVjb21tZW5kZWQgdG8gY2hhbmdlLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc3VwcHJlc3NBcGlLZXlHZW5lcmF0aW9uOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBkaXNhYmxlZCwgZ2VuZXJhdGVkIEBpbmRleCBhcyBhbiBMU0kgaW5zdGVhZCBvZiBhIEdTSS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgc2Vjb25kYXJ5S2V5QXNHU0k6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEF1dG9tYXRlIGdlbmVyYXRpb24gb2YgcXVlcnkgbmFtZXMsIGFuZCBhcyBhIHJlc3VsdCBhdHRhY2hpbmcgYWxsIGluZGV4ZXMgYXMgcXVlcmllcyB0byB0aGUgZ2VuZXJhdGVkIEFwaS5cbiAgICogSWYgZW5hYmxlZCwgQGluZGV4IGNhbiBiZSBwcm92aWRlZCBhIG51bGwgbmFtZSBmaWVsZCB0byBkaXNhYmxlIHRoZSBnZW5lcmF0aW9uIG9mIHRoZSBxdWVyeSBvbiB0aGUgQXBpLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVBdXRvSW5kZXhRdWVyeU5hbWVzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgY3VzdG9tIHByaW1hcnkga2V5IHN1cHBvcnQsIHRoZXJlJ3Mgbm8gZ29vZCByZWFzb24gdG8gZGlzYWJsZSB0aGlzIHVubGVzcyB0cnlpbmcgbm90IHRvIHVwZGF0ZSBhIGxlZ2FjeSBhcHAuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHJlc3BlY3RQcmltYXJ5S2V5QXR0cmlidXRlc09uQ29ubmVjdGlvbkZpZWxkOiBib29sZWFuO1xuXG4gIHJlYWRvbmx5IGVuYWJsZVNlYXJjaE5vZGVUb05vZGVFbmNyeXB0aW9uOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIGVuYWJsZWQsIGludGVybmFsIGNmbiBvdXRwdXRzIHdoaWNoIGV4aXN0ZWQgaW4gQW1wbGlmeS1nZW5lcmF0ZWQgYXBwcyB3aWxsIGNvbnRpbnVlIHRvIGJlIGVtaXR0ZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVUcmFuc2Zvcm1lckNmbk91dHB1dHM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBmb2xsb3dpbmcgc2NoZW1hIHVwZGF0ZXMgcmVxdWlyZSByZXBsYWNlbWVudCBvZiB0aGUgdW5kZXJseWluZyBEeW5hbW9EQiB0YWJsZTpcbiAgICpcbiAgICogIC0gUmVtb3Zpbmcgb3IgcmVuYW1pbmcgYSBtb2RlbFxuICAgKiAgLSBNb2RpZnlpbmcgdGhlIHByaW1hcnkga2V5IG9mIGEgbW9kZWxcbiAgICogIC0gTW9kaWZ5aW5nIGEgTG9jYWwgU2Vjb25kYXJ5IEluZGV4IG9mIGEgbW9kZWwgKG9ubHkgYXBwbGllcyB0byBwcm9qZWN0cyB3aXRoIHNlY29uZGFyeUtleUFzR1NJIHR1cm5lZCBvZmYpXG4gICAqXG4gICAqIEFMTCBEQVRBIFdJTEwgQkUgTE9TVCB3aGVuIHRoZSB0YWJsZSByZXBsYWNlbWVudCBoYXBwZW5zLiBXaGVuIGVuYWJsZWQsIGRlc3RydWN0aXZlIHVwZGF0ZXMgYXJlIGFsbG93ZWQuXG4gICAqIFRoaXMgd2lsbCBvbmx5IGFmZmVjdCBEeW5hbW9EQiB0YWJsZXMgd2l0aCBwcm92aXNpb24gc3RyYXRlZ3kgXCJBTVBMSUZZX1RBQkxFXCIuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93RGVzdHJ1Y3RpdmVHcmFwaHFsU2NoZW1hVXBkYXRlczogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhpcyBiZWhhdmlvciB3aWxsIG9ubHkgY29tZSBpbnRvIGVmZmVjdCB3aGVuIGJvdGggXCJhbGxvd0Rlc3RydWN0aXZlR3JhcGhxbFNjaGVtYVVwZGF0ZXNcIiBhbmQgdGhpcyB2YWx1ZSBhcmUgc2V0IHRvIHRydWVcbiAgICogV2hlbiBlbmFibGVkLCBhbnkgR1NJIHVwZGF0ZSBvcGVyYXRpb24gd2lsbCByZXBsYWNlIHRoZSB0YWJsZSBpbnN0ZWFkIG9mIGl0ZXJhdGl2ZSBkZXBsb3ltZW50LCB3aGljaCB3aWxsIFdJUEUgQUxMIEVYSVNUSU5HIERBVEEgYnV0IGNvc3QgbXVjaCBsZXNzIHRpbWUgZm9yIGRlcGxveW1lbnRcbiAgICogVGhpcyB3aWxsIG9ubHkgYWZmZWN0IER5bmFtb0RCIHRhYmxlcyB3aXRoIHByb3Zpc2lvbiBzdHJhdGVneSBcIkFNUExJRllfVEFCTEVcIi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgcmVwbGFjZVRhYmxlVXBvbkdzaVVwZGF0ZTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBIHV0aWxpdHkgaW50ZXJmYWNlIGVxdWl2YWxlbnQgdG8gUGFydGlhbDxUcmFuc2xhdGlvbkJlaGF2aW9yPi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXJ0aWFsVHJhbnNsYXRpb25CZWhhdmlvciB7XG4gIC8qKlxuICAgKiBSZXN0b3JlIHBhcml0eSB3LyBHUUx2MSBAbW9kZWwgcGFyYW1ldGVyIGJlaGF2aW9yLCB3aGVyZSBzZXR0aW5nIGEgc2luZ2xlIGZpZWxkIGRvZXNuJ3QgaW1wbGljaXRseSBzZXQgdGhlIG90aGVyIGZpZWxkcyB0byBudWxsLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBzaG91bGREZWVwTWVyZ2VEaXJlY3RpdmVDb25maWdEZWZhdWx0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERpc2FibGUgcmVzb2x2ZXIgZGVkdXBpbmcsIHRoaXMgY2FuIHNvbWV0aW1lcyBjYXVzZSBwcm9ibGVtcyBiZWNhdXNlIGRlZHVwZSBvcmRlcmluZyBpc24ndCBzdGFibGUgdG9kYXksIHdoaWNoIGNhblxuICAgKiBsZWFkIHRvIGNpcmN1bGFyIGRlcGVuZGVuY2llcyBhY3Jvc3Mgc3RhY2tzIGlmIG1vZGVscyBhcmUgcmVvcmRlcmVkLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBkaXNhYmxlUmVzb2x2ZXJEZWR1cGluZz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsaW5nIHNhbmRib3ggbW9kZSB3aWxsIGVuYWJsZSBhcGkga2V5IGF1dGggb24gYWxsIG1vZGVscyBpbiB0aGUgdHJhbnNmb3JtZWQgc2NoZW1hLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2FuZGJveE1vZGVFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRW5zdXJlIHRoYXQgb2lkYyBhbmQgdXNlclBvb2wgYXV0aCB1c2UgdGhlIGBzdWJgIGZpZWxkIGluIHRoZSBmb3IgdGhlIHVzZXJuYW1lIGZpZWxkLCB3aGljaCBkaXNhbGxvd3MgbmV3IHVzZXJzIHdpdGggdGhlIHNhbWVcbiAgICogaWQgdG8gYWNjZXNzIGRhdGEgZnJvbSBhIGRlbGV0ZWQgdXNlciBpbiB0aGUgcG9vbC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlU3ViVXNlcm5hbWVGb3JEZWZhdWx0SWRlbnRpdHlDbGFpbT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuc3VyZSB0aGF0IHRoZSBvd25lciBmaWVsZCBpcyBzdGlsbCBwb3B1bGF0ZWQgZXZlbiBpZiBhIHN0YXRpYyBpYW0gb3IgZ3JvdXAgYXV0aG9yaXphdGlvbiBhcHBsaWVzLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBwb3B1bGF0ZU93bmVyRmllbGRGb3JTdGF0aWNHcm91cEF1dGg/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBlbmFibGVkLCBkaXNhYmxlIGFwaSBrZXkgcmVzb3VyY2UgZ2VuZXJhdGlvbiBldmVuIGlmIHNwZWNpZmllZCBhcyBhbiBhdXRoIHJ1bGUgb24gdGhlIGNvbnN0cnVjdC5cbiAgICogVGhpcyBpcyBhIGxlZ2FjeSBwYXJhbWV0ZXIgZnJvbSB0aGUgR3JhcGhxbCBUcmFuc2Zvcm1lciBleGlzdGluZyBpbiBBbXBsaWZ5IENMSSwgbm90IHJlY29tbWVuZGVkIHRvIGNoYW5nZS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHN1cHByZXNzQXBpS2V5R2VuZXJhdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGRpc2FibGVkLCBnZW5lcmF0ZWQgQGluZGV4IGFzIGFuIExTSSBpbnN0ZWFkIG9mIGEgR1NJLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBzZWNvbmRhcnlLZXlBc0dTST86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEF1dG9tYXRlIGdlbmVyYXRpb24gb2YgcXVlcnkgbmFtZXMsIGFuZCBhcyBhIHJlc3VsdCBhdHRhY2hpbmcgYWxsIGluZGV4ZXMgYXMgcXVlcmllcyB0byB0aGUgZ2VuZXJhdGVkIEFwaS5cbiAgICogSWYgZW5hYmxlZCwgQGluZGV4IGNhbiBiZSBwcm92aWRlZCBhIG51bGwgbmFtZSBmaWVsZCB0byBkaXNhYmxlIHRoZSBnZW5lcmF0aW9uIG9mIHRoZSBxdWVyeSBvbiB0aGUgQXBpLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVBdXRvSW5kZXhRdWVyeU5hbWVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRW5hYmxlIGN1c3RvbSBwcmltYXJ5IGtleSBzdXBwb3J0LCB0aGVyZSdzIG5vIGdvb2QgcmVhc29uIHRvIGRpc2FibGUgdGhpcyB1bmxlc3MgdHJ5aW5nIG5vdCB0byB1cGRhdGUgYSBsZWdhY3kgYXBwLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSByZXNwZWN0UHJpbWFyeUtleUF0dHJpYnV0ZXNPbkNvbm5lY3Rpb25GaWVsZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGVuYWJsZWQsIHNldCBub2RlVG9Ob2RlRW5jcnlwdGlvbiBvbiB0aGUgc2VhcmNoYWJsZSBkb21haW4gKGlmIG9uZSBleGlzdHMpLiBOb3QgcmVjb21tZW5kZWQgZm9yIHVzZSwgcHJlZmVyXG4gICAqIHRvIHVzZSBgT2JqZWN0LnZhbHVlcyhyZXNvdXJjZXMuYWRkaXRpb25hbFJlc291cmNlc1snQVdTOjpFbGFzdGljc2VhcmNoOjpEb21haW4nXSkuZm9yRWFjaCgoZG9tYWluOiBDZm5Eb21haW4pID0+IHtcbiAgICogICBkb21haW4uTm9kZVRvTm9kZUVuY3J5cHRpb25PcHRpb25zID0geyBFbmFibGVkOiBUcnVlIH07XG4gICAqIH0pO1xuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlU2VhcmNoTm9kZVRvTm9kZUVuY3J5cHRpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIGVuYWJsZWQsIGludGVybmFsIGNmbiBvdXRwdXRzIHdoaWNoIGV4aXN0ZWQgaW4gQW1wbGlmeS1nZW5lcmF0ZWQgYXBwcyB3aWxsIGNvbnRpbnVlIHRvIGJlIGVtaXR0ZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVUcmFuc2Zvcm1lckNmbk91dHB1dHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZm9sbG93aW5nIHNjaGVtYSB1cGRhdGVzIHJlcXVpcmUgcmVwbGFjZW1lbnQgb2YgdGhlIHVuZGVybHlpbmcgRHluYW1vREIgdGFibGU6XG4gICAqXG4gICAqICAtIFJlbW92aW5nIG9yIHJlbmFtaW5nIGEgbW9kZWxcbiAgICogIC0gTW9kaWZ5aW5nIHRoZSBwcmltYXJ5IGtleSBvZiBhIG1vZGVsXG4gICAqICAtIE1vZGlmeWluZyBhIExvY2FsIFNlY29uZGFyeSBJbmRleCBvZiBhIG1vZGVsIChvbmx5IGFwcGxpZXMgdG8gcHJvamVjdHMgd2l0aCBzZWNvbmRhcnlLZXlBc0dTSSB0dXJuZWQgb2ZmKVxuICAgKlxuICAgKiBBTEwgREFUQSBXSUxMIEJFIExPU1Qgd2hlbiB0aGUgdGFibGUgcmVwbGFjZW1lbnQgaGFwcGVucy4gV2hlbiBlbmFibGVkLCBkZXN0cnVjdGl2ZSB1cGRhdGVzIGFyZSBhbGxvd2VkLlxuICAgKiBUaGlzIHdpbGwgb25seSBhZmZlY3QgRHluYW1vREIgdGFibGVzIHdpdGggcHJvdmlzaW9uIHN0cmF0ZWd5IFwiQU1QTElGWV9UQUJMRVwiLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBhbGxvd0Rlc3RydWN0aXZlR3JhcGhxbFNjaGVtYVVwZGF0ZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGlzIGJlaGF2aW9yIHdpbGwgb25seSBjb21lIGludG8gZWZmZWN0IHdoZW4gYm90aCBcImFsbG93RGVzdHJ1Y3RpdmVHcmFwaHFsU2NoZW1hVXBkYXRlc1wiIGFuZCB0aGlzIHZhbHVlIGFyZSBzZXQgdG8gdHJ1ZVxuICAgKiBXaGVuIGVuYWJsZWQsIGFueSBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4IHVwZGF0ZSBvcGVyYXRpb24gd2lsbCByZXBsYWNlIHRoZSB0YWJsZSBpbnN0ZWFkIG9mIGl0ZXJhdGl2ZSBkZXBsb3ltZW50LCB3aGljaCB3aWxsIFdJUEUgQUxMIEVYSVNUSU5HIERBVEEgYnV0IGNvc3QgbXVjaCBsZXNzIHRpbWUgZm9yIGRlcGxveW1lbnRcbiAgICogVGhpcyB3aWxsIG9ubHkgYWZmZWN0IER5bmFtb0RCIHRhYmxlcyB3aXRoIHByb3Zpc2lvbiBzdHJhdGVneSBcIkFNUExJRllfVEFCTEVcIi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgcmVwbGFjZVRhYmxlVXBvbkdzaVVwZGF0ZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogR3JhcGhxbCBBcGkgZGVmaW5pdGlvbiwgd2hpY2ggY2FuIGJlIGltcGxlbWVudGVkIGluIG11bHRpcGxlIHdheXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUFtcGxpZnlHcmFwaHFsRGVmaW5pdGlvbiB7XG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHNjaGVtYSBkZWZpbml0aW9uIGFzIGEgZ3JhcGhxbCBzdHJpbmcsIHdpdGggYW1wbGlmeSBkaXJlY3RpdmVzIGFsbG93ZWQuXG4gICAqIEByZXR1cm5zIHRoZSByZW5kZXJlZCBzY2hlbWEuXG4gICAqL1xuICByZWFkb25seSBzY2hlbWE6IHN0cmluZztcblxuICAvKipcbiAgICogUmV0cmlldmUgYW55IGZ1bmN0aW9uIHNsb3RzIGRlZmluZWQgZXhwbGljaXRseSBpbiB0aGUgQXBpIGRlZmluaXRpb24uXG4gICAqIEByZXR1cm5zIGdlbmVyYXRlZCBmdW5jdGlvbiBzbG90c1xuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb25TbG90czogRnVuY3Rpb25TbG90W107XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIHRoZSByZWZlcmVuY2VzIHRvIGFueSBsYW1iZGEgZnVuY3Rpb25zIHVzZWQgaW4gdGhlIGRlZmluaXRpb24uXG4gICAqIFVzZWZ1bCBmb3Igd2lyaW5nIHRocm91Z2ggYXdzX2xhbWJkYS5GdW5jdGlvbiBjb25zdHJ1Y3RzIGludG8gdGhlIGRlZmluaXRpb24gZGlyZWN0bHksXG4gICAqIGFuZCBnZW5lcmF0ZWQgcmVmZXJlbmNlcyB0byBpbnZva2UgdGhlbS5cbiAgICogQHJldHVybnMgYW55IGxhbWJkYSBmdW5jdGlvbnMsIGtleWVkIGJ5IHRoZWlyIHJlZmVyZW5jZWQgJ25hbWUnIGluIHRoZSBnZW5lcmF0ZWQgc2NoZW1hLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVmZXJlbmNlZExhbWJkYUZ1bmN0aW9ucz86IFJlY29yZDxzdHJpbmcsIElGdW5jdGlvbj47XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIHRoZSBkYXRhc291cmNlIHN0cmF0ZWd5IG1hcHBpbmcuIFRoZSBkZWZhdWx0IHN0cmF0ZWd5IGlzIHRvIHVzZSBEeW5hbW9EQiBmcm9tIENsb3VkRm9ybWF0aW9uLlxuICAgKlxuICAgKiAqKk5PVEUqKiBFeHBsaWNpdGx5IHNwZWNpZnlpbmcgdGhlICdkYXRhU291cmNlU3RyYXRlZ2llcycgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgaW4gcHJldmlldyBhbmQgaXMgbm90IHJlY29tbWVuZGVkIHRvIHVzZSB3aXRoXG4gICAqIHByb2R1Y3Rpb24gc3lzdGVtcy4gRm9yIHByb2R1Y3Rpb24sIHVzZSB0aGUgc3RhdGljIGZhY3RvcnkgbWV0aG9kcyBgZnJvbVN0cmluZ2Agb3IgYGZyb21GaWxlc2AuXG4gICAqIEBleHBlcmltZW50YWxcbiAgICogQHJldHVybnMgZGF0YXNvdXJjZSBzdHJhdGVneSBtYXBwaW5nXG4gICAqL1xuICByZWFkb25seSBkYXRhU291cmNlU3RyYXRlZ2llczogUmVjb3JkPHN0cmluZywgTW9kZWxEYXRhU291cmNlU3RyYXRlZ3k+O1xufVxuXG4vKipcbiAqIEVudHJ5IHJlcHJlc2VudGluZyB0aGUgcmVxdWlyZWQgb3V0cHV0IGZyb20gdGhlIGJhY2tlbmQgZm9yIGNvZGVnZW4gZ2VuZXJhdGUgY29tbWFuZHMgdG8gd29yay5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQmFja2VuZE91dHB1dEVudHJ5IHtcbiAgLyoqXG4gICAqIFRoZSBwcm90b2NvbCB2ZXJzaW9uIGZvciB0aGlzIGJhY2tlbmQgb3V0cHV0LlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RyaW5nLW1hcCBwYXlsb2FkIG9mIGdlbmVyYXRlZCBjb25maWcgdmFsdWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF5bG9hZDogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cblxuLyoqXG4gKiBCYWNrZW5kIG91dHB1dCBzdHJhdGVneSB1c2VkIHRvIHdyaXRlIGNvbmZpZyByZXF1aXJlZCBmb3IgY29kZWdlbiB0YXNrcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQmFja2VuZE91dHB1dFN0b3JhZ2VTdHJhdGVneSB7XG4gIC8qKlxuICAgKiBBZGQgYW4gZW50cnkgdG8gYmFja2VuZCBvdXRwdXQuXG4gICAqIEBwYXJhbSBrZXlOYW1lIHRoZSBrZXlcbiAgICogQHBhcmFtIGJhY2tlbmRPdXRwdXRFbnRyeSB0aGUgcmVjb3JkIHRvIHN0b3JlIGluIHRoZSBiYWNrZW5kIG91dHB1dFxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZXRob2Qtc2lnbmF0dXJlLXN0eWxlXG4gIGFkZEJhY2tlbmRPdXRwdXRFbnRyeShrZXlOYW1lOiBzdHJpbmcsIGJhY2tlbmRPdXRwdXRFbnRyeTogSUJhY2tlbmRPdXRwdXRFbnRyeSk6IHZvaWQ7XG59XG5cbi8qKlxuICogSW5wdXQgcHJvcHMgZm9yIHRoZSBBbXBsaWZ5R3JhcGhxbEFwaSBjb25zdHJ1Y3QuIFNwZWNpZmllcyB3aGF0IHRoZSBpbnB1dCB0byB0cmFuc2Zvcm0gaW50byBhbiBBcGksIGFuZCBjb25maWd1cmF0aW9ucyBmb3JcbiAqIHRoZSB0cmFuc2Zvcm1hdGlvbiBwcm9jZXNzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFtcGxpZnlHcmFwaHFsQXBpUHJvcHMge1xuICAvKipcbiAgICogVGhlIGRlZmluaXRpb24gdG8gdHJhbnNmb3JtIGluIGEgZnVsbCBBcGkuXG4gICAqIENhbiBiZSBjb25zdHJ1Y3RlZCB2aWEgdGhlIEFtcGxpZnlHcmFwaHFsRGVmaW5pdGlvbiBjbGFzcy5cbiAgICovXG4gIHJlYWRvbmx5IGRlZmluaXRpb246IElBbXBsaWZ5R3JhcGhxbERlZmluaXRpb247XG5cbiAgLyoqXG4gICAqIE5hbWUgdG8gYmUgdXNlZCBmb3IgdGhlIEFwcFN5bmMgQXBpLlxuICAgKiBEZWZhdWx0OiBjb25zdHJ1Y3QgaWQuXG4gICAqL1xuICByZWFkb25seSBhcGlOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXF1aXJlZCBhdXRoIG1vZGVzIGZvciB0aGUgQXBpLiBUaGlzIG9iamVjdCBtdXN0IGJlIGEgc3VwZXJzZXQgb2YgdGhlIGNvbmZpZ3VyZWQgYXV0aCBwcm92aWRlcnMgaW4gdGhlIEFwaSBkZWZpbml0aW9uLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcmVmZXIgdG8gaHR0cHM6Ly9kb2NzLmFtcGxpZnkuYXdzL2NsaS9ncmFwaHFsL2F1dGhvcml6YXRpb24tcnVsZXMvXG4gICAqL1xuICByZWFkb25seSBhdXRob3JpemF0aW9uTW9kZXM6IEF1dGhvcml6YXRpb25Nb2RlcztcblxuICAvKipcbiAgICogTGFtYmRhIGZ1bmN0aW9ucyByZWZlcmVuY2VkIGluIHRoZSBkZWZpbml0aW9ucydzIEBmdW5jdGlvbiBkaXJlY3RpdmVzLiBUaGUga2V5cyBvZiB0aGlzIG9iamVjdCBhcmUgZXhwZWN0ZWQgdG8gYmUgdGhlXG4gICAqIGZ1bmN0aW9uIG5hbWUgcHJvdmlkZWQgaW4gdGhlIGRlZmluaXRpb24sIGFuZCB2YWx1ZSBpcyB0aGUgZnVuY3Rpb24gdGhhdCBuYW1lIHJlZmVycyB0by4gSWYgYSBuYW1lIGlzIG5vdCBmb3VuZCBpbiB0aGlzXG4gICAqIG1hcCwgdGhlbiBpdCBpcyBpbnRlcnByZXRlZCBhcyB0aGUgYGZ1bmN0aW9uTmFtZWAsIGFuZCBhbiBhcm4gd2lsbCBiZSBjb25zdHJ1Y3RlZCB1c2luZyB0aGUgY3VycmVudCBhd3MgYWNjb3VudCBhbmQgcmVnaW9uXG4gICAqIChvciBvdmVycmlkZGVuIHZhbHVlcywgaWYgc2V0IGluIHRoZSBkaXJlY3RpdmUpLlxuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb25OYW1lTWFwPzogUmVjb3JkPHN0cmluZywgSUZ1bmN0aW9uPjtcblxuICAvKipcbiAgICogQ29uZmlndXJlIGNvbmZsaWN0IHJlc29sdXRpb24gb24gdGhlIEFwaSwgd2hpY2ggaXMgcmVxdWlyZWQgdG8gZW5hYmxlIERhdGFTdG9yZSBBcGkgZnVuY3Rpb25hbGl0eS5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHJlZmVyIHRvIGh0dHBzOi8vZG9jcy5hbXBsaWZ5LmF3cy9saWIvZGF0YXN0b3JlL2dldHRpbmctc3RhcnRlZC9xL3BsYXRmb3JtL2pzL1xuICAgKi9cbiAgcmVhZG9ubHkgY29uZmxpY3RSZXNvbHV0aW9uPzogQ29uZmxpY3RSZXNvbHV0aW9uO1xuXG4gIC8qKlxuICAgKiBTdGFja01hcHBpbmdzIG92ZXJyaWRlIHRoZSBhc3NpZ25lZCBuZXN0ZWQgc3RhY2sgb24gYSBwZXItcmVzb3VyY2UgYmFzaXMuIE9ubHkgYXBwbGllcyB0byByZXNvbHZlcnMsIGFuZCB0YWtlcyB0aGUgZm9ybVxuICAgKiB7IDxsb2dpY2FsSWQ+OiA8c3RhY2tOYW1lPiB9XG4gICAqIEl0IGlzIG5vdCByZWNvbW1lbmRlZCB0byB1c2UgdGhpcyBwYXJhbWV0ZXIgdW5sZXNzIHlvdSBhcmUgZW5jb3VudGVyaW5nIHN0YWNrIHJlc291cmNlIGNvdW50IGxpbWl0cywgYW5kIHdvcnRoIG5vdGluZyB0aGF0XG4gICAqIGFmdGVyIGluaXRpYWwgZGVwbG95bWVudCBBcHBTeW5jIHJlc29sdmVycyBjYW5ub3QgYmUgbW92ZWQgYmV0d2VlbiBuZXN0ZWQgc3RhY2tzLCB0aGV5IHdpbGwgbmVlZCB0byBiZSByZW1vdmVkIGZyb20gdGhlIGFwcCxcbiAgICogdGhlbiByZS1hZGRlZCBmcm9tIGEgbmV3IHN0YWNrLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tNYXBwaW5ncz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlcyBmb3IgYSBnaXZlbiBzbG90IGluIHRoZSBnZW5lcmF0ZWQgcmVzb2x2ZXIgcGlwZWxpbmVzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB3aGF0IHNsb3RzIGFyZSBhdmFpbGFibGUsXG4gICAqIHJlZmVyIHRvIGh0dHBzOi8vZG9jcy5hbXBsaWZ5LmF3cy9jbGkvZ3JhcGhxbC9jdXN0b20tYnVzaW5lc3MtbG9naWMvI292ZXJyaWRlLWFtcGxpZnktZ2VuZXJhdGVkLXJlc29sdmVycy5cbiAgICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uU2xvdHM/OiBGdW5jdGlvblNsb3RbXTtcblxuICAvKipcbiAgICogUHJvdmlkZSBhIGxpc3Qgb2YgYWRkaXRpb25hbCBjdXN0b20gdHJhbnNmb3JtZXJzIHdoaWNoIGFyZSBpbmplY3RlZCBpbnRvIHRoZSB0cmFuc2Zvcm0gcHJvY2Vzcy5cbiAgICogVGhlc2UgY3VzdG9tIHRyYW5zZm9ybWVycyBtdXN0IGJlIGltcGxlbWVudGVkIHdpdGggYXdzLWNkay1saWIgPj0yLjgwLjAsIGFuZCBAYXdzLWFtcGxpZnkvZ3JhcGhxbC10cmFuc2Zvcm1lci1jb3JlID49IDIuMS4xXG4gICAqIEBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHRyYW5zZm9ybWVyUGx1Z2lucz86IGFueVtdO1xuXG4gIC8qKlxuICAgKiBJZiB1c2luZyBwcmVkaWN0aW9ucywgYSBidWNrZXQgbXVzdCBiZSBwcm92aWRlZCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gc2VhcmNoIGZvciBhc3NldHMuXG4gICAqL1xuICByZWFkb25seSBwcmVkaWN0aW9uc0J1Y2tldD86IElCdWNrZXQ7XG5cbiAgLyoqXG4gICAqIFRoaXMgcmVwbGFjZXMgZmVhdHVyZSBmbGFncyBmcm9tIHRoZSBBcGkgY29uc3RydWN0LCBmb3IgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvbiB3aGF0IHRoZXNlIHBhcmFtZXRlcnMgZG8sXG4gICAqIHJlZmVyIHRvIGh0dHBzOi8vZG9jcy5hbXBsaWZ5LmF3cy9jbGkvcmVmZXJlbmNlL2ZlYXR1cmUtZmxhZ3MvI2dyYXBoUUxUcmFuc2Zvcm1lclxuICAgKi9cbiAgcmVhZG9ubHkgdHJhbnNsYXRpb25CZWhhdmlvcj86IFBhcnRpYWxUcmFuc2xhdGlvbkJlaGF2aW9yO1xuXG4gIC8qKlxuICAgKiBTdHJhdGVneSB0byBzdG9yZSBjb25zdHJ1Y3Qgb3V0cHV0cy4gSWYgbm8gb3V0cHV0U3RvcmFnZVN0cmF0ZWdleSBpcyBwcm92aWRlZCBhIGRlZmF1bHQgc3RyYXRlZ3kgd2lsbCBiZSB1c2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0U3RvcmFnZVN0cmF0ZWd5PzogSUJhY2tlbmRPdXRwdXRTdG9yYWdlU3RyYXRlZ3k7XG59XG5cbi8qKlxuICogTDEgQ0RLIHJlc291cmNlcyBmcm9tIHRoZSBBcGkgd2hpY2ggd2VyZSBnZW5lcmF0ZWQgYXMgcGFydCBvZiB0aGUgdHJhbnNmb3JtLlxuICogVGhlc2UgYXJlIHBvdGVudGlhbGx5IHN0b3JlZCB1bmRlciBuZXN0ZWQgc3RhY2tzLCBidXQgcHJlc2VudGVkIG9yZ2FuaXplZCBieSB0eXBlIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQW1wbGlmeUdyYXBocWxBcGlDZm5SZXNvdXJjZXMge1xuICAvKipcbiAgICogVGhlIEdlbmVyYXRlZCBBcHBTeW5jIEFwaSBMMSBSZXNvdXJjZVxuICAgKi9cbiAgcmVhZG9ubHkgY2ZuR3JhcGhxbEFwaTogQ2ZuR3JhcGhRTEFwaTtcblxuICAvKipcbiAgICogVGhlIEdlbmVyYXRlZCBBcHBTeW5jIFNjaGVtYSBMMSBSZXNvdXJjZVxuICAgKi9cbiAgcmVhZG9ubHkgY2ZuR3JhcGhxbFNjaGVtYTogQ2ZuR3JhcGhRTFNjaGVtYTtcblxuICAvKipcbiAgICogVGhlIEdlbmVyYXRlZCBBcHBTeW5jIEFwaSBLZXkgTDEgUmVzb3VyY2VcbiAgICovXG4gIHJlYWRvbmx5IGNmbkFwaUtleT86IENmbkFwaUtleTtcblxuICAvKipcbiAgICogVGhlIEdlbmVyYXRlZCBBcHBTeW5jIFJlc29sdmVyIEwxIFJlc291cmNlcywga2V5ZWQgYnkgbG9naWNhbElkLlxuICAgKi9cbiAgcmVhZG9ubHkgY2ZuUmVzb2x2ZXJzOiBSZWNvcmQ8c3RyaW5nLCBDZm5SZXNvbHZlcj47XG5cbiAgLyoqXG4gICAqIFRoZSBHZW5lcmF0ZWQgQXBwU3luYyBGdW5jdGlvbiBMMSBSZXNvdXJjZXMsIGtleWVkIGJ5IGxvZ2ljYWxJZC5cbiAgICovXG4gIHJlYWRvbmx5IGNmbkZ1bmN0aW9uQ29uZmlndXJhdGlvbnM6IFJlY29yZDxzdHJpbmcsIENmbkZ1bmN0aW9uQ29uZmlndXJhdGlvbj47XG5cbiAgLyoqXG4gICAqIFRoZSBHZW5lcmF0ZWQgQXBwU3luYyBEYXRhU291cmNlIEwxIFJlc291cmNlcywga2V5ZWQgYnkgbG9naWNhbElkLlxuICAgKi9cbiAgcmVhZG9ubHkgY2ZuRGF0YVNvdXJjZXM6IFJlY29yZDxzdHJpbmcsIENmbkRhdGFTb3VyY2U+O1xuXG4gIC8qKlxuICAgKiBUaGUgR2VuZXJhdGVkIER5bmFtb0RCIFRhYmxlIEwxIFJlc291cmNlcywga2V5ZWQgYnkgbG9naWNhbElkLlxuICAgKi9cbiAgcmVhZG9ubHkgY2ZuVGFibGVzOiBSZWNvcmQ8c3RyaW5nLCBDZm5UYWJsZT47XG5cbiAgLyoqXG4gICAqIFRoZSBHZW5lcmF0ZWQgSUFNIFJvbGUgTDEgUmVzb3VyY2VzLCBrZXllZCBieSBsb2dpY2FsSWQuXG4gICAqL1xuICByZWFkb25seSBjZm5Sb2xlczogUmVjb3JkPHN0cmluZywgQ2ZuUm9sZT47XG5cbiAgLyoqXG4gICAqIFRoZSBHZW5lcmF0ZWQgTGFtYmRhIEZ1bmN0aW9uIEwxIFJlc291cmNlcywga2V5ZWQgYnkgZnVuY3Rpb24gbmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IGNmbkZ1bmN0aW9uczogUmVjb3JkPHN0cmluZywgQ2ZuRnVuY3Rpb24+O1xuXG4gIC8qKlxuICAgKiBSZW1haW5pbmcgTDEgcmVzb3VyY2VzIGdlbmVyYXRlZCwga2V5ZWQgYnkgbG9naWNhbElkLlxuICAgKi9cbiAgcmVhZG9ubHkgYWRkaXRpb25hbENmblJlc291cmNlczogUmVjb3JkPHN0cmluZywgQ2ZuUmVzb3VyY2U+O1xufVxuXG4vKipcbiAqIEFjY2Vzc2libGUgcmVzb3VyY2VzIGZyb20gdGhlIEFwaSB3aGljaCB3ZXJlIGdlbmVyYXRlZCBhcyBwYXJ0IG9mIHRoZSB0cmFuc2Zvcm0uXG4gKiBUaGVzZSBhcmUgcG90ZW50aWFsbHkgc3RvcmVkIHVuZGVyIG5lc3RlZCBzdGFja3MsIGJ1dCBwcmVzZW50ZWQgb3JnYW5pemVkIGJ5IHR5cGUgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbXBsaWZ5R3JhcGhxbEFwaVJlc291cmNlcyB7XG4gIC8qKlxuICAgKiBUaGUgR2VuZXJhdGVkIEFwcFN5bmMgQXBpIEwyIFJlc291cmNlLCBpbmNsdWRlcyB0aGUgU2NoZW1hLlxuICAgKi9cbiAgcmVhZG9ubHkgZ3JhcGhxbEFwaTogSUdyYXBocWxBcGk7XG5cbiAgLyoqXG4gICAqIFRoZSBHZW5lcmF0ZWQgRHluYW1vREIgVGFibGUgTDIgUmVzb3VyY2VzLCBrZXllZCBieSBsb2dpY2FsSWQuXG4gICAqL1xuICByZWFkb25seSB0YWJsZXM6IFJlY29yZDxzdHJpbmcsIElUYWJsZT47XG5cbiAgLyoqXG4gICAqIFRoZSBHZW5lcmF0ZWQgQW1wbGlmeSBEeW5hbW9EYiBUYWJsZSB3cmFwcGVkIGlmIHByb2R1Y2VkLCBrZXllZCBieSBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgYW1wbGlmeUR5bmFtb0RiVGFibGVzOiBSZWNvcmQ8c3RyaW5nLCBBbXBsaWZ5RHluYW1vRGJUYWJsZVdyYXBwZXI+O1xuXG4gIC8qKlxuICAgKiBUaGUgR2VuZXJhdGVkIElBTSBSb2xlIEwyIFJlc291cmNlcywga2V5ZWQgYnkgbG9naWNhbElkLlxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZXM6IFJlY29yZDxzdHJpbmcsIElSb2xlPjtcblxuICAvKipcbiAgICogVGhlIEdlbmVyYXRlZCBMYW1iZGEgRnVuY3Rpb24gTDEgUmVzb3VyY2VzLCBrZXllZCBieSBmdW5jdGlvbiBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBJRnVuY3Rpb24+O1xuXG4gIC8qKlxuICAgKiBMMSBDZm4gUmVzb3VyY2VzLCBmb3Igd2hlbiBkaXBwaW5nIGRvd24gYSBsZXZlbCBvZiBhYnN0cmFjdGlvbiBpcyBkZXNpcmFibGUuXG4gICAqL1xuICByZWFkb25seSBjZm5SZXNvdXJjZXM6IEFtcGxpZnlHcmFwaHFsQXBpQ2ZuUmVzb3VyY2VzO1xuXG4gIC8qKlxuICAgKiBOZXN0ZWQgU3RhY2tzIGdlbmVyYXRlZCBieSB0aGUgQXBpIENvbnN0cnVjdC5cbiAgICovXG4gIHJlYWRvbmx5IG5lc3RlZFN0YWNrczogUmVjb3JkPHN0cmluZywgTmVzdGVkU3RhY2s+O1xufVxuXG4vKipcbiAqIElucHV0IHR5cGUgcHJvcGVydGllcyB3aGVuIGFkZGluZyBhIG5ldyBhcHBzeW5jLkFwcHN5bmNGdW5jdGlvbiB0byB0aGUgZ2VuZXJhdGVkIEFQSS5cbiAqIFRoaXMgaXMgZXF1aXZhbGVudCB0byB0aGUgT21pdDxhcHBzeW5jLkFwcHN5bmNGdW5jdGlvblByb3BzLCAnYXBpJz4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWRkRnVuY3Rpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiB0aGUgZGF0YSBzb3VyY2UgbGlua2VkIHRvIHRoaXMgQXBwU3luYyBGdW5jdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGF0YVNvdXJjZTogQmFzZURhdGFTb3VyY2U7XG5cbiAgLyoqXG4gICAqIHRoZSBuYW1lIG9mIHRoZSBBcHBTeW5jIEZ1bmN0aW9uXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIHRoZSBkZXNjcmlwdGlvbiBmb3IgdGhpcyBBcHBTeW5jIEZ1bmN0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiB0aGUgcmVxdWVzdCBtYXBwaW5nIHRlbXBsYXRlIGZvciB0aGUgQXBwU3luYyBGdW5jdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHJlcXVlc3QgbWFwcGluZyB0ZW1wbGF0ZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWVzdE1hcHBpbmdUZW1wbGF0ZT86IE1hcHBpbmdUZW1wbGF0ZTtcblxuICAvKipcbiAgICogdGhlIHJlc3BvbnNlIG1hcHBpbmcgdGVtcGxhdGUgZm9yIHRoZSBBcHBTeW5jIEZ1bmN0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gcmVzcG9uc2UgbWFwcGluZyB0ZW1wbGF0ZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVzcG9uc2VNYXBwaW5nVGVtcGxhdGU/OiBNYXBwaW5nVGVtcGxhdGU7XG5cbiAgLyoqXG4gICAqIFRoZSBmdW5jdGlvbnMgcnVudGltZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGZ1bmN0aW9uIHJ1bnRpbWUsIFZUTCBtYXBwaW5nIHRlbXBsYXRlcyB1c2VkXG4gICAqL1xuICByZWFkb25seSBydW50aW1lPzogRnVuY3Rpb25SdW50aW1lO1xuXG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb24gY29kZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGNvZGUgaXMgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgY29kZT86IENvZGU7XG59XG5cbi8qKlxuICogQWxsIGtub3duIE1vZGVsRGF0YVNvdXJjZVN0cmF0ZWdpZXMuIENvbmNyZXRlIHN0cmF0ZWdpZXMgdmFyeSB3aWRlbHkgaW4gdGhlaXIgcmVxdWlyZW1lbnRzIGFuZCBpbXBsZW1lbnRhdGlvbnMuXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbmV4cG9ydCB0eXBlIE1vZGVsRGF0YVNvdXJjZVN0cmF0ZWd5ID1cbiAgfCBEZWZhdWx0RHluYW1vRGJNb2RlbERhdGFTb3VyY2VTdHJhdGVneVxuICB8IEFtcGxpZnlEeW5hbW9EYk1vZGVsRGF0YVNvdXJjZVN0cmF0ZWd5XG4gIHwgU1FMTGFtYmRhTW9kZWxEYXRhU291cmNlU3RyYXRlZ3k7XG5cbi8vIFRPRE86IE1ha2UgdGhpcyB0aGUgc291cmNlIG9mIHRydXRoIGZvciBkYXRhYmFzZSB0eXBlIGRlZmluaXRpb25zIHVzZWQgdGhyb3VnaG91dCB0aGUgY29uc3RydWN0ICYgdHJhbnNmb3JtZXJcbmV4cG9ydCB0eXBlIE1vZGVsRGF0YVNvdXJjZVN0cmF0ZWd5RGJUeXBlID0gJ0RZTkFNT0RCJztcblxuLyoqXG4gKiBVc2UgZGVmYXVsdCBDbG91ZEZvcm1hdGlvbiB0eXBlICdBV1M6OkR5bmFtb0RCOjpUYWJsZScgdG8gcHJvdmlzaW9uIHRhYmxlLlxuICogQGV4cGVyaW1lbnRhbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmF1bHREeW5hbW9EYk1vZGVsRGF0YVNvdXJjZVN0cmF0ZWd5IHtcbiAgcmVhZG9ubHkgZGJUeXBlOiAnRFlOQU1PREInO1xuICByZWFkb25seSBwcm92aXNpb25TdHJhdGVneTogJ0RFRkFVTFQnO1xufVxuXG4vKipcbiAqIFVzZSBjdXN0b20gcmVzb3VyY2UgdHlwZSAnQ3VzdG9tOjpBbXBsaWZ5RHluYW1vREJUYWJsZScgdG8gcHJvdmlzaW9uIHRhYmxlLlxuICogQGV4cGVyaW1lbnRhbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFtcGxpZnlEeW5hbW9EYk1vZGVsRGF0YVNvdXJjZVN0cmF0ZWd5IHtcbiAgcmVhZG9ubHkgZGJUeXBlOiAnRFlOQU1PREInO1xuICByZWFkb25seSBwcm92aXNpb25TdHJhdGVneTogJ0FNUExJRllfVEFCTEUnO1xufVxuXG4vKipcbiAqIEEgc3RyYXRlZ3kgdGhhdCBjcmVhdGVzIGEgTGFtYmRhIHRvIGNvbm5lY3QgdG8gYSBwcmUtZXhpc3RpbmcgU1FMIHRhYmxlIHRvIHJlc29sdmUgbW9kZWwgZGF0YS5cbiAqXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU1FMTGFtYmRhTW9kZWxEYXRhU291cmNlU3RyYXRlZ3kge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHN0cmF0ZWd5LiBUaGlzIHdpbGwgYmUgdXNlZCB0byBuYW1lIHRoZSBBcHBTeW5jIERhdGFTb3VyY2UgaXRzZWxmLCBwbHVzIGFueSBhc3NvY2lhdGVkIHJlc291cmNlcyBsaWtlIHJlc29sdmVyIExhbWJkYXMuXG4gICAqIFRoaXMgbmFtZSBtdXN0IGJlIHVuaXF1ZSBhY3Jvc3MgYWxsIHNjaGVtYSBkZWZpbml0aW9ucyBpbiBhIEdyYXBoUUwgQVBJLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiB0aGUgU1FMIGRhdGFiYXNlIHVzZWQgdG8gcHJvY2VzcyBtb2RlbCBvcGVyYXRpb25zIGZvciB0aGlzIGRlZmluaXRpb24uXG4gICAqL1xuICByZWFkb25seSBkYlR5cGU6ICdNWVNRTCcgfCAnUE9TVEdSRVMnO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFyYW1ldGVycyB0aGUgTGFtYmRhIGRhdGEgc291cmNlIHdpbGwgdXNlIHRvIGNvbm5lY3QgdG8gdGhlIGRhdGFiYXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZGJDb25uZWN0aW9uQ29uZmlnOiBTcWxNb2RlbERhdGFTb3VyY2VEYkNvbm5lY3Rpb25Db25maWc7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmF0aW9uIG9mIHRoZSBWUEMgaW50byB3aGljaCB0byBpbnN0YWxsIHRoZSBMYW1iZGEuXG4gICAqL1xuICByZWFkb25seSB2cGNDb25maWd1cmF0aW9uPzogVnBjQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gU1FMIHN0YXRlbWVudHMuIFRoZSBrZXkgaXMgdGhlIHZhbHVlIG9mIHRoZSBgcmVmZXJlbmNlc2AgYXR0cmlidXRlIG9mIHRoZSBgQHNxbGAgZGlyZWN0aXZlIGluIHRoZSBgc2NoZW1hYDsgdGhlIHZhbHVlIGlzIHRoZSBTUUxcbiAgICogdG8gYmUgZXhlY3V0ZWQuXG4gICAqL1xuICByZWFkb25seSBjdXN0b21TcWxTdGF0ZW1lbnRzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuICAvKipcbiAgICogQW4gb3B0aW9uYWwgb3ZlcnJpZGUgZm9yIHRoZSBkZWZhdWx0IFNRTCBMYW1iZGEgTGF5ZXJcbiAgICovXG4gIHJlYWRvbmx5IHNxbExhbWJkYUxheWVyTWFwcGluZz86IFNRTExhbWJkYUxheWVyTWFwcGluZztcblxuICAvKipcbiAgICogVGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBwcm92aXNpb25lZCBjb25jdXJyZW5jeSBvZiB0aGUgTGFtYmRhLlxuICAgKi9cbiAgcmVhZG9ubHkgc3FsTGFtYmRhUHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZz86IFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWc7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvZiB0aGUgVlBDIGluIHdoaWNoIHRvIGluc3RhbGwgYSBMYW1iZGEgdG8gcmVzb2x2ZSBxdWVyaWVzIGFnYWluc3QgYSBTUUwtYmFzZWQgZGF0YSBzb3VyY2UuIFRoZSBTUUwgTGFtYmRhIHdpbGwgYmUgZGVwbG95ZWRcbiAqIGludG8gdGhlIHNwZWNpZmllZCBWUEMsIHN1Ym5ldHMsIGFuZCBzZWN1cml0eSBncm91cHMuIFRoZSBzcGVjaWZpZWQgc3VibmV0cyBhbmQgc2VjdXJpdHkgZ3JvdXBzIG11c3QgYmUgaW4gdGhlIHNhbWUgVlBDLiBUaGUgVlBDIG11c3RcbiAqIGhhdmUgYXQgbGVhc3Qgb25lIHN1Ym5ldC4gVGhlIGNvbnN0cnVjdCB3aWxsIGFsc28gY3JlYXRlIFZQQyBzZXJ2aWNlIGVuZHBvaW50cyBpbiB0aGUgc3BlY2lmaWVkIHN1Ym5ldHMsIGFzIHdlbGwgYXMgaW5ib3VuZCBzZWN1cml0eVxuICogcnVsZXMsIHRvIGFsbG93IHRyYWZmaWMgb24gcG9ydCA0NDMgd2l0aGluIGVhY2ggc2VjdXJpdHkgZ3JvdXAuIFRoaXMgYWxsb3dzIHRoZSBMYW1iZGEgdG8gcmVhZCBkYXRhYmFzZSBjb25uZWN0aW9uIGluZm9ybWF0aW9uIGZyb21cbiAqIFNlY3VyZSBTeXN0ZW1zIE1hbmFnZXIuXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVnBjQ29uZmlnIHtcbiAgLyoqIFRoZSBWUEMgdG8gaW5zdGFsbCB0aGUgTGFtYmRhIGRhdGEgc291cmNlIGluLiAqL1xuICByZWFkb25seSB2cGNJZDogc3RyaW5nO1xuXG4gIC8qKiBUaGUgc2VjdXJpdHkgZ3JvdXBzIHRvIGluc3RhbGwgdGhlIExhbWJkYSBkYXRhIHNvdXJjZSBpbi4gKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlHcm91cElkczogc3RyaW5nW107XG5cbiAgLyoqIFRoZSBzdWJuZXRzIHRvIGluc3RhbGwgdGhlIExhbWJkYSBkYXRhIHNvdXJjZSBpbiwgb25lIHBlciBhdmFpbGFiaWxpdHkgem9uZS4gKi9cbiAgcmVhZG9ubHkgc3VibmV0QXZhaWxhYmlsaXR5Wm9uZUNvbmZpZzogU3VibmV0QXZhaWxhYmlsaXR5Wm9uZVtdO1xufVxuXG4vKipcbiAqIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgcHJvdmlzaW9uZWQgY29uY3VycmVuY3kgb2YgdGhlIExhbWJkYS5cbiAqIEBleHBlcmltZW50YWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnIHtcbiAgLyoqIFRoZSBhbW91bnQgb2YgcHJvdmlzaW9uZWQgY29uY3VycmVuY3kgdG8gYWxsb2NhdGUuICoqL1xuICByZWFkb25seSBwcm92aXNpb25lZENvbmN1cnJlbnRFeGVjdXRpb25zOiBudW1iZXI7XG59XG5cbi8qKlxuICogU3VibmV0IGNvbmZpZ3VyYXRpb24gZm9yIFZQQyBlbmRwb2ludHMgdXNlZCBieSBhIExhbWJkYSByZXNvbHZlciBmb3IgYSBTUUwtYmFzZWQgZGF0YSBzb3VyY2UuIEFsdGhvdWdoIGl0IGlzIHBvc3NpYmxlIHRvIGNyZWF0ZSBtdWx0aXBsZVxuICogc3VibmV0cyBpbiBhIHNpbmdsZSBhdmFpbGFiaWxpdHkgem9uZSwgVlBDIHNlcnZpY2UgZW5kcG9pbnRzIG1heSBvbmx5IGJlIGRlcGxveWVkIHRvIGEgc2luZ2xlIHN1Ym5ldCBpbiBhIGdpdmVuIGF2YWlsYWJpbGl0eSB6b25lLiBUaGlzXG4gKiBzdHJ1Y3R1cmUgZW5zdXJlcyB0aGF0IHRoZSBMYW1iZGEgZnVuY3Rpb24gYW5kIFZQQyBzZXJ2aWNlIGVuZHBvaW50cyBhcmUgbXV0dWFsbHkgY29uc2lzdGVudC5cbiAqIEBleHBlcmltZW50YWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdWJuZXRBdmFpbGFiaWxpdHlab25lIHtcbiAgLyoqIFRoZSBzdWJuZXQgSUQgdG8gaW5zdGFsbCB0aGUgTGFtYmRhIGRhdGEgc291cmNlIGluLiAqL1xuICByZWFkb25seSBzdWJuZXRJZDogc3RyaW5nO1xuXG4gIC8qKiBUaGUgYXZhaWxhYmlsaXR5IHpvbmUgb2YgdGhlIHN1Ym5ldC4gKi9cbiAgcmVhZG9ubHkgYXZhaWxhYmlsaXR5Wm9uZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIE1hcHMgYSBnaXZlbiBBV1MgcmVnaW9uIHRvIHRoZSBTUUwgTGFtYmRhIGxheWVyIHZlcnNpb24gQVJOIGZvciB0aGF0IHJlZ2lvbi4gYGtleWAgaXMgdGhlIHJlZ2lvbjsgdGhlIGB2YWx1ZWAgaXMgdGhlIExhbWJkYSBMYXllciB2ZXJzaW9uXG4gKiBBUk5cbiAqL1xuZXhwb3J0IHR5cGUgU1FMTGFtYmRhTGF5ZXJNYXBwaW5nID0gUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuLyoqXG4gKiBUaGUgU2VjdXJlIFN5c3RlbXMgTWFuYWdlciBwYXJhbWV0ZXIgcGF0aHMgdGhlIExhbWJkYSBkYXRhIHNvdXJjZSB3aWxsIHVzZSB0byBjb25uZWN0IHRvIHRoZSBkYXRhYmFzZS5cbiAqXG4gKiBUaGVzZSBwYXJhbWV0ZXJzIGFyZSByZXRyaWV2ZWQgZnJvbSBTZWN1cmUgU3lzdGVtcyBNYW5hZ2VyIGluIHRoZSBzYW1lIHJlZ2lvbiBhcyB0aGUgTGFtYmRhLlxuICogQGV4cGVyaW1lbnRhbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNxbE1vZGVsRGF0YVNvdXJjZURiQ29ubmVjdGlvbkNvbmZpZyB7XG4gIC8qKiBUaGUgU2VjdXJlIFN5c3RlbXMgTWFuYWdlciBwYXJhbWV0ZXIgY29udGFpbmluZyB0aGUgaG9zdG5hbWUgb2YgdGhlIGRhdGFiYXNlLiBGb3IgUkRTLWJhc2VkIFNRTCBkYXRhIHNvdXJjZXMsIHRoaXMgY2FuIGJlIHRoZSBob3N0bmFtZVxuICAgKiBvZiBhIGRhdGFiYXNlIHByb3h5LCBjbHVzdGVyLCBvciBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGhvc3RuYW1lU3NtUGF0aDogc3RyaW5nO1xuXG4gIC8qKiBUaGUgU2VjdXJlIFN5c3RlbXMgTWFuYWdlciBwYXJhbWV0ZXIgY29udGFpbmluZyB0aGUgcG9ydCBudW1iZXIgb2YgdGhlIGRhdGFiYXNlIHByb3h5LCBjbHVzdGVyLCBvciBpbnN0YW5jZS4gKi9cbiAgcmVhZG9ubHkgcG9ydFNzbVBhdGg6IHN0cmluZztcblxuICAvKiogVGhlIFNlY3VyZSBTeXN0ZW1zIE1hbmFnZXIgcGFyYW1ldGVyIGNvbnRhaW5pbmcgdGhlIHVzZXJuYW1lIHRvIHVzZSB3aGVuIGNvbm5lY3RpbmcgdG8gdGhlIGRhdGFiYXNlLiAqL1xuICByZWFkb25seSB1c2VybmFtZVNzbVBhdGg6IHN0cmluZztcblxuICAvKiogVGhlIFNlY3VyZSBTeXN0ZW1zIE1hbmFnZXIgcGFyYW1ldGVyIGNvbnRhaW5pbmcgdGhlIHBhc3N3b3JkIHRvIHVzZSB3aGVuIGNvbm5lY3RpbmcgdG8gdGhlIGRhdGFiYXNlLiAqL1xuICByZWFkb25seSBwYXNzd29yZFNzbVBhdGg6IHN0cmluZztcblxuICAvKiogVGhlIFNlY3VyZSBTeXN0ZW1zIE1hbmFnZXIgcGFyYW1ldGVyIGNvbnRhaW5pbmcgdGhlIGRhdGFiYXNlIG5hbWUuICovXG4gIHJlYWRvbmx5IGRhdGFiYXNlTmFtZVNzbVBhdGg6IHN0cmluZztcbn1cbiJdfQ==
@@ -123,6 +123,10 @@ export class AuthTransformer extends TransformerAuthBase implements TransformerA
123
123
  generateResolvers: (context: TransformerContextProvider) => void;
124
124
  // (undocumented)
125
125
  getRelatedModelObject: (ctx: TransformerContextProvider, typeName: string) => ObjectTypeDefinitionNode;
126
+ // Warning: (ae-forgotten-export) The symbol "AuthVTLGenerator" needs to be exported by the entry point index.d.ts
127
+ //
128
+ // (undocumented)
129
+ getVtlGenerator: (ctx: TransformerContextProvider, typename: string, field?: FieldDefinitionNode) => AuthVTLGenerator;
126
130
  // (undocumented)
127
131
  object: (def: ObjectTypeDefinitionNode, directive: DirectiveNode, context: TransformerSchemaVisitStepContextProvider) => void;
128
132
  // (undocumented)
@@ -142,7 +146,7 @@ export class AuthTransformer extends TransformerAuthBase implements TransformerA
142
146
  // (undocumented)
143
147
  protectSearchResolver: (ctx: TransformerContextProvider, def: ObjectTypeDefinitionNode, typeName: string, fieldName: string, acm: AccessControlMatrix) => void;
144
148
  // (undocumented)
145
- protectSubscriptionResolver: (ctx: TransformerContextProvider, typeName: string, fieldName: string, subscriptionRoles: Array<RoleDefinition>) => void;
149
+ protectSubscriptionResolver: (ctx: TransformerContextProvider, typeName: string, fieldName: string, subscriptionRoles: Array<RoleDefinition>, def: ObjectTypeDefinitionNode) => void;
146
150
  // (undocumented)
147
151
  protectSyncResolver: (ctx: TransformerContextProvider, def: ObjectTypeDefinitionNode, typeName: string, fieldName: string, acm: AccessControlMatrix) => void;
148
152
  // (undocumented)
@@ -3,9 +3,22 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
- ## [3.1.11-construct-publish-test.0](https://github.com/aws-amplify/amplify-category-api/compare/@aws-amplify/graphql-auth-transformer@3.1.10...@aws-amplify/graphql-auth-transformer@3.1.11-construct-publish-test.0) (2023-11-08)
6
+ # [3.2.0-nov-14-cut-1.0](https://github.com/aws-amplify/amplify-category-api/compare/@aws-amplify/graphql-auth-transformer@3.1.10...@aws-amplify/graphql-auth-transformer@3.2.0-nov-14-cut-1.0) (2023-11-15)
7
7
 
8
- **Note:** Version bump only for package @aws-amplify/graphql-auth-transformer
8
+ ### Bug Fixes
9
+
10
+ - **api:** do not allow auth directive on rds model fields ([a1f1ae0](https://github.com/aws-amplify/amplify-category-api/commit/a1f1ae081dd9523e4a3500c6a31905fd4c222fdd))
11
+ - **api:** iam rule correct cognito pool id ([183e78b](https://github.com/aws-amplify/amplify-category-api/commit/183e78bc94aa548c02536d963129382c8b7eabe4))
12
+ - **api:** iam support for admin roles with auth utils ([6169cce](https://github.com/aws-amplify/amplify-category-api/commit/6169cce3a1c3708ec491b058e076b92cb1da99bd))
13
+ - Change 'rds' to 'sql' in public-facing symbols ([#2069](https://github.com/aws-amplify/amplify-category-api/issues/2069)) ([ff374dd](https://github.com/aws-amplify/amplify-category-api/commit/ff374dd8398d3f1138a31669b1a5962122039437))
14
+ - relational auth cases; preserve auth rule schema edits, added multi-auth e2e tests ([#1965](https://github.com/aws-amplify/amplify-category-api/issues/1965)) ([df085b2](https://github.com/aws-amplify/amplify-category-api/commit/df085b2bf75dded743809b59386272070fc92251))
15
+ - Update rds transformers to accommodate ConfiguredAuthProviders change ([ae2a451](https://github.com/aws-amplify/amplify-category-api/commit/ae2a451d419eed88fecdf4e778410bce5c9d80f8))
16
+
17
+ ### Features
18
+
19
+ - **api:** rds auth model level rules ([d2b0217](https://github.com/aws-amplify/amplify-category-api/commit/d2b0217b9c0ba11c60441720c0fd31802b64de39))
20
+ - **api:** refactor auth transformer to use vtl generator factory pattern ([e965d24](https://github.com/aws-amplify/amplify-category-api/commit/e965d24731fc1e2300ef0e16b61af6b39afb0cad))
21
+ - refersTo supports field name mappings on RDS models ([#1865](https://github.com/aws-amplify/amplify-category-api/issues/1865)) ([ee60011](https://github.com/aws-amplify/amplify-category-api/commit/ee60011f5c41d0442e1096dd16d80e94b900745a))
9
22
 
10
23
  ## [3.1.10](https://github.com/aws-amplify/amplify-category-api/compare/@aws-amplify/graphql-auth-transformer@3.1.9...@aws-amplify/graphql-auth-transformer@3.1.10) (2023-11-02)
11
24
 
@@ -3,6 +3,7 @@ import { TransformerTransformSchemaStepContextProvider, TransformerContextProvid
3
3
  import { DirectiveNode, FieldDefinitionNode, ObjectTypeDefinitionNode, InterfaceTypeDefinitionNode } from 'graphql';
4
4
  import { AccessControlMatrix } from './accesscontrol';
5
5
  import { RoleDefinition } from './utils';
6
+ import { AuthVTLGenerator } from './vtl-generator/vtl-generator';
6
7
  export declare class AuthTransformer extends TransformerAuthBase implements TransformerAuthProvider {
7
8
  private configuredAuthProviders;
8
9
  private rules;
@@ -34,7 +35,7 @@ export declare class AuthTransformer extends TransformerAuthBase implements Tran
34
35
  protectCreateResolver: (ctx: TransformerContextProvider, def: ObjectTypeDefinitionNode, typeName: string, fieldName: string, acm: AccessControlMatrix) => void;
35
36
  protectUpdateResolver: (ctx: TransformerContextProvider, def: ObjectTypeDefinitionNode, typeName: string, fieldName: string, acm: AccessControlMatrix) => void;
36
37
  protectDeleteResolver: (ctx: TransformerContextProvider, def: ObjectTypeDefinitionNode, typeName: string, fieldName: string, acm: AccessControlMatrix) => void;
37
- protectSubscriptionResolver: (ctx: TransformerContextProvider, typeName: string, fieldName: string, subscriptionRoles: Array<RoleDefinition>) => void;
38
+ protectSubscriptionResolver: (ctx: TransformerContextProvider, typeName: string, fieldName: string, subscriptionRoles: Array<RoleDefinition>, def: ObjectTypeDefinitionNode) => void;
38
39
  private convertRulesToRoles;
39
40
  private doesTypeHaveRulesForOperation;
40
41
  private getAuthProviders;
@@ -54,5 +55,6 @@ export declare class AuthTransformer extends TransformerAuthBase implements Tran
54
55
  addAutoGeneratedHasManyFields: (ctx: TransformerContextProvider, typeDefinitions: ObjectTypeDefinitionNode[], def: ObjectTypeDefinitionNode, allowedFields: Set<string>) => void;
55
56
  addAutoGeneratedHasOneFields: (ctx: TransformerContextProvider, typeDefinitions: ObjectTypeDefinitionNode[], fields: readonly string[], def: ObjectTypeDefinitionNode, allowedFields: Set<string>) => void;
56
57
  addAutoGeneratedDataStoreFields: (ctx: TransformerContextProvider, allowedFields: Set<string>) => void;
58
+ getVtlGenerator: (ctx: TransformerContextProvider, typename: string, field?: FieldDefinitionNode) => AuthVTLGenerator;
57
59
  }
58
60
  //# sourceMappingURL=graphql-auth-transformer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"graphql-auth-transformer.d.ts","sourceRoot":"","sources":["../src/graphql-auth-transformer.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,mBAAmB,EAQpB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAIL,6CAA6C,EAC7C,0BAA0B,EAE1B,yCAAyC,EACzC,uBAAuB,EACvB,oCAAoC,EACrC,MAAM,6CAA6C,CAAC;AACrD,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,wBAAwB,EACxB,2BAA2B,EAK5B,MAAM,SAAS,CAAC;AAwCjB,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAqBL,cAAc,EAiBf,MAAM,SAAS,CAAC;AA+CjB,qBAAa,eAAgB,SAAQ,mBAAoB,YAAW,uBAAuB;IACzF,OAAO,CAAC,uBAAuB,CAA0B;IAEzD,OAAO,CAAC,KAAK,CAAa;IAG1B,OAAO,CAAC,OAAO,CAA8B;IAE7C,OAAO,CAAC,eAAe,CAAmC;IAE1D,OAAO,CAAC,kBAAkB,CAAmC;IAG7D,OAAO,CAAC,oBAAoB,CAA2C;IAGvE,OAAO,CAAC,iBAAiB,CAA2B;IAGpD,OAAO,CAAC,8BAA8B,CAAU;IAEhD,OAAO,CAAC,4BAA4B,CAAU;IAE9C,OAAO,CAAC,mBAAmB,CAAqB;IAEhD,OAAO,CAAC,qBAAqB,CAAqB;;IAiBlD,MAAM,YAAa,oCAAoC,KAAG,IAAI,CAG5D;IAEF,MAAM,QAAS,wBAAwB,aAAa,aAAa,WAAW,yCAAyC,KAAG,IAAI,CAkC1H;IAEF,KAAK,YAAa,0BAA0B,KAAG,IAAI,CASjD;IAEF,KAAK,WACK,wBAAwB,GAAG,2BAA2B,SACvD,mBAAmB,aACf,aAAa,WACf,yCAAyC,KACjD,IAAI,CA2EL;IAEF,eAAe,YAAa,6CAA6C,KAAG,IAAI,CA0C9E;IAEF,iBAAiB,YAAa,0BAA0B,KAAG,IAAI,CAgH7D;IAQF,sCAAsC,YAAa,6CAA6C,KAAG,IAAI,CAWrG;IAEF,8BAA8B,QACvB,0BAA0B,OAC1B,wBAAwB,YACnB,MAAM,aACL,MAAM,KAChB,IAAI,CAmCL;IAEF,uBAAuB,QAChB,6CAA6C,OAC7C,wBAAwB,OACxB,mBAAmB,KACvB,IAAI,CA6DL;IAEF,kBAAkB,QACX,0BAA0B,OAC1B,wBAAwB,YACnB,MAAM,aACL,MAAM,OACZ,mBAAmB,KACvB,IAAI,CAiBL;IAEF,mBAAmB,QACZ,0BAA0B,OAC1B,wBAAwB,YACnB,MAAM,aACL,MAAM,OACZ,mBAAmB,cACZ,MAAM,KACjB,IAAI,CAiCL;IAEF,yBAAyB,QAClB,0BAA0B,OAC1B,wBAAwB,YACnB,MAAM,SACT,mBAAmB,cACd,MAAM,MAAM,CAAC,GAAG,IAAI,KAC/B,IAAI,CAqDL;IAEF,mBAAmB,QACZ,0BAA0B,OAC1B,wBAAwB,YACnB,MAAM,aACL,MAAM,OACZ,mBAAmB,KACvB,IAAI,CAWL;IAQF,qBAAqB,QACd,0BAA0B,OAC1B,wBAAwB,YACnB,MAAM,aACL,MAAM,OACZ,mBAAmB,KACvB,IAAI,CAkCL;IAWF,oBAAoB,QACb,0BAA0B,OAC1B,wBAAwB,YACnB,MAAM,aACL,MAAM,SACV,MAAM,MAAM,CAAC,KACnB,IAAI,CA6CL;IAEF,qBAAqB,QACd,0BAA0B,OAC1B,wBAAwB,YACnB,MAAM,aACL,MAAM,OACZ,mBAAmB,KACvB,IAAI,CAeL;IAEF,qBAAqB,QACd,0BAA0B,OAC1B,wBAAwB,YACnB,MAAM,aACL,MAAM,OACZ,mBAAmB,KACvB,IAAI,CA2BL;IAEF,qBAAqB,QACd,0BAA0B,OAC1B,wBAAwB,YACnB,MAAM,aACL,MAAM,OACZ,mBAAmB,KACvB,IAAI,CAaL;IAEF,2BAA2B,QACpB,0BAA0B,YACrB,MAAM,aACL,MAAM,qBACE,MAAM,cAAc,CAAC,KACvC,IAAI,CAOL;IAKF,OAAO,CAAC,mBAAmB;IA6G3B,OAAO,CAAC,6BAA6B;IAOrC,OAAO,CAAC,gBAAgB;IAaxB,qBAAqB,QAAS,0BAA0B,YAAY,MAAM,KAAG,wBAAwB,CASnG;IAKF,iBAAiB,QAAS,6CAA6C,aAAa,MAAM,eAAe,MAAM,MAAM,CAAC,KAAG,IAAI,CAY3H;IAEF,OAAO,CAAC,oCAAoC;IA4C5C,OAAO,CAAC,oBAAoB;IA6C5B,OAAO,CAAC,mBAAmB;IAqD3B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,gCAAgC;IAgBxC,OAAO,CAAC,2BAA2B;IAanC,OAAO,CAAC,4BAA4B;IAgBpC,sBAAsB,QACf,0BAA0B,OAC1B,wBAAwB,iBACd,MAAM,EAAE,UACf,SAAS,MAAM,EAAE,KACxB,MAAM,EAAE,CAQT;IAEF,gCAAgC,QACzB,0BAA0B,OAC1B,wBAAwB,iBACd,IAAI,MAAM,CAAC,UAClB,SAAS,MAAM,EAAE,KACxB,IAAI,CAKL;IAEF,2BAA2B,eAAgB,wBAAwB,iBAAiB,IAAI,MAAM,CAAC,KAAG,IAAI,CAoBpG;IAEF,6BAA6B,QACtB,0BAA0B,mBACd,wBAAwB,EAAE,OACtC,wBAAwB,iBACd,IAAI,MAAM,CAAC,KACzB,IAAI,CAqBL;IAKF,4BAA4B,QACrB,0BAA0B,mBACd,wBAAwB,EAAE,UACnC,SAAS,MAAM,EAAE,OACpB,wBAAwB,iBACd,IAAI,MAAM,CAAC,KACzB,IAAI,CAwBL;IAEF,+BAA+B,QAAS,0BAA0B,iBAAiB,IAAI,MAAM,CAAC,KAAG,IAAI,CAGnG;CACH"}
1
+ {"version":3,"file":"graphql-auth-transformer.d.ts","sourceRoot":"","sources":["../src/graphql-auth-transformer.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,mBAAmB,EAOpB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAIL,6CAA6C,EAC7C,0BAA0B,EAE1B,yCAAyC,EACzC,uBAAuB,EACvB,oCAAoC,EACrC,MAAM,6CAA6C,CAAC;AACrD,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,wBAAwB,EACxB,2BAA2B,EAK5B,MAAM,SAAS,CAAC;AAyBjB,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAqBL,cAAc,EAef,MAAM,SAAS,CAAC;AAIjB,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AA8CjE,qBAAa,eAAgB,SAAQ,mBAAoB,YAAW,uBAAuB;IACzF,OAAO,CAAC,uBAAuB,CAA0B;IAEzD,OAAO,CAAC,KAAK,CAAa;IAG1B,OAAO,CAAC,OAAO,CAA8B;IAE7C,OAAO,CAAC,eAAe,CAAmC;IAE1D,OAAO,CAAC,kBAAkB,CAAmC;IAG7D,OAAO,CAAC,oBAAoB,CAA2C;IAGvE,OAAO,CAAC,iBAAiB,CAA2B;IAGpD,OAAO,CAAC,8BAA8B,CAAU;IAEhD,OAAO,CAAC,4BAA4B,CAAU;IAE9C,OAAO,CAAC,mBAAmB,CAAqB;IAEhD,OAAO,CAAC,qBAAqB,CAAqB;;IAiBlD,MAAM,YAAa,oCAAoC,KAAG,IAAI,CAG5D;IAEF,MAAM,QAAS,wBAAwB,aAAa,aAAa,WAAW,yCAAyC,KAAG,IAAI,CAkC1H;IAEF,KAAK,YAAa,0BAA0B,KAAG,IAAI,CASjD;IAEF,KAAK,WACK,wBAAwB,GAAG,2BAA2B,SACvD,mBAAmB,aACf,aAAa,WACf,yCAAyC,KACjD,IAAI,CA6EL;IAEF,eAAe,YAAa,6CAA6C,KAAG,IAAI,CA0C9E;IAEF,iBAAiB,YAAa,0BAA0B,KAAG,IAAI,CAgH7D;IAQF,sCAAsC,YAAa,6CAA6C,KAAG,IAAI,CAWrG;IAEF,8BAA8B,QACvB,0BAA0B,OAC1B,wBAAwB,YACnB,MAAM,aACL,MAAM,KAChB,IAAI,CAsCL;IAEF,uBAAuB,QAChB,6CAA6C,OAC7C,wBAAwB,OACxB,mBAAmB,KACvB,IAAI,CA6DL;IAEF,kBAAkB,QACX,0BAA0B,OAC1B,wBAAwB,YACnB,MAAM,aACL,MAAM,OACZ,mBAAmB,KACvB,IAAI,CAeL;IAEF,mBAAmB,QACZ,0BAA0B,OAC1B,wBAAwB,YACnB,MAAM,aACL,MAAM,OACZ,mBAAmB,cACZ,MAAM,KACjB,IAAI,CAeL;IAEF,yBAAyB,QAClB,0BAA0B,OAC1B,wBAAwB,YACnB,MAAM,SACT,mBAAmB,cACd,MAAM,MAAM,CAAC,GAAG,IAAI,KAC/B,IAAI,CAiEL;IAEF,mBAAmB,QACZ,0BAA0B,OAC1B,wBAAwB,YACnB,MAAM,aACL,MAAM,OACZ,mBAAmB,KACvB,IAAI,CAiBL;IAQF,qBAAqB,QACd,0BAA0B,OAC1B,wBAAwB,YACnB,MAAM,aACL,MAAM,OACZ,mBAAmB,KACvB,IAAI,CAkCL;IAWF,oBAAoB,QACb,0BAA0B,OAC1B,wBAAwB,YACnB,MAAM,aACL,MAAM,SACV,MAAM,MAAM,CAAC,KACnB,IAAI,CAkEL;IAEF,qBAAqB,QACd,0BAA0B,OAC1B,wBAAwB,YACnB,MAAM,aACL,MAAM,OACZ,mBAAmB,KACvB,IAAI,CAoBL;IAEF,qBAAqB,QACd,0BAA0B,OAC1B,wBAAwB,YACnB,MAAM,aACL,MAAM,OACZ,mBAAmB,KACvB,IAAI,CAoCL;IAEF,qBAAqB,QACd,0BAA0B,OAC1B,wBAAwB,YACnB,MAAM,aACL,MAAM,OACZ,mBAAmB,KACvB,IAAI,CA6BL;IAEF,2BAA2B,QACpB,0BAA0B,YACrB,MAAM,aACL,MAAM,qBACE,MAAM,cAAc,CAAC,OACnC,wBAAwB,KAC5B,IAAI,CAUL;IAKF,OAAO,CAAC,mBAAmB;IA6G3B,OAAO,CAAC,6BAA6B;IAOrC,OAAO,CAAC,gBAAgB;IAaxB,qBAAqB,QAAS,0BAA0B,YAAY,MAAM,KAAG,wBAAwB,CASnG;IAKF,iBAAiB,QAAS,6CAA6C,aAAa,MAAM,eAAe,MAAM,MAAM,CAAC,KAAG,IAAI,CAY3H;IAEF,OAAO,CAAC,oCAAoC;IA4C5C,OAAO,CAAC,oBAAoB;IA6C5B,OAAO,CAAC,mBAAmB;IAqD3B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,gCAAgC;IAgBxC,OAAO,CAAC,2BAA2B;IAanC,OAAO,CAAC,4BAA4B;IAgBpC,sBAAsB,QACf,0BAA0B,OAC1B,wBAAwB,iBACd,MAAM,EAAE,UACf,SAAS,MAAM,EAAE,KACxB,MAAM,EAAE,CAQT;IAEF,gCAAgC,QACzB,0BAA0B,OAC1B,wBAAwB,iBACd,IAAI,MAAM,CAAC,UAClB,SAAS,MAAM,EAAE,KACxB,IAAI,CAKL;IAEF,2BAA2B,eAAgB,wBAAwB,iBAAiB,IAAI,MAAM,CAAC,KAAG,IAAI,CAoBpG;IAEF,6BAA6B,QACtB,0BAA0B,mBACd,wBAAwB,EAAE,OACtC,wBAAwB,iBACd,IAAI,MAAM,CAAC,KACzB,IAAI,CAqBL;IAKF,4BAA4B,QACrB,0BAA0B,mBACd,wBAAwB,EAAE,UACnC,SAAS,MAAM,EAAE,OACpB,wBAAwB,iBACd,IAAI,MAAM,CAAC,KACzB,IAAI,CA0BL;IAEF,+BAA+B,QAAS,0BAA0B,iBAAiB,IAAI,MAAM,CAAC,KAAG,IAAI,CAGnG;IAEF,eAAe,QAAS,0BAA0B,YAAY,MAAM,UAAU,mBAAmB,KAAG,gBAAgB,CAWlH;CACH"}
@@ -33,11 +33,11 @@ const graphql_transformer_common_1 = require("graphql-transformer-common");
33
33
  const iam = __importStar(require("aws-cdk-lib/aws-iam"));
34
34
  const cdk = __importStar(require("aws-cdk-lib"));
35
35
  const graphql_relational_transformer_1 = require("@aws-amplify/graphql-relational-transformer");
36
- const resolvers_1 = require("./resolvers");
37
- const field_1 = require("./resolvers/field");
38
36
  const accesscontrol_1 = require("./accesscontrol");
39
37
  const utils_1 = require("./utils");
40
38
  const warnings_1 = require("./utils/warnings");
39
+ const ddb_vtl_generator_1 = require("./vtl-generator/ddb/ddb-vtl-generator");
40
+ const rds_vtl_generator_1 = require("./vtl-generator/rds/rds-vtl-generator");
41
41
  const getReadRolesForField = (acm, readRoles, fieldName) => {
42
42
  const hasCognitoPrivateRole = readRoles.some((r) => r === 'userPools:private') &&
43
43
  acm.isAllowed('userPools:private', fieldName, 'get') &&
@@ -122,7 +122,7 @@ class AuthTransformer extends graphql_transformer_core_1.TransformerAuthBase {
122
122
  const fieldName = field.name.value;
123
123
  const getAuthRulesOptions = (0, lodash_1.merge)({ isField: true }, (0, graphql_transformer_core_1.generateGetArgumentsInput)(context.transformParameters));
124
124
  const rules = (0, utils_1.getAuthDirectiveRules)(new graphql_transformer_core_1.DirectiveWrapper(directive), getAuthRulesOptions);
125
- (0, utils_1.validateFieldRules)(new graphql_transformer_core_1.DirectiveWrapper(directive), isParentTypeBuiltinType, modelDirective !== undefined, field.name.value, context.transformParameters);
125
+ (0, utils_1.validateFieldRules)(new graphql_transformer_core_1.DirectiveWrapper(directive), isParentTypeBuiltinType, modelDirective !== undefined, field.name.value, context.transformParameters, parent, context);
126
126
  (0, utils_1.validateRules)(rules, this.configuredAuthProviders, field.name.value);
127
127
  this.setAuthPolicyFlag(rules);
128
128
  this.setUnauthPolicyFlag(rules);
@@ -222,7 +222,7 @@ class AuthTransformer extends graphql_transformer_core_1.TransformerAuthBase {
222
222
  if (context.metadata.has(indexKeyName)) {
223
223
  context.metadata.get(indexKeyName).forEach((index) => {
224
224
  const [indexName, indexQueryName] = index.split(':');
225
- this.protectListResolver(context, def, def.name.value, indexQueryName, acm, indexName);
225
+ this.protectListResolver(context, def, 'Query', indexQueryName, acm, indexName);
226
226
  });
227
227
  }
228
228
  if (searchableDirective) {
@@ -271,7 +271,7 @@ class AuthTransformer extends graphql_transformer_core_1.TransformerAuthBase {
271
271
  const subscriptionFieldNames = (0, utils_1.getSubscriptionFieldNames)(this.modelDirectiveConfig.get(modelName));
272
272
  const subscriptionRoles = acm.getRolesPerOperation('listen').map((role) => this.roleMap.get(role));
273
273
  subscriptionFieldNames.forEach((subscription) => {
274
- this.protectSubscriptionResolver(context, subscription.typeName, subscription.fieldName, subscriptionRoles);
274
+ this.protectSubscriptionResolver(context, subscription.typeName, subscription.fieldName, subscriptionRoles, def);
275
275
  });
276
276
  if (context.transformParameters.useSubUsernameForDefaultIdentityClaim) {
277
277
  const roleDefinitions = acm.getRoles().map((role) => this.roleMap.get(role));
@@ -306,12 +306,12 @@ class AuthTransformer extends graphql_transformer_core_1.TransformerAuthBase {
306
306
  this.addFieldResolverForDynamicAuth = (ctx, def, typeName, fieldName) => {
307
307
  let resolver = ctx.resolvers.getResolver(typeName, fieldName);
308
308
  if (resolver) {
309
- resolver.addToSlot('finish', undefined, graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString((0, resolvers_1.generateFieldResolverForOwner)(fieldName), `${typeName}.${fieldName}.{slotName}.{slotIndex}.res.vtl`));
309
+ resolver.addToSlot('finish', undefined, graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(this.getVtlGenerator(ctx, def.name.value).generateFieldResolverForOwner(fieldName), `${typeName}.${fieldName}.{slotName}.{slotIndex}.res.vtl`));
310
310
  }
311
311
  else {
312
312
  const hasModelDirective = def.directives.some((dir) => dir.name.value === 'model');
313
313
  const scope = (0, utils_1.getScopeForField)(ctx, def, fieldName, hasModelDirective);
314
- resolver = ctx.resolvers.addResolver(typeName, fieldName, new graphql_transformer_core_1.TransformerResolver(typeName, fieldName, graphql_transformer_common_1.ResolverResourceIDs.ResolverResourceID(typeName, fieldName), graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString('$util.toJson({"version":"2018-05-29","payload":{}})', `${typeName}.${fieldName}.req.vtl`), graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString((0, resolvers_1.generateFieldResolverForOwner)(fieldName), `${typeName}.${fieldName}.res.vtl`), ['init'], ['finish']));
314
+ resolver = ctx.resolvers.addResolver(typeName, fieldName, new graphql_transformer_core_1.TransformerResolver(typeName, fieldName, graphql_transformer_common_1.ResolverResourceIDs.ResolverResourceID(typeName, fieldName), graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString('$util.toJson({"version":"2018-05-29","payload":{}})', `${typeName}.${fieldName}.req.vtl`), graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(this.getVtlGenerator(ctx, def.name.value).generateFieldResolverForOwner(fieldName), `${typeName}.${fieldName}.res.vtl`), ['init'], ['finish']));
315
315
  resolver.setScope(scope);
316
316
  }
317
317
  };
@@ -378,31 +378,14 @@ class AuthTransformer extends graphql_transformer_core_1.TransformerAuthBase {
378
378
  var _a;
379
379
  const resolver = ctx.resolvers.getResolver(typeName, fieldName);
380
380
  const roleDefinitions = acm.getRolesPerOperation('get').map((r) => this.roleMap.get(r));
381
- const tableKeySchema = (0, graphql_transformer_core_1.getTable)(ctx, def).keySchema;
382
- const primaryKey = (0, utils_1.getPartitionKey)(tableKeySchema);
383
- const authExpression = (0, resolvers_1.generateAuthExpressionForQueries)(this.configuredAuthProviders, roleDefinitions, (_a = def.fields) !== null && _a !== void 0 ? _a : [], tableKeySchema, false, primaryKey);
381
+ const authExpression = this.getVtlGenerator(ctx, def.name.value).generateAuthExpressionForQueries(ctx, this.configuredAuthProviders, roleDefinitions, (_a = def.fields) !== null && _a !== void 0 ? _a : [], def, undefined);
384
382
  resolver.addToSlot('auth', graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(authExpression, `${typeName}.${fieldName}.{slotName}.{slotIndex}.req.vtl`));
385
383
  };
386
384
  this.protectListResolver = (ctx, def, typeName, fieldName, acm, indexName) => {
387
385
  var _a;
388
386
  const resolver = ctx.resolvers.getResolver(typeName, fieldName);
389
387
  const roleDefinitions = acm.getRolesPerOperation('list').map((r) => this.roleMap.get(r));
390
- let keySchema;
391
- let partitionKey;
392
- const table = (0, graphql_transformer_core_1.getTable)(ctx, def);
393
- try {
394
- if (indexName) {
395
- keySchema = (0, graphql_transformer_core_1.getKeySchema)(table, indexName);
396
- }
397
- else {
398
- keySchema = table.keySchema;
399
- partitionKey = (0, utils_1.getPartitionKey)(table.keySchema);
400
- }
401
- }
402
- catch (err) {
403
- throw new graphql_transformer_core_1.InvalidDirectiveError(`Could not fetch keySchema for ${def.name.value}.`);
404
- }
405
- const authExpression = (0, resolvers_1.generateAuthExpressionForQueries)(this.configuredAuthProviders, roleDefinitions, (_a = def.fields) !== null && _a !== void 0 ? _a : [], keySchema, !!indexName, partitionKey);
388
+ const authExpression = this.getVtlGenerator(ctx, def.name.value).generateAuthExpressionForQueries(ctx, this.configuredAuthProviders, roleDefinitions, (_a = def.fields) !== null && _a !== void 0 ? _a : [], def, indexName);
406
389
  resolver.addToSlot('auth', graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(authExpression, `${typeName}.${fieldName}.{slotName}.{slotIndex}.req.vtl`));
407
390
  };
408
391
  this.protectRelationalResolver = (ctx, def, typeName, field, fieldRoles) => {
@@ -421,17 +404,16 @@ class AuthTransformer extends graphql_transformer_core_1.TransformerAuthBase {
421
404
  ...acm.getRolesPerOperation('listen'),
422
405
  ]),
423
406
  ].map((r) => this.roleMap.get(r));
424
- const relationalPrimaryMap = (0, utils_1.getRelationalPrimaryMap)(ctx, def, field, relatedModelObject);
425
- relatedAuthExpression = (0, resolvers_1.generateAuthExpressionForRelationQuery)(this.configuredAuthProviders, roleDefinitions, (_a = relatedModelObject.fields) !== null && _a !== void 0 ? _a : [], relationalPrimaryMap);
407
+ relatedAuthExpression = this.getVtlGenerator(ctx, def.name.value).generateAuthExpressionForRelationQuery(ctx, def, field, relatedModelObject, this.configuredAuthProviders, roleDefinitions, (_a = relatedModelObject.fields) !== null && _a !== void 0 ? _a : []);
426
408
  }
427
409
  else {
428
- relatedAuthExpression = (0, field_1.generateSandboxExpressionForField)(ctx.transformParameters.sandboxModeEnabled);
410
+ relatedAuthExpression = this.getVtlGenerator(ctx, def.name.value).generateSandboxExpressionForField(ctx.transformParameters.sandboxModeEnabled);
429
411
  }
430
412
  if (fieldRoles) {
431
413
  const roleDefinitions = fieldRoles.map((r) => this.roleMap.get(r));
432
414
  const hasSubsEnabled = ((_b = this.modelDirectiveConfig.get(typeName).subscriptions) === null || _b === void 0 ? void 0 : _b.level) === 'on';
433
- relatedAuthExpression = `${(0, resolvers_1.setDeniedFieldFlag)('Mutation', hasSubsEnabled)}\n${relatedAuthExpression}`;
434
- fieldAuthExpression = (0, resolvers_1.generateAuthExpressionForField)(this.configuredAuthProviders, roleDefinitions, (_c = def.fields) !== null && _c !== void 0 ? _c : []);
415
+ relatedAuthExpression = `${this.getVtlGenerator(ctx, def.name.value).setDeniedFieldFlag('Mutation', hasSubsEnabled)}\n${relatedAuthExpression}`;
416
+ fieldAuthExpression = this.getVtlGenerator(ctx, def.name.value).generateAuthExpressionForField(this.configuredAuthProviders, roleDefinitions, (_c = def.fields) !== null && _c !== void 0 ? _c : [], undefined);
435
417
  }
436
418
  const resolver = ctx.resolvers.getResolver(typeName, field.name.value);
437
419
  if (fieldAuthExpression) {
@@ -446,8 +428,7 @@ class AuthTransformer extends graphql_transformer_core_1.TransformerAuthBase {
446
428
  if (ctx.isProjectUsingDataStore()) {
447
429
  const resolver = ctx.resolvers.getResolver(typeName, fieldName);
448
430
  const roleDefinitions = acm.getRolesPerOperation('sync').map((r) => this.roleMap.get(r));
449
- const keySchema = (0, graphql_transformer_core_1.getTable)(ctx, def).keySchema;
450
- const authExpression = (0, resolvers_1.generateAuthExpressionForQueries)(this.configuredAuthProviders, roleDefinitions, (_a = def.fields) !== null && _a !== void 0 ? _a : [], keySchema);
431
+ const authExpression = this.getVtlGenerator(ctx, def.name.value).generateAuthExpressionForQueries(ctx, this.configuredAuthProviders, roleDefinitions, (_a = def.fields) !== null && _a !== void 0 ? _a : [], def, undefined);
451
432
  resolver.addToSlot('auth', graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(authExpression, `${typeName}.${fieldName}.{slotName}.{slotIndex}.req.vtl`));
452
433
  }
453
434
  };
@@ -471,17 +452,18 @@ class AuthTransformer extends graphql_transformer_core_1.TransformerAuthBase {
471
452
  return roleDefinition;
472
453
  });
473
454
  allowedAggFields.push(...leastAllowedFields);
474
- const authExpression = (0, resolvers_1.generateAuthExpressionForSearchQueries)(this.configuredAuthProviders, readRoleDefinitions, modelFields, allowedAggFields);
455
+ const authExpression = this.getVtlGenerator(ctx, def.name.value).generateAuthExpressionForSearchQueries(this.configuredAuthProviders, readRoleDefinitions, modelFields, allowedAggFields);
475
456
  resolver.addToSlot('auth', graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(authExpression, `${typeName}.${fieldName}.{slotName}.{slotIndex}.req.vtl`));
476
457
  };
477
458
  this.protectFieldResolver = (ctx, def, typeName, fieldName, roles) => {
478
459
  var _a, _b;
479
460
  const roleDefinitions = roles.map((r) => this.roleMap.get(r));
480
461
  const hasModelDirective = def.directives.some((dir) => dir.name.value === 'model');
462
+ const fieldNode = def.fields.find((f) => f.name.value === fieldName);
481
463
  const scope = (0, utils_1.getScopeForField)(ctx, def, fieldName, hasModelDirective);
482
464
  if (ctx.api.host.hasResolver(typeName, fieldName)) {
483
465
  const fieldResolver = ctx.api.host.getResolver(typeName, fieldName);
484
- const fieldAuthExpression = (0, resolvers_1.generateAuthExpressionForField)(this.configuredAuthProviders, roleDefinitions, [], fieldName);
466
+ const fieldAuthExpression = this.getVtlGenerator(ctx, def.name.value, fieldNode).generateAuthExpressionForField(this.configuredAuthProviders, roleDefinitions, [], fieldName);
485
467
  if (!ctx.api.host.hasDataSource(utils_1.NONE_DS)) {
486
468
  ctx.api.host.addNoneDataSource(utils_1.NONE_DS);
487
469
  }
@@ -489,11 +471,19 @@ class AuthTransformer extends graphql_transformer_core_1.TransformerAuthBase {
489
471
  fieldResolver.pipelineConfig.functions.unshift(authFunction.functionId);
490
472
  }
491
473
  else {
492
- const fieldAuthExpression = (0, resolvers_1.generateAuthExpressionForField)(this.configuredAuthProviders, roleDefinitions, (_a = def.fields) !== null && _a !== void 0 ? _a : [], fieldName);
474
+ const fieldAuthExpression = this.getVtlGenerator(ctx, def.name.value, fieldNode).generateAuthExpressionForField(this.configuredAuthProviders, roleDefinitions, (_a = def.fields) !== null && _a !== void 0 ? _a : [], fieldName);
493
475
  const subsEnabled = hasModelDirective ? ((_b = this.modelDirectiveConfig.get(typeName).subscriptions) === null || _b === void 0 ? void 0 : _b.level) === 'on' : false;
494
- const fieldResponse = (0, resolvers_1.generateFieldAuthResponse)('Mutation', fieldName, subsEnabled);
495
- const resolver = ctx.resolvers.addResolver(typeName, fieldName, new graphql_transformer_core_1.TransformerResolver(typeName, fieldName, graphql_transformer_common_1.ResolverResourceIDs.ResolverResourceID(typeName, fieldName), graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(fieldAuthExpression, `${typeName}.${fieldName}.req.vtl`), graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(fieldResponse, `${typeName}.${fieldName}.res.vtl`), ['init'], ['finish']));
496
- resolver.setScope(scope);
476
+ const fieldResponse = this.getVtlGenerator(ctx, def.name.value, fieldNode).generateFieldAuthResponse('Mutation', fieldName, subsEnabled);
477
+ const existingResolver = ctx.resolvers.hasResolver(typeName, fieldName);
478
+ if (existingResolver) {
479
+ const resolver = ctx.resolvers.getResolver(typeName, fieldName);
480
+ resolver.addToSlot('auth', graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(fieldAuthExpression, `${typeName}.${fieldName}.{slotName}.{slotIndex}.req.vtl`), graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(fieldResponse, `${typeName}.${fieldName}.{slotName}.{slotIndex}.res.vtl`));
481
+ resolver.setScope(scope);
482
+ }
483
+ else {
484
+ const resolver = ctx.resolvers.addResolver(typeName, fieldName, new graphql_transformer_core_1.TransformerResolver(typeName, fieldName, graphql_transformer_common_1.ResolverResourceIDs.ResolverResourceID(typeName, fieldName), graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(fieldAuthExpression, `${typeName}.${fieldName}.req.vtl`), graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(fieldResponse, `${typeName}.${fieldName}.res.vtl`), ['init'], ['finish']));
485
+ resolver.setScope(scope);
486
+ }
497
487
  }
498
488
  };
499
489
  this.protectCreateResolver = (ctx, def, typeName, fieldName, acm) => {
@@ -507,7 +497,7 @@ class AuthTransformer extends graphql_transformer_core_1.TransformerAuthBase {
507
497
  roleDefinition.allowedFields = this.addAutoGeneratedFields(ctx, def, allowedFields, fields);
508
498
  return roleDefinition;
509
499
  });
510
- const authExpression = (0, resolvers_1.generateAuthExpressionForCreate)(ctx, this.configuredAuthProviders, createRoles, (_a = def.fields) !== null && _a !== void 0 ? _a : []);
500
+ const authExpression = this.getVtlGenerator(ctx, def.name.value).generateAuthExpressionForCreate(ctx, this.configuredAuthProviders, createRoles, (_a = def.fields) !== null && _a !== void 0 ? _a : []);
511
501
  resolver.addToSlot('auth', graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(authExpression, `${typeName}.${fieldName}.{slotName}.{slotIndex}.req.vtl`));
512
502
  };
513
503
  this.protectUpdateResolver = (ctx, def, typeName, fieldName, acm) => {
@@ -525,23 +515,36 @@ class AuthTransformer extends graphql_transformer_core_1.TransformerAuthBase {
525
515
  roleDefinition.nullAllowedFields = nullAllowedFields;
526
516
  return roleDefinition;
527
517
  });
528
- const dataSource = ctx.api.host.getDataSource(`${def.name.value}Table`);
529
- const requestExpression = (0, resolvers_1.generateAuthRequestExpression)();
530
- const authExpression = (0, resolvers_1.generateAuthExpressionForUpdate)(this.configuredAuthProviders, totalRoles, (_a = def.fields) !== null && _a !== void 0 ? _a : []);
518
+ const { SQLLambdaDataSourceLogicalID } = graphql_transformer_common_1.ResourceConstants.RESOURCES;
519
+ const dataSource = ((0, graphql_transformer_core_1.isRDSModel)(ctx, def.name.value)
520
+ ? ctx.api.host.getDataSource(SQLLambdaDataSourceLogicalID)
521
+ : ctx.api.host.getDataSource(`${def.name.value}Table`));
522
+ const requestExpression = this.getVtlGenerator(ctx, def.name.value).generateAuthRequestExpression(ctx, def);
523
+ const authExpression = this.getVtlGenerator(ctx, def.name.value).generateAuthExpressionForUpdate(this.configuredAuthProviders, totalRoles, (_a = def.fields) !== null && _a !== void 0 ? _a : []);
531
524
  resolver.addToSlot('auth', graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(requestExpression, `${typeName}.${fieldName}.{slotName}.{slotIndex}.req.vtl`), graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(authExpression, `${typeName}.${fieldName}.{slotName}.{slotIndex}.res.vtl`), dataSource);
532
525
  };
533
526
  this.protectDeleteResolver = (ctx, def, typeName, fieldName, acm) => {
534
527
  var _a;
535
528
  const resolver = ctx.resolvers.getResolver(typeName, fieldName);
536
- const deleteRoles = acm.getRolesPerOperation('delete', true).map((role) => this.roleMap.get(role));
537
- const dataSource = ctx.api.host.getDataSource(`${def.name.value}Table`);
538
- const requestExpression = (0, resolvers_1.generateAuthRequestExpression)();
539
- const authExpression = (0, resolvers_1.generateAuthExpressionForDelete)(this.configuredAuthProviders, deleteRoles, (_a = def.fields) !== null && _a !== void 0 ? _a : []);
529
+ const fields = acm.getResources();
530
+ const deleteRoleNames = acm.getRolesPerOperation('delete', true);
531
+ const deleteRoles = deleteRoleNames.map((role) => {
532
+ const allowedFields = fields.filter((resource) => acm.isAllowed(role, resource, 'delete'));
533
+ const roleDefinition = this.roleMap.get(role);
534
+ roleDefinition.allowedFields = allowedFields;
535
+ return roleDefinition;
536
+ });
537
+ const { SQLLambdaDataSourceLogicalID } = graphql_transformer_common_1.ResourceConstants.RESOURCES;
538
+ const dataSource = ((0, graphql_transformer_core_1.isRDSModel)(ctx, def.name.value)
539
+ ? ctx.api.host.getDataSource(SQLLambdaDataSourceLogicalID)
540
+ : ctx.api.host.getDataSource(`${def.name.value}Table`));
541
+ const requestExpression = this.getVtlGenerator(ctx, def.name.value).generateAuthRequestExpression(ctx, def);
542
+ const authExpression = this.getVtlGenerator(ctx, def.name.value).generateAuthExpressionForDelete(this.configuredAuthProviders, deleteRoles, (_a = def.fields) !== null && _a !== void 0 ? _a : []);
540
543
  resolver.addToSlot('auth', graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(requestExpression, `${typeName}.${fieldName}.{slotName}.{slotIndex}.req.vtl`), graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(authExpression, `${typeName}.${fieldName}.{slotName}.{slotIndex}.res.vtl`), dataSource);
541
544
  };
542
- this.protectSubscriptionResolver = (ctx, typeName, fieldName, subscriptionRoles) => {
545
+ this.protectSubscriptionResolver = (ctx, typeName, fieldName, subscriptionRoles, def) => {
543
546
  const resolver = ctx.resolvers.getResolver(typeName, fieldName);
544
- const authExpression = (0, resolvers_1.generateAuthExpressionForSubscriptions)(this.configuredAuthProviders, subscriptionRoles);
547
+ const authExpression = this.getVtlGenerator(ctx, def.name.value).generateAuthExpressionForSubscriptions(this.configuredAuthProviders, subscriptionRoles);
545
548
  resolver.addToSlot('auth', graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(authExpression, `${typeName}.${fieldName}.{slotName}.{slotIndex}.req.vtl`));
546
549
  };
547
550
  this.getRelatedModelObject = (ctx, typeName) => {
@@ -615,7 +618,9 @@ class AuthTransformer extends graphql_transformer_core_1.TransformerAuthBase {
615
618
  if (directive.name.value === 'hasOne' ||
616
619
  (directive.name.value === 'belongsTo' &&
617
620
  relatedType.fields.some((f) => { var _a; return (0, graphql_transformer_common_1.getBaseType)(f.type) === def.name.value && ((_a = f.directives) === null || _a === void 0 ? void 0 : _a.some((d) => d.name.value === 'hasOne')); }))) {
618
- allowedFields.add((0, graphql_relational_transformer_1.getConnectionAttributeName)(ctx.transformParameters, def.name.value, field, (0, graphql_relational_transformer_1.getObjectPrimaryKey)(relatedType).name.value));
621
+ if (!(0, graphql_transformer_core_1.isRDSModel)(ctx, def.name.value)) {
622
+ allowedFields.add((0, graphql_relational_transformer_1.getConnectionAttributeName)(ctx.transformParameters, def.name.value, field, (0, graphql_relational_transformer_1.getObjectPrimaryKey)(relatedType).name.value));
623
+ }
619
624
  (0, graphql_transformer_core_1.getSortKeyFieldNames)(def).forEach((sortKeyFieldName) => {
620
625
  allowedFields.add((0, graphql_relational_transformer_1.getSortKeyConnectionAttributeName)(def.name.value, field, sortKeyFieldName));
621
626
  });
@@ -627,6 +632,15 @@ class AuthTransformer extends graphql_transformer_core_1.TransformerAuthBase {
627
632
  const dataStoreFields = ctx.isProjectUsingDataStore() ? ['_version', '_deleted', '_lastChangedAt'] : [];
628
633
  dataStoreFields.forEach((item) => allowedFields.add(item));
629
634
  };
635
+ this.getVtlGenerator = (ctx, typename, field) => {
636
+ if (field && field.directives.some((dir) => dir.name.value === 'sql')) {
637
+ return new rds_vtl_generator_1.RDSAuthVTLGenerator();
638
+ }
639
+ if ((0, graphql_transformer_core_1.isRDSModel)(ctx, typename)) {
640
+ return new rds_vtl_generator_1.RDSAuthVTLGenerator();
641
+ }
642
+ return new ddb_vtl_generator_1.DDBAuthVTLGenerator();
643
+ };
630
644
  this.modelDirectiveConfig = new Map();
631
645
  this.seenNonModelTypes = new Map();
632
646
  this.authModelConfig = new Map();