@myclub_se/data-access 3.5.7 → 3.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/esm2022/lib/api-models/api-activity-invite.mjs +1 -1
  2. package/esm2022/lib/api-models/api-activity-location-group.mjs +1 -1
  3. package/esm2022/lib/api-models/api-activity-location.mjs +1 -1
  4. package/esm2022/lib/api-models/api-activity-question-connection.mjs +2 -0
  5. package/esm2022/lib/api-models/api-activity-question.mjs +2 -0
  6. package/esm2022/lib/api-models/api-activity-rule-relation.mjs +2 -0
  7. package/esm2022/lib/api-models/api-activity-rule.mjs +2 -0
  8. package/esm2022/lib/api-models/api-activity-settings.mjs +1 -1
  9. package/esm2022/lib/api-models/api-activity.mjs +1 -1
  10. package/esm2022/lib/api-models/api-bookable-item.mjs +1 -1
  11. package/esm2022/lib/api-models/api-invoice/api-payment-attempt.mjs +1 -1
  12. package/esm2022/lib/api-models/api-invoice/api-payment-order.mjs +1 -1
  13. package/esm2022/lib/api-models/api-member/api-member.mjs +1 -1
  14. package/esm2022/lib/api-models/api-open-activity.mjs +1 -1
  15. package/esm2022/lib/api-models/api-search-attribute.mjs +2 -0
  16. package/esm2022/lib/api-models/api-search-club.mjs +1 -1
  17. package/esm2022/lib/api-models/index.mjs +6 -1
  18. package/esm2022/lib/authentication/guards/handle-grant-token.guard.mjs +1 -1
  19. package/esm2022/lib/data-access.module.mjs +3 -4
  20. package/esm2022/lib/models/activity-invite.mjs +12 -2
  21. package/esm2022/lib/models/activity-location-group.mjs +1 -1
  22. package/esm2022/lib/models/activity-location-part.mjs +1 -1
  23. package/esm2022/lib/models/activity-location-tag.mjs +1 -1
  24. package/esm2022/lib/models/activity-location.mjs +1 -1
  25. package/esm2022/lib/models/activity-question-connection.mjs +29 -0
  26. package/esm2022/lib/models/activity-question-response.mjs +9 -0
  27. package/esm2022/lib/models/activity-question.mjs +33 -0
  28. package/esm2022/lib/models/activity-rule-relation.mjs +35 -0
  29. package/esm2022/lib/models/activity-rule.mjs +31 -0
  30. package/esm2022/lib/models/activity-settings.mjs +14 -4
  31. package/esm2022/lib/models/activity-type.mjs +1 -1
  32. package/esm2022/lib/models/activity.mjs +72 -4
  33. package/esm2022/lib/models/bookable-item.mjs +1 -1
  34. package/esm2022/lib/models/bookable-part.mjs +1 -1
  35. package/esm2022/lib/models/bookable-tag.mjs +1 -1
  36. package/esm2022/lib/models/booking-calendar-application-time.mjs +1 -1
  37. package/esm2022/lib/models/booking-calendar-slot-session.mjs +1 -1
  38. package/esm2022/lib/models/booking-settings.mjs +1 -1
  39. package/esm2022/lib/models/index.mjs +7 -1
  40. package/esm2022/lib/models/invoice/payment-attempt.mjs +1 -1
  41. package/esm2022/lib/models/invoice/payment-order.mjs +12 -6
  42. package/esm2022/lib/models/open-activity.mjs +16 -2
  43. package/esm2022/lib/models/optional-fee.mjs +12 -1
  44. package/esm2022/lib/models/search-attribute.mjs +13 -0
  45. package/esm2022/lib/models/search-club.mjs +2 -6
  46. package/esm2022/lib/models/search-team.mjs +1 -1
  47. package/esm2022/lib/models/token.mjs +1 -1
  48. package/esm2022/lib/services/activity.service.mjs +82 -48
  49. package/esm2022/lib/services/api.service.mjs +1 -1
  50. package/esm2022/lib/services/booking-calendar.service.mjs +1 -1
  51. package/esm2022/lib/services/constant.service.mjs +13 -1
  52. package/esm2022/lib/services/factories/activity-factory.mjs +6 -2
  53. package/esm2022/lib/services/factories/activity-invite-factory.mjs +2 -2
  54. package/esm2022/lib/services/factories/activity-location-factory.mjs +1 -1
  55. package/esm2022/lib/services/factories/activity-location-group-factory.mjs +1 -1
  56. package/esm2022/lib/services/factories/activity-location-part-factory.mjs +1 -1
  57. package/esm2022/lib/services/factories/activity-location-tag-factory.mjs +1 -1
  58. package/esm2022/lib/services/factories/activity-question-connection-factory.mjs +4 -0
  59. package/esm2022/lib/services/factories/activity-question-factory.mjs +3 -0
  60. package/esm2022/lib/services/factories/activity-rule-factory.mjs +4 -0
  61. package/esm2022/lib/services/factories/activity-rule-relation-factory.mjs +5 -0
  62. package/esm2022/lib/services/factories/activity-settings-factory.mjs +2 -2
  63. package/esm2022/lib/services/factories/bookable-item-factory.mjs +1 -1
  64. package/esm2022/lib/services/factories/bookable-part-factory.mjs +1 -1
  65. package/esm2022/lib/services/factories/bookable-tag-factory.mjs +1 -1
  66. package/esm2022/lib/services/factories/booking-calendar-application-time-factory.mjs +1 -1
  67. package/esm2022/lib/services/factories/booking-calendar-slot-factory.mjs +1 -1
  68. package/esm2022/lib/services/factories/booking-calendar-slot-session-factory.mjs +1 -1
  69. package/esm2022/lib/services/factories/booking-calendar-slot-validate-copy-result-factory.mjs +1 -1
  70. package/esm2022/lib/services/factories/booking-settings-factory.mjs +1 -1
  71. package/esm2022/lib/services/factories/feature-flags-factory.mjs +1 -1
  72. package/esm2022/lib/services/factories/index.mjs +6 -1
  73. package/esm2022/lib/services/factories/open-activity-factory.mjs +4 -2
  74. package/esm2022/lib/services/factories/overbooked-bookable-item-factory.mjs +1 -1
  75. package/esm2022/lib/services/factories/overbooked-location-factory.mjs +1 -1
  76. package/esm2022/lib/services/factories/payment-order-factory.mjs +2 -2
  77. package/esm2022/lib/services/factories/saved-search-factory.mjs +1 -1
  78. package/esm2022/lib/services/factories/search-attribute.factory.mjs +3 -0
  79. package/esm2022/lib/services/factories/search-club-factory.mjs +2 -2
  80. package/esm2022/lib/services/feature-flags.service.mjs +1 -1
  81. package/esm2022/lib/services/index.mjs +2 -2
  82. package/esm2022/lib/services/invoice/invoice.service.mjs +1 -1
  83. package/esm2022/lib/services/invoice/payment-attempt.service.mjs +1 -1
  84. package/esm2022/lib/services/invoice/payment-order.service.mjs +4 -1
  85. package/esm2022/lib/services/member-card.service.mjs +1 -1
  86. package/esm2022/lib/services/member-fee.service.mjs +1 -1
  87. package/esm2022/lib/services/member-public-form.service.mjs +1 -1
  88. package/esm2022/lib/services/member.service.mjs +1 -1
  89. package/esm2022/lib/services/storage.service.mjs +1 -1
  90. package/esm2022/lib/services/team.service.mjs +1 -1
  91. package/esm2022/lib/services/user.service.mjs +1 -1
  92. package/esm2022/lib/store/actions/activity.actions.mjs +57 -27
  93. package/esm2022/lib/store/actions/calendar.actions.mjs +7 -1
  94. package/esm2022/lib/store/actions/constant.actions.mjs +21 -1
  95. package/esm2022/lib/store/actions/invoice.actions.mjs +9 -1
  96. package/esm2022/lib/store/actions/member-fee.actions.mjs +1 -1
  97. package/esm2022/lib/store/actions/member.actions.mjs +1 -1
  98. package/esm2022/lib/store/actions/saved-search.actions.mjs +1 -1
  99. package/esm2022/lib/store/effects/activity.effects.mjs +40 -22
  100. package/esm2022/lib/store/effects/auth.effects.mjs +1 -1
  101. package/esm2022/lib/store/effects/booking.effects.mjs +1 -1
  102. package/esm2022/lib/store/effects/calendar.effects.mjs +7 -19
  103. package/esm2022/lib/store/effects/constant.effects.mjs +11 -2
  104. package/esm2022/lib/store/effects/file.effects.mjs +1 -1
  105. package/esm2022/lib/store/effects/invoice.effects.mjs +12 -2
  106. package/esm2022/lib/store/effects/member-card.effects.mjs +1 -1
  107. package/esm2022/lib/store/effects/member-fee.effects.mjs +1 -1
  108. package/esm2022/lib/store/effects/member.effects.mjs +1 -1
  109. package/esm2022/lib/store/effects/saved-search.effects.mjs +1 -1
  110. package/esm2022/lib/store/effects/token.effects.mjs +1 -1
  111. package/esm2022/lib/store/interfaces/index.mjs +2 -1
  112. package/esm2022/lib/store/interfaces/public-member-activity-result-interface.mjs +2 -0
  113. package/esm2022/lib/store/operators/ensure-public-member-activities-loading-done.mjs +5 -0
  114. package/esm2022/lib/store/operators/index.mjs +2 -1
  115. package/esm2022/lib/store/reducers/booking.reducers.mjs +1 -1
  116. package/esm2022/lib/store/reducers/calendar.reducer.mjs +83 -50
  117. package/esm2022/lib/store/reducers/constant.reducer.mjs +35 -2
  118. package/esm2022/lib/store/reducers/file.reducer.mjs +1 -1
  119. package/esm2022/lib/store/reducers/invoice.reducer.mjs +2 -2
  120. package/esm2022/lib/store/reducers/member-fee.reducer.mjs +1 -1
  121. package/esm2022/lib/store/reducers/public.reducer.mjs +58 -73
  122. package/esm2022/lib/store/reducers/saved-search.reducer.mjs +1 -1
  123. package/esm2022/lib/store/selectors/calendar.selectors.mjs +7 -1
  124. package/esm2022/lib/store/selectors/constant.selectors.mjs +5 -1
  125. package/esm2022/lib/store/selectors/member-fee.selectors.mjs +1 -1
  126. package/esm2022/lib/store/selectors/public.selectors.mjs +7 -7
  127. package/esm2022/lib/store/selectors/saved-search.selectors.mjs +1 -1
  128. package/esm2022/lib/store/state/booking.state.mjs +1 -1
  129. package/esm2022/lib/store/state/calendar.state.mjs +3 -1
  130. package/esm2022/lib/store/state/constant.state.mjs +4 -1
  131. package/esm2022/lib/store/state/invoice.state.mjs +1 -1
  132. package/esm2022/lib/store/state/member-fee.state.mjs +1 -1
  133. package/esm2022/lib/store/state/public.state.mjs +7 -7
  134. package/fesm2022/myclub_se-data-access.mjs +3447 -2976
  135. package/fesm2022/myclub_se-data-access.mjs.map +1 -1
  136. package/lib/api-models/api-activity-invite.d.ts +3 -0
  137. package/lib/api-models/api-activity-question-connection.d.ts +10 -0
  138. package/lib/api-models/api-activity-question.d.ts +9 -0
  139. package/lib/api-models/api-activity-rule-relation.d.ts +10 -0
  140. package/lib/api-models/api-activity-rule.d.ts +8 -0
  141. package/lib/api-models/api-activity-settings.d.ts +6 -1
  142. package/lib/api-models/api-activity.d.ts +26 -0
  143. package/lib/api-models/api-invoice/api-payment-order.d.ts +5 -2
  144. package/lib/api-models/api-open-activity.d.ts +10 -0
  145. package/lib/api-models/api-search-attribute.d.ts +8 -0
  146. package/lib/api-models/api-search-club.d.ts +0 -2
  147. package/lib/api-models/index.d.ts +5 -0
  148. package/lib/models/activity-invite.d.ts +7 -1
  149. package/lib/models/activity-question-connection.d.ts +19 -0
  150. package/lib/models/activity-question-response.d.ts +5 -0
  151. package/lib/models/activity-question.d.ts +22 -0
  152. package/lib/models/activity-rule-relation.d.ts +14 -0
  153. package/lib/models/activity-rule.d.ts +12 -0
  154. package/lib/models/activity-settings.d.ts +7 -2
  155. package/lib/models/activity.d.ts +29 -1
  156. package/lib/models/index.d.ts +6 -0
  157. package/lib/models/invoice/payment-attempt.d.ts +1 -1
  158. package/lib/models/invoice/payment-order.d.ts +6 -3
  159. package/lib/models/open-activity.d.ts +10 -1
  160. package/lib/models/optional-fee.d.ts +9 -0
  161. package/lib/models/search-attribute.d.ts +9 -0
  162. package/lib/models/search-club.d.ts +1 -3
  163. package/lib/services/activity.service.d.ts +17 -11
  164. package/lib/services/constant.service.d.ts +3 -0
  165. package/lib/services/factories/activity-question-connection-factory.d.ts +3 -0
  166. package/lib/services/factories/activity-question-factory.d.ts +3 -0
  167. package/lib/services/factories/activity-rule-factory.d.ts +3 -0
  168. package/lib/services/factories/activity-rule-relation-factory.d.ts +3 -0
  169. package/lib/services/factories/index.d.ts +5 -0
  170. package/lib/services/factories/search-attribute.factory.d.ts +3 -0
  171. package/lib/services/index.d.ts +1 -1
  172. package/lib/services/invoice/payment-order.service.d.ts +1 -0
  173. package/lib/services/member-card.service.d.ts +2 -3
  174. package/lib/store/actions/activity.actions.d.ts +207 -59
  175. package/lib/store/actions/calendar.actions.d.ts +36 -0
  176. package/lib/store/actions/constant.actions.d.ts +42 -0
  177. package/lib/store/actions/invoice.actions.d.ts +23 -1
  178. package/lib/store/effects/activity.effects.d.ts +56 -16
  179. package/lib/store/effects/calendar.effects.d.ts +4 -31
  180. package/lib/store/effects/constant.effects.d.ts +15 -0
  181. package/lib/store/effects/invoice.effects.d.ts +3 -0
  182. package/lib/store/interfaces/index.d.ts +1 -0
  183. package/lib/store/interfaces/public-member-activity-result-interface.d.ts +7 -0
  184. package/lib/store/operators/ensure-public-member-activities-loading-done.d.ts +3 -0
  185. package/lib/store/operators/index.d.ts +1 -0
  186. package/lib/store/selectors/calendar.selectors.d.ts +2 -0
  187. package/lib/store/selectors/constant.selectors.d.ts +2 -0
  188. package/lib/store/selectors/public.selectors.d.ts +6 -6
  189. package/lib/store/state/calendar.state.d.ts +3 -1
  190. package/lib/store/state/constant.state.d.ts +3 -0
  191. package/lib/store/state/public.state.d.ts +8 -8
  192. package/package.json +4 -3
@@ -146,4 +146,4 @@ export class BookingEffects {
146
146
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: BookingEffects, decorators: [{
147
147
  type: Injectable
148
148
  }] });
149
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va2luZy5lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi9zdG9yZS9lZmZlY3RzL2Jvb2tpbmcuZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFekQsT0FBTyxFQUNMLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFDL0IsK0JBQStCLEVBQy9CLHVCQUF1QixFQUN2Qiw4QkFBOEIsRUFDOUIsOEJBQThCLEVBQzlCLDJCQUEyQixFQUMzQixrQ0FBa0MsRUFDbEMsK0JBQStCLEVBQy9CLHNDQUFzQyxFQUN0QyxzQ0FBc0MsRUFDdEMsNkNBQTZDLEVBQzdDLDZDQUE2QyxFQUM3QyxzQ0FBc0MsRUFDdEMsa0NBQWtDLEVBQ2xDLG1DQUFtQyxFQUNuQywwQ0FBMEMsRUFDMUMsMkNBQTJDLEVBQzNDLGtEQUFrRCxFQUFFLGtEQUFrRCxFQUN0RywwQ0FBMEMsRUFDMUMsdUJBQXVCLEVBQ3ZCLDhCQUE4QixFQUM5Qiw4QkFBOEIsRUFDOUIsMkJBQTJCLEVBQzNCLGtDQUFrQyxFQUNsQyx5Q0FBeUMsRUFDekMsZ0RBQWdELEVBQ2hELGdEQUFnRCxFQUNoRCx1REFBdUQsRUFDdkQsdURBQXVELEVBQ3ZELGdEQUFnRCxFQUNoRCwrQkFBK0IsRUFDL0Isc0NBQXNDLEVBQ3RDLHNDQUFzQyxFQUN0Qyw2Q0FBNkMsRUFDN0MsNkNBQTZDLEVBQzdDLHNDQUFzQyxFQUN0QyxrQ0FBa0MsRUFDbEMsc0JBQXNCLEVBQ3RCLDZCQUE2QixFQUM3Qiw2QkFB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QUFDLGdEQUFnRCxDQUFDLEVBQ3hELFVBQVUsQ0FDUixDQUFDLEVBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBTXBFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQywwQ0FBMEMsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQ3ZKLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNiLHVEQUF1RCxDQUFDLEVBQUMsT0FBTyxFQUFFLE9BQU8sRUFBQyxDQUFDO0tBQzVFLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsdURBQXVELENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3hILENBQUMsQ0FDTCxDQUFDLENBQUM7dUdBeGlCUSxjQUFjOzJHQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luamVjdCwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7QWN0aW9ucywgY3JlYXRlRWZmZWN0LCBvZlR5cGV9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHtleGhhdXN0TWFwLCBtYXAsIG1lcmdlTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7XG4gIGNyZWF0ZUJvb2thYmxlSXRlbUFjdGlvbixcbiAgY3JlYXRlQm9va2FibGVJdGVtRmFpbHVyZUFjdGlvbixcbiAgY3JlYXRlQm9va2FibGVJdGVtU3VjY2Vzc0FjdGlvbixcbiAgY3JlYXRlQm9va2FibGVUYWdBY3Rpb24sXG4gIGNyZWF0ZUJvb2thYmxlVGFnRmFpbHVyZUFjdGlvbixcbiAgY3JlYXRlQm9va2FibGVUYWdTdWNjZXNzQWN0aW9uLFxuICBjcmVhdGVCb29raW5nQ2FsZW5kYXJBY3Rpb24sXG4gIGNyZWF0ZUJvb2tpbmdDYWxlbmRhckZhaWx1cmVBY3Rpb24sXG4gIGNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3RBY3Rpb24sXG4gIGNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3RGYWlsdXJlQWN0aW9uLFxuICBjcmVhdGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkFjdGlvbixcbiAgY3JlYXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25GYWlsdXJlQWN0aW9uLFxuICBjcmVhdGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvblN1Y2Nlc3NBY3Rpb24sXG4gIGNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTdWNjZXNzQWN0aW9uLFxuICBjcmVhdGVCb29raW5nQ2FsZW5kYXJTdWNjZXNzQWN0aW9uLFxuICBjcmVhdGVCdWxrQm9va2luZ0NhbGVuZGFyU2xvdEFjdGlvbixcbiAgY3JlYXRlQnVsa0Jvb2tpbmdDYWxlbmRhclNsb3RGYWlsdXJlQWN0aW9uLFxuICBjcmVhdGVCdWxrQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25zQWN0aW9uLFxuICBjcmVhdGVCdWxrQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25zRmFpbHVyZUFjdGlvbiwgY3JlYXRlQnVsa0Jvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uc1N1Y2Nlc3NBY3Rpb24sXG4gIGNyZWF0ZUJ1bGtCb29raW5nQ2FsZW5kYXJTbG90U3VjY2Vzc0FjdGlvbixcbiAgZGVsZXRlQm9va2FibGVUYWdBY3Rpb24sXG4gIGRlbGV0ZUJvb2thYmxlVGFnRmFpbHVyZUFjdGlvbixcbiAgZGVsZXRlQm9va2FibGVUYWdTdWNjZXNzQWN0aW9uLFxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJBY3Rpb24sXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhckZhaWx1cmVBY3Rpb24sXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclJlcGVhdGFibGVTbG90QWN0aW9uLFxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJSZXBlYXRhYmxlU2xvdEZhaWx1cmVBY3Rpb24sXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclJlcGVhdGFibGVTbG90U2Vzc2lvbkFjdGlvbixcbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3RTZXNzaW9uRmFpbHVyZUFjdGlvbixcbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3RTZXNzaW9uU3VjY2Vzc0FjdGlvbixcbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3RTdWNjZXNzQWN0aW9uLFxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJTbG90QWN0aW9uLFxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJTbG90RmFpbHVyZUFjdGlvbixcbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25BY3Rpb24sXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uRmFpbHVyZUFjdGlvbixcbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25TdWNjZXNzQWN0aW9uLFxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJTbG90U3VjY2Vzc0FjdGlvbixcbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyU3VjY2Vzc0FjdGlvbixcbiAgbGlzdEFjdGl2aXR5VHlwZUFjdGlvbixcbiAgbGlzdEFjdGl2aXR5VHlwZUZhaWx1cmVBY3Rpb24sXG4gIGxpc3RBY3Rpdml0eVR5cGVTdWNjZXNzQWN0aW9uLFxuICBsaXN0Qm9va2FibGVJdGVtQWN0aW9uLFxuICBsaXN0Qm9va2FibGVJdGVtRmFpbHVyZUFjdGlvbixcbiAgbGlzdEJvb2thYmxlSXRlbVN1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RCb29rYWJsZVRhZ0FjdGlvbixcbiAgbGlzdEJvb2thYmxlVGFnRmFpbHVyZUFjdGlvbixcbiAgbGlzdEJvb2thYmxlVGFnU3VjY2Vzc0FjdGlvbixcbiAgbGlzdENhbGVuZGFyQWN0aW9uLFxuICBsaXN0Q2FsZW5kYXJGYWlsdXJlQWN0aW9uLFxuICBsaXN0Q2FsZW5kYXJTdWNjZXNzQWN0aW9uLFxuICBsaXN0TG9jYXRpb25BY3Rpb24sXG4gIGxpc3RMb2NhdGlvbkZhaWx1cmVBY3Rpb24sXG4gIGxpc3RMb2NhdGlvblN1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RNZW1iZXJCb29raW5nQ2FsZW5kYXJCb29rYWJsZVNsb3RzQWN0aW9uLFxuICBsaXN0TWVtYmVyQm9va2luZ0NhbGVuZGFyQm9va2FibGVTbG90c0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RNZW1iZXJCb29raW5nQ2FsZW5kYXJCb29rYWJsZVNsb3RzU3VjY2Vzc0FjdGlvbixcbiAgbGlzdE1lbWJlckJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uQWN0aW9uLFxuICBsaXN0TWVtYmVyQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25GYWlsdXJlQWN0aW9uLFxuICBsaXN0TWVtYmVyQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25TdWNjZXNzQWN0aW9uLFxuICBsaXN0TWVtYmVyQ2FsZW5kYXJBY3Rpb24sXG4gIGxpc3RNZW1iZXJDYWxlbmRhckZhaWx1cmVBY3Rpb24sXG4gIGxpc3RNZW1iZXJDYWxlbmRhclN1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RUZWFtQWN0aW9uLFxuICBsaXN0VGVhbUZhaWx1cmVBY3Rpb24sXG4gIGxpc3RUZWFtU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVCb29raW5nU2V0dGluZ3NBY3Rpb24sXG4gIHJldHJpZXZlQm9va2luZ1NldHRpbmdzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVCb29raW5nU2V0dGluZ3NTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZVNldHRpbmdzQWN0aW9uLFxuICByZXRyaWV2ZVNldHRpbmdzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVTZXR0aW5nc1N1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZUFjdGl2aXR5VHlwZUFjdGlvbixcbiAgdXBkYXRlQWN0aXZpdHlUeXBlRmFpbHVyZUFjdGlvbixcbiAgdXBkYXRlQWN0aXZpdHlUeXBlU3VjY2Vzc0FjdGlvbixcbiAgdXBkYXRlQm9va2FibGVJdGVtQWN0aW9uLFxuICB1cGRhdGVCb29rYWJsZUl0ZW1GYWlsdXJlQWN0aW9uLFxuICB1cGRhdGVCb29rYWJsZUl0ZW1TdWNjZXNzQWN0aW9uLFxuICB1cGRhdGVCb29rYWJsZVRhZ0FjdGlvbixcbiAgdXBkYXRlQm9va2FibGVUYWdGYWlsdXJlQWN0aW9uLFxuICB1cGRhdGVCb29rYWJsZVRhZ1N1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZUJvb2tpbmdDYWxlbmRhckFjdGlvbixcbiAgdXBkYXRlQm9va2luZ0NhbGVuZGFyRmFpbHVyZUFjdGlvbixcbiAgdXBkYXRlQm9va2luZ0NhbGVuZGFyU2xvdEFjdGlvbixcbiAgdXBkYXRlQm9va2luZ0NhbGVuZGFyU2xvdEZhaWx1cmVBY3Rpb24sXG4gIHVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uQWN0aW9uLFxuICB1cGRhdGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkZhaWx1cmVBY3Rpb24sXG4gIHVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uU3VjY2Vzc0FjdGlvbixcbiAgdXBkYXRlQm9va2luZ0NhbGVuZGFyU2xvdFN1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZUJvb2tpbmdDYWxlbmRhclN1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZUJvb2tpbmdTZXR0aW5nc0FjdGlvbixcbiAgdXBkYXRlQm9va2luZ1NldHRpbmdzRmFpbHVyZUFjdGlvbixcbiAgdXBkYXRlQm9va2luZ1NldHRpbmdzU3VjY2Vzc0FjdGlvblxufSBmcm9tICcuLi9hY3Rpb25zJztcbmltcG9ydCB7XG4gIEFjdGl2aXR5TG9jYXRpb24sXG4gIEFjdGl2aXR5U2V0dGluZ3MsXG4gIEFjdGl2aXR5VHlwZSxcbiAgQm9va2FibGVJdGVtLFxuICBCb29rYWJsZVRhZyxcbiAgQm9va2luZ0NhbGVuZGFyLFxuICBCb29raW5nQ2FsZW5kYXJTbG90LFxuICBCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbixcbiAgQm9va2luZ1NldHRpbmdzLFxuICBDb2xsZWN0aW9uLFxuICBSb2xlLFxuICBTZWFyY2hUZWFtLFxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtBY3Rpdml0eVNlcnZpY2UsIEJvb2thYmxlU2VydmljZSwgQm9va2luZ0NhbGVuZGFyU2VydmljZSwgVGVhbVNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgZm9ya0pvaW4sIG9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7SHR0cEVycm9yUmVzcG9uc2V9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQm9va2luZ0VmZmVjdHMge1xuICBwcml2YXRlIGFjdGlvbnMkID0gaW5qZWN0KEFjdGlvbnMpO1xuICBwcml2YXRlIGJvb2tpbmdDYWxlbmRhclNlcnZpY2UgPSBpbmplY3QoQm9va2luZ0NhbGVuZGFyU2VydmljZSk7XG4gIHByaXZhdGUgYm9va2FibGVTZXJ2aWNlID0gaW5qZWN0KEJvb2thYmxlU2VydmljZSk7XG4gIHByaXZhdGUgYWN0aXZpdHlTZXJ2aWNlID0gaW5qZWN0KEFjdGl2aXR5U2VydmljZSk7XG4gIHByaXZhdGUgdGVhbVNlcnZpY2UgPSBpbmplY3QoVGVhbVNlcnZpY2UpO1xuXG4gIGxpc3RDYWxlbmRhcnMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUobGlzdENhbGVuZGFyQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWR9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nXG4gICAgICB9KSA9PiB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UuZ2V0Qm9va2luZ0NhbGVuZGFycyhyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQpLnBpcGUoXG4gICAgICAgIG1hcChcbiAgICAgICAgICAoY2FsZW5kYXJzOiBDb2xsZWN0aW9uPEJvb2tpbmdDYWxlbmRhcj4pID0+IGxpc3RDYWxlbmRhclN1Y2Nlc3NBY3Rpb24oe2Jvb2tpbmdDYWxlbmRhcnM6IGNhbGVuZGFycy50b0FycmF5KCl9KSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKSxcbiAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxpc3RDYWxlbmRhckZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKSxcbiAgKSk7XG5cbiAgbGlzdE1lbWJlckNhbGVuZGFycyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxpc3RNZW1iZXJDYWxlbmRhckFjdGlvbiksXG4gICAgICBtZXJnZU1hcCgoe21lbWJlcklkc306IHsgbWVtYmVySWRzOiBBcnJheTxzdHJpbmc+IH0pID0+XG4gICAgICAgIGZvcmtKb2luKFxuICAgICAgICAgIG1lbWJlcklkcy5tYXAoKGlkOiBzdHJpbmcpID0+XG4gICAgICAgICAgICB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UuZ2V0Qm9va2luZ0NhbGVuZGFycyhSb2xlLk1lbWJlckFkbWluLCBpZClcbiAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChjYWxlbmRhcnM6IENvbGxlY3Rpb248Qm9va2luZ0NhbGVuZGFyPikgPT4gKHtpZCwgY2FsZW5kYXJzOiBjYWxlbmRhcnMudG9BcnJheSgpfSkpLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2Yoe2lkLCBlcnJvcn0pKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKHJlc3VsdHM6IEFycmF5PHsgaWQ6IHN0cmluZywgY2FsZW5kYXJzPzogQXJyYXk8Qm9va2luZ0NhbGVuZGFyPiwgZXJyb3I/OiBIdHRwRXJyb3JSZXNwb25zZSB9PikgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2FsZW5kYXJNYXAgPSBuZXcgTWFwPHN0cmluZywgQXJyYXk8Qm9va2luZ0NhbGVuZGFyPj4oKTtcbiAgICAgICAgICAgIGNvbnN0IGVycm9ycyA9IHJlc3VsdHMuZmlsdGVyKHJlc3VsdCA9PiByZXN1bHQuZXJyb3IpO1xuICAgICAgICAgICAgaWYgKGVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKGxpc3RNZW1iZXJDYWxlbmRhckZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yc1swXS5lcnJvciBhcyBIdHRwRXJyb3JSZXNwb25zZX0pKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdWx0cy5mb3JFYWNoKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHJlc3VsdC5jYWxlbmRhcnMpIHtcbiAgICAgICAgICAgICAgICBjYWxlbmRhck1hcC5zZXQocmVzdWx0LmlkLCByZXN1bHQuY2FsZW5kYXJzKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBvZihsaXN0TWVtYmVyQ2FsZW5kYXJTdWNjZXNzQWN0aW9uKHtib29raW5nQ2FsZW5kYXJzTWFwOiBjYWxlbmRhck1hcH0pKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGxpc3RNZW1iZXJTZXNzaW9ucyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxpc3RNZW1iZXJCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkFjdGlvbiksXG4gICAgICBtZXJnZU1hcCgoe21lbWJlcklkc306IHsgbWVtYmVySWRzOiBBcnJheTxzdHJpbmc+IH0pID0+XG4gICAgICAgIGZvcmtKb2luKFxuICAgICAgICAgIG1lbWJlcklkcy5tYXAoKGlkOiBzdHJpbmcpID0+XG4gICAgICAgICAgICB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UuZ2V0TWVtYmVyQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25zKGlkKVxuICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHNlc3Npb25zOiBDb2xsZWN0aW9uPEJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uPikgPT4gKHtpZCwgc2Vzc2lvbnM6IHNlc3Npb25zLnRvQXJyYXkoKX0pKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHtpZCwgZXJyb3J9KSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKS5waXBlKFxuICAgICAgICAgIG1lcmdlTWFwKChyZXN1bHRzOiBBcnJheTx7XG4gICAgICAgICAgICBpZDogc3RyaW5nLFxuICAgICAgICAgICAgc2Vzc2lvbnM/OiBBcnJheTxCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbj4sXG4gICAgICAgICAgICBlcnJvcj86IEh0dHBFcnJvclJlc3BvbnNlXG4gICAgICAgICAgfT4pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlc3Npb25zTWFwID0gbmV3IE1hcDxzdHJpbmcsIEFycmF5PEJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uPj4oKTtcbiAgICAgICAgICAgIGNvbnN0IGVycm9ycyA9IHJlc3VsdHMuZmlsdGVyKHJlc3VsdCA9PiByZXN1bHQuZXJyb3IpO1xuICAgICAgICAgICAgaWYgKGVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKGxpc3RNZW1iZXJCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yc1swXS5lcnJvciBhcyBIdHRwRXJyb3JSZXNwb25zZX0pKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdWx0cy5mb3JFYWNoKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHJlc3VsdC5zZXNzaW9ucykge1xuICAgICAgICAgICAgICAgIHNlc3Npb25zTWFwLnNldChyZXN1bHQuaWQsIHJlc3VsdC5zZXNzaW9ucyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gb2YobGlzdE1lbWJlckJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uU3VjY2Vzc0FjdGlvbih7c2Vzc2lvbnNNYXA6IHNlc3Npb25zTWFwfSkpO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbGlzdE1lbWJlckJvb2thYmxlU2xvdHMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsaXN0TWVtYmVyQm9va2luZ0NhbGVuZGFyQm9va2FibGVTbG90c0FjdGlvbiksXG4gICAgICBtZXJnZU1hcCgoe2Jvb2thYmxlSWQsIG1lbWJlcklkcywgc3RhcnREYXRlLCBlbmREYXRlfToge1xuICAgICAgICAgIGJvb2thYmxlSWQ6IHN0cmluZyxcbiAgICAgICAgICBtZW1iZXJJZHM6IEFycmF5PHN0cmluZz4sXG4gICAgICAgICAgc3RhcnREYXRlOiBzdHJpbmcsXG4gICAgICAgICAgZW5kRGF0ZTogc3RyaW5nXG4gICAgICAgIH0pID0+XG4gICAgICAgICAgZm9ya0pvaW4oXG4gICAgICAgICAgICBtZW1iZXJJZHMubWFwKChpZDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgICB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UuZ2V0TWVtYmVyQm9va2luZ0NhbGVuZGFyQm9va2FibGVTbG90cyhpZCwgYm9va2FibGVJZCwgc3RhcnREYXRlLCBlbmREYXRlKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgbWFwKChzbG90czogQ29sbGVjdGlvbjxCb29raW5nQ2FsZW5kYXJTbG90PikgPT4gKHtpZCwgc2xvdHM6IHNsb3RzLnRvQXJyYXkoKX0pKSxcbiAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2Yoe2lkLCBlcnJvcn0pKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICApLnBpcGUoXG4gICAgICAgICAgICBtZXJnZU1hcCgocmVzdWx0czogQXJyYXk8eyBpZDogc3RyaW5nLCBzbG90cz86IEFycmF5PEJvb2tpbmdDYWxlbmRhclNsb3Q+LCBlcnJvcj86IEh0dHBFcnJvclJlc3BvbnNlIH0+KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHNsb3RzTWFwID0gbmV3IE1hcDxzdHJpbmcsIEFycmF5PEJvb2tpbmdDYWxlbmRhclNsb3Q+PigpO1xuICAgICAgICAgICAgICBjb25zdCBlcnJvcnMgPSByZXN1bHRzLmZpbHRlcihyZXN1bHQgPT4gcmVzdWx0LmVycm9yKTtcbiAgICAgICAgICAgICAgaWYgKGVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2YobGlzdE1lbWJlckJvb2tpbmdDYWxlbmRhckJvb2thYmxlU2xvdHNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcnNbMF0uZXJyb3IgYXMgSHR0cEVycm9yUmVzcG9uc2V9KSk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXN1bHRzLmZvckVhY2goKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuc2xvdHMpIHtcbiAgICAgICAgICAgICAgICAgIHNsb3RzTWFwLnNldChyZXN1bHQuaWQsIHJlc3VsdC5zbG90cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICByZXR1cm4gb2YobGlzdE1lbWJlckJvb2tpbmdDYWxlbmRhckJvb2thYmxlU2xvdHNTdWNjZXNzQWN0aW9uKHtzbG90c01hcDogc2xvdHNNYXB9KSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbGlzdExvY2F0aW9ucyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShsaXN0TG9jYXRpb25BY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmdcbiAgICAgIH0pID0+IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLmdldEFjdGl2aXR5TG9jYXRpb25zKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgdHJ1ZSkucGlwZShcbiAgICAgICAgbWFwKFxuICAgICAgICAgIChsb2NhdGlvbnM6IENvbGxlY3Rpb248QWN0aXZpdHlMb2NhdGlvbj4gfCB1bmRlZmluZWQpID0+IGxpc3RMb2NhdGlvblN1Y2Nlc3NBY3Rpb24oe2xvY2F0aW9uczogKGxvY2F0aW9ucyBhcyBDb2xsZWN0aW9uPEFjdGl2aXR5TG9jYXRpb24+KS50b0FycmF5KCl9KSxcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICApLFxuICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdExvY2F0aW9uRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpLFxuICApKTtcblxuICBsaXN0Qm9va2FibGVJdGVtcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShsaXN0Qm9va2FibGVJdGVtQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWR9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nXG4gICAgICB9KSA9PiB0aGlzLmJvb2thYmxlU2VydmljZS5nZXRCb29rYWJsZUl0ZW1zKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCkucGlwZShcbiAgICAgICAgbWFwKFxuICAgICAgICAgIChib29rYWJsZUl0ZW1zOiBDb2xsZWN0aW9uPEJvb2thYmxlSXRlbT4gfCB1bmRlZmluZWQpID0+IGxpc3RCb29rYWJsZUl0ZW1TdWNjZXNzQWN0aW9uKHtpdGVtczogKGJvb2thYmxlSXRlbXMgYXMgQ29sbGVjdGlvbjxCb29rYWJsZUl0ZW0+KS50b0FycmF5KCl9KSxcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICApLFxuICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdEJvb2thYmxlSXRlbUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKSxcbiAgKSk7XG5cbiAgbGlzdEJvb2thYmxlVGFncyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShsaXN0Qm9va2FibGVUYWdBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmdcbiAgICAgIH0pID0+IHRoaXMuYm9va2FibGVTZXJ2aWNlLmdldEJvb2thYmxlVGFncyhyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQpLnBpcGUoXG4gICAgICAgIG1hcChcbiAgICAgICAgICAoYm9va2FibGVUYWdzOiBDb2xsZWN0aW9uPEJvb2thYmxlVGFnPiB8IHVuZGVmaW5lZCkgPT4gbGlzdEJvb2thYmxlVGFnU3VjY2Vzc0FjdGlvbih7dGFnczogKGJvb2thYmxlVGFncyBhcyBDb2xsZWN0aW9uPEJvb2thYmxlVGFnPikudG9BcnJheSgpfSksXG4gICAgICAgICksXG4gICAgICApXG4gICAgKSxcbiAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxpc3RCb29rYWJsZVRhZ0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKSxcbiAgKSk7XG5cbiAgbGlzdFRlYW1zJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGxpc3RUZWFtQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWR9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nXG4gICAgICB9KSA9PiB0aGlzLnRlYW1TZXJ2aWNlLmdldFRlYW1zKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCkucGlwZShcbiAgICAgICAgbWFwKFxuICAgICAgICAgICh0ZWFtczogQ29sbGVjdGlvbjxTZWFyY2hUZWFtPikgPT4gbGlzdFRlYW1TdWNjZXNzQWN0aW9uKHt0ZWFtczogdGVhbXMudG9BcnJheSgpfSksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICksXG4gICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihsaXN0VGVhbUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKSxcbiAgKSk7XG5cbiAgcmV0cmlldmVTZXR0aW5ncyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShyZXRyaWV2ZVNldHRpbmdzQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWR9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nXG4gICAgICB9KSA9PiB0aGlzLmFjdGl2aXR5U2VydmljZS5nZXRBY3Rpdml0eVNldHRpbmdzKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCkucGlwZShcbiAgICAgICAgbWFwKFxuICAgICAgICAgIChzZXR0aW5nczogQWN0aXZpdHlTZXR0aW5ncykgPT4gcmV0cmlldmVTZXR0aW5nc1N1Y2Nlc3NBY3Rpb24oe3NldHRpbmdzOiBzZXR0aW5nc30pLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICApLFxuICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVTZXR0aW5nc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKSxcbiAgKSlcblxuICByZXRyaWV2ZUJvb2tpbmdTZXR0aW5ncyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShyZXRyaWV2ZUJvb2tpbmdTZXR0aW5nc0FjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZ1xuICAgICAgfSkgPT4gdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLmdldEJvb2tpbmdTZXR0aW5ncyhyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQpLnBpcGUoXG4gICAgICAgIG1hcChcbiAgICAgICAgICAoYm9va2luZ1NldHRpbmdzOiBCb29raW5nU2V0dGluZ3MpID0+IHJldHJpZXZlQm9va2luZ1NldHRpbmdzU3VjY2Vzc0FjdGlvbih7c2V0dGluZ3M6IGJvb2tpbmdTZXR0aW5nc30pLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICApLFxuICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVCb29raW5nU2V0dGluZ3NGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSksXG4gICkpXG5cbiAgbGlzdEFjdGl2aXR5VHlwZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUobGlzdEFjdGl2aXR5VHlwZUFjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZ1xuICAgICAgfSkgPT4gdGhpcy5hY3Rpdml0eVNlcnZpY2UuZ2V0QWN0aXZpdHlUeXBlcyhyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQpLnBpcGUoXG4gICAgICAgIG1hcChcbiAgICAgICAgICAoYWN0aXZpdHlUeXBlczogQ29sbGVjdGlvbjxBY3Rpdml0eVR5cGU+KSA9PiBsaXN0QWN0aXZpdHlUeXBlU3VjY2Vzc0FjdGlvbih7YWN0aXZpdHlUeXBlczogYWN0aXZpdHlUeXBlcy50b0FycmF5KCl9KSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKSxcbiAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxpc3RBY3Rpdml0eVR5cGVGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSksXG4gICkpO1xuXG4gIHVwZGF0ZUFjdGl2aXR5VHlwZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZSh1cGRhdGVBY3Rpdml0eVR5cGVBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgYWN0aXZpdHlUeXBlfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgYWN0aXZpdHlUeXBlOiBBY3Rpdml0eVR5cGVcbiAgICAgIH0pID0+IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLnVwZGF0ZUFjdGl2aXR5VHlwZShyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIGFjdGl2aXR5VHlwZSkucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKGFjdGl2aXR5VHlwZTogQWN0aXZpdHlUeXBlKSA9PiBbXG4gICAgICAgICAgdXBkYXRlQWN0aXZpdHlUeXBlU3VjY2Vzc0FjdGlvbih7YWN0aXZpdHlUeXBlOiBhY3Rpdml0eVR5cGV9KSxcbiAgICAgICAgICBsaXN0QWN0aXZpdHlUeXBlQWN0aW9uKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWR9KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YodXBkYXRlQWN0aXZpdHlUeXBlRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICApKVxuICApKTtcblxuICBjcmVhdGVCb29rYWJsZUl0ZW0kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoY3JlYXRlQm9va2FibGVJdGVtQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIGl0ZW19OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICBpdGVtOiBQYXJ0aWFsPEJvb2thYmxlSXRlbT5cbiAgICAgIH0pID0+IHRoaXMuYm9va2FibGVTZXJ2aWNlLmNyZWF0ZUJvb2thYmxlSXRlbShyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHsuLi5pdGVtfSkucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKGJvb2thYmxlSXRlbTogQm9va2FibGVJdGVtKSA9PiBbXG4gICAgICAgICAgY3JlYXRlQm9va2FibGVJdGVtU3VjY2Vzc0FjdGlvbih7aXRlbTogYm9va2FibGVJdGVtfSksXG4gICAgICAgICAgbGlzdEJvb2thYmxlSXRlbUFjdGlvbih7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZUJvb2thYmxlSXRlbUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgdXBkYXRlQm9va2FibGVJdGVtJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKHVwZGF0ZUJvb2thYmxlSXRlbUFjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBpdGVtfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgaXRlbTogUGFydGlhbDxCb29rYWJsZUl0ZW0+XG4gICAgICB9KSA9PiB0aGlzLmJvb2thYmxlU2VydmljZS51cGRhdGVCb29rYWJsZUl0ZW0ocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCB7Li4uaXRlbX0pLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKChib29rYWJsZUl0ZW06IEJvb2thYmxlSXRlbSkgPT4gW1xuICAgICAgICAgIHVwZGF0ZUJvb2thYmxlSXRlbVN1Y2Nlc3NBY3Rpb24oe2l0ZW06IGJvb2thYmxlSXRlbX0pLFxuICAgICAgICAgIGxpc3RCb29rYWJsZUl0ZW1BY3Rpb24oe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH0pLFxuICAgICAgICBdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih1cGRhdGVCb29rYWJsZUl0ZW1GYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIGNyZWF0ZUJvb2thYmxlVGFnJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGNyZWF0ZUJvb2thYmxlVGFnQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHRhZ306IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIHRhZzogUGFydGlhbDxCb29rYWJsZVRhZz5cbiAgICAgIH0pID0+IHRoaXMuYm9va2FibGVTZXJ2aWNlLmNyZWF0ZUJvb2thYmxlVGFnKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgey4uLnRhZ30pLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKCh0YWc6IEJvb2thYmxlVGFnKSA9PiBbXG4gICAgICAgICAgY3JlYXRlQm9va2FibGVUYWdTdWNjZXNzQWN0aW9uKHt0YWc6IHRhZ30pLFxuICAgICAgICAgIGxpc3RCb29rYWJsZVRhZ0FjdGlvbih7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZUJvb2thYmxlVGFnRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICApKVxuICApKTtcblxuICB1cGRhdGVCb29rYWJsZVRhZyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZSh1cGRhdGVCb29rYWJsZVRhZ0FjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCB0YWd9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICB0YWc6IFBhcnRpYWw8Qm9va2FibGVUYWc+XG4gICAgICB9KSA9PiB0aGlzLmJvb2thYmxlU2VydmljZS51cGRhdGVCb29rYWJsZVRhZyhyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHsuLi50YWd9KS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgodGFnOiBCb29rYWJsZVRhZykgPT4gW1xuICAgICAgICAgIHVwZGF0ZUJvb2thYmxlVGFnU3VjY2Vzc0FjdGlvbih7dGFnOiB0YWd9KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YodXBkYXRlQm9va2FibGVUYWdGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIGRlbGV0ZUJvb2thYmxlVGFnJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGRlbGV0ZUJvb2thYmxlVGFnQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHRhZ306IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIHRhZzogQm9va2FibGVUYWdcbiAgICAgIH0pID0+IHRoaXMuYm9va2FibGVTZXJ2aWNlLmRlbGV0ZUJvb2thYmxlVGFnKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgdGFnKS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoKSA9PiBbXG4gICAgICAgICAgZGVsZXRlQm9va2FibGVUYWdTdWNjZXNzQWN0aW9uKHt0YWc6IHRhZ30pLFxuICAgICAgICAgIGxpc3RCb29rYWJsZVRhZ0FjdGlvbih7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGRlbGV0ZUJvb2thYmxlVGFnRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICApKVxuICApKTtcblxuICBjcmVhdGVCb29raW5nQ2FsZW5kYXIkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoY3JlYXRlQm9va2luZ0NhbGVuZGFyQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIGNhbGVuZGFyfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgY2FsZW5kYXI6IFBhcnRpYWw8Qm9va2luZ0NhbGVuZGFyPlxuICAgICAgfSkgPT4gdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZUJvb2tpbmdDYWxlbmRhcihyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHsuLi5jYWxlbmRhcn0pLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKChib29raW5nQ2FsZW5kYXI6IEJvb2tpbmdDYWxlbmRhcikgPT4gW1xuICAgICAgICAgIGNyZWF0ZUJvb2tpbmdDYWxlbmRhclN1Y2Nlc3NBY3Rpb24oe2NhbGVuZGFyOiBib29raW5nQ2FsZW5kYXJ9KSxcbiAgICAgICAgICBsaXN0Q2FsZW5kYXJBY3Rpb24oe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH0pLFxuICAgICAgICBdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihjcmVhdGVCb29raW5nQ2FsZW5kYXJGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIHVwZGF0ZUJvb2tpbmdDYWxlbmRhciQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZSh1cGRhdGVCb29raW5nQ2FsZW5kYXJBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgY2FsZW5kYXJ9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICBjYWxlbmRhcjogUGFydGlhbDxCb29raW5nQ2FsZW5kYXI+XG4gICAgICB9KSA9PiB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UudXBkYXRlQm9va2luZ0NhbGVuZGFyKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgey4uLmNhbGVuZGFyfSkucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKGJvb2tpbmdDYWxlbmRhcjogQm9va2luZ0NhbGVuZGFyKSA9PiBbXG4gICAgICAgICAgdXBkYXRlQm9va2luZ0NhbGVuZGFyU3VjY2Vzc0FjdGlvbih7Y2FsZW5kYXI6IGJvb2tpbmdDYWxlbmRhcn0pLFxuICAgICAgICAgIGxpc3RDYWxlbmRhckFjdGlvbih7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHVwZGF0ZUJvb2tpbmdDYWxlbmRhckZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGRlbGV0ZUJvb2tpbmdDYWxlbmRhckFjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBjYWxlbmRhcn06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIGNhbGVuZGFyOiBCb29raW5nQ2FsZW5kYXJcbiAgICAgIH0pID0+IHRoaXMuYm9va2luZ0NhbGVuZGFyU2VydmljZS5kZWxldGVCb29raW5nQ2FsZW5kYXIocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBjYWxlbmRhci5pZCkucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKCkgPT4gW1xuICAgICAgICAgIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclN1Y2Nlc3NBY3Rpb24oe2NhbGVuZGFyOiBjYWxlbmRhcn0pLFxuICAgICAgICAgIGxpc3RDYWxlbmRhckFjdGlvbih7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGRlbGV0ZUJvb2tpbmdDYWxlbmRhckZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgdXBkYXRlQm9va2luZ1NldHRpbmdzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKHVwZGF0ZUJvb2tpbmdTZXR0aW5nc0FjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBzZXR0aW5nc306IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIHNldHRpbmdzOiBCb29raW5nU2V0dGluZ3NcbiAgICAgIH0pID0+IHRoaXMuYm9va2luZ0NhbGVuZGFyU2VydmljZS51cGRhdGVCb29raW5nU2V0dGluZ3Mocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBzZXR0aW5ncykucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKG5ld1NldHRpbmdzOiBCb29raW5nU2V0dGluZ3MpID0+IFtcbiAgICAgICAgICB1cGRhdGVCb29raW5nU2V0dGluZ3NTdWNjZXNzQWN0aW9uKHtzZXR0aW5nczogbmV3U2V0dGluZ3N9KSxcbiAgICAgICAgICByZXRyaWV2ZUJvb2tpbmdTZXR0aW5nc0FjdGlvbih7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHVwZGF0ZUJvb2tpbmdTZXR0aW5nc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgY3JlYXRlQm9va2luZ0NhbGVuZGFyU2xvdCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShjcmVhdGVCb29raW5nQ2FsZW5kYXJTbG90QWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHNsb3R9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICBzbG90OiBQYXJ0aWFsPEJvb2tpbmdDYWxlbmRhclNsb3Q+XG4gICAgICB9KSA9PiB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UuY3JlYXRlQm9va2luZ0NhbGVuZGFyU2xvdChyb2xlIGFzIFJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgey4uLnNsb3R9KS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoc2xvdDogQm9va2luZ0NhbGVuZGFyU2xvdCkgPT4gW1xuICAgICAgICAgIGNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTdWNjZXNzQWN0aW9uKHtzbG90OiBzbG90fSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3RGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIGNyZWF0ZUJ1bGtCb29raW5nQ2FsZW5kYXJTbG90JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGNyZWF0ZUJ1bGtCb29raW5nQ2FsZW5kYXJTbG90QWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHNsb3RzfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgc2xvdHM6IEFycmF5PFBhcnRpYWw8Qm9va2luZ0NhbGVuZGFyU2xvdD4+XG4gICAgICB9KSA9PiB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UuY3JlYXRlQnVsa0Jvb2tpbmdDYWxlbmRhclNsb3RzKHJvbGUgYXMgUm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBzbG90cykucGlwZShcbiAgICAgICAgbWFwKChzdWNjZXNzOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVCdWxrQm9va2luZ0NhbGVuZGFyU2xvdFN1Y2Nlc3NBY3Rpb24oKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUJ1bGtCb29raW5nQ2FsZW5kYXJTbG90RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogbmV3IEh0dHBFcnJvclJlc3BvbnNlKHtzdGF0dXM6IDQwMH0pfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihjcmVhdGVCb29raW5nQ2FsZW5kYXJTbG90RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICApKVxuICApKTtcblxuICB1cGRhdGVCb29raW5nQ2FsZW5kYXJTbG90JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKHVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgc2xvdH06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIHNsb3Q6IFBhcnRpYWw8Qm9va2luZ0NhbGVuZGFyU2xvdD5cbiAgICAgIH0pID0+IHRoaXMuYm9va2luZ0NhbGVuZGFyU2VydmljZS51cGRhdGVCb29raW5nQ2FsZW5kYXJTbG90KHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgey4uLnNsb3R9KS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoc2xvdDogQm9va2luZ0NhbGVuZGFyU2xvdCkgPT4gW1xuICAgICAgICAgIHVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTdWNjZXNzQWN0aW9uKHtzbG90OiBzbG90fSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3QkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdEFjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBzbG90LCBzZW5kTm90aWZpY2F0aW9ufToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgc2xvdDogQm9va2luZ0NhbGVuZGFyU2xvdCxcbiAgICAgICAgc2VuZE5vdGlmaWNhdGlvbjogYm9vbGVhblxuICAgICAgfSkgPT4gdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLmRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3Qocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBzbG90LmlkLCBzZW5kTm90aWZpY2F0aW9uKS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoKSA9PiBbXG4gICAgICAgICAgZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdFN1Y2Nlc3NBY3Rpb24oe3Nsb3Q6IHNsb3R9KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdEZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3QkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3RBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgc2xvdCwgZGVsZXRlRGF0ZXMsIHNlbmROb3RpZmljYXRpb259OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICBzbG90OiBCb29raW5nQ2FsZW5kYXJTbG90LFxuICAgICAgICBkZWxldGVEYXRlczogc3RyaW5nW10gfCBudWxsLFxuICAgICAgICBzZW5kTm90aWZpY2F0aW9uOiBib29sZWFuXG4gICAgICB9KSA9PiB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UuZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdFJlcGVhdGFibGUocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBzbG90LmlkLCBkZWxldGVEYXRlcywgc2VuZE5vdGlmaWNhdGlvbikucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKCkgPT4gW1xuICAgICAgICAgIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclJlcGVhdGFibGVTbG90U3VjY2Vzc0FjdGlvbih7c2xvdDogc2xvdH0pLFxuICAgICAgICBdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihkZWxldGVCb29raW5nQ2FsZW5kYXJSZXBlYXRhYmxlU2xvdEZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgY3JlYXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoY3JlYXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25BY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgc2Vzc2lvbn06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIHNlc3Npb246IFBhcnRpYWw8Qm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24+XG4gICAgICB9KSA9PiB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UuY3JlYXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24ocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCB7Li4uc2Vzc2lvbn0pLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKChzZXNzaW9uOiBCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbikgPT4gW1xuICAgICAgICAgIGNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uU3VjY2Vzc0FjdGlvbih7c2Vzc2lvbjogc2Vzc2lvbn0pLFxuICAgICAgICBdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihjcmVhdGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgY3JlYXRlQnVsa0Jvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9ucyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShjcmVhdGVCdWxrQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25zQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBpdGVtSWQsIHNlc3Npb25zfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBpdGVtSWQ6IHN0cmluZyxcbiAgICAgICAgc2Vzc2lvbnM6IEFycmF5PFBhcnRpYWw8Qm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24+PlxuICAgICAgfSkgPT4gdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZUJ1bGtCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbnMocm9sZSBhcyBSb2xlLCBpdGVtSWQsIHNlc3Npb25zKS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoc2Vzc2lvbjogUGFydGlhbDxCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbj4gfCBudWxsKSA9PiBbXG4gICAgICAgICAgY3JlYXRlQnVsa0Jvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uc1N1Y2Nlc3NBY3Rpb24oe3Nlc3Npb246IHNlc3Npb259KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoY3JlYXRlQnVsa0Jvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgdXBkYXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUodXBkYXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25BY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgc2Vzc2lvbn06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIHNlc3Npb246IFBhcnRpYWw8Qm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24+XG4gICAgICB9KSA9PiB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UudXBkYXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24ocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCB7Li4uc2Vzc2lvbn0pLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKChzZXNzaW9uOiBCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbikgPT4gW1xuICAgICAgICAgIHVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uU3VjY2Vzc0FjdGlvbih7c2Vzc2lvbjogc2Vzc2lvbn0pLFxuICAgICAgICBdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih1cGRhdGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25BY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgc2Vzc2lvbiwgc2VuZE5vdGlmaWNhdGlvbn06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIHNlc3Npb246IEJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uLFxuICAgICAgICBzZW5kTm90aWZpY2F0aW9uOiBib29sZWFuXG4gICAgICB9KSA9PiB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UuZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24ocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBzZXNzaW9uLmlkLCBzZW5kTm90aWZpY2F0aW9uKS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoKSA9PiBbXG4gICAgICAgICAgZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25TdWNjZXNzQWN0aW9uKHtzZXNzaW9uOiBzZXNzaW9ufSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICApKVxuICApKTtcblxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJSZXBlYXRhYmxlU2xvdFNlc3Npb24kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3RTZXNzaW9uQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHNlc3Npb24sIGRlbGV0ZURhdGVzLCBzZW5kTm90aWZpY2F0aW9ufToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgc2Vzc2lvbjogQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24sXG4gICAgICAgIGRlbGV0ZURhdGVzOiBzdHJpbmdbXSB8IG51bGwsXG4gICAgICAgIHNlbmROb3RpZmljYXRpb246IGJvb2xlYW5cbiAgICAgIH0pID0+IHRoaXMuYm9va2luZ0NhbGVuZGFyU2VydmljZS5kZWxldGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvblJlcGVhdGFibGUocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBzZXNzaW9uLmlkLCBkZWxldGVEYXRlcywgc2VuZE5vdGlmaWNhdGlvbikucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKCkgPT4gW1xuICAgICAgICAgIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclJlcGVhdGFibGVTbG90U2Vzc2lvblN1Y2Nlc3NBY3Rpb24oe3Nlc3Npb246IHNlc3Npb259KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3RTZXNzaW9uRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICApKVxuICApKTtcblxufVxuIl19
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va2luZy5lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi9zdG9yZS9lZmZlY3RzL2Jvb2tpbmcuZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0QsT0FBTyxFQUNMLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFDL0IsK0JBQStCLEVBQy9CLHVCQUF1QixFQUN2Qiw4QkFBOEIsRUFDOUIsOEJBQThCLEVBQzlCLDJCQUEyQixFQUMzQixrQ0FBa0MsRUFDbEMsK0JBQStCLEVBQy9CLHNDQUFzQyxFQUN0QyxzQ0FBc0MsRUFDdEMsNkNBQTZDLEVBQzdDLDZDQUE2QyxFQUM3QyxzQ0FBc0MsRUFDdEMsa0NBQWtDLEVBQ2xDLG1DQUFtQyxFQUNuQywwQ0FBMEMsRUFDMUMsMkNBQTJDLEVBQzNDLGtEQUFrRCxFQUNsRCxrREFBa0QsRUFDbEQsMENBQTBDLEVBQzFDLHVCQUF1QixFQUN2Qiw4QkFBOEIsRUFDOUIsOEJBQThCLEVBQzlCLDJCQUEyQixFQUMzQixrQ0FBa0MsRUFDbEMseUNBQXlDLEVBQ3pDLGdEQUFnRCxFQUNoRCxnREFBZ0QsRUFDaEQsdURBQXVELEVBQ3ZELHVEQUF1RCxFQUN2RCxnREFBZ0QsRUFDaEQsK0JBQStCLEVBQy9CLHNDQUFzQyxFQUN0QyxzQ0FBc0MsRUFDdEMsNkNBQTZDLEVBQzdDLDZDQUE2QyxFQUM3QyxzQ0FBc0MsRUFDdEMsa0NBQWtDLEVBQ2xDLHNCQUFzQixFQUN0Qiw2QkFBNkIsRUFDN0IsNkJB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Q0FBQyxnREFBZ0QsQ0FBQyxFQUN4RCxVQUFVLENBQ1IsQ0FBQyxFQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQU1wRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsMENBQTBDLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUN2SixRQUFRLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDYix1REFBdUQsQ0FBQyxFQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUMsQ0FBQztLQUM1RSxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLHVEQUF1RCxDQUFDLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUN4SCxDQUFDLENBQ0wsQ0FBQyxDQUFDO3VHQXhpQlEsY0FBYzsyR0FBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFjdGlvbnMsIGNyZWF0ZUVmZmVjdCwgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBleGhhdXN0TWFwLCBtYXAsIG1lcmdlTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBjcmVhdGVCb29rYWJsZUl0ZW1BY3Rpb24sXG4gIGNyZWF0ZUJvb2thYmxlSXRlbUZhaWx1cmVBY3Rpb24sXG4gIGNyZWF0ZUJvb2thYmxlSXRlbVN1Y2Nlc3NBY3Rpb24sXG4gIGNyZWF0ZUJvb2thYmxlVGFnQWN0aW9uLFxuICBjcmVhdGVCb29rYWJsZVRhZ0ZhaWx1cmVBY3Rpb24sXG4gIGNyZWF0ZUJvb2thYmxlVGFnU3VjY2Vzc0FjdGlvbixcbiAgY3JlYXRlQm9va2luZ0NhbGVuZGFyQWN0aW9uLFxuICBjcmVhdGVCb29raW5nQ2FsZW5kYXJGYWlsdXJlQWN0aW9uLFxuICBjcmVhdGVCb29raW5nQ2FsZW5kYXJTbG90QWN0aW9uLFxuICBjcmVhdGVCb29raW5nQ2FsZW5kYXJTbG90RmFpbHVyZUFjdGlvbixcbiAgY3JlYXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25BY3Rpb24sXG4gIGNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uRmFpbHVyZUFjdGlvbixcbiAgY3JlYXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25TdWNjZXNzQWN0aW9uLFxuICBjcmVhdGVCb29raW5nQ2FsZW5kYXJTbG90U3VjY2Vzc0FjdGlvbixcbiAgY3JlYXRlQm9va2luZ0NhbGVuZGFyU3VjY2Vzc0FjdGlvbixcbiAgY3JlYXRlQnVsa0Jvb2tpbmdDYWxlbmRhclNsb3RBY3Rpb24sXG4gIGNyZWF0ZUJ1bGtCb29raW5nQ2FsZW5kYXJTbG90RmFpbHVyZUFjdGlvbixcbiAgY3JlYXRlQnVsa0Jvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uc0FjdGlvbixcbiAgY3JlYXRlQnVsa0Jvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uc0ZhaWx1cmVBY3Rpb24sXG4gIGNyZWF0ZUJ1bGtCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbnNTdWNjZXNzQWN0aW9uLFxuICBjcmVhdGVCdWxrQm9va2luZ0NhbGVuZGFyU2xvdFN1Y2Nlc3NBY3Rpb24sXG4gIGRlbGV0ZUJvb2thYmxlVGFnQWN0aW9uLFxuICBkZWxldGVCb29rYWJsZVRhZ0ZhaWx1cmVBY3Rpb24sXG4gIGRlbGV0ZUJvb2thYmxlVGFnU3VjY2Vzc0FjdGlvbixcbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyQWN0aW9uLFxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJGYWlsdXJlQWN0aW9uLFxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJSZXBlYXRhYmxlU2xvdEFjdGlvbixcbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3RGYWlsdXJlQWN0aW9uLFxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJSZXBlYXRhYmxlU2xvdFNlc3Npb25BY3Rpb24sXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclJlcGVhdGFibGVTbG90U2Vzc2lvbkZhaWx1cmVBY3Rpb24sXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclJlcGVhdGFibGVTbG90U2Vzc2lvblN1Y2Nlc3NBY3Rpb24sXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclJlcGVhdGFibGVTbG90U3VjY2Vzc0FjdGlvbixcbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdEFjdGlvbixcbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdEZhaWx1cmVBY3Rpb24sXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uQWN0aW9uLFxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkZhaWx1cmVBY3Rpb24sXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uU3VjY2Vzc0FjdGlvbixcbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdFN1Y2Nlc3NBY3Rpb24sXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclN1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RBY3Rpdml0eVR5cGVBY3Rpb24sXG4gIGxpc3RBY3Rpdml0eVR5cGVGYWlsdXJlQWN0aW9uLFxuICBsaXN0QWN0aXZpdHlUeXBlU3VjY2Vzc0FjdGlvbixcbiAgbGlzdEJvb2thYmxlSXRlbUFjdGlvbixcbiAgbGlzdEJvb2thYmxlSXRlbUZhaWx1cmVBY3Rpb24sXG4gIGxpc3RCb29rYWJsZUl0ZW1TdWNjZXNzQWN0aW9uLFxuICBsaXN0Qm9va2FibGVUYWdBY3Rpb24sXG4gIGxpc3RCb29rYWJsZVRhZ0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RCb29rYWJsZVRhZ1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RDYWxlbmRhckFjdGlvbixcbiAgbGlzdENhbGVuZGFyRmFpbHVyZUFjdGlvbixcbiAgbGlzdENhbGVuZGFyU3VjY2Vzc0FjdGlvbixcbiAgbGlzdExvY2F0aW9uQWN0aW9uLFxuICBsaXN0TG9jYXRpb25GYWlsdXJlQWN0aW9uLFxuICBsaXN0TG9jYXRpb25TdWNjZXNzQWN0aW9uLFxuICBsaXN0TWVtYmVyQm9va2luZ0NhbGVuZGFyQm9va2FibGVTbG90c0FjdGlvbixcbiAgbGlzdE1lbWJlckJvb2tpbmdDYWxlbmRhckJvb2thYmxlU2xvdHNGYWlsdXJlQWN0aW9uLFxuICBsaXN0TWVtYmVyQm9va2luZ0NhbGVuZGFyQm9va2FibGVTbG90c1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RNZW1iZXJCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkFjdGlvbixcbiAgbGlzdE1lbWJlckJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uRmFpbHVyZUFjdGlvbixcbiAgbGlzdE1lbWJlckJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uU3VjY2Vzc0FjdGlvbixcbiAgbGlzdE1lbWJlckNhbGVuZGFyQWN0aW9uLFxuICBsaXN0TWVtYmVyQ2FsZW5kYXJGYWlsdXJlQWN0aW9uLFxuICBsaXN0TWVtYmVyQ2FsZW5kYXJTdWNjZXNzQWN0aW9uLFxuICBsaXN0VGVhbUFjdGlvbixcbiAgbGlzdFRlYW1GYWlsdXJlQWN0aW9uLFxuICBsaXN0VGVhbVN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlQm9va2luZ1NldHRpbmdzQWN0aW9uLFxuICByZXRyaWV2ZUJvb2tpbmdTZXR0aW5nc0ZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlQm9va2luZ1NldHRpbmdzU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVTZXR0aW5nc0FjdGlvbixcbiAgcmV0cmlldmVTZXR0aW5nc0ZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlU2V0dGluZ3NTdWNjZXNzQWN0aW9uLFxuICB1cGRhdGVBY3Rpdml0eVR5cGVBY3Rpb24sXG4gIHVwZGF0ZUFjdGl2aXR5VHlwZUZhaWx1cmVBY3Rpb24sXG4gIHVwZGF0ZUFjdGl2aXR5VHlwZVN1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZUJvb2thYmxlSXRlbUFjdGlvbixcbiAgdXBkYXRlQm9va2FibGVJdGVtRmFpbHVyZUFjdGlvbixcbiAgdXBkYXRlQm9va2FibGVJdGVtU3VjY2Vzc0FjdGlvbixcbiAgdXBkYXRlQm9va2FibGVUYWdBY3Rpb24sXG4gIHVwZGF0ZUJvb2thYmxlVGFnRmFpbHVyZUFjdGlvbixcbiAgdXBkYXRlQm9va2FibGVUYWdTdWNjZXNzQWN0aW9uLFxuICB1cGRhdGVCb29raW5nQ2FsZW5kYXJBY3Rpb24sXG4gIHVwZGF0ZUJvb2tpbmdDYWxlbmRhckZhaWx1cmVBY3Rpb24sXG4gIHVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RBY3Rpb24sXG4gIHVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RGYWlsdXJlQWN0aW9uLFxuICB1cGRhdGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkFjdGlvbixcbiAgdXBkYXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25GYWlsdXJlQWN0aW9uLFxuICB1cGRhdGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvblN1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTdWNjZXNzQWN0aW9uLFxuICB1cGRhdGVCb29raW5nQ2FsZW5kYXJTdWNjZXNzQWN0aW9uLFxuICB1cGRhdGVCb29raW5nU2V0dGluZ3NBY3Rpb24sXG4gIHVwZGF0ZUJvb2tpbmdTZXR0aW5nc0ZhaWx1cmVBY3Rpb24sXG4gIHVwZGF0ZUJvb2tpbmdTZXR0aW5nc1N1Y2Nlc3NBY3Rpb25cbn0gZnJvbSAnLi4vYWN0aW9ucyc7XG5pbXBvcnQge1xuICBBY3Rpdml0eUxvY2F0aW9uLFxuICBBY3Rpdml0eVNldHRpbmdzLFxuICBBY3Rpdml0eVR5cGUsXG4gIEJvb2thYmxlSXRlbSxcbiAgQm9va2FibGVUYWcsXG4gIEJvb2tpbmdDYWxlbmRhcixcbiAgQm9va2luZ0NhbGVuZGFyU2xvdCxcbiAgQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24sXG4gIEJvb2tpbmdTZXR0aW5ncyxcbiAgQ29sbGVjdGlvbixcbiAgUm9sZSxcbiAgU2VhcmNoVGVhbSxcbn0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IEFjdGl2aXR5U2VydmljZSwgQm9va2FibGVTZXJ2aWNlLCBCb29raW5nQ2FsZW5kYXJTZXJ2aWNlLCBUZWFtU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZvcmtKb2luLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEJvb2tpbmdFZmZlY3RzIHtcbiAgcHJpdmF0ZSBhY3Rpb25zJCA9IGluamVjdChBY3Rpb25zKTtcbiAgcHJpdmF0ZSBib29raW5nQ2FsZW5kYXJTZXJ2aWNlID0gaW5qZWN0KEJvb2tpbmdDYWxlbmRhclNlcnZpY2UpO1xuICBwcml2YXRlIGJvb2thYmxlU2VydmljZSA9IGluamVjdChCb29rYWJsZVNlcnZpY2UpO1xuICBwcml2YXRlIGFjdGl2aXR5U2VydmljZSA9IGluamVjdChBY3Rpdml0eVNlcnZpY2UpO1xuICBwcml2YXRlIHRlYW1TZXJ2aWNlID0gaW5qZWN0KFRlYW1TZXJ2aWNlKTtcblxuICBsaXN0Q2FsZW5kYXJzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGxpc3RDYWxlbmRhckFjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZ1xuICAgICAgfSkgPT4gdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLmdldEJvb2tpbmdDYWxlbmRhcnMocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkKS5waXBlKFxuICAgICAgICBtYXAoXG4gICAgICAgICAgKGNhbGVuZGFyczogQ29sbGVjdGlvbjxCb29raW5nQ2FsZW5kYXI+KSA9PiBsaXN0Q2FsZW5kYXJTdWNjZXNzQWN0aW9uKHtib29raW5nQ2FsZW5kYXJzOiBjYWxlbmRhcnMudG9BcnJheSgpfSksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICksXG4gICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihsaXN0Q2FsZW5kYXJGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSksXG4gICkpO1xuXG4gIGxpc3RNZW1iZXJDYWxlbmRhcnMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsaXN0TWVtYmVyQ2FsZW5kYXJBY3Rpb24pLFxuICAgICAgbWVyZ2VNYXAoKHttZW1iZXJJZHN9OiB7IG1lbWJlcklkczogQXJyYXk8c3RyaW5nPiB9KSA9PlxuICAgICAgICBmb3JrSm9pbihcbiAgICAgICAgICBtZW1iZXJJZHMubWFwKChpZDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLmdldEJvb2tpbmdDYWxlbmRhcnMoUm9sZS5NZW1iZXJBZG1pbiwgaWQpXG4gICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoY2FsZW5kYXJzOiBDb2xsZWN0aW9uPEJvb2tpbmdDYWxlbmRhcj4pID0+ICh7aWQsIGNhbGVuZGFyczogY2FsZW5kYXJzLnRvQXJyYXkoKX0pKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHtpZCwgZXJyb3J9KSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKS5waXBlKFxuICAgICAgICAgIG1lcmdlTWFwKChyZXN1bHRzOiBBcnJheTx7IGlkOiBzdHJpbmcsIGNhbGVuZGFycz86IEFycmF5PEJvb2tpbmdDYWxlbmRhcj4sIGVycm9yPzogSHR0cEVycm9yUmVzcG9uc2UgfT4pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNhbGVuZGFyTWFwID0gbmV3IE1hcDxzdHJpbmcsIEFycmF5PEJvb2tpbmdDYWxlbmRhcj4+KCk7XG4gICAgICAgICAgICBjb25zdCBlcnJvcnMgPSByZXN1bHRzLmZpbHRlcihyZXN1bHQgPT4gcmVzdWx0LmVycm9yKTtcbiAgICAgICAgICAgIGlmIChlcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHJldHVybiBvZihsaXN0TWVtYmVyQ2FsZW5kYXJGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcnNbMF0uZXJyb3IgYXMgSHR0cEVycm9yUmVzcG9uc2V9KSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc3VsdHMuZm9yRWFjaCgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChyZXN1bHQuY2FsZW5kYXJzKSB7XG4gICAgICAgICAgICAgICAgY2FsZW5kYXJNYXAuc2V0KHJlc3VsdC5pZCwgcmVzdWx0LmNhbGVuZGFycyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gb2YobGlzdE1lbWJlckNhbGVuZGFyU3VjY2Vzc0FjdGlvbih7Ym9va2luZ0NhbGVuZGFyc01hcDogY2FsZW5kYXJNYXB9KSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsaXN0TWVtYmVyU2Vzc2lvbnMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsaXN0TWVtYmVyQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25BY3Rpb24pLFxuICAgICAgbWVyZ2VNYXAoKHttZW1iZXJJZHN9OiB7IG1lbWJlcklkczogQXJyYXk8c3RyaW5nPiB9KSA9PlxuICAgICAgICBmb3JrSm9pbihcbiAgICAgICAgICBtZW1iZXJJZHMubWFwKChpZDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLmdldE1lbWJlckJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9ucyhpZClcbiAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChzZXNzaW9uczogQ29sbGVjdGlvbjxCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbj4pID0+ICh7aWQsIHNlc3Npb25zOiBzZXNzaW9ucy50b0FycmF5KCl9KSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih7aWQsIGVycm9yfSkpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgICkucGlwZShcbiAgICAgICAgICBtZXJnZU1hcCgocmVzdWx0czogQXJyYXk8e1xuICAgICAgICAgICAgaWQ6IHN0cmluZyxcbiAgICAgICAgICAgIHNlc3Npb25zPzogQXJyYXk8Qm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24+LFxuICAgICAgICAgICAgZXJyb3I/OiBIdHRwRXJyb3JSZXNwb25zZVxuICAgICAgICAgIH0+KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZXNzaW9uc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBBcnJheTxCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbj4+KCk7XG4gICAgICAgICAgICBjb25zdCBlcnJvcnMgPSByZXN1bHRzLmZpbHRlcihyZXN1bHQgPT4gcmVzdWx0LmVycm9yKTtcbiAgICAgICAgICAgIGlmIChlcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHJldHVybiBvZihsaXN0TWVtYmVyQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25GYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcnNbMF0uZXJyb3IgYXMgSHR0cEVycm9yUmVzcG9uc2V9KSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc3VsdHMuZm9yRWFjaCgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChyZXN1bHQuc2Vzc2lvbnMpIHtcbiAgICAgICAgICAgICAgICBzZXNzaW9uc01hcC5zZXQocmVzdWx0LmlkLCByZXN1bHQuc2Vzc2lvbnMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIG9mKGxpc3RNZW1iZXJCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvblN1Y2Nlc3NBY3Rpb24oe3Nlc3Npb25zTWFwOiBzZXNzaW9uc01hcH0pKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGxpc3RNZW1iZXJCb29rYWJsZVNsb3RzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUobGlzdE1lbWJlckJvb2tpbmdDYWxlbmRhckJvb2thYmxlU2xvdHNBY3Rpb24pLFxuICAgICAgbWVyZ2VNYXAoKHtib29rYWJsZUlkLCBtZW1iZXJJZHMsIHN0YXJ0RGF0ZSwgZW5kRGF0ZX06IHtcbiAgICAgICAgICBib29rYWJsZUlkOiBzdHJpbmcsXG4gICAgICAgICAgbWVtYmVySWRzOiBBcnJheTxzdHJpbmc+LFxuICAgICAgICAgIHN0YXJ0RGF0ZTogc3RyaW5nLFxuICAgICAgICAgIGVuZERhdGU6IHN0cmluZ1xuICAgICAgICB9KSA9PlxuICAgICAgICAgIGZvcmtKb2luKFxuICAgICAgICAgICAgbWVtYmVySWRzLm1hcCgoaWQ6IHN0cmluZykgPT5cbiAgICAgICAgICAgICAgdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLmdldE1lbWJlckJvb2tpbmdDYWxlbmRhckJvb2thYmxlU2xvdHMoaWQsIGJvb2thYmxlSWQsIHN0YXJ0RGF0ZSwgZW5kRGF0ZSlcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgIG1hcCgoc2xvdHM6IENvbGxlY3Rpb248Qm9va2luZ0NhbGVuZGFyU2xvdD4pID0+ICh7aWQsIHNsb3RzOiBzbG90cy50b0FycmF5KCl9KSksXG4gICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHtpZCwgZXJyb3J9KSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgKS5waXBlKFxuICAgICAgICAgICAgbWVyZ2VNYXAoKHJlc3VsdHM6IEFycmF5PHsgaWQ6IHN0cmluZywgc2xvdHM/OiBBcnJheTxCb29raW5nQ2FsZW5kYXJTbG90PiwgZXJyb3I/OiBIdHRwRXJyb3JSZXNwb25zZSB9PikgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBzbG90c01hcCA9IG5ldyBNYXA8c3RyaW5nLCBBcnJheTxCb29raW5nQ2FsZW5kYXJTbG90Pj4oKTtcbiAgICAgICAgICAgICAgY29uc3QgZXJyb3JzID0gcmVzdWx0cy5maWx0ZXIocmVzdWx0ID0+IHJlc3VsdC5lcnJvcik7XG4gICAgICAgICAgICAgIGlmIChlcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKGxpc3RNZW1iZXJCb29raW5nQ2FsZW5kYXJCb29rYWJsZVNsb3RzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3JzWzBdLmVycm9yIGFzIEh0dHBFcnJvclJlc3BvbnNlfSkpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmVzdWx0cy5mb3JFYWNoKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnNsb3RzKSB7XG4gICAgICAgICAgICAgICAgICBzbG90c01hcC5zZXQocmVzdWx0LmlkLCByZXN1bHQuc2xvdHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIG9mKGxpc3RNZW1iZXJCb29raW5nQ2FsZW5kYXJCb29rYWJsZVNsb3RzU3VjY2Vzc0FjdGlvbih7c2xvdHNNYXA6IHNsb3RzTWFwfSkpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGxpc3RMb2NhdGlvbnMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUobGlzdExvY2F0aW9uQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWR9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nXG4gICAgICB9KSA9PiB0aGlzLmFjdGl2aXR5U2VydmljZS5nZXRBY3Rpdml0eUxvY2F0aW9ucyhyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHRydWUpLnBpcGUoXG4gICAgICAgIG1hcChcbiAgICAgICAgICAobG9jYXRpb25zOiBDb2xsZWN0aW9uPEFjdGl2aXR5TG9jYXRpb24+IHwgdW5kZWZpbmVkKSA9PiBsaXN0TG9jYXRpb25TdWNjZXNzQWN0aW9uKHtsb2NhdGlvbnM6IChsb2NhdGlvbnMgYXMgQ29sbGVjdGlvbjxBY3Rpdml0eUxvY2F0aW9uPikudG9BcnJheSgpfSksXG4gICAgICAgICksXG4gICAgICApXG4gICAgKSxcbiAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxpc3RMb2NhdGlvbkZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKSxcbiAgKSk7XG5cbiAgbGlzdEJvb2thYmxlSXRlbXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUobGlzdEJvb2thYmxlSXRlbUFjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZ1xuICAgICAgfSkgPT4gdGhpcy5ib29rYWJsZVNlcnZpY2UuZ2V0Qm9va2FibGVJdGVtcyhyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQpLnBpcGUoXG4gICAgICAgIG1hcChcbiAgICAgICAgICAoYm9va2FibGVJdGVtczogQ29sbGVjdGlvbjxCb29rYWJsZUl0ZW0+IHwgdW5kZWZpbmVkKSA9PiBsaXN0Qm9va2FibGVJdGVtU3VjY2Vzc0FjdGlvbih7aXRlbXM6IChib29rYWJsZUl0ZW1zIGFzIENvbGxlY3Rpb248Qm9va2FibGVJdGVtPikudG9BcnJheSgpfSksXG4gICAgICAgICksXG4gICAgICApXG4gICAgKSxcbiAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxpc3RCb29rYWJsZUl0ZW1GYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSksXG4gICkpO1xuXG4gIGxpc3RCb29rYWJsZVRhZ3MkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUobGlzdEJvb2thYmxlVGFnQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWR9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nXG4gICAgICB9KSA9PiB0aGlzLmJvb2thYmxlU2VydmljZS5nZXRCb29rYWJsZVRhZ3Mocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkKS5waXBlKFxuICAgICAgICBtYXAoXG4gICAgICAgICAgKGJvb2thYmxlVGFnczogQ29sbGVjdGlvbjxCb29rYWJsZVRhZz4gfCB1bmRlZmluZWQpID0+IGxpc3RCb29rYWJsZVRhZ1N1Y2Nlc3NBY3Rpb24oe3RhZ3M6IChib29rYWJsZVRhZ3MgYXMgQ29sbGVjdGlvbjxCb29rYWJsZVRhZz4pLnRvQXJyYXkoKX0pLFxuICAgICAgICApLFxuICAgICAgKVxuICAgICksXG4gICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihsaXN0Qm9va2FibGVUYWdGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSksXG4gICkpO1xuXG4gIGxpc3RUZWFtcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShsaXN0VGVhbUFjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZ1xuICAgICAgfSkgPT4gdGhpcy50ZWFtU2VydmljZS5nZXRUZWFtcyhyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQpLnBpcGUoXG4gICAgICAgIG1hcChcbiAgICAgICAgICAodGVhbXM6IENvbGxlY3Rpb248U2VhcmNoVGVhbT4pID0+IGxpc3RUZWFtU3VjY2Vzc0FjdGlvbih7dGVhbXM6IHRlYW1zLnRvQXJyYXkoKX0pLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICApLFxuICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdFRlYW1GYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSksXG4gICkpO1xuXG4gIHJldHJpZXZlU2V0dGluZ3MkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUocmV0cmlldmVTZXR0aW5nc0FjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZ1xuICAgICAgfSkgPT4gdGhpcy5hY3Rpdml0eVNlcnZpY2UuZ2V0QWN0aXZpdHlTZXR0aW5ncyhyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQpLnBpcGUoXG4gICAgICAgIG1hcChcbiAgICAgICAgICAoc2V0dGluZ3M6IEFjdGl2aXR5U2V0dGluZ3MpID0+IHJldHJpZXZlU2V0dGluZ3NTdWNjZXNzQWN0aW9uKHtzZXR0aW5nczogc2V0dGluZ3N9KSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKSxcbiAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlU2V0dGluZ3NGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSksXG4gICkpXG5cbiAgcmV0cmlldmVCb29raW5nU2V0dGluZ3MkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUocmV0cmlldmVCb29raW5nU2V0dGluZ3NBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmdcbiAgICAgIH0pID0+IHRoaXMuYm9va2luZ0NhbGVuZGFyU2VydmljZS5nZXRCb29raW5nU2V0dGluZ3Mocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkKS5waXBlKFxuICAgICAgICBtYXAoXG4gICAgICAgICAgKGJvb2tpbmdTZXR0aW5nczogQm9va2luZ1NldHRpbmdzKSA9PiByZXRyaWV2ZUJvb2tpbmdTZXR0aW5nc1N1Y2Nlc3NBY3Rpb24oe3NldHRpbmdzOiBib29raW5nU2V0dGluZ3N9KSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKSxcbiAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlQm9va2luZ1NldHRpbmdzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpLFxuICApKVxuXG4gIGxpc3RBY3Rpdml0eVR5cGVzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGxpc3RBY3Rpdml0eVR5cGVBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmdcbiAgICAgIH0pID0+IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLmdldEFjdGl2aXR5VHlwZXMocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkKS5waXBlKFxuICAgICAgICBtYXAoXG4gICAgICAgICAgKGFjdGl2aXR5VHlwZXM6IENvbGxlY3Rpb248QWN0aXZpdHlUeXBlPikgPT4gbGlzdEFjdGl2aXR5VHlwZVN1Y2Nlc3NBY3Rpb24oe2FjdGl2aXR5VHlwZXM6IGFjdGl2aXR5VHlwZXMudG9BcnJheSgpfSksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICksXG4gICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihsaXN0QWN0aXZpdHlUeXBlRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpLFxuICApKTtcblxuICB1cGRhdGVBY3Rpdml0eVR5cGUkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUodXBkYXRlQWN0aXZpdHlUeXBlQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIGFjdGl2aXR5VHlwZX06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIGFjdGl2aXR5VHlwZTogQWN0aXZpdHlUeXBlXG4gICAgICB9KSA9PiB0aGlzLmFjdGl2aXR5U2VydmljZS51cGRhdGVBY3Rpdml0eVR5cGUocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBhY3Rpdml0eVR5cGUpLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKChhY3Rpdml0eVR5cGU6IEFjdGl2aXR5VHlwZSkgPT4gW1xuICAgICAgICAgIHVwZGF0ZUFjdGl2aXR5VHlwZVN1Y2Nlc3NBY3Rpb24oe2FjdGl2aXR5VHlwZTogYWN0aXZpdHlUeXBlfSksXG4gICAgICAgICAgbGlzdEFjdGl2aXR5VHlwZUFjdGlvbih7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHVwZGF0ZUFjdGl2aXR5VHlwZUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgY3JlYXRlQm9va2FibGVJdGVtJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGNyZWF0ZUJvb2thYmxlSXRlbUFjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBpdGVtfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgaXRlbTogUGFydGlhbDxCb29rYWJsZUl0ZW0+XG4gICAgICB9KSA9PiB0aGlzLmJvb2thYmxlU2VydmljZS5jcmVhdGVCb29rYWJsZUl0ZW0ocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCB7Li4uaXRlbX0pLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKChib29rYWJsZUl0ZW06IEJvb2thYmxlSXRlbSkgPT4gW1xuICAgICAgICAgIGNyZWF0ZUJvb2thYmxlSXRlbVN1Y2Nlc3NBY3Rpb24oe2l0ZW06IGJvb2thYmxlSXRlbX0pLFxuICAgICAgICAgIGxpc3RCb29rYWJsZUl0ZW1BY3Rpb24oe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH0pLFxuICAgICAgICBdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihjcmVhdGVCb29rYWJsZUl0ZW1GYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIHVwZGF0ZUJvb2thYmxlSXRlbSQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZSh1cGRhdGVCb29rYWJsZUl0ZW1BY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgaXRlbX06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIGl0ZW06IFBhcnRpYWw8Qm9va2FibGVJdGVtPlxuICAgICAgfSkgPT4gdGhpcy5ib29rYWJsZVNlcnZpY2UudXBkYXRlQm9va2FibGVJdGVtKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgey4uLml0ZW19KS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoYm9va2FibGVJdGVtOiBCb29rYWJsZUl0ZW0pID0+IFtcbiAgICAgICAgICB1cGRhdGVCb29rYWJsZUl0ZW1TdWNjZXNzQWN0aW9uKHtpdGVtOiBib29rYWJsZUl0ZW19KSxcbiAgICAgICAgICBsaXN0Qm9va2FibGVJdGVtQWN0aW9uKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWR9KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YodXBkYXRlQm9va2FibGVJdGVtRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICApKVxuICApKTtcblxuICBjcmVhdGVCb29rYWJsZVRhZyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShjcmVhdGVCb29rYWJsZVRhZ0FjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCB0YWd9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICB0YWc6IFBhcnRpYWw8Qm9va2FibGVUYWc+XG4gICAgICB9KSA9PiB0aGlzLmJvb2thYmxlU2VydmljZS5jcmVhdGVCb29rYWJsZVRhZyhyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHsuLi50YWd9KS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgodGFnOiBCb29rYWJsZVRhZykgPT4gW1xuICAgICAgICAgIGNyZWF0ZUJvb2thYmxlVGFnU3VjY2Vzc0FjdGlvbih7dGFnOiB0YWd9KSxcbiAgICAgICAgICBsaXN0Qm9va2FibGVUYWdBY3Rpb24oe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH0pLFxuICAgICAgICBdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihjcmVhdGVCb29rYWJsZVRhZ0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgdXBkYXRlQm9va2FibGVUYWckID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUodXBkYXRlQm9va2FibGVUYWdBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgdGFnfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgdGFnOiBQYXJ0aWFsPEJvb2thYmxlVGFnPlxuICAgICAgfSkgPT4gdGhpcy5ib29rYWJsZVNlcnZpY2UudXBkYXRlQm9va2FibGVUYWcocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCB7Li4udGFnfSkucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKHRhZzogQm9va2FibGVUYWcpID0+IFtcbiAgICAgICAgICB1cGRhdGVCb29rYWJsZVRhZ1N1Y2Nlc3NBY3Rpb24oe3RhZzogdGFnfSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHVwZGF0ZUJvb2thYmxlVGFnRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICApKVxuICApKTtcblxuICBkZWxldGVCb29rYWJsZVRhZyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShkZWxldGVCb29rYWJsZVRhZ0FjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCB0YWd9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICB0YWc6IEJvb2thYmxlVGFnXG4gICAgICB9KSA9PiB0aGlzLmJvb2thYmxlU2VydmljZS5kZWxldGVCb29rYWJsZVRhZyhyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHRhZykucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKCkgPT4gW1xuICAgICAgICAgIGRlbGV0ZUJvb2thYmxlVGFnU3VjY2Vzc0FjdGlvbih7dGFnOiB0YWd9KSxcbiAgICAgICAgICBsaXN0Qm9va2FibGVUYWdBY3Rpb24oe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH0pLFxuICAgICAgICBdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihkZWxldGVCb29rYWJsZVRhZ0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgY3JlYXRlQm9va2luZ0NhbGVuZGFyJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGNyZWF0ZUJvb2tpbmdDYWxlbmRhckFjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBjYWxlbmRhcn06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIGNhbGVuZGFyOiBQYXJ0aWFsPEJvb2tpbmdDYWxlbmRhcj5cbiAgICAgIH0pID0+IHRoaXMuYm9va2luZ0NhbGVuZGFyU2VydmljZS5jcmVhdGVCb29raW5nQ2FsZW5kYXIocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCB7Li4uY2FsZW5kYXJ9KS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoYm9va2luZ0NhbGVuZGFyOiBCb29raW5nQ2FsZW5kYXIpID0+IFtcbiAgICAgICAgICBjcmVhdGVCb29raW5nQ2FsZW5kYXJTdWNjZXNzQWN0aW9uKHtjYWxlbmRhcjogYm9va2luZ0NhbGVuZGFyfSksXG4gICAgICAgICAgbGlzdENhbGVuZGFyQWN0aW9uKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWR9KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoY3JlYXRlQm9va2luZ0NhbGVuZGFyRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICApKVxuICApKTtcblxuICB1cGRhdGVCb29raW5nQ2FsZW5kYXIkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUodXBkYXRlQm9va2luZ0NhbGVuZGFyQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIGNhbGVuZGFyfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgY2FsZW5kYXI6IFBhcnRpYWw8Qm9va2luZ0NhbGVuZGFyPlxuICAgICAgfSkgPT4gdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZUJvb2tpbmdDYWxlbmRhcihyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHsuLi5jYWxlbmRhcn0pLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKChib29raW5nQ2FsZW5kYXI6IEJvb2tpbmdDYWxlbmRhcikgPT4gW1xuICAgICAgICAgIHVwZGF0ZUJvb2tpbmdDYWxlbmRhclN1Y2Nlc3NBY3Rpb24oe2NhbGVuZGFyOiBib29raW5nQ2FsZW5kYXJ9KSxcbiAgICAgICAgICBsaXN0Q2FsZW5kYXJBY3Rpb24oe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH0pLFxuICAgICAgICBdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih1cGRhdGVCb29raW5nQ2FsZW5kYXJGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhciQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShkZWxldGVCb29raW5nQ2FsZW5kYXJBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgY2FsZW5kYXJ9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICBjYWxlbmRhcjogQm9va2luZ0NhbGVuZGFyXG4gICAgICB9KSA9PiB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UuZGVsZXRlQm9va2luZ0NhbGVuZGFyKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgY2FsZW5kYXIuaWQpLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKCgpID0+IFtcbiAgICAgICAgICBkZWxldGVCb29raW5nQ2FsZW5kYXJTdWNjZXNzQWN0aW9uKHtjYWxlbmRhcjogY2FsZW5kYXJ9KSxcbiAgICAgICAgICBsaXN0Q2FsZW5kYXJBY3Rpb24oe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH0pLFxuICAgICAgICBdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihkZWxldGVCb29raW5nQ2FsZW5kYXJGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIHVwZGF0ZUJvb2tpbmdTZXR0aW5ncyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZSh1cGRhdGVCb29raW5nU2V0dGluZ3NBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgc2V0dGluZ3N9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICBzZXR0aW5nczogQm9va2luZ1NldHRpbmdzXG4gICAgICB9KSA9PiB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UudXBkYXRlQm9va2luZ1NldHRpbmdzKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgc2V0dGluZ3MpLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKChuZXdTZXR0aW5nczogQm9va2luZ1NldHRpbmdzKSA9PiBbXG4gICAgICAgICAgdXBkYXRlQm9va2luZ1NldHRpbmdzU3VjY2Vzc0FjdGlvbih7c2V0dGluZ3M6IG5ld1NldHRpbmdzfSksXG4gICAgICAgICAgcmV0cmlldmVCb29raW5nU2V0dGluZ3NBY3Rpb24oe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH0pLFxuICAgICAgICBdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih1cGRhdGVCb29raW5nU2V0dGluZ3NGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIGNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3QkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoY3JlYXRlQm9va2luZ0NhbGVuZGFyU2xvdEFjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBzbG90fToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgc2xvdDogUGFydGlhbDxCb29raW5nQ2FsZW5kYXJTbG90PlxuICAgICAgfSkgPT4gdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3Qocm9sZSBhcyBSb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHsuLi5zbG90fSkucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKHNsb3Q6IEJvb2tpbmdDYWxlbmRhclNsb3QpID0+IFtcbiAgICAgICAgICBjcmVhdGVCb29raW5nQ2FsZW5kYXJTbG90U3VjY2Vzc0FjdGlvbih7c2xvdDogc2xvdH0pLFxuICAgICAgICBdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihjcmVhdGVCb29raW5nQ2FsZW5kYXJTbG90RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICApKVxuICApKTtcblxuICBjcmVhdGVCdWxrQm9va2luZ0NhbGVuZGFyU2xvdCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShjcmVhdGVCdWxrQm9va2luZ0NhbGVuZGFyU2xvdEFjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBzbG90c306IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIHNsb3RzOiBBcnJheTxQYXJ0aWFsPEJvb2tpbmdDYWxlbmRhclNsb3Q+PlxuICAgICAgfSkgPT4gdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZUJ1bGtCb29raW5nQ2FsZW5kYXJTbG90cyhyb2xlIGFzIFJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgc2xvdHMpLnBpcGUoXG4gICAgICAgIG1hcCgoc3VjY2VzczogYm9vbGVhbikgPT4ge1xuICAgICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlQnVsa0Jvb2tpbmdDYWxlbmRhclNsb3RTdWNjZXNzQWN0aW9uKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVCdWxrQm9va2luZ0NhbGVuZGFyU2xvdEZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IG5ldyBIdHRwRXJyb3JSZXNwb25zZSh7c3RhdHVzOiA0MDB9KX0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoY3JlYXRlQm9va2luZ0NhbGVuZGFyU2xvdEZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgdXBkYXRlQm9va2luZ0NhbGVuZGFyU2xvdCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZSh1cGRhdGVCb29raW5nQ2FsZW5kYXJTbG90QWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHNsb3R9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICBzbG90OiBQYXJ0aWFsPEJvb2tpbmdDYWxlbmRhclNsb3Q+XG4gICAgICB9KSA9PiB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UudXBkYXRlQm9va2luZ0NhbGVuZGFyU2xvdChyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHsuLi5zbG90fSkucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKHNsb3Q6IEJvb2tpbmdDYWxlbmRhclNsb3QpID0+IFtcbiAgICAgICAgICB1cGRhdGVCb29raW5nQ2FsZW5kYXJTbG90U3VjY2Vzc0FjdGlvbih7c2xvdDogc2xvdH0pLFxuICAgICAgICBdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih1cGRhdGVCb29raW5nQ2FsZW5kYXJTbG90RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICApKVxuICApKTtcblxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJTbG90JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3RBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgc2xvdCwgc2VuZE5vdGlmaWNhdGlvbn06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIHNsb3Q6IEJvb2tpbmdDYWxlbmRhclNsb3QsXG4gICAgICAgIHNlbmROb3RpZmljYXRpb246IGJvb2xlYW5cbiAgICAgIH0pID0+IHRoaXMuYm9va2luZ0NhbGVuZGFyU2VydmljZS5kZWxldGVCb29raW5nQ2FsZW5kYXJTbG90KHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgc2xvdC5pZCwgc2VuZE5vdGlmaWNhdGlvbikucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKCkgPT4gW1xuICAgICAgICAgIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3RTdWNjZXNzQWN0aW9uKHtzbG90OiBzbG90fSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3RGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclJlcGVhdGFibGVTbG90JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGRlbGV0ZUJvb2tpbmdDYWxlbmRhclJlcGVhdGFibGVTbG90QWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHNsb3QsIGRlbGV0ZURhdGVzLCBzZW5kTm90aWZpY2F0aW9ufToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgc2xvdDogQm9va2luZ0NhbGVuZGFyU2xvdCxcbiAgICAgICAgZGVsZXRlRGF0ZXM6IHN0cmluZ1tdIHwgbnVsbCxcbiAgICAgICAgc2VuZE5vdGlmaWNhdGlvbjogYm9vbGVhblxuICAgICAgfSkgPT4gdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLmRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3RSZXBlYXRhYmxlKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgc2xvdC5pZCwgZGVsZXRlRGF0ZXMsIHNlbmROb3RpZmljYXRpb24pLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKCgpID0+IFtcbiAgICAgICAgICBkZWxldGVCb29raW5nQ2FsZW5kYXJSZXBlYXRhYmxlU2xvdFN1Y2Nlc3NBY3Rpb24oe3Nsb3Q6IHNsb3R9KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3RGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIGNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHNlc3Npb259OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICBzZXNzaW9uOiBQYXJ0aWFsPEJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uPlxuICAgICAgfSkgPT4gdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgey4uLnNlc3Npb259KS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoc2Vzc2lvbjogQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24pID0+IFtcbiAgICAgICAgICBjcmVhdGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvblN1Y2Nlc3NBY3Rpb24oe3Nlc3Npb246IHNlc3Npb259KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoY3JlYXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25GYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIGNyZWF0ZUJ1bGtCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbnMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoY3JlYXRlQnVsa0Jvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uc0FjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgaXRlbUlkLCBzZXNzaW9uc306IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgaXRlbUlkOiBzdHJpbmcsXG4gICAgICAgIHNlc3Npb25zOiBBcnJheTxQYXJ0aWFsPEJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uPj5cbiAgICAgIH0pID0+IHRoaXMuYm9va2luZ0NhbGVuZGFyU2VydmljZS5jcmVhdGVCdWxrQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25zKHJvbGUgYXMgUm9sZSwgaXRlbUlkLCBzZXNzaW9ucykucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKHNlc3Npb246IFBhcnRpYWw8Qm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24+IHwgbnVsbCkgPT4gW1xuICAgICAgICAgIGNyZWF0ZUJ1bGtCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbnNTdWNjZXNzQWN0aW9uKHtzZXNzaW9uOiBzZXNzaW9ufSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZUJ1bGtCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbnNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIHVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKHVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHNlc3Npb259OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICBzZXNzaW9uOiBQYXJ0aWFsPEJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uPlxuICAgICAgfSkgPT4gdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgey4uLnNlc3Npb259KS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoc2Vzc2lvbjogQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24pID0+IFtcbiAgICAgICAgICB1cGRhdGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvblN1Y2Nlc3NBY3Rpb24oe3Nlc3Npb246IHNlc3Npb259KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YodXBkYXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25GYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHNlc3Npb24sIHNlbmROb3RpZmljYXRpb259OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICBzZXNzaW9uOiBCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbixcbiAgICAgICAgc2VuZE5vdGlmaWNhdGlvbjogYm9vbGVhblxuICAgICAgfSkgPT4gdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLmRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgc2Vzc2lvbi5pZCwgc2VuZE5vdGlmaWNhdGlvbikucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKCkgPT4gW1xuICAgICAgICAgIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uU3VjY2Vzc0FjdGlvbih7c2Vzc2lvbjogc2Vzc2lvbn0pLFxuICAgICAgICBdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihkZWxldGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3RTZXNzaW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGRlbGV0ZUJvb2tpbmdDYWxlbmRhclJlcGVhdGFibGVTbG90U2Vzc2lvbkFjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBzZXNzaW9uLCBkZWxldGVEYXRlcywgc2VuZE5vdGlmaWNhdGlvbn06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIHNlc3Npb246IEJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uLFxuICAgICAgICBkZWxldGVEYXRlczogc3RyaW5nW10gfCBudWxsLFxuICAgICAgICBzZW5kTm90aWZpY2F0aW9uOiBib29sZWFuXG4gICAgICB9KSA9PiB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UuZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25SZXBlYXRhYmxlKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgc2Vzc2lvbi5pZCwgZGVsZXRlRGF0ZXMsIHNlbmROb3RpZmljYXRpb24pLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKCgpID0+IFtcbiAgICAgICAgICBkZWxldGVCb29raW5nQ2FsZW5kYXJSZXBlYXRhYmxlU2xvdFNlc3Npb25TdWNjZXNzQWN0aW9uKHtzZXNzaW9uOiBzZXNzaW9ufSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGRlbGV0ZUJvb2tpbmdDYWxlbmRhclJlcGVhdGFibGVTbG90U2Vzc2lvbkZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbn1cbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  import { inject, Injectable } from '@angular/core';
2
2
  import { Actions, createEffect, ofType } from '@ngrx/effects';
3
- import { listAllMemberOpenActivityLocationsAction, listAllMemberOpenActivityLocationsFailureAction, listAllMemberOpenActivityLocationsSuccessAction, listAllMemberOpenActivityTypesAction, listAllMemberOpenActivityTypesFailureAction, listAllMemberOpenActivityTypesSuccessAction, listAllPublicOpenActivityLocationsAction, listAllPublicOpenActivityLocationsFailureAction, listAllPublicOpenActivityLocationsSuccessAction, listAllPublicOpenActivityTypesAction, listAllPublicOpenActivityTypesFailureAction, listAllPublicOpenActivityTypesSuccessAction, listMemberActivitiesAction, listMemberActivitiesFailureAction, listMemberActivitiesSuccessAction, listMemberOpenActivitiesAction, listMemberOpenActivitiesFailureAction, listMemberOpenActivitiesSuccessAction, listMemberOpenActivityLocationsAction, listMemberOpenActivityLocationsFailureAction, listMemberOpenActivityLocationsSuccessAction, listMemberOpenActivityTypesAction, listMemberOpenActivityTypesFailureAction, listMemberOpenActivityTypesSuccessAction, listPublicOpenActivitiesAction, listPublicOpenActivitiesFailureAction, listPublicOpenActivitiesSuccessAction, listPublicOpenActivityLocationsAction, listPublicOpenActivityLocationsFailureAction, listPublicOpenActivityLocationsSuccessAction, listPublicOpenActivityTypesAction, listPublicOpenActivityTypesFailureAction, listPublicOpenActivityTypesSuccessAction, listTeamActivitiesAction, listTeamActivitiesFailureAction, listTeamActivitiesSuccessAction } from '../actions';
3
+ import { listAllMemberOpenActivityLocationsAction, listAllMemberOpenActivityLocationsFailureAction, listAllMemberOpenActivityLocationsSuccessAction, listAllMemberOpenActivityTypesAction, listAllMemberOpenActivityTypesFailureAction, listAllMemberOpenActivityTypesSuccessAction, listMemberActivitiesAction, listMemberActivitiesFailureAction, listMemberActivitiesSuccessAction, listMemberOpenActivitiesAction, listMemberOpenActivitiesFailureAction, listMemberOpenActivitiesSuccessAction, listMemberOpenActivityLocationsAction, listMemberOpenActivityLocationsFailureAction, listMemberOpenActivityLocationsSuccessAction, listMemberOpenActivityTypesAction, listMemberOpenActivityTypesFailureAction, listMemberOpenActivityTypesSuccessAction, listPublicMemberActivitiesAction, listPublicMemberActivitiesFailureAction, listPublicMemberActivitiesSuccessAction, listTeamActivitiesAction, listTeamActivitiesFailureAction, listTeamActivitiesSuccessAction } from '../actions';
4
4
  import { ActivityService } from '../../services';
5
5
  import { exhaustMap, forkJoin, mergeMap, of } from 'rxjs';
6
6
  import { catchError, map } from 'rxjs/operators';
@@ -9,7 +9,7 @@ export class CalendarEffects {
9
9
  actions$ = inject(Actions);
10
10
  activityService = inject(ActivityService);
11
11
  listMemberActivities$ = createEffect(() => this.actions$
12
- .pipe(ofType(listMemberActivitiesAction), mergeMap(({ payload }) => forkJoin(payload.memberIds.map((id) => this.activityService.getMemberCalendarEvents(id, payload.startDate, payload.endDate)
12
+ .pipe(ofType(listMemberActivitiesAction), mergeMap(({ payload }) => forkJoin(payload.memberIds.map((id) => this.activityService.getMemberCalendarEvents(id, payload.startDate, payload.endDate, payload.openActivity)
13
13
  .pipe(map((events) => ({ id, events: events.toArray() })), catchError((error) => of({ id, error }))))).pipe(map(results => {
14
14
  const resultMap = new Map();
15
15
  results.forEach((result) => {
@@ -52,23 +52,11 @@ export class CalendarEffects {
52
52
  listMemberOpenActivityTypes$ = createEffect(() => this.actions$
53
53
  .pipe(ofType(listMemberOpenActivityTypesAction), exhaustMap(({ payload }) => this.activityService.getMemberOpenActivityActivityTypes(payload.memberId, payload.startDate, payload.endDate, false)
54
54
  .pipe(map((activityTypes) => listMemberOpenActivityTypesSuccessAction({ payload: { memberId: payload.memberId, startDate: payload.startDate, endDate: payload.endDate, types: activityTypes.toArray() } })), catchError((error) => of(listMemberOpenActivityTypesFailureAction({ payload: { memberId: payload.memberId, startDate: payload.startDate, endDate: payload.endDate, error } })))))));
55
- listPublicAllOpenActivityLocations$ = createEffect(() => this.actions$
56
- .pipe(ofType(listAllPublicOpenActivityLocationsAction), exhaustMap(() => this.activityService.getPublicOpenActivityLocations(null, null, true)
57
- .pipe(map((activityLocations) => listAllPublicOpenActivityLocationsSuccessAction({ payload: activityLocations.toArray() })), catchError((error) => of(listAllPublicOpenActivityLocationsFailureAction({ payload: error })))))));
58
- listPublicAllOpenActivityTypes$ = createEffect(() => this.actions$
59
- .pipe(ofType(listAllPublicOpenActivityTypesAction), exhaustMap(() => this.activityService.getPublicOpenActivityActivityTypes(null, null, true)
60
- .pipe(map((activityTypes) => listAllPublicOpenActivityTypesSuccessAction({ payload: activityTypes.toArray() })), catchError((error) => of(listAllPublicOpenActivityTypesFailureAction({ payload: error })))))));
61
- listPublicOpenActivities$ = createEffect(() => this.actions$
62
- .pipe(ofType(listPublicOpenActivitiesAction), exhaustMap(({ payload }) => this.activityService.getPublicOpenActivities(payload)
63
- .pipe(map((result) => listPublicOpenActivitiesSuccessAction({ payload: { openActivitySearchParams: payload, results: result.toArray() } })), catchError((error) => of(listPublicOpenActivitiesFailureAction({ payload: error })))))));
64
- listPublicOpenActivityLocations$ = createEffect(() => this.actions$
65
- .pipe(ofType(listPublicOpenActivityLocationsAction), exhaustMap(({ payload }) => this.activityService.getPublicOpenActivityLocations(payload.startDate, payload.endDate, false)
66
- .pipe(map((result) => listPublicOpenActivityLocationsSuccessAction({ payload: { startDate: payload.startDate, endDate: payload.endDate, locations: result.toArray() } })), catchError((error) => of(listPublicOpenActivityLocationsFailureAction({ payload: error })))))));
67
- listPublicOpenActivityTypes$ = createEffect(() => this.actions$
68
- .pipe(ofType(listPublicOpenActivityTypesAction), exhaustMap(({ payload }) => this.activityService.getPublicOpenActivityActivityTypes(payload.startDate, payload.endDate, false)
69
- .pipe(map((result) => listPublicOpenActivityTypesSuccessAction({ payload: { startDate: payload.startDate, endDate: payload.endDate, types: result.toArray() } })), catchError((error) => of(listPublicOpenActivityTypesFailureAction({ payload: error })))))));
55
+ listPublicMemberActivities$ = createEffect(() => this.actions$
56
+ .pipe(ofType(listPublicMemberActivitiesAction), exhaustMap(({ payload }) => this.activityService.getPublicMemberActivities(payload.startDate, payload.endDate)
57
+ .pipe(map((result) => listPublicMemberActivitiesSuccessAction({ payload: { startDate: payload.startDate, endDate: payload.endDate, results: result.toArray() } })), catchError((error) => of(listPublicMemberActivitiesFailureAction({ payload: error })))))));
70
58
  listTeamActivities = createEffect(() => this.actions$
71
- .pipe(ofType(listTeamActivitiesAction), exhaustMap(({ payload }) => this.activityService.getTeamCalendarEvents(payload.teamId, payload.startDate, payload.endDate)
59
+ .pipe(ofType(listTeamActivitiesAction), exhaustMap(({ payload }) => this.activityService.getTeamCalendarEvents(payload.teamId, payload.startDate, payload.endDate, payload.openActivity)
72
60
  .pipe(map((results) => listTeamActivitiesSuccessAction({
73
61
  payload: {
74
62
  ...payload,
@@ -81,4 +69,4 @@ export class CalendarEffects {
81
69
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CalendarEffects, decorators: [{
82
70
  type: Injectable
83
71
  }] });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuZWZmZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtYWNjZXNzL3NyYy9saWIvc3RvcmUvZWZmZWN0cy9jYWxlbmRhci5lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsd0NBQXdDLEVBQ3hDLCtDQUErQyxFQUMvQywrQ0FBK0MsRUFDL0Msb0NBQW9DLEVBQ3BDLDJDQUEyQyxFQUMzQywyQ0FBMkMsRUFDM0Msd0NBQXdDLEVBQ3hDLCtDQUErQyxFQUMvQywrQ0FBK0MsRUFDL0Msb0NBQW9DLEVBQUUsMkNBQTJDLEVBQ2pGLDJDQUEyQyxFQUMzQywwQkFBMEIsRUFDMUIsaUNBQWlDLEVBQ2pDLGlDQUFpQyxFQUNqQyw4QkFBOEIsRUFDOUIscUNBQXFDLEVBQ3JDLHFDQUFxQyxFQUNyQyxxQ0FBcUMsRUFDckMsNENBQTRDLEVBQzVDLDRDQUE0QyxFQUM1QyxpQ0FBaUMsRUFDakMsd0NBQXdDLEVBQ3hDLHdDQUF3QyxFQUN4Qyw4QkFBOEIsRUFDOUIscUNBQXFDLEVBQ3JDLHFDQUFxQyxFQUNyQyxxQ0FBcUMsRUFDckMsNENBQTRDLEVBQzVDLDRDQUE0QyxFQUM1QyxpQ0FBaUMsRUFDakMsd0NBQXdDLEVBQ3hDLHdDQUF3QyxFQUN4Qyx3QkFBd0IsRUFDeEIsK0JBQStCLEVBQy9CLCtCQUErQixFQUNoQyxNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztB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QyxNQUFNLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDO1NBQ2pHLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxPQUEwQixFQUFFLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQztRQUNsRSxPQUFPLEVBQUU7WUFDUCxHQUFHLE9BQU87WUFDVixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRTtTQUMzQjtLQUNGLENBQUMsQ0FBQyxFQUNILFVBQVUsQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQyxFQUFDLE9BQU8sRUFBRSxFQUFDLEdBQUcsT0FBTyxFQUFFLEtBQUssRUFBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQzlHLENBQ0osQ0FDRixDQUNGLENBQUM7dUdBbk1TLGVBQWU7MkdBQWYsZUFBZTs7MkZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9ucywgY3JlYXRlRWZmZWN0LCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7XG4gIGxpc3RBbGxNZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnNBY3Rpb24sXG4gIGxpc3RBbGxNZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnNGYWlsdXJlQWN0aW9uLFxuICBsaXN0QWxsTWVtYmVyT3BlbkFjdGl2aXR5TG9jYXRpb25zU3VjY2Vzc0FjdGlvbixcbiAgbGlzdEFsbE1lbWJlck9wZW5BY3Rpdml0eVR5cGVzQWN0aW9uLFxuICBsaXN0QWxsTWVtYmVyT3BlbkFjdGl2aXR5VHlwZXNGYWlsdXJlQWN0aW9uLFxuICBsaXN0QWxsTWVtYmVyT3BlbkFjdGl2aXR5VHlwZXNTdWNjZXNzQWN0aW9uLFxuICBsaXN0QWxsUHVibGljT3BlbkFjdGl2aXR5TG9jYXRpb25zQWN0aW9uLFxuICBsaXN0QWxsUHVibGljT3BlbkFjdGl2aXR5TG9jYXRpb25zRmFpbHVyZUFjdGlvbixcbiAgbGlzdEFsbFB1YmxpY09wZW5BY3Rpdml0eUxvY2F0aW9uc1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RBbGxQdWJsaWNPcGVuQWN0aXZpdHlUeXBlc0FjdGlvbiwgbGlzdEFsbFB1YmxpY09wZW5BY3Rpdml0eVR5cGVzRmFpbHVyZUFjdGlvbixcbiAgbGlzdEFsbFB1YmxpY09wZW5BY3Rpdml0eVR5cGVzU3VjY2Vzc0FjdGlvbixcbiAgbGlzdE1lbWJlckFjdGl2aXRpZXNBY3Rpb24sXG4gIGxpc3RNZW1iZXJBY3Rpdml0aWVzRmFpbHVyZUFjdGlvbixcbiAgbGlzdE1lbWJlckFjdGl2aXRpZXNTdWNjZXNzQWN0aW9uLFxuICBsaXN0TWVtYmVyT3BlbkFjdGl2aXRpZXNBY3Rpb24sXG4gIGxpc3RNZW1iZXJPcGVuQWN0aXZpdGllc0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RNZW1iZXJPcGVuQWN0aXZpdGllc1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RNZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnNBY3Rpb24sXG4gIGxpc3RNZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnNGYWlsdXJlQWN0aW9uLFxuICBsaXN0TWVtYmVyT3BlbkFjdGl2aXR5TG9jYXRpb25zU3VjY2Vzc0FjdGlvbixcbiAgbGlzdE1lbWJlck9wZW5BY3Rpdml0eVR5cGVzQWN0aW9uLFxuICBsaXN0TWVtYmVyT3BlbkFjdGl2aXR5VHlwZXNGYWlsdXJlQWN0aW9uLFxuICBsaXN0TWVtYmVyT3BlbkFjdGl2aXR5VHlwZXNTdWNjZXNzQWN0aW9uLFxuICBsaXN0UHVibGljT3BlbkFjdGl2aXRpZXNBY3Rpb24sXG4gIGxpc3RQdWJsaWNPcGVuQWN0aXZpdGllc0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RQdWJsaWNPcGVuQWN0aXZpdGllc1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RQdWJsaWNPcGVuQWN0aXZpdHlMb2NhdGlvbnNBY3Rpb24sXG4gIGxpc3RQdWJsaWNPcGVuQWN0aXZpdHlMb2NhdGlvbnNGYWlsdXJlQWN0aW9uLFxuICBsaXN0UHVibGljT3BlbkFjdGl2aXR5TG9jYXRpb25zU3VjY2Vzc0FjdGlvbixcbiAgbGlzdFB1YmxpY09wZW5BY3Rpdml0eVR5cGVzQWN0aW9uLFxuICBsaXN0UHVibGljT3BlbkFjdGl2aXR5VHlwZXNGYWlsdXJlQWN0aW9uLFxuICBsaXN0UHVibGljT3BlbkFjdGl2aXR5VHlwZXNTdWNjZXNzQWN0aW9uLFxuICBsaXN0VGVhbUFjdGl2aXRpZXNBY3Rpb24sXG4gIGxpc3RUZWFtQWN0aXZpdGllc0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RUZWFtQWN0aXZpdGllc1N1Y2Nlc3NBY3Rpb25cbn0gZnJvbSAnLi4vYWN0aW9ucyc7XG5pbXBvcnQgeyBBY3Rpdml0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBBY3Rpdml0eUxvY2F0aW9uLCBBY3Rpdml0eVR5cGUsIENvbGxlY3Rpb24sIEV2ZW50LCBPcGVuQWN0aXZpdHkgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgT3BlbkFjdGl2aXR5U2VhcmNoUGFyYW1zSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBleGhhdXN0TWFwLCBmb3JrSm9pbiwgbWVyZ2VNYXAsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENhbGVuZGFyRWZmZWN0cyB7XG4gIHByaXZhdGUgYWN0aW9ucyQgPSBpbmplY3QoQWN0aW9ucyk7XG4gIHByaXZhdGUgYWN0aXZpdHlTZXJ2aWNlID0gaW5qZWN0KEFjdGl2aXR5U2VydmljZSk7XG5cbiAgbGlzdE1lbWJlckFjdGl2aXRpZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsaXN0TWVtYmVyQWN0aXZpdGllc0FjdGlvbiksXG4gICAgICBtZXJnZU1hcCgoe3BheWxvYWR9OiB7IHBheWxvYWQ6IHsgbWVtYmVySWRzOiBBcnJheTxzdHJpbmc+LCBzdGFydERhdGU6IHN0cmluZywgZW5kRGF0ZTogc3RyaW5nIH0gfSkgPT5cbiAgICAgICAgZm9ya0pvaW4ocGF5bG9hZC5tZW1iZXJJZHMubWFwKChpZDogc3RyaW5nKSA9PlxuICAgICAgICAgIHRoaXMuYWN0aXZpdHlTZXJ2aWNlLmdldE1lbWJlckNhbGVuZGFyRXZlbnRzKGlkLCBwYXlsb2FkLnN0YXJ0RGF0ZSwgcGF5bG9hZC5lbmREYXRlKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgIG1hcCgoZXZlbnRzOiBDb2xsZWN0aW9uPEV2ZW50PikgPT4gKHtpZCwgZXZlbnRzOiBldmVudHMudG9BcnJheSgpfSkpLFxuICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHtpZCwgZXJyb3J9KSksXG4gICAgICAgICAgICApXG4gICAgICAgICkpLnBpcGUoXG4gICAgICAgICAgbWFwKHJlc3VsdHMgPT4ge1xuICAgICAgICAgICAgICBjb25zdCByZXN1bHRNYXAgPSBuZXcgTWFwPHN0cmluZywgQXJyYXk8RXZlbnQ+PigpO1xuICAgICAgICAgICAgICByZXN1bHRzLmZvckVhY2goKHJlc3VsdDogeyBpZDogc3RyaW5nLCBldmVudHM/OiBBcnJheTxFdmVudD4sIGVycm9yPzogSHR0cEVycm9yUmVzcG9uc2UgfSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuZXZlbnRzKSB7XG4gICAgICAgICAgICAgICAgICByZXN1bHRNYXAuc2V0KHJlc3VsdC5pZCwgcmVzdWx0LmV2ZW50cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgcmV0dXJuIGxpc3RNZW1iZXJBY3Rpdml0aWVzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogey4uLnBheWxvYWQsIHJlc3VsdHM6IHJlc3VsdE1hcH19KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdE1lbWJlckFjdGl2aXRpZXNGYWlsdXJlQWN0aW9uKHtcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgLi4ucGF5bG9hZCxcbiAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbGlzdE1lbWJlck9wZW5BY3Rpdml0aWVzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUobGlzdE1lbWJlck9wZW5BY3Rpdml0aWVzQWN0aW9uKSxcbiAgICAgIG1lcmdlTWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IG1lbWJlcklkczogQXJyYXk8c3RyaW5nPiwgb3BlbkFjdGl2aXR5U2VhcmNoUGFyYW1zOiBPcGVuQWN0aXZpdHlTZWFyY2hQYXJhbXNJbnRlcmZhY2UgfVxuICAgICAgICB9KSA9PlxuICAgICAgICAgIGZvcmtKb2luKHBheWxvYWQubWVtYmVySWRzLm1hcCgoaWQ6IHN0cmluZykgPT5cbiAgICAgICAgICAgIHRoaXMuYWN0aXZpdHlTZXJ2aWNlLmdldE1lbWJlck9wZW5BY3Rpdml0aWVzKGlkLCBwYXlsb2FkLm9wZW5BY3Rpdml0eVNlYXJjaFBhcmFtcylcbiAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChhY3Rpdml0aWVzOiBDb2xsZWN0aW9uPE9wZW5BY3Rpdml0eT4pID0+ICh7aWQsIGFjdGl2aXRpZXM6IGFjdGl2aXRpZXMudG9BcnJheSgpfSkpLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2Yoe2lkLCBlcnJvcn0pKSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICkpLnBpcGUoXG4gICAgICAgICAgICBtYXAocmVzdWx0cyA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0TWFwID0gbmV3IE1hcDxzdHJpbmcsIEFycmF5PE9wZW5BY3Rpdml0eT4+KCk7XG4gICAgICAgICAgICAgICAgcmVzdWx0cy5mb3JFYWNoKChyZXN1bHQ6IHsgaWQ6IHN0cmluZywgYWN0aXZpdGllcz86IEFycmF5PE9wZW5BY3Rpdml0eT4sIGVycm9yPzogSHR0cEVycm9yUmVzcG9uc2UgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5hY3Rpdml0aWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdE1hcC5zZXQocmVzdWx0LmlkLCByZXN1bHQuYWN0aXZpdGllcyk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxpc3RNZW1iZXJPcGVuQWN0aXZpdGllc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHsuLi5wYXlsb2FkLCByZXN1bHRzOiByZXN1bHRNYXB9fSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxpc3RNZW1iZXJPcGVuQWN0aXZpdGllc0ZhaWx1cmVBY3Rpb24oe1xuICAgICAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICAgICAgLi4ucGF5bG9hZCxcbiAgICAgICAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsaXN0TWVtYmVyQWxsT3BlbkFjdGl2aXR5TG9jYXRpb25zJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUobGlzdEFsbE1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uc0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtwYXlsb2FkOiBzdHJpbmd9KSA9PiB0aGlzLmFjdGl2aXR5U2VydmljZS5nZXRNZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnMocGF5bG9hZCwgbnVsbCwgbnVsbCwgdHJ1ZSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChhY3Rpdml0eUxvY2F0aW9uczogQ29sbGVjdGlvbjxBY3Rpdml0eUxvY2F0aW9uPikgPT4gbGlzdEFsbE1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGFjdGl2aXR5TG9jYXRpb25zLnRvQXJyYXkoKX0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxpc3RBbGxNZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsaXN0TWVtYmVyQWxsT3BlbkFjdGl2aXR5VHlwZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsaXN0QWxsTWVtYmVyT3BlbkFjdGl2aXR5VHlwZXNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7cGF5bG9hZDogc3RyaW5nfSkgPT4gdGhpcy5hY3Rpdml0eVNlcnZpY2UuZ2V0TWVtYmVyT3BlbkFjdGl2aXR5QWN0aXZpdHlUeXBlcyhwYXlsb2FkLCBudWxsLCBudWxsLCB0cnVlKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGFjdGl2aXR5VHlwZXM6IENvbGxlY3Rpb248QWN0aXZpdHlUeXBlPikgPT4gbGlzdEFsbE1lbWJlck9wZW5BY3Rpdml0eVR5cGVzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogYWN0aXZpdHlUeXBlcy50b0FycmF5KCl9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihsaXN0QWxsTWVtYmVyT3BlbkFjdGl2aXR5VHlwZXNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsaXN0TWVtYmVyT3BlbkFjdGl2aXR5TG9jYXRpb25zJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUobGlzdE1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uc0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtwYXlsb2FkOiB7bWVtYmVySWQ6IHN0cmluZywgc3RhcnREYXRlOiBzdHJpbmcsIGVuZERhdGU6IHN0cmluZ319KSA9PiB0aGlzLmFjdGl2aXR5U2VydmljZS5nZXRNZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnMocGF5bG9hZC5tZW1iZXJJZCwgcGF5bG9hZC5zdGFydERhdGUsIHBheWxvYWQuZW5kRGF0ZSwgZmFsc2UpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoYWN0aXZpdHlMb2NhdGlvbnM6IENvbGxlY3Rpb248QWN0aXZpdHlMb2NhdGlvbj4pID0+IGxpc3RNZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiB7bWVtYmVySWQ6IHBheWxvYWQubWVtYmVySWQsIHN0YXJ0RGF0ZTogcGF5bG9hZC5zdGFydERhdGUsIGVuZERhdGU6IHBheWxvYWQuZW5kRGF0ZSwgbG9jYXRpb25zOiBhY3Rpdml0eUxvY2F0aW9ucy50b0FycmF5KCl9fSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdE1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IHttZW1iZXJJZDogcGF5bG9hZC5tZW1iZXJJZCwgc3RhcnREYXRlOiBwYXlsb2FkLnN0YXJ0RGF0ZSwgZW5kRGF0ZTogcGF5bG9hZC5lbmREYXRlLCBlcnJvcn19KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbGlzdE1lbWJlck9wZW5BY3Rpdml0eVR5cGVzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUobGlzdE1lbWJlck9wZW5BY3Rpdml0eVR5cGVzQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge3BheWxvYWQ6IHttZW1iZXJJZDogc3RyaW5nLCBzdGFydERhdGU6IHN0cmluZywgZW5kRGF0ZTogc3RyaW5nfX0pID0+IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLmdldE1lbWJlck9wZW5BY3Rpdml0eUFjdGl2aXR5VHlwZXMocGF5bG9hZC5tZW1iZXJJZCwgcGF5bG9hZC5zdGFydERhdGUsIHBheWxvYWQuZW5kRGF0ZSwgZmFsc2UpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoYWN0aXZpdHlUeXBlczogQ29sbGVjdGlvbjxBY3Rpdml0eVR5cGU+KSA9PiBsaXN0TWVtYmVyT3BlbkFjdGl2aXR5VHlwZXNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiB7bWVtYmVySWQ6IHBheWxvYWQubWVtYmVySWQsIHN0YXJ0RGF0ZTogcGF5bG9hZC5zdGFydERhdGUsIGVuZERhdGU6IHBheWxvYWQuZW5kRGF0ZSwgdHlwZXM6IGFjdGl2aXR5VHlwZXMudG9BcnJheSgpfX0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxpc3RNZW1iZXJPcGVuQWN0aXZpdHlUeXBlc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IHttZW1iZXJJZDogcGF5bG9hZC5tZW1iZXJJZCwgc3RhcnREYXRlOiBwYXlsb2FkLnN0YXJ0RGF0ZSwgZW5kRGF0ZTogcGF5bG9hZC5lbmREYXRlLCBlcnJvcn19KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbGlzdFB1YmxpY0FsbE9wZW5BY3Rpdml0eUxvY2F0aW9ucyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxpc3RBbGxQdWJsaWNPcGVuQWN0aXZpdHlMb2NhdGlvbnNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLmFjdGl2aXR5U2VydmljZS5nZXRQdWJsaWNPcGVuQWN0aXZpdHlMb2NhdGlvbnMobnVsbCwgbnVsbCwgdHJ1ZSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChhY3Rpdml0eUxvY2F0aW9uczogQ29sbGVjdGlvbjxBY3Rpdml0eUxvY2F0aW9uPikgPT4gbGlzdEFsbFB1YmxpY09wZW5BY3Rpdml0eUxvY2F0aW9uc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGFjdGl2aXR5TG9jYXRpb25zLnRvQXJyYXkoKX0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxpc3RBbGxQdWJsaWNPcGVuQWN0aXZpdHlMb2NhdGlvbnNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsaXN0UHVibGljQWxsT3BlbkFjdGl2aXR5VHlwZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsaXN0QWxsUHVibGljT3BlbkFjdGl2aXR5VHlwZXNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLmFjdGl2aXR5U2VydmljZS5nZXRQdWJsaWNPcGVuQWN0aXZpdHlBY3Rpdml0eVR5cGVzKG51bGwsIG51bGwsIHRydWUpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoYWN0aXZpdHlUeXBlczogQ29sbGVjdGlvbjxBY3Rpdml0eVR5cGU+KSA9PiBsaXN0QWxsUHVibGljT3BlbkFjdGl2aXR5VHlwZXNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBhY3Rpdml0eVR5cGVzLnRvQXJyYXkoKX0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxpc3RBbGxQdWJsaWNPcGVuQWN0aXZpdHlUeXBlc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGxpc3RQdWJsaWNPcGVuQWN0aXZpdGllcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxpc3RQdWJsaWNPcGVuQWN0aXZpdGllc0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtwYXlsb2FkOiBPcGVuQWN0aXZpdHlTZWFyY2hQYXJhbXNJbnRlcmZhY2V9KSA9PiB0aGlzLmFjdGl2aXR5U2VydmljZS5nZXRQdWJsaWNPcGVuQWN0aXZpdGllcyhwYXlsb2FkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHJlc3VsdDogQ29sbGVjdGlvbjxPcGVuQWN0aXZpdHk+KSA9PiBsaXN0UHVibGljT3BlbkFjdGl2aXRpZXNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiB7b3BlbkFjdGl2aXR5U2VhcmNoUGFyYW1zOiBwYXlsb2FkLCByZXN1bHRzOiByZXN1bHQudG9BcnJheSgpfX0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxpc3RQdWJsaWNPcGVuQWN0aXZpdGllc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGxpc3RQdWJsaWNPcGVuQWN0aXZpdHlMb2NhdGlvbnMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsaXN0UHVibGljT3BlbkFjdGl2aXR5TG9jYXRpb25zQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge3BheWxvYWQ6IHtzdGFydERhdGU6IHN0cmluZywgZW5kRGF0ZTogc3RyaW5nfX0pID0+IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLmdldFB1YmxpY09wZW5BY3Rpdml0eUxvY2F0aW9ucyhwYXlsb2FkLnN0YXJ0RGF0ZSwgcGF5bG9hZC5lbmREYXRlLCBmYWxzZSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChyZXN1bHQ6IENvbGxlY3Rpb248QWN0aXZpdHlMb2NhdGlvbj4pID0+IGxpc3RQdWJsaWNPcGVuQWN0aXZpdHlMb2NhdGlvbnNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiB7c3RhcnREYXRlOiBwYXlsb2FkLnN0YXJ0RGF0ZSwgZW5kRGF0ZTogcGF5bG9hZC5lbmREYXRlLCBsb2NhdGlvbnM6IHJlc3VsdC50b0FycmF5KCl9fSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdFB1YmxpY09wZW5BY3Rpdml0eUxvY2F0aW9uc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGxpc3RQdWJsaWNPcGVuQWN0aXZpdHlUeXBlcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxpc3RQdWJsaWNPcGVuQWN0aXZpdHlUeXBlc0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtwYXlsb2FkOiB7c3RhcnREYXRlOiBzdHJpbmcsIGVuZERhdGU6IHN0cmluZ319KSA9PiB0aGlzLmFjdGl2aXR5U2VydmljZS5nZXRQdWJsaWNPcGVuQWN0aXZpdHlBY3Rpdml0eVR5cGVzKHBheWxvYWQuc3RhcnREYXRlLCBwYXlsb2FkLmVuZERhdGUsIGZhbHNlKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHJlc3VsdDogQ29sbGVjdGlvbjxBY3Rpdml0eVR5cGU+KSA9PiBsaXN0UHVibGljT3BlbkFjdGl2aXR5VHlwZXNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiB7c3RhcnREYXRlOiBwYXlsb2FkLnN0YXJ0RGF0ZSwgZW5kRGF0ZTogcGF5bG9hZC5lbmREYXRlLCB0eXBlczogcmVzdWx0LnRvQXJyYXkoKX19KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihsaXN0UHVibGljT3BlbkFjdGl2aXR5VHlwZXNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsaXN0VGVhbUFjdGl2aXRpZXMgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxpc3RUZWFtQWN0aXZpdGllc0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IHRlYW1JZDogc3RyaW5nLCBzdGFydERhdGU6IHN0cmluZywgZW5kRGF0ZTogc3RyaW5nIH1cbiAgICAgICAgfSkgPT4gdGhpcy5hY3Rpdml0eVNlcnZpY2UuZ2V0VGVhbUNhbGVuZGFyRXZlbnRzKHBheWxvYWQudGVhbUlkLCBwYXlsb2FkLnN0YXJ0RGF0ZSwgcGF5bG9hZC5lbmREYXRlKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChyZXN1bHRzOiBDb2xsZWN0aW9uPEV2ZW50PikgPT4gbGlzdFRlYW1BY3Rpdml0aWVzU3VjY2Vzc0FjdGlvbih7XG4gICAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgICAuLi5wYXlsb2FkLFxuICAgICAgICAgICAgICAgIHJlc3VsdHM6IHJlc3VsdHMudG9BcnJheSgpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdFRlYW1BY3Rpdml0aWVzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogey4uLnBheWxvYWQsIGVycm9yfX0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xufVxuIl19
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuZWZmZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtYWNjZXNzL3NyYy9saWIvc3RvcmUvZWZmZWN0cy9jYWxlbmRhci5lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsd0NBQXdDLEVBQ3hDLCtDQUErQyxFQUMvQywrQ0FBK0MsRUFDL0Msb0NBQW9DLEVBQ3BDLDJDQUEyQyxFQUMzQywyQ0FBMkMsRUFDM0MsMEJBQTBCLEVBQzFCLGlDQUFpQyxFQUNqQyxpQ0FBaUMsRUFDakMsOEJBQThCLEVBQzlCLHFDQUFxQyxFQUNyQyxxQ0FBcUMsRUFDckMscUNBQXFDLEVBQ3JDLDRDQUE0QyxFQUM1Qyw0Q0FBNEMsRUFDNUMsaUNBQWlDLEVBQ2pDLHdDQUF3QyxFQUN4Qyx3Q0FBd0MsRUFDeEMsZ0NBQWdDLEVBQ2hDLHVDQUF1QyxFQUN2Qyx1Q0FBdUMsRUFDdkMsd0JBQXdCLEVBQ3hCLCtCQUErQixFQUMvQiwrQkFBK0IsRUFDaEMsTUFBTSxZQUFZLENBQUM7QUFDcEIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFJakQsTUFBTSxPQUFPLGVBQWU7SUFDbEIsUUFBUSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQixlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFD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QUMsS0FBd0IsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLCtCQUErQixDQUFDLEVBQUMsT0FBTyxFQUFFLEVBQUMsR0FBRyxPQUFPLEVBQUUsS0FBSyxFQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDOUcsQ0FDSixDQUNGLENBQ0YsQ0FBQzt1R0FsSlMsZUFBZTsyR0FBZixlQUFlOzsyRkFBZixlQUFlO2tCQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb25zLCBjcmVhdGVFZmZlY3QsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHtcbiAgbGlzdEFsbE1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uc0FjdGlvbixcbiAgbGlzdEFsbE1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uc0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RBbGxNZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnNTdWNjZXNzQWN0aW9uLFxuICBsaXN0QWxsTWVtYmVyT3BlbkFjdGl2aXR5VHlwZXNBY3Rpb24sXG4gIGxpc3RBbGxNZW1iZXJPcGVuQWN0aXZpdHlUeXBlc0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RBbGxNZW1iZXJPcGVuQWN0aXZpdHlUeXBlc1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RNZW1iZXJBY3Rpdml0aWVzQWN0aW9uLFxuICBsaXN0TWVtYmVyQWN0aXZpdGllc0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RNZW1iZXJBY3Rpdml0aWVzU3VjY2Vzc0FjdGlvbixcbiAgbGlzdE1lbWJlck9wZW5BY3Rpdml0aWVzQWN0aW9uLFxuICBsaXN0TWVtYmVyT3BlbkFjdGl2aXRpZXNGYWlsdXJlQWN0aW9uLFxuICBsaXN0TWVtYmVyT3BlbkFjdGl2aXRpZXNTdWNjZXNzQWN0aW9uLFxuICBsaXN0TWVtYmVyT3BlbkFjdGl2aXR5TG9jYXRpb25zQWN0aW9uLFxuICBsaXN0TWVtYmVyT3BlbkFjdGl2aXR5TG9jYXRpb25zRmFpbHVyZUFjdGlvbixcbiAgbGlzdE1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uc1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RNZW1iZXJPcGVuQWN0aXZpdHlUeXBlc0FjdGlvbixcbiAgbGlzdE1lbWJlck9wZW5BY3Rpdml0eVR5cGVzRmFpbHVyZUFjdGlvbixcbiAgbGlzdE1lbWJlck9wZW5BY3Rpdml0eVR5cGVzU3VjY2Vzc0FjdGlvbixcbiAgbGlzdFB1YmxpY01lbWJlckFjdGl2aXRpZXNBY3Rpb24sXG4gIGxpc3RQdWJsaWNNZW1iZXJBY3Rpdml0aWVzRmFpbHVyZUFjdGlvbixcbiAgbGlzdFB1YmxpY01lbWJlckFjdGl2aXRpZXNTdWNjZXNzQWN0aW9uLFxuICBsaXN0VGVhbUFjdGl2aXRpZXNBY3Rpb24sXG4gIGxpc3RUZWFtQWN0aXZpdGllc0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RUZWFtQWN0aXZpdGllc1N1Y2Nlc3NBY3Rpb25cbn0gZnJvbSAnLi4vYWN0aW9ucyc7XG5pbXBvcnQgeyBBY3Rpdml0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBBY3Rpdml0eUxvY2F0aW9uLCBBY3Rpdml0eVR5cGUsIENvbGxlY3Rpb24sIEV2ZW50LCBPcGVuQWN0aXZpdHkgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgT3BlbkFjdGl2aXR5U2VhcmNoUGFyYW1zSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBleGhhdXN0TWFwLCBmb3JrSm9pbiwgbWVyZ2VNYXAsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENhbGVuZGFyRWZmZWN0cyB7XG4gIHByaXZhdGUgYWN0aW9ucyQgPSBpbmplY3QoQWN0aW9ucyk7XG4gIHByaXZhdGUgYWN0aXZpdHlTZXJ2aWNlID0gaW5qZWN0KEFjdGl2aXR5U2VydmljZSk7XG5cbiAgbGlzdE1lbWJlckFjdGl2aXRpZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsaXN0TWVtYmVyQWN0aXZpdGllc0FjdGlvbiksXG4gICAgICBtZXJnZU1hcCgoe3BheWxvYWR9OiB7IHBheWxvYWQ6IHsgbWVtYmVySWRzOiBBcnJheTxzdHJpbmc+LCBzdGFydERhdGU6IHN0cmluZywgZW5kRGF0ZTogc3RyaW5nLCBvcGVuQWN0aXZpdHk6IGJvb2xlYW4gfSB9KSA9PlxuICAgICAgICBmb3JrSm9pbihwYXlsb2FkLm1lbWJlcklkcy5tYXAoKGlkOiBzdHJpbmcpID0+XG4gICAgICAgICAgdGhpcy5hY3Rpdml0eVNlcnZpY2UuZ2V0TWVtYmVyQ2FsZW5kYXJFdmVudHMoaWQsIHBheWxvYWQuc3RhcnREYXRlLCBwYXlsb2FkLmVuZERhdGUsIHBheWxvYWQub3BlbkFjdGl2aXR5KVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgIG1hcCgoZXZlbnRzOiBDb2xsZWN0aW9uPEV2ZW50PikgPT4gKHtpZCwgZXZlbnRzOiBldmVudHMudG9BcnJheSgpfSkpLFxuICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHtpZCwgZXJyb3J9KSksXG4gICAgICAgICAgICApXG4gICAgICAgICkpLnBpcGUoXG4gICAgICAgICAgbWFwKHJlc3VsdHMgPT4ge1xuICAgICAgICAgICAgICBjb25zdCByZXN1bHRNYXAgPSBuZXcgTWFwPHN0cmluZywgQXJyYXk8RXZlbnQ+PigpO1xuICAgICAgICAgICAgICByZXN1bHRzLmZvckVhY2goKHJlc3VsdDogeyBpZDogc3RyaW5nLCBldmVudHM/OiBBcnJheTxFdmVudD4sIGVycm9yPzogSHR0cEVycm9yUmVzcG9uc2UgfSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuZXZlbnRzKSB7XG4gICAgICAgICAgICAgICAgICByZXN1bHRNYXAuc2V0KHJlc3VsdC5pZCwgcmVzdWx0LmV2ZW50cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgcmV0dXJuIGxpc3RNZW1iZXJBY3Rpdml0aWVzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogey4uLnBheWxvYWQsIHJlc3VsdHM6IHJlc3VsdE1hcH19KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdE1lbWJlckFjdGl2aXRpZXNGYWlsdXJlQWN0aW9uKHtcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgLi4ucGF5bG9hZCxcbiAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbGlzdE1lbWJlck9wZW5BY3Rpdml0aWVzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUobGlzdE1lbWJlck9wZW5BY3Rpdml0aWVzQWN0aW9uKSxcbiAgICAgIG1lcmdlTWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IG1lbWJlcklkczogQXJyYXk8c3RyaW5nPiwgb3BlbkFjdGl2aXR5U2VhcmNoUGFyYW1zOiBPcGVuQWN0aXZpdHlTZWFyY2hQYXJhbXNJbnRlcmZhY2UgfVxuICAgICAgICB9KSA9PlxuICAgICAgICAgIGZvcmtKb2luKHBheWxvYWQubWVtYmVySWRzLm1hcCgoaWQ6IHN0cmluZykgPT5cbiAgICAgICAgICAgIHRoaXMuYWN0aXZpdHlTZXJ2aWNlLmdldE1lbWJlck9wZW5BY3Rpdml0aWVzKGlkLCBwYXlsb2FkLm9wZW5BY3Rpdml0eVNlYXJjaFBhcmFtcylcbiAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChhY3Rpdml0aWVzOiBDb2xsZWN0aW9uPE9wZW5BY3Rpdml0eT4pID0+ICh7aWQsIGFjdGl2aXRpZXM6IGFjdGl2aXRpZXMudG9BcnJheSgpfSkpLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2Yoe2lkLCBlcnJvcn0pKSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICkpLnBpcGUoXG4gICAgICAgICAgICBtYXAocmVzdWx0cyA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0TWFwID0gbmV3IE1hcDxzdHJpbmcsIEFycmF5PE9wZW5BY3Rpdml0eT4+KCk7XG4gICAgICAgICAgICAgICAgcmVzdWx0cy5mb3JFYWNoKChyZXN1bHQ6IHsgaWQ6IHN0cmluZywgYWN0aXZpdGllcz86IEFycmF5PE9wZW5BY3Rpdml0eT4sIGVycm9yPzogSHR0cEVycm9yUmVzcG9uc2UgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5hY3Rpdml0aWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdE1hcC5zZXQocmVzdWx0LmlkLCByZXN1bHQuYWN0aXZpdGllcyk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxpc3RNZW1iZXJPcGVuQWN0aXZpdGllc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHsuLi5wYXlsb2FkLCByZXN1bHRzOiByZXN1bHRNYXB9fSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxpc3RNZW1iZXJPcGVuQWN0aXZpdGllc0ZhaWx1cmVBY3Rpb24oe1xuICAgICAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICAgICAgLi4ucGF5bG9hZCxcbiAgICAgICAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsaXN0TWVtYmVyQWxsT3BlbkFjdGl2aXR5TG9jYXRpb25zJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUobGlzdEFsbE1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uc0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtwYXlsb2FkOiBzdHJpbmd9KSA9PiB0aGlzLmFjdGl2aXR5U2VydmljZS5nZXRNZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnMocGF5bG9hZCwgbnVsbCwgbnVsbCwgdHJ1ZSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChhY3Rpdml0eUxvY2F0aW9uczogQ29sbGVjdGlvbjxBY3Rpdml0eUxvY2F0aW9uPikgPT4gbGlzdEFsbE1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGFjdGl2aXR5TG9jYXRpb25zLnRvQXJyYXkoKX0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxpc3RBbGxNZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsaXN0TWVtYmVyQWxsT3BlbkFjdGl2aXR5VHlwZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsaXN0QWxsTWVtYmVyT3BlbkFjdGl2aXR5VHlwZXNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7cGF5bG9hZDogc3RyaW5nfSkgPT4gdGhpcy5hY3Rpdml0eVNlcnZpY2UuZ2V0TWVtYmVyT3BlbkFjdGl2aXR5QWN0aXZpdHlUeXBlcyhwYXlsb2FkLCBudWxsLCBudWxsLCB0cnVlKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGFjdGl2aXR5VHlwZXM6IENvbGxlY3Rpb248QWN0aXZpdHlUeXBlPikgPT4gbGlzdEFsbE1lbWJlck9wZW5BY3Rpdml0eVR5cGVzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogYWN0aXZpdHlUeXBlcy50b0FycmF5KCl9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihsaXN0QWxsTWVtYmVyT3BlbkFjdGl2aXR5VHlwZXNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsaXN0TWVtYmVyT3BlbkFjdGl2aXR5TG9jYXRpb25zJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUobGlzdE1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uc0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtwYXlsb2FkOiB7bWVtYmVySWQ6IHN0cmluZywgc3RhcnREYXRlOiBzdHJpbmcsIGVuZERhdGU6IHN0cmluZ319KSA9PiB0aGlzLmFjdGl2aXR5U2VydmljZS5nZXRNZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnMocGF5bG9hZC5tZW1iZXJJZCwgcGF5bG9hZC5zdGFydERhdGUsIHBheWxvYWQuZW5kRGF0ZSwgZmFsc2UpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoYWN0aXZpdHlMb2NhdGlvbnM6IENvbGxlY3Rpb248QWN0aXZpdHlMb2NhdGlvbj4pID0+IGxpc3RNZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiB7bWVtYmVySWQ6IHBheWxvYWQubWVtYmVySWQsIHN0YXJ0RGF0ZTogcGF5bG9hZC5zdGFydERhdGUsIGVuZERhdGU6IHBheWxvYWQuZW5kRGF0ZSwgbG9jYXRpb25zOiBhY3Rpdml0eUxvY2F0aW9ucy50b0FycmF5KCl9fSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdE1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IHttZW1iZXJJZDogcGF5bG9hZC5tZW1iZXJJZCwgc3RhcnREYXRlOiBwYXlsb2FkLnN0YXJ0RGF0ZSwgZW5kRGF0ZTogcGF5bG9hZC5lbmREYXRlLCBlcnJvcn19KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbGlzdE1lbWJlck9wZW5BY3Rpdml0eVR5cGVzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUobGlzdE1lbWJlck9wZW5BY3Rpdml0eVR5cGVzQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge3BheWxvYWQ6IHttZW1iZXJJZDogc3RyaW5nLCBzdGFydERhdGU6IHN0cmluZywgZW5kRGF0ZTogc3RyaW5nfX0pID0+IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLmdldE1lbWJlck9wZW5BY3Rpdml0eUFjdGl2aXR5VHlwZXMocGF5bG9hZC5tZW1iZXJJZCwgcGF5bG9hZC5zdGFydERhdGUsIHBheWxvYWQuZW5kRGF0ZSwgZmFsc2UpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoYWN0aXZpdHlUeXBlczogQ29sbGVjdGlvbjxBY3Rpdml0eVR5cGU+KSA9PiBsaXN0TWVtYmVyT3BlbkFjdGl2aXR5VHlwZXNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiB7bWVtYmVySWQ6IHBheWxvYWQubWVtYmVySWQsIHN0YXJ0RGF0ZTogcGF5bG9hZC5zdGFydERhdGUsIGVuZERhdGU6IHBheWxvYWQuZW5kRGF0ZSwgdHlwZXM6IGFjdGl2aXR5VHlwZXMudG9BcnJheSgpfX0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxpc3RNZW1iZXJPcGVuQWN0aXZpdHlUeXBlc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IHttZW1iZXJJZDogcGF5bG9hZC5tZW1iZXJJZCwgc3RhcnREYXRlOiBwYXlsb2FkLnN0YXJ0RGF0ZSwgZW5kRGF0ZTogcGF5bG9hZC5lbmREYXRlLCBlcnJvcn19KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbGlzdFB1YmxpY01lbWJlckFjdGl2aXRpZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsaXN0UHVibGljTWVtYmVyQWN0aXZpdGllc0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtwYXlsb2FkOiB7IHN0YXJ0RGF0ZTogc3RyaW5nLCBlbmREYXRlOiBzdHJpbmcgfX0pID0+IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLmdldFB1YmxpY01lbWJlckFjdGl2aXRpZXMocGF5bG9hZC5zdGFydERhdGUsIHBheWxvYWQuZW5kRGF0ZSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChyZXN1bHQ6IENvbGxlY3Rpb248RXZlbnQ+KSA9PiBsaXN0UHVibGljTWVtYmVyQWN0aXZpdGllc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHtzdGFydERhdGU6IHBheWxvYWQuc3RhcnREYXRlLCBlbmREYXRlOiBwYXlsb2FkLmVuZERhdGUsIHJlc3VsdHM6IHJlc3VsdC50b0FycmF5KCl9fSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdFB1YmxpY01lbWJlckFjdGl2aXRpZXNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgICkpXG5cbiAgbGlzdFRlYW1BY3Rpdml0aWVzID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsaXN0VGVhbUFjdGl2aXRpZXNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0ZWFtSWQ6IHN0cmluZywgc3RhcnREYXRlOiBzdHJpbmcsIGVuZERhdGU6IHN0cmluZywgb3BlbkFjdGl2aXR5OiBib29sZWFuIH1cbiAgICAgICAgfSkgPT4gdGhpcy5hY3Rpdml0eVNlcnZpY2UuZ2V0VGVhbUNhbGVuZGFyRXZlbnRzKHBheWxvYWQudGVhbUlkLCBwYXlsb2FkLnN0YXJ0RGF0ZSwgcGF5bG9hZC5lbmREYXRlLCBwYXlsb2FkLm9wZW5BY3Rpdml0eSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVzdWx0czogQ29sbGVjdGlvbjxFdmVudD4pID0+IGxpc3RUZWFtQWN0aXZpdGllc1N1Y2Nlc3NBY3Rpb24oe1xuICAgICAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICAgICAgLi4ucGF5bG9hZCxcbiAgICAgICAgICAgICAgICByZXN1bHRzOiByZXN1bHRzLnRvQXJyYXkoKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxpc3RUZWFtQWN0aXZpdGllc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IHsuLi5wYXlsb2FkLCBlcnJvcn19KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcbn1cbiJdfQ==